+++ /dev/null
-From cd781c405be82540484da3bfe3d3f17a39b8eb5c Mon Sep 17 00:00:00 2001
-From: J William Piggott <elseifthen@gmx.com>
-Date: Fri, 21 Feb 2020 20:03:47 -0500
-Subject: [PATCH] hwclock: make glibc 2.31 compatible
-
-______________________________________________________
-GNU C Library NEWS -- history of user-visible changes.
-Version 2.31
-Deprecated and removed features, and other changes affecting compatibility:
-
-* The settimeofday function can still be used to set a system-wide time
- zone when the operating system supports it. This is because the Linux
- kernel reused the API, on some architectures, to describe a system-wide
- time-zone-like offset between the software clock maintained by the kernel,
- and the "RTC" clock that keeps time when the system is shut down.
-
- However, to reduce the odds of this offset being set by accident,
- settimeofday can no longer be used to set the time and the offset
- simultaneously. If both of its two arguments are non-null, the call
- will fail (setting errno to EINVAL).
-
- Callers attempting to set this offset should also be prepared for the call
- to fail and set errno to ENOSYS; this already happens on the Hurd and on
- some Linux architectures. The Linux kernel maintainers are discussing a
- more principled replacement for the reused API. After a replacement
- becomes available, we will change settimeofday to fail with ENOSYS on all
- platforms when its 'tzp' argument is not a null pointer.
-
- settimeofday itself is obsolescent according to POSIX. Programs that set
- the system time should use clock_settime and/or the adjtime family of
- functions instead. We may cease to make settimeofday available to newly
- linked binaries after there is a replacement for Linux's time-zone-like
- offset API.
-______________________________________________________
-
-hwclock(8) had one settimeofday(2) call where both args were set for
---hctosys when the RTC was ticking UTC. This allowed setting the system
-time, timezone, and locking the warp_clock function with a single call.
-That operation now takes 3 calls of settimeofday(2).
-
-Although this common operation now takes three calls, the overall logic
-for the set_system_clock() function was simplified.
-
-Co-Author: Karel Zak <kzak@redhat.com>
-Signed-off-by: J William Piggott <elseifthen@gmx.com>
----
- sys-utils/hwclock.c | 71 +++++++++++++++++++++++----------------------
- 1 file changed, 37 insertions(+), 34 deletions(-)
-
-diff --git a/sys-utils/hwclock.c b/sys-utils/hwclock.c
-index e736da717..1191a8571 100644
---- a/sys-utils/hwclock.c
-+++ b/sys-utils/hwclock.c
-@@ -643,28 +643,28 @@ display_time(struct timeval hwctime)
- * tz.tz_minuteswest argument and sets PCIL (see below). At boot settimeofday(2)
- * has one-shot access to this function as shown in the table below.
- *
-- * +-------------------------------------------------------------------+
-- * | settimeofday(tv, tz) |
-- * |-------------------------------------------------------------------|
-- * | Arguments | System Time | PCIL | | warp_clock |
-- * | tv | tz | set | warped | set | firsttime | locked |
-- * |---------|---------|---------------|------|-----------|------------|
-- * | pointer | NULL | yes | no | no | 1 | no |
-- * | pointer | pointer | yes | no | no | 0 | yes |
-- * | NULL | ptr2utc | no | no | no | 0 | yes |
-- * | NULL | pointer | no | yes | yes | 0 | yes |
-- * +-------------------------------------------------------------------+
-+ * +-------------------------------------------------------------------------+
-+ * | settimeofday(tv, tz) |
-+ * |-------------------------------------------------------------------------|
-+ * | Arguments | System Time | TZ | PCIL | | warp_clock |
-+ * | tv | tz | set | warped | set | set | firsttime | locked |
-+ * |---------|---------|---------------|-----|------|-----------|------------|
-+ * | pointer | NULL | yes | no | no | no | 1 | no |
-+ * | NULL | ptr2utc | no | no | yes | no | 0 | yes |
-+ * | NULL | pointer | no | yes | yes | yes | 0 | yes |
-+ * +-------------------------------------------------------------------------+
- * ptr2utc: tz.tz_minuteswest is zero (UTC).
- * PCIL: persistent_clock_is_local, sets the "11 minute mode" timescale.
- * firsttime: locks the warp_clock function (initialized to 1 at boot).
-+ * Since glibc v2.31 settimeofday() will fail if both args are non NULL
- *
- * +---------------------------------------------------------------------------+
- * | op | RTC scale | settimeofday calls |
- * |---------|-----------|-----------------------------------------------------|
- * | systz | Local | 1) warps system time*, sets PCIL* and kernel tz |
- * | systz | UTC | 1st) locks warp_clock* 2nd) sets kernel tz |
-- * | hctosys | Local | 1st) sets PCIL* 2nd) sets system time and kernel tz |
-- * | hctosys | UTC | 1) sets system time and kernel tz |
-+ * | hctosys | Local | 1st) sets PCIL* & kernel tz 2nd) sets system time |
-+ * | hctosys | UTC | 1st) locks warp* 2nd) sets tz 3rd) sets system time |
- * +---------------------------------------------------------------------------+
- * * only on first call after boot
- */
-@@ -675,42 +675,45 @@ set_system_clock(const struct hwclock_control *ctl,
- struct tm broken;
- int minuteswest;
- int rc = 0;
-- const struct timezone tz_utc = { 0 };
-
- localtime_r(&newtime.tv_sec, &broken);
- minuteswest = -get_gmtoff(&broken) / 60;
-
- if (ctl->verbose) {
-- if (ctl->hctosys && !ctl->universal)
-- printf(_("Calling settimeofday(NULL, %d) to set "
-- "persistent_clock_is_local.\n"), minuteswest);
-- if (ctl->systz && ctl->universal)
-+ if (ctl->universal) {
- puts(_("Calling settimeofday(NULL, 0) "
-- "to lock the warp function."));
-+ "to lock the warp_clock function."));
-+ if (!( ctl->universal && !minuteswest ))
-+ printf(_("Calling settimeofday(NULL, %d) "
-+ "to set the kernel timezone.\n"),
-+ minuteswest);
-+ } else
-+ printf(_("Calling settimeofday(NULL, %d) to warp "
-+ "System time, set PCIL and the kernel tz.\n"),
-+ minuteswest);
-+
- if (ctl->hctosys)
-- printf(_("Calling settimeofday(%ld.%06ld, %d)\n"),
-- newtime.tv_sec, newtime.tv_usec, minuteswest);
-- else {
-- printf(_("Calling settimeofday(NULL, %d) "), minuteswest);
-- if (ctl->universal)
-- puts(_("to set the kernel timezone."));
-- else
-- puts(_("to warp System time."));
-- }
-+ printf(_("Calling settimeofday(%ld.%06ld, NULL) "
-+ "to set the System time.\n"),
-+ newtime.tv_sec, newtime.tv_usec);
- }
-
- if (!ctl->testing) {
-+ const struct timezone tz_utc = { 0 };
- const struct timezone tz = { minuteswest };
-
-- if (ctl->hctosys && !ctl->universal) /* set PCIL */
-- rc = settimeofday(NULL, &tz);
-- if (ctl->systz && ctl->universal) /* lock warp_clock */
-+ /* If UTC RTC: lock warp_clock and PCIL */
-+ if (ctl->universal)
- rc = settimeofday(NULL, &tz_utc);
-- if (!rc && ctl->hctosys)
-- rc = settimeofday(&newtime, &tz);
-- else if (!rc)
-+
-+ /* Set kernel tz; if localtime RTC: warp_clock and set PCIL */
-+ if (!rc && !( ctl->universal && !minuteswest ))
- rc = settimeofday(NULL, &tz);
-
-+ /* Set the System Clock */
-+ if ((!rc || errno == ENOSYS) && ctl->hctosys)
-+ rc = settimeofday(&newtime, NULL);
-+
- if (rc) {
- warn(_("settimeofday() failed"));
- return EXIT_FAILURE;
---- util-linux-2.33/po/pl.po.orig 2018-11-06 12:13:57.023525535 +0100
-+++ util-linux-2.33/po/pl.po 2018-11-26 20:39:09.335888712 +0100
-@@ -11445,9 +11445,9 @@
- msgstr "%s: ioctl blkdev_get_sectors nie powiódł się"
+--- util-linux-2.35.2/po/pl.po.orig 2020-06-04 17:28:22.850886931 +0200
++++ util-linux-2.35.2/po/pl.po 2020-06-04 17:28:29.597517048 +0200
+@@ -3990,12 +3990,12 @@
+ #: disk-utils/sfdisk.c:526
+ #, c-format
+ msgid "cannot read at offset: %zu; continue"
+-msgstr ""
++msgstr "nie można odczytać spod offsetu: %zu; kontynuacja"
+
+ #: disk-utils/sfdisk.c:537
+ #, c-format
+ msgid "cannot write at offset: %zu; continue"
+-msgstr ""
++msgstr "nie można zapisać pod offset: %zu; kontynuacja"
+
+ #: disk-utils/sfdisk.c:566
+ #, c-format
+@@ -4008,18 +4008,18 @@
+ msgstr "Przeniesiono %ju z %ju sektorów (%.3f%%)."
+
+ #: disk-utils/sfdisk.c:589
+-#, fuzzy, c-format
++#, c-format
+ msgid "Moved %ju from %ju sectors (%.0f%%)."
+-msgstr "Przeniesiono %ju z %ju sektorów (%.3f%%)."
++msgstr "Przeniesiono %ju z %ju sektorów (%.0f%%)."
+
+ #: disk-utils/sfdisk.c:603
+ msgid "Your data has not been moved (--no-act)."
+ msgstr "Dane nie zostały przeniesione (--no-act)."
- #: sys-utils/blkzone.c:184
+ #: disk-utils/sfdisk.c:605
-#, fuzzy, c-format
+#, c-format
- msgid "%s: offset is greater than or equal to device size"
--msgstr "%s: offset jest większy niż rozmiar urządzenia"
-+msgstr "%s: offset jest większy lub równy rozmiarowi urządzenia"
+ msgid "%zu I/O errors detected!"
+-msgstr "Wykryto %d błąd."
++msgstr "Wykryto błędy we/wy (liczba: %zu)!"
- #: sys-utils/blkzone.c:188 sys-utils/blkzone.c:262
+ #: disk-utils/sfdisk.c:608
#, c-format
-@@ -12352,9 +12352,8 @@
- msgstr "napęd CD-ROM nie jest gotowy"
+@@ -4361,9 +4361,8 @@
+ "Stara sytuacja:"
- #: sys-utils/eject.c:441
+ #: disk-utils/sfdisk.c:1745
-#, fuzzy
- msgid "CD-ROM status command failed"
--msgstr "polecenie wysunięcia CD-ROM-u nie powiodło się"
-+msgstr "polecenie sprawdzenia stanu CD-ROM-u nie powiodło się"
+ msgid "failed to set script header"
+-msgstr "nie udało się przydzielić nagłówka skryptu"
++msgstr "nie udało się ustawić nagłówka skryptu"
+
+ #: disk-utils/sfdisk.c:1750
+ #, c-format
+@@ -4393,7 +4392,7 @@
+ #: disk-utils/sfdisk.c:1791
+ #, c-format
+ msgid "Unknown script header '%s' -- ignore."
+-msgstr ""
++msgstr "Nieznany nagłówek skryptu '%s' - zignorowano."
+
+ #: disk-utils/sfdisk.c:1803
+ msgid "Done.\n"
+@@ -12797,9 +12796,8 @@
+ msgstr "użycie urządzenia domyślnego `%s'"
+
+ #: sys-utils/eject.c:891
+-#, fuzzy
+ msgid "unable to find device"
+-msgstr "%s: nie udało się odnaleźć urządzenia"
++msgstr "nie udało się odnaleźć urządzenia"
+
+ #: sys-utils/eject.c:893
+ #, c-format
+@@ -13351,24 +13349,22 @@
+ "Ustawienie RTC na %ld (%ld + %d; refsystime = %ld.%06ld)\n"
+
+ #: sys-utils/hwclock.c:684
+-#, fuzzy
+ msgid "Calling settimeofday(NULL, 0) to lock the warp_clock function."
+ msgstr "Wywoływanie settimeofday(NULL, 0) w celu zablokowania funkcji warp_clock."
+
+ #: sys-utils/hwclock.c:687
+-#, fuzzy, c-format
+ msgid "Calling settimeofday(NULL, %d) to set the kernel timezone.\n"
+-msgstr "Wywoływanie settimeofday(NULL, 0) w celu zablokowania funkcji warp_clock."
++msgstr "Wywoływanie settimeofday(NULL, %d) w celu ustawienia strefy czasowej jądra.\n"
+
+ #: sys-utils/hwclock.c:691
+-#, fuzzy, c-format
++#, c-format
+ msgid "Calling settimeofday(NULL, %d) to warp System time, set PCIL and the kernel tz.\n"
+-msgstr "Wywoływanie settimeofday(NULL, %d) w celu ustawienia persistent_clock_is_local.\n"
++msgstr "Wywoływanie settimeofday(NULL, %d) w przekręcenia czasu systemowego, ustawienia PCIL i strefy czasowej jądra.\n"
+
+ #: sys-utils/hwclock.c:696
+-#, fuzzy, c-format
++#, c-format
+ msgid "Calling settimeofday(%ld.%06ld, NULL) to set the System time.\n"
+-msgstr "Wywoływanie settimeofday(%ld.%06ld, %d)\n"
++msgstr "Wywoływanie settimeofday(%ld.%06ld, NULL) w celu ustawienia czasu systemowego.\n"
- #: sys-utils/eject.c:481
- msgid "CD-ROM select speed command failed"
+ #: sys-utils/hwclock.c:718
+ msgid "settimeofday() failed"
+@@ -20476,13 +20472,3 @@
+ #: text-utils/ul.c:629
+ msgid "Input line too long."
+ msgstr "Linia wejściowa zbyt długa."
+-
+-#, c-format
+-#~ msgid "Calling settimeofday(NULL, %d) "
+-#~ msgstr "Wywoływanie settimeofday(NULL, %d) "
+-
+-#~ msgid "to set the kernel timezone."
+-#~ msgstr "w celu ustawienia strefy czasowej jądra."
+-
+-#~ msgid "to warp System time."
+-#~ msgstr "w celu przekręcenia czasu systemowego."