Systemd/man/sd_journal_get_cursor.xml
Lennart Poettering 64a7ef8bc0 man: be more explicit about thread safety of sd_journal
Triggered by https://bugzilla.redhat.com/show_bug.cgi?id=1609349

This adds two generic paragaphs we include via xinclude. One is the
"strict" version, which contains wording saying that we are thread
agnostic and what that means. And the other is the "safe" version, for
the cases we provide fully safety.

Let's then change most man pages to use either of these generic
paragraphs. With one exception: man/sd_journal_get_catalog.xml contains
both kinds of function, we hence use manual wording.
2018-08-03 17:36:11 +02:00

118 lines
4.7 KiB
XML

<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!--
SPDX-License-Identifier: LGPL-2.1+
-->
<refentry id="sd_journal_get_cursor" xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
<title>sd_journal_get_cursor</title>
<productname>systemd</productname>
</refentryinfo>
<refmeta>
<refentrytitle>sd_journal_get_cursor</refentrytitle>
<manvolnum>3</manvolnum>
</refmeta>
<refnamediv>
<refname>sd_journal_get_cursor</refname>
<refname>sd_journal_test_cursor</refname>
<refpurpose>Get cursor string for or test cursor string against the current journal entry</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcsynopsisinfo>#include &lt;systemd/sd-journal.h&gt;</funcsynopsisinfo>
<funcprototype>
<funcdef>int <function>sd_journal_get_cursor</function></funcdef>
<paramdef>sd_journal *<parameter>j</parameter></paramdef>
<paramdef>char **<parameter>cursor</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_journal_test_cursor</function></funcdef>
<paramdef>sd_journal *<parameter>j</parameter></paramdef>
<paramdef>const char *<parameter>cursor</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para><function>sd_journal_get_cursor()</function> returns a
cursor string for the current journal entry. A cursor is a
serialization of the current journal position formatted as text.
The string only contains printable characters and can be passed
around in text form. The cursor identifies a journal entry
globally and in a stable way and may be used to later seek to it
via
<citerefentry><refentrytitle>sd_journal_seek_cursor</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
The cursor string should be considered opaque and not be parsed by
clients. Seeking to a cursor position without the specific entry
being available locally will seek to the next closest (in terms of
time) available entry. The call takes two arguments: a journal
context object and a pointer to a string pointer where the cursor
string will be placed. The string is allocated via libc
<citerefentry project='man-pages'><refentrytitle>malloc</refentrytitle><manvolnum>3</manvolnum></citerefentry>
and should be freed after use with
<citerefentry project='man-pages'><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
<para>Note that <function>sd_journal_get_cursor()</function> will
not work before
<citerefentry><refentrytitle>sd_journal_next</refentrytitle><manvolnum>3</manvolnum></citerefentry>
(or related call) has been called at least once, in order to
position the read pointer at a valid entry.</para>
<para><function>sd_journal_test_cursor()</function>
may be used to check whether the current position in
the journal matches the specified cursor. This is
useful since cursor strings do not uniquely identify
an entry: the same entry might be referred to by
multiple different cursor strings, and hence string
comparing cursors is not possible. Use this call to
verify after an invocation of
<citerefentry><refentrytitle>sd_journal_seek_cursor</refentrytitle><manvolnum>3</manvolnum></citerefentry>
whether the entry being sought to was actually found
in the journal or the next closest entry was used
instead.</para>
</refsect1>
<refsect1>
<title>Return Value</title>
<para><function>sd_journal_get_cursor()</function> returns 0 on
success or a negative errno-style error code.
<function>sd_journal_test_cursor()</function> returns positive if
the current entry matches the specified cursor, 0 if it does not
match the specified cursor or a negative errno-style error code on
failure.</para>
</refsect1>
<refsect1>
<title>Notes</title>
<xi:include href="threads-aware.xml" xpointer="strict" />
<xi:include href="libsystemd-pkgconfig.xml" xpointer="pkgconfig-text"/>
</refsect1>
<refsect1>
<title>See Also</title>
<para>
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd-journal</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_journal_open</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_journal_seek_cursor</refentrytitle><manvolnum>3</manvolnum></citerefentry>
</para>
</refsect1>
</refentry>