diff options
author | Bart Schaefer <barts@users.sourceforge.net> | 2001-11-03 23:36:33 +0000 |
---|---|---|
committer | Bart Schaefer <barts@users.sourceforge.net> | 2001-11-03 23:36:33 +0000 |
commit | d98a67c56990a81bc8a913612b8a2ae496000836 (patch) | |
tree | caeebcf41bbdb23e25cd733299d5a0a1b9f91e02 | |
parent | 7f1ce57089409f98a0f13ce2eed5b56152219455 (diff) | |
download | zsh-d98a67c56990a81bc8a913612b8a2ae496000836.tar.gz zsh-d98a67c56990a81bc8a913612b8a2ae496000836.tar.xz zsh-d98a67c56990a81bc8a913612b8a2ae496000836.zip |
16201: introduce the PM_NAMEDDIR flag
-rw-r--r-- | Src/params.c | 6 | ||||
-rw-r--r-- | Src/zsh.h | 1 |
2 files changed, 6 insertions, 1 deletions
diff --git a/Src/params.c b/Src/params.c index cd0b16964..22346896d 100644 --- a/Src/params.c +++ b/Src/params.c @@ -2147,6 +2147,7 @@ unsetparam_pm(Param pm, int altflag, int exp) paramtab->addnode(paramtab, oldpm->nam, oldpm); if ((PM_TYPE(oldpm->flags) == PM_SCALAR) && !(pm->flags & PM_HASHELEM) && + (oldpm->flags & PM_NAMEDDIR) && oldpm->sets.cfn == strsetfn) adduserdir(oldpm->nam, oldpm->u.str, 0, 0); if (oldpm->flags & PM_EXPORTED) { @@ -2231,8 +2232,11 @@ strsetfn(Param pm, char *x) { zsfree(pm->u.str); pm->u.str = x; - if (!(pm->flags & PM_HASHELEM)) + if (!(pm->flags & PM_HASHELEM) && + ((pm->flags & PM_NAMEDDIR) || isset(AUTONAMEDIRS))) { + pm->flags |= PM_NAMEDDIR; adduserdir(pm->nam, x, 0, 0); + } } /* Function to get value of an array parameter */ diff --git a/Src/zsh.h b/Src/zsh.h index 5e18c0ade..cd6caf3b3 100644 --- a/Src/zsh.h +++ b/Src/zsh.h @@ -1134,6 +1134,7 @@ struct param { #define PM_AUTOLOAD (1<<23) /* autoloaded from module */ #define PM_NORESTORE (1<<24) /* do not restore value of local special */ #define PM_HASHELEM (1<<25) /* is a hash-element */ +#define PM_NAMEDDIR (1<<26) /* has a corresponding nameddirtab entry */ /* The option string corresponds to the first of the variables above */ #define TYPESET_OPTSTR "aiEFALRZlurtxUhHT" |