* Re: named directory bug
[not found] <20011101193553.A23303@greux.loria.fr>
@ 2001-11-02 10:21 ` Peter Stephenson
2001-11-02 10:34 ` Bart Schaefer
0 siblings, 1 reply; 7+ messages in thread
From: Peter Stephenson @ 2001-11-02 10:21 UTC (permalink / raw)
To: Zsh hackers list
Vincent Lefevre wrote:
> On Thu, Nov 01, 2001 at 17:43:07 +0000, Bart Schaefer wrote:
> > That's odd. What do you see if you run this function?
> >=20
> > tryit() {
> > hash -d
> > setopt localoptions xtrace
> > eval "local +h nameddirs; nameddirs=3D(${(@kvq)nameddirs})"
> > }
>
> tmparch=3D/global/greux/lefevre/private/tmparch
> +tryit:3> eval local +h nameddirs; nameddirs=(out) local +h
> nameddirs; nameddirs=(/users/spaces/lefevre/private/out) local +h
You have RCEXPANDPARAM turned on. Turn the setopt into
emulate -L zsh
setopt xtrace
and it should work as expected.
--
Peter Stephenson <pws@csr.com> Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK Tel: +44 (0)1223 392070
**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential
and/or privileged material.
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by
persons or entities other than the intended recipient is
prohibited.
If you received this in error, please contact the sender and
delete the material from any computer.
**********************************************************************
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: named directory bug
2001-11-02 10:21 ` named directory bug Peter Stephenson
@ 2001-11-02 10:34 ` Bart Schaefer
2001-11-02 12:05 ` Vincent Lefevre
2002-04-13 18:31 ` Clint Adams
0 siblings, 2 replies; 7+ messages in thread
From: Bart Schaefer @ 2001-11-02 10:34 UTC (permalink / raw)
To: Vincent Lefevre, Zsh hackers list
On Nov 2, 10:21am, Peter Stephenson wrote:
}
} You have RCEXPANDPARAM turned on. Turn the setopt into
} emulate -L zsh
} setopt xtrace
} and it should work as expected.
Except of course that the command in question is supposed to go into
_main_complete, which needs RCEXPANDPARAM.
Use
eval "local +h nameddirs; nameddirs=(${(@kvq)^^nameddirs})"
to disable RCEXPANDPARAM for that expansion only.
--
Bart Schaefer Brass Lantern Enterprises
http://www.well.com/user/barts http://www.brasslantern.com
Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: named directory bug
2001-11-02 10:34 ` Bart Schaefer
@ 2001-11-02 12:05 ` Vincent Lefevre
2002-04-13 18:31 ` Clint Adams
1 sibling, 0 replies; 7+ messages in thread
From: Vincent Lefevre @ 2001-11-02 12:05 UTC (permalink / raw)
To: Zsh hackers list
On Fri, Nov 02, 2001 at 10:34:03 +0000, Bart Schaefer wrote:
> Use
>
> eval "local +h nameddirs; nameddirs=(${(@kvq)^^nameddirs})"
>
> to disable RCEXPANDPARAM for that expansion only.
Thanks, this seems to work!
--
Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/> - 100%
validated HTML - Acorn Risc PC, Yellow Pig 17, Championnat International des
Jeux Mathématiques et Logiques, TETRHEX, etc.
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: named directory bug
2001-11-02 10:34 ` Bart Schaefer
2001-11-02 12:05 ` Vincent Lefevre
@ 2002-04-13 18:31 ` Clint Adams
2002-04-13 19:16 ` Bart Schaefer
1 sibling, 1 reply; 7+ messages in thread
From: Clint Adams @ 2002-04-13 18:31 UTC (permalink / raw)
To: Bart Schaefer; +Cc: Vincent Lefevre, Zsh hackers list
> Except of course that the command in question is supposed to go into
> _main_complete, which needs RCEXPANDPARAM.
>
> Use
>
> eval "local +h nameddirs; nameddirs=(${(@kvq)^^nameddirs})"
>
> to disable RCEXPANDPARAM for that expansion only.
Should this go into the canonical _main_complete?
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: named directory bug
2002-04-13 18:31 ` Clint Adams
@ 2002-04-13 19:16 ` Bart Schaefer
0 siblings, 0 replies; 7+ messages in thread
From: Bart Schaefer @ 2002-04-13 19:16 UTC (permalink / raw)
To: Clint Adams; +Cc: Vincent Lefevre, Zsh hackers list
On Apr 13, 2:31pm, Clint Adams wrote:
}
} > eval "local +h nameddirs; nameddirs=(${(@kvq)^^nameddirs})"
} >
} > to disable RCEXPANDPARAM for that expansion only.
}
} Should this go into the canonical _main_complete?
The bug that code was designed to address should have been fixed by the
C code patch in zsh-workers/16201. So unless the bug wasn't actually
fixed, no, that should not go into _main_complete.
--
Bart Schaefer Brass Lantern Enterprises
http://www.well.com/user/barts http://www.brasslantern.com
Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: named directory bug
2001-11-01 15:40 ` Peter Stephenson
@ 2001-11-01 16:30 ` Bart Schaefer
0 siblings, 0 replies; 7+ messages in thread
From: Bart Schaefer @ 2001-11-01 16:30 UTC (permalink / raw)
To: Peter Stephenson, Zsh hackers list
On Nov 1, 3:40pm, Peter Stephenson wrote:
}
} Bart Schaefer wrote:
} > I've thought using parameters for named directories was a bad idea for a
} > very long time, ever since my csh-junkie hack of `chpwd () { cwd=$PWD }'
} > started causing `~cwd' to show up in my prompt. (Guess when autonamedirs
} > became an option rather than the default behavior.) At the very least I
} > think there should be a parameter flag for "this parameter is a nameddir"
} > checked by unsetparam_pm() and strsetfn() before calling adduserdir().
}
} Would it help if we avoid local variables becoming directory names, or at
} least checked if there was already a name before adding one for a local
} variable?
That might help this bug, but it'd introduce others.
At present the only connection between the paramtab and the nameddirtab is
by the name of the parameter. If the same name exists in both places, then
changing the parameter clobbers the nameddir.
Skipping the nameddir change for local parameters would prevent the problem
with name clashes, but it would break code that actually uses local params
as nameddirs; e.g., currently something like this works:
foo() {
local t=$TMPPREFIX:h
echo ~t
}
However, the patches to add a PM_NAMEDDIR flag are pretty minimal; in fact,
here they are, except that I haven't modified `typeset' to be able to set
the flag explicitly (`-d' is available) -- but maybe it never needs to be
set explicitly.
Index: Src/utils.c
===================================================================
--- Src/utils.c 2001/10/22 14:36:45 1.9
+++ Src/utils.c 2001/11/01 16:04:00
@@ -571,6 +571,7 @@
if ((pm = (Param) paramtab->getnode(paramtab, name)) &&
(PM_TYPE(pm->flags) == PM_SCALAR) &&
(str = getsparam(name)) && *str == '/') {
+ pm->flags |= PM_NAMEDDIR;
adduserdir(name, str, 0, 1);
return str;
}
Index: Src/params.c
===================================================================
--- Src/params.c 2001/07/10 09:05:21 1.11
+++ Src/params.c 2001/11/01 16:02:16
@@ -2149,6 +2149,7 @@
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) {
@@ -2233,8 +2234,11 @@
{
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 */
Index: Src/zsh.h
===================================================================
--- Src/zsh.h 2001/10/17 14:38:29 1.8
+++ Src/zsh.h 2001/11/01 15:46:08
@@ -1134,6 +1134,7 @@
#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"
--
Bart Schaefer Brass Lantern Enterprises
http://www.well.com/user/barts http://www.brasslantern.com
Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: named directory bug
[not found] <1011101151440.ZM32669@candle.brasslantern.com>
@ 2001-11-01 15:40 ` Peter Stephenson
2001-11-01 16:30 ` Bart Schaefer
0 siblings, 1 reply; 7+ messages in thread
From: Peter Stephenson @ 2001-11-01 15:40 UTC (permalink / raw)
To: Zsh hackers list
Bart Schaefer wrote:
> I've thought using parameters for named directories was a bad idea for a
> very long time, ever since my csh-junkie hack of `chpwd () { cwd=$PWD }'
> started causing `~cwd' to show up in my prompt. (Guess when autonamedirs
> became an option rather than the default behavior.) At the very least I
> think there should be a parameter flag for "this parameter is a nameddir"
> checked by unsetparam_pm() and strsetfn() before calling adduserdir().
Would it help if we avoid local variables becoming directory names, or at
least checked if there was already a name before adding one for a local
variable?
--
Peter Stephenson <pws@csr.com> Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK Tel: +44 (0)1223 392070
**********************************************************************
The information transmitted is intended only for the person or
entity to which it is addressed and may contain confidential
and/or privileged material.
Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by
persons or entities other than the intended recipient is
prohibited.
If you received this in error, please contact the sender and
delete the material from any computer.
**********************************************************************
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2002-04-13 19:16 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <20011101193553.A23303@greux.loria.fr>
2001-11-02 10:21 ` named directory bug Peter Stephenson
2001-11-02 10:34 ` Bart Schaefer
2001-11-02 12:05 ` Vincent Lefevre
2002-04-13 18:31 ` Clint Adams
2002-04-13 19:16 ` Bart Schaefer
[not found] <1011101151440.ZM32669@candle.brasslantern.com>
2001-11-01 15:40 ` Peter Stephenson
2001-11-01 16:30 ` Bart Schaefer
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).