mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-02 11:21:42 +00:00
Merge from Gnulib
This incorporates: 2017-11-23 stat: work around Solaris bug with tv_nsec < 0 2017-11-12 maint: shorten https://lists.gnu.org/archive/html/... links * build-aux/config.sub, doc/misc/texinfo.tex, lib/allocator.h: * lib/fstatat.c, lib/intprops.h, lib/lstat.c, lib/signal.in.h: * lib/stat-time.h, lib/stdio-impl.h, lib/stdio.in.h: * lib/timespec.h, m4/alloca.m4, m4/extern-inline.m4: * m4/faccessat.m4, m4/fstatat.m4, m4/gnulib-common.m4: * m4/lstat.m4, m4/std-gnu11.m4, m4/sys_types_h.m4: * m4/vararrays.m4: Copy from Gnulib.
This commit is contained in:
parent
265cee553f
commit
8be3aee281
15
build-aux/config.sub
vendored
15
build-aux/config.sub
vendored
@ -2,7 +2,7 @@
|
||||
# Configuration validation subroutine script.
|
||||
# Copyright 1992-2017 Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2017-11-04'
|
||||
timestamp='2017-11-23'
|
||||
|
||||
# This file is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
@ -1546,6 +1546,19 @@ case $os in
|
||||
-dicos*)
|
||||
os=-dicos
|
||||
;;
|
||||
-pikeos*)
|
||||
# Until real need of OS specific support for
|
||||
# particular features comes up, bare metal
|
||||
# configurations are quite functional.
|
||||
case $basic_machine in
|
||||
arm*)
|
||||
os=-eabi
|
||||
;;
|
||||
*)
|
||||
os=-elf
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
-nacl*)
|
||||
;;
|
||||
-ios)
|
||||
|
@ -3,7 +3,7 @@
|
||||
% Load plain if necessary, i.e., if running under initex.
|
||||
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
|
||||
%
|
||||
\def\texinfoversion{2017-09-11.18}
|
||||
\def\texinfoversion{2017-11-17.06}
|
||||
%
|
||||
% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
|
||||
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
|
||||
@ -5969,24 +5969,30 @@
|
||||
% Split the last of the double-column material.
|
||||
\savemarks
|
||||
\balancecolumns
|
||||
%
|
||||
}%
|
||||
\eject % call the \output just set
|
||||
\ifdim\pagetotal=0pt
|
||||
% Having called \balancecolumns once, we do not
|
||||
% want to call it again. Therefore, reset \output to its normal
|
||||
% definition right away.
|
||||
\global\output = {\onepageout{\pagecontents\PAGE}}%
|
||||
}%
|
||||
\eject
|
||||
\endgroup % started in \begindoublecolumns
|
||||
\restoremarks
|
||||
% Leave the double-column material on the current page, no automatic
|
||||
% page break.
|
||||
\box\balancedcolumns
|
||||
%
|
||||
% \pagegoal was set to the doubled \vsize above, since we restarted
|
||||
% the current page. We're now back to normal single-column
|
||||
% typesetting, so reset \pagegoal to the normal \vsize.
|
||||
\global\vsize = \txipageheight %
|
||||
\pagegoal = \txipageheight %
|
||||
%
|
||||
\endgroup % started in \begindoublecolumns
|
||||
\restoremarks
|
||||
% Leave the double-column material on the current page, no automatic
|
||||
% page break.
|
||||
\box\balancedcolumns
|
||||
%
|
||||
% \pagegoal was set to the doubled \vsize above, since we restarted
|
||||
% the current page. We're now back to normal single-column
|
||||
% typesetting, so reset \pagegoal to the normal \vsize.
|
||||
\global\vsize = \txipageheight %
|
||||
\pagegoal = \txipageheight %
|
||||
\else
|
||||
% We had some left-over material. This might happen when \doublecolumnout
|
||||
% is called in \balancecolumns. Try again.
|
||||
\expandafter\enddoublecolumns
|
||||
\fi
|
||||
}
|
||||
\newbox\balancedcolumns
|
||||
\setbox\balancedcolumns=\vbox{shouldnt see this}%
|
||||
@ -6001,6 +6007,7 @@
|
||||
\ifdim\dimen@<5\baselineskip
|
||||
% Don't split a short final column in two.
|
||||
\setbox2=\vbox{}%
|
||||
\global\setbox\balancedcolumns=\vbox{\pagesofar}%
|
||||
\else
|
||||
\divide\dimen@ by 2 % target to split to
|
||||
\dimen@ii = \dimen@
|
||||
@ -6016,15 +6023,15 @@
|
||||
\repeat
|
||||
}%
|
||||
% Now the left column is in box 1, and the right column in box 3.
|
||||
%
|
||||
% Check whether the left column has come out higher than the page itself.
|
||||
% (Note that we have doubled \vsize for the double columns, so
|
||||
% the actual height of the page is 0.5\vsize).
|
||||
\ifdim2\ht1>\vsize
|
||||
% Just split the last of the double column material roughly in half.
|
||||
\setbox2=\box0
|
||||
\setbox0 = \vsplit2 to \dimen@ii
|
||||
\setbox0=\vbox to \dimen@ii {\unvbox0\vfill}%
|
||||
\setbox2=\vbox to \dimen@ii {\unvbox2\vfill}%
|
||||
% It appears that we have been called upon to balance too much material.
|
||||
% Output some of it with \doublecolumnout, leaving the rest on the page.
|
||||
\setbox\PAGE=\box0
|
||||
\doublecolumnout
|
||||
\else
|
||||
% Compare the heights of the two columns.
|
||||
\ifdim4\ht1>5\ht3
|
||||
@ -6037,10 +6044,10 @@
|
||||
\setbox2=\vbox to\ht1{\unvbox3\unskip}%
|
||||
\setbox0=\vbox to\ht1{\unvbox1\unskip}%
|
||||
\fi
|
||||
\global\setbox\balancedcolumns=\vbox{\pagesofar}%
|
||||
\fi
|
||||
\fi
|
||||
%
|
||||
\global\setbox\balancedcolumns=\vbox{\pagesofar}%
|
||||
}
|
||||
\catcode`\@ = \other
|
||||
|
||||
|
@ -29,7 +29,7 @@ struct allocator
|
||||
/* Do not use GCC attributes such as __attribute__ ((malloc)) with
|
||||
the function types pointed at by these members, because these
|
||||
attributes do not work with pointers to functions. See
|
||||
<https://lists.gnu.org/archive/html/bug-gnulib/2011-04/msg00007.html>. */
|
||||
<https://lists.gnu.org/r/bug-gnulib/2011-04/msg00007.html>. */
|
||||
|
||||
/* Call ALLOCATE to allocate memory, like 'malloc'. On failure ALLOCATE
|
||||
should return NULL, though not necessarily set errno. When given
|
||||
|
@ -41,6 +41,8 @@ orig_fstatat (int fd, char const *filename, struct stat *buf, int flags)
|
||||
above. */
|
||||
#include "sys/stat.h"
|
||||
|
||||
#include "stat-time.h"
|
||||
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <string.h>
|
||||
@ -51,6 +53,12 @@ orig_fstatat (int fd, char const *filename, struct stat *buf, int flags)
|
||||
# define LSTAT_FOLLOWS_SLASHED_SYMLINK 0
|
||||
# endif
|
||||
|
||||
static int
|
||||
normal_fstatat (int fd, char const *file, struct stat *st, int flag)
|
||||
{
|
||||
return stat_time_normalize (orig_fstatat (fd, file, st, flag), st);
|
||||
}
|
||||
|
||||
/* fstatat should always follow symbolic links that end in /, but on
|
||||
Solaris 9 it doesn't if AT_SYMLINK_NOFOLLOW is specified.
|
||||
Likewise, trailing slash on a non-directory should be an error.
|
||||
@ -63,7 +71,7 @@ orig_fstatat (int fd, char const *filename, struct stat *buf, int flags)
|
||||
int
|
||||
rpl_fstatat (int fd, char const *file, struct stat *st, int flag)
|
||||
{
|
||||
int result = orig_fstatat (fd, file, st, flag);
|
||||
int result = normal_fstatat (fd, file, st, flag);
|
||||
size_t len;
|
||||
|
||||
if (LSTAT_FOLLOWS_SLASHED_SYMLINK || result != 0)
|
||||
@ -79,7 +87,7 @@ rpl_fstatat (int fd, char const *file, struct stat *st, int flag)
|
||||
errno = ENOTDIR;
|
||||
return -1;
|
||||
}
|
||||
result = orig_fstatat (fd, file, st, flag & ~AT_SYMLINK_NOFOLLOW);
|
||||
result = normal_fstatat (fd, file, st, flag & ~AT_SYMLINK_NOFOLLOW);
|
||||
}
|
||||
/* Fix stat behavior. */
|
||||
if (result == 0 && !S_ISDIR (st->st_mode) && file[len - 1] == '/')
|
||||
|
@ -26,7 +26,7 @@
|
||||
#define _GL_INT_CONVERT(e, v) (0 * (e) + (v))
|
||||
|
||||
/* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see
|
||||
<https://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00406.html>. */
|
||||
<https://lists.gnu.org/r/bug-gnulib/2011-05/msg00406.html>. */
|
||||
#define _GL_INT_NEGATE_CONVERT(e, v) (0 * (e) - (v))
|
||||
|
||||
/* The extra casts in the following macros work around compiler bugs,
|
||||
@ -179,7 +179,7 @@
|
||||
/* Return 1 if A * B would overflow in [MIN,MAX] arithmetic.
|
||||
See above for restrictions. Avoid && and || as they tickle
|
||||
bugs in Sun C 5.11 2010/08/13 and other compilers; see
|
||||
<https://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00401.html>. */
|
||||
<https://lists.gnu.org/r/bug-gnulib/2011-05/msg00401.html>. */
|
||||
#define INT_MULTIPLY_RANGE_OVERFLOW(a, b, min, max) \
|
||||
((b) < 0 \
|
||||
? ((a) < 0 \
|
||||
@ -443,7 +443,7 @@
|
||||
implementation-defined result or signal for values outside T's
|
||||
range. However, code that works around this theoretical problem
|
||||
runs afoul of a compiler bug in Oracle Studio 12.3 x86. See:
|
||||
https://lists.gnu.org/archive/html/bug-gnulib/2017-04/msg00049.html
|
||||
https://lists.gnu.org/r/bug-gnulib/2017-04/msg00049.html
|
||||
As the compiler bug is real, don't try to work around the
|
||||
theoretical problem. */
|
||||
|
||||
|
39
lib/lstat.c
39
lib/lstat.c
@ -47,6 +47,8 @@ orig_lstat (const char *filename, struct stat *buf)
|
||||
above. */
|
||||
# include "sys/stat.h"
|
||||
|
||||
# include "stat-time.h"
|
||||
|
||||
# include <string.h>
|
||||
# include <errno.h>
|
||||
|
||||
@ -66,32 +68,33 @@ orig_lstat (const char *filename, struct stat *buf)
|
||||
int
|
||||
rpl_lstat (const char *file, struct stat *sbuf)
|
||||
{
|
||||
size_t len;
|
||||
int lstat_result = orig_lstat (file, sbuf);
|
||||
|
||||
if (lstat_result != 0)
|
||||
return lstat_result;
|
||||
int result = orig_lstat (file, sbuf);
|
||||
|
||||
/* This replacement file can blindly check against '/' rather than
|
||||
using the ISSLASH macro, because all platforms with '\\' either
|
||||
lack symlinks (mingw) or have working lstat (cygwin) and thus do
|
||||
not compile this file. 0 len should have already been filtered
|
||||
out above, with a failure return of ENOENT. */
|
||||
len = strlen (file);
|
||||
if (file[len - 1] != '/' || S_ISDIR (sbuf->st_mode))
|
||||
return 0;
|
||||
|
||||
/* At this point, a trailing slash is only permitted on
|
||||
symlink-to-dir; but it should have found information on the
|
||||
directory, not the symlink. Call stat() to get info about the
|
||||
link's referent. Our replacement stat guarantees valid results,
|
||||
even if the symlink is not pointing to a directory. */
|
||||
if (!S_ISLNK (sbuf->st_mode))
|
||||
if (result == 0)
|
||||
{
|
||||
errno = ENOTDIR;
|
||||
return -1;
|
||||
if (S_ISDIR (sbuf->st_mode) || file[strlen (file) - 1] != '/')
|
||||
result = stat_time_normalize (result, sbuf);
|
||||
else
|
||||
{
|
||||
/* At this point, a trailing slash is permitted only on
|
||||
symlink-to-dir; but it should have found information on the
|
||||
directory, not the symlink. Call 'stat' to get info about the
|
||||
link's referent. Our replacement stat guarantees valid results,
|
||||
even if the symlink is not pointing to a directory. */
|
||||
if (!S_ISLNK (sbuf->st_mode))
|
||||
{
|
||||
errno = ENOTDIR;
|
||||
return -1;
|
||||
}
|
||||
result = stat (file, sbuf);
|
||||
}
|
||||
}
|
||||
return stat (file, sbuf);
|
||||
return result;
|
||||
}
|
||||
|
||||
#endif /* HAVE_LSTAT */
|
||||
|
@ -200,7 +200,7 @@ typedef int verify_NSIG_constraint[NSIG <= 32 ? 1 : -1];
|
||||
/* When also using extern inline, suppress the use of static inline in
|
||||
standard headers of problematic Apple configurations, as Libc at
|
||||
least through Libc-825.26 (2013-04-09) mishandles it; see, e.g.,
|
||||
<https://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html>.
|
||||
<https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html>.
|
||||
Perhaps Apple will fix this some day. */
|
||||
#if (defined _GL_EXTERN_INLINE_IN_USE && defined __APPLE__ \
|
||||
&& (defined __i386__ || defined __x86_64__))
|
||||
|
@ -20,6 +20,10 @@
|
||||
#ifndef STAT_TIME_H
|
||||
#define STAT_TIME_H 1
|
||||
|
||||
#include "intprops.h"
|
||||
|
||||
#include <errno.h>
|
||||
#include <stddef.h>
|
||||
#include <sys/stat.h>
|
||||
#include <time.h>
|
||||
|
||||
@ -202,6 +206,47 @@ get_stat_birthtime (struct stat const *st)
|
||||
return t;
|
||||
}
|
||||
|
||||
/* If a stat-like function returned RESULT, normalize the timestamps
|
||||
in *ST, in case this platform suffers from the Solaris 11 bug where
|
||||
tv_nsec might be negative. Return the adjusted RESULT, setting
|
||||
errno to EOVERFLOW if normalization overflowed. This function
|
||||
is intended to be private to this .h file. */
|
||||
_GL_STAT_TIME_INLINE int
|
||||
stat_time_normalize (int result, struct stat *st)
|
||||
{
|
||||
#if defined __sun && defined STAT_TIMESPEC
|
||||
if (result == 0)
|
||||
{
|
||||
long int timespec_resolution = 1000000000;
|
||||
short int const ts_off[] = { offsetof (struct stat, st_atim),
|
||||
offsetof (struct stat, st_mtim),
|
||||
offsetof (struct stat, st_ctim) };
|
||||
int i;
|
||||
for (i = 0; i < sizeof ts_off / sizeof *ts_off; i++)
|
||||
{
|
||||
struct timespec *ts = (struct timespec *) ((char *) st + ts_off[i]);
|
||||
long int q = ts->tv_nsec / timespec_resolution;
|
||||
long int r = ts->tv_nsec % timespec_resolution;
|
||||
if (r < 0)
|
||||
{
|
||||
r += timespec_resolution;
|
||||
q--;
|
||||
}
|
||||
ts->tv_nsec = r;
|
||||
/* Overflow is possible, as Solaris 11 stat can yield
|
||||
tv_sec == TYPE_MINIMUM (time_t) && tv_nsec == -1000000000.
|
||||
INT_ADD_WRAPV is OK, since time_t is signed on Solaris. */
|
||||
if (INT_ADD_WRAPV (q, ts->tv_sec, &ts->tv_sec))
|
||||
{
|
||||
errno = EOVERFLOW;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return result;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -81,7 +81,7 @@
|
||||
#ifdef __TANDEM /* NonStop Kernel */
|
||||
# ifndef _IOERR
|
||||
/* These values were determined by the program 'stdioext-flags' at
|
||||
<https://lists.gnu.org/archive/html/bug-gnulib/2010-12/msg00165.html>. */
|
||||
<https://lists.gnu.org/r/bug-gnulib/2010-12/msg00165.html>. */
|
||||
# define _IOERR 0x40
|
||||
# define _IOREAD 0x80
|
||||
# define _IOWRT 0x4
|
||||
@ -132,7 +132,7 @@ struct _gl_real_FILE
|
||||
# define fp_ ((struct _gl_real_FILE *) fp)
|
||||
|
||||
/* These values were determined by a program similar to the one at
|
||||
<https://lists.gnu.org/archive/html/bug-gnulib/2010-12/msg00165.html>. */
|
||||
<https://lists.gnu.org/r/bug-gnulib/2010-12/msg00165.html>. */
|
||||
# define _IOREAD 0x1
|
||||
# define _IOWRT 0x2
|
||||
# define _IORW 0x4
|
||||
|
@ -152,7 +152,7 @@
|
||||
/* When also using extern inline, suppress the use of static inline in
|
||||
standard headers of problematic Apple configurations, as Libc at
|
||||
least through Libc-825.26 (2013-04-09) mishandles it; see, e.g.,
|
||||
<https://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html>.
|
||||
<https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html>.
|
||||
Perhaps Apple will fix this some day. */
|
||||
#if (defined _GL_EXTERN_INLINE_IN_USE && defined __APPLE__ \
|
||||
&& defined __GNUC__ && defined __STDC__)
|
||||
|
@ -87,7 +87,7 @@ timespec_cmp (struct timespec a, struct timespec b)
|
||||
return 1;
|
||||
|
||||
/* Pacify gcc -Wstrict-overflow (bleeding-edge circa 2017-10-02). See:
|
||||
http://lists.gnu.org/archive/html/bug-gnulib/2017-10/msg00006.html */
|
||||
http://lists.gnu.org/r/bug-gnulib/2017-10/msg00006.html */
|
||||
assume (-1 <= a.tv_nsec && a.tv_nsec <= 2 * TIMESPEC_RESOLUTION);
|
||||
assume (-1 <= b.tv_nsec && b.tv_nsec <= 2 * TIMESPEC_RESOLUTION);
|
||||
|
||||
|
@ -44,7 +44,7 @@ AC_DEFUN([gl_FUNC_ALLOCA],
|
||||
AC_DEFUN([gl_PREREQ_ALLOCA], [:])
|
||||
|
||||
# This works around a bug in autoconf <= 2.68.
|
||||
# See <https://lists.gnu.org/archive/html/bug-gnulib/2011-06/msg00277.html>.
|
||||
# See <https://lists.gnu.org/r/bug-gnulib/2011-06/msg00277.html>.
|
||||
|
||||
m4_version_prereq([2.69], [] ,[
|
||||
|
||||
|
@ -11,7 +11,7 @@ AC_DEFUN([gl_EXTERN_INLINE],
|
||||
[/* Please see the Gnulib manual for how to use these macros.
|
||||
|
||||
Suppress extern inline with HP-UX cc, as it appears to be broken; see
|
||||
<https://lists.gnu.org/archive/html/bug-texinfo/2013-02/msg00030.html>.
|
||||
<https://lists.gnu.org/r/bug-texinfo/2013-02/msg00030.html>.
|
||||
|
||||
Suppress extern inline with Sun C in standards-conformance mode, as it
|
||||
mishandles inline functions that call each other. E.g., for 'inline void f
|
||||
@ -28,13 +28,13 @@ AC_DEFUN([gl_EXTERN_INLINE],
|
||||
from calling static functions. This bug is known to occur on:
|
||||
|
||||
OS X 10.8 and earlier; see:
|
||||
https://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html
|
||||
https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html
|
||||
|
||||
DragonFly; see
|
||||
http://muscles.dragonflybsd.org/bulk/bleeding-edge-potential/latest-per-pkg/ah-tty-0.3.12.log
|
||||
|
||||
FreeBSD; see:
|
||||
https://lists.gnu.org/archive/html/bug-gnulib/2014-07/msg00104.html
|
||||
https://lists.gnu.org/r/bug-gnulib/2014-07/msg00104.html
|
||||
|
||||
OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and
|
||||
for clang but remains for g++; see <https://trac.macports.org/ticket/41033>.
|
||||
|
@ -1,4 +1,4 @@
|
||||
# serial 7
|
||||
# serial 8
|
||||
# See if we need to provide faccessat replacement.
|
||||
|
||||
dnl Copyright (C) 2009-2017 Free Software Foundation, Inc.
|
||||
@ -11,6 +11,7 @@ dnl with or without modifications, as long as this notice is preserved.
|
||||
AC_DEFUN([gl_FUNC_FACCESSAT],
|
||||
[
|
||||
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
|
||||
AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
|
||||
|
||||
dnl Persuade glibc <unistd.h> to declare faccessat().
|
||||
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|
||||
@ -18,8 +19,11 @@ AC_DEFUN([gl_FUNC_FACCESSAT],
|
||||
AC_CHECK_FUNCS_ONCE([faccessat])
|
||||
if test $ac_cv_func_faccessat = no; then
|
||||
HAVE_FACCESSAT=0
|
||||
elif test "$gl_cv_func_lstat_dereferences_slashed_symlink" != yes; then
|
||||
REPLACE_FACCESSAT=1
|
||||
else
|
||||
case "$gl_cv_func_lstat_dereferences_slashed_symlink" in
|
||||
*yes) ;;
|
||||
*) REPLACE_FACCESSAT=1 ;;
|
||||
esac
|
||||
fi
|
||||
])
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# fstatat.m4 serial 3
|
||||
# fstatat.m4 serial 4
|
||||
dnl Copyright (C) 2004-2017 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
@ -13,14 +13,14 @@ AC_DEFUN([gl_FUNC_FSTATAT],
|
||||
AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
|
||||
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|
||||
AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
|
||||
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
AC_CHECK_FUNCS_ONCE([fstatat])
|
||||
|
||||
if test $ac_cv_func_fstatat = no; then
|
||||
HAVE_FSTATAT=0
|
||||
else
|
||||
dnl Test for an AIX 7.1 bug; see
|
||||
dnl <https://lists.gnu.org/archive/html/bug-tar/2011-09/msg00015.html>.
|
||||
dnl <https://lists.gnu.org/r/bug-tar/2011-09/msg00015.html>.
|
||||
AC_CACHE_CHECK([whether fstatat (..., 0) works],
|
||||
[gl_cv_func_fstatat_zero_flag],
|
||||
[AC_RUN_IFELSE(
|
||||
@ -46,15 +46,20 @@ AC_DEFUN([gl_FUNC_FSTATAT],
|
||||
|
||||
case $gl_cv_func_fstatat_zero_flag+$gl_cv_func_lstat_dereferences_slashed_symlink in
|
||||
*yes+*yes) ;;
|
||||
*) REPLACE_FSTATAT=1
|
||||
case $gl_cv_func_fstatat_zero_flag in
|
||||
*yes)
|
||||
*) REPLACE_FSTATAT=1 ;;
|
||||
esac
|
||||
|
||||
case $host_os in
|
||||
solaris*)
|
||||
REPLACE_FSTATAT=1 ;;
|
||||
esac
|
||||
|
||||
case $REPLACE_FSTATAT,$gl_cv_func_fstatat_zero_flag in
|
||||
1,*yes)
|
||||
AC_DEFINE([HAVE_WORKING_FSTATAT_ZERO_FLAG], [1],
|
||||
[Define to 1 if fstatat (..., 0) works.
|
||||
For example, it does not work in AIX 7.1.])
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
])
|
||||
|
@ -228,13 +228,13 @@ m4_ifndef([AS_VAR_IF],
|
||||
# This is like AC_PROG_CC_C99, except that
|
||||
# - AC_PROG_CC_C99 did not exist in Autoconf versions < 2.60,
|
||||
# - AC_PROG_CC_C99 does not mix well with AC_PROG_CC_STDC
|
||||
# <https://lists.gnu.org/archive/html/bug-gnulib/2011-09/msg00367.html>,
|
||||
# <https://lists.gnu.org/r/bug-gnulib/2011-09/msg00367.html>,
|
||||
# but many more packages use AC_PROG_CC_STDC than AC_PROG_CC_C99
|
||||
# <https://lists.gnu.org/archive/html/bug-gnulib/2011-09/msg00441.html>.
|
||||
# <https://lists.gnu.org/r/bug-gnulib/2011-09/msg00441.html>.
|
||||
# Remaining problems:
|
||||
# - When AC_PROG_CC_STDC is invoked twice, it adds the C99 enabling options
|
||||
# to CC twice
|
||||
# <https://lists.gnu.org/archive/html/bug-gnulib/2011-09/msg00431.html>.
|
||||
# <https://lists.gnu.org/r/bug-gnulib/2011-09/msg00431.html>.
|
||||
# - AC_PROG_CC_STDC is likely to change now that C11 is an ISO standard.
|
||||
AC_DEFUN([gl_PROG_CC_C99],
|
||||
[
|
||||
|
@ -1,4 +1,4 @@
|
||||
# serial 29
|
||||
# serial 30
|
||||
|
||||
# Copyright (C) 1997-2001, 2003-2017 Free Software Foundation, Inc.
|
||||
#
|
||||
@ -10,14 +10,15 @@ dnl From Jim Meyering.
|
||||
|
||||
AC_DEFUN([gl_FUNC_LSTAT],
|
||||
[
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
|
||||
dnl If lstat does not exist, the replacement <sys/stat.h> does
|
||||
dnl "#define lstat stat", and lstat.c is a no-op.
|
||||
AC_CHECK_FUNCS_ONCE([lstat])
|
||||
if test $ac_cv_func_lstat = yes; then
|
||||
AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
|
||||
case "$gl_cv_func_lstat_dereferences_slashed_symlink" in
|
||||
*no)
|
||||
case $host_os,$gl_cv_func_lstat_dereferences_slashed_symlink in
|
||||
solaris* | *no)
|
||||
REPLACE_LSTAT=1
|
||||
;;
|
||||
esac
|
||||
|
@ -369,7 +369,7 @@ dnl just the module. Instead, define the (private) symbol
|
||||
dnl _STDC_C99, which suppresses a bogus failure in <stdbool.h>.
|
||||
dnl The resulting compiler passes the test case here, and that's
|
||||
dnl good enough. For more, please see the thread starting at:
|
||||
dnl https://lists.gnu.org/archive/html/autoconf/2010-12/msg00059.html
|
||||
dnl https://lists.gnu.org/r/autoconf/2010-12/msg00059.html
|
||||
dnl Tru64 -c99
|
||||
dnl with extended modes being tried first.
|
||||
[[-std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc1x -qlanglvl=extc99]], [$1], [$2])[]dnl
|
||||
@ -458,7 +458,7 @@ dnl preferably extc11.
|
||||
# --------------
|
||||
# Do not use AU_ALIAS here and in AC_PROG_CC_C99 and AC_PROG_CC_STDC,
|
||||
# as that'd be incompatible with how Automake redefines AC_PROG_CC. See
|
||||
# <https://lists.gnu.org/archive/html/autoconf/2012-10/msg00048.html>.
|
||||
# <https://lists.gnu.org/r/autoconf/2012-10/msg00048.html>.
|
||||
AU_DEFUN([AC_PROG_CC_C89],
|
||||
[AC_REQUIRE([AC_PROG_CC])],
|
||||
[$0 is obsolete; use AC_PROG_CC]
|
||||
|
@ -35,7 +35,7 @@ AC_DEFUN([gl_SYS_TYPES_H_DEFAULTS],
|
||||
])
|
||||
|
||||
# This works around a buggy version in autoconf <= 2.69.
|
||||
# See <https://lists.gnu.org/archive/html/autoconf/2016-08/msg00014.html>
|
||||
# See <https://lists.gnu.org/r/autoconf/2016-08/msg00014.html>
|
||||
|
||||
m4_version_prereq([2.70], [], [
|
||||
|
||||
|
@ -27,7 +27,7 @@ AC_DEFUN([AC_C_VARARRAYS],
|
||||
[[/* Test for VLA support. This test is partly inspired
|
||||
from examples in the C standard. Use at least two VLA
|
||||
functions to detect the GCC 3.4.3 bug described in:
|
||||
https://lists.gnu.org/archive/html/bug-gnulib/2014-08/msg00014.html
|
||||
https://lists.gnu.org/r/bug-gnulib/2014-08/msg00014.html
|
||||
*/
|
||||
#ifdef __STDC_NO_VLA__
|
||||
syntax error;
|
||||
|
Loading…
Reference in New Issue
Block a user