From da59166b23ea84c65ce3827a9928bcf201ca09f3 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Wed, 8 Sep 2010 13:43:51 -0600 Subject: [PATCH] unsetenv: fix OpenBSD bug * m4/setenv.m4 (gl_FUNC_UNSETENV): Check for OpenBSD bug. * doc/posix-functions/unsetenv.texi (unsetenv): Update documentation. Reported by Jim Meyering. Signed-off-by: Eric Blake --- ChangeLog | 6 ++++++ doc/posix-functions/unsetenv.texi | 4 ++-- m4/setenv.m4 | 7 +++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9fb8803ce..82937ac73 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2010-09-08 Eric Blake + unsetenv: fix OpenBSD bug + * m4/setenv.m4 (gl_FUNC_UNSETENV): Check for OpenBSD bug. + * doc/posix-functions/unsetenv.texi (unsetenv): Update + documentation. + Reported by Jim Meyering. + strtod: work around IRIX 6.5 bug * lib/strtod.c (strtod): Reparse number on shorter string if exponent parse was invalid. diff --git a/doc/posix-functions/unsetenv.texi b/doc/posix-functions/unsetenv.texi index 8a683f557..56819bbb7 100644 --- a/doc/posix-functions/unsetenv.texi +++ b/doc/posix-functions/unsetenv.texi @@ -4,7 +4,7 @@ POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/unsetenv.html} -Gnulib module: setenv +Gnulib module: unsetenv Portability problems fixed by Gnulib: @itemize @@ -18,7 +18,7 @@ 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 3.8. +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: diff --git a/m4/setenv.m4 b/m4/setenv.m4 index 5a800d337..de7171ee5 100644 --- a/m4/setenv.m4 +++ b/m4/setenv.m4 @@ -1,4 +1,4 @@ -# setenv.m4 serial 17 +# setenv.m4 serial 18 dnl Copyright (C) 2001-2004, 2006-2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -78,10 +78,12 @@ int unsetenv(); fi dnl Solaris 10 unsetenv does not remove all copies of a name. - AC_CACHE_CHECK([whether unsetenv works on duplicates], + dnl OpenBSD 4.7 unsetenv("") does not fail. + AC_CACHE_CHECK([whether unsetenv obeys POSIX], [gl_cv_func_unsetenv_works], [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include + #include ]], [[ char entry[] = "b=2"; if (putenv ((char *) "a=1")) return 1; @@ -89,6 +91,7 @@ int unsetenv(); entry[0] = 'a'; unsetenv ("a"); if (getenv ("a")) return 3; + if (!unsetenv ("") || errno != EINVAL) return 4; ]])], [gl_cv_func_unsetenv_works=yes], [gl_cv_func_unsetenv_works=no], [gl_cv_func_unsetenv_works="guessing no"])]) -- 2.11.0