2024-10-04 Paul Eggert <eggert@cs.ucla.edu>
+ timegm: ignore incoming tm_isdst
+ Problem reported by Florian Weimer via a proposed glibc patch in:
+ https://sourceware.org/pipermail/libc-alpha/2024-October/160310.html
+ * lib/mktime.c (__mktime_internal): Ignore any tm_isdst request
+ if the timezone never observes DST, as is the case for timegm.
+ * m4/mktime.m4 (gl_PREREQ_MKTIME): Define new C macro __daylight
+ if needed.
+
timegm: desync from glibc for now
* config/srclist.txt: Omit time/timegm.c and time/mktime-internal.h
for now, until we can sync glibc from Gnulib.
int mday = tp->tm_mday;
int mon = tp->tm_mon;
int year_requested = tp->tm_year;
- int isdst = tp->tm_isdst;
+
+ /* If the timezone never observes DST, ignore any tm_isdst request. */
+ int isdst = local && __daylight ? tp->tm_isdst : 0;
/* 1 if the previous probe was DST. */
int dst2 = 0;
# mktime.m4
-# serial 39
+# serial 40
dnl Copyright (C) 2002-2003, 2005-2007, 2009-2024 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
])
# Prerequisites of lib/mktime.c.
-AC_DEFUN([gl_PREREQ_MKTIME], [:])
+AC_DEFUN([gl_PREREQ_MKTIME], [
+ AC_CACHE_CHECK([spelling of daylight variable],
+ [gl_cv_var___daylight],
+ [for gl_cv_var___daylight in __daylight daylight _daylight 0; do
+ test $gl_cv_var___daylight = 0 && break
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <time.h>
+ ]],
+ [[return $gl_cv_var___daylight;]])
+ ],
+ [break])
+ done])
+ AS_CASE([$gl_cv_var___daylight],
+ [__daylight], [],
+ [AC_DEFINE_UNQUOTED([__daylight], [$gl_cv_var___daylight],
+ [Define to an expression equivalent to <time.h> daylight
+ if <time.h> __daylight does not already do that.])])
+])