From 11bbce3a66aeb8c2b8832a8ee1657e3fa2e8dc4b Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Fri, 23 Mar 2007 14:24:33 +0000 Subject: 23232: minor tweaks to zmodload --- ChangeLog | 6 ++++++ Doc/Zsh/builtins.yo | 8 +++++++- Src/module.c | 12 +++--------- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index dc91eb85a..ff17bc897 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-03-23 Peter Stephenson + + * 23232: Src/module.c, Doc/Zsh/builtins.yo: improve + warning interface; record that zmodload doesn't flag an error + on failed loading. + 2007-03-22 Peter Stephenson * 23228: Functions/Calendar/calendar_{scan,show}date: fix diff --git a/Doc/Zsh/builtins.yo b/Doc/Zsh/builtins.yo index e84084cd4..aca1cceca 100644 --- a/Doc/Zsh/builtins.yo +++ b/Doc/Zsh/builtins.yo @@ -1864,7 +1864,13 @@ be in a file with a name consisting of the specified var(name) followed by a standard suffix, usually `tt(.so)' (`tt(.sl)' on HPUX). If the module to be loaded is already loaded and the tt(-i) option is given, the duplicate module is -ignored. Otherwise tt(zmodload) prints an error message. +ignored. Otherwise tt(zmodload) prints an error message and returns +a non-zero status. The current code block is not aborted unless +tt(zmodload) detects an inconsistency, such as an invalid module name +or circular dependency list. Hence `tt(zmodload -i) var(module) +tt(2>/dev/null)' is sufficient to test whether a module is available. +If it is available, the module is loaded if necessary, while if it +is not available, non-zero status is silently returned. The var(name)d module is searched for in the same way a command is, using tt($module_path) instead of tt($path). However, the path search is diff --git a/Src/module.c b/Src/module.c index fa6d50c6e..ffa659efc 100644 --- a/Src/module.c +++ b/Src/module.c @@ -439,11 +439,8 @@ do_load_module(char const *name, int silent) void *ret; ret = try_load_module(name); - if (!ret && !silent) { - int waserr = errflag; - zerr("failed to load module: %s", name); - errflag = waserr; - } + if (!ret && !silent) + zwarn("failed to load module: %s", name); return ret; } @@ -454,11 +451,8 @@ do_load_module(char const *name, int silent) static void * do_load_module(char const *name, int silent) { - int waserr = errflag; - if (!silent) - zerr("failed to load module: %s", name); - errflag = waserr; + zwarn("failed to load module: %s", name); return NULL; } -- cgit 1.4.1