diff options
Diffstat (limited to 'tests/wsp.c')
-rw-r--r-- | tests/wsp.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/tests/wsp.c b/tests/wsp.c index e8eb9c6..84efc13 100644 --- a/tests/wsp.c +++ b/tests/wsp.c @@ -91,7 +91,7 @@ help () { size_t i; - printf ("usage: %s [options] [VAR=VALUE...]\n", progname); + printf ("usage: %s [options] [VAR=VALUE...] [-- EXTRA...]\n", progname); printf ("options are:\n"); printf (" [-]trimnl\n"); printf (" [-]plaintext\n"); @@ -334,6 +334,8 @@ main (int argc, char **argv) size_t fenvidx = 0; size_t fenvmax = sizeof (fenvbase) / sizeof (fenvbase[0]); int use_env = env_sys; + int appendc = 0; + char **appendv = NULL; progname = argv[0]; @@ -346,6 +348,12 @@ main (int argc, char **argv) if (opt[0] == '-') { + if (opt[1] == '-' && opt[2] == 0) + { + appendc = argc - i - 1; + appendv = argv + i + 1; + break; + } negate = 1; opt++; } @@ -604,6 +612,17 @@ main (int argc, char **argv) offarg = 0; } + if (appendc) + { + rc = wordsplit_append (&ws, appendc, appendv); + if (rc) + { + if (!(wsflags & WRDSF_SHOWERR)) + wordsplit_perror (&ws); + continue; + } + } + wsflags |= WRDSF_REUSE | (ws.ws_flags & WRDSF_ENV); printf ("NF: %lu", (unsigned long) ws.ws_wordc); if (wsflags & WRDSF_DOOFFS) |