OSDN Git Service

* update_web_docs_old: Copy from update_web_docs. Add comment
[pf3gnuchains/gcc-fork.git] / libiberty / setenv.c
index 8a039d1..79e38ed 100644 (file)
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, 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 <config.h>
 #endif
 
 #include "ansidecl.h"
+#include <sys/types.h> /* For `size_t' */
+#include <stdio.h>     /* For `NULL' */
 
 #include <errno.h>
 #if !defined(errno) && !defined(HAVE_ERRNO_DECL)
@@ -61,7 +79,7 @@ setenv (name, value, replace)
      const char *value;
      int replace;
 {
-  register char **ep;
+  register char **ep = 0;
   register size_t size;
   const size_t namelen = strlen (name);
   const size_t vallen = strlen (value) + 1;
@@ -70,11 +88,13 @@ setenv (name, value, replace)
 
   size = 0;
   if (__environ != NULL)
-    for (ep = __environ; *ep != NULL; ++ep)
-      if (!strncmp (*ep, name, namelen) && (*ep)[namelen] == '=')
-       break;
-      else
-       ++size;
+    {
+      for (ep = __environ; *ep != NULL; ++ep)
+       if (!strncmp (*ep, name, namelen) && (*ep)[namelen] == '=')
+         break;
+       else
+         ++size;
+    }
 
   if (__environ == NULL || *ep == NULL)
     {