1
0
mirror of https://github.com/systemd/systemd synced 2025-10-05 19:54:46 +02:00

Compare commits

..

No commits in common. "798c65cf1f4cc9d58969e1ed33708e24ff890b66" and "e6fda8f67587ee58afc2ae9391db4388ed60f24d" have entirely different histories.

8 changed files with 64 additions and 951 deletions

View File

@ -756,19 +756,14 @@
If set to <option>no</option> (the default), the service will If set to <option>no</option> (the default), the service will
not be restarted. If set to <option>on-success</option>, it not be restarted. If set to <option>on-success</option>, it
will be restarted only when the service process exits cleanly. will be restarted only when the service process exits cleanly.
In this context, a clean exit means any of the following: In this context, a clean exit means an exit code of 0, or one
<itemizedlist> of the signals
<listitem><simpara>exit code of 0;</simpara></listitem> <constant>SIGHUP</constant>,
<listitem><simpara>for types other than <constant>SIGINT</constant>,
<varname>Type=oneshot</varname>, one of the signals <constant>SIGTERM</constant> or
<constant>SIGHUP</constant>, <constant>SIGPIPE</constant>, and
<constant>SIGINT</constant>, additionally, exit statuses and signals specified in
<constant>SIGTERM</constant>, or <varname>SuccessExitStatus=</varname>. If set to
<constant>SIGPIPE</constant>;</simpara></listitem>
<listitem><simpara>exit statuses and signals specified in
<varname>SuccessExitStatus=</varname>.</simpara></listitem>
</itemizedlist>
If set to
<option>on-failure</option>, the service will be restarted <option>on-failure</option>, the service will be restarted
when the process exits with a non-zero exit code, is when the process exits with a non-zero exit code, is
terminated by a signal (including on core dump, but excluding terminated by a signal (including on core dump, but excluding
@ -890,7 +885,7 @@
<listitem><para>Takes a list of exit status definitions that, when returned by the main service <listitem><para>Takes a list of exit status definitions that, when returned by the main service
process, will be considered successful termination, in addition to the normal successful exit status process, will be considered successful termination, in addition to the normal successful exit status
0 and, except for <varname>Type=oneshot</varname>, the signals <constant>SIGHUP</constant>, <constant>SIGINT</constant>, 0 and the signals <constant>SIGHUP</constant>, <constant>SIGINT</constant>,
<constant>SIGTERM</constant>, and <constant>SIGPIPE</constant>. Exit status definitions can be <constant>SIGTERM</constant>, and <constant>SIGPIPE</constant>. Exit status definitions can be
numeric termination statuses, termination status names, or termination signal names, separated by numeric termination statuses, termination status names, or termination signal names, separated by
spaces. See the Process Exit Codes section in spaces. See the Process Exit Codes section in

View File

@ -1037,13 +1037,13 @@
<varname>Restart=</varname> logic.</para> <varname>Restart=</varname> logic.</para>
<para>Note that units which are configured for <varname>Restart=</varname>, and which reach the start <para>Note that units which are configured for <varname>Restart=</varname>, and which reach the start
limit are not attempted to be restarted anymore; however, they may still be restarted manually or limit are not attempted to be restarted anymore; however, they may still be restarted manually at a
from a timer or socket at a later point, after the <replaceable>interval</replaceable> has passed. later point, after the <replaceable>interval</replaceable> has passed. From that point on, the
From that point on, the restart logic is activated again. <command>systemctl reset-failed</command> restart logic is activated again. <command>systemctl reset-failed</command> will cause the restart
will cause the restart rate counter for a service to be flushed, which is useful if the administrator rate counter for a service to be flushed, which is useful if the administrator wants to manually
wants to manually start a unit and the start limit interferes with that. Rate-limiting is enforced start a unit and the start limit interferes with that. Rate-limiting is enforced after any unit
after any unit condition checks are executed, and hence unit activations with failing conditions do condition checks are executed, and hence unit activations with failing conditions do not count
not count towards the rate limit.</para> towards the rate limit.</para>
<para>When a unit is unloaded due to the garbage collection logic (see above) its rate limit counters <para>When a unit is unloaded due to the garbage collection logic (see above) its rate limit counters
are flushed out too. This means that configuring start rate limiting for a unit that is not are flushed out too. This means that configuring start rate limiting for a unit that is not

View File

@ -30,4 +30,3 @@ zh_TW
pa pa
kab kab
si si
nl

849
po/nl.po
View File

@ -1,849 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the systemd package.
# Pjotr Vertaalt <pjotrvertaalt@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: systemd\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-08 17:48+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\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 applications to inhibit system handling of the reboot key"
msgstr ""
#: src/login/org.freedesktop.login1.policy:118
msgid ""
"Authentication is required for an application to inhibit system handling of "
"the reboot key."
msgstr ""
#: src/login/org.freedesktop.login1.policy:128
msgid "Allow non-logged-in user to run programs"
msgstr ""
#: src/login/org.freedesktop.login1.policy:129
msgid "Explicit request is required to run programs as a non-logged-in user."
msgstr ""
#: src/login/org.freedesktop.login1.policy:138
msgid "Allow non-logged-in users to run programs"
msgstr ""
#: src/login/org.freedesktop.login1.policy:139
msgid "Authentication is required to run programs as a non-logged-in user."
msgstr ""
#: src/login/org.freedesktop.login1.policy:148
msgid "Allow attaching devices to seats"
msgstr ""
#: src/login/org.freedesktop.login1.policy:149
msgid "Authentication is required to attach a device to a seat."
msgstr ""
#: src/login/org.freedesktop.login1.policy:159
msgid "Flush device to seat attachments"
msgstr ""
#: src/login/org.freedesktop.login1.policy:160
msgid "Authentication is required to reset how devices are attached to seats."
msgstr ""
#: src/login/org.freedesktop.login1.policy:169
msgid "Power off the system"
msgstr ""
#: src/login/org.freedesktop.login1.policy:170
msgid "Authentication is required to power off the system."
msgstr ""
#: src/login/org.freedesktop.login1.policy:180
msgid "Power off the system while other users are logged in"
msgstr ""
#: src/login/org.freedesktop.login1.policy:181
msgid ""
"Authentication is required to power off the system while other users are "
"logged in."
msgstr ""
#: src/login/org.freedesktop.login1.policy:191
msgid "Power off the system while an application is inhibiting this"
msgstr ""
#: src/login/org.freedesktop.login1.policy:192
msgid ""
"Authentication is required to power off the system while an application is "
"inhibiting this."
msgstr ""
#: src/login/org.freedesktop.login1.policy:202
msgid "Reboot the system"
msgstr ""
#: src/login/org.freedesktop.login1.policy:203
msgid "Authentication is required to reboot the system."
msgstr ""
#: src/login/org.freedesktop.login1.policy:213
msgid "Reboot the system while other users are logged in"
msgstr ""
#: src/login/org.freedesktop.login1.policy:214
msgid ""
"Authentication is required to reboot the system while other users are logged "
"in."
msgstr ""
#: src/login/org.freedesktop.login1.policy:224
msgid "Reboot the system while an application is inhibiting this"
msgstr ""
#: src/login/org.freedesktop.login1.policy:225
msgid ""
"Authentication is required to reboot the system while an application is "
"inhibiting this."
msgstr ""
#: src/login/org.freedesktop.login1.policy:235
msgid "Halt the system"
msgstr ""
#: src/login/org.freedesktop.login1.policy:236
msgid "Authentication is required to halt the system."
msgstr ""
#: src/login/org.freedesktop.login1.policy:246
msgid "Halt the system while other users are logged in"
msgstr ""
#: src/login/org.freedesktop.login1.policy:247
msgid ""
"Authentication is required to halt the system while other users are logged "
"in."
msgstr ""
#: src/login/org.freedesktop.login1.policy:257
msgid "Halt the system while an application is inhibiting this"
msgstr ""
#: src/login/org.freedesktop.login1.policy:258
msgid ""
"Authentication is required to halt the system while an application is "
"inhibiting this."
msgstr ""
#: src/login/org.freedesktop.login1.policy:268
msgid "Suspend the system"
msgstr ""
#: src/login/org.freedesktop.login1.policy:269
msgid "Authentication is required to suspend the system."
msgstr ""
#: src/login/org.freedesktop.login1.policy:278
msgid "Suspend the system while other users are logged in"
msgstr ""
#: src/login/org.freedesktop.login1.policy:279
msgid ""
"Authentication is required to suspend the system while other users are "
"logged in."
msgstr ""
#: src/login/org.freedesktop.login1.policy:289
msgid "Suspend the system while an application is inhibiting this"
msgstr ""
#: src/login/org.freedesktop.login1.policy:290
msgid ""
"Authentication is required to suspend the system while an application is "
"inhibiting this."
msgstr ""
#: src/login/org.freedesktop.login1.policy:300
msgid "Hibernate the system"
msgstr ""
#: src/login/org.freedesktop.login1.policy:301
msgid "Authentication is required to hibernate the system."
msgstr ""
#: src/login/org.freedesktop.login1.policy:310
msgid "Hibernate the system while other users are logged in"
msgstr ""
#: src/login/org.freedesktop.login1.policy:311
msgid ""
"Authentication is required to hibernate the system while other users are "
"logged in."
msgstr ""
#: src/login/org.freedesktop.login1.policy:321
msgid "Hibernate the system while an application is inhibiting this"
msgstr ""
#: src/login/org.freedesktop.login1.policy:322
msgid ""
"Authentication is required to hibernate the system while an application is "
"inhibiting this."
msgstr ""
#: src/login/org.freedesktop.login1.policy:332
msgid "Manage active sessions, users and seats"
msgstr ""
#: src/login/org.freedesktop.login1.policy:333
msgid "Authentication is required to manage active sessions, users and seats."
msgstr ""
#: src/login/org.freedesktop.login1.policy:342
msgid "Lock or unlock active sessions"
msgstr ""
#: src/login/org.freedesktop.login1.policy:343
msgid "Authentication is required to lock or unlock active sessions."
msgstr ""
#: src/login/org.freedesktop.login1.policy:352
msgid "Set the reboot \"reason\" in the kernel"
msgstr ""
#: src/login/org.freedesktop.login1.policy:353
msgid "Authentication is required to set the reboot \"reason\" in the kernel."
msgstr ""
#: src/login/org.freedesktop.login1.policy:363
msgid "Indicate to the firmware to boot to setup interface"
msgstr ""
#: src/login/org.freedesktop.login1.policy:364
msgid ""
"Authentication is required to indicate to the firmware to boot to setup "
"interface."
msgstr ""
#: src/login/org.freedesktop.login1.policy:374
msgid "Indicate to the boot loader to boot to the boot loader menu"
msgstr ""
#: src/login/org.freedesktop.login1.policy:375
msgid ""
"Authentication is required to indicate to the boot loader to boot to the "
"boot loader menu."
msgstr ""
#: src/login/org.freedesktop.login1.policy:385
msgid "Indicate to the boot loader to boot a specific entry"
msgstr ""
#: src/login/org.freedesktop.login1.policy:386
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:396
msgid "Set a wall message"
msgstr ""
#: src/login/org.freedesktop.login1.policy:397
msgid "Authentication is required to set a wall message"
msgstr ""
#: src/login/org.freedesktop.login1.policy:406
msgid "Change Session"
msgstr ""
#: src/login/org.freedesktop.login1.policy:407
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:359
msgid "Authentication is required to start '$(unit)'."
msgstr ""
#: src/core/dbus-unit.c:360
msgid "Authentication is required to stop '$(unit)'."
msgstr ""
#: src/core/dbus-unit.c:361
msgid "Authentication is required to reload '$(unit)'."
msgstr ""
#: src/core/dbus-unit.c:362 src/core/dbus-unit.c:363
msgid "Authentication is required to restart '$(unit)'."
msgstr ""
#: src/core/dbus-unit.c:535
msgid ""
"Authentication is required to send a UNIX signal to the processes of "
"'$(unit)'."
msgstr ""
#: src/core/dbus-unit.c:566
msgid "Authentication is required to reset the \"failed\" state of '$(unit)'."
msgstr ""
#: src/core/dbus-unit.c:599
msgid "Authentication is required to set properties on '$(unit)'."
msgstr ""
#: src/core/dbus-unit.c:708
msgid ""
"Authentication is required to delete files and directories associated with "
"'$(unit)'."
msgstr ""
#: src/core/dbus-unit.c:757
msgid ""
"Authentication is required to freeze or thaw the processes of '$(unit)' unit."
msgstr ""

View File

@ -3808,15 +3808,10 @@ static int epoll_wait_usec(
int maxevents, int maxevents,
usec_t timeout) { usec_t timeout) {
int r, msec;
#if 0
static bool epoll_pwait2_absent = false; static bool epoll_pwait2_absent = false;
int r, msec;
/* A wrapper that uses epoll_pwait2() if available, and falls back to epoll_wait() if not. /* A wrapper that uses epoll_pwait2() if available, and falls back to epoll_wait() if not */
*
* FIXME: this is temporarily disabled until epoll_pwait2() becomes more widely available.
* See https://github.com/systemd/systemd/pull/18973 and
* https://github.com/systemd/systemd/issues/19052. */
if (!epoll_pwait2_absent && timeout != USEC_INFINITY) { if (!epoll_pwait2_absent && timeout != USEC_INFINITY) {
struct timespec ts; struct timespec ts;
@ -3834,7 +3829,6 @@ static int epoll_wait_usec(
epoll_pwait2_absent = true; epoll_pwait2_absent = true;
} }
#endif
if (timeout == USEC_INFINITY) if (timeout == USEC_INFINITY)
msec = -1; msec = -1;

View File

@ -1101,7 +1101,7 @@ int calendar_spec_from_string(const char *p, CalendarSpec **spec) {
return 0; return 0;
} }
static int find_end_of_month(const struct tm *tm, bool utc, int day) { static int find_end_of_month(struct tm *tm, bool utc, int day) {
struct tm t = *tm; struct tm t = *tm;
t.tm_mon++; t.tm_mon++;
@ -1114,39 +1114,28 @@ static int find_end_of_month(const struct tm *tm, bool utc, int day) {
return t.tm_mday; return t.tm_mday;
} }
static int find_matching_component( static int find_matching_component(const CalendarSpec *spec, const CalendarComponent *c,
const CalendarSpec *spec, struct tm *tm, int *val) {
const CalendarComponent *c, const CalendarComponent *p = c;
const struct tm *tm, /* tm is only used for end-of-month calculations */ int start, stop, d = -1;
int *val) {
int d = -1, r;
bool d_set = false; bool d_set = false;
int r;
assert(val); assert(val);
/* Finds the *earliest* matching time specified by one of the CalendarCompoment items in chain c.
* If no matches can be found, returns -ENOENT.
* Otherwise, updates *val to the matching time. 1 is returned if *val was changed, 0 otherwise.
*/
if (!c) if (!c)
return 0; return 0;
bool end_of_month = spec->end_of_month && c == spec->day;
while (c) { while (c) {
int start, stop; start = c->start;
stop = c->stop;
if (end_of_month) { if (spec->end_of_month && p == spec->day) {
start = find_end_of_month(tm, spec->utc, c->start); start = find_end_of_month(tm, spec->utc, start);
stop = find_end_of_month(tm, spec->utc, c->stop); stop = find_end_of_month(tm, spec->utc, stop);
if (stop > 0) if (stop > 0)
SWAP_TWO(start, stop); SWAP_TWO(start, stop);
} else {
start = c->start;
stop = c->stop;
} }
if (start >= *val) { if (start >= *val) {
@ -1195,18 +1184,15 @@ static int tm_within_bounds(struct tm *tm, bool utc) {
return negative_errno(); return negative_errno();
/* Did any normalization take place? If so, it was out of bounds before */ /* Did any normalization take place? If so, it was out of bounds before */
int cmp = CMP(t.tm_year, tm->tm_year) ?: bool good = t.tm_year == tm->tm_year &&
CMP(t.tm_mon, tm->tm_mon) ?: t.tm_mon == tm->tm_mon &&
CMP(t.tm_mday, tm->tm_mday) ?: t.tm_mday == tm->tm_mday &&
CMP(t.tm_hour, tm->tm_hour) ?: t.tm_hour == tm->tm_hour &&
CMP(t.tm_min, tm->tm_min) ?: t.tm_min == tm->tm_min &&
CMP(t.tm_sec, tm->tm_sec); t.tm_sec == tm->tm_sec;
if (!good)
if (cmp < 0)
return -EDEADLK; /* Refuse to go backward */
if (cmp > 0)
*tm = t; *tm = t;
return cmp == 0; return good;
} }
static bool matches_weekday(int weekdays_bits, const struct tm *tm, bool utc) { static bool matches_weekday(int weekdays_bits, const struct tm *tm, bool utc) {
@ -1224,10 +1210,6 @@ static bool matches_weekday(int weekdays_bits, const struct tm *tm, bool utc) {
return (weekdays_bits & (1 << k)); return (weekdays_bits & (1 << k));
} }
/* A safety valve: if we get stuck in the calculation, return an error.
* C.f. https://bugzilla.redhat.com/show_bug.cgi?id=1941335. */
#define MAX_CALENDAR_ITERATIONS 1000
static int find_next(const CalendarSpec *spec, struct tm *tm, usec_t *usec) { static int find_next(const CalendarSpec *spec, struct tm *tm, usec_t *usec) {
struct tm c; struct tm c;
int tm_usec; int tm_usec;
@ -1241,7 +1223,7 @@ static int find_next(const CalendarSpec *spec, struct tm *tm, usec_t *usec) {
c = *tm; c = *tm;
tm_usec = *usec; tm_usec = *usec;
for (unsigned iteration = 0; iteration < MAX_CALENDAR_ITERATIONS; iteration++) { for (;;) {
/* Normalize the current date */ /* Normalize the current date */
(void) mktime_or_timegm(&c, spec->utc); (void) mktime_or_timegm(&c, spec->utc);
c.tm_isdst = spec->dst; c.tm_isdst = spec->dst;
@ -1338,14 +1320,6 @@ static int find_next(const CalendarSpec *spec, struct tm *tm, usec_t *usec) {
*usec = tm_usec; *usec = tm_usec;
return 0; return 0;
} }
/* It seems we entered an infinite loop. Let's gracefully return an error instead of hanging or
* aborting. This code is also exercised when timers.target is brought up during early boot, so
* aborting here is problematic and hard to diagnose for users. */
_cleanup_free_ char *s = NULL;
(void) calendar_spec_to_string(spec, &s);
return log_warning_errno(SYNTHETIC_ERRNO(EDEADLK),
"Infinite loop in calendar calculation: %s", strna(s));
} }
static int calendar_spec_next_usec_impl(const CalendarSpec *spec, usec_t usec, usec_t *ret_next) { static int calendar_spec_next_usec_impl(const CalendarSpec *spec, usec_t usec, usec_t *ret_next) {

View File

@ -2,11 +2,11 @@
#include "alloc-util.h" #include "alloc-util.h"
#include "calendarspec.h" #include "calendarspec.h"
#include "env-util.h"
#include "errno-util.h" #include "errno-util.h"
#include "string-util.h" #include "string-util.h"
#include "util.h"
static void _test_one(int line, const char *input, const char *output) { static void test_one(const char *input, const char *output) {
CalendarSpec *c; CalendarSpec *c;
_cleanup_free_ char *p = NULL, *q = NULL; _cleanup_free_ char *p = NULL, *q = NULL;
usec_t u; usec_t u;
@ -16,13 +16,13 @@ static void _test_one(int line, const char *input, const char *output) {
assert_se(calendar_spec_from_string(input, &c) >= 0); assert_se(calendar_spec_from_string(input, &c) >= 0);
assert_se(calendar_spec_to_string(c, &p) >= 0); assert_se(calendar_spec_to_string(c, &p) >= 0);
log_info("line %d: \"%s\"\"%s\"", line, input, p); printf("\"%s\"\"%s\"\n", input, p);
assert_se(streq(p, output)); assert_se(streq(p, output));
u = now(CLOCK_REALTIME); u = now(CLOCK_REALTIME);
r = calendar_spec_next_usec(c, u, &u); r = calendar_spec_next_usec(c, u, &u);
log_info("Next: %s", r < 0 ? strerror_safe(r) : format_timestamp(buf, sizeof buf, u)); printf("Next: %s\n", r < 0 ? strerror_safe(r) : format_timestamp(buf, sizeof(buf), u));
calendar_spec_free(c); calendar_spec_free(c);
assert_se(calendar_spec_from_string(p, &c) >= 0); assert_se(calendar_spec_from_string(p, &c) >= 0);
@ -31,9 +31,8 @@ static void _test_one(int line, const char *input, const char *output) {
assert_se(streq(q, p)); assert_se(streq(q, p));
} }
#define test_one(input, output) _test_one(__LINE__, input, output)
static void _test_next(int line, const char *input, const char *new_tz, usec_t after, usec_t expect) { static void test_next(const char *input, const char *new_tz, usec_t after, usec_t expect) {
CalendarSpec *c; CalendarSpec *c;
usec_t u; usec_t u;
char *old_tz; char *old_tz;
@ -44,19 +43,22 @@ static void _test_next(int line, const char *input, const char *new_tz, usec_t a
if (old_tz) if (old_tz)
old_tz = strdupa(old_tz); old_tz = strdupa(old_tz);
if (!isempty(new_tz)) if (new_tz) {
new_tz = strjoina(":", new_tz); char *colon_tz;
assert_se(set_unset_env("TZ", new_tz, true) == 0); colon_tz = strjoina(":", new_tz);
assert_se(setenv("TZ", colon_tz, 1) >= 0);
} else
assert_se(unsetenv("TZ") >= 0);
tzset(); tzset();
assert_se(calendar_spec_from_string(input, &c) >= 0); assert_se(calendar_spec_from_string(input, &c) >= 0);
log_info("line %d: \"%s\" new_tz=%s", line, input, strnull(new_tz)); printf("\"%s\"\n", input);
u = after; u = after;
r = calendar_spec_next_usec(c, after, &u); r = calendar_spec_next_usec(c, after, &u);
log_info("At: %s", r < 0 ? strerror_safe(r) : format_timestamp_style(buf, sizeof buf, u, TIMESTAMP_US)); printf("At: %s\n", r < 0 ? strerror_safe(r) : format_timestamp_style(buf, sizeof buf, u, TIMESTAMP_US));
if (expect != USEC_INFINITY) if (expect != USEC_INFINITY)
assert_se(r >= 0 && u == expect); assert_se(r >= 0 && u == expect);
else else
@ -64,10 +66,12 @@ static void _test_next(int line, const char *input, const char *new_tz, usec_t a
calendar_spec_free(c); calendar_spec_free(c);
assert_se(set_unset_env("TZ", old_tz, true) == 0); if (old_tz)
assert_se(setenv("TZ", old_tz, 1) >= 0);
else
assert_se(unsetenv("TZ") >= 0);
tzset(); tzset();
} }
#define test_next(input, new_tz, after, expect) _test_next(__LINE__, input,new_tz,after,expect)
static void test_timestamp(void) { static void test_timestamp(void) {
char buf[FORMAT_TIMESTAMP_MAX]; char buf[FORMAT_TIMESTAMP_MAX];
@ -79,12 +83,12 @@ static void test_timestamp(void) {
x = now(CLOCK_REALTIME); x = now(CLOCK_REALTIME);
assert_se(format_timestamp_style(buf, sizeof buf, x, TIMESTAMP_US)); assert_se(format_timestamp_style(buf, sizeof(buf), x, TIMESTAMP_US));
log_info("%s", buf); printf("%s\n", buf);
assert_se(calendar_spec_from_string(buf, &c) >= 0); assert_se(calendar_spec_from_string(buf, &c) >= 0);
assert_se(calendar_spec_to_string(c, &t) >= 0); assert_se(calendar_spec_to_string(c, &t) >= 0);
calendar_spec_free(c); calendar_spec_free(c);
log_info("%s", t); printf("%s\n", t);
assert_se(parse_timestamp(t, &y) >= 0); assert_se(parse_timestamp(t, &y) >= 0);
assert_se(y == x); assert_se(y == x);
@ -100,11 +104,11 @@ static void test_hourly_bug_4031(void) {
n = now(CLOCK_REALTIME); n = now(CLOCK_REALTIME);
assert_se((r = calendar_spec_next_usec(c, n, &u)) >= 0); assert_se((r = calendar_spec_next_usec(c, n, &u)) >= 0);
log_info("Now: %s (%"PRIu64")", format_timestamp_style(buf, sizeof buf, n, TIMESTAMP_US), n); printf("Now: %s (%"PRIu64")\n", format_timestamp_style(buf, sizeof buf, n, TIMESTAMP_US), n);
log_info("Next hourly: %s (%"PRIu64")", r < 0 ? strerror_safe(r) : format_timestamp_style(buf, sizeof buf, u, TIMESTAMP_US), u); printf("Next hourly: %s (%"PRIu64")\n", r < 0 ? strerror_safe(r) : format_timestamp_style(buf, sizeof buf, u, TIMESTAMP_US), u);
assert_se((r = calendar_spec_next_usec(c, u, &w)) >= 0); assert_se((r = calendar_spec_next_usec(c, u, &w)) >= 0);
log_info("Next hourly: %s (%"PRIu64")", r < 0 ? strerror_safe(r) : format_timestamp_style(zaf, sizeof zaf, w, TIMESTAMP_US), w); printf("Next hourly: %s (%"PRIu64")\n", r < 0 ? strerror_safe(r) : format_timestamp_style(zaf, sizeof zaf, w, TIMESTAMP_US), w);
assert_se(n < u); assert_se(n < u);
assert_se(u <= n + USEC_PER_HOUR); assert_se(u <= n + USEC_PER_HOUR);
@ -205,18 +209,15 @@ int main(int argc, char* argv[]) {
test_next("2017-08-06 9..17/2:00 UTC", "", 1502029800000000, 1502031600000000); test_next("2017-08-06 9..17/2:00 UTC", "", 1502029800000000, 1502031600000000);
test_next("2016-12-* 3..21/6:00 UTC", "", 1482613200000001, 1482634800000000); test_next("2016-12-* 3..21/6:00 UTC", "", 1482613200000001, 1482634800000000);
test_next("2017-09-24 03:30:00 Pacific/Auckland", "", 12345, 1506177000000000); test_next("2017-09-24 03:30:00 Pacific/Auckland", "", 12345, 1506177000000000);
/* Due to daylight saving time - 2017-09-24 02:30:00 does not exist */ // Due to daylight saving time - 2017-09-24 02:30:00 does not exist
test_next("2017-09-24 02:30:00 Pacific/Auckland", "", 12345, -1); test_next("2017-09-24 02:30:00 Pacific/Auckland", "", 12345, -1);
test_next("2017-04-02 02:30:00 Pacific/Auckland", "", 12345, 1491053400000000); test_next("2017-04-02 02:30:00 Pacific/Auckland", "", 12345, 1491053400000000);
/* Confirm that even though it's a time change here (backward) 02:30 happens only once */ // Confirm that even though it's a time change here (backward) 02:30 happens only once
test_next("2017-04-02 02:30:00 Pacific/Auckland", "", 1491053400000000, -1); test_next("2017-04-02 02:30:00 Pacific/Auckland", "", 1491053400000000, -1);
test_next("2017-04-02 03:30:00 Pacific/Auckland", "", 12345, 1491060600000000); test_next("2017-04-02 03:30:00 Pacific/Auckland", "", 12345, 1491060600000000);
/* Confirm that timezones in the Spec work regardless of current timezone */ // Confirm that timezones in the Spec work regardless of current timezone
test_next("2017-09-09 20:42:00 Pacific/Auckland", "", 12345, 1504946520000000); test_next("2017-09-09 20:42:00 Pacific/Auckland", "", 12345, 1504946520000000);
test_next("2017-09-09 20:42:00 Pacific/Auckland", "EET", 12345, 1504946520000000); test_next("2017-09-09 20:42:00 Pacific/Auckland", "EET", 12345, 1504946520000000);
/* Check that we don't start looping if mktime() moves us backwards */
test_next("Sun *-*-* 01:00:00 Europe/Dublin", "", 1616412478000000, 1617494400000000);
test_next("Sun *-*-* 01:00:00 Europe/Dublin", "IST", 1616412478000000, 1617494400000000);
assert_se(calendar_spec_from_string("test", &c) < 0); assert_se(calendar_spec_from_string("test", &c) < 0);
assert_se(calendar_spec_from_string(" utc", &c) < 0); assert_se(calendar_spec_from_string(" utc", &c) < 0);

View File

@ -1340,7 +1340,6 @@ install_zoneinfo() {
inst_any /usr/share/zoneinfo/Asia/Vladivostok inst_any /usr/share/zoneinfo/Asia/Vladivostok
inst_any /usr/share/zoneinfo/Australia/Sydney inst_any /usr/share/zoneinfo/Australia/Sydney
inst_any /usr/share/zoneinfo/Europe/Berlin inst_any /usr/share/zoneinfo/Europe/Berlin
inst_any /usr/share/zoneinfo/Europe/Dublin
inst_any /usr/share/zoneinfo/Europe/Kiev inst_any /usr/share/zoneinfo/Europe/Kiev
inst_any /usr/share/zoneinfo/Pacific/Auckland inst_any /usr/share/zoneinfo/Pacific/Auckland
inst_any /usr/share/zoneinfo/Pacific/Honolulu inst_any /usr/share/zoneinfo/Pacific/Honolulu