From upstream https://git.savannah.nongnu.org/cgit/quilt.git/patch/?id=f73f8d7f71de2878d3f92881a5fcb8eafd78cb5f From f73f8d7f71de2878d3f92881a5fcb8eafd78cb5f Mon Sep 17 00:00:00 2001 From: Jean Delvare Date: Fri, 9 Sep 2022 10:10:37 +0200 Subject: Avoid warnings with grep 3.8 GNU grep version 3.8 became more strict about needless quoting in patterns. We have one occurrence of that in quilt, where "/" characters are being quoted by default. There are cases where they indeed need to be quoted (typically when used in a sed s/// command) but most of the time they do not, and this results in the following warning: grep: warning: stray \ before / So rename quote_bre() to quote_sed_re(), and introduce quote_grep_re() which does not quote "/". Signed-off-by: Jean Delvare --- quilt/diff.in | 2 +- quilt/patches.in | 2 +- quilt/scripts/patchfns.in | 20 +++++++++++++------- quilt/upgrade.in | 4 ++-- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/quilt/diff.in b/quilt/diff.in index e90dc33..07788ff 100644 --- a/quilt/diff.in +++ b/quilt/diff.in @@ -255,7 +255,7 @@ then # Add all files in the snapshot into the file list (they may all # have changed). files=( $(find $QUILT_PC/$snap_subdir -type f \ - | sed -e "s/^$(quote_bre $QUILT_PC/$snap_subdir/)//" \ + | sed -e "s/^$(quote_sed_re $QUILT_PC/$snap_subdir/)//" \ | sort) ) printf "%s\n" "${files[@]}" >&4 unset files diff --git a/quilt/patches.in b/quilt/patches.in index bb17a46..eac45a9 100644 --- a/quilt/patches.in +++ b/quilt/patches.in @@ -60,7 +60,7 @@ scan_unapplied() # Quote each file name only once for file in "${opt_files[@]}" do - files_bre[${#files_bre[@]}]=$(quote_bre "$file") + files_bre[${#files_bre[@]}]=$(quote_grep_re "$file") done # "Or" all files in a single pattern diff --git a/quilt/scripts/patchfns.in b/quilt/scripts/patchfns.in index c2d5f9d..1bd7233 100644 --- a/quilt/scripts/patchfns.in +++ b/quilt/scripts/patchfns.in @@ -78,8 +78,14 @@ array_join() done } -# Quote a string for use in a basic regular expression. -quote_bre() +# Quote a string for use in a regular expression for a grep pattern. +quote_grep_re() +{ + echo "$1" | sed -e 's:\([][^$.*\\]\):\\\1:g' +} + +# Quote a string for use in a regular expression for a sed s/// command. +quote_sed_re() { echo "$1" | sed -e 's:\([][^$/.*\\]\):\\\1:g' } @@ -215,7 +221,7 @@ patch_in_series() if [ -e "$SERIES" ] then - grep -q "^$(quote_bre $patch)\([ \t]\|$\)" "$SERIES" + grep -q "^$(quote_grep_re $patch)\([ \t]\|$\)" "$SERIES" else return 1 fi @@ -365,7 +371,7 @@ is_applied() { local patch=$1 [ -e $DB ] || return 1 - grep -q "^$(quote_bre $patch)\$" $DB + grep -q "^$(quote_grep_re $patch)\$" $DB } applied_patches() @@ -465,7 +471,7 @@ remove_from_db() local tmpfile if tmpfile=$(gen_tempfile) then - grep -v "^$(quote_bre $patch)\$" $DB > $tmpfile + grep -v "^$(quote_grep_re $patch)\$" $DB > $tmpfile cat $tmpfile > $DB rm -f $tmpfile [ -s $DB ] || rm -f $DB @@ -520,7 +526,7 @@ find_patch() fi local patch=${1#$SUBDIR_DOWN$QUILT_PATCHES/} - local bre=$(quote_bre "$patch") + local bre=$(quote_sed_re "$patch") set -- $(sed -e "/^$bre\(\|\.patch\|\.diff\?\)\(\|\.gz\|\.bz2\|\.xz\|\.lzma\|\.lz\)\([ "$'\t'"]\|$\)/!d" \ -e 's/[ '$'\t''].*//' "$SERIES") if [ $# -eq 1 ] @@ -631,7 +637,7 @@ files_in_patch() then find "$path" -type f \ -a ! -path "$(quote_glob "$path")/.timestamp" | - sed -e "s/$(quote_bre "$path")\///" + sed -e "s/$(quote_sed_re "$path")\///" fi } diff --git a/quilt/upgrade.in b/quilt/upgrade.in index dbf7d05..866aa33 100644 --- a/quilt/upgrade.in +++ b/quilt/upgrade.in @@ -74,7 +74,7 @@ printf $"Converting meta-data to version %s\n" "$DB_VERSION" for patch in $(applied_patches) do - proper_name="$(grep "^$(quote_bre $patch)"'\(\|\.patch\|\.diff?\)\(\|\.gz\|\.bz2\)\([ \t]\|$\)' $SERIES)" + proper_name="$(grep "^$(quote_grep_re $patch)"'\(\|\.patch\|\.diff?\)\(\|\.gz\|\.bz2\)\([ \t]\|$\)' $SERIES)" proper_name=${proper_name#$QUILT_PATCHES/} proper_name=${proper_name%% *} if [ -z "$proper_name" ] @@ -84,7 +84,7 @@ do fi if [ "$patch" != "$proper_name" -a -d $QUILT_PC/$patch ] \ - && grep -q "^$(quote_bre $patch)\$" \ + && grep -q "^$(quote_grep_re $patch)\$" \ $QUILT_PC/applied-patches then mv $QUILT_PC/$patch $QUILT_PC/$proper_name \ -- cgit v1.1