mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-10-04 20:40:57 +02:00
zsh-workers/8910
This commit is contained in:
parent
5f61b262a5
commit
fb5a1bc4dc
4 changed files with 7 additions and 50 deletions
|
@ -1889,7 +1889,8 @@ boot_parameter(Module m)
|
||||||
if (def->hsetfn)
|
if (def->hsetfn)
|
||||||
def->pm->sets.hfn = def->hsetfn;
|
def->pm->sets.hfn = def->hsetfn;
|
||||||
} else {
|
} else {
|
||||||
if (!(def->pm = createparam(def->name, def->flags | PM_HIDE)))
|
if (!(def->pm = createparam(def->name, def->flags | PM_HIDE |
|
||||||
|
PM_REMOVABLE)))
|
||||||
return 1;
|
return 1;
|
||||||
def->pm->sets.afn = def->setfn;
|
def->pm->sets.afn = def->setfn;
|
||||||
def->pm->gets.afn = def->getfn;
|
def->pm->gets.afn = def->getfn;
|
||||||
|
|
|
@ -3201,9 +3201,6 @@ zexit(int val, int from_signal)
|
||||||
if (in_exit++ && from_signal) {
|
if (in_exit++ && from_signal) {
|
||||||
LASTALLOC_RETURN;
|
LASTALLOC_RETURN;
|
||||||
}
|
}
|
||||||
zleactive = 0;
|
|
||||||
exit_modules();
|
|
||||||
|
|
||||||
if (isset(MONITOR)) {
|
if (isset(MONITOR)) {
|
||||||
/* send SIGHUP to any jobs left running */
|
/* send SIGHUP to any jobs left running */
|
||||||
killrunjobs(from_signal);
|
killrunjobs(from_signal);
|
||||||
|
|
|
@ -3073,7 +3073,7 @@ runshfunc(List list, FuncWrap wrap, char *name)
|
||||||
|
|
||||||
if (!wrap->module->wrapper &&
|
if (!wrap->module->wrapper &&
|
||||||
(wrap->module->flags & MOD_UNLOAD))
|
(wrap->module->flags & MOD_UNLOAD))
|
||||||
unload_module(wrap->module, NULL, 0);
|
unload_module(wrap->module, NULL);
|
||||||
|
|
||||||
if (!cont)
|
if (!cont)
|
||||||
return;
|
return;
|
||||||
|
|
49
Src/module.c
49
Src/module.c
|
@ -839,47 +839,6 @@ autoloadscan(HashNode hn, int printflags)
|
||||||
putchar('\n');
|
putchar('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Cleanup and finish all modules. */
|
|
||||||
|
|
||||||
/**/
|
|
||||||
void
|
|
||||||
exit_modules(void)
|
|
||||||
{
|
|
||||||
Module m;
|
|
||||||
char *name;
|
|
||||||
LinkNode node, next, mn, dn;
|
|
||||||
int del, used;
|
|
||||||
|
|
||||||
while (nonempty(modules)) {
|
|
||||||
for (node = firstnode(modules); (next = node); node = next) {
|
|
||||||
incnode(next);
|
|
||||||
del = used = 0;
|
|
||||||
name = ((Module) getdata(node))->nam;
|
|
||||||
for (mn = firstnode(modules); !used && mn; incnode(mn)) {
|
|
||||||
m = (Module) getdata(mn);
|
|
||||||
if (m->deps && m->u.handle)
|
|
||||||
for (dn = firstnode(m->deps); dn; incnode(dn))
|
|
||||||
if (!strcmp((char *) getdata(dn), name)) {
|
|
||||||
if (m->flags & MOD_UNLOAD)
|
|
||||||
del = 1;
|
|
||||||
else {
|
|
||||||
used = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!used) {
|
|
||||||
m = (Module) getdata(node);
|
|
||||||
if (del)
|
|
||||||
m->wrapper++;
|
|
||||||
unload_module(m, NULL, 1);
|
|
||||||
if (del)
|
|
||||||
m->wrapper--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**/
|
/**/
|
||||||
int
|
int
|
||||||
bin_zmodload(char *nam, char **args, char *ops, int func)
|
bin_zmodload(char *nam, char **args, char *ops, int func)
|
||||||
|
@ -1274,7 +1233,7 @@ bin_zmodload_param(char *nam, char **args, char *ops)
|
||||||
|
|
||||||
/**/
|
/**/
|
||||||
int
|
int
|
||||||
unload_module(Module m, LinkNode node, int force)
|
unload_module(Module m, LinkNode node)
|
||||||
{
|
{
|
||||||
if ((m->flags & MOD_INIT_S) &&
|
if ((m->flags & MOD_INIT_S) &&
|
||||||
!(m->flags & MOD_UNLOAD) &&
|
!(m->flags & MOD_UNLOAD) &&
|
||||||
|
@ -1335,11 +1294,11 @@ unload_module(Module m, LinkNode node, int force)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (du)
|
if (du)
|
||||||
unload_module(dm, NULL, 0);
|
unload_module(dm, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!m->deps || force) {
|
if(!m->deps) {
|
||||||
if (!node) {
|
if (!node) {
|
||||||
for (node = firstnode(modules); node; incnode(node))
|
for (node = firstnode(modules); node; incnode(node))
|
||||||
if (m == (Module) getdata(node))
|
if (m == (Module) getdata(node))
|
||||||
|
@ -1387,7 +1346,7 @@ bin_zmodload_load(char *nam, char **args, char *ops)
|
||||||
m = (Module) getdata(node);
|
m = (Module) getdata(node);
|
||||||
if (del)
|
if (del)
|
||||||
m->wrapper++;
|
m->wrapper++;
|
||||||
if (unload_module(m, node, 0))
|
if (unload_module(m, node))
|
||||||
ret = 1;
|
ret = 1;
|
||||||
if (del)
|
if (del)
|
||||||
m->wrapper--;
|
m->wrapper--;
|
||||||
|
|
Loading…
Reference in a new issue