diff options
Diffstat (limited to 'Src/exec.c')
-rw-r--r-- | Src/exec.c | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/Src/exec.c b/Src/exec.c index 69a34254e..53cff375d 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -2911,11 +2911,11 @@ execautofn(Cmd cmd, LinkList args, int flags) l = getfpfunc(shf->nam); noaliases = noalias; - if(l == &dummy_list) { + if (l == &dummy_list) { zerr("%s: function definition file not found", shf->nam, 0); return 1; } - if(isset(KSHAUTOLOAD)) { + if (isset(KSHAUTOLOAD)) { VARARR(char, n, strlen(shf->nam) + 1); strcpy(n, shf->nam); execlist(l, 1, 0); @@ -2935,6 +2935,31 @@ execautofn(Cmd cmd, LinkList args, int flags) return lastval; } +/**/ +int +loadautofn(Shfunc shf) +{ + /* Copied from execautofn() -- should consolidate someday */ + + int noalias = noaliases; + List l; + + noaliases = (shf->flags & PM_UNALIASED); + l = getfpfunc(shf->nam); + noaliases = noalias; + + if (l == &dummy_list) { + zerr("%s: function definition file not found", shf->nam, 0); + return 1; + } + PERMALLOC { + shf->funcdef = dupstruct(stripkshdef(l, shf->nam)); + } LASTALLOC; + shf->flags &= ~PM_UNDEFINED; + + return 0; +} + /* execute a shell function */ /**/ |