changeset 5381:20b173a370ec

Provide a return value for unsetenv() if the system doesn't.
author Bruno Haible <bruno@clisp.org>
date Tue, 02 Nov 2004 12:29:39 +0000
parents 9cd2693d18a3
children 72833e3704a0
files lib/ChangeLog lib/setenv.h m4/ChangeLog m4/setenv.m4
diffstat 4 files changed, 38 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,8 @@
+2004-11-02  Bruno Haible  <bruno@clisp.org>
+
+	* setenv.h (unsetenv): Define as a macro if the system's unsetenv()
+	function returns void.
+
 2004-11-01  Paul Eggert  <eggert@cs.ucla.edu>
 
 	* lib/getpass.c (fflush_unlocked, flockfile, funlockfile)
--- a/lib/setenv.h
+++ b/lib/setenv.h
@@ -1,5 +1,5 @@
 /* Setting environment variables.
-   Copyright (C) 2001-2003 Free Software Foundation, Inc.
+   Copyright (C) 2001-2004 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -34,7 +34,15 @@
 
 #endif
 
-#if !HAVE_UNSETENV
+#if HAVE_UNSETENV
+
+# if VOID_UNSETENV
+/* On some systems, unsetenv() returns void.
+   This is the case for FreeBSD 4.8, NetBSD 1.6, OpenBSD 3.4.  */
+#  define unsetenv(name) ((unsetenv)(name), 0)
+# endif
+
+#else
 
 /* Remove the variable NAME from the environment.  */
 extern int unsetenv (const char *name);
--- a/m4/ChangeLog
+++ b/m4/ChangeLog
@@ -1,3 +1,8 @@
+2004-11-02  Bruno Haible  <bruno@clisp.org>
+
+	* setenv.m4 (gt_FUNC_SETENV): Define VOID_UNSETENV if unsetenv()
+	returns void.
+
 2004-11-01  Paul Eggert  <eggert@cs.ucla.edu>
 
 	* m4/getpass.m4 (gl_PREREQ_GETPASS): Check for declarations of
--- a/m4/setenv.m4
+++ b/m4/setenv.m4
@@ -1,5 +1,5 @@
-# setenv.m4 serial 4
-dnl Copyright (C) 2001-2003 Free Software Foundation, Inc.
+# setenv.m4 serial 5
+dnl Copyright (C) 2001-2004 Free Software Foundation, Inc.
 dnl This file is free software, distributed under the terms of the GNU
 dnl General Public License.  As a special exception to the GNU General
 dnl Public License, this file may be distributed as part of a program
@@ -14,6 +14,22 @@
   fi
   if test $ac_cv_func_unsetenv = no; then
     gl_PREREQ_UNSETENV
+  else
+    AC_CACHE_CHECK([for unsetenv() return type], gt_cv_func_unsetenv_ret,
+      [AC_TRY_COMPILE([#include <stdlib.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+int unsetenv (const char *name);
+#else
+int unsetenv();
+#endif
+], , gt_cv_func_unsetenv_ret='int', gt_cv_func_unsetenv_ret='void')])
+    if test $gt_cv_func_unsetenv_ret = 'void'; then
+      AC_DEFINE(VOID_UNSETENV, 1, [Define if unsetenv() returns void, not int.])
+    fi
   fi
 ])