zsh oddities with recent -current

Andrey Chernov ache at nagual.pp.ru
Wed Jul 25 08:47:59 UTC 2007


On Wed, Jul 25, 2007 at 05:33:05PM +0930, Daniel O'Connor wrote:
> I updated my -current box (laptop) on the 18th and I have 2 strange 
> issues with zsh.
> 
> 1) I can't unset environmental variables set before the shell started, 
> eg..

zsh uses system's putenv() but home-rolled delete from environment 
(instead of unsetenv()). It clearly violates POSIX since it forbids to mix 
putenv/setenv/unsetenv with direct environ manipulations:

"Conforming applications are required not to modify environ directly, but 
to use only the functions described here to manipulate the process 
environment as an abstract object. Thus, the implementation of the 
environment access functions has complete control over the data structure 
used to represent the environment (subject to the requirement that environ 
be maintained as a list of strings with embedded equal signs for 
applications that wish to scan the environment). This constraint allows 
the implementation to properly manage the memory it allocates, either by 
using allocated storage for all variables (copying them on the first 
invocation of setenv() or unsetenv()), or keeping track of which strings 
are currently in allocated space and which are not, via a separate table 
or some other means."

Quick fix will be just to disable HAVE_PUTENV config option. It gains 
nothing in the code but makes troubles.

-- 
http://ache.pp.ru/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-current/attachments/20070725/ad809997/attachment.pgp


More information about the freebsd-current mailing list