diff options
Diffstat (limited to 'gl/m4/mktime.m4')
| -rw-r--r-- | gl/m4/mktime.m4 | 67 |
1 files changed, 35 insertions, 32 deletions
diff --git a/gl/m4/mktime.m4 b/gl/m4/mktime.m4 index 1e926e86..44b8d878 100644 --- a/gl/m4/mktime.m4 +++ b/gl/m4/mktime.m4 | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | # serial 15 | 1 | # serial 15 |
| 2 | dnl Copyright (C) 2002-2003, 2005-2007, 2009 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2002-2003, 2005-2007, 2009-2010 Free Software Foundation, |
| 3 | dnl Inc. | ||
| 3 | dnl This file is free software; the Free Software Foundation | 4 | dnl This file is free software; the Free Software Foundation |
| 4 | dnl gives unlimited permission to copy and/or distribute it, | 5 | dnl gives unlimited permission to copy and/or distribute it, |
| 5 | dnl with or without modifications, as long as this notice is preserved. | 6 | dnl with or without modifications, as long as this notice is preserved. |
| @@ -85,8 +86,8 @@ static int | |||
| 85 | mktime_test (time_t now) | 86 | mktime_test (time_t now) |
| 86 | { | 87 | { |
| 87 | return (mktime_test1 (now) | 88 | return (mktime_test1 (now) |
| 88 | && mktime_test1 ((time_t) (time_t_max - now)) | 89 | && mktime_test1 ((time_t) (time_t_max - now)) |
| 89 | && mktime_test1 ((time_t) (time_t_min + now))); | 90 | && mktime_test1 ((time_t) (time_t_min + now))); |
| 90 | } | 91 | } |
| 91 | 92 | ||
| 92 | static int | 93 | static int |
| @@ -116,17 +117,17 @@ bigtime_test (int j) | |||
| 116 | { | 117 | { |
| 117 | struct tm *lt = localtime (&now); | 118 | struct tm *lt = localtime (&now); |
| 118 | if (! (lt | 119 | if (! (lt |
| 119 | && lt->tm_year == tm.tm_year | 120 | && lt->tm_year == tm.tm_year |
| 120 | && lt->tm_mon == tm.tm_mon | 121 | && lt->tm_mon == tm.tm_mon |
| 121 | && lt->tm_mday == tm.tm_mday | 122 | && lt->tm_mday == tm.tm_mday |
| 122 | && lt->tm_hour == tm.tm_hour | 123 | && lt->tm_hour == tm.tm_hour |
| 123 | && lt->tm_min == tm.tm_min | 124 | && lt->tm_min == tm.tm_min |
| 124 | && lt->tm_sec == tm.tm_sec | 125 | && lt->tm_sec == tm.tm_sec |
| 125 | && lt->tm_yday == tm.tm_yday | 126 | && lt->tm_yday == tm.tm_yday |
| 126 | && lt->tm_wday == tm.tm_wday | 127 | && lt->tm_wday == tm.tm_wday |
| 127 | && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst) | 128 | && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst) |
| 128 | == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst)))) | 129 | == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst)))) |
| 129 | return 0; | 130 | return 0; |
| 130 | } | 131 | } |
| 131 | return 1; | 132 | return 1; |
| 132 | } | 133 | } |
| @@ -158,7 +159,7 @@ year_2050_test () | |||
| 158 | to the correct answer that we can assume the discrepancy is | 159 | to the correct answer that we can assume the discrepancy is |
| 159 | due to leap seconds. */ | 160 | due to leap seconds. */ |
| 160 | return (t == (time_t) -1 | 161 | return (t == (time_t) -1 |
| 161 | || (0 < t && answer - 120 <= t && t <= answer + 120)); | 162 | || (0 < t && answer - 120 <= t && t <= answer + 120)); |
| 162 | } | 163 | } |
| 163 | 164 | ||
| 164 | int | 165 | int |
| @@ -176,7 +177,7 @@ main () | |||
| 176 | { | 177 | { |
| 177 | t = (time_t_max << 1) + 1; | 178 | t = (time_t_max << 1) + 1; |
| 178 | if (t <= time_t_max) | 179 | if (t <= time_t_max) |
| 179 | break; | 180 | break; |
| 180 | time_t_max = t; | 181 | time_t_max = t; |
| 181 | } | 182 | } |
| 182 | time_t_min = - ((time_t) ~ (time_t) 0 == (time_t) -1) - time_t_max; | 183 | time_t_min = - ((time_t) ~ (time_t) 0 == (time_t) -1) - time_t_max; |
| @@ -185,29 +186,29 @@ main () | |||
| 185 | for (i = 0; i < N_STRINGS; i++) | 186 | for (i = 0; i < N_STRINGS; i++) |
| 186 | { | 187 | { |
| 187 | if (tz_strings[i]) | 188 | if (tz_strings[i]) |
| 188 | putenv (tz_strings[i]); | 189 | putenv (tz_strings[i]); |
| 189 | 190 | ||
| 190 | for (t = 0; t <= time_t_max - delta; t += delta) | 191 | for (t = 0; t <= time_t_max - delta; t += delta) |
| 191 | if (! mktime_test (t)) | 192 | if (! mktime_test (t)) |
| 192 | return 1; | 193 | return 1; |
| 193 | if (! (mktime_test ((time_t) 1) | 194 | if (! (mktime_test ((time_t) 1) |
| 194 | && mktime_test ((time_t) (60 * 60)) | 195 | && mktime_test ((time_t) (60 * 60)) |
| 195 | && mktime_test ((time_t) (60 * 60 * 24)))) | 196 | && mktime_test ((time_t) (60 * 60 * 24)))) |
| 196 | return 1; | 197 | return 1; |
| 197 | 198 | ||
| 198 | for (j = 1; ; j <<= 1) | 199 | for (j = 1; ; j <<= 1) |
| 199 | if (! bigtime_test (j)) | 200 | if (! bigtime_test (j)) |
| 200 | return 1; | 201 | return 1; |
| 201 | else if (INT_MAX / 2 < j) | 202 | else if (INT_MAX / 2 < j) |
| 202 | break; | 203 | break; |
| 203 | if (! bigtime_test (INT_MAX)) | 204 | if (! bigtime_test (INT_MAX)) |
| 204 | return 1; | 205 | return 1; |
| 205 | } | 206 | } |
| 206 | return ! (irix_6_4_bug () && spring_forward_gap () && year_2050_test ()); | 207 | return ! (irix_6_4_bug () && spring_forward_gap () && year_2050_test ()); |
| 207 | }]])], | 208 | }]])], |
| 208 | [ac_cv_func_working_mktime=yes], | 209 | [ac_cv_func_working_mktime=yes], |
| 209 | [ac_cv_func_working_mktime=no], | 210 | [ac_cv_func_working_mktime=no], |
| 210 | [ac_cv_func_working_mktime=no])]) | 211 | [ac_cv_func_working_mktime=no])]) |
| 211 | if test $ac_cv_func_working_mktime = no; then | 212 | if test $ac_cv_func_working_mktime = no; then |
| 212 | AC_LIBOBJ([mktime]) | 213 | AC_LIBOBJ([mktime]) |
| 213 | fi | 214 | fi |
| @@ -215,12 +216,14 @@ fi | |||
| 215 | 216 | ||
| 216 | AC_DEFUN([gl_FUNC_MKTIME], | 217 | AC_DEFUN([gl_FUNC_MKTIME], |
| 217 | [ | 218 | [ |
| 219 | AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS]) | ||
| 218 | AC_FUNC_MKTIME | 220 | AC_FUNC_MKTIME |
| 219 | dnl Note: AC_FUNC_MKTIME does AC_LIBOBJ([mktime]). | 221 | dnl Note: AC_FUNC_MKTIME does AC_LIBOBJ([mktime]). |
| 220 | if test $ac_cv_func_working_mktime = no; then | 222 | if test $ac_cv_func_working_mktime = no; then |
| 221 | AC_DEFINE([mktime], [rpl_mktime], | 223 | REPLACE_MKTIME=1 |
| 222 | [Define to rpl_mktime if the replacement function should be used.]) | ||
| 223 | gl_PREREQ_MKTIME | 224 | gl_PREREQ_MKTIME |
| 225 | else | ||
| 226 | REPLACE_MKTIME=0 | ||
| 224 | fi | 227 | fi |
| 225 | ]) | 228 | ]) |
| 226 | 229 | ||
