[arch-commits] Commit in util-linux/repos/testing-i686 (hwclock-systz.patch)

Tom Gundersen tomegun at archlinux.org
Thu Sep 20 22:18:45 UTC 2012


    Date: Thursday, September 20, 2012 @ 18:18:45
  Author: tomegun
Revision: 166883

archrelease: copy trunk to testing-i686, testing-x86_64

Deleted:
  util-linux/repos/testing-i686/hwclock-systz.patch

---------------------+
 hwclock-systz.patch |   96 --------------------------------------------------
 1 file changed, 96 deletions(-)

Deleted: hwclock-systz.patch
===================================================================
--- hwclock-systz.patch	2012-09-20 22:17:11 UTC (rev 166882)
+++ hwclock-systz.patch	2012-09-20 22:18:45 UTC (rev 166883)
@@ -1,96 +0,0 @@
-From 46a8834c2eb9b0c37d92e30d1a262e41306cf36f Mon Sep 17 00:00:00 2001
-From: Tom Gundersen <teg at jklm.no>
-Date: Wed, 19 Sep 2012 18:10:34 +0200
-Subject: [PATCH 1/2] hwclock: don't warp the systemtime if it is in UTC
-
-A sideeffect of 839be2ba6b44fa9dc927f081d547ebadec9de19c is that we now
-warp the systemtime according to the timezone, on the first call of
---systz. This is not always the correct thing to do, and causes a
-regression for us in Arch Linux.
-
-This is the correct thing to do if the RTC, and hence the systemtime is
-set in localtime. However, if the systemtime is already in UTC we don't
-want to touch it when we set the kernel timezone (which we still need to
-do as e.g. FAT stores timestamps in localtime).
-
-An almost identical issue was also fixed in systemd commit
-72edcff5db936e54cfc322d9392ec46e2428fd9b.
-
-Fixes:
-Signed-off-by: Tom Gundersen <teg at jklm.no>
----
- sys-utils/hwclock.8 | 11 +++++++----
- sys-utils/hwclock.c | 17 +++++++++++++++--
- 2 files changed, 22 insertions(+), 6 deletions(-)
-
-diff --git a/sys-utils/hwclock.8 b/sys-utils/hwclock.8
-index 07d9fc0..5c599ad 100644
---- a/sys-utils/hwclock.8
-+++ b/sys-utils/hwclock.8
-@@ -58,10 +58,12 @@ This is a good option to use in one of the system startup scripts.
- Set the Hardware Clock to the current System Time.
- .TP
- .B \-\-systz
--Reset the System Time based on the current timezone.
-+Set the kernel's timezone and reset the System Time based on the current timezone.
- 
--Also set the kernel's timezone value to the local timezone
--as indicated by the TZ environment variable and/or
-+The system time is only reset on the first call after boot.
-+
-+The local timezone is taken to be what is
-+indicated by the TZ environment variable and/or
- .IR /usr/share/zoneinfo ,
- as
- .BR tzset (3)
-@@ -74,7 +76,8 @@ This is an alternate option to
- .B \-\-hctosys
- that does not read the hardware clock, and may be used in system startup
- scripts for recent 2.6 kernels where you know the System Time contains
--the Hardware Clock time.
-+the Hardware Clock time. If the Hardware Clock is already in UTC, it is
-+not reset.
- .TP
- .B \-\-adjust
- Add or subtract time from the Hardware Clock to account for systematic
-diff --git a/sys-utils/hwclock.c b/sys-utils/hwclock.c
-index 5a4c87e..351ce1f 100644
---- a/sys-utils/hwclock.c
-+++ b/sys-utils/hwclock.c
-@@ -772,7 +772,6 @@ static int set_system_clock_timezone(const bool universal, const bool testing)
- 	struct timeval tv;
- 	struct tm *broken;
- 	int minuteswest;
--	int rc;
- 
- 	gettimeofday(&tv, NULL);
- 	if (debug) {
-@@ -818,10 +817,24 @@ static int set_system_clock_timezone(const bool universal, const bool testing)
- 		       ("Not setting system clock because running in test mode.\n"));
- 		retcode = 0;
- 	} else {
-+		const struct timezone tz_utc = { 0, 0 };
- 		const struct timezone tz = { minuteswest, 0 };
- 		const struct timeval *tv_null = NULL;
-+		int rc = 0;
-+
-+		/* The first call to settimeofday after boot will assume the systemtime
-+		 * is in localtime, and adjust it according to the given timezone to
-+		 * compensate. If the systemtime is in fact in UTC, then this is wrong
-+		 * so we first do a dummy call to make sure the time is not shifted.
-+		 */
-+		if (universal)
-+			rc = settimeofday(tv_null, &tz_utc);
-+
-+		/* Now we set the real timezone. Due to the above dummy call, this will
-+		 * only warp the systemtime if the RTC is not in UTC. */
-+		if (!rc)
-+			rc = settimeofday(tv_null, &tz);
- 
--		rc = settimeofday(tv_null, &tz);
- 		if (rc) {
- 			if (errno == EPERM) {
- 				warnx(_
--- 
-1.7.12.1
-




More information about the arch-commits mailing list