| /* go-setenv.c -- set the C environment from Go. |
| Copyright 2011 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. */ |
| /* Set the C environment from Go. This is called by syscall.Setenv. */ |
| void setenv_c (struct __go_string, struct __go_string) |
| __asm__ ("libgo_syscall.syscall.setenv_c"); |
| setenv_c (struct __go_string k, struct __go_string v) |
| kn = __go_alloc (k.__length + 1); |
| __builtin_memcpy (kn, ks, k.__length); |
| vn = __go_alloc (v.__length + 1); |
| __builtin_memcpy (vn, vs, v.__length); |
| setenv ((const char *) ks, (const char *) vs, 1); |
| #else /* !defined(HAVE_SETENV) */ |
| kn = malloc (k.__length + v.__length + 2); |
| __builtin_memcpy (kn, ks, k.__length); |
| __builtin_memcpy (kn + k.__length + 1, vs, v.__length); |
| kn[k.__length + v.__length + 1] = '\0'; |
| #endif /* !defined(HAVE_SETENV) */ |