From: David Levine Date: Mon, 15 Jan 2018 22:30:49 +0000 (-0500) Subject: Also trap ambiguous post switch. X-Git-Url: https://diplodocus.org/git/nmh/commitdiff_plain/ff7b97ca9ddcf66640aaeef01934a6b45a5f183b?ds=inline;hp=d321a6ee82fce5d187f4342199c090909a72e9b8 Also trap ambiguous post switch. Fix to commit d321a6ee82fce5d187f4342199c090909a72e9b8. --- diff --git a/NEWS b/NEWS index b6159fa8..b4598873 100644 --- a/NEWS +++ b/NEWS @@ -128,6 +128,7 @@ BUG FIXES - scan can now handle empty files without violating an assert [Bug #51693]. - An error when writing an error message, e.g. EPIPE, no longer causes recursion until the stack is exhausted. +- rcvdist(1) now passes switch arguments to post(8). ------------------- DEPRECATED FEATURES diff --git a/uip/rcvdist.c b/uip/rcvdist.c index 531518d8..fcf9dd77 100644 --- a/uip/rcvdist.c +++ b/uip/rcvdist.c @@ -85,7 +85,7 @@ DEFINE_SWITCH_ENUM(POST); #undef X #define X(sw, minchars, id) { sw, minchars, id }, -DEFINE_SWITCH_ARRAY(POST, post_switches); +DEFINE_SWITCH_ARRAY(POST, post_switches_with_args); #undef X static char backup[BUFSIZ] = ""; @@ -130,17 +130,19 @@ main (int argc, char **argv) case AMBIGSW: ambigsw (cp, switches); done (1); - case UNKWNSW: + case UNKWNSW: { + const int argno = smatch(cp, post_switches_with_args); vec[vecp++] = --cp; - if (smatch(cp + 1, post_switches) != UNKWNSW) { + if (argno != AMBIGSW && argno != UNKWNSW) { /* It's a post switch that does take an argument. */ if (!(cp = *argp) || *cp == '-') { die("missing argument to %s", argp[-1]); } - vec[vecp++] = *argp++; + vec[vecp++] = cp; + ++argp; } continue; - + } case HELPSW: snprintf (buf, sizeof(buf), "%s [switches] [switches for postproc] address ...",