From c73dd460190ca602114503d8dea3171165ff099e Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Tue, 9 Aug 2005 10:02:08 +0000 Subject: Fixes from Thorsten Dahlheimer. 21578: mkmakemod.sh didn't exit on cleanup. 21582: fix failure status of zmodload -R. 21583: fix circularity test of zmodload -A. --- Src/Zle/zle_main.c | 13 +++++++++++++ Src/mkmakemod.sh | 8 ++++---- Src/module.c | 21 +++++++++++---------- 3 files changed, 28 insertions(+), 14 deletions(-) (limited to 'Src') diff --git a/Src/Zle/zle_main.c b/Src/Zle/zle_main.c index e6f83cb3e..1acff3bbb 100644 --- a/Src/Zle/zle_main.c +++ b/Src/Zle/zle_main.c @@ -1481,6 +1481,17 @@ resetprompt(UNUSED(char **args)) return redisplay(NULL); } +/* same bug called from outside zle */ + +/**/ +mod_export void +zle_resetprompt(void) +{ reexpandprompt(); + if (zleactive) + redisplay(NULL); +} + + /**/ mod_export void trashzle(void) @@ -1572,6 +1583,7 @@ setup_(UNUSED(Module m)) { /* Set up editor entry points */ trashzleptr = trashzle; + zle_resetpromptptr = zle_resetprompt; zrefreshptr = zrefresh; zleaddtolineptr = zleaddtoline; zlegetlineptr = zlegetline; @@ -1659,6 +1671,7 @@ finish_(UNUSED(Module m)) /* editor entry points */ trashzleptr = noop_function; + zle_resetpromptptr = noop_function; zrefreshptr = noop_function; zleaddtolineptr = noop_function_int; zlegetlineptr = NULL; diff --git a/Src/mkmakemod.sh b/Src/mkmakemod.sh index 38c5e72e1..e67b7a7a8 100644 --- a/Src/mkmakemod.sh +++ b/Src/mkmakemod.sh @@ -37,7 +37,7 @@ # `:<<\Make' and `Make' -- this will be copied into Makemod.in. # # The resulting Makemod.in knows how to build each module that is defined. -# For each module in also knows how to build a .mdh file. Each source file +# For each module it also knows how to build a .mdh file. Each source file # should #include the .mdh file for the module it is a part of. The .mdh # file #includes the .mdh files for any module dependencies, then each of # $headers, and then each .epro (for global declarations). It will @@ -92,7 +92,7 @@ if $first_stage; then dir_top=`echo $the_subdir | sed 's,[^/][^/]*,..,g'` - trap "rm -f $the_subdir/${the_makefile}.in" 1 2 15 + trap "rm -f $the_subdir/${the_makefile}.in; exit 1" 1 2 15 echo "creating $the_subdir/${the_makefile}.in" exec 3>&1 >$the_subdir/${the_makefile}.in echo "##### ${the_makefile}.in generated automatically by mkmakemod.sh" @@ -466,11 +466,11 @@ if $first_stage; then fi if $second_stage ; then - trap "rm -f $the_subdir/${the_makefile}" 1 2 15 + trap "rm -f $the_subdir/${the_makefile}; exit 1" 1 2 15 ${CONFIG_SHELL-/bin/sh} ./config.status \ --file=$the_subdir/${the_makefile}:$the_subdir/${the_makefile}.in || - return 1 + exit 1 fi exit 0 diff --git a/Src/module.c b/Src/module.c index 7a0fcf811..ee493ad0c 100644 --- a/Src/module.c +++ b/Src/module.c @@ -1043,7 +1043,6 @@ bin_zmodload_alias(char *nam, char **args, Options ops) */ LinkNode node; Module m; - int ret = 0; if (!*args) { if (OPT_ISSET(ops,'R')) { @@ -1058,7 +1057,7 @@ bin_zmodload_alias(char *nam, char **args, Options ops) return 0; } - for (; !ret && *args; args++) { + for (; *args; args++) { char *eqpos = strchr(*args, '='); char *aliasname = eqpos ? eqpos+1 : NULL; if (eqpos) @@ -1078,8 +1077,7 @@ bin_zmodload_alias(char *nam, char **args, Options ops) m = (Module) getdata(node); if (!(m->flags & MOD_ALIAS)) { zwarnnam(nam, "module is not an alias: %s", *args, 0); - ret = 1; - break; + return 1; } delete_module(node); } else { @@ -1093,12 +1091,15 @@ bin_zmodload_alias(char *nam, char **args, Options ops) zwarnnam(nam, "invalid module name `%s'", aliasname, 0); return 1; } - find_module(aliasname, 1, &mname); - if (!strcmp(mname, *args)) { - zwarnnam(nam, "module alias would refer to itself: %s", - *args, 0); - return 1; - } + do { + if (!strcmp(mname, *args)) { + zwarnnam(nam, "module alias would refer to itself: %s", + *args, 0); + return 1; + } + } while ((node = find_module(mname, 0, NULL)) + && ((m = (Module) getdata(node))->flags & MOD_ALIAS) + && (mname = m->u.alias)); node = find_module(*args, 0, NULL); if (node) { m = (Module) getdata(node); -- cgit 1.4.1