These functions set, unset, and fetch environment variables from the host
environment list.
For compatibility with differing environment conventions, the given arguments
name
and
value
may be appended and prepended, respectively, with an equal sign
\&=.
The
getenv();
function obtains the current value of the environment variable
name.
If the variable
name
is not in the current environment, a null pointer is returned.
The
setenv();
function inserts or resets the environment variable
name
in the current environment list.
If the variable
name
does not exist in the list, it is inserted with the given
value.
If the variable does exist, the argument
overwrite
is tested; if
overwrite
is zero, the variable is not reset, otherwise it is reset to the given
value.
The
putenv();
function takes an argument of the form
name.
The memory pointed to by
string
becomes part of the environment and must not be deallocated by the caller.
If the variable already exists, it will be overwritten.
A common source of bugs is to pass a
string
argument that is a locally scoped string buffer.
This will result in corruption of the environment after leaving
the scope in which the variable is defined.
For this reason, the
setenv();
function is preferred over
putenv();.
The
unsetenv();
function deletes all instances of the variable name pointed to by
name
from the list.
RETURN VALUES
These functions
return zero if successful; otherwise the global variable
errno
is set to indicate the error and \-1 is returned.
If
getenv();
is successful, the string returned should be considered read-only.
ERRORS
[EINVAL]
The
setenv();
or
unsetenv();
function was passed a
name
containing an
=
character.
The
putenv();
function was passed a
string
that did not contain an
=
character.
[ENOMEM]
The
setenv();
or
putenv();
function failed because it was unable to allocate memory for the environment.
The function
getenv();
appeared in
Version 7 AT&T UNIX
and
3BSD.
The functions
setenv();
and
unsetenv();
appeared in
4.3BSD-Tahoe.
The
putenv();
function appeared in
4.3BSD-Reno.