Add note about tm_isdst handling in mktime(3)
Resolves: RHEL-58342
This commit is contained in:
parent
feffdb431f
commit
b1d742a01a
@ -0,0 +1,76 @@
|
|||||||
|
From 9fdca71e4aba3605caa88b0c9eff3dc2c3f6fcfe Mon Sep 17 00:00:00 2001
|
||||||
|
From: DJ Delorie <dj@redhat.com>
|
||||||
|
Date: Thu, 29 Aug 2024 21:10:32 -0400
|
||||||
|
Subject: [PATCH] ctime.3: CAVEATS: Add note about tm_isdst handling in
|
||||||
|
mktime(3)
|
||||||
|
|
||||||
|
Handling of "invalid" values for tm_isdst is not clearly specified
|
||||||
|
in any standard, and implementations vary as to how they react when you
|
||||||
|
(for example) pass tm_isdst=1 at a time when DST is not in effect.
|
||||||
|
Add a note about this, and a suggestion for a workaround.
|
||||||
|
|
||||||
|
I go into further detail about this in the link below.
|
||||||
|
|
||||||
|
Link: <https://www.redhat.com/en/blog/brief-history-mktime>
|
||||||
|
Cc: Paul Eggert <eggert@cs.ucla.edu>
|
||||||
|
Cc: Carlos O'Donell <carlos@redhat.com>
|
||||||
|
Signed-off-by: DJ Delorie <dj@redhat.com>
|
||||||
|
Message-ID: <xncylqiznb.fsf@greed.delorie.com>
|
||||||
|
Signed-off-by: Alejandro Colomar <alx@kernel.org>
|
||||||
|
---
|
||||||
|
man/man3/ctime.3 | 39 +++++++++++++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 39 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/man/man3/ctime.3 b/man/man3/ctime.3
|
||||||
|
index 0ad2b530f..53abab6d9 100644
|
||||||
|
--- a/man/man3/ctime.3
|
||||||
|
+++ b/man/man3/ctime.3
|
||||||
|
@@ -427,6 +427,45 @@ one must use the
|
||||||
|
.I tm->tm_wday
|
||||||
|
field.
|
||||||
|
See the example program in EXAMPLES.
|
||||||
|
+.P
|
||||||
|
+The handling of a non-negative
|
||||||
|
+.I tm_isdst
|
||||||
|
+in
|
||||||
|
+.BR mktime ()
|
||||||
|
+is poorly specified,
|
||||||
|
+and passing a value that is incorrect for the time specified
|
||||||
|
+yields unspecified results.
|
||||||
|
+Since
|
||||||
|
+.BR mktime ()
|
||||||
|
+is one of the few functions that knows when DST is in effect,
|
||||||
|
+providing a correct value may be difficult.
|
||||||
|
+One workaround for this is to call
|
||||||
|
+.BR mktime ()
|
||||||
|
+twice,
|
||||||
|
+once with
|
||||||
|
+.I tm_isdst
|
||||||
|
+set to zero,
|
||||||
|
+and once with
|
||||||
|
+.I tm_isdst
|
||||||
|
+set to a positive value,
|
||||||
|
+and discarding the results from the call that changes it.
|
||||||
|
+If neither call changes
|
||||||
|
+.I tm_isdst
|
||||||
|
+then the time specified probably happens during a fall-back period
|
||||||
|
+where DST begins or ends,
|
||||||
|
+and both results are valid
|
||||||
|
+but represent two different times.
|
||||||
|
+If both calls change it, that could indicate a fall-forward transition,
|
||||||
|
+or some other reason why the time specified does not exist.
|
||||||
|
+.P
|
||||||
|
+The specification of time zones and daylight saving time
|
||||||
|
+are up to regional governments, change often,
|
||||||
|
+and may include discontinuities beyond
|
||||||
|
+.IR mktime 's
|
||||||
|
+ability to document a result.
|
||||||
|
+For example, a change in the timezone definition
|
||||||
|
+may cause a clock time to be repeated or skipped
|
||||||
|
+without a corresponding DST change.
|
||||||
|
.SH EXAMPLES
|
||||||
|
The following shell session shows sample runs of the program:
|
||||||
|
.P
|
||||||
|
--
|
||||||
|
2.46.1
|
||||||
|
|
@ -8,7 +8,7 @@
|
|||||||
Summary: Linux kernel and C library user-space interface documentation
|
Summary: Linux kernel and C library user-space interface documentation
|
||||||
Name: man-pages
|
Name: man-pages
|
||||||
Version: 6.04
|
Version: 6.04
|
||||||
Release: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
# List of licenses with examples of man-pages using them
|
# List of licenses with examples of man-pages using them
|
||||||
# BSD-2-Clause: man-pages/man5/elf.5
|
# BSD-2-Clause: man-pages/man5/elf.5
|
||||||
# BSD-3-Clause: man-pages/man3/list.3
|
# BSD-3-Clause: man-pages/man3/list.3
|
||||||
@ -62,6 +62,9 @@ Patch21: man-pages-3.42-close.patch
|
|||||||
# Resolves: RHEL-53953
|
# Resolves: RHEL-53953
|
||||||
Patch22: 0001-dlinfo.3-Document-the-RTLD_DI_PHDR-request.patch
|
Patch22: 0001-dlinfo.3-Document-the-RTLD_DI_PHDR-request.patch
|
||||||
|
|
||||||
|
# Upstream commit: https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/commit/man/man3/ctime.3?id=9fdca71e4aba3605caa88b0c9eff3dc2c3f6fcfe
|
||||||
|
# Resolves: RHEL-58342
|
||||||
|
Patch23: 0002-ctime.3-CAVEATS-Add-note-about-tm_isdst-handling-in-.patch
|
||||||
%description
|
%description
|
||||||
A large collection of manual pages from the Linux Documentation Project (LDP).
|
A large collection of manual pages from the Linux Documentation Project (LDP).
|
||||||
|
|
||||||
@ -135,6 +138,10 @@ fi
|
|||||||
%{_mandir}/man*/*
|
%{_mandir}/man*/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Oct 01 2024 Lukas Javorsky <ljavorsk@redhat.com> - 6.04-3
|
||||||
|
- Add note about tm_isdst handling in mktime(3)
|
||||||
|
- Resolves: RHEL-58342
|
||||||
|
|
||||||
* Fri Sep 13 2024 Lukas Javorsky <ljavorsk@redhat.com> - 6.04-2
|
* Fri Sep 13 2024 Lukas Javorsky <ljavorsk@redhat.com> - 6.04-2
|
||||||
- Add RTLD_DI_PHDR to dlinfo(3)
|
- Add RTLD_DI_PHDR to dlinfo(3)
|
||||||
- Resolves: RHEL-53953
|
- Resolves: RHEL-53953
|
||||||
|
Loading…
Reference in New Issue
Block a user