From fcd6345ab0cbde2eb267017c5bf335050d19198f Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Fri, 18 Mar 2011 16:34:08 +1100 Subject: [PATCH] lafs: allow "--tag value" as well as "--tag=value" ... as fingers seem like this pattern too. Signed-off-by: NeilBrown --- tools/lafs.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/tools/lafs.c b/tools/lafs.c index 0616e28..0c7360c 100644 --- a/tools/lafs.c +++ b/tools/lafs.c @@ -279,6 +279,14 @@ static void **parse_line(struct args **argsp, char *line, int *offsetp, } else { if (*e == '=') w = e+1; + else if (args[n].type != flag) { + w = take_word(&line); + if (!w) { + asprintf(error, + "Missing value for --%s", t); + break; + } + } rv[n+offset] = w; rv[n2+offset] = w; } @@ -563,15 +571,21 @@ static char **complete_in_context(const char *prefix, int start, int end) args = lafs_args; arglist = parse_line(&args, line, &offset, &last, &error); + if (last >= 0 && + error && strncmp(error, "Missing value for", 17) == 0) { + free(error); + error = 0; + } else if (!(start && rl_line_buffer[start-1] == '=')) + last = -1; + if (error) { printf("\n *** %s ***\n", error); free(error); goto after_message; } - if (start && rl_line_buffer[start-1] == '=' && - last >= 0 && arglist[last+offset] && - ((char*)arglist[last+offset])[0] == '\0') + if (last >= 0 && (arglist[last+offset] == NULL || + ((char*)arglist[last+offset])[0] == '\0')) p = last; else { last = -1; -- 2.39.5