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