diff options
author | XZS | 2016-03-23 20:32:25 +0100 |
---|---|---|
committer | XZS | 2016-03-23 20:32:25 +0100 |
commit | 3228ac5c430661fa63a13a4269235ba221a1e2dc (patch) | |
tree | 99db66111df10d09ffe4bad3688205b626b2f233 | |
parent | 52d4e9ea64105c52a40ee481e424662fa59946e4 (diff) | |
download | aur-3228ac5c430661fa63a13a4269235ba221a1e2dc.tar.gz |
end grep trickery, it has been busted
Unbelievably, also traditional tools like grep are regularly updated
still today. Version 2.24 forbid the combination of some features with
the -z option. This was exactly what was exploited here to make grep
ignore newlines so they would not interrupt JSON dissection. More
information about the change can be found at the bottom of the
respective release notes. [1]
Fixing it costs an invocation of tr to remove the bothersome newlines.
Because the files are read within "find -exec" where input redirection
is not readily possible, cat has to be invoked to start the pipeline.
The grep script got only a tiny bit simpler by adhering to the new
restriction and leaving newlines to tr.
Thanks to AUR users jmauss, Asher256 and vinadoros for pointing to the
critical line.
[1]: http://savannah.gnu.org/forum/forum.php?forum_id=8477
-rw-r--r-- | PKGBUILD | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -99,7 +99,8 @@ depends[125]=gnome-shell package_20_version() { local compatibles=($(\ find -path ./pkg -type d -prune -o \ - -name metadata.json -exec grep -Pzo '(?s)(?<="shell-version": \[)[^\[\]]*(?=\])' '{}' \; | \ + -name metadata.json -exec cat '{}' \; | \ + tr -d '\n' | grep -Po '(?<="shell-version": \[)[^\[\]]*(?=\])' | \ tr '\n," ' '\n' | sed 's/3\.//g;/^$/d' | sort -n -t. -k 1,1)) depends+=("gnome-shell>=3.${compatibles[0]}") local max="${compatibles[-1]}" |