1 .\" Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de)
2 .\" Distributed under GPL
3 .\" based on the description in glibc source and infopages
5 .\" Corrections and additions, aeb
8 envz_add, envz_entry, envz_get, envz_merge,
9 envz_remove, envz_strip \- environment string support
13 .B "#include <envz.h>"
16 .BI "envz_add(char **" envz ", size_t *" envz_len ,
18 .BI "const char *" name ", const char *" value );
21 .BI "envz_entry(const char *" envz ", size_t *" envz_len ", const char *" name );
24 .BI "envz_get(const char *" envz ", size_t *" envz_len ", const char *" name );
27 .BI "envz_merge(char **" envz ", size_t *" envz_len ,
29 .BI "const char *" envz2 ", size_t " envz2_len ", int " override );
32 .BI "envz_remove(char **" envz ", size_t *" envz_len ", const char *" name );
35 .BI "envz_strip(char **" envz ", size_t *" envz_len );
37 These functions are glibc-specific.
39 An argz vector is a pointer to a character buffer together with a length,
42 An envz vector is a special argz vector, namely one where the strings
43 have the form "name=value".
44 Everything after the first '=' is considered
46 If there is no '=', the value is taken to be NULL.
47 (While the value in case of a trailing '=' is the empty string "".)
49 These functions are for handling envz vectors.
53 .RI \&" name = value \&"
60 is NULL) to the envz vector
61 .RI (* envz ,* envz_len )
66 If an entry with the same
68 existed, it is removed.
74 .RI ( envz , envz_len )
75 and returns the entry if found, or NULL if not.
81 .RI ( envz , envz_len )
82 and returns the value if found, or NULL if not.
83 (Note that the value can also be NULL, namely when there is
97 is true, then values in
99 will supersede those with the same name in
104 removes the entry for
107 .RI (* envz ,* envz_len )
111 removes all entries with value NULL.
113 All envz functions that do memory allocation have a return type of
114 \fIerror_t\fP, and return 0 for success, and \fBENOMEM\fP
115 if an allocation error occurs.
123 main(int argc, char *argv[], char *envp[])
128 for (i=0; envp[i] != NULL; i++)
129 e_len += strlen(envp[i]) + 1;
131 str = envz_entry(*envp, e_len, "HOME");
132 printf("%s\en", str);
133 str = envz_get(*envp, e_len, "HOME");
134 printf("%s\en", str);
139 These functions are a GNU extension.