From 634a6893abd524b5ccae0c9b8cd0957fa00abb24 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Date: Fri, 18 Jul 2014 21:44:36 -0400
Subject: [PATCH] man,journal: add note about
sd_journal_get_cutoff_monotonic_usec return value
Also modify the function itself to be a bit simpler to read.
(cherry picked from commit 1651e2c61e544de9ca947c8b3202552b1272ef57)
---
man/sd_journal_get_cutoff_realtime_usec.xml | 36 ++++++++++++++++++-----------
src/journal/sd-journal.c | 16 ++++++-------
2 files changed, 31 insertions(+), 21 deletions(-)
diff --git a/man/sd_journal_get_cutoff_realtime_usec.xml b/man/sd_journal_get_cutoff_realtime_usec.xml
index 6df4b26e6f..ef987d85b0 100644
--- a/man/sd_journal_get_cutoff_realtime_usec.xml
+++ b/man/sd_journal_get_cutoff_realtime_usec.xml
@@ -74,25 +74,29 @@
<title>Description</title>
<para><function>sd_journal_get_cutoff_realtime_usec()</function>
- gets the realtime (wallclock) timestamps of the first
- and last entries accessible in the journal. It takes
- three arguments: the journal context object and two
- pointers to 64-bit unsigned integers to store the
- timestamps in. The timestamps are in microseconds
- since the epoch,
+ retrieves the realtime (wallclock) timestamps of the
+ first and last entries accessible in the journal. It
+ takes three arguments: the journal context object
+ <parameter>j</parameter> and two pointers
+ <parameter>from</parameter> and
+ <parameter>to</parameter> pointing at 64-bit unsigned
+ integers to store the timestamps in. The timestamps
+ are in microseconds since the epoch,
i.e. <constant>CLOCK_REALTIME</constant>. Either one
of the two timestamp arguments may be passed as
<constant>NULL</constant> in case the timestamp is not
needed, but not both.</para>
<para><function>sd_journal_get_cutoff_monotonic_usec()</function>
- gets the monotonic timestamps of the first and last
- entries accessible in the journal. It takes three
- arguments: the journal context object, a 128-bit
- identifier for the boot, and two pointers to 64-bit
- unsigned integers to store the timestamps. The
- timestamps are in microseconds since boot-up of the
- specific boot,
+ retrieves the monotonic timestamps of the first and
+ last entries accessible in the journal. It takes three
+ arguments: the journal context object
+ <parameter>j</parameter>, a 128-bit identifier for the
+ boot <parameter>boot_id</parameter>, and two pointers
+ to 64-bit unsigned integers to store the timestamps,
+ <parameter>from</parameter> and
+ <parameter>to</parameter>. The timestamps are in
+ microseconds since boot-up of the specific boot,
i.e. <constant>CLOCK_MONOTONIC</constant>. Since the
monotonic clock begins new with every reboot it only
defines a well-defined point in time when used
@@ -113,6 +117,12 @@
<function>sd_journal_get_cutoff_monotonic_usec()</function>
return 1 on success, 0 if not suitable entries are in
the journal or a negative errno-style error code.</para>
+
+ <para>Locations pointed to by parameters
+ <parameter>from</parameter> and
+ <parameter>to</parameter> will be set only if the
+ return value is positive, and obviously, the
+ parameters are non-null.</para>
</refsect1>
<refsect1>
diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
index ca805f83fe..15dae90925 100644
--- a/src/journal/sd-journal.c
+++ b/src/journal/sd-journal.c
@@ -2390,7 +2390,7 @@ _public_ int sd_journal_get_cutoff_realtime_usec(sd_journal *j, uint64_t *from,
_public_ int sd_journal_get_cutoff_monotonic_usec(sd_journal *j, sd_id128_t boot_id, uint64_t *from, uint64_t *to) {
Iterator i;
JournalFile *f;
- bool first = true;
+ bool found = false;
int r;
assert_return(j, -EINVAL);
@@ -2409,21 +2409,21 @@ _public_ int sd_journal_get_cutoff_monotonic_usec(sd_journal *j, sd_id128_t boot
if (r == 0)
continue;
- if (first) {
+ if (found) {
if (from)
- *from = fr;
+ *from = MIN(fr, *from);
if (to)
- *to = t;
- first = false;
+ *to = MAX(t, *to);
} else {
if (from)
- *from = MIN(fr, *from);
+ *from = fr;
if (to)
- *to = MAX(t, *to);
+ *to = t;
+ found = true;
}
}
- return first ? 0 : 1;
+ return found;
}
void journal_print_header(sd_journal *j) {