diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:54:44 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:54:44 -0400 |
| commit | a9157ce950dfe2fc30795d43b9d79b9d1bffc48b (patch) | |
| tree | 9df484304b560466d145e662c1c254ff0e9ae0ba /static/openbsd/man3/getenv.3 | |
| parent | 160aa82b2d39c46ad33723d7d909cb4972efbb03 (diff) | |
docs: Added All OpenBSD Manuals
Diffstat (limited to 'static/openbsd/man3/getenv.3')
| -rw-r--r-- | static/openbsd/man3/getenv.3 | 191 |
1 files changed, 191 insertions, 0 deletions
diff --git a/static/openbsd/man3/getenv.3 b/static/openbsd/man3/getenv.3 new file mode 100644 index 00000000..5a219a5c --- /dev/null +++ b/static/openbsd/man3/getenv.3 @@ -0,0 +1,191 @@ +.\" Copyright (c) 1988, 1991, 1993 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" This code is derived from software contributed to Berkeley by +.\" the American National Standards Committee X3, on Information +.\" Processing Systems. +.\" +.\" 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. 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 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. +.\" +.\" $OpenBSD: getenv.3,v 1.23 2022/08/08 22:40:03 millert Exp $ +.\" +.Dd $Mdocdate: August 8 2022 $ +.Dt GETENV 3 +.Os +.Sh NAME +.Nm getenv , +.Nm putenv , +.Nm setenv , +.Nm unsetenv +.Nd environment variable functions +.Sh SYNOPSIS +.In 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 "char *string" +.Ft int +.Fn unsetenv "const char *name" +.Sh DESCRIPTION +These functions set, unset, and fetch environment variables from the host +.Em environment list . +.Pp +The +.Fn getenv +function obtains the current value of the environment variable +.Fa name . +If the variable +.Fa name +is not in the current environment, a null pointer is returned. +.Pp +The +.Fn 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 . +.Pp +The +.Fn putenv +function takes an argument of the form +.Ar name Ns = Ns Ar value . +The memory pointed to by +.Ar 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 +.Ar 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 +.Fn setenv +function is preferred over +.Fn putenv . +.Pp +The +.Fn unsetenv +function deletes all instances of the variable name pointed to by +.Fa name +from the list. +.Sh RETURN VALUES +.Rv -std putenv setenv unsetenv +.Pp +The +.Fn getenv +function returns a pointer to the requested value, or +.Dv NULL +if it could not be found. +If +.Fn getenv +is successful, the string returned should be considered read-only. +.Sh ERRORS +.Bl -tag -width Er +.It Bq Er EINVAL +The +.Fn setenv +or +.Fn unsetenv +function was passed an empty +.Ar name +or a NULL pointer, or was passed a +.Ar name +containing an +.Sq = +character. +.Pp +The +.Fn putenv +function was passed a +.Ar string +that did not contain an +.Sq = +character, or was passed a +.Ar string +that started with the +.Sq = +character. +.It Bq Er ENOMEM +The +.Fn setenv +or +.Fn putenv +function failed because it was unable to allocate memory for the environment. +.El +.Sh SEE ALSO +.Xr csh 1 , +.Xr sh 1 , +.Xr execve 2 , +.Xr issetugid 2 , +.Xr environ 7 +.Sh STANDARDS +The +.Fn getenv +function conforms to +.St -ansiC . +The +.Fn putenv , +.Fn setenv , +and +.Fn unsetenv +functions conform to +.St -p1003.1-2008 . +.Sh HISTORY +The function +.Fn getenv +appeared in +.At v7 +and +.Bx 3 . +The functions +.Fn setenv +and +.Fn unsetenv +appeared in +.Bx 4.3 Tahoe . +The +.Fn putenv +function first appeared in +.At V.2 +and was reimplemented for +.Bx 4.3 Reno . +.Sh CAVEATS +Library code must be careful about using +.Fn getenv +to read untrusted environment variables in setuid programs. +The +.Fn issetugid +function is provided for this purpose. |
