File: setenv.putenv.c

package info (click to toggle)
mlton 20130715-3
  • links: PTS
  • area: main
  • in suites: stretch
  • size: 60,900 kB
  • ctags: 69,386
  • sloc: xml: 34,418; ansic: 17,399; lisp: 2,879; makefile: 1,605; sh: 1,254; pascal: 256; python: 143; asm: 97
file content (15 lines) | stat: -rw-r--r-- 508 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* This implementation of setenv has a space leak, but I don't see how to avoid
 * it, since the specification of putenv is that it uses the memory for its arg.
 */
int setenv (const char *name, const char *value, int overwrite) {
        size_t len;
        char *b;

        if (!overwrite && getenv (name))
                return 0;

        len = strlen (name) + strlen (value) + 2 /* = and \000 */;
        b = malloc (len);
        snprintf (b, len, "%s=%s", name, value);
        return putenv (b);
}