Magellan Linux

Annotation of /trunk/mkinitrd-magellan/klibc/usr/klibc/unsetenv.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 532 - (hide annotations) (download)
Sat Sep 1 22:45:15 2007 UTC (16 years, 9 months ago) by niro
File MIME type: text/plain
File size: 546 byte(s)
-import if magellan mkinitrd; it is a fork of redhats mkinitrd-5.0.8 with all magellan patches and features; deprecates magellan-src/mkinitrd

1 niro 532 /*
2     * unsetenv.c
3     */
4    
5     #include <errno.h>
6     #include <stdlib.h>
7     #include <string.h>
8     #include <unistd.h>
9     #include "env.h"
10    
11     int unsetenv(const char *name)
12     {
13     size_t len;
14     char **p, *q;
15     const char *z;
16    
17     if (!name || !name[0]) {
18     errno = EINVAL;
19     return -1;
20     }
21    
22     len = 0;
23     for (z = name; *z; z++) {
24     len++;
25     if (*z == '=') {
26     errno = EINVAL;
27     return -1;
28     }
29     }
30    
31     if (!environ)
32     return 0;
33    
34     for (p = environ; (q = *p); p++) {
35     if (!strncmp(name, q, len) && q[len] == '=')
36     break;
37     }
38    
39     for (; (q = *p); p++) {
40     p[0] = p[1];
41     }
42    
43     return 0;
44     }