mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-18 09:40:25 +02:00
Add Gnulib `strftime' module, update Gnulib files.
* m4/gnulib-cache.m4 (gl_MODULES): Add `strftime'.
This commit is contained in:
parent
bfb2e11358
commit
e65fc94b7a
19 changed files with 2368 additions and 11 deletions
|
@ -9,7 +9,7 @@
|
||||||
# the same distribution terms as the rest of that program.
|
# the same distribution terms as the rest of that program.
|
||||||
#
|
#
|
||||||
# Generated by gnulib-tool.
|
# Generated by gnulib-tool.
|
||||||
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --aux-dir=build-aux --lgpl --libtool --macro-prefix=gl alloca extensions strcase
|
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --aux-dir=build-aux --lgpl --libtool --macro-prefix=gl alloca extensions strcase strftime
|
||||||
|
|
||||||
AUTOMAKE_OPTIONS = 1.5 gnits
|
AUTOMAKE_OPTIONS = 1.5 gnits
|
||||||
|
|
||||||
|
@ -71,6 +71,24 @@ EXTRA_DIST += $(top_srcdir)/build-aux/link-warning.h
|
||||||
|
|
||||||
## end gnulib module link-warning
|
## end gnulib module link-warning
|
||||||
|
|
||||||
|
## begin gnulib module stdbool
|
||||||
|
|
||||||
|
BUILT_SOURCES += $(STDBOOL_H)
|
||||||
|
|
||||||
|
# We need the following in order to create <stdbool.h> when the system
|
||||||
|
# doesn't have one that works.
|
||||||
|
stdbool.h: stdbool.in.h
|
||||||
|
rm -f $@-t $@
|
||||||
|
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||||||
|
sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool.in.h; \
|
||||||
|
} > $@-t
|
||||||
|
mv $@-t $@
|
||||||
|
MOSTLYCLEANFILES += stdbool.h stdbool.h-t
|
||||||
|
|
||||||
|
EXTRA_DIST += stdbool.in.h
|
||||||
|
|
||||||
|
## end gnulib module stdbool
|
||||||
|
|
||||||
## begin gnulib module strcase
|
## begin gnulib module strcase
|
||||||
|
|
||||||
|
|
||||||
|
@ -80,6 +98,15 @@ EXTRA_libgnu_la_SOURCES += strcasecmp.c strncasecmp.c
|
||||||
|
|
||||||
## end gnulib module strcase
|
## end gnulib module strcase
|
||||||
|
|
||||||
|
## begin gnulib module strftime
|
||||||
|
|
||||||
|
|
||||||
|
EXTRA_DIST += strftime.c strftime.h
|
||||||
|
|
||||||
|
EXTRA_libgnu_la_SOURCES += strftime.c
|
||||||
|
|
||||||
|
## end gnulib module strftime
|
||||||
|
|
||||||
## begin gnulib module strings
|
## begin gnulib module strings
|
||||||
|
|
||||||
BUILT_SOURCES += strings.h
|
BUILT_SOURCES += strings.h
|
||||||
|
@ -89,7 +116,8 @@ BUILT_SOURCES += strings.h
|
||||||
strings.h: strings.in.h
|
strings.h: strings.in.h
|
||||||
rm -f $@-t $@
|
rm -f $@-t $@
|
||||||
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
|
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
|
||||||
sed -e 's/@''INCLUDE_NEXT''@/$(INCLUDE_NEXT)/g' \
|
sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||||||
|
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||||||
-e 's|@''NEXT_STRINGS_H''@|$(NEXT_STRINGS_H)|g' \
|
-e 's|@''NEXT_STRINGS_H''@|$(NEXT_STRINGS_H)|g' \
|
||||||
-e 's|@''HAVE_STRCASECMP''@|$(HAVE_STRCASECMP)|g' \
|
-e 's|@''HAVE_STRCASECMP''@|$(HAVE_STRCASECMP)|g' \
|
||||||
-e 's|@''HAVE_DECL_STRNCASECMP''@|$(HAVE_DECL_STRNCASECMP)|g' \
|
-e 's|@''HAVE_DECL_STRNCASECMP''@|$(HAVE_DECL_STRNCASECMP)|g' \
|
||||||
|
@ -103,6 +131,68 @@ EXTRA_DIST += strings.in.h
|
||||||
|
|
||||||
## end gnulib module strings
|
## end gnulib module strings
|
||||||
|
|
||||||
|
## begin gnulib module time
|
||||||
|
|
||||||
|
BUILT_SOURCES += time.h
|
||||||
|
|
||||||
|
# We need the following in order to create <time.h> when the system
|
||||||
|
# doesn't have one that works with the given compiler.
|
||||||
|
time.h: time.in.h
|
||||||
|
rm -f $@-t $@
|
||||||
|
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
|
||||||
|
sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||||||
|
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||||||
|
-e 's|@NEXT_TIME_H''@|$(NEXT_TIME_H)|g' \
|
||||||
|
-e 's|@REPLACE_LOCALTIME_R''@|$(REPLACE_LOCALTIME_R)|g' \
|
||||||
|
-e 's|@REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \
|
||||||
|
-e 's|@REPLACE_STRPTIME''@|$(REPLACE_STRPTIME)|g' \
|
||||||
|
-e 's|@REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \
|
||||||
|
-e 's|@SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \
|
||||||
|
-e 's|@TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \
|
||||||
|
< $(srcdir)/time.in.h; \
|
||||||
|
} > $@-t
|
||||||
|
mv $@-t $@
|
||||||
|
MOSTLYCLEANFILES += time.h time.h-t
|
||||||
|
|
||||||
|
EXTRA_DIST += time.in.h
|
||||||
|
|
||||||
|
## end gnulib module time
|
||||||
|
|
||||||
|
## begin gnulib module time_r
|
||||||
|
|
||||||
|
|
||||||
|
EXTRA_DIST += time_r.c
|
||||||
|
|
||||||
|
EXTRA_libgnu_la_SOURCES += time_r.c
|
||||||
|
|
||||||
|
## end gnulib module time_r
|
||||||
|
|
||||||
|
## begin gnulib module wchar
|
||||||
|
|
||||||
|
BUILT_SOURCES += $(WCHAR_H)
|
||||||
|
|
||||||
|
# We need the following in order to create <wchar.h> when the system
|
||||||
|
# version does not work standalone.
|
||||||
|
wchar.h: wchar.in.h
|
||||||
|
rm -f $@-t $@
|
||||||
|
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
|
||||||
|
sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
|
||||||
|
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
|
||||||
|
-e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
|
||||||
|
-e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \
|
||||||
|
-e 's|@''GNULIB_WCWIDTH''@|$(GNULIB_WCWIDTH)|g' \
|
||||||
|
-e 's|@''HAVE_DECL_WCWIDTH''@|$(HAVE_DECL_WCWIDTH)|g' \
|
||||||
|
-e 's|@''REPLACE_WCWIDTH''@|$(REPLACE_WCWIDTH)|g' \
|
||||||
|
-e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
|
||||||
|
< $(srcdir)/wchar.in.h; \
|
||||||
|
} > $@-t
|
||||||
|
mv $@-t $@
|
||||||
|
MOSTLYCLEANFILES += wchar.h wchar.h-t
|
||||||
|
|
||||||
|
EXTRA_DIST += wchar.in.h
|
||||||
|
|
||||||
|
## end gnulib module wchar
|
||||||
|
|
||||||
## begin gnulib module dummy
|
## begin gnulib module dummy
|
||||||
|
|
||||||
libgnu_la_SOURCES += dummy.c
|
libgnu_la_SOURCES += dummy.c
|
||||||
|
|
119
lib/stdbool.in.h
Normal file
119
lib/stdbool.in.h
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
/* Copyright (C) 2001-2003, 2006-2008 Free Software Foundation, Inc.
|
||||||
|
Written by Bruno Haible <haible@clisp.cons.org>, 2001.
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public License
|
||||||
|
along with this program; if not, write to the Free Software Foundation,
|
||||||
|
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||||
|
|
||||||
|
#ifndef _GL_STDBOOL_H
|
||||||
|
#define _GL_STDBOOL_H
|
||||||
|
|
||||||
|
/* ISO C 99 <stdbool.h> for platforms that lack it. */
|
||||||
|
|
||||||
|
/* Usage suggestions:
|
||||||
|
|
||||||
|
Programs that use <stdbool.h> should be aware of some limitations
|
||||||
|
and standards compliance issues.
|
||||||
|
|
||||||
|
Standards compliance:
|
||||||
|
|
||||||
|
- <stdbool.h> must be #included before 'bool', 'false', 'true'
|
||||||
|
can be used.
|
||||||
|
|
||||||
|
- You cannot assume that sizeof (bool) == 1.
|
||||||
|
|
||||||
|
- Programs should not undefine the macros bool, true, and false,
|
||||||
|
as C99 lists that as an "obsolescent feature".
|
||||||
|
|
||||||
|
Limitations of this substitute, when used in a C89 environment:
|
||||||
|
|
||||||
|
- <stdbool.h> must be #included before the '_Bool' type can be used.
|
||||||
|
|
||||||
|
- You cannot assume that _Bool is a typedef; it might be a macro.
|
||||||
|
|
||||||
|
- Bit-fields of type 'bool' are not supported. Portable code
|
||||||
|
should use 'unsigned int foo : 1;' rather than 'bool foo : 1;'.
|
||||||
|
|
||||||
|
- In C99, casts and automatic conversions to '_Bool' or 'bool' are
|
||||||
|
performed in such a way that every nonzero value gets converted
|
||||||
|
to 'true', and zero gets converted to 'false'. This doesn't work
|
||||||
|
with this substitute. With this substitute, only the values 0 and 1
|
||||||
|
give the expected result when converted to _Bool' or 'bool'.
|
||||||
|
|
||||||
|
Also, it is suggested that programs use 'bool' rather than '_Bool';
|
||||||
|
this isn't required, but 'bool' is more common. */
|
||||||
|
|
||||||
|
|
||||||
|
/* 7.16. Boolean type and values */
|
||||||
|
|
||||||
|
/* BeOS <sys/socket.h> already #defines false 0, true 1. We use the same
|
||||||
|
definitions below, but temporarily we have to #undef them. */
|
||||||
|
#if defined __BEOS__ && !defined __HAIKU__
|
||||||
|
# include <OS.h> /* defines bool but not _Bool */
|
||||||
|
# undef false
|
||||||
|
# undef true
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* For the sake of symbolic names in gdb, we define true and false as
|
||||||
|
enum constants, not only as macros.
|
||||||
|
It is tempting to write
|
||||||
|
typedef enum { false = 0, true = 1 } _Bool;
|
||||||
|
so that gdb prints values of type 'bool' symbolically. But if we do
|
||||||
|
this, values of type '_Bool' may promote to 'int' or 'unsigned int'
|
||||||
|
(see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int'
|
||||||
|
(see ISO C 99 6.3.1.1.(2)). So we add a negative value to the
|
||||||
|
enum; this ensures that '_Bool' promotes to 'int'. */
|
||||||
|
#if defined __cplusplus || (defined __BEOS__ && !defined __HAIKU__)
|
||||||
|
/* A compiler known to have 'bool'. */
|
||||||
|
/* If the compiler already has both 'bool' and '_Bool', we can assume they
|
||||||
|
are the same types. */
|
||||||
|
# if !@HAVE__BOOL@
|
||||||
|
typedef bool _Bool;
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# if !defined __GNUC__
|
||||||
|
/* If @HAVE__BOOL@:
|
||||||
|
Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when
|
||||||
|
the built-in _Bool type is used. See
|
||||||
|
http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
|
||||||
|
http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
|
||||||
|
http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
|
||||||
|
Similar bugs are likely with other compilers as well; this file
|
||||||
|
wouldn't be used if <stdbool.h> was working.
|
||||||
|
So we override the _Bool type.
|
||||||
|
If !@HAVE__BOOL@:
|
||||||
|
Need to define _Bool ourselves. As 'signed char' or as an enum type?
|
||||||
|
Use of a typedef, with SunPRO C, leads to a stupid
|
||||||
|
"warning: _Bool is a keyword in ISO C99".
|
||||||
|
Use of an enum type, with IRIX cc, leads to a stupid
|
||||||
|
"warning(1185): enumerated type mixed with another type".
|
||||||
|
Even the existence of an enum type, without a typedef,
|
||||||
|
"Invalid enumerator. (badenum)" with HP-UX cc on Tru64.
|
||||||
|
The only benefit of the enum, debuggability, is not important
|
||||||
|
with these compilers. So use 'signed char' and no enum. */
|
||||||
|
# define _Bool signed char
|
||||||
|
# else
|
||||||
|
/* With this compiler, trust the _Bool type if the compiler has it. */
|
||||||
|
# if !@HAVE__BOOL@
|
||||||
|
typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool;
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
#define bool _Bool
|
||||||
|
|
||||||
|
/* The other macros must be usable in preprocessor directives. */
|
||||||
|
#define false 0
|
||||||
|
#define true 1
|
||||||
|
#define __bool_true_false_are_defined 1
|
||||||
|
|
||||||
|
#endif /* _GL_STDBOOL_H */
|
1461
lib/strftime.c
Normal file
1461
lib/strftime.c
Normal file
File diff suppressed because it is too large
Load diff
26
lib/strftime.h
Normal file
26
lib/strftime.h
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
/* declarations for strftime.c
|
||||||
|
|
||||||
|
Copyright (C) 2002, 2004, 2008 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
the Free Software Foundation; either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
/* Just like strftime, but with two more arguments:
|
||||||
|
POSIX requires that strftime use the local timezone information.
|
||||||
|
When __UTC is nonzero and tm->tm_zone is NULL or the empty string,
|
||||||
|
use UTC instead. Use __NS as the number of nanoseconds in the
|
||||||
|
%N directive. */
|
||||||
|
size_t nstrftime (char *, size_t, char const *, struct tm const *,
|
||||||
|
int __utc, int __ns);
|
|
@ -1,6 +1,6 @@
|
||||||
/* A substitute <strings.h>.
|
/* A substitute <strings.h>.
|
||||||
|
|
||||||
Copyright (C) 2007 Free Software Foundation, Inc.
|
Copyright (C) 2007-2008 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU Lesser General Public License as published by
|
it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -18,6 +18,8 @@
|
||||||
|
|
||||||
#ifndef _GL_STRINGS_H
|
#ifndef _GL_STRINGS_H
|
||||||
|
|
||||||
|
@PRAGMA_SYSTEM_HEADER@
|
||||||
|
|
||||||
/* The include_next requires a split double-inclusion guard. */
|
/* The include_next requires a split double-inclusion guard. */
|
||||||
#@INCLUDE_NEXT@ @NEXT_STRINGS_H@
|
#@INCLUDE_NEXT@ @NEXT_STRINGS_H@
|
||||||
|
|
||||||
|
|
116
lib/time.in.h
Normal file
116
lib/time.in.h
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
/* A more-standard <time.h>.
|
||||||
|
|
||||||
|
Copyright (C) 2007-2008 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public License
|
||||||
|
along with this program; if not, write to the Free Software Foundation,
|
||||||
|
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||||
|
|
||||||
|
@PRAGMA_SYSTEM_HEADER@
|
||||||
|
|
||||||
|
/* Don't get in the way of glibc when it includes time.h merely to
|
||||||
|
declare a few standard symbols, rather than to declare all the
|
||||||
|
symbols. Also, Solaris 8 <time.h> eventually includes itself
|
||||||
|
recursively; if that is happening, just include the system <time.h>
|
||||||
|
without adding our own declarations. */
|
||||||
|
#if (defined __need_time_t || defined __need_clock_t \
|
||||||
|
|| defined __need_timespec \
|
||||||
|
|| defined _GL_TIME_H)
|
||||||
|
|
||||||
|
# @INCLUDE_NEXT@ @NEXT_TIME_H@
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
# define _GL_TIME_H
|
||||||
|
|
||||||
|
# @INCLUDE_NEXT@ @NEXT_TIME_H@
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* Some systems don't define struct timespec (e.g., AIX 4.1, Ultrix 4.3).
|
||||||
|
Or they define it with the wrong member names or define it in <sys/time.h>
|
||||||
|
(e.g., FreeBSD circa 1997). */
|
||||||
|
# if ! @TIME_H_DEFINES_STRUCT_TIMESPEC@
|
||||||
|
# if @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
|
||||||
|
# include <sys/time.h>
|
||||||
|
# else
|
||||||
|
# undef timespec
|
||||||
|
# define timespec rpl_timespec
|
||||||
|
struct timespec
|
||||||
|
{
|
||||||
|
time_t tv_sec;
|
||||||
|
long int tv_nsec;
|
||||||
|
};
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* Sleep for at least RQTP seconds unless interrupted, If interrupted,
|
||||||
|
return -1 and store the remaining time into RMTP. See
|
||||||
|
<http://www.opengroup.org/susv3xsh/nanosleep.html>. */
|
||||||
|
# if @REPLACE_NANOSLEEP@
|
||||||
|
# define nanosleep rpl_nanosleep
|
||||||
|
int nanosleep (struct timespec const *__rqtp, struct timespec *__rmtp);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* Convert TIMER to RESULT, assuming local time and UTC respectively. See
|
||||||
|
<http://www.opengroup.org/susv3xsh/localtime_r.html> and
|
||||||
|
<http://www.opengroup.org/susv3xsh/gmtime_r.html>. */
|
||||||
|
# if @REPLACE_LOCALTIME_R@
|
||||||
|
# undef localtime_r
|
||||||
|
# define localtime_r rpl_localtime_r
|
||||||
|
# undef gmtime_r
|
||||||
|
# define gmtime_r rpl_gmtime_r
|
||||||
|
struct tm *localtime_r (time_t const *restrict __timer,
|
||||||
|
struct tm *restrict __result);
|
||||||
|
struct tm *gmtime_r (time_t const *restrict __timer,
|
||||||
|
struct tm *restrict __result);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* Parse BUF as a time stamp, assuming FORMAT specifies its layout, and store
|
||||||
|
the resulting broken-down time into TM. See
|
||||||
|
<http://www.opengroup.org/susv3xsh/strptime.html>. */
|
||||||
|
# if @REPLACE_STRPTIME@
|
||||||
|
# undef strptime
|
||||||
|
# define strptime rpl_strptime
|
||||||
|
char *strptime (char const *restrict __buf, char const *restrict __format,
|
||||||
|
struct tm *restrict __tm);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* Convert TM to a time_t value, assuming UTC. */
|
||||||
|
# if @REPLACE_TIMEGM@
|
||||||
|
# undef timegm
|
||||||
|
# define timegm rpl_timegm
|
||||||
|
time_t timegm (struct tm *__tm);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* Encourage applications to avoid unsafe functions that can overrun
|
||||||
|
buffers when given outlandish struct tm values. Portable
|
||||||
|
applications should use strftime (or even sprintf) instead. */
|
||||||
|
# if GNULIB_PORTCHECK
|
||||||
|
# undef asctime
|
||||||
|
# define asctime eschew_asctime
|
||||||
|
# undef asctime_r
|
||||||
|
# define asctime_r eschew_asctime_r
|
||||||
|
# undef ctime
|
||||||
|
# define ctime eschew_ctime
|
||||||
|
# undef ctime_r
|
||||||
|
# define ctime_r eschew_ctime_r
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
47
lib/time_r.c
Normal file
47
lib/time_r.c
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
/* Reentrant time functions like localtime_r.
|
||||||
|
|
||||||
|
Copyright (C) 2003, 2006, 2007 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public License along
|
||||||
|
with this program; if not, write to the Free Software Foundation,
|
||||||
|
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||||
|
|
||||||
|
/* Written by Paul Eggert. */
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
static struct tm *
|
||||||
|
copy_tm_result (struct tm *dest, struct tm const *src)
|
||||||
|
{
|
||||||
|
if (! src)
|
||||||
|
return 0;
|
||||||
|
*dest = *src;
|
||||||
|
return dest;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
struct tm *
|
||||||
|
gmtime_r (time_t const * restrict t, struct tm * restrict tp)
|
||||||
|
{
|
||||||
|
return copy_tm_result (tp, gmtime (t));
|
||||||
|
}
|
||||||
|
|
||||||
|
struct tm *
|
||||||
|
localtime_r (time_t const * restrict t, struct tm * restrict tp)
|
||||||
|
{
|
||||||
|
return copy_tm_result (tp, localtime (t));
|
||||||
|
}
|
93
lib/wchar.in.h
Normal file
93
lib/wchar.in.h
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
/* A substitute for ISO C99 <wchar.h>, for platforms that have issues.
|
||||||
|
|
||||||
|
Copyright (C) 2007-2008 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public License
|
||||||
|
along with this program; if not, write to the Free Software Foundation,
|
||||||
|
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||||
|
|
||||||
|
/* Written by Eric Blake. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ISO C 99 <wchar.h> for platforms that have issues.
|
||||||
|
* <http://www.opengroup.org/susv3xbd/wchar.h.html>
|
||||||
|
*
|
||||||
|
* For now, this just ensures proper prerequisite inclusion order and
|
||||||
|
* the declaration of wcwidth().
|
||||||
|
*/
|
||||||
|
|
||||||
|
@PRAGMA_SYSTEM_HEADER@
|
||||||
|
|
||||||
|
#ifdef __need_mbstate_t
|
||||||
|
/* Special invocation convention inside uClibc header files. */
|
||||||
|
|
||||||
|
#@INCLUDE_NEXT@ @NEXT_WCHAR_H@
|
||||||
|
|
||||||
|
#else
|
||||||
|
/* Normal invocation convention. */
|
||||||
|
|
||||||
|
#ifndef _GL_WCHAR_H
|
||||||
|
|
||||||
|
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||||||
|
<wchar.h>.
|
||||||
|
BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||||||
|
included before <wchar.h>. */
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
/* Include the original <wchar.h> if it exists.
|
||||||
|
Some builds of uClibc lack it. */
|
||||||
|
/* The include_next requires a split double-inclusion guard. */
|
||||||
|
#if @HAVE_WCHAR_H@
|
||||||
|
# @INCLUDE_NEXT@ @NEXT_WCHAR_H@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _GL_WCHAR_H
|
||||||
|
#define _GL_WCHAR_H
|
||||||
|
|
||||||
|
/* The definition of GL_LINK_WARNING is copied here. */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* Return the number of screen columns needed for WC. */
|
||||||
|
#if @GNULIB_WCWIDTH@
|
||||||
|
# if @REPLACE_WCWIDTH@
|
||||||
|
# undef wcwidth
|
||||||
|
# define wcwidth rpl_wcwidth
|
||||||
|
extern int wcwidth (wchar_t);
|
||||||
|
# else
|
||||||
|
# if !defined wcwidth && !@HAVE_DECL_WCWIDTH@
|
||||||
|
/* wcwidth exists but is not declared. */
|
||||||
|
extern int wcwidth (int /* actually wchar_t */);
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#elif defined GNULIB_POSIXCHECK
|
||||||
|
# undef wcwidth
|
||||||
|
# define wcwidth(w) \
|
||||||
|
(GL_LINK_WARNING ("wcwidth is unportable - " \
|
||||||
|
"use gnulib module wcwidth for portability"), \
|
||||||
|
wcwidth (w))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _GL_WCHAR_H */
|
||||||
|
#endif /* _GL_WCHAR_H */
|
||||||
|
#endif
|
|
@ -11,3 +11,10 @@ strcase.m4
|
||||||
string_h.m4
|
string_h.m4
|
||||||
strings_h.m4
|
strings_h.m4
|
||||||
onceonly.m4
|
onceonly.m4
|
||||||
|
mbstate_t.m4
|
||||||
|
stdbool.m4
|
||||||
|
strftime.m4
|
||||||
|
time_h.m4
|
||||||
|
time_r.m4
|
||||||
|
tm_gmtoff.m4
|
||||||
|
wchar.m4
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
|
|
||||||
# Specification in the form of a command-line invocation:
|
# Specification in the form of a command-line invocation:
|
||||||
# gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --aux-dir=build-aux --lgpl --libtool --macro-prefix=gl alloca extensions strcase
|
# gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --aux-dir=build-aux --lgpl --libtool --macro-prefix=gl alloca extensions strcase strftime
|
||||||
|
|
||||||
# Specification in the form of a few gnulib-tool.m4 macro invocations:
|
# Specification in the form of a few gnulib-tool.m4 macro invocations:
|
||||||
gl_LOCAL_DIR([])
|
gl_LOCAL_DIR([])
|
||||||
|
@ -23,6 +23,7 @@ gl_MODULES([
|
||||||
alloca
|
alloca
|
||||||
extensions
|
extensions
|
||||||
strcase
|
strcase
|
||||||
|
strftime
|
||||||
])
|
])
|
||||||
gl_AVOID([])
|
gl_AVOID([])
|
||||||
gl_SOURCE_BASE([lib])
|
gl_SOURCE_BASE([lib])
|
||||||
|
|
|
@ -46,8 +46,13 @@ LTALLOCA=`echo "$ALLOCA" | sed 's/\.[^.]* /.lo /g;s/\.[^.]*$/.lo/'`
|
||||||
changequote([, ])dnl
|
changequote([, ])dnl
|
||||||
AC_SUBST([LTALLOCA])
|
AC_SUBST([LTALLOCA])
|
||||||
gl_FUNC_ALLOCA
|
gl_FUNC_ALLOCA
|
||||||
|
AM_STDBOOL_H
|
||||||
gl_STRCASE
|
gl_STRCASE
|
||||||
|
gl_FUNC_GNU_STRFTIME
|
||||||
gl_HEADER_STRINGS_H
|
gl_HEADER_STRINGS_H
|
||||||
|
gl_HEADER_TIME_H
|
||||||
|
gl_TIME_R
|
||||||
|
gl_WCHAR_H
|
||||||
m4_ifval(gl_LIBSOURCES_LIST, [
|
m4_ifval(gl_LIBSOURCES_LIST, [
|
||||||
m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ ||
|
m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ ||
|
||||||
for gl_file in ]gl_LIBSOURCES_LIST[ ; do
|
for gl_file in ]gl_LIBSOURCES_LIST[ ; do
|
||||||
|
@ -180,13 +185,26 @@ AC_DEFUN([gl_FILE_LIST], [
|
||||||
lib/alloca.c
|
lib/alloca.c
|
||||||
lib/alloca.in.h
|
lib/alloca.in.h
|
||||||
lib/dummy.c
|
lib/dummy.c
|
||||||
|
lib/stdbool.in.h
|
||||||
lib/strcasecmp.c
|
lib/strcasecmp.c
|
||||||
|
lib/strftime.c
|
||||||
|
lib/strftime.h
|
||||||
lib/strings.in.h
|
lib/strings.in.h
|
||||||
lib/strncasecmp.c
|
lib/strncasecmp.c
|
||||||
|
lib/time.in.h
|
||||||
|
lib/time_r.c
|
||||||
|
lib/wchar.in.h
|
||||||
m4/alloca.m4
|
m4/alloca.m4
|
||||||
m4/extensions.m4
|
m4/extensions.m4
|
||||||
m4/gnulib-common.m4
|
m4/gnulib-common.m4
|
||||||
m4/include_next.m4
|
m4/include_next.m4
|
||||||
|
m4/mbstate_t.m4
|
||||||
|
m4/stdbool.m4
|
||||||
m4/strcase.m4
|
m4/strcase.m4
|
||||||
|
m4/strftime.m4
|
||||||
m4/strings_h.m4
|
m4/strings_h.m4
|
||||||
|
m4/time_h.m4
|
||||||
|
m4/time_r.m4
|
||||||
|
m4/tm_gmtoff.m4
|
||||||
|
m4/wchar.m4
|
||||||
])
|
])
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# include_next.m4 serial 6
|
# include_next.m4 serial 7
|
||||||
dnl Copyright (C) 2006-2008 Free Software Foundation, Inc.
|
dnl Copyright (C) 2006-2008 Free Software Foundation, Inc.
|
||||||
dnl This file is free software; the Free Software Foundation
|
dnl This file is free software; the Free Software Foundation
|
||||||
dnl gives unlimited permission to copy and/or distribute it,
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
|
@ -6,6 +6,21 @@ dnl with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
dnl From Paul Eggert and Derek Price.
|
dnl From Paul Eggert and Derek Price.
|
||||||
|
|
||||||
|
dnl Sets INCLUDE_NEXT and PRAGMA_SYSTEM_HEADER.
|
||||||
|
dnl
|
||||||
|
dnl INCLUDE_NEXT expands to 'include_next' if the compiler supports it, or to
|
||||||
|
dnl 'include' otherwise.
|
||||||
|
dnl
|
||||||
|
dnl PRAGMA_SYSTEM_HEADER can be used in files that contain #include_next,
|
||||||
|
dnl so as to avoid GCC warnings when the gcc option -pedantic is used.
|
||||||
|
dnl '#pragma GCC system_header' has the same effect as if the file was found
|
||||||
|
dnl through the include search path specified with '-isystem' options (as
|
||||||
|
dnl opposed to the search path specified with '-I' options). Namely, gcc
|
||||||
|
dnl does not warn about some things, and on some systems (Solaris and Interix)
|
||||||
|
dnl __STDC__ evaluates to 0 instead of to 1. The latter is an undesired side
|
||||||
|
dnl effect; we are therefore careful to use 'defined __STDC__' or '1' instead
|
||||||
|
dnl of plain '__STDC__'.
|
||||||
|
|
||||||
AC_DEFUN([gl_INCLUDE_NEXT],
|
AC_DEFUN([gl_INCLUDE_NEXT],
|
||||||
[
|
[
|
||||||
AC_LANG_PREPROC_REQUIRE()
|
AC_LANG_PREPROC_REQUIRE()
|
||||||
|
@ -36,18 +51,17 @@ EOF
|
||||||
CPPFLAGS="$save_CPPFLAGS"
|
CPPFLAGS="$save_CPPFLAGS"
|
||||||
rm -rf conftestd1 conftestd2
|
rm -rf conftestd1 conftestd2
|
||||||
])
|
])
|
||||||
|
PRAGMA_SYSTEM_HEADER=
|
||||||
if test $gl_cv_have_include_next = yes; then
|
if test $gl_cv_have_include_next = yes; then
|
||||||
|
|
||||||
dnl FIXME: Remove HAVE_INCLUDE_NEXT and update everything that uses it
|
|
||||||
dnl to use @INCLUDE_NEXT@ instead.
|
|
||||||
AC_DEFINE([HAVE_INCLUDE_NEXT], 1,
|
|
||||||
[Define if your compiler supports the #include_next directive.])
|
|
||||||
|
|
||||||
INCLUDE_NEXT=include_next
|
INCLUDE_NEXT=include_next
|
||||||
|
if test -n "$GCC"; then
|
||||||
|
PRAGMA_SYSTEM_HEADER='#pragma GCC system_header'
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
INCLUDE_NEXT=include
|
INCLUDE_NEXT=include
|
||||||
fi
|
fi
|
||||||
AC_SUBST([INCLUDE_NEXT])
|
AC_SUBST([INCLUDE_NEXT])
|
||||||
|
AC_SUBST([PRAGMA_SYSTEM_HEADER])
|
||||||
])
|
])
|
||||||
|
|
||||||
# gl_CHECK_NEXT_HEADERS(HEADER1 HEADER2 ...)
|
# gl_CHECK_NEXT_HEADERS(HEADER1 HEADER2 ...)
|
||||||
|
|
30
m4/mbstate_t.m4
Normal file
30
m4/mbstate_t.m4
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
# mbstate_t.m4 serial 10
|
||||||
|
dnl Copyright (C) 2000-2002, 2008 Free Software Foundation, Inc.
|
||||||
|
dnl This file is free software; the Free Software Foundation
|
||||||
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# From Paul Eggert.
|
||||||
|
|
||||||
|
# BeOS 5 has <wchar.h> but does not define mbstate_t,
|
||||||
|
# so you can't declare an object of that type.
|
||||||
|
# Check for this incompatibility with Standard C.
|
||||||
|
|
||||||
|
# AC_TYPE_MBSTATE_T
|
||||||
|
# -----------------
|
||||||
|
AC_DEFUN([AC_TYPE_MBSTATE_T],
|
||||||
|
[AC_CACHE_CHECK([for mbstate_t], ac_cv_type_mbstate_t,
|
||||||
|
[AC_COMPILE_IFELSE(
|
||||||
|
[AC_LANG_PROGRAM(
|
||||||
|
[AC_INCLUDES_DEFAULT[
|
||||||
|
# include <wchar.h>]],
|
||||||
|
[[mbstate_t x; return sizeof x;]])],
|
||||||
|
[ac_cv_type_mbstate_t=yes],
|
||||||
|
[ac_cv_type_mbstate_t=no])])
|
||||||
|
if test $ac_cv_type_mbstate_t = yes; then
|
||||||
|
AC_DEFINE([HAVE_MBSTATE_T], 1,
|
||||||
|
[Define to 1 if <wchar.h> declares mbstate_t.])
|
||||||
|
else
|
||||||
|
AC_DEFINE([mbstate_t], int,
|
||||||
|
[Define to a type if <wchar.h> does not define.])
|
||||||
|
fi])
|
115
m4/stdbool.m4
Normal file
115
m4/stdbool.m4
Normal file
|
@ -0,0 +1,115 @@
|
||||||
|
# Check for stdbool.h that conforms to C99.
|
||||||
|
|
||||||
|
dnl Copyright (C) 2002-2006 Free Software Foundation, Inc.
|
||||||
|
dnl This file is free software; the Free Software Foundation
|
||||||
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# Prepare for substituting <stdbool.h> if it is not supported.
|
||||||
|
|
||||||
|
AC_DEFUN([AM_STDBOOL_H],
|
||||||
|
[
|
||||||
|
AC_REQUIRE([AC_HEADER_STDBOOL])
|
||||||
|
|
||||||
|
# Define two additional variables used in the Makefile substitution.
|
||||||
|
|
||||||
|
if test "$ac_cv_header_stdbool_h" = yes; then
|
||||||
|
STDBOOL_H=''
|
||||||
|
else
|
||||||
|
STDBOOL_H='stdbool.h'
|
||||||
|
fi
|
||||||
|
AC_SUBST([STDBOOL_H])
|
||||||
|
|
||||||
|
if test "$ac_cv_type__Bool" = yes; then
|
||||||
|
HAVE__BOOL=1
|
||||||
|
else
|
||||||
|
HAVE__BOOL=0
|
||||||
|
fi
|
||||||
|
AC_SUBST([HAVE__BOOL])
|
||||||
|
])
|
||||||
|
|
||||||
|
# AM_STDBOOL_H will be renamed to gl_STDBOOL_H in the future.
|
||||||
|
AC_DEFUN([gl_STDBOOL_H], [AM_STDBOOL_H])
|
||||||
|
|
||||||
|
# This macro is only needed in autoconf <= 2.59. Newer versions of autoconf
|
||||||
|
# have this macro built-in.
|
||||||
|
|
||||||
|
AC_DEFUN([AC_HEADER_STDBOOL],
|
||||||
|
[AC_CACHE_CHECK([for stdbool.h that conforms to C99],
|
||||||
|
[ac_cv_header_stdbool_h],
|
||||||
|
[AC_TRY_COMPILE(
|
||||||
|
[
|
||||||
|
#include <stdbool.h>
|
||||||
|
#ifndef bool
|
||||||
|
"error: bool is not defined"
|
||||||
|
#endif
|
||||||
|
#ifndef false
|
||||||
|
"error: false is not defined"
|
||||||
|
#endif
|
||||||
|
#if false
|
||||||
|
"error: false is not 0"
|
||||||
|
#endif
|
||||||
|
#ifndef true
|
||||||
|
"error: true is not defined"
|
||||||
|
#endif
|
||||||
|
#if true != 1
|
||||||
|
"error: true is not 1"
|
||||||
|
#endif
|
||||||
|
#ifndef __bool_true_false_are_defined
|
||||||
|
"error: __bool_true_false_are_defined is not defined"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct s { _Bool s: 1; _Bool t; } s;
|
||||||
|
|
||||||
|
char a[true == 1 ? 1 : -1];
|
||||||
|
char b[false == 0 ? 1 : -1];
|
||||||
|
char c[__bool_true_false_are_defined == 1 ? 1 : -1];
|
||||||
|
char d[(bool) 0.5 == true ? 1 : -1];
|
||||||
|
bool e = &s;
|
||||||
|
char f[(_Bool) 0.0 == false ? 1 : -1];
|
||||||
|
char g[true];
|
||||||
|
char h[sizeof (_Bool)];
|
||||||
|
char i[sizeof s.t];
|
||||||
|
enum { j = false, k = true, l = false * true, m = true * 256 };
|
||||||
|
_Bool n[m];
|
||||||
|
char o[sizeof n == m * sizeof n[0] ? 1 : -1];
|
||||||
|
char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
|
||||||
|
#if defined __xlc__ || defined __GNUC__
|
||||||
|
/* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
|
||||||
|
reported by James Lemley on 2005-10-05; see
|
||||||
|
http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
|
||||||
|
This test is not quite right, since xlc is allowed to
|
||||||
|
reject this program, as the initializer for xlcbug is
|
||||||
|
not one of the forms that C requires support for.
|
||||||
|
However, doing the test right would require a run-time
|
||||||
|
test, and that would make cross-compilation harder.
|
||||||
|
Let us hope that IBM fixes the xlc bug, and also adds
|
||||||
|
support for this kind of constant expression. In the
|
||||||
|
meantime, this test will reject xlc, which is OK, since
|
||||||
|
our stdbool.h substitute should suffice. We also test
|
||||||
|
this with GCC, where it should work, to detect more
|
||||||
|
quickly whether someone messes up the test in the
|
||||||
|
future. */
|
||||||
|
char digs[] = "0123456789";
|
||||||
|
int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
|
||||||
|
#endif
|
||||||
|
/* Catch a bug in an HP-UX C compiler. See
|
||||||
|
http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
|
||||||
|
http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
|
||||||
|
*/
|
||||||
|
_Bool q = true;
|
||||||
|
_Bool *pq = &q;
|
||||||
|
],
|
||||||
|
[
|
||||||
|
*pq |= q;
|
||||||
|
*pq |= ! q;
|
||||||
|
/* Refer to every declared value, to avoid compiler optimizations. */
|
||||||
|
return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
|
||||||
|
+ !m + !n + !o + !p + !q + !pq);
|
||||||
|
],
|
||||||
|
[ac_cv_header_stdbool_h=yes],
|
||||||
|
[ac_cv_header_stdbool_h=no])])
|
||||||
|
AC_CHECK_TYPES([_Bool])
|
||||||
|
if test $ac_cv_header_stdbool_h = yes; then
|
||||||
|
AC_DEFINE(HAVE_STDBOOL_H, 1, [Define to 1 if stdbool.h conforms to C99.])
|
||||||
|
fi])
|
33
m4/strftime.m4
Normal file
33
m4/strftime.m4
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
#serial 29
|
||||||
|
|
||||||
|
# Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
|
||||||
|
# 2006, 2007 Free Software Foundation, Inc.
|
||||||
|
#
|
||||||
|
# This file is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# Written by Jim Meyering and Paul Eggert.
|
||||||
|
|
||||||
|
AC_DEFUN([gl_FUNC_GNU_STRFTIME],
|
||||||
|
[
|
||||||
|
gl_FUNC_STRFTIME
|
||||||
|
])
|
||||||
|
|
||||||
|
# These are the prerequisite macros for GNU's strftime.c replacement.
|
||||||
|
AC_DEFUN([gl_FUNC_STRFTIME],
|
||||||
|
[
|
||||||
|
AC_LIBOBJ([strftime])
|
||||||
|
|
||||||
|
# This defines (or not) HAVE_TZNAME and HAVE_TM_ZONE.
|
||||||
|
AC_REQUIRE([AC_STRUCT_TIMEZONE])
|
||||||
|
|
||||||
|
AC_REQUIRE([AC_TYPE_MBSTATE_T])
|
||||||
|
AC_REQUIRE([gl_TM_GMTOFF])
|
||||||
|
|
||||||
|
AC_CHECK_FUNCS_ONCE(mblen mbrlen mempcpy tzset)
|
||||||
|
AC_CHECK_HEADERS_ONCE(wchar.h)
|
||||||
|
|
||||||
|
AC_DEFINE([my_strftime], [nstrftime],
|
||||||
|
[Define to the name of the strftime replacement function.])
|
||||||
|
])
|
74
m4/time_h.m4
Normal file
74
m4/time_h.m4
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
# Configure a more-standard replacement for <time.h>.
|
||||||
|
|
||||||
|
# Copyright (C) 2000, 2001, 2003, 2004, 2005, 2006, 2007 Free Software
|
||||||
|
# Foundation, Inc.
|
||||||
|
|
||||||
|
# This file is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# Written by Paul Eggert and Jim Meyering.
|
||||||
|
|
||||||
|
AC_DEFUN([gl_HEADER_TIME_H],
|
||||||
|
[
|
||||||
|
dnl Use AC_REQUIRE here, so that the default behavior below is expanded
|
||||||
|
dnl once only, before all statements that occur in other macros.
|
||||||
|
AC_REQUIRE([gl_HEADER_TIME_H_BODY])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([gl_HEADER_TIME_H_BODY],
|
||||||
|
[
|
||||||
|
AC_REQUIRE([AC_C_RESTRICT])
|
||||||
|
AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
|
||||||
|
gl_CHECK_NEXT_HEADERS([time.h])
|
||||||
|
AC_REQUIRE([gl_CHECK_TYPE_STRUCT_TIMESPEC])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([gl_HEADER_TIME_H_DEFAULTS],
|
||||||
|
[
|
||||||
|
dnl If another module says to replace or to not replace, do that.
|
||||||
|
dnl Otherwise, replace only if someone compiles with -DGNULIB_PORTCHECK;
|
||||||
|
dnl this lets maintainers check for portability.
|
||||||
|
REPLACE_LOCALTIME_R=GNULIB_PORTCHECK; AC_SUBST([REPLACE_LOCALTIME_R])
|
||||||
|
REPLACE_NANOSLEEP=GNULIB_PORTCHECK; AC_SUBST([REPLACE_NANOSLEEP])
|
||||||
|
REPLACE_STRPTIME=GNULIB_PORTCHECK; AC_SUBST([REPLACE_STRPTIME])
|
||||||
|
REPLACE_TIMEGM=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TIMEGM])
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl Define HAVE_STRUCT_TIMESPEC if `struct timespec' is declared
|
||||||
|
dnl in time.h or sys/time.h.
|
||||||
|
|
||||||
|
AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC],
|
||||||
|
[
|
||||||
|
AC_CHECK_HEADERS_ONCE([sys/time.h])
|
||||||
|
AC_CACHE_CHECK([for struct timespec in <time.h>],
|
||||||
|
[gl_cv_sys_struct_timespec_in_time_h],
|
||||||
|
[AC_COMPILE_IFELSE(
|
||||||
|
[AC_LANG_PROGRAM(
|
||||||
|
[[#include <time.h>
|
||||||
|
]],
|
||||||
|
[[static struct timespec x; x.tv_sec = x.tv_nsec;]])],
|
||||||
|
[gl_cv_sys_struct_timespec_in_time_h=yes],
|
||||||
|
[gl_cv_sys_struct_timespec_in_time_h=no])])
|
||||||
|
|
||||||
|
TIME_H_DEFINES_STRUCT_TIMESPEC=0
|
||||||
|
SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0
|
||||||
|
if test $gl_cv_sys_struct_timespec_in_time_h = yes; then
|
||||||
|
TIME_H_DEFINES_STRUCT_TIMESPEC=1
|
||||||
|
else
|
||||||
|
AC_CACHE_CHECK([for struct timespec in <sys/time.h>],
|
||||||
|
[gl_cv_sys_struct_timespec_in_sys_time_h],
|
||||||
|
[AC_COMPILE_IFELSE(
|
||||||
|
[AC_LANG_PROGRAM(
|
||||||
|
[[#include <sys/time.h>
|
||||||
|
]],
|
||||||
|
[[static struct timespec x; x.tv_sec = x.tv_nsec;]])],
|
||||||
|
[gl_cv_sys_struct_timespec_in_sys_time_h=yes],
|
||||||
|
[gl_cv_sys_struct_timespec_in_sys_time_h=no])])
|
||||||
|
if test $gl_cv_sys_struct_timespec_in_sys_time_h = yes; then
|
||||||
|
SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
AC_SUBST([TIME_H_DEFINES_STRUCT_TIMESPEC])
|
||||||
|
AC_SUBST([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC])
|
||||||
|
])
|
43
m4/time_r.m4
Normal file
43
m4/time_r.m4
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
dnl Reentrant time functions like localtime_r.
|
||||||
|
|
||||||
|
dnl Copyright (C) 2003, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||||
|
dnl This file is free software; the Free Software Foundation
|
||||||
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
dnl Written by Paul Eggert.
|
||||||
|
|
||||||
|
AC_DEFUN([gl_TIME_R],
|
||||||
|
[
|
||||||
|
dnl Persuade glibc and Solaris <time.h> to declare localtime_r.
|
||||||
|
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|
||||||
|
|
||||||
|
AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
|
||||||
|
AC_REQUIRE([AC_C_RESTRICT])
|
||||||
|
|
||||||
|
AC_CACHE_CHECK([whether localtime_r is compatible with its POSIX signature],
|
||||||
|
[gl_cv_time_r_posix],
|
||||||
|
[AC_TRY_COMPILE(
|
||||||
|
[#include <time.h>],
|
||||||
|
[/* We don't need to append 'restrict's to the argument types,
|
||||||
|
even though the POSIX signature has the 'restrict's,
|
||||||
|
since C99 says they can't affect type compatibility. */
|
||||||
|
struct tm * (*ptr) (time_t const *, struct tm *) = localtime_r;
|
||||||
|
if (ptr) return 0;
|
||||||
|
/* Check the return type is a pointer. On HP-UX 10 it is 'int'. */
|
||||||
|
*localtime_r (0, 0);],
|
||||||
|
[gl_cv_time_r_posix=yes],
|
||||||
|
[gl_cv_time_r_posix=no])])
|
||||||
|
if test $gl_cv_time_r_posix = yes; then
|
||||||
|
REPLACE_LOCALTIME_R=0
|
||||||
|
else
|
||||||
|
REPLACE_LOCALTIME_R=1
|
||||||
|
AC_LIBOBJ([time_r])
|
||||||
|
gl_PREREQ_TIME_R
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
# Prerequisites of lib/time_r.c.
|
||||||
|
AC_DEFUN([gl_PREREQ_TIME_R], [
|
||||||
|
:
|
||||||
|
])
|
14
m4/tm_gmtoff.m4
Normal file
14
m4/tm_gmtoff.m4
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
# tm_gmtoff.m4 serial 2
|
||||||
|
dnl Copyright (C) 2002 Free Software Foundation, Inc.
|
||||||
|
dnl This file is free software; the Free Software Foundation
|
||||||
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
AC_DEFUN([gl_TM_GMTOFF],
|
||||||
|
[
|
||||||
|
AC_CHECK_MEMBER([struct tm.tm_gmtoff],
|
||||||
|
[AC_DEFINE(HAVE_TM_GMTOFF, 1,
|
||||||
|
[Define if struct tm has the tm_gmtoff member.])],
|
||||||
|
,
|
||||||
|
[#include <time.h>])
|
||||||
|
])
|
54
m4/wchar.m4
Normal file
54
m4/wchar.m4
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues.
|
||||||
|
|
||||||
|
dnl Copyright (C) 2007 Free Software Foundation, Inc.
|
||||||
|
dnl This file is free software; the Free Software Foundation
|
||||||
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
dnl Written by Eric Blake.
|
||||||
|
|
||||||
|
# wchar.m4 serial 4
|
||||||
|
|
||||||
|
AC_DEFUN([gl_WCHAR_H],
|
||||||
|
[
|
||||||
|
AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
|
||||||
|
AC_CACHE_CHECK([whether <wchar.h> is standalone],
|
||||||
|
[gl_cv_header_wchar_h_standalone],
|
||||||
|
[AC_COMPILE_IFELSE([[#include <wchar.h>
|
||||||
|
wchar_t w;]],
|
||||||
|
[gl_cv_header_wchar_h_standalone=yes],
|
||||||
|
[gl_cv_header_wchar_h_standalone=no])])
|
||||||
|
if test $gl_cv_header_wchar_h_standalone != yes; then
|
||||||
|
WCHAR_H=wchar.h
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl Prepare for creating substitute <wchar.h>.
|
||||||
|
dnl Do it always: WCHAR_H may be empty here but can be set later.
|
||||||
|
dnl Check for <wchar.h> (missing in Linux uClibc when built without wide
|
||||||
|
dnl character support).
|
||||||
|
AC_CHECK_HEADERS_ONCE([wchar.h])
|
||||||
|
if test $ac_cv_header_wchar_h = yes; then
|
||||||
|
HAVE_WCHAR_H=1
|
||||||
|
else
|
||||||
|
HAVE_WCHAR_H=0
|
||||||
|
fi
|
||||||
|
AC_SUBST([HAVE_WCHAR_H])
|
||||||
|
gl_CHECK_NEXT_HEADERS([wchar.h])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([gl_WCHAR_MODULE_INDICATOR],
|
||||||
|
[
|
||||||
|
dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
|
||||||
|
AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
|
||||||
|
GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([gl_WCHAR_H_DEFAULTS],
|
||||||
|
[
|
||||||
|
GNULIB_WCWIDTH=0; AC_SUBST([GNULIB_WCWIDTH])
|
||||||
|
dnl Assume proper GNU behavior unless another module says otherwise.
|
||||||
|
HAVE_DECL_WCWIDTH=1; AC_SUBST([HAVE_DECL_WCWIDTH])
|
||||||
|
REPLACE_WCWIDTH=0; AC_SUBST([REPLACE_WCWIDTH])
|
||||||
|
WCHAR_H=
|
||||||
|
AC_SUBST([WCHAR_H])
|
||||||
|
])
|
Loading…
Add table
Add a link
Reference in a new issue