1
0
mirror of https://git.savannah.gnu.org/git/gnulib.git synced 2025-08-17 12:41:05 +03:00
Files
gnulib/doc/posix-functions/unsetenv.texi
Eric Blake ad98f8ef51 unsetenv: work around Haiku issues
On Haiku alpha 2, test-unsetenv.c passed in isolation with just
system headers, but failed when libgnu and replacement headers
were in use.  Why?  Because putenv("a") fails to remove "a=..."
from the environment, but the gnulib rpl_putenv works by
assigning to environ.  Apparently, Haiku is doing some funky
caching issues, and correctly removes all vestiges of environment
duplicates when Haiku is in charge, but not after assigning to
environ forces Haiku to rebuild its cache.

The m4 change is sufficient to detect Haiku's oddities, and the
existing replacement then passes just fine.

* m4/setenv.m4 (gl_FUNC_UNSETENV): Also detect Haiku issue.
* doc/posix-functions/unsetenv.texi (unsetenv): Document it.

Signed-off-by: Eric Blake <eblake@redhat.com>
2011-02-05 15:19:15 -07:00

38 lines
1.1 KiB
Plaintext

@node unsetenv
@section @code{unsetenv}
@findex unsetenv
POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/unsetenv.html}
Gnulib module: unsetenv
Portability problems fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
AIX 5.1, HP-UX 11.23, IRIX 6.5, Solaris 9, mingw, BeOS.
@item
This function is not declared on some platforms:
OSF/1 5.1.
@item
This function has the return type @samp{void} instead of @samp{int} on some
platforms:
MacOS X 10.3, FreeBSD 6.0, NetBSD 1.6, OpenBSD 3.8, OSF/1 5.1.
@item
On some platforms, this function does not fail with @samp{EINVAL} when
passed an empty string or a string containing @samp{=}:
FreeBSD 6.0, NetBSD 1.6, OpenBSD 4.7.
@item
This function removes only the first value association for the given
environment variable, not all of them, on some platforms:
Solaris 11 2010-11, Haiku.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
Older versions of POSIX required that @code{unsetenv(NULL)} gracefully
fail with @code{EINVAL}, but not all implementations guarantee this,
and the requirement was removed.
@end itemize