]>
diplodocus.org Git - nmh/blob - sbr/putenv.c
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
== '=');