47 for (
char **p = *envp; p && *p; p++)
66 for (src = envp; src && *src; src++)
70 for (src = envp, dst = env_copy; src && *src; src++, dst++)
88bool envlist_set(
char ***envp,
const char *name,
const char *value,
bool overwrite)
90 if (!envp || !*envp || !name || (name[0] ==
'\0'))
97 for (; (str = (*envp)[count]); count++)
100 if ((len != 0) && (str[len] ==
'='))
110 const char *val =
NONULL(value);
114 snprintf(work, nlen + 1 + vlen + 1,
"%s=%s", name, val);
119 FREE(&(*envp)[match]);
120 (*envp)[match] = work;
126 (*envp)[count] = work;
127 (*envp)[count + 1] = NULL;
142 if (!envp || !*envp || !name || (name[0] ==
'\0'))
146 for (; (*envp)[count]; count++)
150 for (
int match = 0; (str = (*envp)[match]); match++)
153 if ((len != 0) && (str[len] ==
'='))
155 FREE(&(*envp)[match]);
157 memmove(&(*envp)[match], &(*envp)[match + 1], (count - match) *
sizeof(
char *));
void envlist_free(char ***envp)
Free the private copy of the environment.
char ** envlist_init(char **envp)
Create a copy of the environment.
bool envlist_set(char ***envp, const char *name, const char *value, bool overwrite)
Set an environment variable.
bool envlist_unset(char ***envp, const char *name)
Unset an environment variable.
Private copy of the environment variables.
Memory management wrappers.
#define FREE(x)
Free memory and set the pointer to NULL.
#define MUTT_MEM_CALLOC(n, type)
#define MUTT_MEM_REALLOC(pptr, n, type)
#define MUTT_MEM_MALLOC(n, type)
char * mutt_str_dup(const char *str)
Copy a string, safely.
size_t mutt_str_startswith(const char *str, const char *prefix)
Check whether a string starts with a prefix.
size_t mutt_str_len(const char *a)
Calculate the length of a string, safely.
String manipulation functions.