Merge pull request #9208 from keszybz/async-callback-memleak
Async callback memleak fix and documentation cleanups
This commit is contained in:
@@ -231,6 +231,10 @@ manpages = [
|
||||
['sd_bus_set_connected_signal', '3', ['sd_bus_get_connected_signal'], ''],
|
||||
['sd_bus_set_sender', '3', ['sd_bus_get_sender'], ''],
|
||||
['sd_bus_set_watch_bind', '3', ['sd_bus_get_watch_bind'], ''],
|
||||
['sd_bus_slot_set_destroy_callback',
|
||||
'3',
|
||||
['sd_bus_slot_get_destroy_callback'],
|
||||
''],
|
||||
['sd_bus_slot_set_floating', '3', ['sd_bus_slot_get_floating'], ''],
|
||||
['sd_bus_track_add_name',
|
||||
'3',
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
Copyright 2014 Zbigniew Jędrzejewski-Szmek
|
||||
-->
|
||||
|
||||
<refentry id="sd_bus_creds_get_pid">
|
||||
<refentry id="sd_bus_creds_get_pid" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_bus_creds_get_pid</title>
|
||||
@@ -529,16 +529,7 @@
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para><function>sd_bus_creds_get_pid()</function> and the other
|
||||
functions described here are available as a shared library, which
|
||||
can be compiled and linked to with the
|
||||
<constant>libsystemd</constant> <citerefentry
|
||||
project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
Copyright 2014 Zbigniew Jędrzejewski-Szmek
|
||||
-->
|
||||
|
||||
<refentry id="sd_bus_creds_new_from_pid">
|
||||
<refentry id="sd_bus_creds_new_from_pid" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_bus_creds_new_from_pid</title>
|
||||
@@ -315,16 +315,7 @@
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para><function>sd_bus_creds_new_from_pid()</function> and the
|
||||
other calls described here are available as a shared library,
|
||||
which can be compiled and linked to with the
|
||||
<constant>libsystemd</constant> <citerefentry
|
||||
project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
+2
-11
@@ -10,7 +10,7 @@
|
||||
Copyright 2014 Zbigniew Jędrzejewski-Szmek
|
||||
-->
|
||||
|
||||
<refentry id="sd_bus_default">
|
||||
<refentry id="sd_bus_default" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_bus_default</title>
|
||||
@@ -281,16 +281,7 @@
|
||||
by returned. See <citerefentry><refentrytitle>sd_bus_send</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para><function>sd_bus_open_user()</function> and the other
|
||||
functions described here are available as a shared library, which
|
||||
can be compiled and linked to with the
|
||||
<constant>libsystemd</constant> <citerefentry
|
||||
project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
+2
-10
@@ -10,7 +10,7 @@
|
||||
Copyright 2014 Zbigniew Jędrzejewski-Szmek
|
||||
-->
|
||||
|
||||
<refentry id="sd_bus_error">
|
||||
<refentry id="sd_bus_error" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_bus_error</title>
|
||||
@@ -352,15 +352,7 @@
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para><function>sd_bus_set_error()</function> and other functions
|
||||
described here are available as a shared library, which can be
|
||||
compiled and linked to with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
@@ -251,15 +251,7 @@ sd_bus_message_append(m, "ynqiuxtd", y, n, q, i, u, x, t, d);</programlisting>
|
||||
|
||||
<xi:include href="sd_bus_message_append_basic.xml" xpointer="errors" />
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para><function>sd_bus_open_user()</function> and other functions
|
||||
described here are available as a shared library, which can be
|
||||
compiled and linked to with the
|
||||
<constant>libsystemd-bus</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
@@ -176,15 +176,7 @@
|
||||
|
||||
<xi:include href="sd_bus_message_append_basic.xml" xpointer="errors" />
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para><function>sd_bus_append_array()</function> and other
|
||||
functions described here are available as a shared library, which
|
||||
can be compiled and linked to with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
Copyright 2014 Zbigniew Jędrzejewski-Szmek
|
||||
-->
|
||||
|
||||
<refentry id="sd_bus_message_append_basic">
|
||||
<refentry id="sd_bus_message_append_basic" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_bus_message_append_basic</title>
|
||||
@@ -260,15 +260,7 @@
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para>The <function>sd_bus_append_basic()</function> function
|
||||
described here is available as a shared library, which can be
|
||||
compiled and linked to with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
@@ -119,14 +119,7 @@
|
||||
|
||||
<xi:include href="sd_bus_message_append_basic.xml" xpointer="errors" />
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para>The functions described here are available as a shared library,
|
||||
which can be compiled and linked to with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
@@ -80,15 +80,7 @@
|
||||
|
||||
<xi:include href="sd_bus_message_append_basic.xml" xpointer="errors" />
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para>The <function>sd_bus_append_append_strv()</function> function
|
||||
described here is available as a shared library, which can be
|
||||
compiled and linked to with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
@@ -10,7 +10,8 @@
|
||||
Copyright 2013 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_bus_message_get_cookie">
|
||||
<refentry id="sd_bus_message_get_cookie"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_bus_message_get_cookie</title>
|
||||
@@ -111,16 +112,7 @@
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para>The <function>sd_bus_message_get_cookie()</function> and
|
||||
<function>sd_bus_message_get_reply_cookie()</function> interfaces
|
||||
are available as a shared library, which can be compiled and
|
||||
linked to with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
@@ -10,7 +10,8 @@
|
||||
Copyright 2013 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_bus_message_get_monotonic_usec">
|
||||
<refentry id="sd_bus_message_get_monotonic_usec"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_bus_message_get_monotonic_usec</title>
|
||||
@@ -141,18 +142,7 @@
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para>The
|
||||
<function>sd_bus_message_get_monotonic_usec()</function>,
|
||||
<function>sd_bus_message_get_realtime_usec()</function>, and
|
||||
<function>sd_bus_message_get_seqnum()</function> interfaces are
|
||||
available as a shared library, which can be compiled and linked to
|
||||
with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
Copyright 2017 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_bus_message_set_destination">
|
||||
<refentry id="sd_bus_message_set_destination" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_bus_message_set_destination</title>
|
||||
@@ -99,16 +99,7 @@
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para>The <function>sd_bus_message_set_destination()</function> and
|
||||
<function>sd_bus_message_set_sender()</function> interfaces
|
||||
are available as a shared library, which can be compiled and
|
||||
linked to with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
Copyright 2014 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_bus_negotiate_fds">
|
||||
<refentry id="sd_bus_negotiate_fds" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_bus_negotiate_fds</title>
|
||||
@@ -140,15 +140,7 @@
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para><function>sd_bus_negotiate_fds()</function> and the other
|
||||
functions described here are available as a shared library, which
|
||||
can be compiled and linked to with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
+2
-10
@@ -10,7 +10,7 @@
|
||||
Copyright 2014 Zbigniew Jędrzejewski-Szmek
|
||||
-->
|
||||
|
||||
<refentry id="sd_bus_new">
|
||||
<refentry id="sd_bus_new" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_bus_new</title>
|
||||
@@ -152,15 +152,7 @@
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para><function>sd_bus_new()</function> and other functions
|
||||
described here are available as a shared library, which can be
|
||||
compiled and linked to with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
<?xml version='1.0'?> <!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*-->
|
||||
<!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_bus_slot_set_destroy_callback"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_bus_slot_set_destroy_callback</title>
|
||||
<productname>systemd</productname>
|
||||
</refentryinfo>
|
||||
|
||||
<refmeta>
|
||||
<refentrytitle>sd_bus_slot_set_destroy_callback</refentrytitle>
|
||||
<manvolnum>3</manvolnum>
|
||||
</refmeta>
|
||||
|
||||
<refnamediv>
|
||||
<refname>sd_bus_slot_set_destroy_callback</refname>
|
||||
<refname>sd_bus_slot_get_destroy_callback</refname>
|
||||
|
||||
<refpurpose>Define the callback function for resource cleanup.</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
<funcsynopsis>
|
||||
<funcsynopsisinfo>#include <systemd/sd-bus.h></funcsynopsisinfo>
|
||||
|
||||
<funcprototype>
|
||||
<funcdef>typedef int (*<function>sd_bus_destroy_t</function>)</funcdef>
|
||||
<paramdef>void *<parameter>userdata</parameter></paramdef>
|
||||
</funcprototype>
|
||||
|
||||
<funcprototype>
|
||||
<funcdef>int <function>sd_bus_slot_set_destroy_callback</function></funcdef>
|
||||
<paramdef>sd_bus_slot *<parameter>slot</parameter></paramdef>
|
||||
<paramdef>sd_bus_destroy_t <parameter>callback</parameter></paramdef>
|
||||
</funcprototype>
|
||||
|
||||
<funcprototype>
|
||||
<funcdef>int <function>sd_bus_slot_get_destroy_callback</function></funcdef>
|
||||
<paramdef>sd_bus_slot *<parameter>slot</parameter></paramdef>
|
||||
<paramdef>sd_bus_destroy_t *<parameter>callback</parameter></paramdef>
|
||||
</funcprototype>
|
||||
</funcsynopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsect1>
|
||||
<title>Description</title>
|
||||
|
||||
<para><function>sd_bus_slot_set_destroy_callback()</function> sets
|
||||
<parameter>callback</parameter> as the callback function to be called right before the bus slot
|
||||
object <parameter>slot</parameter> is deallocated. The <parameter>userdata</parameter> pointer
|
||||
from the slot object will be passed as the <parameter>userdata</parameter> parameter. This
|
||||
pointer can be set specified as an argument to the constuctor functions, see
|
||||
<citerefentry><refentrytitle>sd_bus_add_match</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
||||
or directly, see
|
||||
<citerefentry><refentrytitle>sd_bus_set_userdata</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
|
||||
This callback function is called even if <parameter>userdata</parameter> is
|
||||
<constant>NULL</constant>.</para>
|
||||
|
||||
<para><function>sd_bus_slot_get_destroy_callback()</function> returns the current callback
|
||||
for <parameter>slot</parameter> in the <parameter>callback</parameter> parameter.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Return Value</title>
|
||||
|
||||
<para>On success, <function>sd_bus_slot_set_destroy_callback()</function> returns 0 or a
|
||||
positive integer. On failure, it returns a negative errno-style error code.</para>
|
||||
|
||||
<para><function>sd_bus_slot_get_destroy_callback()</function> returns 1 if the destroy callback
|
||||
function is set, 0 if not. On failure, it returns a negative errno-style error code.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Errors</title>
|
||||
|
||||
<para>Returned errors may indicate the following problems:</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><constant>-EINVAL</constant></term>
|
||||
|
||||
<listitem><para>The <parameter>slot</parameter> parameter is <constant>NULL</constant>.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
<para>
|
||||
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
|
||||
<citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
||||
<citerefentry><refentrytitle>sd_bus_slot_set_floating</refentrytitle><manvolnum>3</manvolnum></citerefentry>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
</refentry>
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
<!-- SPDX-License-Identifier: LGPL-2.1+ -->
|
||||
|
||||
<refentry id="sd_bus_slot_set_floating">
|
||||
<refentry id="sd_bus_slot_set_floating" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_bus_slot_set_floating</title>
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
<funcprototype>
|
||||
<funcdef>int <function>sd_bus_slot_set_floating</function></funcdef>
|
||||
<paramdef>sd_bus_slot *<parameter>bus</parameter></paramdef>
|
||||
<paramdef>sd_bus_slot *<parameter>slot</parameter></paramdef>
|
||||
<paramdef>int <parameter>b</parameter></paramdef>
|
||||
</funcprototype>
|
||||
|
||||
@@ -81,6 +81,12 @@
|
||||
<para>Returned errors may indicate the following problems:</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><constant>-EINVAL</constant></term>
|
||||
|
||||
<listitem><para>The <parameter>slot</parameter> parameter is <constant>NULL</constant>.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><constant>-ECHILD</constant></term>
|
||||
|
||||
@@ -96,14 +102,7 @@
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para><function>sd_bus_slot_set_floating()</function> and <function>sd_bus_slot_get_floating()</function> are
|
||||
available as a shared library, which can be compiled and linked to with the
|
||||
<constant>libsystemd</constant> <citerefentry
|
||||
project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry> file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
@@ -111,6 +110,7 @@
|
||||
<para>
|
||||
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
|
||||
<citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
||||
<citerefentry><refentrytitle>sd_bus_slot_set_destroy_callback</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
||||
<citerefentry><refentrytitle>sd_bus_add_match</refentrytitle><manvolnum>3</manvolnum></citerefentry>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
Copyright 2016 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_bus_track_add_name">
|
||||
<refentry id="sd_bus_track_add_name" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_bus_track_add_name</title>
|
||||
@@ -229,13 +229,7 @@
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para><function>sd_bus_track_add_name()</function> and the other calls described here are available as a shared library,
|
||||
which can be compiled and linked to with the <constant>libsystemd</constant> <citerefentry
|
||||
project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry> file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
Copyright 2016 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_bus_track_new">
|
||||
<refentry id="sd_bus_track_new" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_bus_track_new</title>
|
||||
@@ -231,13 +231,7 @@
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para><function>sd_bus_track_new()</function> and the other calls described here are available as a shared library,
|
||||
which can be compiled and linked to with the <constant>libsystemd</constant> <citerefentry
|
||||
project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry> file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
+3
-13
@@ -10,7 +10,8 @@
|
||||
Copyright 2010 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_get_seats" conditional='HAVE_PAM'>
|
||||
<refentry id="sd_get_seats" conditional='HAVE_PAM'
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_get_seats</title>
|
||||
@@ -121,18 +122,7 @@
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para>The <function>sd_get_seats()</function>,
|
||||
<function>sd_get_sessions()</function>,
|
||||
<function>sd_get_uids()</function> and
|
||||
<function>sd_get_machine_names()</function> interfaces are
|
||||
available as a shared library, which can be compiled and linked to
|
||||
with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
Copyright 2012 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_id128_get_machine">
|
||||
<refentry id="sd_id128_get_machine" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_id128_get_machine</title>
|
||||
@@ -123,15 +123,7 @@
|
||||
empty or all zeros.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para>The <function>sd_id128_get_machine()</function>, <function>sd_id128_get_machine_app_specific()</function>
|
||||
<function>sd_id128_get_boot()</function> and <function>sd_id128_get_invocation()</function> interfaces are
|
||||
available as a shared library, which can be compiled and linked to with the
|
||||
<literal>libsystemd</literal> <citerefentry
|
||||
project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry> file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>Examples</title>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
Copyright 2012 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_id128_randomize">
|
||||
<refentry id="sd_id128_randomize" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_id128_randomize</title>
|
||||
@@ -78,15 +78,7 @@
|
||||
errno-style error code.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para>The <function>sd_id128_randomize()</function> interface is
|
||||
available as a shared library, which can be compiled and linked to
|
||||
with the
|
||||
<literal>libsystemd</literal> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
Copyright 2012 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_id128_to_string">
|
||||
<refentry id="sd_id128_to_string" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_id128_to_string</title>
|
||||
@@ -95,16 +95,7 @@
|
||||
errno-style error code.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para>The <function>sd_id128_to_string()</function> and
|
||||
<function>sd_id128_from_string()</function> interfaces are
|
||||
available as a shared library, which can be compiled and linked to
|
||||
with the
|
||||
<literal>libsystemd</literal> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
Copyright 2012 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_journal_add_match">
|
||||
<refentry id="sd_journal_add_match" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_journal_add_match</title>
|
||||
@@ -154,21 +154,7 @@
|
||||
returns nothing.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para>All functions listed here are thread-agnostic and only a single thread may operate
|
||||
on a given <structname>sd_journal</structname> object.</para>
|
||||
|
||||
<para>The <function>sd_journal_add_match()</function>,
|
||||
<function>sd_journal_add_disjunction()</function>,
|
||||
<function>sd_journal_add_conjunction()</function> and
|
||||
<function>sd_journal_flush_matches()</function>
|
||||
interfaces are available as a shared library, which can
|
||||
be compiled and linked to with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>Examples</title>
|
||||
@@ -189,7 +175,6 @@ int add_matches(sd_journal *j) {
|
||||
sd_journal_add_disjunction(j);
|
||||
sd_journal_add_match(j, "MESSAGE_ID=03bb1dab98ab4ecfbf6fff2738bdd964", 0);
|
||||
}</programlisting>
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
Copyright 2016 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_journal_enumerate_fields">
|
||||
<refentry id="sd_journal_enumerate_fields" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_journal_enumerate_fields</title>
|
||||
@@ -102,10 +102,7 @@
|
||||
<para>All functions listed here are thread-agnostic and only a single thread may operate
|
||||
on a given <structname>sd_journal</structname> object.</para>
|
||||
|
||||
<para>The <function>sd_journal_enumerate_fields()</function> and <function>sd_journal_restart_fields()</function>
|
||||
interfaces are available as a shared library, which can be compiled and linked to with the
|
||||
<constant>libsystemd</constant> <citerefentry
|
||||
project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry> file.</para>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" xpointer="pkgconfig-text"/>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
Copyright 2012 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_journal_get_catalog">
|
||||
<refentry id="sd_journal_get_catalog" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_journal_get_catalog</title>
|
||||
@@ -104,12 +104,7 @@
|
||||
single thread may operate on a given <structname>sd_journal</structname> object. Function
|
||||
<function>sd_journal_get_catalog_for_message_id()</function> is thread-safe.</para>
|
||||
|
||||
<para>The <function>sd_journal_get_catalog()</function> and
|
||||
<function>sd_journal_get_catalog_for_message_id()</function>
|
||||
interfaces are available as a shared library, which can be
|
||||
compiled and linked to with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" xpointer="pkgconfig-text"/>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
Copyright 2012 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_journal_get_cursor">
|
||||
<refentry id="sd_journal_get_cursor" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_journal_get_cursor</title>
|
||||
@@ -114,12 +114,7 @@
|
||||
<para>All functions listed here are thread-agnostic and only a single thread may operate
|
||||
on a given <structname>sd_journal</structname> object.</para>
|
||||
|
||||
<para>The <function>sd_journal_get_cursor()</function> and
|
||||
<function>sd_journal_test_cursor()</function> interfaces are
|
||||
available as a shared library, which can be compiled and linked to
|
||||
with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" xpointer="pkgconfig-text"/>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
Copyright 2012 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_journal_get_cutoff_realtime_usec">
|
||||
<refentry id="sd_journal_get_cutoff_realtime_usec" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_journal_get_cutoff_realtime_usec</title>
|
||||
@@ -112,13 +112,7 @@
|
||||
<para>All functions listed here are thread-agnostic and only a single thread may operate
|
||||
on a given <structname>sd_journal</structname> object.</para>
|
||||
|
||||
<para>The
|
||||
<function>sd_journal_get_cutoff_realtime_usec()</function> and
|
||||
<function>sd_journal_get_cutoff_monotonic_usec()</function>
|
||||
interfaces are available as a shared library, which can be
|
||||
compiled and linked to with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" xpointer="pkgconfig-text"/>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
Copyright 2012 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_journal_get_data">
|
||||
<refentry id="sd_journal_get_data" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_journal_get_data</title>
|
||||
@@ -169,19 +169,7 @@
|
||||
success or a negative errno-style error code.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para>The <function>sd_journal_get_data()</function>,
|
||||
<function>sd_journal_enumerate_data()</function>,
|
||||
<function>sd_journal_restart_data()</function>,
|
||||
<function>sd_journal_set_data_threshold()</function> and
|
||||
<function>sd_journal_get_data_threshold()</function> interfaces
|
||||
are available as a shared library, which can be compiled and
|
||||
linked to with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>Examples</title>
|
||||
@@ -204,7 +192,6 @@ int print_fields(sd_journal *j) {
|
||||
printf("%.*s\n", (int) length, data);
|
||||
}
|
||||
…</programlisting>
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
|
||||
@@ -10,7 +10,8 @@
|
||||
Copyright 2012 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_journal_get_realtime_usec">
|
||||
<refentry id="sd_journal_get_realtime_usec"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_journal_get_realtime_usec</title>
|
||||
@@ -101,16 +102,7 @@
|
||||
<function>sd_journal_get_monotonic_usec()</function>.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para>The <function>sd_journal_get_realtime_usec()</function> and
|
||||
<function>sd_journal_get_monotonic_usec()</function> interfaces
|
||||
are available as a shared library, which can be compiled and
|
||||
linked to with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
Copyright 2012 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_journal_get_usage">
|
||||
<refentry id="sd_journal_get_usage" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_journal_get_usage</title>
|
||||
@@ -72,11 +72,7 @@
|
||||
<para>All functions listed here are thread-agnostic and only a single thread may operate
|
||||
on a given <structname>sd_journal</structname> object.</para>
|
||||
|
||||
<para>The <function>sd_journal_get_usage()</function> interface is
|
||||
available as a shared library, which can be compiled and linked to
|
||||
with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" xpointer="pkgconfig-text"/>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
Copyright 2016 Jan Synáček
|
||||
-->
|
||||
|
||||
<refentry id="sd_journal_has_runtime_files">
|
||||
<refentry id="sd_journal_has_runtime_files" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_journal_has_runtime_files</title>
|
||||
@@ -80,10 +80,7 @@
|
||||
<para>All functions listed here are thread-agnostic and only a single thread may operate
|
||||
on a given <structname>sd_journal</structname> object.</para>
|
||||
|
||||
<para>Functions listed here are available as a shared library, which can be compiled and linked
|
||||
to with the <constant>libsystemd</constant> <citerefentry
|
||||
project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" xpointer="pkgconfig-text"/>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
Copyright 2012 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_journal_next">
|
||||
<refentry id="sd_journal_next" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_journal_next</title>
|
||||
@@ -138,14 +138,7 @@
|
||||
<para>All functions listed here are thread-agnostic and only a single thread may operate
|
||||
on a given <structname>sd_journal</structname> object.</para>
|
||||
|
||||
<para>The <function>sd_journal_next()</function>,
|
||||
<function>sd_journal_previous()</function>,
|
||||
<function>sd_journal_next_skip()</function> and
|
||||
<function>sd_journal_previous_skip()</function> interfaces are
|
||||
available as a shared library, which can be compiled and linked to
|
||||
with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" xpointer="pkgconfig-text"/>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
Copyright 2012 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_journal_print">
|
||||
<refentry id="sd_journal_print" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_journal_print</title>
|
||||
@@ -203,15 +203,7 @@ sd_journal_send("MESSAGE=Hello World, this is PID %lu!", (unsigned long) getpid(
|
||||
not async signal safe.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para>The <function>sd_journal_print()</function>, <function>sd_journal_printv()</function>,
|
||||
<function>sd_journal_send()</function>, <function>sd_journal_sendv()</function> and
|
||||
<function>sd_journal_perror()</function> interfaces are available as a shared library, which can be compiled and
|
||||
linked to with the <constant>libsystemd</constant> <citerefentry
|
||||
project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry> file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
Copyright 2012 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_journal_query_unique">
|
||||
<refentry id="sd_journal_query_unique" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_journal_query_unique</title>
|
||||
@@ -142,13 +142,7 @@
|
||||
<para>All functions listed here are thread-agnostic and only a single thread may operate
|
||||
on a given <structname>sd_journal</structname> object.</para>
|
||||
|
||||
<para>The <function>sd_journal_query_unique()</function>,
|
||||
<function>sd_journal_enumerate_unique()</function> and
|
||||
<function>sd_journal_restart_unique()</function> interfaces are
|
||||
available as a shared library, which can be compiled and linked to
|
||||
with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" xpointer="pkgconfig-text"/>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
Copyright 2012 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_journal_seek_head">
|
||||
<refentry id="sd_journal_seek_head" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_journal_seek_head</title>
|
||||
@@ -136,15 +136,7 @@
|
||||
<para>All functions listed here are thread-agnostic and only a single thread may operate
|
||||
on a given <structname>sd_journal</structname> object.</para>
|
||||
|
||||
<para>The <function>sd_journal_seek_head()</function>,
|
||||
<function>sd_journal_seek_tail()</function>,
|
||||
<function>sd_journal_seek_monotonic_usec()</function>,
|
||||
<function>sd_journal_seek_realtime_usec()</function>,
|
||||
and <function>sd_journal_seek_cursor()</function>
|
||||
interfaces are available as a shared library, which can
|
||||
be compiled and linked to with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" xpointer="pkgconfig-text"/>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
Copyright 2012 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_journal_stream_fd">
|
||||
<refentry id="sd_journal_stream_fd" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_journal_stream_fd</title>
|
||||
@@ -108,11 +108,7 @@
|
||||
<para>Function <function>sd_journal_stream_fd()</function> is thread-safe and may be called
|
||||
from multiple threads.</para>
|
||||
|
||||
<para>The <function>sd_journal_stream_fd()</function> interface is
|
||||
available as a shared library, which can be compiled and linked to
|
||||
with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" xpointer="pkgconfig-text"/>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
|
||||
@@ -10,7 +10,8 @@
|
||||
Copyright 2010 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_login_monitor_new" conditional='HAVE_PAM'>
|
||||
<refentry id="sd_login_monitor_new" conditional='HAVE_PAM'
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_login_monitor_new</title>
|
||||
@@ -246,20 +247,7 @@ else {
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para>The <function>sd_login_monitor_new()</function>,
|
||||
<function>sd_login_monitor_unref()</function>,
|
||||
<function>sd_login_monitor_flush()</function>,
|
||||
<function>sd_login_monitor_get_fd()</function>,
|
||||
<function>sd_login_monitor_get_events()</function> and
|
||||
<function>sd_login_monitor_get_timeout()</function>
|
||||
interfaces are available as a shared library, which can be
|
||||
compiled and linked to with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
Copyright 2014 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_machine_get_class">
|
||||
<refentry id="sd_machine_get_class" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_machine_get_class</title>
|
||||
@@ -116,16 +116,7 @@
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para>The <function>sd_machine_get_class()</function> and
|
||||
<function>sd_machine_get_ifindices()</function> interfaces are
|
||||
available as a shared library, which can be compiled and linked to
|
||||
with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
@@ -10,7 +10,8 @@
|
||||
Copyright 2010 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_pid_get_owner_uid" conditional='HAVE_PAM'>
|
||||
<refentry id="sd_pid_get_owner_uid" conditional='HAVE_PAM'
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_pid_get_owner_uid</title>
|
||||
@@ -308,24 +309,7 @@
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para>The <function>sd_pid_get_session()</function>,
|
||||
<function>sd_pid_get_unit()</function>,
|
||||
<function>sd_pid_get_user_unit()</function>,
|
||||
<function>sd_pid_get_owner_uid()</function>,
|
||||
<function>sd_pid_get_machine_name()</function>,
|
||||
<function>sd_pid_get_slice()</function>,
|
||||
<function>sd_pid_get_user_slice()</function>,
|
||||
<function>sd_peer_get_session()</function>,
|
||||
<function>sd_peer_get_unit()</function>,
|
||||
<function>sd_peer_get_user_unit()</function>,
|
||||
<function>sd_peer_get_owner_uid()</function>,
|
||||
<function>sd_peer_get_machine_name()</function>,
|
||||
<function>sd_peer_get_slice()</function> and
|
||||
<function>sd_peer_get_user_slice()</function> interfaces are
|
||||
available as a shared library, which can be compiled and linked to
|
||||
with the <constant>libsystemd</constant> <citerefentry
|
||||
project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" xpointer="pkgconfig-text"/>
|
||||
|
||||
<para>Note that the login session identifier as
|
||||
returned by <function>sd_pid_get_session()</function>
|
||||
|
||||
@@ -10,7 +10,8 @@
|
||||
Copyright 2010 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_seat_get_active" conditional='HAVE_PAM'>
|
||||
<refentry id="sd_seat_get_active" conditional='HAVE_PAM'
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_seat_get_active</title>
|
||||
@@ -175,19 +176,7 @@
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para>The <function>sd_seat_get_active()</function>,
|
||||
<function>sd_seat_get_sessions()</function>,
|
||||
<function>sd_seat_can_multi_session()</function>,
|
||||
<function>sd_seat_can_tty()</function> and
|
||||
<function>sd_seat_can_graphical()</function> interfaces are
|
||||
available as a shared library, which can be compiled and linked to
|
||||
with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
@@ -10,7 +10,8 @@
|
||||
Copyright 2010 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_session_is_active" conditional='HAVE_PAM'>
|
||||
<refentry id="sd_session_is_active" conditional='HAVE_PAM'
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_session_is_active</title>
|
||||
@@ -316,25 +317,7 @@
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para>The <function>sd_session_is_active()</function>,
|
||||
<function>sd_session_get_state()</function>,
|
||||
<function>sd_session_get_uid()</function>,
|
||||
<function>sd_session_get_seat()</function>,
|
||||
<function>sd_session_get_service()</function>,
|
||||
<function>sd_session_get_type()</function>,
|
||||
<function>sd_session_get_class()</function>,
|
||||
<function>sd_session_get_display()</function>,
|
||||
<function>sd_session_get_remote_host()</function>,
|
||||
<function>sd_session_get_remote_user()</function> and
|
||||
<function>sd_session_get_tty()</function>
|
||||
interfaces are available as a shared library, which can
|
||||
be compiled and linked to with the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
file.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
@@ -10,7 +10,8 @@
|
||||
Copyright 2010 Lennart Poettering
|
||||
-->
|
||||
|
||||
<refentry id="sd_uid_get_state" conditional='HAVE_PAM'>
|
||||
<refentry id="sd_uid_get_state" conditional='HAVE_PAM'
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
|
||||
<refentryinfo>
|
||||
<title>sd_uid_get_state</title>
|
||||
@@ -197,14 +198,7 @@
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
|
||||
<para>Functions described here are available as a shared library,
|
||||
and can be compiled and linked to using the
|
||||
<constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
entry.</para>
|
||||
</refsect1>
|
||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||
|
||||
<refsect1>
|
||||
<title>See Also</title>
|
||||
|
||||
@@ -563,6 +563,8 @@ global:
|
||||
sd_bus_open_system_with_description;
|
||||
sd_bus_slot_get_floating;
|
||||
sd_bus_slot_set_floating;
|
||||
sd_bus_slot_get_destroy_callback;
|
||||
sd_bus_slot_set_destroy_callback;
|
||||
sd_event_add_inotify;
|
||||
sd_event_source_get_inotify_mask;
|
||||
} LIBSYSTEMD_238;
|
||||
|
||||
@@ -127,6 +127,7 @@ struct sd_bus_slot {
|
||||
unsigned n_ref;
|
||||
sd_bus *bus;
|
||||
void *userdata;
|
||||
sd_bus_destroy_t destroy_callback;
|
||||
BusSlotType type:5;
|
||||
|
||||
/* Slots can be "floating" or not. If they are not floating (the usual case) then they reference the bus object
|
||||
|
||||
@@ -203,6 +203,10 @@ _public_ sd_bus_slot* sd_bus_slot_unref(sd_bus_slot *slot) {
|
||||
}
|
||||
|
||||
bus_slot_disconnect(slot);
|
||||
|
||||
if (slot->destroy_callback)
|
||||
slot->destroy_callback(slot->userdata);
|
||||
|
||||
free(slot->description);
|
||||
return mfree(slot);
|
||||
}
|
||||
@@ -230,6 +234,22 @@ _public_ void *sd_bus_slot_set_userdata(sd_bus_slot *slot, void *userdata) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
_public_ int sd_bus_slot_set_destroy_callback(sd_bus_slot *slot, sd_bus_destroy_t callback) {
|
||||
assert_return(slot, -EINVAL);
|
||||
|
||||
slot->destroy_callback = callback;
|
||||
return 0;
|
||||
}
|
||||
|
||||
_public_ int sd_bus_slot_get_destroy_callback(sd_bus_slot *slot, sd_bus_destroy_t *callback) {
|
||||
assert_return(slot, -EINVAL);
|
||||
|
||||
if (callback)
|
||||
*callback = slot->destroy_callback;
|
||||
|
||||
return !!slot->destroy_callback;
|
||||
}
|
||||
|
||||
_public_ sd_bus_message *sd_bus_slot_get_current_message(sd_bus_slot *slot) {
|
||||
assert_return(slot, NULL);
|
||||
assert_return(slot->type >= 0, NULL);
|
||||
|
||||
+57
-15
@@ -1729,19 +1729,34 @@ int bus_open_system_watch_bind_with_description(sd_bus **ret, const char *descri
|
||||
}
|
||||
|
||||
struct request_name_data {
|
||||
unsigned n_ref;
|
||||
|
||||
const char *name;
|
||||
uint64_t flags;
|
||||
void *userdata;
|
||||
};
|
||||
|
||||
static void request_name_destroy_callback(void *userdata) {
|
||||
struct request_name_data *data = userdata;
|
||||
|
||||
assert(data);
|
||||
assert(data->n_ref > 0);
|
||||
|
||||
log_info("%s n_ref=%u", __func__, data->n_ref);
|
||||
|
||||
data->n_ref--;
|
||||
if (data->n_ref == 0)
|
||||
free(data);
|
||||
}
|
||||
|
||||
static int reload_dbus_handler(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) {
|
||||
_cleanup_free_ struct request_name_data *data = userdata;
|
||||
struct request_name_data *data = userdata;
|
||||
const sd_bus_error *e;
|
||||
int r;
|
||||
|
||||
assert(m);
|
||||
assert(data);
|
||||
assert(data->name);
|
||||
assert(data->n_ref > 0);
|
||||
|
||||
e = sd_bus_message_get_error(m);
|
||||
if (e) {
|
||||
@@ -1758,15 +1773,16 @@ static int reload_dbus_handler(sd_bus_message *m, void *userdata, sd_bus_error *
|
||||
}
|
||||
|
||||
static int request_name_handler_may_reload_dbus(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) {
|
||||
_cleanup_free_ struct request_name_data *data = userdata;
|
||||
struct request_name_data *data = userdata;
|
||||
uint32_t ret;
|
||||
int r;
|
||||
|
||||
assert(m);
|
||||
assert(userdata);
|
||||
assert(data);
|
||||
|
||||
if (sd_bus_message_is_method_error(m, NULL)) {
|
||||
const sd_bus_error *e = sd_bus_message_get_error(m);
|
||||
_cleanup_(sd_bus_slot_unrefp) sd_bus_slot *slot = NULL;
|
||||
|
||||
if (!sd_bus_error_has_name(e, SD_BUS_ERROR_ACCESS_DENIED)) {
|
||||
log_debug_errno(sd_bus_error_get_errno(e),
|
||||
@@ -1778,31 +1794,37 @@ static int request_name_handler_may_reload_dbus(sd_bus_message *m, void *userdat
|
||||
}
|
||||
|
||||
log_debug_errno(sd_bus_error_get_errno(e),
|
||||
"Unable to request name, retry after reloading DBus configuration: %s",
|
||||
"Unable to request name, will retry after reloading DBus configuration: %s",
|
||||
e->message);
|
||||
|
||||
/* If systemd-timesyncd.service enables DynamicUser= and dbus.service
|
||||
* started before the dynamic user is realized, then the DBus policy
|
||||
* about timesyncd has not been enabled yet. So, let's try to reload
|
||||
* DBus configuration, and after that request name again. Note that it
|
||||
* DBus configuration, and after that request the name again. Note that it
|
||||
* seems that no privileges are necessary to call the following method. */
|
||||
|
||||
r = sd_bus_call_method_async(
|
||||
sd_bus_message_get_bus(m),
|
||||
NULL,
|
||||
&slot,
|
||||
"org.freedesktop.DBus",
|
||||
"/org/freedesktop/DBus",
|
||||
"org.freedesktop.DBus",
|
||||
"ReloadConfig",
|
||||
reload_dbus_handler,
|
||||
userdata, NULL);
|
||||
data, NULL);
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "Failed to reload DBus configuration: %m");
|
||||
bus_enter_closing(sd_bus_message_get_bus(m));
|
||||
return 1;
|
||||
}
|
||||
|
||||
data = NULL; /* Avoid free() */
|
||||
data->n_ref ++;
|
||||
assert_se(sd_bus_slot_set_destroy_callback(slot, request_name_destroy_callback) >= 0);
|
||||
|
||||
r = sd_bus_slot_set_floating(slot, true);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -1836,17 +1858,37 @@ static int request_name_handler_may_reload_dbus(sd_bus_message *m, void *userdat
|
||||
}
|
||||
|
||||
int bus_request_name_async_may_reload_dbus(sd_bus *bus, sd_bus_slot **ret_slot, const char *name, uint64_t flags, void *userdata) {
|
||||
struct request_name_data *data;
|
||||
_cleanup_free_ struct request_name_data *data = NULL;
|
||||
_cleanup_(sd_bus_slot_unrefp) sd_bus_slot *slot = NULL;
|
||||
int r;
|
||||
|
||||
data = new0(struct request_name_data, 1);
|
||||
data = new(struct request_name_data, 1);
|
||||
if (!data)
|
||||
return -ENOMEM;
|
||||
|
||||
data->name = name;
|
||||
data->flags = flags;
|
||||
data->userdata = userdata;
|
||||
*data = (struct request_name_data) {
|
||||
.n_ref = 1,
|
||||
.name = name,
|
||||
.flags = flags,
|
||||
.userdata = userdata,
|
||||
};
|
||||
|
||||
return sd_bus_request_name_async(bus, ret_slot, name, flags, request_name_handler_may_reload_dbus, data);
|
||||
r = sd_bus_request_name_async(bus, &slot, name, flags, request_name_handler_may_reload_dbus, data);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
assert_se(sd_bus_slot_set_destroy_callback(slot, request_name_destroy_callback) >= 0);
|
||||
TAKE_PTR(data);
|
||||
|
||||
if (ret_slot)
|
||||
*ret_slot = TAKE_PTR(slot);
|
||||
else {
|
||||
r = sd_bus_slot_set_floating(slot, true);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int bus_reply_pair_array(sd_bus_message *m, char **l) {
|
||||
|
||||
@@ -111,6 +111,7 @@ typedef int (*sd_bus_property_set_t) (sd_bus *bus, const char *path, const char
|
||||
typedef int (*sd_bus_object_find_t) (sd_bus *bus, const char *path, const char *interface, void *userdata, void **ret_found, sd_bus_error *ret_error);
|
||||
typedef int (*sd_bus_node_enumerator_t) (sd_bus *bus, const char *prefix, void *userdata, char ***ret_nodes, sd_bus_error *ret_error);
|
||||
typedef int (*sd_bus_track_handler_t) (sd_bus_track *track, void *userdata);
|
||||
typedef void (*sd_bus_destroy_t)(void *userdata);
|
||||
|
||||
#include "sd-bus-protocol.h"
|
||||
#include "sd-bus-vtable.h"
|
||||
@@ -230,6 +231,8 @@ int sd_bus_slot_set_description(sd_bus_slot *slot, const char *description);
|
||||
int sd_bus_slot_get_description(sd_bus_slot *slot, const char **description);
|
||||
int sd_bus_slot_get_floating(sd_bus_slot *slot);
|
||||
int sd_bus_slot_set_floating(sd_bus_slot *slot, int b);
|
||||
int sd_bus_slot_set_destroy_callback(sd_bus_slot *s, sd_bus_destroy_t callback);
|
||||
int sd_bus_slot_get_destroy_callback(sd_bus_slot *s, sd_bus_destroy_t *callback);
|
||||
|
||||
sd_bus_message* sd_bus_slot_get_current_message(sd_bus_slot *slot);
|
||||
sd_bus_message_handler_t sd_bus_slot_get_current_handler(sd_bus_slot *bus);
|
||||
|
||||
@@ -656,6 +656,10 @@ tests += [
|
||||
'src/core/umount.h'],
|
||||
[],
|
||||
[libmount]],
|
||||
|
||||
[['src/test/test-bus-util.c'],
|
||||
[],
|
||||
[]],
|
||||
]
|
||||
|
||||
############################################################
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1+ */
|
||||
|
||||
#include "bus-util.h"
|
||||
#include "log.h"
|
||||
|
||||
static void test_name_async(unsigned n_messages) {
|
||||
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
|
||||
int r;
|
||||
unsigned i;
|
||||
|
||||
log_info("/* %s (%u) */", __func__, n_messages);
|
||||
|
||||
r = bus_open_system_watch_bind_with_description(&bus, "test-bus");
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "Failed to connect to bus: %m");
|
||||
return;
|
||||
}
|
||||
|
||||
r = bus_request_name_async_may_reload_dbus(bus, NULL, "org.freedesktop.systemd.test-bus-util", 0, NULL);
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "Failed to request name: %m");
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < n_messages; i++) {
|
||||
r = sd_bus_process(bus, NULL);
|
||||
log_debug("stage %u: sd_bus_process returned %d", i, r);
|
||||
if (r < 0) {
|
||||
log_notice_errno(r, "Processing failed: %m");
|
||||
return;
|
||||
}
|
||||
|
||||
if (r > 0 && i + 1 < n_messages)
|
||||
(void) sd_bus_wait(bus, USEC_PER_SEC / 3);
|
||||
}
|
||||
}
|
||||
|
||||
static int callback(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void destroy_callback(void *userdata) {
|
||||
int *n_called = userdata;
|
||||
|
||||
(*n_called) ++;
|
||||
}
|
||||
|
||||
static void test_destroy_callback(void) {
|
||||
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
|
||||
sd_bus_slot *slot = NULL;
|
||||
sd_bus_destroy_t t;
|
||||
|
||||
int r, n_called = 0;
|
||||
|
||||
log_info("/* %s */", __func__);
|
||||
|
||||
r = bus_open_system_watch_bind_with_description(&bus, "test-bus");
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "Failed to connect to bus: %m");
|
||||
return;
|
||||
}
|
||||
|
||||
r = sd_bus_request_name_async(bus, &slot, "org.freedesktop.systemd.test-bus-util", 0, callback, &n_called);
|
||||
assert(r == 1);
|
||||
|
||||
assert_se(sd_bus_slot_get_destroy_callback(slot, NULL) == 0);
|
||||
assert_se(sd_bus_slot_get_destroy_callback(slot, &t) == 0);
|
||||
|
||||
assert_se(sd_bus_slot_set_destroy_callback(slot, destroy_callback) == 0);
|
||||
assert_se(sd_bus_slot_get_destroy_callback(slot, NULL) == 1);
|
||||
assert_se(sd_bus_slot_get_destroy_callback(slot, &t) == 1);
|
||||
assert_se(t == destroy_callback);
|
||||
|
||||
/* Force cleanup so we can look at n_called */
|
||||
assert(n_called == 0);
|
||||
sd_bus_slot_unref(slot);
|
||||
assert(n_called == 1);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
log_set_max_level(LOG_DEBUG);
|
||||
log_parse_environment();
|
||||
log_open();
|
||||
|
||||
test_name_async(0);
|
||||
test_name_async(20);
|
||||
test_destroy_callback();
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user