diff options
author | Tanaka Akira <akr@users.sourceforge.net> | 1999-06-08 09:25:39 +0000 |
---|---|---|
committer | Tanaka Akira <akr@users.sourceforge.net> | 1999-06-08 09:25:39 +0000 |
commit | 805381040dd69dd02b78423d2d71913b33f3cc33 (patch) | |
tree | 1fa89ee643e8e577a2f79e76e3d6cafc93256ca2 /Src/main.c | |
parent | f42e3fa8e6152e145251e8f16f4c61c23dec1f59 (diff) | |
download | zsh-805381040dd69dd02b78423d2d71913b33f3cc33.tar.gz zsh-805381040dd69dd02b78423d2d71913b33f3cc33.tar.xz zsh-805381040dd69dd02b78423d2d71913b33f3cc33.zip |
zsh-3.1.5-pws-21 zsh-3.1.5-pws-21
Diffstat (limited to 'Src/main.c')
-rw-r--r-- | Src/main.c | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/Src/main.c b/Src/main.c index 7ec8f07bd..762e06b90 100644 --- a/Src/main.c +++ b/Src/main.c @@ -45,12 +45,24 @@ main(int argc, char **argv) for (t = argv; *t; *t = metafy(*t, -1, META_ALLOC), t++); - if (!(zsh_name = strrchr(argv[0], '/'))) - zsh_name = argv[0]; - else - zsh_name++; - if (*zsh_name == '-') - zsh_name++; + zsh_name = argv[0]; + do { + char *arg0 = zsh_name; + if (!(zsh_name = strrchr(arg0, '/'))) + zsh_name = arg0; + else + zsh_name++; + if (*zsh_name == '-') + zsh_name++; + if (strcmp(zsh_name, "su") == 0) { + char *sh = zgetenv("SHELL"); + if (sh && *sh && arg0 != sh) + zsh_name = sh; + else + break; + } else + break; + } while (zsh_name); fdtable_size = OPEN_MAX; fdtable = zcalloc(fdtable_size); |