#include <stdlib.h> char *
getenv (const char *name); int
setenv (const char *name const char *value int overwrite); int
putenv (char *string); int
unsetenv (const char *name);
DESCRIPTION
These functions set, unset and fetch environment variables from the
host
environment list
The
getenv ();
function obtains the current value of the environment variable,
Fa name .
The application should not modify the string pointed
to by the
getenv ();
function.
The
setenv ();
function inserts or resets the environment variable
Fa name
in the current environment list.
If the variable
Fa name
does not exist in the list,
it is inserted with the given
Fa value .
If the variable does exist, the argument
Fa overwrite
is tested; if
Fa overwrite
is zero, the
variable is not reset, otherwise it is reset
to the given
Fa value .
The
putenv ();
function takes an argument of the form ``name=value'' and
puts it directly into the current environment,
so altering the argument shall change the environment.
If the variable
Fa name
does not exist in the list,
it is inserted with the given
Fa value .
If the variable
Fa name
does exist, it is reset to the given
Fa value .
The
unsetenv ();
function
deletes all instances of the variable name pointed to by
Fa name
from the list.
RETURN VALUES
The
getenv ();
function returns the value of the environment variable as a
NUL -terminated string.
If the variable
Fa name
is not in the current environment,
NULL
is returned.
Rv -std setenv putenv unsetenv
ERRORS
Bq Er EINVAL
The function
getenv (,);
setenv ();
or
unsetenv ();
failed because the
Fa name
is a
NULL
pointer, points to an empty string, or points to a string containing an
``=
''
character.
The function
putenv ();
failed because
Fa string
is a
NULL
pointer,
Fa string is without an
``=
''
character or
``=
''
is the first character in
Fa string .
This does not follow the
POSIX
specification.
Bq Er ENOMEM
The function
setenv (,);
unsetenv ();
or
putenv ();
failed because they were unable to allocate memory for the environment.
Bq Er EFAULT
The functions
setenv (,);
unsetenv ();
or
putenv ();
failed to make a valid copy of the environment due to the environment being
corrupt (i.e., a name without a value). A warning will be output to stderr with
information about the issue.
The
getenv ();
function conforms to
St -isoC .
The
setenv (,);
putenv ();
and
unsetenv ();
functions conforms to
St -p1003.1-2001 .
HISTORY
The functions
setenv ();
and
unsetenv ();
appeared in
AT&T System
v7 .
The
putenv ();
function appeared in
BSD 4.3 Reno
Until
Fx 7.0 ,
putenv ();
would make a copy of
Fa string
and insert it into the environment using
setenv (.);
This was changed to use
Fa string
as the memory location of the ``name=value'' pair to follow the
POSIX
specification.
BUGS
Successive calls to
setenv ();
that assign a larger-sized
Fa value
than any previous value to the same
Fa name
will result in a memory leak.
The
Fx semantics for this function
(namely, that the contents of
Fa value
are copied and that old values remain accessible indefinitely) make this
bug unavoidable.
Future versions may eliminate one or both of these
semantic guarantees in order to fix the bug.