1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-09-02 22:11:54 +02:00

Fix STTY parameter.

This commit is contained in:
Bart Schaefer 2000-09-25 16:57:05 +00:00
parent 4225207e4c
commit 756f8186f2
2 changed files with 21 additions and 7 deletions

View file

@ -1,3 +1,7 @@
2000-09-25 Bart Schaefer <schaefer@zsh.org>
* 12862: Src/exec.c: Fix STTY parameter to match documentation.
2000-09-22 Clint Adams <schizo@debian.org>
* 12860: Src/jobs.c: don't check length against PATH_MAX or

View file

@ -133,6 +133,7 @@ mod_export Funcstack funcstack;
static LinkList args;
static int doneps4;
static char *STTYval;
/* Execution functions. */
@ -444,7 +445,6 @@ void
execute(Cmdnam not_used_yet, int dash)
{
Cmdnam cn;
static LinkList exargs;
char buf[MAXCMDLEN], buf2[MAXCMDLEN];
char *s, *z, *arg0;
char **argv, **pp;
@ -459,17 +459,19 @@ execute(Cmdnam not_used_yet, int dash)
/* If the parameter STTY is set in the command's environment, *
* we first run the stty command with the value of this *
* parameter as it arguments. */
if (!exargs && (s = zgetenv("STTY")) && isatty(0) &&
(GETPGRP() == getpid())) {
char *t;
if ((s = STTYval) && isatty(0) && (GETPGRP() == getpid())) {
LinkList exargs = args;
char *t = tricat("stty", " ", s);
exargs = args; /* this prevents infinite recursion */
STTYval = 0; /* this prevents infinite recursion */
zsfree(s);
args = NULL;
t = tricat("stty", " ", s);
execstring(t, 1, 0);
zsfree(t);
args = exargs;
exargs = NULL;
} else if (s) {
STTYval = 0;
zsfree(s);
}
cn = (Cmdnam) cmdnamtab->getnode(cmdnamtab, arg0);
@ -1537,6 +1539,10 @@ addvars(Estate state, Wordcode pc, int export)
state->pc = opc;
return;
}
if (strcmp(name, "STTY") == 0) {
zsfree(STTYval);
STTYval = ztrdup(val);
}
allexp = opts[ALLEXPORT];
opts[ALLEXPORT] = 1;
pm = setsparam(name, val);
@ -2326,6 +2332,10 @@ execcmd(Estate state, int input, int output, int how, int last1)
if (!forked)
setlimits(NULL);
#endif
if (how & Z_ASYNC) {
zsfree(STTYval);
STTYval = 0;
}
execute((Cmdnam) hn, cflags & BINF_DASH);
} else { /* ( ... ) */
DPUTS(varspc,