__ULIB_FORCE_RELOAD ne doit pas être transitif

This commit is contained in:
Jephte CLAIN 2014-12-24 10:29:35 +04:00
parent eeab145265
commit f59a4439fe
2 changed files with 10 additions and 4 deletions

View File

@ -1 +1 @@
007013000
007013001

View File

@ -67,7 +67,8 @@ function uprovide() {
}
# Si cette variable est non vide, urequire recharge toujours le module, même
# s'il a déjà été chargé
# s'il a déjà été chargé. Cette valeur n'est pas transitive: il faut toujours
# recharger explicitement tous les modules désirés
__ULIB_FORCE_RELOAD=
function urequire() {
@ -77,12 +78,17 @@ function urequire() {
# Si un module n'est pas trouvé, quitter le script avec die()
local __u_module __u_ulibdir __u_found
[ -n "$*" ] || set DEFAULTS
# garder une copie de la valeur originale et casser la transitivité
local __ulib_force_reload="$__ULIB_FORCE_RELOAD"
local __ULIB_FORCE_RELOAD
for __u_module in "$@"; do
__u_found=
for __u_ulibdir in "${ULIBDIRS[@]}"; do
if [ -f "$__u_ulibdir/$__u_module" ]; then
__u_found=1
if [ -n "$__ULIB_FORCE_RELOAD" ] || ! uprovided "$__u_module"; then
if [ -n "$__ulib_force_reload" ] || ! uprovided "$__u_module"; then
uprovide "$__u_module"
source "$__u_ulibdir/$__u_module" || die
fi
@ -92,7 +98,7 @@ function urequire() {
if [ -z "$__u_found" -a "$__u_module" == DEFAULTS ]; then
__u_found=1
for __u_module in base pretty sysinfos compat; do
if [ -n "$__ULIB_FORCE_RELOAD" ] || ! uprovided "$__u_module"; then
if [ -n "$__ulib_force_reload" ] || ! uprovided "$__u_module"; then
uprovide "$__u_module"
source "$__u_ulibdir/$__u_module" || die
fi