summaryrefslogtreecommitdiffstats
path: root/gl/setenv.c
diff options
context:
space:
mode:
Diffstat (limited to 'gl/setenv.c')
-rw-r--r--gl/setenv.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/gl/setenv.c b/gl/setenv.c
index ba760d6f..995a0f26 100644
--- a/gl/setenv.c
+++ b/gl/setenv.c
@@ -1,4 +1,4 @@
1/* Copyright (C) 1992, 1995-2003, 2005-2010 Free Software Foundation, Inc. 1/* Copyright (C) 1992, 1995-2003, 2005-2013 Free Software Foundation, Inc.
2 This file is part of the GNU C Library. 2 This file is part of the GNU C Library.
3 3
4 This program is free software: you can redistribute it and/or modify 4 This program is free software: you can redistribute it and/or modify
@@ -15,12 +15,13 @@
15 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 15 along with this program. If not, see <http://www.gnu.org/licenses/>. */
16 16
17#if !_LIBC 17#if !_LIBC
18# include <config.h>
19#endif
20
21/* Don't use __attribute__ __nonnull__ in this compilation unit. Otherwise gcc 18/* Don't use __attribute__ __nonnull__ in this compilation unit. Otherwise gcc
22 optimizes away the name == NULL test below. */ 19 optimizes away the name == NULL test below. */
23#define _GL_ARG_NONNULL(params) 20# define _GL_ARG_NONNULL(params)
21
22# define _GL_USE_STDLIB_ALLOC 1
23# include <config.h>
24#endif
24 25
25#include <alloca.h> 26#include <alloca.h>
26 27
@@ -48,7 +49,7 @@
48#endif 49#endif
49 50
50#if _LIBC 51#if _LIBC
51/* This lock protects against simultaneous modifications of `environ'. */ 52/* This lock protects against simultaneous modifications of 'environ'. */
52# include <bits/libc-lock.h> 53# include <bits/libc-lock.h>
53__libc_lock_define_initialized (static, envlock) 54__libc_lock_define_initialized (static, envlock)
54# define LOCK __libc_lock_lock (envlock) 55# define LOCK __libc_lock_lock (envlock)
@@ -64,10 +65,6 @@ __libc_lock_define_initialized (static, envlock)
64# define clearenv __clearenv 65# define clearenv __clearenv
65# define tfind __tfind 66# define tfind __tfind
66# define tsearch __tsearch 67# define tsearch __tsearch
67#else
68/* Use the system functions, not the gnulib overrides in this file. */
69# undef malloc
70# undef realloc
71#endif 68#endif
72 69
73/* In the GNU C library implementation we try to be more clever and 70/* In the GNU C library implementation we try to be more clever and
@@ -106,11 +103,11 @@ static void *known_values;
106static char **last_environ; 103static char **last_environ;
107 104
108 105
109/* This function is used by `setenv' and `putenv'. The difference between 106/* This function is used by 'setenv' and 'putenv'. The difference between
110 the two functions is that for the former must create a new string which 107 the two functions is that for the former must create a new string which
111 is then placed in the environment, while the argument of `putenv' 108 is then placed in the environment, while the argument of 'putenv'
112 must be used directly. This is all complicated by the fact that we try 109 must be used directly. This is all complicated by the fact that we try
113 to reuse values once generated for a `setenv' call since we can never 110 to reuse values once generated for a 'setenv' call since we can never
114 free the strings. */ 111 free the strings. */
115int 112int
116__add_to_environ (const char *name, const char *value, const char *combined, 113__add_to_environ (const char *name, const char *value, const char *combined,
@@ -302,7 +299,7 @@ setenv (const char *name, const char *value, int replace)
302 return __add_to_environ (name, value, NULL, replace); 299 return __add_to_environ (name, value, NULL, replace);
303} 300}
304 301
305/* The `clearenv' was planned to be added to POSIX.1 but probably 302/* The 'clearenv' was planned to be added to POSIX.1 but probably
306 never made it. Nevertheless the POSIX.9 standard (POSIX bindings 303 never made it. Nevertheless the POSIX.9 standard (POSIX bindings
307 for Fortran 77) requires this function. */ 304 for Fortran 77) requires this function. */
308int 305int
@@ -353,6 +350,9 @@ weak_alias (__clearenv, clearenv)
353#if HAVE_SETENV 350#if HAVE_SETENV
354 351
355# undef setenv 352# undef setenv
353# if !HAVE_DECL_SETENV
354extern int setenv (const char *, const char *, int);
355# endif
356# define STREQ(a, b) (strcmp (a, b) == 0) 356# define STREQ(a, b) (strcmp (a, b) == 0)
357 357
358int 358int