X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=libiberty%2Fsetenv.c;h=355af5a9dd673831c4feb0f45630feeb252294a9;hb=969757fa73cfba4014675753d3aa389108df5fa1;hp=f025716e7f5fc0a2e929a289eb7c4051a2e5ea0a;hpb=bb37062f41610518ad294049736488e122906ea6;p=pf3gnuchains%2Fgcc-fork.git diff --git a/libiberty/setenv.c b/libiberty/setenv.c index f025716e7f5..355af5a9dd6 100644 --- a/libiberty/setenv.c +++ b/libiberty/setenv.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1992, 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1992, 1995, 1996, 1997, 2002 Free Software Foundation, Inc. This file based on setenv.c in the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -13,13 +13,32 @@ You should have received a copy of the GNU Library General Public License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor, + Boston, MA 02110-1301, USA. */ + + +/* + +@deftypefn Supplemental int setenv (const char *@var{name}, const char *@var{value}, int @var{overwrite}) +@deftypefnx Supplemental void unsetenv (const char *@var{name}) + +@code{setenv} adds @var{name} to the environment with value +@var{value}. If the name was already present in the environment, +the new value will be stored only if @var{overwrite} is nonzero. +The companion @code{unsetenv} function removes @var{name} from the +environment. This implementation is not safe for multithreaded code. + +@end deftypefn + +*/ #if HAVE_CONFIG_H # include #endif +#define setenv libiberty_setenv +#define unsetenv libiberty_unsetenv + #include "ansidecl.h" #include /* For `size_t' */ #include /* For `NULL' */ @@ -45,6 +64,9 @@ extern int errno; extern char **environ; #endif +#undef setenv +#undef unsetenv + /* LOCK and UNLOCK are defined as no-ops. This makes the libiberty * implementation MT-Unsafe. */ #define LOCK @@ -58,10 +80,7 @@ static char **last_environ; int -setenv (name, value, replace) - const char *name; - const char *value; - int replace; +setenv (const char *name, const char *value, int replace) { register char **ep = 0; register size_t size; @@ -96,7 +115,7 @@ setenv (name, value, replace) return -1; } - new_environ[size] = malloc (namelen + 1 + vallen); + new_environ[size] = (char *) malloc (namelen + 1 + vallen); if (new_environ[size] == NULL) { free ((char *) new_environ); @@ -123,13 +142,13 @@ setenv (name, value, replace) if (len + 1 < namelen + 1 + vallen) { /* The existing string is too short; malloc a new one. */ - char *new = malloc (namelen + 1 + vallen); - if (new == NULL) + char *new_string = (char *) malloc (namelen + 1 + vallen); + if (new_string == NULL) { UNLOCK; return -1; } - *ep = new; + *ep = new_string; } memcpy (*ep, name, namelen); (*ep)[namelen] = '='; @@ -142,8 +161,7 @@ setenv (name, value, replace) } void -unsetenv (name) - const char *name; +unsetenv (const char *name) { const size_t len = strlen (name); char **ep;