libsa: cstyle cleanup for environment.c

No functional changes.
This commit is contained in:
Toomas Soome 2020-08-19 15:20:33 +00:00
parent 101d33b8fb
commit 16aabe28c6

View File

@ -47,12 +47,12 @@ struct env_var *environ = NULL;
struct env_var *
env_getenv(const char *name)
{
struct env_var *ev;
struct env_var *ev;
for (ev = environ; ev != NULL; ev = ev->ev_next)
if (!strcmp(ev->ev_name, name))
break;
return(ev);
for (ev = environ; ev != NULL; ev = ev->ev_next)
if (!strcmp(ev->ev_name, name))
break;
return (ev);
}
/*
@ -65,160 +65,159 @@ env_getenv(const char *name)
*/
int
env_setenv(const char *name, int flags, const void *value,
ev_sethook_t sethook, ev_unsethook_t unsethook)
ev_sethook_t sethook, ev_unsethook_t unsethook)
{
struct env_var *ev, *curr, *last;
struct env_var *ev, *curr, *last;
if ((ev = env_getenv(name)) != NULL) {
/*
* If there's a set hook, let it do the work (unless we are working
* for one already.
*/
if ((ev->ev_sethook != NULL) && !(flags & EV_NOHOOK))
return (ev->ev_sethook(ev, flags, value));
if ((ev = env_getenv(name)) != NULL) {
/*
* If there's a set hook, let it do the work
* (unless we are working for one already).
*/
if ((ev->ev_sethook != NULL) && !(flags & EV_NOHOOK))
return (ev->ev_sethook(ev, flags, value));
/* If there is data in the variable, discard it. */
if (ev->ev_value != NULL && (ev->ev_flags & EV_DYNAMIC) != 0)
free(ev->ev_value);
ev->ev_value = NULL;
ev->ev_flags &= ~EV_DYNAMIC;
/* If there is data in the variable, discard it. */
if (ev->ev_value != NULL && (ev->ev_flags & EV_DYNAMIC) != 0)
free(ev->ev_value);
ev->ev_value = NULL;
ev->ev_flags &= ~EV_DYNAMIC;
} else {
} else {
/*
* New variable; create and sort into list
*/
ev = malloc(sizeof(struct env_var));
ev->ev_name = strdup(name);
ev->ev_value = NULL;
ev->ev_flags = 0;
/* hooks can only be set when the variable is instantiated */
ev->ev_sethook = sethook;
ev->ev_unsethook = unsethook;
/*
* New variable; create and sort into list
*/
ev = malloc(sizeof(struct env_var));
ev->ev_name = strdup(name);
ev->ev_value = NULL;
ev->ev_flags = 0;
/* hooks can only be set when the variable is instantiated */
ev->ev_sethook = sethook;
ev->ev_unsethook = unsethook;
/* Sort into list */
ev->ev_prev = NULL;
ev->ev_next = NULL;
/* Search for the record to insert before */
for (last = NULL, curr = environ;
curr != NULL;
last = curr, curr = curr->ev_next) {
/* Sort into list */
ev->ev_prev = NULL;
ev->ev_next = NULL;
/* Search for the record to insert before */
for (last = NULL, curr = environ; curr != NULL;
last = curr, curr = curr->ev_next) {
if (strcmp(ev->ev_name, curr->ev_name) < 0) {
if (curr->ev_prev) {
curr->ev_prev->ev_next = ev;
} else {
environ = ev;
if (strcmp(ev->ev_name, curr->ev_name) < 0) {
if (curr->ev_prev) {
curr->ev_prev->ev_next = ev;
} else {
environ = ev;
}
ev->ev_next = curr;
ev->ev_prev = curr->ev_prev;
curr->ev_prev = ev;
break;
}
}
if (curr == NULL) {
if (last == NULL) {
environ = ev;
} else {
last->ev_next = ev;
ev->ev_prev = last;
}
}
ev->ev_next = curr;
ev->ev_prev = curr->ev_prev;
curr->ev_prev = ev;
break;
}
}
if (curr == NULL) {
if (last == NULL) {
environ = ev;
} else {
last->ev_next = ev;
ev->ev_prev = last;
}
/* If we have a new value, use it */
if (flags & EV_VOLATILE) {
ev->ev_value = strdup(value);
ev->ev_flags |= EV_DYNAMIC;
} else {
ev->ev_value = (char *)value;
ev->ev_flags |= flags & EV_DYNAMIC;
}
}
/* If we have a new value, use it */
if (flags & EV_VOLATILE) {
ev->ev_value = strdup(value);
ev->ev_flags |= EV_DYNAMIC;
} else {
ev->ev_value = (char *)value;
ev->ev_flags |= flags & EV_DYNAMIC;
}
return(0);
return (0);
}
/* coverity[ -tainted_string_return_content ] */
char *
getenv(const char *name)
{
struct env_var *ev;
struct env_var *ev;
/* Set but no value gives empty string */
if ((ev = env_getenv(name)) != NULL) {
if (ev->ev_value != NULL)
return(ev->ev_value);
return("");
}
return(NULL);
/* Set but no value gives empty string */
if ((ev = env_getenv(name)) != NULL) {
if (ev->ev_value != NULL)
return (ev->ev_value);
return ("");
}
return (NULL);
}
int
setenv(const char *name, const char *value, int overwrite)
{
/* No guarantees about state, always assume volatile */
if (overwrite || (env_getenv(name) == NULL))
return(env_setenv(name, EV_VOLATILE, value, NULL, NULL));
return(0);
/* No guarantees about state, always assume volatile */
if (overwrite || (env_getenv(name) == NULL))
return (env_setenv(name, EV_VOLATILE, value, NULL, NULL));
return (0);
}
int
putenv(char *string)
{
char *value, *copy;
int result;
char *value, *copy;
int result;
copy = strdup(string);
if ((value = strchr(copy, '=')) != NULL)
*(value++) = 0;
result = setenv(copy, value, 1);
free(copy);
return(result);
copy = strdup(string);
if ((value = strchr(copy, '=')) != NULL)
*(value++) = 0;
result = setenv(copy, value, 1);
free(copy);
return (result);
}
int
unsetenv(const char *name)
{
struct env_var *ev;
int err;
struct env_var *ev;
int err;
err = 0;
if ((ev = env_getenv(name)) == NULL) {
err = ENOENT;
} else {
if (ev->ev_unsethook != NULL)
err = ev->ev_unsethook(ev);
if (err == 0) {
env_discard(ev);
err = 0;
if ((ev = env_getenv(name)) == NULL) {
err = ENOENT;
} else {
if (ev->ev_unsethook != NULL)
err = ev->ev_unsethook(ev);
if (err == 0) {
env_discard(ev);
}
}
}
return(err);
return (err);
}
static void
env_discard(struct env_var *ev)
{
if (ev->ev_prev)
ev->ev_prev->ev_next = ev->ev_next;
if (ev->ev_next)
ev->ev_next->ev_prev = ev->ev_prev;
if (environ == ev)
environ = ev->ev_next;
free(ev->ev_name);
if (ev->ev_value != NULL && (ev->ev_flags & EV_DYNAMIC) != 0)
free(ev->ev_value);
free(ev);
if (ev->ev_prev)
ev->ev_prev->ev_next = ev->ev_next;
if (ev->ev_next)
ev->ev_next->ev_prev = ev->ev_prev;
if (environ == ev)
environ = ev->ev_next;
free(ev->ev_name);
if (ev->ev_value != NULL && (ev->ev_flags & EV_DYNAMIC) != 0)
free(ev->ev_value);
free(ev);
}
int
env_noset(struct env_var *ev __unused, int flags __unused,
const void *value __unused)
{
return(EPERM);
return (EPERM);
}
int
env_nounset(struct env_var *ev __unused)
{
return(EPERM);
return (EPERM);
}