[arch-projects] [dbscripts] [PATCH 3/3] Update messages to make fuller use of printf formatters

Eli Schwartz eschwartz at archlinux.org
Fri Feb 23 00:23:17 UTC 2018

On 02/22/2018 06:54 PM, Luke Shumaker wrote:
>> I do see what you're doing, I'm just not sure why. Is the whole idea
>> with this extra variable floating around, to avoid tokenizing
>> "${pkgs[@]}" as separate messages? That's why "${pkgs[*]}" tokenizes the
>> members of an array as one word by gluing the members together using the
>> first IFS character (which is a space). You'll note I used this in
>> testing2x.
>> As for using %q for filepaths that can theoretically contain spaces...
>> good point I guess.
> It's all about %q.  (I did use ${ary[*]} somewhere else in the
> commit).  The separate variable applies %q escaping to each package
> filename separately.  Without it, if I did something like:
> +		|| error 'repo-remove %q %q' "$dbfile" "${pkgs[*]}"
> Then it would also escape the spaces that separate them.

But, you're using

error 'repo-remove %q %s' "$dbfile" "${pkgs_str% }"

with a %s which works just as well as it ever did. And you might as well
do that with "${pkgs[*]}" since that also works as well as it ever did.

Maybe, you should update that to work properly %q then...

Or maybe, you should skip the temporary variable and use

error 'repo-remove %s %s' "${dbfile at Q}" "${pkgs[*]@Q}"

This will result in the variables being passed into error, after being
suitably '/path quoted/rather/than/escaped/'

See the bash documentation on "Parameter transformation".

> Anyway, correctly applying %q escaping probably isn't super-important.
> But, we don't really expect repo-add or repo-remove to fail; if
> something is wrong, any of the numerous checks leading up to actually
> calling them should have already caught that.  If we trigger one of
> these error messages, something *weird* is going on, and I'd like the
> most precise error message possible.

No, I agree we might as well be careful here!

Eli Schwartz
Bug Wrangler and Trusted User

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.archlinux.org/pipermail/arch-projects/attachments/20180222/7396e440/attachment.asc>

More information about the arch-projects mailing list