Mercurial > hg > octave-lojdl > gnulib-hg
annotate m4/strftime.m4 @ 2029:aebedfa1a43b
(_jm_STRFTIME_PREREQS): Use 3-arg form of AC_DEFINE for HAVE_TM_GMTOFF.
author | Jim Meyering <jim@meyering.net> |
---|---|
date | Fri, 10 Dec 1999 14:35:38 +0000 |
parents | c34e888e9573 |
children | 188eccfa9df0 |
rev | line source |
---|---|
2025
c34e888e9573
Add checks for most of the cpp macros tested in GNU's strftime.c.
Jim Meyering <jim@meyering.net>
parents:
1773
diff
changeset
|
1 #serial 7 |
1102
921bbc045898
(jm_STRFTIME_PREREQS): Check for localtime_r.
Jim Meyering <jim@meyering.net>
parents:
863
diff
changeset
|
2 |
1117 | 3 dnl This macro is intended to be used solely in this file. |
4 dnl These are the prerequisite macros for GNU's strftime.c replacement. | |
5 AC_DEFUN(_jm_STRFTIME_PREREQS, | |
1102
921bbc045898
(jm_STRFTIME_PREREQS): Check for localtime_r.
Jim Meyering <jim@meyering.net>
parents:
863
diff
changeset
|
6 [ |
921bbc045898
(jm_STRFTIME_PREREQS): Check for localtime_r.
Jim Meyering <jim@meyering.net>
parents:
863
diff
changeset
|
7 dnl strftime.c uses localtime_r if it exists. Check for it. |
921bbc045898
(jm_STRFTIME_PREREQS): Check for localtime_r.
Jim Meyering <jim@meyering.net>
parents:
863
diff
changeset
|
8 AC_CHECK_FUNCS(localtime_r) |
2025
c34e888e9573
Add checks for most of the cpp macros tested in GNU's strftime.c.
Jim Meyering <jim@meyering.net>
parents:
1773
diff
changeset
|
9 |
c34e888e9573
Add checks for most of the cpp macros tested in GNU's strftime.c.
Jim Meyering <jim@meyering.net>
parents:
1773
diff
changeset
|
10 AC_CHECK_HEADERS(limits.h) |
c34e888e9573
Add checks for most of the cpp macros tested in GNU's strftime.c.
Jim Meyering <jim@meyering.net>
parents:
1773
diff
changeset
|
11 AC_CHECK_FUNCS(bcopy tzset mempcpy memcpy memset) |
c34e888e9573
Add checks for most of the cpp macros tested in GNU's strftime.c.
Jim Meyering <jim@meyering.net>
parents:
1773
diff
changeset
|
12 |
c34e888e9573
Add checks for most of the cpp macros tested in GNU's strftime.c.
Jim Meyering <jim@meyering.net>
parents:
1773
diff
changeset
|
13 # This defines (or not) HAVE_TZNAME and HAVE_TM_ZONE. |
c34e888e9573
Add checks for most of the cpp macros tested in GNU's strftime.c.
Jim Meyering <jim@meyering.net>
parents:
1773
diff
changeset
|
14 AC_STRUCT_TIMEZONE |
c34e888e9573
Add checks for most of the cpp macros tested in GNU's strftime.c.
Jim Meyering <jim@meyering.net>
parents:
1773
diff
changeset
|
15 |
c34e888e9573
Add checks for most of the cpp macros tested in GNU's strftime.c.
Jim Meyering <jim@meyering.net>
parents:
1773
diff
changeset
|
16 AC_CHECK_FUNCS(mblen mbrlen) |
c34e888e9573
Add checks for most of the cpp macros tested in GNU's strftime.c.
Jim Meyering <jim@meyering.net>
parents:
1773
diff
changeset
|
17 |
c34e888e9573
Add checks for most of the cpp macros tested in GNU's strftime.c.
Jim Meyering <jim@meyering.net>
parents:
1773
diff
changeset
|
18 AC_CHECK_MEMBER(struct tm.tm_gmtoff, |
2029
aebedfa1a43b
(_jm_STRFTIME_PREREQS): Use 3-arg form of AC_DEFINE for HAVE_TM_GMTOFF.
Jim Meyering <jim@meyering.net>
parents:
2025
diff
changeset
|
19 [AC_DEFINE(HAVE_TM_GMTOFF, 1, |
aebedfa1a43b
(_jm_STRFTIME_PREREQS): Use 3-arg form of AC_DEFINE for HAVE_TM_GMTOFF.
Jim Meyering <jim@meyering.net>
parents:
2025
diff
changeset
|
20 [Define if struct tm has the tm_gmtoff member.])], |
2025
c34e888e9573
Add checks for most of the cpp macros tested in GNU's strftime.c.
Jim Meyering <jim@meyering.net>
parents:
1773
diff
changeset
|
21 , |
c34e888e9573
Add checks for most of the cpp macros tested in GNU's strftime.c.
Jim Meyering <jim@meyering.net>
parents:
1773
diff
changeset
|
22 dnl FIXME: having to put the closing square bracket on the |
c34e888e9573
Add checks for most of the cpp macros tested in GNU's strftime.c.
Jim Meyering <jim@meyering.net>
parents:
1773
diff
changeset
|
23 dnl FIXME: next line is a gross kludge to work around an |
c34e888e9573
Add checks for most of the cpp macros tested in GNU's strftime.c.
Jim Meyering <jim@meyering.net>
parents:
1773
diff
changeset
|
24 dnl FIXME: infelicity in how the new autoconf works. |
c34e888e9573
Add checks for most of the cpp macros tested in GNU's strftime.c.
Jim Meyering <jim@meyering.net>
parents:
1773
diff
changeset
|
25 dnl FIXME: This should be fixed pretty soon. |
c34e888e9573
Add checks for most of the cpp macros tested in GNU's strftime.c.
Jim Meyering <jim@meyering.net>
parents:
1773
diff
changeset
|
26 [#include <time.h> |
c34e888e9573
Add checks for most of the cpp macros tested in GNU's strftime.c.
Jim Meyering <jim@meyering.net>
parents:
1773
diff
changeset
|
27 ]) |
1102
921bbc045898
(jm_STRFTIME_PREREQS): Check for localtime_r.
Jim Meyering <jim@meyering.net>
parents:
863
diff
changeset
|
28 ]) |
820 | 29 |
1117 | 30 dnl Determine if the strftime function has all the features of the GNU one. |
31 dnl | |
32 dnl From Jim Meyering. | |
33 dnl | |
820 | 34 AC_DEFUN(jm_FUNC_GNU_STRFTIME, |
35 [AC_REQUIRE([AC_HEADER_TIME])dnl | |
1102
921bbc045898
(jm_STRFTIME_PREREQS): Check for localtime_r.
Jim Meyering <jim@meyering.net>
parents:
863
diff
changeset
|
36 |
1117 | 37 _jm_STRFTIME_PREREQS |
1102
921bbc045898
(jm_STRFTIME_PREREQS): Check for localtime_r.
Jim Meyering <jim@meyering.net>
parents:
863
diff
changeset
|
38 |
820 | 39 AC_REQUIRE([AC_C_CONST])dnl |
40 AC_REQUIRE([AC_HEADER_STDC])dnl | |
41 AC_CHECK_HEADERS(sys/time.h) | |
42 AC_CACHE_CHECK([for working GNU strftime], jm_cv_func_working_gnu_strftime, | |
43 [AC_TRY_RUN( | |
44 changequote(<<, >>)dnl | |
45 << /* Ulrich Drepper provided parts of the test program. */ | |
46 #if STDC_HEADERS | |
47 # include <stdlib.h> | |
48 #endif | |
49 | |
50 #if TIME_WITH_SYS_TIME | |
51 # include <sys/time.h> | |
52 # include <time.h> | |
53 #else | |
54 # if HAVE_SYS_TIME_H | |
55 # include <sys/time.h> | |
56 # else | |
57 # include <time.h> | |
58 # endif | |
59 #endif | |
60 | |
61 static int | |
62 compare (const char *fmt, const struct tm *tm, const char *expected) | |
63 { | |
64 char buf[99]; | |
65 strftime (buf, 99, fmt, tm); | |
66 if (strcmp (buf, expected)) | |
67 { | |
68 #ifdef SHOW_FAILURES | |
69 printf ("fmt: \"%s\", expected \"%s\", got \"%s\"\n", | |
70 fmt, expected, buf); | |
71 #endif | |
72 return 1; | |
73 } | |
74 return 0; | |
75 } | |
76 | |
77 int | |
78 main () | |
79 { | |
80 int n_fail = 0; | |
81 struct tm *tm; | |
82 time_t t = 738367; /* Fri Jan 9 13:06:07 1970 */ | |
83 tm = gmtime (&t); | |
84 | |
85 /* This is necessary to make strftime give consistent zone strings and | |
86 e.g., seconds since the epoch (%s). */ | |
861
222744292e37
(main): Use TZ=GMT0, not TZ=GMT, since only GMT0 is specified by Posix.1.
Jim Meyering <jim@meyering.net>
parents:
820
diff
changeset
|
87 putenv ("TZ=GMT0"); |
820 | 88 |
89 #undef CMP | |
90 #define CMP(Fmt, Expected) n_fail += compare ((Fmt), tm, (Expected)) | |
91 | |
92 CMP ("%-m", "1"); /* GNU */ | |
93 CMP ("%A", "Friday"); | |
94 CMP ("%^A", "FRIDAY"); /* The ^ is a GNU extension. */ | |
95 CMP ("%B", "January"); | |
96 CMP ("%^B", "JANUARY"); | |
97 CMP ("%C", "19"); /* POSIX.2 */ | |
98 CMP ("%D", "01/09/70"); /* POSIX.2 */ | |
1117 | 99 CMP ("%F", "1970-01-09"); |
820 | 100 CMP ("%G", "1970"); /* GNU */ |
101 CMP ("%H", "13"); | |
102 CMP ("%I", "01"); | |
103 CMP ("%M", "06"); | |
104 CMP ("%M", "06"); | |
105 CMP ("%R", "13:06"); /* POSIX.2 */ | |
106 CMP ("%S", "07"); | |
107 CMP ("%T", "13:06:07"); /* POSIX.2 */ | |
108 CMP ("%U", "01"); | |
109 CMP ("%V", "02"); | |
110 CMP ("%W", "01"); | |
111 CMP ("%X", "13:06:07"); | |
112 CMP ("%Y", "1970"); | |
113 CMP ("%Z", "GMT"); | |
114 CMP ("%_m", " 1"); /* GNU */ | |
115 CMP ("%a", "Fri"); | |
116 CMP ("%^a", "FRI"); | |
117 CMP ("%b", "Jan"); | |
118 CMP ("%^b", "JAN"); | |
119 CMP ("%c", "Fri Jan 9 13:06:07 1970"); | |
120 CMP ("%^c", "FRI JAN 9 13:06:07 1970"); | |
121 CMP ("%d", "09"); | |
122 CMP ("%e", " 9"); /* POSIX.2 */ | |
123 CMP ("%g", "70"); /* GNU */ | |
124 CMP ("%h", "Jan"); /* POSIX.2 */ | |
125 CMP ("%^h", "JAN"); | |
126 CMP ("%j", "009"); | |
127 CMP ("%k", "13"); /* GNU */ | |
128 CMP ("%l", " 1"); /* GNU */ | |
129 CMP ("%m", "01"); | |
130 CMP ("%n", "\n"); /* POSIX.2 */ | |
131 CMP ("%p", "PM"); | |
132 CMP ("%r", "01:06:07 PM"); /* POSIX.2 */ | |
133 CMP ("%s", "738367"); /* GNU */ | |
134 CMP ("%t", "\t"); /* POSIX.2 */ | |
135 CMP ("%u", "5"); /* POSIX.2 */ | |
136 CMP ("%w", "5"); | |
137 CMP ("%x", "01/09/70"); | |
138 CMP ("%y", "70"); | |
139 CMP ("%z", "+0000"); /* GNU */ | |
140 | |
141 exit (n_fail ? 1 : 0); | |
142 } | |
143 >>, | |
144 changequote([, ])dnl | |
145 jm_cv_func_working_gnu_strftime=yes, | |
146 jm_cv_func_working_gnu_strftime=no, | |
147 dnl When crosscompiling, assume strftime is missing or broken. | |
148 jm_cv_func_working_gnu_strftime=no) | |
149 ]) | |
150 if test $jm_cv_func_working_gnu_strftime = no; then | |
1704
e0de75124ce0
Use AC_SUBST(LIBOBJS) since we set LIBOBJS.
Jim Meyering <jim@meyering.net>
parents:
1702
diff
changeset
|
151 AC_SUBST(LIBOBJS) |
1702 | 152 LIBOBJS="$LIBOBJS strftime.$ac_objext" |
1672
004ad983c640
Use the 3-argument forms of AC_DEFINE* macros.
Jim Meyering <jim@meyering.net>
parents:
1117
diff
changeset
|
153 AC_DEFINE_UNQUOTED(strftime, gnu_strftime, |
004ad983c640
Use the 3-argument forms of AC_DEFINE* macros.
Jim Meyering <jim@meyering.net>
parents:
1117
diff
changeset
|
154 [Define to gnu_strftime if the replacement function should be used.]) |
820 | 155 fi |
156 ]) | |
1102
921bbc045898
(jm_STRFTIME_PREREQS): Check for localtime_r.
Jim Meyering <jim@meyering.net>
parents:
863
diff
changeset
|
157 |
921bbc045898
(jm_STRFTIME_PREREQS): Check for localtime_r.
Jim Meyering <jim@meyering.net>
parents:
863
diff
changeset
|
158 AC_DEFUN(jm_FUNC_STRFTIME, |
921bbc045898
(jm_STRFTIME_PREREQS): Check for localtime_r.
Jim Meyering <jim@meyering.net>
parents:
863
diff
changeset
|
159 [ |
1117 | 160 _jm_STRFTIME_PREREQS |
1102
921bbc045898
(jm_STRFTIME_PREREQS): Check for localtime_r.
Jim Meyering <jim@meyering.net>
parents:
863
diff
changeset
|
161 AC_REPLACE_FUNCS(strftime) |
921bbc045898
(jm_STRFTIME_PREREQS): Check for localtime_r.
Jim Meyering <jim@meyering.net>
parents:
863
diff
changeset
|
162 ]) |