Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 3 May 2007 00:22:52 -0400 (EDT)
From:      Daniel Eischen <deischen@freebsd.org>
To:        "Sean C. Farley" <sean-freebsd@farley.org>
Cc:        arch@freebsd.org
Subject:   Re: HEADS DOWN
Message-ID:  <Pine.GSO.4.64.0705030011110.11451@sea.ntplx.net>
In-Reply-To: <20070502230413.Y30614@thor.farley.org>
References:  <20070501083009.GA4627@nagual.pp.ru> <20070501160645.GA9333@nagual.pp.ru> <20070501135439.B36275@thor.farley.org> <20070502.102822.-957833022.imp@bsdimp.com> <Pine.GSO.4.64.0705021332020.8590@sea.ntplx.net> <20070502183100.P1317@baba.farley.org> <Pine.GSO.4.64.0705022034180.8590@sea.ntplx.net> <20070502230413.Y30614@thor.farley.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 2 May 2007, Sean C. Farley wrote:

> On Wed, 2 May 2007, Daniel Eischen wrote:
>
>> On Wed, 2 May 2007, Sean C. Farley wrote:
>
> <snip>
>
>>> 2. getenv() sets errno to EINVAL and returns NULL if given a bad name
>>>    to find.  setenv() and unsetenv() perform the same check on the
>>>    name; should not getenv() do the same?  The check is easy to
>>>    remove.
>> 
>> I don't think getenv() should set errno.  The fact that it
>> returns NULL is sufficient and POSIX doesn't define any errors
>> for it.
>
> Fixed for errno.  Also, no value is appropriate for errno when the name
> does not exist.  How about the feature that getenv() returns a NULL for
> a bad name instead of allowing a core dump?  Is that acceptable?

I thought that is what I said above ;-)  POSIX says this about getenv():

   Upon successful completion, getenv() shall return a pointer to a string
   containing the value for the specified name. If the specified name cannot be
   found in the environment of the calling process, a null pointer shall be
   returned.

I'd argue that a bad name is the same thing as if it were a good name
but couldn't be found.  You really don't want a core dump unless you
have to jump through too many hoops to prevent one.  As long as the
name is a valid pointer to a valid string, then you should just
search the environment for the string.  It looks like the only character
not allowed is '='.

-- 
DE



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.64.0705030011110.11451>