1.fp 5 CW 2.de Af 3.ds ;G \\*(;G\\f\\$1\\$3\\f\\$2 4.if !\\$4 .Af \\$2 \\$1 "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9" 5.. 6.de aF 7.ie \\$3 .ft \\$1 8.el \{\ 9.ds ;G \& 10.nr ;G \\n(.f 11.Af "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9" 12\\*(;G 13.ft \\n(;G \} 14.. 15.de L 16.aF 5 \\n(.f "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" 17.. 18.de LR 19.aF 5 1 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" 20.. 21.de RL 22.aF 1 5 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" 23.. 24.de EX \" start example 25.ta 1i 2i 3i 4i 5i 6i 26.PP 27.RS 28.PD 0 29.ft 5 30.nf 31.. 32.de EE \" end example 33.fi 34.ft 35.PD 36.RE 37.PP 38.. 39.TH LIBAST 3 40.SH NAME 41setenviron \- set environment value 42.SH SYNOPSIS 43.EX 44#include <ast.h> 45 46char* setenviron(const char* \fIkey\fP); 47.EE 48.SH DESCRIPTION 49.L setenviron 50controls environment 51.I name=value 52pairs. 53.L setenviron("\fIname=value\fP") 54adds 55.I name 56to the environment and returns a pointer to a 57.IR strdup (3) 58copy of 59.IR name=value . 60.L setenviron("\fIname\fP") 61removes 62.I name 63from the environment and returns the empty string. 64.L setenviron(0) 65reserves a few slots in an internal array and is usually called by 66a parent process that expects many children. 670 is returned on error. 68.L setenviron 69preserves the 70.IR ksh (1) 71convention of 72.L _ 73as the first environment variable name. 74.SH "SEE ALSO" 75env(1), exec(2) 76.SH BUGS 77POSIX will eventually settle on an interface. 78It has already picked a few of the names we did in .2 drafts. 79This is about the third name change for ours. 80