diff --git a/libpkgconf/argvsplit.c b/libpkgconf/argvsplit.c index d3ef07b..55c1b5a 100644 --- a/libpkgconf/argvsplit.c +++ b/libpkgconf/argvsplit.c @@ -42,8 +42,10 @@ pkgconf_argv_split(const char *src, int *argc, char ***argv) while (*src_iter) { - if (quote == *src_iter) + if (quote == *src_iter) { quote = 0; + *dst_iter++ = *src_iter; + } else if (quote) { if (*src_iter == '\\') @@ -81,6 +83,7 @@ pkgconf_argv_split(const char *src, int *argc, char ***argv) case '"': case '\'': quote = *src_iter; + *dst_iter++ = *src_iter; break; case '\\': diff --git a/libpkgconf/tests/argvsplit-test.c b/libpkgconf/tests/argvsplit-test.c index 81ab12c..7a23c29 100644 --- a/libpkgconf/tests/argvsplit-test.c +++ b/libpkgconf/tests/argvsplit-test.c @@ -26,9 +26,21 @@ void test_escaped() pkgconf_argv_free(argv); } +void test_quoted() +{ + int argc; + char **argv; + + pkgconf_argv_split("\"A B\"", &argc, &argv); + assert(argc == 1); + assert(!strcmp(argv[0], "\"A B\"")); + pkgconf_argv_free(argv); +} + int main(int argc, char **argv) { (void) argc; (void) argv; test_simple(); test_escaped(); + test_quoted(); } diff --git a/tests/lib1/framework-3.pc b/tests/lib1/framework-3.pc new file mode 100644 index 0000000..c221fee --- /dev/null +++ b/tests/lib1/framework-3.pc @@ -0,0 +1,9 @@ +prefix=/test +exec_prefix=${prefix} +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: framework-3 +Description: pkg-config with space in framework name +Version: 1.3 +Libs: -F${libdir} -framework "Spacey Framework" diff --git a/tests/lib1/quotes.pc b/tests/lib1/quotes.pc index b834816..319d108 100644 --- a/tests/lib1/quotes.pc +++ b/tests/lib1/quotes.pc @@ -6,5 +6,5 @@ includedir=${prefix}/include Name: quotes Description: A testing pkg-config file Version: 1.2.3 -Libs: -L${libdir} -lfoo\ bar +Libs: -L${libdir} -lfoo\ bar "-lfoobie bletch" Cflags: -DQUOTED=\"bla\" diff --git a/tests/run.sh.in b/tests/run.sh.in index 411f4c7..d84c808 100644 --- a/tests/run.sh.in +++ b/tests/run.sh.in @@ -221,7 +221,7 @@ run_test "PKG_CONFIG_PATH='${selfdir}/lib1' ${1} --list-all | grep -q 'multiline run_test "PKG_CONFIG_PATH='${selfdir}/lib1' ${1} --cflags quotes" \ "-DQUOTED=\\\"bla\\\"" run_test "PKG_CONFIG_PATH='${selfdir}/lib1' ${1} --libs quotes" \ - '-lfoo\ bar' + '-lfoo\ bar "-lfoobie bletch"' run_test "PKG_CONFIG_PATH='${selfdir}/lib1' ${1} --libs nolib; echo \$?" \ '0' @@ -241,6 +241,8 @@ run_test "PKG_CONFIG_PATH='${selfdir}/lib1' ${1} --libs framework-2" \ "-F/test/lib -framework framework-2 -framework framework-1" run_test "PKG_CONFIG_PATH='${selfdir}/lib1' ${1} --libs framework-1 framework-2" \ "-F/test/lib -framework framework-1 -framework framework-2" +run_test "PKG_CONFIG_PATH='${selfdir}/lib1' ${1} --libs framework-3" \ + '-F/test/lib -framework "Spacey Framework"' run_test "PKG_CONFIG_PATH='${selfdir}/lib1' ${1} --exists --print-errors 'foo > 0.6.0 foo < 0.8.0'; echo \$?" \ '1'