Compare commits

..

No commits in common. "e2357b1c8a87b610066b8b2a59517bcfb20b832e" and "faa73d4e0c8095fedd98ff29851b9634810ff97e" have entirely different histories.

66 changed files with 189 additions and 259 deletions

19
NEWS
View File

@ -530,15 +530,13 @@ CHANGES WITH 247 in spe:
contention for selected parts of the unit hierarchy using the PSI contention for selected parts of the unit hierarchy using the PSI
information reported by the kernel, and kills processes when memory information reported by the kernel, and kills processes when memory
or swap pressure is above configured limits. This service is only or swap pressure is above configured limits. This service is only
enabled by default in developer mode (see below) and should be enabled in developer mode (see below) and should be considered a
considered a preview in this release. Behaviour details and option preview in this release. Behaviour details and option names are
names are subject to change without the usual backwards-compatibility subject to change without the usual backwards-compatibility promises.
promises.
* A new helper oomctl has been added to introspect systemd-oomd state. * A new helper oomctl has been added to introspect systemd-oomd state.
If also is only enabled by default in developer mode and should be If also is only available in developer mode and should be considered
considered a preview without the usual backwards-compatibility a preview without the usual backwards-compatibility promises.
promises.
* New meson option -Dcompat-mutable-uid-boundaries= has been added. If * New meson option -Dcompat-mutable-uid-boundaries= has been added. If
enabled, systemd reads the system UID boundaries from /etc/login.defs enabled, systemd reads the system UID boundaries from /etc/login.defs
@ -600,13 +598,6 @@ CHANGES WITH 247 in spe:
* "systemctl edit" has been updated to show the original effective unit * "systemctl edit" has been updated to show the original effective unit
contents in commented form in the text editor. contents in commented form in the text editor.
* Units in user mode are now segregated into three new slices:
session.slice (units that form the core of graphical session),
app.slice ("normal" user applications), and background.slice
(low-priority tasks). Unless otherwise configured, user units are
placed in app.slice. The plan is to add resource limits and
protections for the different slices in the future.
Contributions from: Adolfo Jayme Barrientos, afg, Alec Moskvin, Alyssa Contributions from: Adolfo Jayme Barrientos, afg, Alec Moskvin, Alyssa
Ross, Amitanand Chikorde, Andrew Hangsleben, Anita Zhang, Ansgar Ross, Amitanand Chikorde, Andrew Hangsleben, Anita Zhang, Ansgar
Burchardt, Arian van Putten, Aurelien Jarno, Axel Rasmussen, bauen1, Burchardt, Arian van Putten, Aurelien Jarno, Axel Rasmussen, bauen1,

View File

@ -375,10 +375,6 @@ evdev:name:Dell WMI hotkeys:dmi:bvn*:bvr*:bd*:svnDell*:pnLatitude*:*
evdev:name:Dell WMI hotkeys:dmi:bvn*:bvr*:bd*:svnDell*:pnPrecision*:* evdev:name:Dell WMI hotkeys:dmi:bvn*:bvr*:bd*:svnDell*:pnPrecision*:*
KEYBOARD_KEY_100150=f20 # Mic mute toggle, should be micmute KEYBOARD_KEY_100150=f20 # Mic mute toggle, should be micmute
# Dell Latitude privacy microphone mute
evdev:name:Dell Privacy Driver:dmi:bvn*:bvr*:bd*:svnDell*:pnLatitude*:sku0A3E:*
KEYBOARD_KEY_12001=f20 # Mic mute toggle, should be micmute
########################################################### ###########################################################
# Everex # Everex
########################################################### ###########################################################

View File

@ -42,14 +42,12 @@ if conf.get('ENABLE_HWDB') == 1
hwdb_files_test, hwdb_files_test,
install_dir : udevhwdbdir) install_dir : udevhwdbdir)
if install_sysconfdir
meson.add_install_script('sh', '-c', meson.add_install_script('sh', '-c',
mkdir_p.format(join_paths(sysconfdir, 'udev/hwdb.d'))) mkdir_p.format(join_paths(sysconfdir, 'udev/hwdb.d')))
meson.add_install_script('sh', '-c', meson.add_install_script('sh', '-c',
'test -n "$DESTDIR" || @0@/systemd-hwdb update' 'test -n "$DESTDIR" || @0@/systemd-hwdb update'
.format(rootbindir)) .format(rootbindir))
endif
if want_tests != 'false' if want_tests != 'false'
parse_hwdb_py = find_program('parse_hwdb.py') parse_hwdb_py = find_program('parse_hwdb.py')

View File

@ -433,7 +433,7 @@
<listitem><para>The maximum line length to permit when converting stream logs into record logs. When a systemd <listitem><para>The maximum line length to permit when converting stream logs into record logs. When a systemd
unit's standard output/error are connected to the journal via a stream socket, the data read is split into unit's standard output/error are connected to the journal via a stream socket, the data read is split into
individual log records at newline (<literal>\n</literal>, ASCII 10) and <constant>NUL</constant> characters. If no such delimiter is individual log records at newline (<literal>\n</literal>, ASCII 10) and NUL characters. If no such delimiter is
read for the specified number of bytes a hard log record boundary is artificially inserted, breaking up overly read for the specified number of bytes a hard log record boundary is artificially inserted, breaking up overly
long lines into multiple log records. Selecting overly large values increases the possible memory usage of the long lines into multiple log records. Selecting overly large values increases the possible memory usage of the
Journal daemon for each stream client, as in the worst case the journal daemon needs to buffer the specified Journal daemon for each stream client, as in the worst case the journal daemon needs to buffer the specified

View File

@ -244,7 +244,7 @@
<title>Session limits</title> <title>Session limits</title>
<para>PAM modules earlier in the stack, that is those that come before <command>pam_systemd.so</command>, <para>PAM modules earlier in the stack, that is those that come before <command>pam_systemd.so</command>,
can set session scope limits using the PAM context objects. The data for these objects is provided as <constant>NUL</constant>-terminated C strings can set session scope limits using the PAM context objects. The data for these objects is provided as NUL-terminated C strings
and maps directly to the respective unit resource control directives. Note that these limits apply to individual sessions of the user, and maps directly to the respective unit resource control directives. Note that these limits apply to individual sessions of the user,
they do not apply to all user processes as a combined whole. In particular, the per-user <command>user@.service</command> unit instance, they do not apply to all user processes as a combined whole. In particular, the per-user <command>user@.service</command> unit instance,
which runs the <command>systemd --user</command> manager process and its children, and is tracked outside of any session, being shared which runs the <command>systemd --user</command> manager process and its children, and is tracked outside of any session, being shared

View File

@ -85,8 +85,8 @@
<programlisting>#define SD_MESSAGE_COREDUMP SD_ID128_MAKE(fc,2e,22,bc,6e,e6,47,b6,b9,07,29,ab,34,a2,50,b1)</programlisting> <programlisting>#define SD_MESSAGE_COREDUMP SD_ID128_MAKE(fc,2e,22,bc,6e,e6,47,b6,b9,07,29,ab,34,a2,50,b1)</programlisting>
<para><constant>SD_ID128_NULL</constant> may be used to refer to the 128bit ID consisting of only <para><function>SD_ID128_NULL</function> may be used to refer to the 128bit ID consisting of only NUL
<constant>NUL</constant> bytes.</para> bytes.</para>
<para><function>SD_ID128_MAKE_STR()</function> is similar to <function>SD_ID128_MAKE()</function>, but creates a <para><function>SD_ID128_MAKE_STR()</function> is similar to <function>SD_ID128_MAKE()</function>, but creates a
<type>const char*</type> expression that can be conveniently used in message formats and such:</para> <type>const char*</type> expression that can be conveniently used in message formats and such:</para>
@ -107,8 +107,9 @@ int main(int argc, char **argv) {
puts("Match for coredumps: %s", SD_ID128_CONST_STR(SD_MESSAGE_COREDUMP)); puts("Match for coredumps: %s", SD_ID128_CONST_STR(SD_MESSAGE_COREDUMP));
}</programlisting> }</programlisting>
<para><constant>SD_ID128_FORMAT_STR</constant> and <function>SD_ID128_FORMAT_VAL()</function> may <para><function>SD_ID128_FORMAT_STR()</function> and
be used to format a 128-bit ID in a <function>SD_ID128_FORMAT_VAL()</function> may be used to format a
128-bit ID in a
<citerefentry project='man-pages'><refentrytitle>printf</refentrytitle><manvolnum>3</manvolnum></citerefentry> <citerefentry project='man-pages'><refentrytitle>printf</refentrytitle><manvolnum>3</manvolnum></citerefentry>
format string, as shown in the following example:</para> format string, as shown in the following example:</para>
@ -119,8 +120,8 @@ int main(int argc, char **argv) {
return 0; return 0;
}</programlisting> }</programlisting>
<para><constant>SD_ID128_UUID_FORMAT_STR</constant> is similar to <para><function>SD_ID128_UUID_FORMAT_STR()</function> is similar to
<constant>SD_ID128_FORMAT_STR</constant> but includes separating hyphens to conform to the <function>SD_ID128_FORMAT_STR()</function> but includes separating hyphens to conform to the
"<ulink url="https://en.wikipedia.org/wiki/Universally_unique_identifier#Format">canonical representation</ulink>". "<ulink url="https://en.wikipedia.org/wiki/Universally_unique_identifier#Format">canonical representation</ulink>".
</para> </para>
@ -136,8 +137,7 @@ int main(int argc, char **argv) {
return 0; return 0;
}</programlisting> }</programlisting>
<para>Use <function>sd_id128_is_null()</function> to check if an 128bit ID consists of only <para>Use <function>sd_id128_is_null()</function> to check if an 128bit ID consists of only NUL bytes:</para>
<constant>NUL</constant> bytes:</para>
<programlisting>int main(int argc, char *argv[]) { <programlisting>int main(int argc, char *argv[]) {
assert(sd_id128_is_null(SD_ID128_NULL)); assert(sd_id128_is_null(SD_ID128_NULL));

View File

@ -620,8 +620,8 @@
<varlistentry> <varlistentry>
<term><constant>-EPROTOTYPE</constant></term> <term><constant>-EPROTOTYPE</constant></term>
<listitem><para><function>sd_bus_add_object_vtable()</function> and <listitem><para><function>sd_bus_add_object_vtable</function> and
<function>sd_bus_add_fallback_vtable()</function> have been both called for the same bus <function>sd_bus_add_fallback_vtable</function> have been both called for the same bus
object path, which is not allowed.</para></listitem> object path, which is not allowed.</para></listitem>
</varlistentry> </varlistentry>

View File

@ -104,12 +104,6 @@
<refsect2 id='errors'> <refsect2 id='errors'>
<title>Errors</title> <title>Errors</title>
<para>When <function>sd_bus_call()</function> internally receives a D-Bus error reply, it will set
<parameter>ret_error</parameter> if it is not <constant>NULL</constant>, and will return a negative
value mapped from the error reply, see
<citerefentry><refentrytitle>sd_bus_error_get_errno</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
</para>
<para>Returned errors may indicate the following problems:</para> <para>Returned errors may indicate the following problems:</para>
<variablelist> <variablelist>
@ -186,8 +180,7 @@
<citerefentry><refentrytitle>sd_bus_call_method</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_bus_call_method</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_call_method_async</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_bus_call_method_async</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_message_new_method_call</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_bus_message_new_method_call</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_message_append</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_bus_message_append</refentrytitle><manvolnum>3</manvolnum></citerefentry>
<citerefentry><refentrytitle>sd_bus_error</refentrytitle><manvolnum>3</manvolnum></citerefentry>
</para> </para>
</refsect1> </refsect1>

View File

@ -37,7 +37,7 @@
<refsect1> <refsect1>
<title>Description</title> <title>Description</title>
<para><function>sd_bus_can_send()</function> is mostly used for checking if file descriptor <para><function>sd_bus_can_send</function> is mostly used for checking if file descriptor
passing is available on the given bus. <parameter>type</parameter> can be any of the passing is available on the given bus. <parameter>type</parameter> can be any of the
<constant>SD_BUS_TYPE</constant> constants.</para> <constant>SD_BUS_TYPE</constant> constants.</para>
</refsect1> </refsect1>

View File

@ -72,7 +72,7 @@
is provided that combines them into one.</para> is provided that combines them into one.</para>
<para><function>sd_bus_default_flush_close()</function> is similar to <para><function>sd_bus_default_flush_close()</function> is similar to
<function>sd_bus_flush_close_unref()</function>, but does not take a bus pointer argument and <function>sd_bus_flush_close_unref</function>, but does not take a bus pointer argument and
instead iterates over any of the "default" buses opened by instead iterates over any of the "default" buses opened by
<citerefentry><refentrytitle>sd_bus_default</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_bus_default</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_default_user</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_bus_default_user</refentrytitle><manvolnum>3</manvolnum></citerefentry>,

View File

@ -439,14 +439,14 @@
<para>All functions that take a <parameter>const <para>All functions that take a <parameter>const
char**</parameter> parameter will store the answer there as an char**</parameter> parameter will store the answer there as an
address of a <constant>NUL</constant>-terminated string. It will be valid as long as address of a NUL-terminated string. It will be valid as long as
<parameter>c</parameter> remains valid, and should not be freed or <parameter>c</parameter> remains valid, and should not be freed or
modified by the caller.</para> modified by the caller.</para>
<para>All functions that take a <parameter>char***</parameter> <para>All functions that take a <parameter>char***</parameter>
parameter will store the answer there as an address of an array parameter will store the answer there as an address of an array
of strings. Each individual string is <constant>NUL</constant>-terminated, and the of strings. Each individual string is NUL-terminated, and the
array is <constant>NULL</constant>-terminated as a whole. It will be valid as long as array is NULL-terminated as a whole. It will be valid as long as
<parameter>c</parameter> remains valid, and should not be freed or <parameter>c</parameter> remains valid, and should not be freed or
modified by the caller.</para> modified by the caller.</para>
</refsect1> </refsect1>

View File

@ -160,10 +160,10 @@
but additional domain-specific errors may be defined by but additional domain-specific errors may be defined by
applications. The <structfield>message</structfield> field usually applications. The <structfield>message</structfield> field usually
contains a human-readable string describing the details, but might contains a human-readable string describing the details, but might
be <constant>NULL</constant>. An unset <structname>sd_bus_error</structname> structure be NULL. An unset <structname>sd_bus_error</structname> structure
should have both fields initialized to <constant>NULL</constant>. Set an error should have both fields initialized to NULL. Set an error
structure to <constant>SD_BUS_ERROR_NULL</constant> in order to structure to <constant>SD_BUS_ERROR_NULL</constant> in order to
reset both fields to <constant>NULL</constant>. When no longer necessary, resources reset both fields to NULL. When no longer necessary, resources
held by the <structname>sd_bus_error</structname> structure should held by the <structname>sd_bus_error</structname> structure should
be destroyed with <function>sd_bus_error_free()</function>.</para> be destroyed with <function>sd_bus_error_free()</function>.</para>
@ -181,14 +181,14 @@
for a list of well-known error names. Additional error mappings for a list of well-known error names. Additional error mappings
may be defined with may be defined with
<citerefentry><refentrytitle>sd_bus_error_add_map</refentrytitle><manvolnum>3</manvolnum></citerefentry>. If <citerefentry><refentrytitle>sd_bus_error_add_map</refentrytitle><manvolnum>3</manvolnum></citerefentry>. If
<parameter>e</parameter> is <constant>NULL</constant>, no error structure is initialized, <parameter>e</parameter> is NULL, no error structure is initialized,
but the error is still converted into an but the error is still converted into an
<varname>errno</varname>-style error. If <varname>errno</varname>-style error. If
<parameter>name</parameter> is <constant>NULL</constant>, it is <parameter>name</parameter> is <constant>NULL</constant>, it is
assumed that no error occurred, and 0 is returned. This means that assumed that no error occurred, and 0 is returned. This means that
this function may be conveniently used in a this function may be conveniently used in a
<function>return</function> statement. If <function>return</function> statement. If
<parameter>message</parameter> is <constant>NULL</constant>, no message is set. This <parameter>message</parameter> is NULL, no message is set. This
call can fail if no memory may be allocated for the name and call can fail if no memory may be allocated for the name and
message strings, in which case an message strings, in which case an
<constant>SD_BUS_ERROR_NO_MEMORY</constant> error might be set <constant>SD_BUS_ERROR_NO_MEMORY</constant> error might be set
@ -291,10 +291,10 @@
will not be deallocated, and must be <citerefentry will not be deallocated, and must be <citerefentry
project='man-pages'><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>d project='man-pages'><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>d
by the caller if necessary. The function may also be called safely by the caller if necessary. The function may also be called safely
on unset errors (error structures with both fields set to <constant>NULL</constant>), on unset errors (error structures with both fields set to NULL),
in which case it performs no operation. This call will reset the in which case it performs no operation. This call will reset the
error structure after freeing the data, so that all fields are set error structure after freeing the data, so that all fields are set
to <constant>NULL</constant>. The structure may be reused afterwards.</para> to NULL. The structure may be reused afterwards.</para>
</refsect1> </refsect1>
<refsect1> <refsect1>

View File

@ -65,7 +65,7 @@
<title>Return Value</title> <title>Return Value</title>
<para>Those functions return 1 if the argument is a valid interface / service / member name or object <para>Those functions return 1 if the argument is a valid interface / service / member name or object
path, and 0 if it is not. If the argument is <constant>NULL</constant>, an error is returned.</para> path, and 0 if it is not. If the argument is NULL, an error is returned.</para>
<refsect2> <refsect2>
<title>Errors</title> <title>Errors</title>

View File

@ -54,20 +54,20 @@
<title>Description</title> <title>Description</title>
<para>The functions <para>The functions
<function>sd_bus_message_append_string_memfd()</function> and <function>sd_bus_message_append_string_memfd</function> and
<function>sd_bus_message_append_string_iovec()</function> can be <function>sd_bus_message_append_string_iovec</function> can be
used to append a single string (item of type <literal>s</literal>) used to append a single string (item of type <literal>s</literal>)
to message <parameter>m</parameter>.</para> to message <parameter>m</parameter>.</para>
<para>In case of <para>In case of
<function>sd_bus_message_append_string_memfd()</function>, the <function>sd_bus_message_append_string_memfd</function>, the
contents of <parameter>memfd</parameter> are the string. They must contents of <parameter>memfd</parameter> are the string. They must
satisfy the same constraints as described for the satisfy the same constraints as described for the
<literal>s</literal> type in <literal>s</literal> type in
<citerefentry><refentrytitle>sd_bus_message_append_basic</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para> <citerefentry><refentrytitle>sd_bus_message_append_basic</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
<para>In case of <para>In case of
<function>sd_bus_message_append_string_iovec()</function>, the <function>sd_bus_message_append_string_iovec</function>, the
payload of <parameter>iov</parameter> is the string. It must payload of <parameter>iov</parameter> is the string. It must
satisfy the same constraints as described for the satisfy the same constraints as described for the
<literal>s</literal> type in <literal>s</literal> type in
@ -84,9 +84,9 @@
after this call.</para> after this call.</para>
<para>The <para>The
<function>sd_bus_message_append_string_space()</function> function appends <function>sd_bus_message_append_string_space</function> function appends
space for a string to message <parameter>m</parameter>. It behaves space for a string to message <parameter>m</parameter>. It behaves
similar to <function>sd_bus_message_append_basic()</function> with similar to <function>sd_bus_message_append_basic</function> with
type <literal>s</literal>, but instead of copying a string into type <literal>s</literal>, but instead of copying a string into
the message, it returns a pointer to the destination area to the message, it returns a pointer to the destination area to
the caller in pointer <parameter>p</parameter>. Space for the string the caller in pointer <parameter>p</parameter>. Space for the string

View File

@ -37,7 +37,7 @@
<refsect1> <refsect1>
<title>Description</title> <title>Description</title>
<para>The <function>sd_bus_message_append()</function> function can be <para>The <function>sd_bus_message_append</function> function can be
used to append an array of strings to message used to append an array of strings to message
<parameter>m</parameter>. The parameter <parameter>l</parameter> <parameter>m</parameter>. The parameter <parameter>l</parameter>
shall point to a <constant>NULL</constant>-terminated array of pointers shall point to a <constant>NULL</constant>-terminated array of pointers

View File

@ -143,8 +143,8 @@
<para>Message <parameter>call</parameter> is not a method call <para>Message <parameter>call</parameter> is not a method call
message.</para> message.</para>
<para>The error <parameter>e</parameter> parameter to <para>The error <parameter>error</parameter> parameter to
<function>sd_bus_message_new_method_error()</function> is not set, see <function>sd_bus_message_new_method_error</function> is not set, see
<citerefentry><refentrytitle>sd_bus_error_is_set</refentrytitle><manvolnum>3</manvolnum></citerefentry>. <citerefentry><refentrytitle>sd_bus_error_is_set</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
</para> </para>
</listitem> </listitem>

View File

@ -118,7 +118,7 @@
will be stored there. Each <literal>%</literal> character will will be stored there. Each <literal>%</literal> character will
only match the current label. It will never match across labels. only match the current label. It will never match across labels.
Furthermore, only a single directive is allowed per label. Furthermore, only a single directive is allowed per label.
If <constant>NULL</constant> is passed as output storage, the If <literal>NULL</literal> is passed as output storage, the
label is verified but not returned to the caller.</para> label is verified but not returned to the caller.</para>
</refsect1> </refsect1>
@ -130,7 +130,7 @@
argument. On success, <function>sd_bus_path_decode()</function> argument. On success, <function>sd_bus_path_decode()</function>
returns a positive value if the prefixed matched, or 0 if it returns a positive value if the prefixed matched, or 0 if it
did not. If the prefix matched, the external identifier is returned did not. If the prefix matched, the external identifier is returned
in the return parameter. If it did not match, <constant>NULL</constant> is returned in in the return parameter. If it did not match, NULL is returned in
the return parameter. On failure, a negative errno-style error the return parameter. On failure, a negative errno-style error
number is returned by either function. The returned strings must number is returned by either function. The returned strings must
be be

View File

@ -56,7 +56,7 @@
<parameter>ret</parameter> is not <constant>NULL</constant> and the call processed a message, <parameter>ret</parameter> is not <constant>NULL</constant> and the call processed a message,
<parameter>*ret</parameter> is set to this message. The caller owns a reference to this message and should call <parameter>*ret</parameter> is set to this message. The caller owns a reference to this message and should call
<citerefentry><refentrytitle>sd_bus_message_unref</refentrytitle><manvolnum>3</manvolnum></citerefentry> when the <citerefentry><refentrytitle>sd_bus_message_unref</refentrytitle><manvolnum>3</manvolnum></citerefentry> when the
message is no longer needed. If <parameter>ret</parameter> is not <constant>NULL</constant>, progress was made, but no message was message is no longer needed. If <parameter>ret</parameter> is not NULL, progress was made, but no message was
processed, <parameter>*ret</parameter> is set to <constant>NULL</constant>.</para> processed, <parameter>*ret</parameter> is set to <constant>NULL</constant>.</para>
<para>If a the bus object is connected to an <para>If a the bus object is connected to an

View File

@ -127,8 +127,8 @@
<para>Message <parameter>call</parameter> is not attached to a bus.</para> <para>Message <parameter>call</parameter> is not attached to a bus.</para>
<para>The error parameter <parameter>e</parameter> to <para>The error parameter <parameter>error</parameter> to
<function>sd_bus_reply_method_error()</function> is not set, see <function>sd_bus_reply_method_error</function> is not set, see
<citerefentry><refentrytitle>sd_bus_error_is_set</refentrytitle><manvolnum>3</manvolnum></citerefentry>. <citerefentry><refentrytitle>sd_bus_error_is_set</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
</para> </para>
</listitem> </listitem>

View File

@ -112,7 +112,7 @@
<citerefentry><refentrytitle>sd_bus_open</refentrytitle><manvolnum>3</manvolnum></citerefentry> and <citerefentry><refentrytitle>sd_bus_open</refentrytitle><manvolnum>3</manvolnum></citerefentry> and
similar calls, based on environment variables or built-in defaults.</para> similar calls, based on environment variables or built-in defaults.</para>
<para><function>sd_bus_set_exec()</function> is a shorthand function for setting a <para><function>sd_bus_set_exec</function> is a shorthand function for setting a
<literal>unixexec</literal> address that spawns the given executable with the given arguments. <literal>unixexec</literal> address that spawns the given executable with the given arguments.
If <parameter>argv</parameter> is <constant>NULL</constant>, the given executable is spawned If <parameter>argv</parameter> is <constant>NULL</constant>, the given executable is spawned
without any extra arguments.</para> without any extra arguments.</para>

View File

@ -157,7 +157,7 @@
<para>See the <para>See the
<citerefentry><refentrytitle>sd_bus_call_method</refentrytitle><manvolnum>3</manvolnum></citerefentry> <citerefentry><refentrytitle>sd_bus_call_method</refentrytitle><manvolnum>3</manvolnum></citerefentry>
man page for a list of possible errors.</para> man page for a list of possible errors</para>
</refsect2> </refsect2>
</refsect1> </refsect1>

View File

@ -101,11 +101,11 @@
<function>sd_bus_track_add_sender()</function>. They may be dropped again via <function>sd_bus_track_add_sender()</function>. They may be dropped again via
<function>sd_bus_track_remove_name()</function> and <function>sd_bus_track_remove_name()</function> and
<function>sd_bus_track_remove_sender()</function>. Alternatively, references on peers are removed automatically <function>sd_bus_track_remove_sender()</function>. Alternatively, references on peers are removed automatically
when they disconnect from the bus. If non-<constant>NULL</constant> the <parameter>handler</parameter> may specify when they disconnect from the bus. If non-NULL the <parameter>handler</parameter> may specify a function that is
a function that is invoked whenever the last reference is dropped, regardless whether the reference is dropped invoked whenever the last reference is dropped, regardless whether the reference is dropped explicitly via
explicitly via <function>sd_bus_track_remove_name()</function> or implicitly because the peer disconnected from the <function>sd_bus_track_remove_name()</function> or implicitly because the peer disconnected from the bus. The final
bus. The final argument <parameter>userdata</parameter> may be used to attach a generic user data pointer to the argument <parameter>userdata</parameter> may be used to attach a generic user data pointer to the object. This
object. This pointer is passed to the handler callback when it is invoked.</para> pointer is passed to the handler callback when it is invoked.</para>
<para><function>sd_bus_track_ref()</function> creates a new reference to a bus peer tracking object. This object <para><function>sd_bus_track_ref()</function> creates a new reference to a bus peer tracking object. This object
will not be destroyed until <function>sd_bus_track_unref()</function> has been called as many times plus once will not be destroyed until <function>sd_bus_track_unref()</function> has been called as many times plus once

View File

@ -51,7 +51,7 @@
<para>On success, <function>sd_event_source_get_event()</function> <para>On success, <function>sd_event_source_get_event()</function>
returns the associated event loop object. On failure, it returns returns the associated event loop object. On failure, it returns
<constant>NULL</constant>.</para> NULL.</para>
</refsect1> </refsect1>
<xi:include href="libsystemd-pkgconfig.xml" /> <xi:include href="libsystemd-pkgconfig.xml" />

View File

@ -52,7 +52,7 @@
when the event source was created. The event source will be disabled when the event source was created. The event source will be disabled
if the callback function returns a negative error code. The callback if the callback function returns a negative error code. The callback
function may be used to reconfigure the precise events to wait for. function may be used to reconfigure the precise events to wait for.
If the <parameter>callback</parameter> parameter is passed as <constant>NULL</constant> If the <parameter>callback</parameter> parameter is passed as NULL
the callback function is reset. </para> the callback function is reset. </para>
<para>Event source objects have no preparation callback associated <para>Event source objects have no preparation callback associated

View File

@ -70,7 +70,7 @@
<function>sd_event_source_set_userdata()</function> and <function>sd_event_source_set_userdata()</function> and
<function>sd_event_source_get_userdata()</function> return the <function>sd_event_source_get_userdata()</function> return the
previously set user data pointer. On failure, they return previously set user data pointer. On failure, they return
<constant>NULL</constant>.</para> NULL.</para>
</refsect1> </refsect1>
<xi:include href="libsystemd-pkgconfig.xml" /> <xi:include href="libsystemd-pkgconfig.xml" />

View File

@ -56,7 +56,7 @@
<para><function>sd_get_seats()</function> may be used to determine <para><function>sd_get_seats()</function> may be used to determine
all currently available local seats. Returns the number of seat all currently available local seats. Returns the number of seat
identifiers and if the input pointer is non-<constant>NULL</constant>, a identifiers and if the input pointer is non-NULL, a
<constant>NULL</constant>-terminated array of seat identifiers <constant>NULL</constant>-terminated array of seat identifiers
is stored at the address. is stored at the address.
The returned array and all strings it references need to be freed The returned array and all strings it references need to be freed

View File

@ -84,7 +84,7 @@
<citerefentry><refentrytitle>hwdb</refentrytitle><manvolnum>7</manvolnum></citerefentry> for <citerefentry><refentrytitle>hwdb</refentrytitle><manvolnum>7</manvolnum></citerefentry> for
details.</para> details.</para>
<para>The <function>SD_HWDB_FOREACH_PROPERTY()</function> macro combines <para>The <function>SD_HWDB_FOREACH_PROPERTY</function> macro combines
<function>sd_hwdb_seek()</function> and <function>sd_hwdb_enumerate()</function>. No error handling is <function>sd_hwdb_seek()</function> and <function>sd_hwdb_enumerate()</function>. No error handling is
performed and iteration simply stops on error. See the example below.</para> performed and iteration simply stops on error. See the example below.</para>
</refsect1> </refsect1>

View File

@ -50,9 +50,8 @@
<para><function>sd_id128_from_string()</function> implements the reverse operation: it takes a 33 character string <para><function>sd_id128_from_string()</function> implements the reverse operation: it takes a 33 character string
with 32 hexadecimal digits (either lowercase or uppercase, terminated by <constant>NUL</constant>) and parses them with 32 hexadecimal digits (either lowercase or uppercase, terminated by <constant>NUL</constant>) and parses them
back into a 128-bit ID returned in <parameter>ret</parameter>. Alternatively, this call can also parse a back into a 128-bit ID returned in <parameter>ret</parameter>. Alternatively, this call can also parse a
37-character string with a 128-bit ID formatted as RFC UUID. If <parameter>ret</parameter> is passed as 37-character string with a 128-bit ID formatted as RFC UUID. If <parameter>ret</parameter> is passed as NULL the
<constant>NULL</constant> the function will validate the passed ID string, but not actually return it in parsed function will validate the passed ID string, but not actually return it in parsed form.</para>
form.</para>
<para>For more information about the <literal>sd_id128_t</literal> <para>For more information about the <literal>sd_id128_t</literal>
type see type see
@ -64,8 +63,9 @@
easier to use a format string for easier to use a format string for
<citerefentry project='man-pages'><refentrytitle>printf</refentrytitle><manvolnum>3</manvolnum></citerefentry>. <citerefentry project='man-pages'><refentrytitle>printf</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
This is easily done using the This is easily done using the
<constant>SD_ID128_FORMAT_STR</constant> and <function>SD_ID128_FORMAT_VAL()</function> macros. For <function>SD_ID128_FORMAT_STR</function> and
more information see <function>SD_ID128_FORMAT_VAL()</function> macros. For more
information see
<citerefentry><refentrytitle>sd-id128</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para> <citerefentry><refentrytitle>sd-id128</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
</refsect1> </refsect1>
@ -74,7 +74,7 @@
<para><function>sd_id128_to_string()</function> always succeeds <para><function>sd_id128_to_string()</function> always succeeds
and returns a pointer to the string array passed in. and returns a pointer to the string array passed in.
<function>sd_id128_from_string()</function> returns 0 on success, in <function>sd_id128_from_string</function> returns 0 on success, in
which case <parameter>ret</parameter> is filled in, or a negative which case <parameter>ret</parameter> is filled in, or a negative
errno-style error code.</para> errno-style error code.</para>
</refsect1> </refsect1>

View File

@ -91,7 +91,7 @@
<refsect1> <refsect1>
<title>Examples</title> <title>Examples</title>
<para>Use the <function>SD_JOURNAL_FOREACH_FIELD()</function> macro to iterate through all field names in use in the <para>Use the <function>SD_JOURNAL_FOREACH_FIELD</function> macro to iterate through all field names in use in the
current journal.</para> current journal.</para>
<programlisting>#include &lt;stdio.h&gt; <programlisting>#include &lt;stdio.h&gt;

View File

@ -245,7 +245,7 @@
<function>sd_journal_get_data()</function>.</para> <function>sd_journal_get_data()</function>.</para>
<para>Use the <para>Use the
<function>SD_JOURNAL_FOREACH_DATA()</function> macro to <function>SD_JOURNAL_FOREACH_DATA</function> macro to
iterate through all fields of the current journal iterate through all fields of the current journal
entry:</para> entry:</para>

View File

@ -57,7 +57,7 @@
<title>Return value</title> <title>Return value</title>
<para>Both <function>sd_journal_has_runtime_files()</function> <para>Both <function>sd_journal_has_runtime_files()</function>
and <function>sd_journal_has_persistent_files()</function> return -EINVAL and <function>sd_journal_has_persistent_files()</function> return -EINVAL
if their argument is <constant>NULL</constant>. if their argument is NULL.
</para> </para>
</refsect1> </refsect1>

View File

@ -192,10 +192,10 @@ sd_journal_send("MESSAGE=Hello World, this is PID %lu!", (unsigned long) getpid(
<constant>SD_JOURNAL_SUPPRESS_LOCATION</constant> before including <filename>sd-journal.h</filename>. <constant>SD_JOURNAL_SUPPRESS_LOCATION</constant> before including <filename>sd-journal.h</filename>.
</para> </para>
<para><function>sd_journal_print_with_location()</function>, <para><function>sd_journal_print_with_location</function>,
<function>sd_journal_printv_with_location()</function>, <function>sd_journal_send_with_location()</function>, <function>sd_journal_printv_with_location</function>, <function>sd_journal_send_with_location</function>,
<function>sd_journal_sendv_with_location()</function>, and <function>sd_journal_sendv_with_location</function>, and
<function>sd_journal_perror_with_location()</function> are similar to their counterparts without <function>sd_journal_perror_with_location</function> are similar to their counterparts without
<literal>_with_location</literal>, but accept additional parameters to explicitly set the source file <literal>_with_location</literal>, but accept additional parameters to explicitly set the source file
name, function, and line. Those arguments must contain valid journal entries including the variable name, name, function, and line. Those arguments must contain valid journal entries including the variable name,
e.g. <literal>CODE_FILE=src/foo.c</literal>, <literal>CODE_LINE=666</literal>, e.g. <literal>CODE_FILE=src/foo.c</literal>, <literal>CODE_LINE=666</literal>,
@ -243,10 +243,10 @@ sd_journal_send("MESSAGE=Hello World, this is PID %lu!", (unsigned long) getpid(
<citerefentry project='man-pages'><refentrytitle>signal-safety</refentrytitle><manvolnum>7</manvolnum></citerefentry>. <citerefentry project='man-pages'><refentrytitle>signal-safety</refentrytitle><manvolnum>7</manvolnum></citerefentry>.
</para> </para>
<para><function>sd_journal_print()</function>, <para><function>sd_journal_print</function>,
<function>sd_journal_printv()</function>, <function>sd_journal_printv</function>,
<function>sd_journal_send()</function>, <function>sd_journal_send</function>,
<function>sd_journal_perror()</function>, <function>sd_journal_perror</function>,
and their counterparts with <literal>_with_location</literal> and their counterparts with <literal>_with_location</literal>
are not async signal safe.</para> are not async signal safe.</para>
</refsect1> </refsect1>

View File

@ -151,7 +151,7 @@
<refsect1> <refsect1>
<title>Examples</title> <title>Examples</title>
<para>Use the <function>SD_JOURNAL_FOREACH_UNIQUE()</function> macro to iterate through all values a field <para>Use the <function>SD_JOURNAL_FOREACH_UNIQUE</function> macro to iterate through all values a field
of the journal can take (and which can be accessed on the given architecture and are not compressed with of the journal can take (and which can be accessed on the given architecture and are not compressed with
an unsupported mechanism). The following example lists all unit names referenced in the journal:</para> an unsupported mechanism). The following example lists all unit names referenced in the journal:</para>

View File

@ -94,7 +94,7 @@
<function>sd_listen_fds()</function>, but optionally also returns <function>sd_listen_fds()</function>, but optionally also returns
an array of strings with identification names for the passed file an array of strings with identification names for the passed file
descriptors, if that is available and the descriptors, if that is available and the
<parameter>names</parameter> parameter is non-<constant>NULL</constant>. This <parameter>names</parameter> parameter is non-NULL. This
information is read from the <varname>$LISTEN_FDNAMES</varname> information is read from the <varname>$LISTEN_FDNAMES</varname>
variable, which may contain a colon-separated list of names. For variable, which may contain a colon-separated list of names. For
socket-activated services, these names may be configured with the socket-activated services, these names may be configured with the
@ -113,11 +113,11 @@
<function>sd_is_socket()</function> and related calls is not <function>sd_is_socket()</function> and related calls is not
sufficient. Note that the names used are not unique in any sufficient. Note that the names used are not unique in any
way. The returned array of strings has as many entries as file way. The returned array of strings has as many entries as file
descriptors have been received, plus a final <constant>NULL</constant> pointer descriptors have been received, plus a final NULL pointer
terminating the array. The caller needs to free the array itself terminating the array. The caller needs to free the array itself
and each of its elements with libc's <function>free()</function> and each of its elements with libc's <function>free()</function>
call after use. If the <parameter>names</parameter> parameter is call after use. If the <parameter>names</parameter> parameter is
<constant>NULL</constant>, the call is entirely equivalent to NULL, the call is entirely equivalent to
<function>sd_listen_fds()</function>.</para> <function>sd_listen_fds()</function>.</para>
<para>Under specific conditions, the following automatic file <para>Under specific conditions, the following automatic file

View File

@ -99,7 +99,7 @@
<para> On success, <function>sd_seat_get_active()</function> returns 0 or a positive integer. On success, <para> On success, <function>sd_seat_get_active()</function> returns 0 or a positive integer. On success,
<function>sd_seat_get_sessions()</function> returns the number of entries in the session identifier <function>sd_seat_get_sessions()</function> returns the number of entries in the session identifier
array. If the test succeeds, array. If the test succeeds,
<function>sd_seat_can_tty()</function> and <function>sd_seat_can_graphical()</function> return a positive <function>sd_seat_can_tty</function> and <function>sd_seat_can_graphical</function> return a positive
integer, if it fails 0. On failure, these calls return a negative errno-style error code.</para> integer, if it fails 0. On failure, these calls return a negative errno-style error code.</para>
<refsect2> <refsect2>

View File

@ -161,10 +161,9 @@
<varlistentry> <varlistentry>
<term><constant>-EINVAL</constant></term> <term><constant>-EINVAL</constant></term>
<listitem><para>An input parameter was invalid (out of range, or <constant>NULL</constant>, <listitem><para>An input parameter was invalid (out of range, or NULL, where that is not
where that is not accepted). This is also returned if the passed user ID is accepted). This is also returned if the passed user ID is <constant>0xFFFF</constant> or
<constant>0xFFFF</constant> or <constant>0xFFFFFFFF</constant>, which are undefined on Linux. <constant>0xFFFFFFFF</constant>, which are undefined on Linux.</para></listitem>
</para></listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>

View File

@ -63,7 +63,7 @@
<function>sd_watchdog_enabled()</function> will also return with <function>sd_watchdog_enabled()</function> will also return with
zero.</para> zero.</para>
<para>If the <parameter>usec</parameter> parameter is non-<constant>NULL</constant>, <para>If the <parameter>usec</parameter> parameter is non-NULL,
<function>sd_watchdog_enabled()</function> will write the timeout <function>sd_watchdog_enabled()</function> will write the timeout
in µs for the watchdog logic to it.</para> in µs for the watchdog logic to it.</para>

View File

@ -131,7 +131,7 @@
cached key will have a timeout of 2.5min set, after which it cached key will have a timeout of 2.5min set, after which it
will be purged from the kernel keyring. Note that it is will be purged from the kernel keyring. Note that it is
possible to cache multiple passwords under the same keyname, possible to cache multiple passwords under the same keyname,
in which case they will be stored as <constant>NUL</constant>-separated list of in which case they will be stored as NUL-separated list of
passwords. Use passwords. Use
<citerefentry project='die-net'><refentrytitle>keyctl</refentrytitle><manvolnum>1</manvolnum></citerefentry> <citerefentry project='die-net'><refentrytitle>keyctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
to access the cached key via the kernel keyring to access the cached key via the kernel keyring

View File

@ -1918,9 +1918,9 @@ RestrictNamespaces=~cgroup net</programlisting>
but without the <constant>CAP_SYS_ADMIN</constant> capability (e.g. setting but without the <constant>CAP_SYS_ADMIN</constant> capability (e.g. setting
<varname>User=nobody</varname>), <varname>NoNewPrivileges=yes</varname> is implied. This feature <varname>User=nobody</varname>), <varname>NoNewPrivileges=yes</varname> is implied. This feature
makes use of the Secure Computing Mode 2 interfaces of the kernel ('seccomp filtering') and is useful makes use of the Secure Computing Mode 2 interfaces of the kernel ('seccomp filtering') and is useful
for enforcing a minimal sandboxing environment. Note that the <function>execve()</function>, for enforcing a minimal sandboxing environment. Note that the <function>execve</function>,
<function>exit()</function>, <function>exit_group()</function>, <function>getrlimit()</function>, <function>exit</function>, <function>exit_group</function>, <function>getrlimit</function>,
<function>rt_sigreturn()</function>, <function>sigreturn()</function> system calls and the system calls <function>rt_sigreturn</function>, <function>sigreturn</function> system calls and the system calls
for querying time and sleeping are implicitly allow-listed and do not need to be listed for querying time and sleeping are implicitly allow-listed and do not need to be listed
explicitly. This option may be specified more than once, in which case the filter masks are explicitly. This option may be specified more than once, in which case the filter masks are
merged. If the empty string is assigned, the filter is reset, all prior assignments will have no merged. If the empty string is assigned, the filter is reset, all prior assignments will have no
@ -1932,7 +1932,7 @@ RestrictNamespaces=~cgroup net</programlisting>
<varname>SystemCallArchitectures=native</varname> or similar.</para> <varname>SystemCallArchitectures=native</varname> or similar.</para>
<para>Note that strict system call filters may impact execution and error handling code paths of the service <para>Note that strict system call filters may impact execution and error handling code paths of the service
invocation. Specifically, access to the <function>execve()</function> system call is required for the execution invocation. Specifically, access to the <function>execve</function> system call is required for the execution
of the service binary — if it is blocked service invocation will necessarily fail. Also, if execution of the of the service binary — if it is blocked service invocation will necessarily fail. Also, if execution of the
service binary fails for some reason (for example: missing service executable), the error handling logic might service binary fails for some reason (for example: missing service executable), the error handling logic might
require access to an additional set of system calls in order to process and log this failure correctly. It require access to an additional set of system calls in order to process and log this failure correctly. It
@ -1943,9 +1943,9 @@ RestrictNamespaces=~cgroup net</programlisting>
encountered will take precedence and will dictate the default action (termination or approval of a encountered will take precedence and will dictate the default action (termination or approval of a
system call). Then the next occurrences of this option will add or delete the listed system calls system call). Then the next occurrences of this option will add or delete the listed system calls
from the set of the filtered system calls, depending of its type and the default action. (For from the set of the filtered system calls, depending of its type and the default action. (For
example, if you have started with an allow list rule for <function>read()</function> and example, if you have started with an allow list rule for <function>read</function> and
<function>write()</function>, and right after it add a deny list rule for <function>write()</function>, <function>write</function>, and right after it add a deny list rule for <function>write</function>,
then <function>write()</function> will be removed from the set.)</para> then <function>write</function> will be removed from the set.)</para>
<para>As the number of possible system calls is large, predefined sets of system calls are provided. A set <para>As the number of possible system calls is large, predefined sets of system calls are provided. A set
starts with <literal>@</literal> character, followed by name of the set. starts with <literal>@</literal> character, followed by name of the set.
@ -2757,7 +2757,7 @@ StandardInputData=SWNrIHNpdHplIGRhIHVuJyBlc3NlIEtsb3BzLAp1ZmYgZWVtYWwga2xvcHAncy
user IDs, public key material and similar non-sensitive data. For everything else use user IDs, public key material and similar non-sensitive data. For everything else use
<varname>LoadCredential=</varname>. In order to embed binary data into the credential data use <varname>LoadCredential=</varname>. In order to embed binary data into the credential data use
C-style escaping (i.e. <literal>\n</literal> to embed a newline, or <literal>\x00</literal> to embed C-style escaping (i.e. <literal>\n</literal> to embed a newline, or <literal>\x00</literal> to embed
a <constant>NUL</constant> byte).</para> a NUL byte).</para>
<para>If a credential of the same ID is listed in both <varname>LoadCredential=</varname> and <para>If a credential of the same ID is listed in both <varname>LoadCredential=</varname> and
<varname>SetCredential=</varname>, the latter will act as default if the former cannot be <varname>SetCredential=</varname>, the latter will act as default if the former cannot be

View File

@ -365,7 +365,7 @@
<para>Only applies to <literal>_TRANSPORT=stdout</literal> records: indicates that the log message <para>Only applies to <literal>_TRANSPORT=stdout</literal> records: indicates that the log message
in the standard output/error stream was not terminated with a normal newline character in the standard output/error stream was not terminated with a normal newline character
(<literal>\n</literal>, i.e. ASCII 10). Specifically, when set this field is one of (<literal>\n</literal>, i.e. ASCII 10). Specifically, when set this field is one of
<option>nul</option> (in case the line was terminated by a <constant>NUL</constant> byte), <option>line-max</option> (in <option>nul</option> (in case the line was terminated by a NUL byte), <option>line-max</option> (in
case the maximum log line length was reached, as configured with <varname>LineMax=</varname> in case the maximum log line length was reached, as configured with <varname>LineMax=</varname> in
<citerefentry><refentrytitle>journald.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>), <citerefentry><refentrytitle>journald.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>),
<option>eof</option> (if this was the last log record of a stream and the stream ended without a <option>eof</option> (if this was the last log record of a stream and the stream ended without a

View File

@ -1770,8 +1770,7 @@
<varlistentry> <varlistentry>
<term><varname>AdActorSystem=</varname></term> <term><varname>AdActorSystem=</varname></term>
<listitem> <listitem>
<para>Specifies the 802.3ad system mac address. This can not be either <para>Specifies the 802.3ad system mac address. This can not be either NULL or Multicast.</para>
<constant>NULL</constant> or <constant>Multicast</constant>.</para>
</listitem> </listitem>
</varlistentry> </varlistentry>

View File

@ -1122,7 +1122,7 @@ IPv6Token=prefixstable:2002:da8:1::</programlisting></para>
<para>An [IPv6AddressLabel] section accepts the following keys. Specify several [IPv6AddressLabel] <para>An [IPv6AddressLabel] section accepts the following keys. Specify several [IPv6AddressLabel]
sections to configure several address labels. IPv6 address labels are used for address selection. See sections to configure several address labels. IPv6 address labels are used for address selection. See
<ulink url="https://tools.ietf.org/html/rfc3484">RFC 3484</ulink>. Precedence is managed by userspace, <ulink url="https://tools.ietf.org/html/rfc3484">RFC 3484</ulink>. Precedence is managed by userspace,
and only the label itself is stored in the kernel.</para> and only the label itself is stored in the kernel</para>
<variablelist class='network-directives'> <variablelist class='network-directives'>
<varlistentry> <varlistentry>
@ -1944,7 +1944,7 @@ IPv6Token=prefixstable:2002:da8:1::</programlisting></para>
<ulink url="https://en.wikipedia.org/wiki/Escape_sequences_in_C#Table_of_escape_sequences">C-style <ulink url="https://en.wikipedia.org/wiki/Escape_sequences_in_C#Table_of_escape_sequences">C-style
escapes</ulink>. This setting can be specified multiple times. If an empty string is specified, escapes</ulink>. This setting can be specified multiple times. If an empty string is specified,
then all options specified earlier are cleared. Takes a whitespace-separated list of strings. Note that then all options specified earlier are cleared. Takes a whitespace-separated list of strings. Note that
currently <constant>NUL</constant> bytes are not allowed.</para> currently NUL bytes are not allowed.</para>
</listitem> </listitem>
</varlistentry> </varlistentry>

View File

@ -266,10 +266,10 @@
<title>String Escaping for Inclusion in Unit Names</title> <title>String Escaping for Inclusion in Unit Names</title>
<para>Sometimes it is useful to convert arbitrary strings into unit names. To facilitate this, a method of string <para>Sometimes it is useful to convert arbitrary strings into unit names. To facilitate this, a method of string
escaping is used, in order to map strings containing arbitrary byte values (except <constant>NUL</constant>) into escaping is used, in order to map strings containing arbitrary byte values (except NUL) into valid unit names and
valid unit names and their restricted character set. A common special case are unit names that reflect paths to their restricted character set. A common special case are unit names that reflect paths to objects in the file
objects in the file system hierarchy. Example: a device unit <filename>dev-sda.device</filename> refers to a device system hierarchy. Example: a device unit <filename>dev-sda.device</filename> refers to a device with the device
with the device node <filename index="false">/dev/sda</filename> in the file system.</para> node <filename index="false">/dev/sda</filename> in the file system.</para>
<para>The escaping algorithm operates as follows: given a string, any <literal>/</literal> character is replaced by <para>The escaping algorithm operates as follows: given a string, any <literal>/</literal> character is replaced by
<literal>-</literal>, and all other characters which are not ASCII alphanumerics or <literal>_</literal> are <literal>-</literal>, and all other characters which are not ASCII alphanumerics or <literal>_</literal> are

View File

@ -111,8 +111,8 @@
passed to <function>udev_device_has_tag()</function>, but the opposite might not be true, in case a tag is passed to <function>udev_device_has_tag()</function>, but the opposite might not be true, in case a tag is
no longer configured by the rules applied to the most recent device even.</para> no longer configured by the rules applied to the most recent device even.</para>
<para><function>udev_device_get_tags_list_entry()</function> returns a <para><function>udev_device_get_tags_list_entry()</function> returns a a
<structname>udev_list_entry</structname> object, encapsulating a list of tags set for the specified <function>udev_list_entry</function> object, encapsulating a list of tags set for the specified
device. Similar, <function>udev_device_get_current_tags_list_entry()</function> returns a list of tags device. Similar, <function>udev_device_get_current_tags_list_entry()</function> returns a list of tags
set for the specified device as effect of the most recent device event seen (see above for details on the set for the specified device as effect of the most recent device event seen (see above for details on the
difference).</para> difference).</para>

View File

@ -82,11 +82,11 @@
<refsect1> <refsect1>
<title>Description</title> <title>Description</title>
<para><function>udev_device_new_from_syspath()</function>, <para><function>udev_device_new_from_syspath</function>,
<function>udev_device_new_from_devnum()</function>, <function>udev_device_new_from_devnum</function>,
<function>udev_device_new_from_subsystem_sysname()</function>, <function>udev_device_new_from_subsystem_sysname</function>,
<function>udev_device_new_from_device_id()</function>, and <function>udev_device_new_from_device_id</function>, and
<function>udev_device_new_from_environment()</function> <function>udev_device_new_from_environment</function>
allocate a new udev device object and returns a pointer to it. This allocate a new udev device object and returns a pointer to it. This
object is opaque and must not be accessed by the caller via different object is opaque and must not be accessed by the caller via different
means than functions provided by libudev. Initially, the reference count means than functions provided by libudev. Initially, the reference count
@ -95,25 +95,25 @@
<function>udev_device_unref()</function>. Once the reference count hits 0, <function>udev_device_unref()</function>. Once the reference count hits 0,
the device object is destroyed and freed.</para> the device object is destroyed and freed.</para>
<para><function>udev_device_new_from_syspath()</function>, <para><function>udev_device_new_from_syspath</function>,
<function>udev_device_new_from_devnum()</function>, <function>udev_device_new_from_devnum</function>,
<function>udev_device_new_from_subsystem_sysname()</function>, and <function>udev_device_new_from_subsystem_sysname</function>, and
<function>udev_device_new_from_device_id()</function> <function>udev_device_new_from_device_id</function>
create the device object based on information found in create the device object based on information found in
<filename>/sys/</filename>, annotated with properties from the udev-internal <filename>/sys/</filename>, annotated with properties from the udev-internal
device database. A syspath is any subdirectory of <filename>/sys/</filename>, device database. A syspath is any subdirectory of <filename>/sys/</filename>,
with the restriction that a subdirectory of <filename>/sys/devices</filename> with the restriction that a subdirectory of <filename>/sys/devices</filename>
(or a symlink to one) represents a real device and as such must contain (or a symlink to one) represents a real device and as such must contain
a <filename>uevent</filename> file. <function>udev_device_new_from_devnum()</function> a <filename>uevent</filename> file. <function>udev_device_new_from_devnum</function>
takes a device type, which can be <constant>b</constant> for block devices or takes a device type, which can be <constant>b</constant> for block devices or
<constant>c</constant> for character devices, as well as a devnum (see <constant>c</constant> for character devices, as well as a devnum (see
<citerefentry project='man-pages'><refentrytitle>makedev</refentrytitle><manvolnum>3</manvolnum></citerefentry>). <citerefentry project='man-pages'><refentrytitle>makedev</refentrytitle><manvolnum>3</manvolnum></citerefentry>).
<function>udev_device_new_from_subsystem_sysname()</function> looks up devices based <function>udev_device_new_from_subsystem_sysname</function> looks up devices based
on the provided subsystem and sysname on the provided subsystem and sysname
(see <citerefentry><refentrytitle>udev_device_get_subsystem</refentrytitle><manvolnum>3</manvolnum></citerefentry> (see <citerefentry><refentrytitle>udev_device_get_subsystem</refentrytitle><manvolnum>3</manvolnum></citerefentry>
and and
<citerefentry><refentrytitle>udev_device_get_sysname</refentrytitle><manvolnum>3</manvolnum></citerefentry>) <citerefentry><refentrytitle>udev_device_get_sysname</refentrytitle><manvolnum>3</manvolnum></citerefentry>)
and <function>udev_device_new_from_device_id()</function> looks up devices based on the provided and <function>udev_device_new_from_device_id</function> looks up devices based on the provided
device ID, which is a special string in one of the following four forms: device ID, which is a special string in one of the following four forms:
<table> <table>
<title>Device ID strings</title> <title>Device ID strings</title>
@ -142,7 +142,7 @@
</table> </table>
</para> </para>
<para><function>udev_device_new_from_environment()</function> <para><function>udev_device_new_from_environment</function>
creates a device from the current environment (see creates a device from the current environment (see
<citerefentry project='man-pages'><refentrytitle>environ</refentrytitle><manvolnum>7</manvolnum></citerefentry>). <citerefentry project='man-pages'><refentrytitle>environ</refentrytitle><manvolnum>7</manvolnum></citerefentry>).
Each key-value pair is interpreted in the same way as if it was Each key-value pair is interpreted in the same way as if it was

View File

@ -106,15 +106,15 @@
<title>Return Value</title> <title>Return Value</title>
<para>On success, <para>On success,
<function>udev_enumerate_add_match_subsystem()</function>, <function>udev_enumerate_add_match_subsystem</function>,
<function>udev_enumerate_add_nomatch_subsystem()</function>, <function>udev_enumerate_add_nomatch_subsystem</function>,
<function>udev_enumerate_add_match_sysattr()</function>, <function>udev_enumerate_add_match_sysattr</function>,
<function>udev_enumerate_add_nomatch_sysattr()</function>, <function>udev_enumerate_add_nomatch_sysattr</function>,
<function>udev_enumerate_add_match_property()</function>, <function>udev_enumerate_add_match_property</function>,
<function>udev_enumerate_add_match_sysname()</function>, <function>udev_enumerate_add_match_sysname</function>,
<function>udev_enumerate_add_match_tag()</function>, <function>udev_enumerate_add_match_tag</function>,
<function>udev_enumerate_add_match_parent()</function> and <function>udev_enumerate_add_match_parent</function> and
<function>udev_enumerate_add_match_is_initialized()</function> <function>udev_enumerate_add_match_is_initialized</function>
return an integer greater than, or equal to, return an integer greater than, or equal to,
<constant>0</constant>.</para> <constant>0</constant>.</para>
</refsect1> </refsect1>

View File

@ -126,7 +126,6 @@ if rootlibdir == ''
rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1]) rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
endif endif
install_sysconfdir = get_option('install-sysconfdir')
# Dirs of external packages # Dirs of external packages
pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir') pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir') pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
@ -1419,7 +1418,7 @@ if have == 'auto'
else else
have = have == 'true' have = have == 'true'
if have and get_option('mode') != 'developer' if have and get_option('mode') != 'developer'
warning('oomd is not ready for release mode (yet)') error('oomd is not available in release mode (yet)')
endif endif
endif endif
conf.set10('ENABLE_OOMD', have) conf.set10('ENABLE_OOMD', have)
@ -2777,10 +2776,8 @@ if conf.get('ENABLE_BINFMT') == 1
meson.add_install_script('sh', '-c', meson.add_install_script('sh', '-c',
mkdir_p.format(binfmtdir)) mkdir_p.format(binfmtdir))
if install_sysconfdir
meson.add_install_script('sh', '-c', meson.add_install_script('sh', '-c',
mkdir_p.format(join_paths(sysconfdir, 'binfmt.d'))) mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
endif
endif endif
if conf.get('ENABLE_REPART') == 1 if conf.get('ENABLE_REPART') == 1
@ -2894,10 +2891,8 @@ executable(
install : true, install : true,
install_dir : rootlibexecdir) install_dir : rootlibexecdir)
if install_sysconfdir install_data('src/sleep/sleep.conf',
install_data('src/sleep/sleep.conf',
install_dir : pkgsysconfdir) install_dir : pkgsysconfdir)
endif
public_programs += executable( public_programs += executable(
'systemd-sysctl', 'systemd-sysctl',
@ -3248,10 +3243,8 @@ if conf.get('HAVE_KMOD') == 1
meson.add_install_script('sh', '-c', meson.add_install_script('sh', '-c',
mkdir_p.format(modulesloaddir)) mkdir_p.format(modulesloaddir))
if install_sysconfdir
meson.add_install_script('sh', '-c', meson.add_install_script('sh', '-c',
mkdir_p.format(join_paths(sysconfdir, 'modules-load.d'))) mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
endif
endif endif
public_programs += executable( public_programs += executable(
@ -3496,10 +3489,8 @@ subdir('docs/var-log')
install_subdir('factory/etc', install_subdir('factory/etc',
install_dir : factorydir) install_dir : factorydir)
if install_sysconfdir install_data('xorg/50-systemd-user.sh',
install_data('xorg/50-systemd-user.sh',
install_dir : xinitrcdir) install_dir : xinitrcdir)
endif
install_data('modprobe.d/systemd.conf', install_data('modprobe.d/systemd.conf',
install_dir : modprobedir) install_dir : modprobedir)
install_data('LICENSE.GPL2', install_data('LICENSE.GPL2',

View File

@ -180,8 +180,6 @@ option('pamconfdir', type : 'string',
description : 'directory for PAM configuration ["no" disables]') description : 'directory for PAM configuration ["no" disables]')
option('docdir', type : 'string', option('docdir', type : 'string',
description : 'documentation directory') description : 'documentation directory')
option('install-sysconfdir', type : 'boolean', value : true,
description : 'install configuration files to $sysconfdir')
option('fallback-hostname', type : 'string', value : 'localhost', option('fallback-hostname', type : 'string', value : 'localhost',
description : 'the hostname used if none configured') description : 'the hostname used if none configured')

View File

@ -10,10 +10,8 @@ if conf.get('ENABLE_NETWORKD') == 1
'80-wifi-station.network.example', '80-wifi-station.network.example',
install_dir : networkdir) install_dir : networkdir)
if install_sysconfdir
meson.add_install_script('sh', '-c', meson.add_install_script('sh', '-c',
mkdir_p.format(join_paths(sysconfdir, 'systemd/network'))) mkdir_p.format(join_paths(sysconfdir, 'systemd/network')))
endif
endif endif
install_data('99-default.link', install_data('99-default.link',

View File

@ -19,7 +19,7 @@ bool ratelimit_below(RateLimit *r) {
ts = now(CLOCK_MONOTONIC); ts = now(CLOCK_MONOTONIC);
if (r->begin <= 0 || if (r->begin <= 0 ||
ts - r->begin > r->interval) { r->begin + r->interval < ts) {
r->begin = ts; r->begin = ts;
/* Reset counter */ /* Reset counter */

View File

@ -192,14 +192,12 @@ in_files = [['macros.systemd', rpmmacrosdir],
foreach item : in_files foreach item : in_files
file = item[0] file = item[0]
dir = item[1] dir = item[1]
if install_sysconfdir or dir != pkgsysconfdir
configure_file( configure_file(
input : file + '.in', input : file + '.in',
output : file, output : file,
configuration : substs, configuration : substs,
install_dir : dir == 'no' ? '' : dir) install_dir : dir == 'no' ? '' : dir)
endif
endforeach endforeach
install_data('org.freedesktop.systemd1.conf', install_data('org.freedesktop.systemd1.conf',
@ -219,8 +217,6 @@ meson.add_install_script('sh', '-c', mkdir_p.format(systemsleepdir))
meson.add_install_script('sh', '-c', mkdir_p.format(systemgeneratordir)) meson.add_install_script('sh', '-c', mkdir_p.format(systemgeneratordir))
meson.add_install_script('sh', '-c', mkdir_p.format(usergeneratordir)) meson.add_install_script('sh', '-c', mkdir_p.format(usergeneratordir))
if install_sysconfdir meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(pkgsysconfdir, 'system')))
meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(pkgsysconfdir, 'system'))) meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(pkgsysconfdir, 'user')))
meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(pkgsysconfdir, 'user'))) meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(sysconfdir, 'xdg/systemd')))
meson.add_install_script('sh', '-c', mkdir_p.format(join_paths(sysconfdir, 'xdg/systemd')))
endif

View File

@ -13,7 +13,7 @@ endif
coredumpctl_sources = files('coredumpctl.c') coredumpctl_sources = files('coredumpctl.c')
if conf.get('ENABLE_COREDUMP') == 1 and install_sysconfdir if conf.get('ENABLE_COREDUMP') == 1
install_data('coredump.conf', install_data('coredump.conf',
install_dir : pkgsysconfdir) install_dir : pkgsysconfdir)
endif endif

View File

@ -107,10 +107,8 @@ if conf.get('ENABLE_HOMED') == 1
install_data('org.freedesktop.home1.policy', install_data('org.freedesktop.home1.policy',
install_dir : polkitpolicydir) install_dir : polkitpolicydir)
if install_sysconfdir
install_data('homed.conf', install_data('homed.conf',
install_dir : sysconfdir) install_dir : pkgsysconfdir)
endif
endif endif
tests += [ tests += [

View File

@ -48,10 +48,8 @@ if conf.get('ENABLE_REMOTE') ==1 and conf.get('HAVE_LIBCURL') == 1
input : 'journal-upload.conf.in', input : 'journal-upload.conf.in',
output : 'journal-upload.conf', output : 'journal-upload.conf',
configuration : substs) configuration : substs)
if install_sysconfdir
install_data(journal_upload_conf, install_data(journal_upload_conf,
install_dir : pkgsysconfdir) install_dir : pkgsysconfdir)
endif
endif endif
if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1 if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
@ -59,10 +57,8 @@ if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
input : 'journal-remote.conf.in', input : 'journal-remote.conf.in',
output : 'journal-remote.conf', output : 'journal-remote.conf',
configuration : substs) configuration : substs)
if install_sysconfdir
install_data(journal_remote_conf, install_data(journal_remote_conf,
install_dir : pkgsysconfdir) install_dir : pkgsysconfdir)
endif
install_data('browse.html', install_data('browse.html',
install_dir : join_paths(pkgdatadir, 'gatewayd')) install_dir : join_paths(pkgdatadir, 'gatewayd'))

View File

@ -107,10 +107,8 @@ journalctl_sources = files('''
pcre2-dlopen.h pcre2-dlopen.h
'''.split()) '''.split())
if install_sysconfdir install_data('journald.conf',
install_data('journald.conf',
install_dir : pkgsysconfdir) install_dir : pkgsysconfdir)
endif
if get_option('create-log-dirs') if get_option('create-log-dirs')
meson.add_install_script( meson.add_install_script(

View File

@ -13,9 +13,6 @@ if want_kernel_install
install_mode : 'rwxr-xr-x', install_mode : 'rwxr-xr-x',
install_dir : kernelinstalldir) install_dir : kernelinstalldir)
if install_sysconfdir
meson.add_install_script('sh', '-c', meson.add_install_script('sh', '-c',
mkdir_p.format(join_paths(sysconfdir, 'kernel/install.d'))) mkdir_p.format(join_paths(sysconfdir, 'kernel/install.d')))
endif
endif endif

View File

@ -74,10 +74,8 @@ if conf.get('ENABLE_LOGIND') == 1
input : 'logind.conf.in', input : 'logind.conf.in',
output : 'logind.conf', output : 'logind.conf',
configuration : substs) configuration : substs)
if install_sysconfdir
install_data(logind_conf, install_data(logind_conf,
install_dir : pkgsysconfdir) install_dir : pkgsysconfdir)
endif
install_data('org.freedesktop.login1.conf', install_data('org.freedesktop.login1.conf',
install_dir : dbuspolicydir) install_dir : dbuspolicydir)

View File

@ -236,10 +236,8 @@ if conf.get('ENABLE_NETWORKD') == 1
install_dir : polkitpkladir) install_dir : polkitpkladir)
endif endif
if install_sysconfdir
install_data('networkd.conf', install_data('networkd.conf',
install_dir : pkgsysconfdir) install_dir : pkgsysconfdir)
endif
fuzzers += [ fuzzers += [
[['src/network/fuzz-netdev-parser.c', [['src/network/fuzz-netdev-parser.c',

View File

@ -29,8 +29,6 @@ if conf.get('ENABLE_OOMD') == 1
install_data('org.freedesktop.oom1.service', install_data('org.freedesktop.oom1.service',
install_dir : dbussystemservicedir) install_dir : dbussystemservicedir)
if install_sysconfdir
install_data('oomd.conf', install_data('oomd.conf',
install_dir : sysconfdir) install_dir : pkgsysconfdir)
endif
endif endif

View File

@ -4,7 +4,7 @@ systemd_pstore_sources = files('''
pstore.c pstore.c
'''.split()) '''.split())
if conf.get('ENABLE_PSTORE') == 1 and install_sysconfdir if conf.get('ENABLE_PSTORE') == 1
install_data('pstore.conf', install_data('pstore.conf',
install_dir : pkgsysconfdir) install_dir : pkgsysconfdir)
endif endif

View File

@ -169,10 +169,8 @@ if conf.get('ENABLE_RESOLVE') == 1
input : 'resolved.conf.in', input : 'resolved.conf.in',
output : 'resolved.conf', output : 'resolved.conf',
configuration : substs) configuration : substs)
if install_sysconfdir
install_data(resolved_conf, install_data(resolved_conf,
install_dir : pkgsysconfdir) install_dir : pkgsysconfdir)
endif
install_data('resolv.conf', install_data('resolv.conf',
install_dir : rootlibexecdir) install_dir : rootlibexecdir)

View File

@ -26,10 +26,8 @@ if conf.get('ENABLE_TIMESYNCD') == 1
input : 'timesyncd.conf.in', input : 'timesyncd.conf.in',
output : 'timesyncd.conf', output : 'timesyncd.conf',
configuration : substs) configuration : substs)
if install_sysconfdir
install_data(timesyncd_conf, install_data(timesyncd_conf,
install_dir : pkgsysconfdir) install_dir : pkgsysconfdir)
endif
install_data('org.freedesktop.timesync1.conf', install_data('org.freedesktop.timesync1.conf',
install_dir : dbuspolicydir) install_dir : dbuspolicydir)
install_data('org.freedesktop.timesync1.service', install_data('org.freedesktop.timesync1.service',

View File

@ -185,10 +185,8 @@ foreach prog : [['ata_id/ata_id.c'],
install_dir : udevlibexecdir) install_dir : udevlibexecdir)
endforeach endforeach
if install_sysconfdir install_data('udev.conf',
install_data('udev.conf',
install_dir : join_paths(sysconfdir, 'udev')) install_dir : join_paths(sysconfdir, 'udev'))
endif
configure_file( configure_file(
input : 'udev.pc.in', input : 'udev.pc.in',
@ -196,10 +194,8 @@ configure_file(
configuration : substs, configuration : substs,
install_dir : pkgconfigdatadir == 'no' ? '' : pkgconfigdatadir) install_dir : pkgconfigdatadir == 'no' ? '' : pkgconfigdatadir)
if install_sysconfdir meson.add_install_script('sh', '-c',
meson.add_install_script('sh', '-c',
mkdir_p.format(join_paths(sysconfdir, 'udev/rules.d'))) mkdir_p.format(join_paths(sysconfdir, 'udev/rules.d')))
endif
fuzzers += [ fuzzers += [
[['src/udev/net/fuzz-link-parser.c', [['src/udev/net/fuzz-link-parser.c',

View File

@ -26,7 +26,5 @@ foreach file : in_files
install_dir : sysctldir) install_dir : sysctldir)
endforeach endforeach
if install_sysconfdir meson.add_install_script('sh', '-c',
meson.add_install_script('sh', '-c',
mkdir_p.format(join_paths(sysconfdir, 'sysctl.d'))) mkdir_p.format(join_paths(sysconfdir, 'sysctl.d')))
endif

View File

@ -55,7 +55,7 @@ foreach file : m4_files
endif endif
endforeach endforeach
if enable_tmpfiles and install_sysconfdir if enable_tmpfiles
meson.add_install_script( meson.add_install_script(
'sh', '-c', 'sh', '-c',
mkdir_p.format(join_paths(sysconfdir, 'tmpfiles.d'))) mkdir_p.format(join_paths(sysconfdir, 'tmpfiles.d')))

View File

@ -326,11 +326,9 @@ install_data('user-.slice.d/10-defaults.conf',
############################################################ ############################################################
if install_sysconfdir meson.add_install_script(meson_make_symlink,
meson.add_install_script(meson_make_symlink,
join_paths(pkgsysconfdir, 'user'), join_paths(pkgsysconfdir, 'user'),
join_paths(sysconfdir, 'xdg/systemd/user')) join_paths(sysconfdir, 'xdg/systemd/user'))
endif
meson.add_install_script(meson_make_symlink, meson.add_install_script(meson_make_symlink,
join_paths(dbussystemservicedir, 'org.freedesktop.systemd1.service'), join_paths(dbussystemservicedir, 'org.freedesktop.systemd1.service'),
join_paths(dbussessionservicedir, 'org.freedesktop.systemd1.service')) join_paths(dbussessionservicedir, 'org.freedesktop.systemd1.service'))