[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Quilt-dev] [PATCH] patch_format: escape all occurences of %
From: |
Jean Delvare |
Subject: |
Re: [Quilt-dev] [PATCH] patch_format: escape all occurences of % |
Date: |
Thu, 6 Jun 2024 09:26:14 +0200 |
On Wed, 5 Jun 2024 23:11:43 +0200, Andreas Grünbacher wrote:
> Am Mi., 5. Juni 2024 um 22:57 Uhr schrieb Jean Delvare <jdelvare@suse.de>:
> > On Tue, 14 May 2024 14:50:34 +0200, Andreas Grünbacher wrote:
> > > Thanks, that's better, but since that's used as a printf format
> > > string, shouldn't backslashes also be escaped, like
> > > ${prefix//[%\\]/&&}?
> >
> > Have you tested this? I don't think "&" as a reference to the pattern
> > match works in bash pattern substitution the way it does in sed
> > substitutions.
>
> No, I alway commit code completely untested. Here's a "test script":
>
> prefix='a%b\c'; echo ${prefix//[%\\]/&&}
$ prefix='a%b\c'; echo ${prefix//[%\\]/&&}
a&&b&&c
$ echo $BASH_VERSION
4.4.23(1)-release
So it clearly doesn't work for me.
From the CHANGES file, it is a new feature of bash version 5.2:
x. New shell option: patsub_replacement. When enabled, a `&' in the replacement
string of the pattern substitution expansion is replaced by the portion of
the string that matched the pattern. Backslash will escape the `&' and
insert a literal `&'.
Quilt currently works with bash versions 3.0 and later, so I'm afraid
you'll have to come up with a more portable solution.
Thanks,
--
Jean Delvare
SUSE L3 Support