From: Alejandro Colomar <alx.manpages@gmail.com>
To: mtk.manpages@gmail.com, linux-man@vger.kernel.org
Cc: Alejandro Colomar <alx.manpages@gmail.com>,
libc-alpha@sourceware.org, Paul Eggert <eggert@cs.ucla.edu>
Subject: [PATCH] ctime.3: mktime() may modify tm_hour due to tm_isdst
Date: Sun, 10 Oct 2021 12:52:46 +0200 [thread overview]
Message-ID: <20211010105245.53896-1-alx.manpages@gmail.com> (raw)
If the input DST value is the opposite of the one that mktime()
uses, which comes from the current system timezone (see tzset(3)),
mktime() will modify the hour (and if it's in a day limit, it may
carry up to modify other fields) to normalize the time to the
correct DST.
If a user wants to avoid this, it should use UTC time, which never
has DST. For that, setenv("TZ", "", 1); sets UTC time for the
program. After that, the program should specify that DST is not
in effect, by setting tm_isdst to 0 (or let the system guess it
with -1), since setting tm_isdst to a positive value will result
in an error, (probably) due to mktime() considering that it is
invalid to have DST enabled for UTC times.
Cc: Paul Eggert <eggert@cs.ucla.edu>
Signed-off-by: Alejandro Colomar <alx.manpages@gmail.com>
---
man3/ctime.3 | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/man3/ctime.3 b/man3/ctime.3
index 0e2068a09..7a5714be8 100644
--- a/man3/ctime.3
+++ b/man3/ctime.3
@@ -260,6 +260,13 @@ normalized (so that, for example, 40 October is changed into 9 November);
is set (regardless of its initial value)
to a positive value or to 0, respectively,
to indicate whether DST is or is not in effect at the specified time.
+If the initial value of
+.I tm_isdst
+is inconsistent with the one set by
+.BR mktime (),
+.I tm_hour
+(and possibly other fields)
+will be modified to normalize the time to the correct DST.
Calling
.BR mktime ()
also sets the external variable \fItzname\fP with
--
2.33.0
next reply other threads:[~2021-10-10 10:53 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-10 10:52 Alejandro Colomar [this message]
2021-10-11 10:27 ` [PATCH] ctime.3: mktime() may modify tm_hour due to tm_isdst Alejandro Colomar (man-pages)
2021-10-11 11:12 ` [PATCH v2 1/2] " Alejandro Colomar
2021-10-11 15:36 ` Paul Eggert
2021-10-15 21:49 ` Alejandro Colomar (man-pages)
2021-10-11 11:12 ` [PATCH v2 2/2] timegm.3: Remove recommendation against use of timegm() Alejandro Colomar
2021-10-11 15:40 ` Paul Eggert
2021-10-15 22:03 ` Alejandro Colomar (man-pages)
2021-10-16 0:20 ` Paul Eggert
2021-10-17 18:02 ` Alejandro Colomar (man-pages)
2021-10-17 22:00 ` Paul Eggert
2021-11-05 0:47 ` Alejandro Colomar (man-pages)
2021-11-08 8:05 ` Paul Eggert
2021-10-11 11:54 ` [PATCH v3 1/2] ctime.3: mktime() may modify tm_hour due to tm_isdst Alejandro Colomar
2021-10-11 11:54 ` [PATCH v3 2/2] timegm.3: Remove recommendation against their use Alejandro Colomar
2021-10-11 15:37 ` [PATCH] ctime.3: mktime() may modify tm_hour due to tm_isdst Paul Eggert
2021-10-11 22:05 ` Joseph Myers
2021-10-15 21:55 ` Alejandro Colomar (man-pages)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211010105245.53896-1-alx.manpages@gmail.com \
--to=alx.manpages@gmail.com \
--cc=eggert@cs.ucla.edu \
--cc=libc-alpha@sourceware.org \
--cc=linux-man@vger.kernel.org \
--cc=mtk.manpages@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox