From 915849390e40c7008a9e6d1534bb476afae66f25 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Tue, 2 Nov 2004 12:29:39 +0000 Subject: [PATCH] Provide a return value for unsetenv() if the system doesn't. --- lib/ChangeLog | 5 +++++ lib/setenv.h | 12 ++++++++++-- m4/ChangeLog | 5 +++++ m4/setenv.m4 | 20 ++++++++++++++++++-- 4 files changed, 38 insertions(+), 4 deletions(-) diff --git a/lib/ChangeLog b/lib/ChangeLog index c73c45602f..0234704ee8 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,8 @@ +2004-11-02 Bruno Haible + + * setenv.h (unsetenv): Define as a macro if the system's unsetenv() + function returns void. + 2004-11-01 Paul Eggert * lib/getpass.c (fflush_unlocked, flockfile, funlockfile) diff --git a/lib/setenv.h b/lib/setenv.h index 1c69ac3e49..7ac5ae645a 100644 --- 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 @@ 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); diff --git a/m4/ChangeLog b/m4/ChangeLog index e94adf7a72..29dbfa32ba 100644 --- a/m4/ChangeLog +++ b/m4/ChangeLog @@ -1,3 +1,8 @@ +2004-11-02 Bruno Haible + + * setenv.m4 (gt_FUNC_SETENV): Define VOID_UNSETENV if unsetenv() + returns void. + 2004-11-01 Paul Eggert * m4/getpass.m4 (gl_PREREQ_GETPASS): Check for declarations of diff --git a/m4/setenv.m4 b/m4/setenv.m4 index 3b19a2943a..88d5e4c206 100644 --- 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 @@ 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 +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 ]) -- 2.30.2