mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-16 02:50:26 -08:00
Merge from gnulib.
This incorporates: 2013-03-12 mktime: fix configure typo 2013-03-11 regex: port to mingw's recent addition of undeclared alarm 2013-03-11 putenv: avoid compilation warning on mingw 2013-03-11 unistd: don't prevent Tru64 Unix from using gnulib strtod.
This commit is contained in:
parent
84c3ab6860
commit
5615c9a9af
4 changed files with 57 additions and 42 deletions
|
|
@ -1,3 +1,11 @@
|
||||||
|
2013-03-13 Paul Eggert <eggert@cs.ucla.edu>
|
||||||
|
|
||||||
|
Merge from gnulib, incorporating:
|
||||||
|
2013-03-12 mktime: fix configure typo
|
||||||
|
2013-03-11 regex: port to mingw's recent addition of undeclared alarm
|
||||||
|
2013-03-11 putenv: avoid compilation warning on mingw
|
||||||
|
2013-03-11 unistd: don't prevent Tru64 Unix from using gnulib strtod.
|
||||||
|
|
||||||
2013-03-06 Paul Eggert <eggert@cs.ucla.edu>
|
2013-03-06 Paul Eggert <eggert@cs.ucla.edu>
|
||||||
|
|
||||||
* configure.ac (TERM_HEADER): Remove duplicate definition (Bug#13872).
|
* configure.ac (TERM_HEADER): Remove duplicate definition (Bug#13872).
|
||||||
|
|
|
||||||
76
lib/putenv.c
76
lib/putenv.c
|
|
@ -62,7 +62,9 @@ static int
|
||||||
_unsetenv (const char *name)
|
_unsetenv (const char *name)
|
||||||
{
|
{
|
||||||
size_t len;
|
size_t len;
|
||||||
|
#if !HAVE__PUTENV
|
||||||
char **ep;
|
char **ep;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (name == NULL || *name == '\0' || strchr (name, '=') != NULL)
|
if (name == NULL || *name == '\0' || strchr (name, '=') != NULL)
|
||||||
{
|
{
|
||||||
|
|
@ -126,45 +128,45 @@ putenv (char *string)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if HAVE__PUTENV
|
#if HAVE__PUTENV
|
||||||
/* Rely on _putenv to allocate the new environment. If other
|
/* Rely on _putenv to allocate the new environment. If other
|
||||||
parts of the application use _putenv, the !HAVE__PUTENV code
|
parts of the application use _putenv, the !HAVE__PUTENV code
|
||||||
would fight over who owns the environ vector, causing a crash. */
|
would fight over who owns the environ vector, causing a crash. */
|
||||||
if (name_end[1])
|
if (name_end[1])
|
||||||
return _putenv (string);
|
return _putenv (string);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* _putenv ("NAME=") unsets NAME, so invoke _putenv ("NAME= ")
|
/* _putenv ("NAME=") unsets NAME, so invoke _putenv ("NAME= ")
|
||||||
to allocate the environ vector and then replace the new
|
to allocate the environ vector and then replace the new
|
||||||
entry with "NAME=". */
|
entry with "NAME=". */
|
||||||
int putenv_result, putenv_errno;
|
int putenv_result, putenv_errno;
|
||||||
char *name_x = malloc (name_end - string + sizeof "= ");
|
char *name_x = malloc (name_end - string + sizeof "= ");
|
||||||
if (!name_x)
|
if (!name_x)
|
||||||
return -1;
|
return -1;
|
||||||
memcpy (name_x, string, name_end - string + 1);
|
memcpy (name_x, string, name_end - string + 1);
|
||||||
name_x[name_end - string + 1] = ' ';
|
name_x[name_end - string + 1] = ' ';
|
||||||
name_x[name_end - string + 2] = 0;
|
name_x[name_end - string + 2] = 0;
|
||||||
putenv_result = _putenv (name_x);
|
putenv_result = _putenv (name_x);
|
||||||
putenv_errno = errno;
|
putenv_errno = errno;
|
||||||
for (ep = environ; *ep; ep++)
|
for (ep = environ; *ep; ep++)
|
||||||
if (strcmp (*ep, name_x) == 0)
|
if (strcmp (*ep, name_x) == 0)
|
||||||
{
|
{
|
||||||
*ep = string;
|
*ep = string;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
|
# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
|
||||||
if (putenv_result == 0)
|
if (putenv_result == 0)
|
||||||
{
|
{
|
||||||
/* _putenv propagated "NAME= " into the subprocess environment;
|
/* _putenv propagated "NAME= " into the subprocess environment;
|
||||||
fix that by calling SetEnvironmentVariable directly. */
|
fix that by calling SetEnvironmentVariable directly. */
|
||||||
name_x[name_end - string] = 0;
|
name_x[name_end - string] = 0;
|
||||||
putenv_result = SetEnvironmentVariable (name_x, "") ? 0 : -1;
|
putenv_result = SetEnvironmentVariable (name_x, "") ? 0 : -1;
|
||||||
putenv_errno = ENOMEM; /* ENOMEM is the only way to fail. */
|
putenv_errno = ENOMEM; /* ENOMEM is the only way to fail. */
|
||||||
}
|
|
||||||
# endif
|
|
||||||
free (name_x);
|
|
||||||
__set_errno (putenv_errno);
|
|
||||||
return putenv_result;
|
|
||||||
}
|
}
|
||||||
|
# endif
|
||||||
|
free (name_x);
|
||||||
|
__set_errno (putenv_errno);
|
||||||
|
return putenv_result;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
for (ep = environ; *ep; ep++)
|
for (ep = environ; *ep; ep++)
|
||||||
if (strncmp (*ep, string, name_end - string) == 0
|
if (strncmp (*ep, string, name_end - string) == 0
|
||||||
|
|
|
||||||
|
|
@ -61,8 +61,10 @@
|
||||||
/* mingw, MSVC, BeOS, Haiku declare environ in <stdlib.h>, not in
|
/* mingw, MSVC, BeOS, Haiku declare environ in <stdlib.h>, not in
|
||||||
<unistd.h>. */
|
<unistd.h>. */
|
||||||
/* Solaris declares getcwd not only in <unistd.h> but also in <stdlib.h>. */
|
/* Solaris declares getcwd not only in <unistd.h> but also in <stdlib.h>. */
|
||||||
|
/* OSF Tru64 Unix cannot see gnulib rpl_strtod when system <stdlib.h> is
|
||||||
|
included here. */
|
||||||
/* But avoid namespace pollution on glibc systems. */
|
/* But avoid namespace pollution on glibc systems. */
|
||||||
#ifndef __GLIBC__
|
#if !defined __GLIBC__ && !defined __osf__
|
||||||
# define __need_system_stdlib_h
|
# define __need_system_stdlib_h
|
||||||
# include <stdlib.h>
|
# include <stdlib.h>
|
||||||
# undef __need_system_stdlib_h
|
# undef __need_system_stdlib_h
|
||||||
|
|
|
||||||
11
m4/mktime.m4
11
m4/mktime.m4
|
|
@ -1,4 +1,4 @@
|
||||||
# serial 24
|
# serial 25
|
||||||
dnl Copyright (C) 2002-2003, 2005-2007, 2009-2013 Free Software Foundation,
|
dnl Copyright (C) 2002-2003, 2005-2007, 2009-2013 Free Software Foundation,
|
||||||
dnl Inc.
|
dnl Inc.
|
||||||
dnl This file is free software; the Free Software Foundation
|
dnl This file is free software; the Free Software Foundation
|
||||||
|
|
@ -14,7 +14,7 @@ AC_DEFUN([gl_FUNC_MKTIME],
|
||||||
dnl We don't use AC_FUNC_MKTIME any more, because it is no longer maintained
|
dnl We don't use AC_FUNC_MKTIME any more, because it is no longer maintained
|
||||||
dnl in Autoconf and because it invokes AC_LIBOBJ.
|
dnl in Autoconf and because it invokes AC_LIBOBJ.
|
||||||
AC_CHECK_HEADERS_ONCE([unistd.h])
|
AC_CHECK_HEADERS_ONCE([unistd.h])
|
||||||
AC_CHECK_FUNCS_ONCE([alarm])
|
AC_CHECK_DECLS_ONCE([alarm])
|
||||||
AC_REQUIRE([gl_MULTIARCH])
|
AC_REQUIRE([gl_MULTIARCH])
|
||||||
if test $APPLE_UNIVERSAL_BUILD = 1; then
|
if test $APPLE_UNIVERSAL_BUILD = 1; then
|
||||||
# A universal build on Apple Mac OS X platforms.
|
# A universal build on Apple Mac OS X platforms.
|
||||||
|
|
@ -34,8 +34,8 @@ AC_DEFUN([gl_FUNC_MKTIME],
|
||||||
# include <unistd.h>
|
# include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef HAVE_ALARM
|
#if HAVE_DECL_ALARM
|
||||||
# define alarm(X) /* empty */
|
# include <signal.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Work around redefinition to rpl_putenv by other config tests. */
|
/* Work around redefinition to rpl_putenv by other config tests. */
|
||||||
|
|
@ -171,10 +171,13 @@ main ()
|
||||||
int time_t_signed_magnitude = (time_t) ~ (time_t) 0 < (time_t) -1;
|
int time_t_signed_magnitude = (time_t) ~ (time_t) 0 < (time_t) -1;
|
||||||
int time_t_signed = ! ((time_t) 0 < (time_t) -1);
|
int time_t_signed = ! ((time_t) 0 < (time_t) -1);
|
||||||
|
|
||||||
|
#if HAVE_DECL_ALARM
|
||||||
/* This test makes some buggy mktime implementations loop.
|
/* This test makes some buggy mktime implementations loop.
|
||||||
Give up after 60 seconds; a mktime slower than that
|
Give up after 60 seconds; a mktime slower than that
|
||||||
isn't worth using anyway. */
|
isn't worth using anyway. */
|
||||||
|
signal (SIGALRM, SIG_DFL);
|
||||||
alarm (60);
|
alarm (60);
|
||||||
|
#endif
|
||||||
|
|
||||||
time_t_max = (! time_t_signed
|
time_t_max = (! time_t_signed
|
||||||
? (time_t) -1
|
? (time_t) -1
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue