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>