about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>1999-12-06 10:26:22 +0000
committerTanaka Akira <akr@users.sourceforge.net>1999-12-06 10:26:22 +0000
commitfb5a1bc4dce28016a61eb11033bfb9a23ea74b5e (patch)
tree4900ad87add656bcf2e84410e22fdc3ef5f070c1
parent5f61b262a515286c7789cd26abf4d9140fb2d06d (diff)
downloadzsh-fb5a1bc4dce28016a61eb11033bfb9a23ea74b5e.tar.gz
zsh-fb5a1bc4dce28016a61eb11033bfb9a23ea74b5e.tar.xz
zsh-fb5a1bc4dce28016a61eb11033bfb9a23ea74b5e.zip
zsh-workers/8910
-rw-r--r--Src/Modules/parameter.c3
-rw-r--r--Src/builtin.c3
-rw-r--r--Src/exec.c2
-rw-r--r--Src/module.c49
4 files changed, 7 insertions, 50 deletions
diff --git a/Src/Modules/parameter.c b/Src/Modules/parameter.c
index ab8276979..c512ed2e2 100644
--- a/Src/Modules/parameter.c
+++ b/Src/Modules/parameter.c
@@ -1889,7 +1889,8 @@ boot_parameter(Module m)
 	    if (def->hsetfn)
 		def->pm->sets.hfn = def->hsetfn;
 	} 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;
 	    def->pm->sets.afn = def->setfn;
 	    def->pm->gets.afn = def->getfn;
diff --git a/Src/builtin.c b/Src/builtin.c
index 03cb6c02f..a8e9e12c0 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -3201,9 +3201,6 @@ zexit(int val, int from_signal)
 	if (in_exit++ && from_signal) {
 	    LASTALLOC_RETURN;
 	}
-	zleactive = 0;
-	exit_modules();
-
 	if (isset(MONITOR)) {
 	    /* send SIGHUP to any jobs left running  */
 	    killrunjobs(from_signal);
diff --git a/Src/exec.c b/Src/exec.c
index cda229c3a..e8cb3fa8e 100644
--- a/Src/exec.c
+++ b/Src/exec.c
@@ -3073,7 +3073,7 @@ runshfunc(List list, FuncWrap wrap, char *name)
 
 	if (!wrap->module->wrapper &&
 	    (wrap->module->flags & MOD_UNLOAD))
-	    unload_module(wrap->module, NULL, 0);
+	    unload_module(wrap->module, NULL);
 
 	if (!cont)
 	    return;
diff --git a/Src/module.c b/Src/module.c
index aa62a163d..09507d73f 100644
--- a/Src/module.c
+++ b/Src/module.c
@@ -839,47 +839,6 @@ autoloadscan(HashNode hn, int printflags)
     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
 bin_zmodload(char *nam, char **args, char *ops, int func)
@@ -1274,7 +1233,7 @@ bin_zmodload_param(char *nam, char **args, char *ops)
 
 /**/
 int
-unload_module(Module m, LinkNode node, int force)
+unload_module(Module m, LinkNode node)
 {
     if ((m->flags & MOD_INIT_S) &&
 	!(m->flags & MOD_UNLOAD) &&
@@ -1335,11 +1294,11 @@ unload_module(Module m, LinkNode node, int force)
 			}
 		    }
 		    if (du)
-			unload_module(dm, NULL, 0);
+			unload_module(dm, NULL);
 		}
 	    }
 	}
-	if(!m->deps || force) {
+	if(!m->deps) {
 	    if (!node) {
 		for (node = firstnode(modules); node; incnode(node))
 		    if (m == (Module) getdata(node))
@@ -1387,7 +1346,7 @@ bin_zmodload_load(char *nam, char **args, char *ops)
 		m = (Module) getdata(node);
 		if (del)
 		    m->wrapper++;
-		if (unload_module(m, node, 0))
+		if (unload_module(m, node))
 		    ret = 1;
 		if (del)
 		    m->wrapper--;