envz_add, envz_entry, envz_get, envz_merge, envz_remove, envz_strip — environment string support
#include <envz.h>
error_t envz_add( |
char ** | envz, |
| size_t * | envz_len, | |
| const char * | name, | |
| const char * | value); |
char
*envz_entry( |
const char * | envz, |
| size_t * | envz_len, | |
| const char * | name); |
char
*envz_get( |
const char * | envz, |
| size_t * | envz_len, | |
| const char * | name); |
error_t envz_merge( |
char ** | envz, |
| size_t * | envz_len, | |
| const char * | envz2, | |
| size_t | envz2_len, | |
| int | override); |
void
envz_remove( |
char ** | envz, |
| size_t * | envz_len, | |
| const char * | name); |
void
envz_strip( |
char ** | envz, |
| size_t * | envz_len); |
These functions are glibc-specific.
An argz vector is a pointer to a character buffer together with a length, see argz_add(3). An envz vector is a special argz vector, namely one where the strings have the form "name=value". Everything after the first '=' is considered to be the value. If there is no '=', the value is taken to be NULL. (While the value in case of a trailing '=' is the empty string "".)
These functions are for handling envz vectors.
envz_add() adds the string
"name=value" (in case value is non-NULL) or
"name" (in case
value is NULL) to the
envz vector (*envz,
*envz_len) and
updates *envz and
*envz_len. If an
entry with the same name existed, it is
removed.
envz_entry() looks for
name in the envz
vector (envz,
envz_len) and returns
the entry if found, or NULL if not.
envz_get() looks for
name in the envz
vector (envz,
envz_len) and returns
the value if found, or NULL if not. (Note that the value can
also be NULL, namely when there is an entry for name without '=' sign.)
envz_merge() adds each entry
in envz2 to
*envz, as if with
envz_add(). If override is true, then values
in envz2 will
supersede those with the same name in *envz, otherwise not.
envz_remove() removes the
entry for name from
(*envz, *envz_len) if there was one.
envz_strip() removes all
entries with value NULL.
All envz functions that do memory allocation have a return type of error_t, and return 0 for success, and ENOMEM if an allocation error occurs.
#include <stdio.h>
#include <stdlib.h>
#include <envz.h>
int
main(int argc, char *argv[], char *envp[])
{
int i, e_len = 0;
char *str;
for (i=0; envp[i] != NULL; i++)
e_len += strlen(envp[i]) + 1;
str = envz_entry(*envp, e_len, "HOME");
printf("%s\n", str);
str = envz_get(*envp, e_len, "HOME");
printf("%s\n", str);
exit(EXIT_SUCCESS);
}
This page is part of release 2.78 of the Linux man-pages project. A
description of the project, and information about reporting
bugs, can be found at
http://www.kernel.org/doc/man-pages/.
|
Copyright 2002 walter harms (walter.harmsinformatik.uni-oldenburg.de) Distributed under GPL based on the description in glibc source and infopages Corrections and additions, aeb |