working on it
This commit is contained in:
parent
56a6e78765
commit
35a88970c2
1094 changed files with 51093 additions and 51 deletions
32
05/musl-final/src/env/unsetenv.c
vendored
Normal file
32
05/musl-final/src/env/unsetenv.c
vendored
Normal file
|
@ -0,0 +1,32 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
extern char **__environ;
|
||||
extern char **__env_map;
|
||||
|
||||
int unsetenv(const char *name)
|
||||
{
|
||||
int i, j;
|
||||
size_t l = strlen(name);
|
||||
|
||||
if (!*name || strchr(name, '=')) {
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
again:
|
||||
for (i=0; __environ[i] && (memcmp(name, __environ[i], l) || __environ[i][l] != '='); i++);
|
||||
if (__environ[i]) {
|
||||
if (__env_map) {
|
||||
for (j=0; __env_map[j] && __env_map[j] != __environ[i]; j++);
|
||||
free (__env_map[j]);
|
||||
for (; __env_map[j]; j++)
|
||||
__env_map[j] = __env_map[j+1];
|
||||
}
|
||||
for (; __environ[i]; i++)
|
||||
__environ[i] = __environ[i+1];
|
||||
goto again;
|
||||
}
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue