1
0
mirror of https://github.com/systemd/systemd synced 2025-11-09 11:54:44 +01:00

Compare commits

...

13 Commits

Author SHA1 Message Date
Zbigniew Jędrzejewski-Szmek
eea63c03b9
Merge pull request #16808 from yuwata/test-network-reconfigure-routing-policy-rules
add a test case for [RoutingPolicyRule] and fix minor issue in man page
2020-08-21 14:20:52 +02:00
Zbigniew Jędrzejewski-Szmek
e2f116a54c
Merge pull request #16789 from keszybz/weblate
Import the .pot file into version control for weblate
2020-08-21 14:18:31 +02:00
Lennart Poettering
9aab8d7a98
Merge pull request #16804 from keszybz/conditionals-and-spelling-fixes
Conditionals and spelling fixes
2020-08-21 13:36:30 +02:00
Yu Watanabe
d91b9bbce8 man: fix invalid tag place 2020-08-21 15:30:05 +09:00
Yu Watanabe
9dffe6fc27 test-network: add a test case for reconfiguring routing policy rules
C.f. #16784.
2020-08-21 15:27:38 +09:00
Zbigniew Jędrzejewski-Szmek
2aed63f427 tree-wide: fix spelling of "fallback"
Similarly to "setup" vs. "set up", "fallback" is a noun, and "fall back"
is the verb. (This is pretty clear when we construct a sentence in the
present continous: "we are falling back" not "we are fallbacking").
2020-08-20 17:45:32 +02:00
Zbigniew Jędrzejewski-Szmek
bb5a34fb3e man: add conditionals to more man pages
Fixes #16701.
2020-08-20 17:42:13 +02:00
Zbigniew Jędrzejewski-Szmek
b3259a6e5f meson: add ENABLE_ANALYZE conditional 2020-08-20 17:42:13 +02:00
Zbigniew Jędrzejewski-Szmek
4338ab8163 meson: fix build/man/{man,html} to support page redirects
Commands like build/man/man journald.conf.d would show the installed
man page (or an error if the page cannot be found in the global search
path), and not the one in the build directory. If the man page is
a redirect, or the .html is a symlink, resolve it, build the target,
and show that.
2020-08-20 17:42:13 +02:00
Zbigniew Jędrzejewski-Szmek
7eac7b4c62 test-string-util: add a test for strjoin()
Strangely, we didn't have one so far. I mostly wanted to verify
that NULL can be used in any spot at behaves the same as "".
2020-08-20 17:42:13 +02:00
Zbigniew Jędrzejewski-Szmek
c32c4352b4 test-acl-util: output more debug info
For some reason this failed in koji build on s390x:
--- command ---
16:12:46 PATH='/builddir/build/BUILD/systemd-stable-246.1/s390x-redhat-linux-gnu:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin' SYSTEMD_LANGUAGE_FALLBACK_MAP='/builddir/build/BUILD/systemd-stable-246.1/src/locale/language-fallback-map' SYSTEMD_KBD_MODEL_MAP='/builddir/build/BUILD/systemd-stable-246.1/src/locale/kbd-model-map' /builddir/build/BUILD/systemd-stable-246.1/s390x-redhat-linux-gnu/test-acl-util
--- stdout ---
-rw-r-----. 1 mockbuild mock 0 Aug  7 16:12 /tmp/test-empty.7RzmEc
other::---
--- stderr ---
Assertion 'r >= 0' failed at src/test/test-acl-util.c:42, function test_add_acls_for_user(). Aborting.
2020-08-20 17:42:13 +02:00
Zbigniew Jędrzejewski-Szmek
adf4a51fe4 po: import the .pot file into version control
Fixes #14531.
2020-08-19 18:02:22 +02:00
Zbigniew Jędrzejewski-Szmek
1169790bb0 Revert "gitignore .pot file"
This reverts commit ee4e9a1090941797d7ed64e23a49ceeba762577c.

It seems we need the .pot file in the repo to allow weblate to import it.
2020-08-19 18:01:07 +02:00
30 changed files with 986 additions and 74 deletions

4
TODO
View File

@ -541,7 +541,7 @@ Features:
directory trees from the host to the services RootImage= and RootDirectory=
environment. Which we can use for /etc/machine-id and in particular
/etc/resolv.conf. Should be smart and do something useful on read-only
images, for example fallback to read-only bind mounting the file instead.
images, for example fall back to read-only bind mounting the file instead.
* show invocation ID in systemd-run output
@ -1018,7 +1018,7 @@ Features:
- journald: also get thread ID from client, plus thread name
- journal: when waiting for journal additions in the client always sleep at least 1s or so, in order to minimize wakeups
- add API to close/reopen/get fd for journal client fd in libsystemd-journal.
- fallback to /dev/log based logging in libsystemd-journal, if we cannot log natively?
- fall back to /dev/log based logging in libsystemd-journal, if we cannot log natively?
- declare the local journal protocol stable in the wiki interface chart
- sd-journal: speed up sd_journal_get_data() with transparent hash table in bg
- journald: when dropping msgs due to ratelimit make sure to write

View File

@ -11,5 +11,14 @@ ninja -C "@BUILD_ROOT@" version.h
target="man/$1.html"
ninja -C "@BUILD_ROOT@" "$target"
fullname="@BUILD_ROOT@/$target"
redirect="$(readlink "$fullname" 2>/dev/null)"
if [ -n "$redirect" ]; then
ninja -C "@BUILD_ROOT@" "man/$redirect"
fullname="@BUILD_ROOT@/man/$redirect"
fi
set -x
exec xdg-open "@BUILD_ROOT@/$target"
exec xdg-open "$fullname"

View File

@ -16,4 +16,13 @@ if [ -z "$target" ]; then
exit 1
fi
ninja -C "@BUILD_ROOT@" "$target"
exec man "@BUILD_ROOT@/$target"
fullname="@BUILD_ROOT@/$target"
redirect="$(sed -n -r '1 s|^\.so man[0-9]/(.*)|\1|p' "$fullname")"
if [ -n "$redirect" ]; then
ninja -C "@BUILD_ROOT@" "man/$redirect"
fullname="@BUILD_ROOT@/man/$redirect"
fi
exec man "$fullname"

View File

@ -52,8 +52,8 @@
<term><varname>SpeedMeter=</varname></term>
<listitem><para>Takes a boolean. If set to yes, then <command>systemd-networkd</command>
measures the traffic of each interface, and
<command>networkctl status <replaceable>INTERFACE</replaceable> shows the measured speed.
</command>Defaults to no.</para></listitem>
<command>networkctl status <replaceable>INTERFACE</replaceable></command> shows the measured speed.
Defaults to no.</para></listitem>
</varlistentry>
<varlistentry>

View File

@ -63,7 +63,7 @@ manpages = [
['repart.d', '5', [], 'ENABLE_REPART'],
['resolvectl', '1', ['resolvconf'], 'ENABLE_RESOLVE'],
['resolved.conf', '5', ['resolved.conf.d'], 'ENABLE_RESOLVE'],
['runlevel', '8', [], ''],
['runlevel', '8', [], 'HAVE_SYSV_COMPAT'],
['sd-bus-errors',
'3',
['SD_BUS_ERROR_ACCESS_DENIED',
@ -785,7 +785,7 @@ manpages = [
['shutdown', '8', [], ''],
['sysctl.d', '5', [], ''],
['systemctl', '1', [], ''],
['systemd-analyze', '1', [], ''],
['systemd-analyze', '1', [], 'ENABLE_ANALYZE'],
['systemd-ask-password-console.service',
'8',
['systemd-ask-password-console.path',
@ -818,7 +818,7 @@ manpages = [
['systemd-debug-generator', '8', [], ''],
['systemd-delta', '1', [], ''],
['systemd-detect-virt', '1', [], ''],
['systemd-dissect', '1', [], ''],
['systemd-dissect', '1', [], 'HAVE_BLKID'],
['systemd-environment-d-generator',
'8',
['30-systemd-environment-d-generator'],
@ -831,7 +831,7 @@ manpages = [
''],
['systemd-fstab-generator', '8', [], ''],
['systemd-getty-generator', '8', [], ''],
['systemd-gpt-auto-generator', '8', [], ''],
['systemd-gpt-auto-generator', '8', [], 'HAVE_BLKID'],
['systemd-halt.service',
'8',
['systemd-kexec.service',
@ -912,7 +912,7 @@ manpages = [
'8',
['systemd-random-seed'],
'ENABLE_RANDOMSEED'],
['systemd-rc-local-generator', '8', [], ''],
['systemd-rc-local-generator', '8', [], 'HAVE_SYSV_COMPAT'],
['systemd-remount-fs.service', '8', ['systemd-remount-fs'], ''],
['systemd-repart', '8', ['systemd-repart.service'], 'ENABLE_REPART'],
['systemd-resolved.service', '8', ['systemd-resolved'], 'ENABLE_RESOLVE'],
@ -1010,7 +1010,7 @@ manpages = [
['systemd.timer', '5', [], ''],
['systemd.unit', '5', [], ''],
['sysusers.d', '5', [], 'ENABLE_SYSUSERS'],
['telinit', '8', [], ''],
['telinit', '8', [], 'HAVE_SYSV_COMPAT'],
['timedatectl', '1', [], 'ENABLE_TIMEDATECTL'],
['timesyncd.conf', '5', ['timesyncd.conf.d'], 'ENABLE_TIMESYNCD'],
['tmpfiles.d', '5', [], ''],

View File

@ -3,7 +3,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1+ -->
<refentry id="runlevel"
<refentry id="runlevel" conditional='HAVE_SYSV_COMPAT'
xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
@ -159,5 +159,4 @@
<citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
</para>
</refsect1>
</refentry>

View File

@ -3,7 +3,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1+ -->
<refentry id="systemd-analyze"
<refentry id="systemd-analyze" conditional='ENABLE_ANALYZE'
xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>

View File

@ -3,7 +3,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1+ -->
<refentry id="systemd-dissect"
<refentry id="systemd-dissect" conditional='HAVE_BLKID'
xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>

View File

@ -1,9 +1,9 @@
<?xml version="1.0"?>
<!--*-nxml-*-->
<?xml version="1.0"?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1+ -->
<refentry id="systemd-gpt-auto-generator">
<refentry id="systemd-gpt-auto-generator" conditional='HAVE_BLKID'>
<refentryinfo>
<title>systemd-gpt-auto-generator</title>

View File

@ -3,8 +3,7 @@
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1+ -->
<refentry id="systemd-rc-local-generator">
<refentry id="systemd-rc-local-generator" conditional='HAVE_SYSV_COMPAT'>
<refentryinfo>
<title>systemd-rc-local-generator</title>
<productname>systemd</productname>
@ -51,5 +50,4 @@
<citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
</para>
</refsect1>
</refentry>

View File

@ -3,7 +3,7 @@
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1+ -->
<refentry id="telinit"
<refentry id="telinit" conditional='HAVE_SYSV_COMPAT'
xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo>
@ -148,5 +148,4 @@
<citerefentry project='man-pages'><refentrytitle>wall</refentrytitle><manvolnum>1</manvolnum></citerefentry>
</para>
</refsect1>
</refentry>

View File

@ -791,7 +791,7 @@ tty_gid = get_option('tty-gid')
conf.set('TTY_GID', tty_gid)
substs.set('TTY_GID', tty_gid)
# Ensure provided GID argument is numeric, otherwise fallback to default assignment
# Ensure provided GID argument is numeric, otherwise fall back to default assignment
users_gid = get_option('users-gid')
substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
@ -1415,42 +1415,43 @@ else
endif
conf.set10('ENABLE_REMOTE', have)
foreach term : ['utmp',
'hibernate',
'environment-d',
foreach term : ['analyze',
'backlight',
'binfmt',
'coredump',
'pstore',
'resolve',
'logind',
'efi',
'environment-d',
'firstboot',
'gshadow',
'hibernate',
'hostnamed',
'hwdb',
'idn',
'ima',
'initrd',
'ldconfig',
'localed',
'logind',
'machined',
'portabled',
'userdb',
'networkd',
'nss-myhostname',
'nss-systemd',
'portabled',
'pstore',
'quotacheck',
'randomseed',
'resolve',
'rfkill',
'smack',
'sysusers',
'timedated',
'timesyncd',
'firstboot',
'randomseed',
'backlight',
'vconsole',
'quotacheck',
'sysusers',
'tmpfiles',
'hwdb',
'rfkill',
'xdg-autostart',
'ldconfig',
'efi',
'tpm',
'ima',
'smack',
'gshadow',
'idn',
'initrd',
'nss-myhostname',
'nss-systemd']
'userdb',
'utmp',
'vconsole',
'xdg-autostart']
have = get_option(term)
name = 'ENABLE_' + term.underscorify().to_upper()
conf.set10(name, have)
@ -1767,7 +1768,7 @@ public_programs += executable(
libmount,
libblkid],
install_rpath : rootlibexecdir,
install : get_option('analyze'))
install : conf.get('ENABLE_ANALYZE'))
executable(
'systemd-journald',
@ -3681,7 +3682,7 @@ foreach tuple : [
['link-networkd-shared', get_option('link-networkd-shared')],
['link-timesyncd-shared', get_option('link-timesyncd-shared')],
['kernel-install', get_option('kernel-install')],
['systemd-analyze', get_option('analyze')],
['systemd-analyze', conf.get('ENABLE_ANALYZE') == 1],
]
if tuple.length() >= 2

1
po/.gitignore vendored
View File

@ -1 +0,0 @@
/systemd.pot

841
po/systemd.pot Normal file
View File

@ -0,0 +1,841 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the systemd package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: systemd\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-19 18:02+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/core/org.freedesktop.systemd1.policy.in:22
msgid "Send passphrase back to system"
msgstr ""
#: src/core/org.freedesktop.systemd1.policy.in:23
msgid ""
"Authentication is required to send the entered passphrase back to the system."
msgstr ""
#: src/core/org.freedesktop.systemd1.policy.in:33
msgid "Manage system services or other units"
msgstr ""
#: src/core/org.freedesktop.systemd1.policy.in:34
msgid "Authentication is required to manage system services or other units."
msgstr ""
#: src/core/org.freedesktop.systemd1.policy.in:43
msgid "Manage system service or unit files"
msgstr ""
#: src/core/org.freedesktop.systemd1.policy.in:44
msgid "Authentication is required to manage system service or unit files."
msgstr ""
#: src/core/org.freedesktop.systemd1.policy.in:54
msgid "Set or unset system and service manager environment variables"
msgstr ""
#: src/core/org.freedesktop.systemd1.policy.in:55
msgid ""
"Authentication is required to set or unset system and service manager "
"environment variables."
msgstr ""
#: src/core/org.freedesktop.systemd1.policy.in:64
msgid "Reload the systemd state"
msgstr ""
#: src/core/org.freedesktop.systemd1.policy.in:65
msgid "Authentication is required to reload the systemd state."
msgstr ""
#: src/home/org.freedesktop.home1.policy:13
msgid "Create a home area"
msgstr ""
#: src/home/org.freedesktop.home1.policy:14
msgid "Authentication is required to create a user's home area."
msgstr ""
#: src/home/org.freedesktop.home1.policy:23
msgid "Remove a home area"
msgstr ""
#: src/home/org.freedesktop.home1.policy:24
msgid "Authentication is required to remove a user's home area."
msgstr ""
#: src/home/org.freedesktop.home1.policy:33
msgid "Check credentials of a home area"
msgstr ""
#: src/home/org.freedesktop.home1.policy:34
msgid ""
"Authentication is required to check credentials against a user's home area."
msgstr ""
#: src/home/org.freedesktop.home1.policy:43
msgid "Update a home area"
msgstr ""
#: src/home/org.freedesktop.home1.policy:44
msgid "Authentication is required to update a user's home area."
msgstr ""
#: src/home/org.freedesktop.home1.policy:53
msgid "Resize a home area"
msgstr ""
#: src/home/org.freedesktop.home1.policy:54
msgid "Authentication is required to resize a user's home area."
msgstr ""
#: src/home/org.freedesktop.home1.policy:63
msgid "Change password of a home area"
msgstr ""
#: src/home/org.freedesktop.home1.policy:64
msgid ""
"Authentication is required to change the password of a user's home area."
msgstr ""
#: src/hostname/org.freedesktop.hostname1.policy:20
msgid "Set hostname"
msgstr ""
#: src/hostname/org.freedesktop.hostname1.policy:21
msgid "Authentication is required to set the local hostname."
msgstr ""
#: src/hostname/org.freedesktop.hostname1.policy:30
msgid "Set static hostname"
msgstr ""
#: src/hostname/org.freedesktop.hostname1.policy:31
msgid ""
"Authentication is required to set the statically configured local hostname, "
"as well as the pretty hostname."
msgstr ""
#: src/hostname/org.freedesktop.hostname1.policy:41
msgid "Set machine information"
msgstr ""
#: src/hostname/org.freedesktop.hostname1.policy:42
msgid "Authentication is required to set local machine information."
msgstr ""
#: src/hostname/org.freedesktop.hostname1.policy:51
msgid "Get product UUID"
msgstr ""
#: src/hostname/org.freedesktop.hostname1.policy:52
msgid "Authentication is required to get product UUID."
msgstr ""
#: src/import/org.freedesktop.import1.policy:22
msgid "Import a VM or container image"
msgstr ""
#: src/import/org.freedesktop.import1.policy:23
msgid "Authentication is required to import a VM or container image"
msgstr ""
#: src/import/org.freedesktop.import1.policy:32
msgid "Export a VM or container image"
msgstr ""
#: src/import/org.freedesktop.import1.policy:33
msgid "Authentication is required to export a VM or container image"
msgstr ""
#: src/import/org.freedesktop.import1.policy:42
msgid "Download a VM or container image"
msgstr ""
#: src/import/org.freedesktop.import1.policy:43
msgid "Authentication is required to download a VM or container image"
msgstr ""
#: src/locale/org.freedesktop.locale1.policy:22
msgid "Set system locale"
msgstr ""
#: src/locale/org.freedesktop.locale1.policy:23
msgid "Authentication is required to set the system locale."
msgstr ""
#: src/locale/org.freedesktop.locale1.policy:33
msgid "Set system keyboard settings"
msgstr ""
#: src/locale/org.freedesktop.locale1.policy:34
msgid "Authentication is required to set the system keyboard settings."
msgstr ""
#: src/login/org.freedesktop.login1.policy:22
msgid "Allow applications to inhibit system shutdown"
msgstr ""
#: src/login/org.freedesktop.login1.policy:23
msgid ""
"Authentication is required for an application to inhibit system shutdown."
msgstr ""
#: src/login/org.freedesktop.login1.policy:33
msgid "Allow applications to delay system shutdown"
msgstr ""
#: src/login/org.freedesktop.login1.policy:34
msgid "Authentication is required for an application to delay system shutdown."
msgstr ""
#: src/login/org.freedesktop.login1.policy:44
msgid "Allow applications to inhibit system sleep"
msgstr ""
#: src/login/org.freedesktop.login1.policy:45
msgid "Authentication is required for an application to inhibit system sleep."
msgstr ""
#: src/login/org.freedesktop.login1.policy:55
msgid "Allow applications to delay system sleep"
msgstr ""
#: src/login/org.freedesktop.login1.policy:56
msgid "Authentication is required for an application to delay system sleep."
msgstr ""
#: src/login/org.freedesktop.login1.policy:65
msgid "Allow applications to inhibit automatic system suspend"
msgstr ""
#: src/login/org.freedesktop.login1.policy:66
msgid ""
"Authentication is required for an application to inhibit automatic system "
"suspend."
msgstr ""
#: src/login/org.freedesktop.login1.policy:75
msgid "Allow applications to inhibit system handling of the power key"
msgstr ""
#: src/login/org.freedesktop.login1.policy:76
msgid ""
"Authentication is required for an application to inhibit system handling of "
"the power key."
msgstr ""
#: src/login/org.freedesktop.login1.policy:86
msgid "Allow applications to inhibit system handling of the suspend key"
msgstr ""
#: src/login/org.freedesktop.login1.policy:87
msgid ""
"Authentication is required for an application to inhibit system handling of "
"the suspend key."
msgstr ""
#: src/login/org.freedesktop.login1.policy:97
msgid "Allow applications to inhibit system handling of the hibernate key"
msgstr ""
#: src/login/org.freedesktop.login1.policy:98
msgid ""
"Authentication is required for an application to inhibit system handling of "
"the hibernate key."
msgstr ""
#: src/login/org.freedesktop.login1.policy:107
msgid "Allow applications to inhibit system handling of the lid switch"
msgstr ""
#: src/login/org.freedesktop.login1.policy:108
msgid ""
"Authentication is required for an application to inhibit system handling of "
"the lid switch."
msgstr ""
#: src/login/org.freedesktop.login1.policy:117
msgid "Allow non-logged-in user to run programs"
msgstr ""
#: src/login/org.freedesktop.login1.policy:118
msgid "Explicit request is required to run programs as a non-logged-in user."
msgstr ""
#: src/login/org.freedesktop.login1.policy:127
msgid "Allow non-logged-in users to run programs"
msgstr ""
#: src/login/org.freedesktop.login1.policy:128
msgid "Authentication is required to run programs as a non-logged-in user."
msgstr ""
#: src/login/org.freedesktop.login1.policy:137
msgid "Allow attaching devices to seats"
msgstr ""
#: src/login/org.freedesktop.login1.policy:138
msgid "Authentication is required to attach a device to a seat."
msgstr ""
#: src/login/org.freedesktop.login1.policy:148
msgid "Flush device to seat attachments"
msgstr ""
#: src/login/org.freedesktop.login1.policy:149
msgid "Authentication is required to reset how devices are attached to seats."
msgstr ""
#: src/login/org.freedesktop.login1.policy:158
msgid "Power off the system"
msgstr ""
#: src/login/org.freedesktop.login1.policy:159
msgid "Authentication is required to power off the system."
msgstr ""
#: src/login/org.freedesktop.login1.policy:169
msgid "Power off the system while other users are logged in"
msgstr ""
#: src/login/org.freedesktop.login1.policy:170
msgid ""
"Authentication is required to power off the system while other users are "
"logged in."
msgstr ""
#: src/login/org.freedesktop.login1.policy:180
msgid "Power off the system while an application is inhibiting this"
msgstr ""
#: src/login/org.freedesktop.login1.policy:181
msgid ""
"Authentication is required to power off the system while an application is "
"inhibiting this."
msgstr ""
#: src/login/org.freedesktop.login1.policy:191
msgid "Reboot the system"
msgstr ""
#: src/login/org.freedesktop.login1.policy:192
msgid "Authentication is required to reboot the system."
msgstr ""
#: src/login/org.freedesktop.login1.policy:202
msgid "Reboot the system while other users are logged in"
msgstr ""
#: src/login/org.freedesktop.login1.policy:203
msgid ""
"Authentication is required to reboot the system while other users are logged "
"in."
msgstr ""
#: src/login/org.freedesktop.login1.policy:213
msgid "Reboot the system while an application is inhibiting this"
msgstr ""
#: src/login/org.freedesktop.login1.policy:214
msgid ""
"Authentication is required to reboot the system while an application is "
"inhibiting this."
msgstr ""
#: src/login/org.freedesktop.login1.policy:224
msgid "Halt the system"
msgstr ""
#: src/login/org.freedesktop.login1.policy:225
msgid "Authentication is required to halt the system."
msgstr ""
#: src/login/org.freedesktop.login1.policy:235
msgid "Halt the system while other users are logged in"
msgstr ""
#: src/login/org.freedesktop.login1.policy:236
msgid ""
"Authentication is required to halt the system while other users are logged "
"in."
msgstr ""
#: src/login/org.freedesktop.login1.policy:246
msgid "Halt the system while an application is inhibiting this"
msgstr ""
#: src/login/org.freedesktop.login1.policy:247
msgid ""
"Authentication is required to halt the system while an application is "
"inhibiting this."
msgstr ""
#: src/login/org.freedesktop.login1.policy:257
msgid "Suspend the system"
msgstr ""
#: src/login/org.freedesktop.login1.policy:258
msgid "Authentication is required to suspend the system."
msgstr ""
#: src/login/org.freedesktop.login1.policy:267
msgid "Suspend the system while other users are logged in"
msgstr ""
#: src/login/org.freedesktop.login1.policy:268
msgid ""
"Authentication is required to suspend the system while other users are "
"logged in."
msgstr ""
#: src/login/org.freedesktop.login1.policy:278
msgid "Suspend the system while an application is inhibiting this"
msgstr ""
#: src/login/org.freedesktop.login1.policy:279
msgid ""
"Authentication is required to suspend the system while an application is "
"inhibiting this."
msgstr ""
#: src/login/org.freedesktop.login1.policy:289
msgid "Hibernate the system"
msgstr ""
#: src/login/org.freedesktop.login1.policy:290
msgid "Authentication is required to hibernate the system."
msgstr ""
#: src/login/org.freedesktop.login1.policy:299
msgid "Hibernate the system while other users are logged in"
msgstr ""
#: src/login/org.freedesktop.login1.policy:300
msgid ""
"Authentication is required to hibernate the system while other users are "
"logged in."
msgstr ""
#: src/login/org.freedesktop.login1.policy:310
msgid "Hibernate the system while an application is inhibiting this"
msgstr ""
#: src/login/org.freedesktop.login1.policy:311
msgid ""
"Authentication is required to hibernate the system while an application is "
"inhibiting this."
msgstr ""
#: src/login/org.freedesktop.login1.policy:321
msgid "Manage active sessions, users and seats"
msgstr ""
#: src/login/org.freedesktop.login1.policy:322
msgid "Authentication is required to manage active sessions, users and seats."
msgstr ""
#: src/login/org.freedesktop.login1.policy:331
msgid "Lock or unlock active sessions"
msgstr ""
#: src/login/org.freedesktop.login1.policy:332
msgid "Authentication is required to lock or unlock active sessions."
msgstr ""
#: src/login/org.freedesktop.login1.policy:341
msgid "Set the reboot \"reason\" in the kernel"
msgstr ""
#: src/login/org.freedesktop.login1.policy:342
msgid "Authentication is required to set the reboot \"reason\" in the kernel."
msgstr ""
#: src/login/org.freedesktop.login1.policy:352
msgid "Indicate to the firmware to boot to setup interface"
msgstr ""
#: src/login/org.freedesktop.login1.policy:353
msgid ""
"Authentication is required to indicate to the firmware to boot to setup "
"interface."
msgstr ""
#: src/login/org.freedesktop.login1.policy:363
msgid "Indicate to the boot loader to boot to the boot loader menu"
msgstr ""
#: src/login/org.freedesktop.login1.policy:364
msgid ""
"Authentication is required to indicate to the boot loader to boot to the "
"boot loader menu."
msgstr ""
#: src/login/org.freedesktop.login1.policy:374
msgid "Indicate to the boot loader to boot a specific entry"
msgstr ""
#: src/login/org.freedesktop.login1.policy:375
msgid ""
"Authentication is required to indicate to the boot loader to boot into a "
"specific boot loader entry."
msgstr ""
#: src/login/org.freedesktop.login1.policy:385
msgid "Set a wall message"
msgstr ""
#: src/login/org.freedesktop.login1.policy:386
msgid "Authentication is required to set a wall message"
msgstr ""
#: src/login/org.freedesktop.login1.policy:395
msgid "Change Session"
msgstr ""
#: src/login/org.freedesktop.login1.policy:396
msgid "Authentication is required to change the virtual terminal."
msgstr ""
#: src/machine/org.freedesktop.machine1.policy:22
msgid "Log into a local container"
msgstr ""
#: src/machine/org.freedesktop.machine1.policy:23
msgid "Authentication is required to log into a local container."
msgstr ""
#: src/machine/org.freedesktop.machine1.policy:32
msgid "Log into the local host"
msgstr ""
#: src/machine/org.freedesktop.machine1.policy:33
msgid "Authentication is required to log into the local host."
msgstr ""
#: src/machine/org.freedesktop.machine1.policy:42
msgid "Acquire a shell in a local container"
msgstr ""
#: src/machine/org.freedesktop.machine1.policy:43
msgid "Authentication is required to acquire a shell in a local container."
msgstr ""
#: src/machine/org.freedesktop.machine1.policy:53
msgid "Acquire a shell on the local host"
msgstr ""
#: src/machine/org.freedesktop.machine1.policy:54
msgid "Authentication is required to acquire a shell on the local host."
msgstr ""
#: src/machine/org.freedesktop.machine1.policy:64
msgid "Acquire a pseudo TTY in a local container"
msgstr ""
#: src/machine/org.freedesktop.machine1.policy:65
msgid ""
"Authentication is required to acquire a pseudo TTY in a local container."
msgstr ""
#: src/machine/org.freedesktop.machine1.policy:74
msgid "Acquire a pseudo TTY on the local host"
msgstr ""
#: src/machine/org.freedesktop.machine1.policy:75
msgid "Authentication is required to acquire a pseudo TTY on the local host."
msgstr ""
#: src/machine/org.freedesktop.machine1.policy:84
msgid "Manage local virtual machines and containers"
msgstr ""
#: src/machine/org.freedesktop.machine1.policy:85
msgid ""
"Authentication is required to manage local virtual machines and containers."
msgstr ""
#: src/machine/org.freedesktop.machine1.policy:95
msgid "Manage local virtual machine and container images"
msgstr ""
#: src/machine/org.freedesktop.machine1.policy:96
msgid ""
"Authentication is required to manage local virtual machine and container "
"images."
msgstr ""
#: src/network/org.freedesktop.network1.policy:22
msgid "Set NTP servers"
msgstr ""
#: src/network/org.freedesktop.network1.policy:23
msgid "Authentication is required to set NTP servers."
msgstr ""
#: src/network/org.freedesktop.network1.policy:33
#: src/resolve/org.freedesktop.resolve1.policy:44
msgid "Set DNS servers"
msgstr ""
#: src/network/org.freedesktop.network1.policy:34
#: src/resolve/org.freedesktop.resolve1.policy:45
msgid "Authentication is required to set DNS servers."
msgstr ""
#: src/network/org.freedesktop.network1.policy:44
#: src/resolve/org.freedesktop.resolve1.policy:55
msgid "Set domains"
msgstr ""
#: src/network/org.freedesktop.network1.policy:45
#: src/resolve/org.freedesktop.resolve1.policy:56
msgid "Authentication is required to set domains."
msgstr ""
#: src/network/org.freedesktop.network1.policy:55
#: src/resolve/org.freedesktop.resolve1.policy:66
msgid "Set default route"
msgstr ""
#: src/network/org.freedesktop.network1.policy:56
#: src/resolve/org.freedesktop.resolve1.policy:67
msgid "Authentication is required to set default route."
msgstr ""
#: src/network/org.freedesktop.network1.policy:66
#: src/resolve/org.freedesktop.resolve1.policy:77
msgid "Enable/disable LLMNR"
msgstr ""
#: src/network/org.freedesktop.network1.policy:67
#: src/resolve/org.freedesktop.resolve1.policy:78
msgid "Authentication is required to enable or disable LLMNR."
msgstr ""
#: src/network/org.freedesktop.network1.policy:77
#: src/resolve/org.freedesktop.resolve1.policy:88
msgid "Enable/disable multicast DNS"
msgstr ""
#: src/network/org.freedesktop.network1.policy:78
#: src/resolve/org.freedesktop.resolve1.policy:89
msgid "Authentication is required to enable or disable multicast DNS."
msgstr ""
#: src/network/org.freedesktop.network1.policy:88
#: src/resolve/org.freedesktop.resolve1.policy:99
msgid "Enable/disable DNS over TLS"
msgstr ""
#: src/network/org.freedesktop.network1.policy:89
#: src/resolve/org.freedesktop.resolve1.policy:100
msgid "Authentication is required to enable or disable DNS over TLS."
msgstr ""
#: src/network/org.freedesktop.network1.policy:99
#: src/resolve/org.freedesktop.resolve1.policy:110
msgid "Enable/disable DNSSEC"
msgstr ""
#: src/network/org.freedesktop.network1.policy:100
#: src/resolve/org.freedesktop.resolve1.policy:111
msgid "Authentication is required to enable or disable DNSSEC."
msgstr ""
#: src/network/org.freedesktop.network1.policy:110
#: src/resolve/org.freedesktop.resolve1.policy:121
msgid "Set DNSSEC Negative Trust Anchors"
msgstr ""
#: src/network/org.freedesktop.network1.policy:111
#: src/resolve/org.freedesktop.resolve1.policy:122
msgid "Authentication is required to set DNSSEC Negative Trust Anchors."
msgstr ""
#: src/network/org.freedesktop.network1.policy:121
msgid "Revert NTP settings"
msgstr ""
#: src/network/org.freedesktop.network1.policy:122
msgid "Authentication is required to reset NTP settings."
msgstr ""
#: src/network/org.freedesktop.network1.policy:132
msgid "Revert DNS settings"
msgstr ""
#: src/network/org.freedesktop.network1.policy:133
msgid "Authentication is required to reset DNS settings."
msgstr ""
#: src/network/org.freedesktop.network1.policy:143
msgid "DHCP server sends force renew message"
msgstr ""
#: src/network/org.freedesktop.network1.policy:144
msgid "Authentication is required to send force renew message."
msgstr ""
#: src/network/org.freedesktop.network1.policy:154
msgid "Renew dynamic addresses"
msgstr ""
#: src/network/org.freedesktop.network1.policy:155
msgid "Authentication is required to renew dynamic addresses."
msgstr ""
#: src/network/org.freedesktop.network1.policy:165
msgid "Reload network settings"
msgstr ""
#: src/network/org.freedesktop.network1.policy:166
msgid "Authentication is required to reload network settings."
msgstr ""
#: src/network/org.freedesktop.network1.policy:176
msgid "Reconfigure network interface"
msgstr ""
#: src/network/org.freedesktop.network1.policy:177
msgid "Authentication is required to reconfigure network interface."
msgstr ""
#: src/portable/org.freedesktop.portable1.policy:13
msgid "Inspect a portable service image"
msgstr ""
#: src/portable/org.freedesktop.portable1.policy:14
msgid "Authentication is required to inspect a portable service image."
msgstr ""
#: src/portable/org.freedesktop.portable1.policy:23
msgid "Attach or detach a portable service image"
msgstr ""
#: src/portable/org.freedesktop.portable1.policy:24
msgid ""
"Authentication is required to attach or detach a portable service image."
msgstr ""
#: src/portable/org.freedesktop.portable1.policy:34
msgid "Delete or modify portable service image"
msgstr ""
#: src/portable/org.freedesktop.portable1.policy:35
msgid ""
"Authentication is required to delete or modify a portable service image."
msgstr ""
#: src/resolve/org.freedesktop.resolve1.policy:22
msgid "Register a DNS-SD service"
msgstr ""
#: src/resolve/org.freedesktop.resolve1.policy:23
msgid "Authentication is required to register a DNS-SD service"
msgstr ""
#: src/resolve/org.freedesktop.resolve1.policy:33
msgid "Unregister a DNS-SD service"
msgstr ""
#: src/resolve/org.freedesktop.resolve1.policy:34
msgid "Authentication is required to unregister a DNS-SD service"
msgstr ""
#: src/resolve/org.freedesktop.resolve1.policy:132
msgid "Revert name resolution settings"
msgstr ""
#: src/resolve/org.freedesktop.resolve1.policy:133
msgid "Authentication is required to reset name resolution settings."
msgstr ""
#: src/timedate/org.freedesktop.timedate1.policy:22
msgid "Set system time"
msgstr ""
#: src/timedate/org.freedesktop.timedate1.policy:23
msgid "Authentication is required to set the system time."
msgstr ""
#: src/timedate/org.freedesktop.timedate1.policy:33
msgid "Set system timezone"
msgstr ""
#: src/timedate/org.freedesktop.timedate1.policy:34
msgid "Authentication is required to set the system timezone."
msgstr ""
#: src/timedate/org.freedesktop.timedate1.policy:43
msgid "Set RTC to local timezone or UTC"
msgstr ""
#: src/timedate/org.freedesktop.timedate1.policy:44
msgid ""
"Authentication is required to control whether the RTC stores the local or "
"UTC time."
msgstr ""
#: src/timedate/org.freedesktop.timedate1.policy:53
msgid "Turn network time synchronization on or off"
msgstr ""
#: src/timedate/org.freedesktop.timedate1.policy:54
msgid ""
"Authentication is required to control whether network time synchronization "
"shall be enabled."
msgstr ""
#: src/core/dbus-unit.c:362
msgid "Authentication is required to start '$(unit)'."
msgstr ""
#: src/core/dbus-unit.c:363
msgid "Authentication is required to stop '$(unit)'."
msgstr ""
#: src/core/dbus-unit.c:364
msgid "Authentication is required to reload '$(unit)'."
msgstr ""
#: src/core/dbus-unit.c:365 src/core/dbus-unit.c:366
msgid "Authentication is required to restart '$(unit)'."
msgstr ""
#: src/core/dbus-unit.c:538
msgid ""
"Authentication is required to send a UNIX signal to the processes of "
"'$(unit)'."
msgstr ""
#: src/core/dbus-unit.c:569
msgid "Authentication is required to reset the \"failed\" state of '$(unit)'."
msgstr ""
#: src/core/dbus-unit.c:602
msgid "Authentication is required to set properties on '$(unit)'."
msgstr ""
#: src/core/dbus-unit.c:711
msgid ""
"Authentication is required to delete files and directories associated with "
"'$(unit)'."
msgstr ""
#: src/core/dbus-unit.c:760
msgid ""
"Authentication is required to freeze or thaw the processes of '$(unit)' unit."
msgstr ""

View File

@ -976,6 +976,6 @@ int read_nr_open(void) {
return v;
}
/* If we fail, fallback to the hard-coded kernel limit of 1024 * 1024. */
/* If we fail, fall back to the hard-coded kernel limit of 1024 * 1024. */
return 1024 * 1024;
}

View File

@ -120,7 +120,7 @@ int rename_noreplace(int olddirfd, const char *oldpath, int newdirfd, const char
if (!IN_SET(errno, EINVAL, ENOSYS, ENOTTY, EPERM)) /* FAT returns EPERM on link()… */
return -errno;
/* OK, neither RENAME_NOREPLACE nor linkat()+unlinkat() worked. Let's then fallback to the racy TOCTOU
/* OK, neither RENAME_NOREPLACE nor linkat()+unlinkat() worked. Let's then fall back to the racy TOCTOU
* vulnerable accessat(F_OK) check followed by classic, replacing renameat(), we have nothing better. */
if (faccessat(newdirfd, newpath, F_OK, AT_SYMLINK_NOFOLLOW) >= 0)

View File

@ -173,7 +173,7 @@ int fd_is_mount_point(int fd, const char *filename, int flags) {
if (!ERRNO_IS_NOT_SUPPORTED(errno) && !ERRNO_IS_PRIVILEGE(errno))
return -errno;
/* If statx() is not available or forbidden, fallback to name_to_handle_at() below */
/* If statx() is not available or forbidden, fall back to name_to_handle_at() below */
} else if (FLAGS_SET(sx.stx_attributes_mask, STATX_ATTR_MOUNT_ROOT)) /* yay! */
return FLAGS_SET(sx.stx_attributes, STATX_ATTR_MOUNT_ROOT);
@ -186,7 +186,7 @@ int fd_is_mount_point(int fd, const char *filename, int flags) {
goto fallback_fdinfo;
else if (r == -EOPNOTSUPP)
/* This kernel or file system does not support name_to_handle_at(), hence let's see if the upper fs
* supports it (in which case it is a mount point), otherwise fallback to the traditional stat()
* supports it (in which case it is a mount point), otherwise fall back to the traditional stat()
* logic */
nosupp = true;
else if (r < 0)

View File

@ -4371,11 +4371,11 @@ const char *manager_get_confirm_spawn(Manager *m) {
*
* If the console suddenly disappear at the time our children will really it
* then they will simply fail to acquire it and a positive answer will be
* assumed. New children will fallback to /dev/console though.
* assumed. New children will fall back to /dev/console though.
*
* Note: TTYs are devices that can come and go any time, and frequently aren't
* available yet during early boot (consider a USB rs232 dongle...). If for any
* reason the configured console is not ready, we fallback to the default
* reason the configured console is not ready, we fall back to the default
* console. */
if (!m->confirm_spawn || path_equal(m->confirm_spawn, "/dev/console"))

View File

@ -650,7 +650,7 @@ static int clone_device_node(
*make_devnode = false;
}
/* We're about to fallback to bind-mounting the device
/* We're about to fall back to bind-mounting the device
* node. So create a dummy bind-mount target.
* Do not prepare device-node SELinux label (see issue 13762) */
r = mknod(dn, S_IFREG, 0);

View File

@ -1034,7 +1034,7 @@ static void service_search_main_pid(Service *s) {
assert(s);
/* If we know it anyway, don't ever fallback to unreliable
/* If we know it anyway, don't ever fall back to unreliable
* heuristics */
if (s->main_pid_known)
return;

View File

@ -95,7 +95,7 @@ for initrd in "${INITRD_OPTIONS[@]}"; do
fi
done
# If no initrd option is supplied, fallback to "initrd" which is
# If no initrd option is supplied, fall back to "initrd" which is
# the name used by dracut when generating it in its kernel-install hook
[[ ${#INITRD_OPTIONS[@]} == 0 ]] && INITRD_OPTIONS=( initrd )

View File

@ -166,7 +166,7 @@ static int do_umount(const char *user) {
int r;
/* The user may be already removed. So, first try to parse the string by parse_uid(),
* and if it fails, fallback to get_user_creds().*/
* and if it fails, fall back to get_user_creds().*/
if (parse_uid(user, &uid) < 0) {
r = get_user_creds(&user, &uid, NULL, NULL, NULL, 0);
if (r < 0)

View File

@ -72,10 +72,11 @@ int make_inaccessible_nodes(
{ "inaccessible/sock", S_IFSOCK | 0000 },
/* The following two are likely to fail if we lack the privs for it (for example in an userns
* environment, if CAP_SYS_MKNOD is missing, or if a device node policy prohibit major/minor of 0
* device nodes to be created). But that's entirely fine. Consumers of these files should carry
* fallback to use a different node then, for example <root>/inaccessible/sock, which is close
* enough in behaviour and semantics for most uses. */
* environment, if CAP_SYS_MKNOD is missing, or if a device node policy prohibits creation of
* device nodes with a major/minor of 0). But that's entirely fine. Consumers of these files
* should implement falling back to use a different node then, for example
* <root>/inaccessible/sock, which is close enough in behaviour and semantics for most uses.
*/
{ "inaccessible/chr", S_IFCHR | 0000 },
{ "inaccessible/blk", S_IFBLK | 0000 },
};

View File

@ -813,8 +813,8 @@ int dissect_image(
_cleanup_free_ char *o = NULL;
const char *options = NULL;
/* If the root has was set, then we won't fallback to a generic node, because the root hash
* decides */
/* If the root hash was set, then we won't fall back to a generic node, because the
* root hash decides. */
if (root_hash)
return -EADDRNOTAVAIL;
@ -1426,7 +1426,7 @@ static int verity_partition(
r = crypt_activate_by_volume_key(cd, name, root_hash, root_hash_size, CRYPT_ACTIVATE_READONLY);
/* libdevmapper can return EINVAL when the device is already in the activation stage.
* There's no way to distinguish this situation from a genuine error due to invalid
* parameters, so immediately fallback to activating the device with a unique name.
* parameters, so immediately fall back to activating the device with a unique name.
* Improvements in libcrypsetup can ensure this never happens: https://gitlab.com/cryptsetup/cryptsetup/-/merge_requests/96 */
if (r == -EINVAL && FLAGS_SET(flags, DISSECT_IMAGE_VERITY_SHARE))
return verity_partition(m, v, root_hash, root_hash_size, verity_data, NULL, root_hash_sig ?: hash_sig_from_file, root_hash_sig_size, flags & ~DISSECT_IMAGE_VERITY_SHARE, d);

View File

@ -6,7 +6,7 @@ int update_reboot_parameter_and_warn(const char *parameter, bool keep);
typedef enum RebootFlags {
REBOOT_LOG = 1 << 0, /* log about what we are going to do and all errors */
REBOOT_DRY_RUN = 1 << 1, /* return 0 right before actually doing the reboot */
REBOOT_FALLBACK = 1 << 2, /* fallback to plain reboot() if argument-based reboot doesn't work, isn't configured or doesn't apply otherwise */
REBOOT_FALLBACK = 1 << 2, /* fall back to plain reboot() if argument-based reboot doesn't work, isn't configured or doesn't apply otherwise */
} RebootFlags;
int read_reboot_parameter(char **parameter);

View File

@ -53,7 +53,7 @@ enum DnsOverTlsMode {
DNS_OVER_TLS_NO,
/* Try to connect using DNS-over-TLS, but if connection fails,
* fallback to using an unencrypted connection */
* fall back to using an unencrypted connection */
DNS_OVER_TLS_OPPORTUNISTIC,
/* Enforce DNS-over-TLS and require valid server certificates */

View File

@ -7,6 +7,7 @@
#include "acl-util.h"
#include "fd-util.h"
#include "format-util.h"
#include "string-util.h"
#include "tmpfile-util.h"
#include "user-util.h"
@ -18,6 +19,8 @@ static void test_add_acls_for_user(void) {
uid_t uid;
int r;
log_info("/* %s */", __func__);
fd = mkostemp_safe(fn);
assert_se(fd >= 0);
@ -39,6 +42,7 @@ static void test_add_acls_for_user(void) {
uid = getuid();
r = add_acls_for_user(fd, uid);
log_info_errno(r, "add_acls_for_user(%d, "UID_FMT"): %m", fd, uid);
assert_se(r >= 0);
cmd = strjoina("ls -l ", fn);

View File

@ -326,6 +326,38 @@ static void test_strjoina(void) {
assert_se(streq(actual, "foo"));
}
static void test_strjoin(void) {
char *actual;
actual = strjoin("", "foo", "bar");
assert_se(streq(actual, "foobar"));
mfree(actual);
actual = strjoin("foo", "bar", "baz");
assert_se(streq(actual, "foobarbaz"));
mfree(actual);
actual = strjoin("foo", "", "bar", "baz");
assert_se(streq(actual, "foobarbaz"));
mfree(actual);
actual = strjoin("foo", NULL);
assert_se(streq(actual, "foo"));
mfree(actual);
actual = strjoin(NULL, NULL);
assert_se(streq(actual, ""));
mfree(actual);
actual = strjoin(NULL, "foo");
assert_se(streq(actual, ""));
mfree(actual);
actual = strjoin("foo", NULL, "bar");
assert_se(streq(actual, "foo"));
mfree(actual);
}
static void test_strcmp_ptr(void) {
assert_se(strcmp_ptr(NULL, NULL) == 0);
assert_se(strcmp_ptr("", NULL) > 0);
@ -727,6 +759,7 @@ int main(int argc, char *argv[]) {
test_ascii_strlower();
test_strshorten();
test_strjoina();
test_strjoin();
test_strcmp_ptr();
test_foreach_word();
test_foreach_word_quoted();

View File

@ -372,7 +372,7 @@ fallback:
if (r < 0)
return log_device_debug_errno(dev_usb, r, "Failed to get idProduct attribute: %m");
/* fallback to USB vendor & device */
/* fall back to USB vendor & device */
if (vendor_str[0] == '\0') {
const char *usb_vendor;

View File

@ -1976,6 +1976,25 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities):
self.assertRegex(output, 'iif test1')
self.assertRegex(output, 'lookup 9')
run('ip rule delete iif test1 priority 111')
output = check_output('ip rule list iif test1 priority 111')
print(output)
self.assertEqual(output, '')
run(*networkctl_cmd, 'reconfigure', 'test1', env=env)
self.wait_online(['test1:degraded'])
output = check_output('ip rule list iif test1 priority 111')
print(output)
self.assertRegex(output, '111:')
self.assertRegex(output, 'from 192.168.100.18')
self.assertRegex(output, r'tos (0x08|throughput)\s')
self.assertRegex(output, 'iif test1')
self.assertRegex(output, 'oif test1')
self.assertRegex(output, 'lookup 7')
def test_routing_policy_rule_issue_11280(self):
copy_unit_to_networkd_unit_path('routing-policy-rule-test1.network', '11-dummy.netdev',
'routing-policy-rule-dummy98.network', '12-dummy.netdev')