3 * putenv.c -- (un)set an envariable
10 extern char **environ;
15 int m_putenv (char *, char *);
16 int unputenv (char *);
17 static int nvmatch (char *, char *);
21 m_putenv (char *name, char *value)
24 register char **ep, **nep, *cp;
26 if (!(cp = malloc ((size_t) (strlen (name) + strlen (value) + 2))))
29 sprintf (cp, "%s=%s", name, value);
31 for (ep = environ, i = 0; *ep; ep++, i++)
32 if (nvmatch (name, *ep)) {
37 if (!(nep = (char **) malloc ((size_t) ((i + 2) * sizeof(*nep)))))
40 for (ep = environ, i = 0; *ep; nep[i++] = *ep++)
54 for (ep = environ; *ep; ep++)
55 if (nvmatch (name, *ep))
60 for (nep = ep + 1; *nep; nep++)
69 nvmatch (char *s1, char *s2)
75 return (*s1 == '\0' && *--s2 == '=');