static int _env_array_update(char ***array_ptr, const char *name, const char *value, bool over_write) { char **ep = NULL; char *str = NULL; if (array_ptr == NULL) return 0; if (*array_ptr == NULL) *array_ptr = env_array_create(); ep = _find_name_in_env(*array_ptr, name); if (*ep != NULL) { if (!over_write) return 0; xfree (*ep); } else { ep = _extend_env(array_ptr); } xstrfmtcat(str, "%s=%s", name, value); *ep = str; return 1; }
static int _env_append (char ***envp, const char *name, const char *val) { char *entry = NULL; char **ep; if (val == NULL) val = ""; xstrfmtcat (entry, "%s=%s", name, val); if (entry == NULL) return (-1); ep = _extend_env (envp); *ep = entry; return (0); }