* Unset an environment variable string. */
| 595 | * Unset an environment variable string. |
| 596 | */ |
| 597 | int |
| 598 | kern_unsetenv(const char *name) |
| 599 | { |
| 600 | char *cp, *oldenv; |
| 601 | int i, j; |
| 602 | |
| 603 | KENV_CHECK; |
| 604 | |
| 605 | mtx_lock(&kenv_lock); |
| 606 | cp = _getenv_dynamic(name, &i); |
| 607 | if (cp != NULL) { |
| 608 | oldenv = kenvp[i]; |
| 609 | for (j = i + 1; kenvp[j] != NULL; j++) |
| 610 | kenvp[i++] = kenvp[j]; |
| 611 | kenvp[i] = NULL; |
| 612 | mtx_unlock(&kenv_lock); |
| 613 | zfree(oldenv, M_KENV); |
| 614 | return (0); |
| 615 | } |
| 616 | mtx_unlock(&kenv_lock); |
| 617 | return (-1); |
| 618 | } |
| 619 | |
| 620 | /* |
| 621 | * Return the internal kenv buffer for the variable name, if it exists. |
no test coverage detected