/* See LICENSE file for copyright and license details. */ #include "common.h" #ifndef TEST int libexec_unsetenv(struct libexec_command *cmd, const char *name) { char **env; size_t i, n, len; if (!cmd || !name) { errno = EINVAL; return -1; } if (strchr(name, '=')) return 0; env = cmd->environ ? cmd->environ : environ; len = strlen(name); n = 0; while (env[n]) n++; for (i = 0; i < n;) { if (!strncmp(env[i], name, len) && env[i][len] == '=') { if (!cmd->environ) { if (libexec_copy_environ(cmd, NULL)) return -1; env = cmd->environ; } free(env[i]); memmove(&env[i], &env[i + 1], (n - i - 1) * sizeof(*env)); n--; } else { i++; } } return 0; } #else LIBEXEC_CONST__ int main(void) {return 0;} /* TODO test */ #endif