source: branches/libc-0.6/src/binutils/libiberty/putenv.c

Last change on this file was 610, checked in by bird, 22 years ago

This commit was generated by cvs2svn to compensate for changes in r609,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 2.2 KB
Line 
1/* Copyright (C) 1991, 1994, 1995, 1996, 2002 Free Software Foundation, Inc.
2 This file based on putenv.c in the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public License as
6 published by the Free Software Foundation; either version 2 of the
7 License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
13
14 You should have received a copy of the GNU Library General Public
15 License along with the GNU C Library; see the file COPYING.LIB. If not,
16 write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 Boston, MA 02111-1307, USA. */
18
19/*
20
21@deftypefn Supplemental int putenv (const char *@var{string})
22
23Uses @code{setenv} or @code{unsetenv} to put @var{string} into
24the environment or remove it. If @var{string} is of the form
25@samp{name=value} the string is added; if no @samp{=} is present the
26name is unset/removed.
27
28@end deftypefn
29
30*/
31
32#if defined (_AIX) && !defined (__GNUC__)
33 #pragma alloca
34#endif
35
36#if HAVE_CONFIG_H
37# include <config.h>
38#endif
39
40#include "ansidecl.h"
41
42#define putenv libiberty_putenv
43
44#if HAVE_STDLIB_H
45# include <stdlib.h>
46#endif
47#if HAVE_STRING_H
48# include <string.h>
49#endif
50
51#ifdef HAVE_ALLOCA_H
52# include <alloca.h>
53#else
54# ifndef alloca
55# ifdef __GNUC__
56# define alloca __builtin_alloca
57# else
58extern char *alloca ();
59# endif /* __GNUC__ */
60# endif /* alloca */
61#endif /* HAVE_ALLOCA_H */
62
63#undef putenv
64
65/* Below this point, it's verbatim code from the glibc-2.0 implementation */
66
67
68/* Put STRING, which is of the form "NAME=VALUE", in the environment. */
69int
70putenv (string)
71 const char *string;
72{
73 const char *const name_end = strchr (string, '=');
74
75 if (name_end)
76 {
77 char *name = (char *) alloca (name_end - string + 1);
78 memcpy (name, string, name_end - string);
79 name[name_end - string] = '\0';
80 return setenv (name, name_end + 1, 1);
81 }
82
83 unsetenv (string);
84 return 0;
85}
Note: See TracBrowser for help on using the repository browser.