diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | src/exec.c | 15 |
2 files changed, 13 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog index 2a39e34..2fbc628 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2014-09-26 Harald van Dijk <harald@gigawatt.nl> + + * command: allow combining -p with -v. + 2013-08-23 Herbert Xu <herbert@gondor.apana.org.au> * Propagate EXP_QPAT in subevalvar. diff --git a/src/exec.c b/src/exec.c index 79e2007..e56e3f6 100644 --- a/src/exec.c +++ b/src/exec.c @@ -96,7 +96,7 @@ STATIC void clearcmdentry(int); STATIC struct tblentry *cmdlookup(const char *, int); STATIC void delete_cmd_entry(void); STATIC void addcmdentry(char *, struct cmdentry *); -STATIC int describe_command(struct output *, char *, int); +STATIC int describe_command(struct output *, char *, const char *, int); /* @@ -727,21 +727,21 @@ typecmd(int argc, char **argv) int err = 0; for (i = 1; i < argc; i++) { - err |= describe_command(out1, argv[i], 1); + err |= describe_command(out1, argv[i], pathval(), 1); } return err; } STATIC int -describe_command(out, command, verbose) +describe_command(out, command, path, verbose) struct output *out; char *command; + const char *path; int verbose; { struct cmdentry entry; struct tblentry *cmdp; const struct alias *ap; - const char *path = pathval(); if (verbose) { outstr(command, out); @@ -840,20 +840,23 @@ commandcmd(argc, argv) VERIFY_BRIEF = 1, VERIFY_VERBOSE = 2, } verify = 0; + const char *path = pathval(); while ((c = nextopt("pvV")) != '\0') if (c == 'V') verify |= VERIFY_VERBOSE; else if (c == 'v') verify |= VERIFY_BRIEF; + else if (c == 'p') + path = defpath; #ifdef DEBUG - else if (c != 'p') + else abort(); #endif cmd = *argptr; if (verify && cmd) - return describe_command(out1, cmd, verify - VERIFY_BRIEF); + return describe_command(out1, cmd, path, verify - VERIFY_BRIEF); return 0; } |