File: sd_journal_get_cursor.xml

package info (click to toggle)
systemd 259-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 105,132 kB
  • sloc: ansic: 726,480; xml: 121,118; python: 36,740; sh: 35,016; cpp: 946; makefile: 273; awk: 102; lisp: 13; sed: 1
file content (147 lines) | stat: -rw-r--r-- 6,379 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->

<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>ret_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>. The
    <parameter>ret_cursor</parameter> parameter may be passed as <constant>NULL</constant> in which case the
    cursor string is not generated, however the return value will indicate whether the journal context is
    currently positioned on an entry, and thus has a cursor associated.</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>

    <para>Note that <function>sd_journal_get_cursor()</function>
    and <function>sd_journal_test_cursor()</function>
    will not work before
    <citerefentry><refentrytitle>sd_journal_next</refentrytitle><manvolnum>3</manvolnum></citerefentry>
    (or one of the other functions which move to an entry)
    has been called at least once to position the read pointer at a valid entry.</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>

    <refsect2>
      <title>Errors</title>

      <para>Returned errors may indicate the following problems:</para>

      <variablelist>
        <varlistentry>
          <term><constant>-EADDRNOTAVAIL</constant></term>

          <listitem><para>The journal context is currently not positioned on any entry, and hence no cursor
          string can be generated.</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><constant>-EINVAL</constant></term>

          <listitem><para>The journal context parameter is <constant>NULL</constant>.</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><constant>-ECHILD</constant></term>

          <listitem><para>The journal context object has been allocated in a different process than it is
          being used in now.</para></listitem>
        </varlistentry>
      </variablelist>
    </refsect2>
  </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>History</title>
    <para><function>sd_journal_get_cursor()</function> was added in version 187.</para>
    <para><function>sd_journal_test_cursor()</function> was added in version 195.</para>
  </refsect1>

  <refsect1>
    <title>See Also</title>

    <para><simplelist type="inline">
      <member><citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
      <member><citerefentry><refentrytitle>sd-journal</refentrytitle><manvolnum>3</manvolnum></citerefentry></member>
      <member><citerefentry><refentrytitle>sd_journal_open</refentrytitle><manvolnum>3</manvolnum></citerefentry></member>
      <member><citerefentry><refentrytitle>sd_journal_seek_cursor</refentrytitle><manvolnum>3</manvolnum></citerefentry></member>
    </simplelist></para>
  </refsect1>

</refentry>