]> err.no Git - util-linux/commitdiff
hwclock: use carefully synchronize_to_clock_tick() return codes
authorKarel Zak <kzak@redhat.com>
Fri, 8 Aug 2008 23:22:08 +0000 (01:22 +0200)
committerKarel Zak <kzak@redhat.com>
Wed, 13 Aug 2008 09:40:23 +0000 (11:40 +0200)
* It seems that

rtc-isl1208 0-006f: chip found, driver version 0.3
rtc-isl1208 0-006f: rtc core: registered rtc-isl1208 as rtc0
rtc-isl1208 0-006f: rtc power failure detected, please set clock.

  causes that hardware clock returns persistent time and synchronization
  is impossible. The hwclock(8) has to ignore this problem and allows to
  set clock anyway.

* synchronize_to_clock_tick() shouldn't to print the "...got clock tick"
  debug message in case of failure.

Signed-off-by: Karel Zak <kzak@redhat.com>
hwclock/hwclock.c

index 12e7676bbd02cc64eec08d8922e2f0c36d4f65d5..82da273dfda62d2f7d65d67389f844f1de768ec9 100644 (file)
@@ -352,7 +352,12 @@ synchronize_to_clock_tick(void) {
 
        rc = ur->synchronize_to_clock_tick();
 
-       if (debug) printf(_("...got clock tick\n"));
+       if (debug) {
+               if (rc)
+                       printf(_("...synchronization failed\n"));
+               else
+                       printf(_("...got clock tick\n"));
+       }
 
        return rc;
 }
@@ -1093,8 +1098,8 @@ manipulate_clock(const bool show, const bool adjust, const bool noadjfile,
        if (show || adjust || hctosys || !noadjfile) {
           /* data from HW-clock are required */
           rc = synchronize_to_clock_tick();
-          if (rc)
-             return EX_IOERR;
+          if (rc && rc != 2)           /* 2= synchronization timeout */
+            return EX_IOERR;
           gettimeofday(&read_time, NULL);
           rc = read_hardware_clock(universal, &hclock_valid, &hclocktime);
           if (rc)