Provide a return value for unsetenv() if the system doesn't.
authorBruno Haible <bruno@clisp.org>
Tue, 2 Nov 2004 12:29:39 +0000 (12:29 +0000)
committerBruno Haible <bruno@clisp.org>
Tue, 2 Nov 2004 12:29:39 +0000 (12:29 +0000)
lib/ChangeLog
lib/setenv.h
m4/ChangeLog
m4/setenv.m4

index c73c45602fa05dd8cf97e927f43aa3a62d765172..0234704ee8b9877ecce53d4a20f26a75b2f328de 100644 (file)
@@ -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)
index 1c69ac3e499f6f019e6090eb78400e346436c8bc..7ac5ae645a8f9a311168f2d5c121542966b8108b 100644 (file)
@@ -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 @@ extern int setenv (const char *name, const char *value, int replace);
 
 #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);
index e94adf7a7277cb6c643787688d65c718b8597028..29dbfa32ba8400800c0b2bf8d4d2915c4d5d1de6 100644 (file)
@@ -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
index 3b19a2943a854571590208edc09d0a3ad3be9be3..88d5e4c206697ed9bf98e040edfd603ec2213bf7 100644 (file)
@@ -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 @@ AC_DEFUN([gt_FUNC_SETENV],
   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
 ])