mirror of git://gcc.gnu.org/git/gcc.git
libgo: Make os.setenv_c work on systems without setenv.
From-SVN: r174147
This commit is contained in:
parent
6577308791
commit
5bb92e54b7
|
|
@ -24,6 +24,9 @@
|
||||||
/* Define to 1 if you have the `random' function. */
|
/* Define to 1 if you have the `random' function. */
|
||||||
#undef HAVE_RANDOM
|
#undef HAVE_RANDOM
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `setenv' function. */
|
||||||
|
#undef HAVE_SETENV
|
||||||
|
|
||||||
/* Define to 1 if you have the `srandom' function. */
|
/* Define to 1 if you have the `srandom' function. */
|
||||||
#undef HAVE_SRANDOM
|
#undef HAVE_SRANDOM
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14271,7 +14271,7 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
for ac_func in srandom random strerror_r strsignal wait4 mincore
|
for ac_func in srandom random strerror_r strsignal wait4 mincore setenv
|
||||||
do :
|
do :
|
||||||
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
|
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
|
||||||
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
|
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
|
||||||
|
|
|
||||||
|
|
@ -431,7 +431,7 @@ esac
|
||||||
AC_CHECK_HEADERS(sys/mman.h syscall.h sys/epoll.h sys/ptrace.h sys/syscall.h sys/user.h sys/utsname.h sys/select.h)
|
AC_CHECK_HEADERS(sys/mman.h syscall.h sys/epoll.h sys/ptrace.h sys/syscall.h sys/user.h sys/utsname.h sys/select.h)
|
||||||
AM_CONDITIONAL(HAVE_SYS_MMAN_H, test "$ac_cv_header_sys_mman_h" = yes)
|
AM_CONDITIONAL(HAVE_SYS_MMAN_H, test "$ac_cv_header_sys_mman_h" = yes)
|
||||||
|
|
||||||
AC_CHECK_FUNCS(srandom random strerror_r strsignal wait4 mincore)
|
AC_CHECK_FUNCS(srandom random strerror_r strsignal wait4 mincore setenv)
|
||||||
AM_CONDITIONAL(HAVE_STRERROR_R, test "$ac_cv_func_strerror_r" = yes)
|
AM_CONDITIONAL(HAVE_STRERROR_R, test "$ac_cv_func_strerror_r" = yes)
|
||||||
AM_CONDITIONAL(HAVE_WAIT4, test "$ac_cv_func_wait4" = yes)
|
AM_CONDITIONAL(HAVE_WAIT4, test "$ac_cv_func_wait4" = yes)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@
|
||||||
Use of this source code is governed by a BSD-style
|
Use of this source code is governed by a BSD-style
|
||||||
license that can be found in the LICENSE file. */
|
license that can be found in the LICENSE file. */
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
|
@ -25,24 +27,38 @@ setenv_c (struct __go_string k, struct __go_string v)
|
||||||
|
|
||||||
ks = k.__data;
|
ks = k.__data;
|
||||||
kn = NULL;
|
kn = NULL;
|
||||||
|
vs = v.__data;
|
||||||
|
vn = NULL;
|
||||||
|
|
||||||
|
#ifdef HAVE_SETENV
|
||||||
|
|
||||||
if (ks[k.__length] != 0)
|
if (ks[k.__length] != 0)
|
||||||
{
|
{
|
||||||
kn = __go_alloc (k.__length + 1);
|
kn = __go_alloc (k.__length + 1);
|
||||||
__builtin_memcpy (kn, k.__data, k.__length);
|
__builtin_memcpy (kn, ks, k.__length);
|
||||||
ks = kn;
|
ks = kn;
|
||||||
}
|
}
|
||||||
|
|
||||||
vs = v.__data;
|
|
||||||
vn = NULL;
|
|
||||||
if (vs[v.__length] != 0)
|
if (vs[v.__length] != 0)
|
||||||
{
|
{
|
||||||
vn = __go_alloc (v.__length + 1);
|
vn = __go_alloc (v.__length + 1);
|
||||||
__builtin_memcpy (vn, v.__data, v.__length);
|
__builtin_memcpy (vn, vs, v.__length);
|
||||||
vs = vn;
|
vs = vn;
|
||||||
}
|
}
|
||||||
|
|
||||||
setenv ((const char *) ks, (const char *) vs, 1);
|
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);
|
||||||
|
kn[k.__length] = '=';
|
||||||
|
__builtin_memcpy (kn + k.__length + 1, vs, v.__length);
|
||||||
|
kn[k.__length + v.__length + 1] = '\0';
|
||||||
|
putenv ((char *) kn);
|
||||||
|
|
||||||
|
#endif /* !defined(HAVE_SETENV) */
|
||||||
|
|
||||||
if (kn != NULL)
|
if (kn != NULL)
|
||||||
__go_free (kn);
|
__go_free (kn);
|
||||||
if (vn != NULL)
|
if (vn != NULL)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue