Re: [PATCH] common/rc: fix MKSWAP_PROG quoting

Pavel Reichl
2021-08-31T07:38:36Z

On 8/31/21 7:26 AM, Zorro Lang wrote:
> On Tue, Aug 31, 2021 at 11:04:26AM +0800, Murphy Zhou wrote:
>> After commit
>> 0e4dd8b9 common/rc: fix ignoring of errors on
>> we are getting this error message when running swapfiles tests:
>> +./common/rc: line 2553: MKSWAP_PROG: command not found
>>
>> Signed-off-by: Murphy Zhou <xzhou@redhat.com>
>> ---
>> common/rc | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/common/rc b/common/rc
>> index 46b6b220..0597de13 100644
>> --- a/common/rc
>> +++ b/common/rc
>> @@ -2550,7 +2550,7 @@ _format_swapfile() {
>> $CHATTR_PROG +C "$fname" > /dev/null 2>&1
>> _pwrite_byte 0x61 0 "$sz" "$fname" >> $seqres.full
>> # Ignore permission complaints on filesystems that don't support perms
>> - $(MKSWAP_PROG "$fname" 2> >(grep -v 'insecure permission' >&2)) >> $seqres.full
>> + ($MKSWAP_PROG "$fname" 2> >(grep -v 'insecure permission' >&2)) >> $seqres.full
> The change history is:
>
> Commit 0c95c8ac tried to "hide permision warning", so did:
> - $MKSWAP_PROG "$fname" >> $seqres.full
> + # Ignore permission complaints on filesystems that don't support perms
> + $MKSWAP_PROG "$fname" 2> >(grep -v 'insecure permission' >&2) >> $seqres.full
>
> Then commit 0e4dd8b9 said "it broke older versions of bash such as 4.4.23", so tried
> to use "a $(foo) to run the executable":
> - $MKSWAP_PROG "$fname" 2> >(grep -v 'insecure permission' >&2) >> $seqres.full
> + $(MKSWAP_PROG "$fname" 2> >(grep -v 'insecure permission' >&2)) >> $seqres.full
>
> Now this patch try to do ($FOO_PROG):
> ($MKSWAP_PROG "$fname" .....)
>
> I'm *not* a bash expert, if I'm wrong feel free to correct me:) If the original problem
> is trying to hide permision warning from stderr, and to avoid new syntax breaking old
> bash, Why we must struggle with this complex syntax which isn't compatible. How about:

Hi, sorry I do suck at bash, but:

>
> $MKSWAP_PROG "$fname" >> $seqres.full 2>&1 | grep -v "insecure permission"

>> redirects stdout to the seqres.full and the 2>&1 redirects stderr to
wherever stdout goes...so $MKSWAP_PROG "$fname" >> $seqres.full 2>&1
sends both stdout and stderr to the file so nothing is piped to grep. Or
do I miss something (which is entirely possible)?

Thanks!

>
> Or other better and compatible way ?
>
> Thanks,
> Zorro
>
>> }
>>
>> _swapon_file() {
>> --
>> 2.20.1
>>