From fc00e3a6b79862be1b605279615fe88259d70799 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Fri, 4 Dec 2015 09:27:30 +0000 Subject: 37294: Add ZSH_EXECUTION_STRING. This shows the argument to shell option -c. --- Src/init.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) (limited to 'Src/init.c') diff --git a/Src/init.c b/Src/init.c index dcce1d7ce..789489332 100644 --- a/Src/init.c +++ b/Src/init.c @@ -240,13 +240,11 @@ loop(int toplevel, int justonce) return LOOP_OK; } -/* Shared among parseargs(), parseopts(), init_io(), and init_misc() */ -static char *cmd; static int restricted; /**/ static void -parseargs(char **argv, char **runscript) +parseargs(char **argv, char **runscript, char **cmdptr) { char **x; LinkList paramlist; @@ -272,7 +270,7 @@ parseargs(char **argv, char **runscript) opts[SHINSTDIN] = 0; opts[SINGLECOMMAND] = 0; - if (parseopts(NULL, &argv, opts, &cmd, NULL)) + if (parseopts(NULL, &argv, opts, cmdptr, NULL)) exit(1); /* @@ -290,7 +288,7 @@ parseargs(char **argv, char **runscript) if (*argv) { if (unset(SHINSTDIN)) { posixzero = *argv; - if (cmd) + if (*cmdptr) argzero = *argv; else *runscript = *argv; @@ -299,7 +297,7 @@ parseargs(char **argv, char **runscript) } while (*argv) zaddlinknode(paramlist, ztrdup(*argv++)); - } else if (!cmd) + } else if (!*cmdptr) opts[SHINSTDIN] = 1; if(isset(SINGLECOMMAND)) opts[INTERACTIVE] &= 1; @@ -497,7 +495,7 @@ printhelp(void) /**/ mod_export void -init_io(void) +init_io(char *cmd) { static char outbuf[BUFSIZ], errbuf[BUFSIZ]; @@ -802,7 +800,7 @@ init_term(void) /**/ void -setupvals(void) +setupvals(char *cmd) { #ifdef USE_GETPWUID struct passwd *pswd; @@ -1086,6 +1084,9 @@ setupvals(void) /* Colour sequences for outputting colours in prompts and zle */ set_default_colour_sequences(); + + if (cmd) + setsparam("ZSH_EXECUTION_STRING", ztrdup(cmd)); } /* @@ -1267,7 +1268,7 @@ run_init_scripts(void) /**/ void -init_misc(void) +init_misc(char *cmd) { #ifndef RESTRICTED_R if ( restricted ) @@ -1604,6 +1605,7 @@ mod_export int zsh_main(UNUSED(int argc), char **argv) { char **t, *runscript = NULL; + char *cmd; /* argument to -c */ int t0; #ifdef USE_LOCALE setlocale(LC_ALL, ""); @@ -1652,18 +1654,18 @@ zsh_main(UNUSED(int argc), char **argv) opts[LOGINSHELL] = (**argv == '-'); opts[PRIVILEGED] = (getuid() != geteuid() || getgid() != getegid()); /* sets ZLE, INTERACTIVE, SHINSTDIN and SINGLECOMMAND */ - parseargs(argv, &runscript); + parseargs(argv, &runscript, &cmd); SHTTY = -1; - init_io(); - setupvals(); + init_io(cmd); + setupvals(cmd); init_signals(); init_bltinmods(); init_builtins(); run_init_scripts(); setupshin(runscript); - init_misc(); + init_misc(cmd); for (;;) { /* -- cgit 1.4.1