diff mbox series

[1/2] pkgconf: pkg-config.in: double quote $@

Message ID 20180221205555.2728-1-gael.portay@savoirfairelinux.com
State Superseded
Headers show
Series [1/2] pkgconf: pkg-config.in: double quote $@ | expand

Commit Message

Gaël PORTAY Feb. 21, 2018, 8:55 p.m. UTC
Double quote $@ to prevent from splitting elements.

Signed-off-by: Gaël PORTAY <gael.portay@savoirfairelinux.com>
---
 package/pkgconf/pkg-config.in | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Thomas Petazzoni Feb. 21, 2018, 9:13 p.m. UTC | #1
Hello,

On Wed, 21 Feb 2018 15:55:54 -0500, Gaël PORTAY wrote:
> Double quote $@ to prevent from splitting elements.
> 
> Signed-off-by: Gaël PORTAY <gael.portay@savoirfairelinux.com>

Could you give more details about what this is fixing, i.e a specific
scenario that is fixed by this patch ?

Thanks!

Thomas
Gaël PORTAY Feb. 21, 2018, 11:48 p.m. UTC | #2
Thomas,

On Wed, Feb 21, 2018 at 10:13:16PM +0100, Thomas Petazzoni wrote:
> Hello,
> 
> On Wed, 21 Feb 2018 15:55:54 -0500, Gaël PORTAY wrote:
> > Double quote $@ to prevent from splitting elements.
> > 
> > Signed-off-by: Gaël PORTAY <gael.portay@savoirfairelinux.com>
> 
> Could you give more details about what this is fixing, i.e a specific
> scenario that is fixed by this patch ?

In the case pkgconf, I can not see a real situation where this patch
fixes an issue.

There is an important difference between $@ and "$@". The shell expands
"$@" as "$1" "$2" "$3"... while it expands $@ as $1 $2 $3.

With the second form, we losts spaces in positional parameters.

As example, the following call

	pkg-config --cflags "one two" three

is wrapped as

	pkgconf --cflags one two three

while we are expecting

	pkgconf --cflags "one two" three

"$@" is really useful when writing wrappers. It passes the positional
arguments *as* they are given.

> 
> Thanks!
> 
> Thomas
> -- 
> Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
> Embedded Linux and Kernel engineering
> http://bootlin.com

Regards,
Gael
Thomas Petazzoni Feb. 22, 2018, 3:49 p.m. UTC | #3
Hello,

On Wed, 21 Feb 2018 18:48:54 -0500, Gaël PORTAY wrote:

> > Could you give more details about what this is fixing, i.e a specific
> > scenario that is fixed by this patch ?  
> 
> In the case pkgconf, I can not see a real situation where this patch
> fixes an issue.
> 
> There is an important difference between $@ and "$@". The shell expands
> "$@" as "$1" "$2" "$3"... while it expands $@ as $1 $2 $3.
> 
> With the second form, we losts spaces in positional parameters.
> 
> As example, the following call
> 
> 	pkg-config --cflags "one two" three
> 
> is wrapped as
> 
> 	pkgconf --cflags one two three
> 
> while we are expecting
> 
> 	pkgconf --cflags "one two" three
> 
> "$@" is really useful when writing wrappers. It passes the positional
> arguments *as* they are given.

OK, thanks for the explanation, makes sense. A better commit log would
definitely help :)

Thanks!

Thomas
Gaël PORTAY Feb. 22, 2018, 3:57 p.m. UTC | #4
On Thu, Feb 22, 2018 at 04:49:49PM +0100, Thomas Petazzoni wrote:
> ...
> 
> OK, thanks for the explanation, makes sense. A better commit log would
> definitely help :)
>

I am rewording the commit message to include that explanation. And I
will resend the patch.

> Thanks!
> 
> Thomas
> -- 
> Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
> Embedded Linux and Kernel engineering
> http://bootlin.com

Gael
diff mbox series

Patch

diff --git a/package/pkgconf/pkg-config.in b/package/pkgconf/pkg-config.in
index b9ce0935cc..9387931ff2 100644
--- a/package/pkgconf/pkg-config.in
+++ b/package/pkgconf/pkg-config.in
@@ -2,4 +2,4 @@ 
 PKGCONFDIR=$(dirname $0)
 DEFAULT_PKG_CONFIG_LIBDIR=${PKGCONFDIR}/../@STAGING_SUBDIR@/usr/lib/pkgconfig:${PKGCONFDIR}/../@STAGING_SUBDIR@/usr/share/pkgconfig
 DEFAULT_PKG_CONFIG_SYSROOT_DIR=${PKGCONFDIR}/../@STAGING_SUBDIR@
-PKG_CONFIG_LIBDIR=${PKG_CONFIG_LIBDIR:-${DEFAULT_PKG_CONFIG_LIBDIR}} PKG_CONFIG_SYSROOT_DIR=${PKG_CONFIG_SYSROOT_DIR:-${DEFAULT_PKG_CONFIG_SYSROOT_DIR}} ${PKGCONFDIR}/pkgconf @STATIC@ $@
+PKG_CONFIG_LIBDIR=${PKG_CONFIG_LIBDIR:-${DEFAULT_PKG_CONFIG_LIBDIR}} PKG_CONFIG_SYSROOT_DIR=${PKG_CONFIG_SYSROOT_DIR:-${DEFAULT_PKG_CONFIG_SYSROOT_DIR}} ${PKGCONFDIR}/pkgconf @STATIC@ "$@"