Date: Wed, 2 May 2007 20:50:25 -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.0705022034180.8590@sea.ntplx.net> In-Reply-To: <20070502183100.P1317@baba.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>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 2 May 2007, Sean C. Farley wrote: > > Here[1] is my POSIX version of the *env() (including putenv()) > functions. It also has the leak-avoidance change that occurs with > setenv("ab") -> setenv("a") -> setenv("ab"). It is also faster than the > current code. > > Where it diverges from POSIX: > 1. putenv() sets errno to EINVAL since it performs checks (NULL pointer, > empty string and string without '=') on the string given to it. It > makes it a bit more like setenv() in its validation. I found this > note[2] that says that providing invalid data to putenv() will result > in undefined behavior. I thought that undefined could mean an error > is returned. The check is easy to remove. I think that is fine as it falls under "undefined behavior", and the function is already defined as returning an error code. > 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. -- DE
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.64.0705022034180.8590>