1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- /* go-unsetenv.c -- unset an environment variable from Go.
- Copyright 2015 The Go Authors. All rights reserved.
- Use of this source code is governed by a BSD-style
- license that can be found in the LICENSE file. */
- #include "config.h"
- #include <stddef.h>
- #include <stdlib.h>
- #include "runtime.h"
- /* Unset an environment variable from Go. This is called by
- syscall.Unsetenv. */
- void unsetenv_c (String) __asm__ (GOSYM_PREFIX "syscall.unsetenv__c");
- void
- unsetenv_c (String k)
- {
- const byte *ks;
- unsigned char *kn;
- ks = k.str;
- if (ks == NULL)
- ks = (const byte *) "";
- kn = NULL;
- #ifdef HAVE_UNSETENV
- if (ks[k.len] != 0)
- {
- kn = malloc (k.len + 1);
- if (kn == NULL)
- runtime_throw ("out of malloc memory");
- __builtin_memcpy (kn, ks, k.len);
- ks = kn;
- }
- unsetenv ((const char *) ks);
- #endif /* !defined(HAVE_UNSETENV) */
- if (kn != NULL)
- free (kn);
- }
|