libpkgconf: argvsplit: quoting logic was simplified too much
parent
2dcd749601
commit
d558e30ab3
|
@ -66,6 +66,8 @@ EXTRA_DIST = pkg.m4 \
|
||||||
tests/lib1/flag-order-3.pc \
|
tests/lib1/flag-order-3.pc \
|
||||||
tests/lib1/variable-whitespace.pc \
|
tests/lib1/variable-whitespace.pc \
|
||||||
tests/lib1/fragment-quoting.pc \
|
tests/lib1/fragment-quoting.pc \
|
||||||
|
tests/lib1/fragment-quoting-2.pc \
|
||||||
|
tests/lib1/fragment-quoting-3.pc \
|
||||||
tests/test_env.sh \
|
tests/test_env.sh \
|
||||||
$(test_scripts) \
|
$(test_scripts) \
|
||||||
doc/conf.py \
|
doc/conf.py \
|
||||||
|
|
|
@ -64,6 +64,7 @@ pkgconf_argv_split(const char *src, int *argc, char ***argv)
|
||||||
int argc_count = 0;
|
int argc_count = 0;
|
||||||
int argv_size = 5;
|
int argv_size = 5;
|
||||||
char quote = 0;
|
char quote = 0;
|
||||||
|
bool in_single_quotes = false;
|
||||||
|
|
||||||
src_iter = src;
|
src_iter = src;
|
||||||
dst_iter = buf;
|
dst_iter = buf;
|
||||||
|
@ -111,6 +112,16 @@ pkgconf_argv_split(const char *src, int *argc, char ***argv)
|
||||||
}
|
}
|
||||||
else switch(*src_iter)
|
else switch(*src_iter)
|
||||||
{
|
{
|
||||||
|
case '\"':
|
||||||
|
if (in_single_quotes)
|
||||||
|
*dst_iter++ = *src_iter;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '\'':
|
||||||
|
in_single_quotes ^= true;
|
||||||
|
*dst_iter++ = *src_iter;
|
||||||
|
break;
|
||||||
|
|
||||||
case '\\':
|
case '\\':
|
||||||
src_iter++;
|
src_iter++;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
prefix=/test
|
||||||
|
exec_prefix=${prefix}
|
||||||
|
libdir=${prefix}/lib
|
||||||
|
includedir=${prefix}/include
|
||||||
|
|
||||||
|
Name: fragment-quoting
|
||||||
|
Description: A testing pkg-config file
|
||||||
|
Version: 1.2.3
|
||||||
|
Cflags: -fPIC -I${includedir}/foo -DQUOTED="${prefix}/share/doc"
|
||||||
|
Cflags.private: -DFOO_STATIC
|
|
@ -0,0 +1,10 @@
|
||||||
|
prefix=/test
|
||||||
|
exec_prefix=${prefix}
|
||||||
|
libdir=${prefix}/lib
|
||||||
|
includedir=${prefix}/include
|
||||||
|
|
||||||
|
Name: fragment-quoting
|
||||||
|
Description: A testing pkg-config file
|
||||||
|
Version: 1.2.3
|
||||||
|
Cflags: -fPIC -I${includedir}/foo -DQUOTED=\"${prefix}/share/doc\"
|
||||||
|
Cflags.private: -DFOO_STATIC
|
|
@ -19,7 +19,9 @@ tests_init \
|
||||||
flag_order_4 \
|
flag_order_4 \
|
||||||
quoted \
|
quoted \
|
||||||
variable_whitespace \
|
variable_whitespace \
|
||||||
fragment_quoting
|
fragment_quoting \
|
||||||
|
fragment_quoting_2 \
|
||||||
|
fragment_quoting_3
|
||||||
|
|
||||||
comments_body()
|
comments_body()
|
||||||
{
|
{
|
||||||
|
@ -161,3 +163,19 @@ fragment_quoting_body()
|
||||||
-o inline:"-fPIC -I/test/include/foo -DQUOTED='\"/test/share/doc\"' \n" \
|
-o inline:"-fPIC -I/test/include/foo -DQUOTED='\"/test/share/doc\"' \n" \
|
||||||
pkgconf --cflags fragment-quoting
|
pkgconf --cflags fragment-quoting
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fragment_quoting_2_body()
|
||||||
|
{
|
||||||
|
export PKG_CONFIG_PATH="${selfdir}/lib1"
|
||||||
|
atf_check \
|
||||||
|
-o inline:"-fPIC -I/test/include/foo -DQUOTED=/test/share/doc \n" \
|
||||||
|
pkgconf --cflags fragment-quoting-2
|
||||||
|
}
|
||||||
|
|
||||||
|
fragment_quoting_3_body()
|
||||||
|
{
|
||||||
|
export PKG_CONFIG_PATH="${selfdir}/lib1"
|
||||||
|
atf_check \
|
||||||
|
-o inline:"-fPIC -I/test/include/foo -DQUOTED=\\\"/test/share/doc\\\" \n" \
|
||||||
|
pkgconf --cflags fragment-quoting-3
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue