mirror of
https://git.savannah.gnu.org/git/gnulib.git
synced 2025-08-17 12:41:05 +03:00
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>
38 lines
1.1 KiB
Plaintext
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
|