diff options
author | Guillaume Cottenceau <gc@mandriva.com> | 2001-01-04 20:04:45 +0000 |
---|---|---|
committer | Guillaume Cottenceau <gc@mandriva.com> | 2001-01-04 20:04:45 +0000 |
commit | 02fec4701cee79f875c1d02b8b4aee09380dbcb8 (patch) | |
tree | f4f291aedbb2e60ee58351481858a8cd3ec80b6b /mdk-stage1/dietlibc/lib/putenv.c | |
parent | 9887fe04751edf39e8389f2c3ec3f020b5e1c17d (diff) | |
download | drakx-02fec4701cee79f875c1d02b8b4aee09380dbcb8.tar drakx-02fec4701cee79f875c1d02b8b4aee09380dbcb8.tar.gz drakx-02fec4701cee79f875c1d02b8b4aee09380dbcb8.tar.bz2 drakx-02fec4701cee79f875c1d02b8b4aee09380dbcb8.tar.xz drakx-02fec4701cee79f875c1d02b8b4aee09380dbcb8.zip |
integrate dietlibc/stdio per default for cdrom and disk only installs
Diffstat (limited to 'mdk-stage1/dietlibc/lib/putenv.c')
-rw-r--r-- | mdk-stage1/dietlibc/lib/putenv.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/lib/putenv.c b/mdk-stage1/dietlibc/lib/putenv.c new file mode 100644 index 000000000..274b16b0e --- /dev/null +++ b/mdk-stage1/dietlibc/lib/putenv.c @@ -0,0 +1,37 @@ +#include <stdlib.h> +#include <string.h> + +int putenv(const char *string) { + int len; + int envc; + char *tmp; + const char **ep; + char **newenv; + static char **origenv=0; + if (!origenv) origenv=environ; + if (!(tmp=strchr(string,'='))) + len=strlen(string); + else + len=tmp-string+1; + for (envc=0, ep=(const char**)environ; *ep; ++ep) { + if (!memcmp(string,*ep,len)) { /* found */ + if (!tmp) { + for (; ep[1]; ++ep) ep[0]=ep[1]; + ep[0]=0; + return 0; + } + *ep=string; + return 0; + } + ++envc; + } + if (tmp) { + newenv=(char**)malloc((envc+2)*sizeof(char*)); + if (!newenv) return -1; + newenv[0]=(char*)string; + memcpy(newenv+1,environ,(envc+1)*sizeof(char*)); + if (environ!=origenv) free(environ); + environ=newenv; + } + return 0; +} |