From bb8a3a0c37e6a61c47c2c720b96be963abcdaf4e Mon Sep 17 00:00:00 2001 From: "Christopher J. Morrone" <morrone2@llnl.gov> Date: Mon, 8 Jan 2007 23:18:59 +0000 Subject: [PATCH] Split env_array_append into env_array_append and env_array_append_fmt. --- src/common/env.c | 41 +++++++++++++++++++++++++++++++++++++++-- src/common/env.h | 16 +++++++++++++++- 2 files changed, 54 insertions(+), 3 deletions(-) diff --git a/src/common/env.c b/src/common/env.c index aa9f80dd55c..ba84a3b8d51 100644 --- a/src/common/env.c +++ b/src/common/env.c @@ -907,10 +907,12 @@ char **env_array_create(void) * if and only if a variable by that name does not already exist in the * array. * + * "value_fmt" supports printf-style formatting. + * * Return 1 on success, and 0 on error. */ -int env_array_append(char ***array_ptr, const char *name, - const char *value_fmt, ...) +int env_array_append_fmt(char ***array_ptr, const char *name, + const char *value_fmt, ...) { char buf[BUFSIZ]; char **ep = NULL; @@ -942,12 +944,47 @@ int env_array_append(char ***array_ptr, const char *name, return 1; } +/* + * Append a single environment variable to an environment variable array, + * if and only if a variable by that name does not already exist in the + * array. + * + * Return 1 on success, and 0 on error. + */ +int env_array_append(char ***array_ptr, const char *name, + const char *value) +{ + 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) { + return 0; + } + + xstrfmtcat (str, "%s=%s", name, value); + ep = _extend_env(array_ptr); + *ep = str; + + return 1; +} + /* * Append a single environment variable to an environment variable array * if a variable by that name does not already exist. If a variable * by the same name is found in the array, it is overwritten with the * new value. * + * "value_fmt" supports printf-style formatting. + * * Return 1 on success, and 0 on error. */ int env_array_overwrite_fmt(char ***array_ptr, const char *name, diff --git a/src/common/env.h b/src/common/env.h index 5d5f46d4bc2..f84a7acaef0 100644 --- a/src/common/env.h +++ b/src/common/env.h @@ -188,7 +188,19 @@ void env_array_free(char **env_array); * Return 1 on success, and 0 on error. */ int env_array_append(char ***array_ptr, const char *name, - const char *value_fmt, ...); + const char *value); + +/* + * Append a single environment variable to an environment variable array, + * if and only if a variable by that name does not already exist in the + * array. + * + * "value_fmt" supports printf-style formatting. + * + * Return 1 on success, and 0 on error. + */ +int env_array_append_fmt(char ***array_ptr, const char *name, + const char *value_fmt, ...); /* * Append a single environment variable to an environment variable array @@ -207,6 +219,8 @@ int env_array_overwrite(char ***array_ptr, const char *name, * by the same name is found in the array, it is overwritten with the * new value. The "value_fmt" string may contain printf-style options. * + * "value_fmt" supports printf-style formatting. + * * Return 1 on success, and 0 on error. */ int env_array_overwrite_fmt(char ***array_ptr, const char *name, -- GitLab