BSD 4_3_Net_2 release
[unix-history] / usr / src / lib / libc / stdlib / getenv.3
index 4c83142..c5d5621 100644 (file)
-.\" Copyright (c) 1988 The Regents of the University of California.
+.\" Copyright (c) 1988, 1991 The Regents of the University of California.
 .\" All rights reserved.
 .\"
 .\" All rights reserved.
 .\"
-.\" Redistribution and use in source and binary forms are permitted
-.\" provided that: (1) source distributions retain this entire copyright
-.\" notice and comment, and (2) distributions including binaries display
-.\" the following acknowledgement:  ``This product includes software
-.\" developed by the University of California, Berkeley and its contributors''
-.\" in the documentation or other materials provided with the distribution
-.\" and in all advertising materials mentioning features or use of this
-.\" software. Neither the name of the University nor the names of its
-.\" contributors may be used to endorse or promote products derived
-.\" from this software without specific prior written permission.
-.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
-.\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+.\" This code is derived from software contributed to Berkeley by
+.\" the American National Standards Committee X3, on Information
+.\" Processing Systems.
 .\"
 .\"
-.\"    @(#)getenv.3    6.9 (Berkeley) 5/17/90
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"    This product includes software developed by the University of
+.\"    California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
 .\"
 .\"
-.TH GETENV 3 "May 17, 1990"
-.AT 3
-.SH NAME
-getenv, putenv, setenv, unsetenv \- manipulate environmental variables
-.SH SYNOPSIS
-.nf
-.ft B
-#include <stdlib.h>
-
-char *
-getenv(const char *name);
-
-setenv(const char *name, const char *value, int overwrite);
-
-putenv(const char *string);
-
-void
-unsetenv(const char *name);
-.ft R
-.fi
-.SH DESCRIPTION
-.I Getenv
-searches the environment list (see
-.IR environ (7))
-for a string of the form \fIname\fP\fB=\fP\fIvalue\fP and returns
-a pointer to the string
-.I value
-if such a string is present, and a NULL pointer if it is not.
-.PP
-.I Setenv
-searches the environment list as
-.I getenv
-does; if the string
-.I name
-is not found, a string of the form \fIname\fP\fB=\fP\fIvalue\fP is
-added to the environment.
-If it is found, and
-.I overwrite
-is non-zero, its value is changed to
-.IR value .
-.I Setenv
-returns 0 on success and -1 on failure, setting the external variable
-.IR errno .
-.PP
-.I Putenv
-takes an argument of the form ``\fIname\fR=\fIvalue\fR'' and is the
-equivalent of:
-.sp
-.RS
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)getenv.3   6.11 (Berkeley) 6/29/91
+.\"
+.Dd June 29, 1991
+.Dt GETENV 3
+.Os
+.Sh NAME
+.Nm getenv ,
+.Nm putenv ,
+.Nm setenv ,
+.Nm unsetenv
+.Nd environment variable functions
+.Sh SYNOPSIS
+.Fd #include <stdlib.h>
+.Ft char *
+.Fn getenv "const char *name"
+.Ft int
+.Fn setenv "const char *name" "const char *value" "int overwrite"
+.Ft int
+.Fn putenv "const char *string"
+.Ft void
+.Fn unsetenv "const char *name"
+.Sh DESCRIPTION
+These functions set, unset and fetch environment variables from the
+host
+.Em environment list .
+For compatibility with differing environment conventions,
+the given arguments
+.Ar name
+and
+.Ar value
+may be appended and prepended, 
+respectively,
+with an equal sign
+.Dq Li \&= .
+.Pp
+The
+.Fn getenv
+function obtains the current value of the environment variable,
+.Ar name .
+If the variable
+.Ar name
+is not in the current environment ,
+a null pointer is returned.
+.Pp
+The
+.Fn setenv
+function inserts or resets the environment variable
+.Ar name
+in the current environment list.
+If the variable
+.Ar name
+does not exist in the list,
+it is inserted with the given
+.Ar value.
+If the variable does exist, the argument
+.Ar overwrite
+is tested; if
+.Ar overwrite is
+zero, the
+variable is not reset, otherwise it is reset
+to the given
+.Ar value .
+.Pp
+The
+.Fn putenv
+function
+performs the equivalent of:
+.Bd -literal -offset indent
 setenv(name, value, 1);
 setenv(name, value, 1);
-.RE
-.PP
-.I Unsetenv
-removes all occurrences of the string
-.I name
-from the environment.
-There is no library provision for completely removing the current
-environment.
-It is suggested that the following code be used to do so.
-.sp
-.RS
-.nf
-static char    *envinit[1];
-extern char    **environ;
-environ = envinit;
-.fi
-.RE
-.PP
-All of these routines permit, but do not require, a trailing equals
-(``='') sign on
-.I name
-or a leading equals sign on
-.IR value .
-.SH ERRORS
-.TP
-[ENOMEM]
-.I Setenv
+.Ed
+.Pp
+The
+.Fn unsetenv
+function
+deletes all instances of the variable name pointed to by
+.Fa name
+from the list.
+.Sh RETURN VALUES
+The functions
+.Fn setenv
+and
+.Fn putenv
+return zero if successful; otherwise the global variable
+.Va errno
+is set to indicate the error and a
+\-1 is returned.
+.Sh ERRORS
+.Bl -tag -width [ENOMEM]
+.It Bq Er ENOMEM
+The function
+.Fn setenv
 or
 or
-.I putenv
+.Fn putenv
 failed because they were unable to allocate memory for the environment.
 failed because they were unable to allocate memory for the environment.
-.SH SEE ALSO
-csh(1), sh(1), execve(2), environ(7)
-.SH STANDARDS
-.B Getenv
-conforms to ANSI X3.159-1989 (``ANSI C'').
+.El
+.Sh SEE ALSO
+.Xr csh 1 ,
+.Xr sh 1 ,
+.Xr execve 2 ,
+.Xr environ 7
+.Sh STANDARDS
+The
+.Fn getenv
+function conforms to
+.St -ansiC .
+.Sh HISTORY
+The functions
+.Fn setenv
+and
+.Fn unsetenv
+appeared in
+.At v7 .
+The
+.Fn putenv
+function appeared in
+.Bx 4.3 Reno .