mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-10-23 16:40:24 +02:00
Andrej: Dynamic loading on cygwin
This commit is contained in:
parent
de7b6730bc
commit
4f1aa826f5
11 changed files with 453 additions and 211 deletions
84
Src/main.c
84
Src/main.c
|
|
@ -34,87 +34,5 @@
|
|||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
char **t;
|
||||
int t0;
|
||||
#ifdef USE_LOCALE
|
||||
setlocale(LC_ALL, "");
|
||||
#endif
|
||||
|
||||
init_hackzero(argv, environ);
|
||||
|
||||
/*
|
||||
* Provisionally set up the type table to allow metafication.
|
||||
* This will be done properly when we have decided if we are
|
||||
* interactive
|
||||
*/
|
||||
typtab['\0'] |= IMETA;
|
||||
typtab[STOUC(Meta) ] |= IMETA;
|
||||
typtab[STOUC(Marker)] |= IMETA;
|
||||
for (t0 = (int)STOUC(Pound); t0 <= (int)STOUC(Nularg); t0++)
|
||||
typtab[t0] |= ITOK | IMETA;
|
||||
|
||||
for (t = argv; *t; *t = metafy(*t, -1, META_ALLOC), t++);
|
||||
|
||||
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);
|
||||
|
||||
createoptiontable();
|
||||
emulate(zsh_name, 1); /* initialises most options */
|
||||
opts[LOGINSHELL] = (**argv == '-');
|
||||
opts[MONITOR] = 1; /* may be unset in init_io() */
|
||||
opts[PRIVILEGED] = (getuid() != geteuid() || getgid() != getegid());
|
||||
opts[USEZLE] = 1; /* may be unset in init_io() */
|
||||
parseargs(argv); /* sets INTERACTIVE, SHINSTDIN and SINGLECOMMAND */
|
||||
|
||||
SHTTY = -1;
|
||||
init_io();
|
||||
setupvals();
|
||||
init_signals();
|
||||
init_bltinmods();
|
||||
run_init_scripts();
|
||||
init_misc();
|
||||
|
||||
for (;;) {
|
||||
do
|
||||
loop(1,0);
|
||||
while (tok != ENDINPUT && (tok != LEXERR || isset(SHINSTDIN)));
|
||||
if (tok == LEXERR) {
|
||||
stopmsg = 1;
|
||||
zexit(lastval, 0);
|
||||
}
|
||||
if (!(isset(IGNOREEOF) && interact)) {
|
||||
#if 0
|
||||
if (interact)
|
||||
fputs(islogin ? "logout\n" : "exit\n", shout);
|
||||
#endif
|
||||
zexit(lastval, 0);
|
||||
continue;
|
||||
}
|
||||
noexitct++;
|
||||
if (noexitct >= 10) {
|
||||
stopmsg = 1;
|
||||
zexit(lastval, 0);
|
||||
}
|
||||
zerrnam("zsh", (!islogin) ? "use 'exit' to exit."
|
||||
: "use 'logout' to logout.", NULL, 0);
|
||||
}
|
||||
return (zsh_main(argc, argv));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue