From a9c8b6a076767fa23fd6c779e6c6a95045010f55 Mon Sep 17 00:00:00 2001 From: "Barton E. Schaefer" Date: Sat, 25 Apr 2015 12:54:17 -0700 Subject: 34966: "whence -v" for a function reports whether the function is autoloaded or its source file when known --- Src/hashtable.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'Src') diff --git a/Src/hashtable.c b/Src/hashtable.c index 7a430629d..ab381cc6a 100644 --- a/Src/hashtable.c +++ b/Src/hashtable.c @@ -910,7 +910,7 @@ printshfuncnode(HashNode hn, int printflags) { Shfunc f = (Shfunc) hn; char *t = 0; - + if ((printflags & PRINT_NAMEONLY) || ((printflags & PRINT_WHENCE_SIMPLE) && !(printflags & PRINT_WHENCE_FUNCDEF))) { @@ -922,8 +922,16 @@ printshfuncnode(HashNode hn, int printflags) if ((printflags & (PRINT_WHENCE_VERBOSE|PRINT_WHENCE_WORD)) && !(printflags & PRINT_WHENCE_FUNCDEF)) { nicezputs(f->node.nam, stdout); - printf((printflags & PRINT_WHENCE_WORD) ? ": function\n" : - " is a shell function\n"); + printf((printflags & PRINT_WHENCE_WORD) ? ": function" : + (f->node.flags & PM_UNDEFINED) ? + " is an autoload shell function" : + " is a shell function"); + if (f->filename && (printflags & PRINT_WHENCE_VERBOSE) && + strcmp(f->filename, f->node.nam) != 0) { + printf(" from "); + quotedzputs(f->filename, stdout); + } + putchar('\n'); return; } -- cgit 1.4.1