From 9725e6809d100c3501fe90266601bc27cef44a22 Mon Sep 17 00:00:00 2001 From: FriendlyNeighborhoodShane Date: Sun, 12 Jul 2020 17:09:12 +0530 Subject: [PATCH] Make grep usage POSIX by removing -P --- conf/resdl-download.txt | 16 ++++++++-------- update.sh | 21 +++++++++++++-------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/conf/resdl-download.txt b/conf/resdl-download.txt index 3b3e042..1bfd67b 100644 --- a/conf/resdl-download.txt +++ b/conf/resdl-download.txt @@ -102,13 +102,13 @@ updatedelta() { done; [ "$newlog" ] || { echo " -- No log to compare"; return 0; } [ "$oldlogs" ] || { echo " -- No old logs to compare"; return 0; } - for entry in $(grep -Po "FILE: [^,;]*" "$reldir/$newlog" | cut -d" " -f2); do + for entry in $(grep -oE "FILE: [^,;]*" "$reldir/$newlog" | cut -d" " -f2); do line="$(grep "FILE: $entry," "$reldir/$newlog")"; file="$entry"; - url="$(echo "$line" | grep -Po "URL: [^,;]*" | cut -d" " -f2)"; + url="$(echo "$line" | grep -oE "URL: [^,;]*" | cut -d" " -f2)"; oldurl=""; for log in $oldlogs; do - oldurl="$(grep "FILE: $file," "$reldir/$log" | grep -Po "URL: [^,;]*" | cut -d" " -f2)"; + oldurl="$(grep "FILE: $file," "$reldir/$log" | grep -oE "URL: [^,;]*" | cut -d" " -f2)"; [ "$oldurl" ] && break; done; [ "$oldurl" ] || oldurl="None"; @@ -157,7 +157,7 @@ verifycerts() { echo " "; echo " - Checking certs for APKs..."; - for object in $(echo "$stuff_download" | grep -P "^[ \t]*[^ \t]+.apk[ \t]+" | select_word 1); do + for object in $(echo "$stuff_download" | grep -E "^[ ]*[^ ]+.apk[ ]+" | select_word 1); do certobject="$(dirname "$object")/$(basename "$object" .apk).cer"; jarsigner -verify "$resdldir/$object" > /dev/null || { echo " !! Verification failed for APK ($object)" >&2; @@ -194,7 +194,7 @@ checkwhitelist() { curl -L --progress-bar "$privpermurl" -o "$tmpdir/tmppage" || { echo "ERROR: Android permission docpage failed to download" >&2; return 1; } - lines="$(grep -Pn "" "$tmpdir/tmppage" | grep -A1 "ENUM CONSTANTS DETAIL" | sed "s|:| |g" | select_word 1)"; + lines="$(grep -nE "" "$tmpdir/tmppage" | grep -A1 "ENUM CONSTANTS DETAIL" | sed "s|:| |g" | select_word 1)"; for line in $lines; do [ "$startline" ] && endline="$line" || startline="$line"; done; @@ -208,11 +208,11 @@ checkwhitelist() { echo " "; echo " - Checking priv-app permissions..."; - for object in $(echo "$stuff_download" | grep -P "^[ \t]*/system/priv-app/[^ \t]+.apk[ \t]+" | select_word 1); do + for object in $(echo "$stuff_download" | grep -E "^[ ]*/system/priv-app/[^ ]+.apk[ ]+" | select_word 1); do [ -f "$resdldir/$object" ] || { echo "ERROR: Privapp $object not found" >&2; continue; } privperms=""; - privapppackage="$(aapt dump badging "$resdldir/$object" | grep -o "package: name=[^ ]*" | sed "s|'| |g" | select_word 3)" - privappperms="$(aapt dump permissions "$resdldir/$object" | grep -o "uses-permission: name=[^ ]*" | sed "s|'| |g" | select_word 3 | sort -u)"; + privapppackage="$(aapt dump badging "$resdldir/$object" | grep -oE "package: name=[^ ]*" | sed "s|'| |g" | select_word 3)" + privappperms="$(aapt dump permissions "$resdldir/$object" | grep -oE "uses-permission: name=[^ ]*" | sed "s|'| |g" | select_word 3 | sort -u)"; for privperm in in $privappperms; do grep -q "$privperm" "$resdldir/$privpermlist" || continue; grep -q "$privperm" "$resdir/system/etc/permissions/$privapppackage.xml" 2>/dev/null && continue; diff --git a/update.sh b/update.sh index 0bf74c2..8d3bfa3 100755 --- a/update.sh +++ b/update.sh @@ -42,7 +42,7 @@ echo "-- From The MicroG Telegram group --"; echo "-- No, not the Official one --"; # Bin check -for bin in chmod cp curl grep head jq mv rm sort unzip; do +for bin in chmod cp curl grep head jq mv rm sort tr unzip; do [ "$(which $bin)" ] || abort "No $bin found"; done; @@ -66,6 +66,11 @@ cp -f "$confdir/resdl-download.txt" "$tmpdir/resdlconf"; chmod +x "$tmpdir/resdlconf"; . "$tmpdir/resdlconf" || abort "Cannot execute resdl-download.txt"; +# Remove all tabs because they can't be caught by regex +stuff_download="$(echo "$stuff_download" | tr "\t" " ")"; +stuff_repo="$(echo "$stuff_repo" | tr "\t" " ")"; + +# Filter list by arguments if given if [ "$*" ]; then echo " "; echo " - Building update list..."; @@ -74,14 +79,14 @@ if [ "$*" ]; then for include in "$@"; do echo " -- CONFIG: Including $include"; stuff_download_new="$stuff_download_new -$(echo "$stuff_download" | grep -Pi "^[ \t]*[^ \t]*$include[^ \t]*[ \t]+") +$(echo "$stuff_download" | grep -iE "^[ ]*[^ ]*$include[^ ]*[ ]+") "; done; stuff_download="$(echo "$stuff_download_new" | sort -u)"; - repo_apps="$(echo "$stuff_download" | grep -P "^[ \t]*[^ \t]+[ \t]+repo[ \t]+")"; + repo_apps="$(echo "$stuff_download" | grep -E "^[ ]*[^ ]+[ ]+repo[ ]+")"; for repo in $(echo "$repo_apps" | select_word 3); do stuff_repo_new="$stuff_repo_new -$(echo "$stuff_repo" | grep -P "^[ \t]*$(dirname "$repo")[ \t]+" | head -n1) +$(echo "$stuff_repo" | grep -E "^[ ]*$(dirname "$repo")[ ]+" | head -n1) "; done; stuff_repo="$(echo "$stuff_repo_new" | sort -u)"; @@ -97,7 +102,7 @@ echo " "; echo " - Downloading repos..."; for repo in $(echo "$stuff_repo" | select_word 1); do - line="$(echo "$stuff_repo" | grep -P "^[ \t]*$repo[ \t]+" | head -n1)"; + line="$(echo "$stuff_repo" | grep -E "^[ ]*$repo[ ]+" | head -n1)"; repourl="$(echo "$line" | select_word 2)"; [ "$repourl" ] || { echo "ERROR: Repo $repo has no URL" >&2; continue; } echo " -- REPO: Downloading repo $repo"; @@ -115,7 +120,7 @@ echo " "; echo " - Downloading assets..."; for object in $(echo "$stuff_download" | select_word 1); do - line="$(echo "$stuff_download" | grep -P "^[ \t]*$object[ \t]+" | head -n1)"; + line="$(echo "$stuff_download" | grep -E "^[ ]*$object[ ]+" | head -n1)"; source="$(echo "$line" | select_word 2)"; objectpath="$(echo "$line" | select_word 3)"; objectarg="$(echo "$line" | select_word 4)"; @@ -132,14 +137,14 @@ for object in $(echo "$stuff_download" | select_word 1); do ;; github) echo " ---- Getting GitHub URL for $object"; - objecturl="$(curl -Ls "https://api.github.com/repos/$objectpath/releases" | jq -r '.[].assets[].browser_download_url' | grep -P "$objectarg$" | head -n1)"; + objecturl="$(curl -Ls "https://api.github.com/repos/$objectpath/releases" | jq -r '.[].assets[].browser_download_url' | grep "$objectarg$" | head -n1)"; ;; gitlab) echo " ---- Getting GitLab project ID for $object"; objectid="$(curl -Ls "https://gitlab.com/$objectpath" | grep "Project ID" | head -n1 | select_word 3)"; [ "$objectid" ] || { echo "ERROR: $object gitlab project ID not found" >&2; continue; } echo " ---- Getting GitLab URL for $object"; - objectupload="$(curl -Ls "https://gitlab.com/api/v4/projects/$objectid/repository/tags" | jq -r '.[].release.description' | grep -Po "(/uploads/[^()]*$objectarg)" | head -n1 | tr -d "()")"; + objectupload="$(curl -Ls "https://gitlab.com/api/v4/projects/$objectid/repository/tags" | jq -r '.[].release.description' | grep -oE "(/uploads/[^()]*$objectarg)" | head -n1 | tr -d "()")"; [ "$objectupload" ] || { echo "ERROR: $object gitlab project upload not found" >&2; continue; } objecturl="https://gitlab.com/$objectpath$objectupload"; ;;