37294: Add ZSH_EXECUTION_STRING.

This shows the argument to shell option -c.
This commit is contained in:
Peter Stephenson 2015-12-04 09:27:30 +00:00
parent 5ecf332e84
commit fc00e3a6b7
3 changed files with 25 additions and 13 deletions

View File

@ -1,3 +1,8 @@
2015-12-04 Peter Stephenson <p.stephenson@samsung.com>
* 37294: Doc/Zsh/params.yo, Src/init.c: Add $ZSH_EXECUTION_STRING
to give argument to shell -c option.
2015-12-03 Daniel Shahaf <d.s@daniel.shahaf.name>
* 37253: Src/params.c: Constify two local variables.

View File

@ -933,6 +933,11 @@ tt(zsh/zutil) module.
)
enditem()
)
vindex(ZSH_EXECUTION_STRING)
item(tt(ZSH_EXECUTION_STRING))(
If the shell was started with the option tt(-c), this contains
the argument passed to the option. Otherwise it is not set.
)
vindex(ZSH_NAME)
item(tt(ZSH_NAME))(
Expands to the basename of the command used to invoke this instance

View File

@ -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 (;;) {
/*