Fix virt-top --end-time option when TZ<>UTC (RHBZ#637964).
authorRichard W.M. Jones <rjones@redhat.com>
Thu, 6 Jan 2011 11:22:44 +0000 (11:22 +0000)
committerRichard W.M. Jones <rjones@redhat.com>
Thu, 6 Jan 2011 11:22:44 +0000 (11:22 +0000)
Return the end time as seconds since 1970, and don't adjust it
for timezone.  In the main module the end time is compared against
the result of Unix.gettimeofday, which is also seconds since 1970,
so the comparison now works.

Tested with TZ=UTC-05, TZ=UTC and TZ=UTC+05.

NB: This has not been tested against ocaml-calendar 1.x, although
that version of calendar is obsolete and no one should be using it.

virt-top/virt_top_calendar1.ml
virt-top/virt_top_calendar2.ml

index beac4ee..534465c 100755 (executable)
@@ -49,5 +49,8 @@ fun time ->
 
   eprintf "end time: %s\n" (Printer.CalendarPrinter.to_string cal);
 
-  (* Convert to a time_t, adjusting for the current timezone. *)
-  fst (Unix.mktime (Calendar.to_unixtm cal))
+  (* Convert to a time_t.  Note that we compare this against
+   * Unix.gettimeofday in the main module, so this must be returned as
+   * plain seconds from 1970 with no timezone adjustment.  (RHBZ#637964)
+   *)
+  Calendar.to_unixfloat cal
index 184f2b9..cb0ebec 100755 (executable)
@@ -51,5 +51,8 @@ fun time ->
 
   eprintf "end time: %s\n" (Printer.CalendarPrinter.to_string cal);
 
-  (* Convert to a time_t, adjusting for the current timezone. *)
-  fst (Unix.mktime (Calendar.to_unixtm cal))
+  (* Convert to a time_t.  Note that we compare this against
+   * Unix.gettimeofday in the main module, so this must be returned as
+   * plain seconds from 1970 with no timezone adjustment.  (RHBZ#637964)
+   *)
+  Calendar.to_unixfloat cal