Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | --- getenv.3 2004-11-25 11:38:41.000000000 -0800 +++ getenv.3.edit 2006-09-17 20:33:52.000000000 -0700 @@ -50,13 +50,23 @@ .Sh SYNOPSIS .In stdlib.h .Ft char * -.Fn getenv "const char *name" +.Fo getenv +.Fa "const char *name" +.Fc .Ft int -.Fn setenv "const char *name" "const char *value" "int overwrite" +.Fo putenv +.Fa "char *string" +.Fc .Ft int -.Fn putenv "const char *string" -.Ft void -.Fn unsetenv "const char *name" +.Fo setenv +.Fa "const char *name" +.Fa "const char *value" +.Fa "int overwrite" +.Fc +.Ft int +.Fo unsetenv +.Fa "const char *name" +.Fc .Sh DESCRIPTION These functions set, unset and fetch environment variables from the host @@ -104,12 +114,26 @@ setenv(name, value, 1); .Ed .Pp +The string pointed to by +.Fa string +becomes part of the environment. +A program should not alter or free the string, +and should not use stack or other transient string variables +as arguments to +.Fn putenv . +The +.Fn setenv +function is strongly preferred to +.Fn putenv . +.Pp The .Fn unsetenv function deletes all instances of the variable name pointed to by .Fa name from the list. +Note that only the variable name (e.g., "NAME") should be given; +"NAME=value" will not work. .Sh RETURN VALUES The .Fn getenv @@ -122,20 +146,60 @@ .Dv NULL is returned. .Pp -.Rv -std setenv putenv +.Rv -std setenv putenv unsetenv .Sh ERRORS .Bl -tag -width Er +.It Bq Er EINVAL +The function +.Fn unsetenv +failed because +.Fa name +was not found in the environment list. .It Bq Er ENOMEM The function .Fn setenv or .Fn putenv -failed because they were unable to allocate memory for the environment. +failed because it was unable to allocate memory for the environment. .El +.Sh LEGACY SYNOPSIS +.Fd #include <stdlib.h> +.Pp +.Ft void +.br +.Fo unsetenv +.Fa "const char *name" +.Fc ; +.Pp +.Fn unsetenv +doesn't return a value. +.Sh COMPATIBILITY +.Fn putenv +no longer copies its input buffer. +This often appears in crash logs as a crash in +.Fn getenv . +Avoid passing local buffers or freeing the memory +that is passed to +.Fn putenv . +Use +.Fn setenv , +which still makes an internal copy of its buffers. +.Pp +.Fn unsetenv +no longer parses the variable name; +e.g., unsetenv ("FOO=BAR") no longer works. +Use unsetenv("FOO"). +.Fn unsetenv +also now returns a status value and will set +.Va errno +to EINVAL if +.Fa name +is not a defined environment variable. .Sh SEE ALSO .Xr csh 1 , .Xr sh 1 , .Xr execve 2 , +.Xr compat 5 , .Xr environ 7 .Sh STANDARDS The |