Am Do., 8. Sept. 2022 um 11:53 Uhr schrieb Jean Delvare <jdelv...@suse.de>:
> 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 make quoting of "/" by quote_bre() optional, and off by default.
>
> Signed-off-by: Jean Delvare <jdelv...@suse.de>
> ---
> As reported here:
> https://bugzilla.opensuse.org/show_bug.cgi?id=1203230
>
>  quilt/diff.in             |    2 +-
>  quilt/scripts/patchfns.in |    7 +++++--
>  2 files changed, 6 insertions(+), 3 deletions(-)
>
> --- quilt.orig/quilt/scripts/patchfns.in        2022-09-08 11:06:22.647974801 
> +0200
> +++ quilt/quilt/scripts/patchfns.in     2022-09-08 11:27:26.506609417 +0200
> @@ -79,9 +79,12 @@ array_join()
>  }
>
>  # Quote a string for use in a basic regular expression.
> +# Optional second parameter can be used to quote an additional character,
> +# typically '/' when the quoted regular expression is used in a sed s///
> +# command.
>  quote_bre()
>  {
> -       echo "$1" | sed -e 's:\([][^$/.*\\]\):\\\1:g'
> +       echo "$1" | sed -e 's:\([][^$.*\\'$2']\):\\\1:g'
>  }

Hmm, can you replace quote_bre() with a quote_grep_re() and a
quote_sed_re() function instead?

>  # Quote a string for use in an extended regular expression.
> @@ -631,7 +634,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_bre "$path" /)\///"
>         fi
>  }
>
> --- quilt.orig/quilt/diff.in    2021-06-10 17:14:19.062768258 +0200
> +++ quilt/quilt/diff.in 2022-09-08 11:20:54.317134342 +0200
> @@ -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_bre $QUILT_PC/$snap_subdir/ /)//" \
>                   | sort) )
>         printf "%s\n" "${files[@]}" >&4
>         unset files

Thanks,
Andreas

_______________________________________________
Quilt-dev mailing list
Quilt-dev@nongnu.org
https://lists.nongnu.org/mailman/listinfo/quilt-dev

Reply via email to