46 for (
char **p = *envp; p && *p; p++)
65 for (src = envp; src && *src; src++)
69 for (src = envp, dst = env_copy; src && *src; src++, dst++)
87bool envlist_set(
char ***envp,
const char *name,
const char *value,
bool overwrite)
89 if (!envp || !*envp || !name || (name[0] ==
'\0'))
96 for (; (str = (*envp)[count]); count++)
99 if ((len != 0) && (str[len] ==
'='))
109 char work[1024] = { 0 };
110 snprintf(work,
sizeof(work),
"%s=%s", name,
NONULL(value));
122 (*envp)[count + 1] = NULL;
137 if (!envp || !*envp || !name || (name[0] ==
'\0'))
141 for (; (*envp)[count]; count++)
145 for (
int match = 0; (str = (*envp)[match]); match++)
148 if ((len != 0) && (str[len] ==
'='))
150 FREE(&(*envp)[match]);
152 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.
void * mutt_mem_calloc(size_t nmemb, size_t size)
Allocate zeroed memory on the heap.
void mutt_mem_realloc(void *ptr, size_t size)
Resize a block of memory on the heap.
Memory management wrappers.
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.
char * mutt_str_replace(char **p, const char *s)
Replace one string with another.
String manipulation functions.