rpm  5.4.15
envvar.h
Go to the documentation of this file.
1 #ifndef H_ENVVAR
2 #define H_ENVVAR
3 
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11 
12 #if !defined(HAVE_CLEARENV) || defined(__LCLINT__)
13 /*@-globstate@*/ /*@ XXX annotate environ. @*/
14 static inline
15 int clearenv(void)
16  /*@globals environ @*/
17  /*@modifies environ @*/
18 {
19  environ = NULL;
20  return 0;
21 }
22 /*@=globstate@*/
23 #endif
24 
25 /*@unused@*/
26 static inline
27 /*@observer@*/ /*@null@*/
28 const char * envGet(const char *name)
29  /*@*/
30 {
31  const char * s = getenv(name);
32  return s;
33 }
34 
35 /*@unused@*/
36 static inline
37 int envPut(/*@null@*/ const char *name, /*@null@*/ const char *value)
38  /*@*/
39 {
40 /*@kept@*/
41  char *t;
42  char *te;
43  size_t nb = 0;
44  int rc;
45 
46  if (name && !*name)
47  name = NULL;
48  if (value && !*value)
49  value = NULL;
50  if (name == NULL && value == NULL) {
51  rc = clearenv();
52  return rc;
53  }
54 
55  if (name)
56  nb += strlen(name);
57  if (value)
58  nb += strlen(value) + 1;
59  t = te = (char *) xmalloc(nb + 1);
60  *te = '\0';
61  if (name)
62  te = stpcpy(te, name);
63  if (value)
64  te = stpcpy( stpcpy(te, "="), value);
65  *te = '\0';
66 
67  rc = putenv(t);
68  return rc;
69 }
70 
71 #ifdef __cplusplus
72 }
73 #endif
74 
75 #endif /* H_ENVVAR */
char * getenv(const char *name)
char ** environ
static const char * envGet(const char *name)
Definition: envvar.h:28
static int clearenv(void)
Definition: envvar.h:15
static int envPut(const char *name, const char *value)
Definition: envvar.h:37
char * stpcpy(char *dest, const char *src)
static const char * name
#define xmalloc
Definition: system.h:32