From: Junio C Hamano Date: Tue, 2 May 2006 22:17:05 +0000 (-0700) Subject: builtin-grep: allow - and -[ABC] notation for context lines. X-Git-Tag: v1.4.1-rc1~146^2~3 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/f462ebb48bf9126335671e878336e3faf3914802?ds=sidebyside builtin-grep: allow - and -[ABC] notation for context lines. Signed-off-by: Junio C Hamano --- diff --git a/builtin-grep.c b/builtin-grep.c index eb821b41b9..a551d34021 100644 --- a/builtin-grep.c +++ b/builtin-grep.c @@ -402,18 +402,34 @@ int cmd_grep(int argc, const char **argv, char **envp) opt.name_only = 1; continue; } - if (!strcmp("-A", arg) || - !strcmp("-B", arg) || - !strcmp("-C", arg)) { + if (!strncmp("-A", arg, 2) || + !strncmp("-B", arg, 2) || + !strncmp("-C", arg, 2) || + (arg[0] == '-' && '1' <= arg[1] && arg[1] <= '9')) { unsigned num; - if (argc <= 1 || - sscanf(*++argv, "%u", &num) != 1) + const char *scan; + switch (arg[1]) { + case 'A': case 'B': case 'C': + if (!arg[2]) { + if (argc <= 1) + usage(builtin_grep_usage); + scan = *++argv; + argc--; + } + else + scan = arg + 2; + break; + default: + scan = arg + 1; + break; + } + if (sscanf(scan, "%u", &num) != 1) usage(builtin_grep_usage); - argc--; switch (arg[1]) { case 'A': opt.post_context = num; break; + default: case 'C': opt.post_context = num; case 'B':