* Is this a bug in "emulate"? And is this the right fix?
@ 2015-08-21 3:59 Bart Schaefer
0 siblings, 0 replies; only message in thread
From: Bart Schaefer @ 2015-08-21 3:59 UTC (permalink / raw)
To: zsh-workers
The syntax is
emulate [ -LR ] [ {zsh|sh|ksh|csh} [ FLAGS ... ] ]
where FLAGS are any of the usual things you can pass to "set". There is
a notation:
The -L switch is mutually exclusive with the use of -c in FLAGS.
In fact it appears the -L switch is mutually incompatible with any FLAGS
at all:
torch% diff =(emulate -L sh ; set -o) =(emulate -L sh -e ; set -o)
50c50
< errexit off
---
> errexit on
106,108c106,108
< localoptions on
< localpatterns on
< localtraps on
---
> localoptions off
> localpatterns off
> localtraps off
I would have expected the only difference to be errexit on/off.
diff --git a/Src/builtin.c b/Src/builtin.c
index 572a0dd..6411faa 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -5465,8 +5465,8 @@ bin_emulate(UNUSED(char *nam), char **argv, Options ops, UNUSED(int func))
/* with single argument set current emulation */
if (!argv[1]) {
- emulate(shname, OPT_ISSET(ops,'R'), &emulation, opts);
- if (OPT_ISSET(ops,'L'))
+ emulate(shname, opt_R, &emulation, opts);
+ if (opt_L)
opts[LOCALOPTIONS] = opts[LOCALTRAPS] = opts[LOCALPATTERNS] = 1;
clearpatterndisables();
return 0;
@@ -5476,7 +5476,7 @@ bin_emulate(UNUSED(char *nam), char **argv, Options ops, UNUSED(int func))
memcpy(saveopts, opts, sizeof(opts));
memcpy(new_opts, opts, sizeof(opts));
savehackchar = keyboardhackchar;
- emulate(shname, OPT_ISSET(ops,'R'), &new_emulation, new_opts);
+ emulate(shname, opt_R, &new_emulation, new_opts);
optlist = newlinklist();
if (parseopts("emulate", &argv, new_opts, &cmd, optlist)) {
ret = 1;
@@ -5508,8 +5508,11 @@ bin_emulate(UNUSED(char *nam), char **argv, Options ops, UNUSED(int func))
goto restore2;
}
*--argv = cmd; /* on stack, never free()d, see execbuiltin() */
- } else
+ } else {
+ if (opt_L)
+ opts[LOCALOPTIONS] = opts[LOCALTRAPS] = opts[LOCALPATTERNS] = 1;
return 0;
+ }
save_sticky = sticky;
sticky = hcalloc(sizeof(*sticky));
--
Barton E. Schaefer
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2015-08-21 3:59 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-21 3:59 Is this a bug in "emulate"? And is this the right fix? Bart Schaefer
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).