Compare commits
19 Commits
47b04ef632
...
346543d6f9
Author | SHA1 | Date |
---|---|---|
Christian Göttsche | 346543d6f9 | |
Lennart Poettering | e4ec78206c | |
Lennart Poettering | 58cf204730 | |
Zbigniew Jędrzejewski-Szmek | 47be8ddcee | |
Zbigniew Jędrzejewski-Szmek | 6ee37b1a7d | |
Lennart Poettering | 64a5384fd2 | |
afg | ae0d36c161 | |
Lennart Poettering | 278fdd064d | |
Lennart Poettering | bf6e5c574b | |
Lennart Poettering | 643bb92408 | |
Lennart Poettering | fccb48b286 | |
Lennart Poettering | 242c1c075a | |
Lennart Poettering | 31abedbb03 | |
Lennart Poettering | 3b684be04b | |
Lennart Poettering | e77b146f82 | |
Lennart Poettering | 73484ecff9 | |
Gogo Gogsi | 0845afbec8 | |
Yuri Chornoivan | 892edd1e87 | |
Julien Humbert | 582b66e1c6 |
85
NEWS
85
NEWS
|
@ -1,5 +1,90 @@
|
||||||
systemd System and Service Manager
|
systemd System and Service Manager
|
||||||
|
|
||||||
|
CHANGES WITH 247 in spe:
|
||||||
|
|
||||||
|
* KERNEL API INCOMPATIBILTY: Linux 4.12 introduced two new uevents
|
||||||
|
"bind" and "unbind" to the Linux device model. When this kernel
|
||||||
|
change was made, systemd-udevd was only minimally updated to handle
|
||||||
|
and propagate these new event types. The introduction of these new
|
||||||
|
uevents (which are typically generated for USB devices and devices
|
||||||
|
needing a firmware upload before being functional) resulted in a
|
||||||
|
number of software issues, we so far didn't address (mostly because
|
||||||
|
there was hope the kernel maintainers would themeselves address these
|
||||||
|
issues in some form – which did not happen). To handle them properly,
|
||||||
|
many (if not most) udev rules files shipped in various packages need
|
||||||
|
updating, and so do many programs that monitor or enumerate devices
|
||||||
|
with libudev or sd-device, or otherwise process uevents. Please note
|
||||||
|
that this incompatibility is not fault of systemd or udev, but caused
|
||||||
|
by an incompatible kernel change that happened back in Linux 4.12.
|
||||||
|
|
||||||
|
To minimize issues resulting from this kernel change (but not avoid
|
||||||
|
them entirely) starting with systemd-udevd 247 the udev "tags"
|
||||||
|
concept (which is a concept for marking and filtering devices during
|
||||||
|
enumeration and monitoring) has been reworked: udev tags are now
|
||||||
|
"sticky", meaning that once a tag is assigned to a device it will not
|
||||||
|
be removed from the device again until the device itself is removed
|
||||||
|
(i.e. unplugged). This makes sure that any application monitoring
|
||||||
|
devices that match a specific tag is guaranteed to both see uevents
|
||||||
|
where the device starts being relevant, and those where it stops
|
||||||
|
being relevant (the latter now regularly happening due to the new
|
||||||
|
"unbind" uevent type). The udev tags concept is hence now a concept
|
||||||
|
tied to a *device* instead of a device *event* — unlike for example
|
||||||
|
udev properties whose lifecycle (as before) is generally tied to a
|
||||||
|
device event, meaning that the previously determined properties are
|
||||||
|
forgotten whenever a new uevent is processed.
|
||||||
|
|
||||||
|
With the newly redefined udev tags concept, sometimes it's necessary
|
||||||
|
to determine which tags are the ones applied by the most recent
|
||||||
|
uevent/database update, in order to discern them from those
|
||||||
|
originating from earlier uevents/database updates of the same
|
||||||
|
device. To accommodate for this a new automatic property CURRENT_TAGS
|
||||||
|
has been added that works similar to the existing TAGS property but
|
||||||
|
only lists tags set by the most recent uevent/database
|
||||||
|
update. Similar, the libudev/sd-device API has been updated with new
|
||||||
|
functions to enumerate these 'current' tags, in addition to the
|
||||||
|
existing APIs that now enumerate the 'sticky' ones.
|
||||||
|
|
||||||
|
To properly handle "bind"/"unbind" on Linux 4.12 and newer it is
|
||||||
|
essential that all udev rules files and applications are updated to
|
||||||
|
handle the new events. Specifically:
|
||||||
|
|
||||||
|
• All rule files that currently use a header guard similar to
|
||||||
|
ACTION!="add|change",GOTO="xyz_end" should be updated to use
|
||||||
|
ACTION=="remove",GOTO="xyz_end" instead, so that the
|
||||||
|
properties/tags they add are also applied whenever "bind" (or
|
||||||
|
"unbind") is seen. (This is most important for all physical device
|
||||||
|
types — as that's for which "bind" and "unbind" are currently
|
||||||
|
usually generated, for all other device types this change is still
|
||||||
|
recommended but not as important — but certainly prepares for
|
||||||
|
future kernel uevent type additions).
|
||||||
|
|
||||||
|
• Similar, all code monitoring devices that contains an 'if' branch
|
||||||
|
discerning the "add" + "change" uevent actions from all other
|
||||||
|
uevents actions (i.e. considering devices only relevant after "add"
|
||||||
|
or "change", and irrelevant on all other events) should be reworked
|
||||||
|
to instead negatively check for "remove" only (i.e. considering
|
||||||
|
devices relevant after all event types, except for "remove", which
|
||||||
|
invalidates the device). Note that this also means that devices
|
||||||
|
should be considered relevant on "unbind", even though conceptually
|
||||||
|
this — in some form — invalidates the device. Since the precise
|
||||||
|
effect of "unbind" is not generically defined, devices should be
|
||||||
|
considered relevant even after "unbind", however I/O errors
|
||||||
|
accessing the device should then be handled gracefully.
|
||||||
|
|
||||||
|
• Any code that uses device tags for deciding whether a device is
|
||||||
|
relevant or not most likely needs to be updated to use the new
|
||||||
|
udev_device_has_current_tag() API (or sd_device_has_current_tag()
|
||||||
|
in case sd-device is used), to check whether the tag is set
|
||||||
|
at the moment an uevent is seen (as opposed to the existing
|
||||||
|
udev_device_has_tag() API which checks if the tag ever existed on
|
||||||
|
the device, following the API concept redefinition explained
|
||||||
|
above).
|
||||||
|
|
||||||
|
We are very sorry for this breakage and the requirement to update
|
||||||
|
packages using these interfaces. We'd again like to underline that
|
||||||
|
this is not caused by systemd/udev changes, but result of a kernel
|
||||||
|
behaviour change.
|
||||||
|
|
||||||
CHANGES WITH 246:
|
CHANGES WITH 246:
|
||||||
|
|
||||||
* The service manager gained basic support for cgroup v2 freezer. Units
|
* The service manager gained basic support for cgroup v2 freezer. Units
|
||||||
|
|
|
@ -21,9 +21,11 @@
|
||||||
|
|
||||||
<refnamediv>
|
<refnamediv>
|
||||||
<refname>udev_device_has_tag</refname>
|
<refname>udev_device_has_tag</refname>
|
||||||
|
<refname>udev_device_has_current_tag</refname>
|
||||||
<refname>udev_device_get_devlinks_list_entry</refname>
|
<refname>udev_device_get_devlinks_list_entry</refname>
|
||||||
<refname>udev_device_get_properties_list_entry</refname>
|
<refname>udev_device_get_properties_list_entry</refname>
|
||||||
<refname>udev_device_get_tags_list_entry</refname>
|
<refname>udev_device_get_tags_list_entry</refname>
|
||||||
|
<refname>udev_device_get_current_tags_list_entry</refname>
|
||||||
<refname>udev_device_get_sysattr_list_entry</refname>
|
<refname>udev_device_get_sysattr_list_entry</refname>
|
||||||
<refname>udev_device_get_property_value</refname>
|
<refname>udev_device_get_property_value</refname>
|
||||||
<refname>udev_device_get_sysattr_value</refname>
|
<refname>udev_device_get_sysattr_value</refname>
|
||||||
|
@ -36,6 +38,18 @@
|
||||||
<funcsynopsis>
|
<funcsynopsis>
|
||||||
<funcsynopsisinfo>#include <libudev.h></funcsynopsisinfo>
|
<funcsynopsisinfo>#include <libudev.h></funcsynopsisinfo>
|
||||||
|
|
||||||
|
<funcprototype>
|
||||||
|
<funcdef>int <function>udev_device_has_tag</function></funcdef>
|
||||||
|
<paramdef>struct udev_device *<parameter>udev_device</parameter></paramdef>
|
||||||
|
<paramdef>const char *<parameter>tag</parameter></paramdef>
|
||||||
|
</funcprototype>
|
||||||
|
|
||||||
|
<funcprototype>
|
||||||
|
<funcdef>int <function>udev_device_has_current_tag</function></funcdef>
|
||||||
|
<paramdef>struct udev_device *<parameter>udev_device</parameter></paramdef>
|
||||||
|
<paramdef>const char *<parameter>tag</parameter></paramdef>
|
||||||
|
</funcprototype>
|
||||||
|
|
||||||
<funcprototype>
|
<funcprototype>
|
||||||
<funcdef>struct udev_list_entry *<function>udev_device_get_devlinks_list_entry</function></funcdef>
|
<funcdef>struct udev_list_entry *<function>udev_device_get_devlinks_list_entry</function></funcdef>
|
||||||
<paramdef>struct udev_device *<parameter>udev_device</parameter></paramdef>
|
<paramdef>struct udev_device *<parameter>udev_device</parameter></paramdef>
|
||||||
|
@ -51,6 +65,11 @@
|
||||||
<paramdef>struct udev_device *<parameter>udev_device</parameter></paramdef>
|
<paramdef>struct udev_device *<parameter>udev_device</parameter></paramdef>
|
||||||
</funcprototype>
|
</funcprototype>
|
||||||
|
|
||||||
|
<funcprototype>
|
||||||
|
<funcdef>struct udev_list_entry *<function>udev_device_get_current_tags_list_entry</function></funcdef>
|
||||||
|
<paramdef>struct udev_device *<parameter>udev_device</parameter></paramdef>
|
||||||
|
</funcprototype>
|
||||||
|
|
||||||
<funcprototype>
|
<funcprototype>
|
||||||
<funcdef>struct udev_list_entry *<function>udev_device_get_sysattr_list_entry</function></funcdef>
|
<funcdef>struct udev_list_entry *<function>udev_device_get_sysattr_list_entry</function></funcdef>
|
||||||
<paramdef>struct udev_device *<parameter>udev_device</parameter></paramdef>
|
<paramdef>struct udev_device *<parameter>udev_device</parameter></paramdef>
|
||||||
|
@ -62,12 +81,6 @@
|
||||||
<paramdef>const char *<parameter>key</parameter></paramdef>
|
<paramdef>const char *<parameter>key</parameter></paramdef>
|
||||||
</funcprototype>
|
</funcprototype>
|
||||||
|
|
||||||
<funcprototype>
|
|
||||||
<funcdef>int <function>udev_device_has_tag</function></funcdef>
|
|
||||||
<paramdef>struct udev_device *<parameter>udev_device</parameter></paramdef>
|
|
||||||
<paramdef>const char *<parameter>tag</parameter></paramdef>
|
|
||||||
</funcprototype>
|
|
||||||
|
|
||||||
<funcprototype>
|
<funcprototype>
|
||||||
<funcdef>const char *<function>udev_device_get_sysattr_value</function></funcdef>
|
<funcdef>const char *<function>udev_device_get_sysattr_value</function></funcdef>
|
||||||
<paramdef>struct udev_device *<parameter>udev_device</parameter></paramdef>
|
<paramdef>struct udev_device *<parameter>udev_device</parameter></paramdef>
|
||||||
|
@ -84,22 +97,40 @@
|
||||||
</funcsynopsis>
|
</funcsynopsis>
|
||||||
</refsynopsisdiv>
|
</refsynopsisdiv>
|
||||||
|
|
||||||
<!--<refsect1>
|
<refsect1>
|
||||||
<title>Description</title>
|
<title>Description</title>
|
||||||
|
|
||||||
<para>XXX: Add short description.</para>
|
<para><function>udev_device_has_tag()</function> returns a valuer larger than zero if the specified
|
||||||
</refsect1>-->
|
device object has the indicated tag assigned to it, and zero otherwise. See
|
||||||
|
<citerefentry><refentrytitle>udev</refentrytitle><manvolnum>7</manvolnum></citerefentry> for details on
|
||||||
|
the tags concept. <function>udev_device_has_current_tag()</function> executes a similar check, however
|
||||||
|
only determines whether the indicated tag was set as result of the most recent event seen for the
|
||||||
|
device. Tags are "sticky", i.e. once set for a device they remain on the device until the device is
|
||||||
|
unplugged, even if the rules run for later events of the same device do not set them anymore. Any tag for
|
||||||
|
which <function>udev_device_has_current_tag()</function> returns true will hence also return true when
|
||||||
|
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>
|
||||||
|
|
||||||
|
<para><function>udev_device_get_tags_list_entry()</function> returns a a
|
||||||
|
<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
|
||||||
|
set for the specified device as effect of the most recent device event seen (see above for details on the
|
||||||
|
difference).</para>
|
||||||
|
</refsect1>
|
||||||
|
|
||||||
<refsect1>
|
<refsect1>
|
||||||
<title>Return Value</title>
|
<title>Return Value</title>
|
||||||
|
|
||||||
<para>On success,
|
<para>On success, <function>udev_device_has_tag()</function> and
|
||||||
<function>udev_device_get_devlinks_list_entry()</function>,
|
<function>udev_device_has_current_tag()</function> return positive or <constant>0</constant>, depending
|
||||||
|
on whether the device has the given tag or not. On failure, a negative error code is returned.</para>
|
||||||
|
|
||||||
|
<para>On success, <function>udev_device_get_devlinks_list_entry()</function>,
|
||||||
<function>udev_device_get_properties_list_entry()</function>,
|
<function>udev_device_get_properties_list_entry()</function>,
|
||||||
<function>udev_device_get_tags_list_entry()</function> and
|
<function>udev_device_get_tags_list_entry()</function>,
|
||||||
<function>udev_device_get_sysattr_list_entry()</function> return
|
<function>udev_device_get_current_tags_list_entry()</function> and
|
||||||
a pointer to the first entry of the retrieved list. If that list
|
<function>udev_device_get_sysattr_list_entry()</function> return a pointer to the first entry of the
|
||||||
is empty, or if an error occurred, <constant>NULL</constant> is
|
retrieved list. If that list is empty, or if an error occurred, <constant>NULL</constant> is
|
||||||
returned.</para>
|
returned.</para>
|
||||||
|
|
||||||
<para>On success,
|
<para>On success,
|
||||||
|
@ -119,17 +150,13 @@
|
||||||
contain <constant>NUL</constant> bytes should not be set with
|
contain <constant>NUL</constant> bytes should not be set with
|
||||||
this function; instead, write them directly to the files within
|
this function; instead, write them directly to the files within
|
||||||
the device's <property>syspath</property>.</para>
|
the device's <property>syspath</property>.</para>
|
||||||
|
|
||||||
<para>On success, <function>udev_device_has_tag()</function>
|
|
||||||
returns <constant>1</constant> or <constant>0</constant>,
|
|
||||||
depending on whether the device has the given tag or not.
|
|
||||||
On failure, a negative error code is returned.</para>
|
|
||||||
</refsect1>
|
</refsect1>
|
||||||
|
|
||||||
<refsect1>
|
<refsect1>
|
||||||
<title>See Also</title>
|
<title>See Also</title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
<citerefentry><refentrytitle>udev</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
|
||||||
<citerefentry><refentrytitle>udev_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
<citerefentry><refentrytitle>udev_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
||||||
<citerefentry><refentrytitle>udev_device_new_from_syspath</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
<citerefentry><refentrytitle>udev_device_new_from_syspath</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
||||||
<citerefentry><refentrytitle>udev_device_get_syspath</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
<citerefentry><refentrytitle>udev_device_get_syspath</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
||||||
|
|
|
@ -14,7 +14,7 @@ project('systemd', 'c',
|
||||||
)
|
)
|
||||||
|
|
||||||
libsystemd_version = '0.29.0'
|
libsystemd_version = '0.29.0'
|
||||||
libudev_version = '1.6.18'
|
libudev_version = '1.7.0'
|
||||||
|
|
||||||
# We need the same data in two different formats, ugh!
|
# We need the same data in two different formats, ugh!
|
||||||
# Also, for hysterical reasons, we use different variable
|
# Also, for hysterical reasons, we use different variable
|
||||||
|
|
213
po/fr.po
213
po/fr.po
|
@ -9,7 +9,7 @@ msgstr ""
|
||||||
"Project-Id-Version: systemd\n"
|
"Project-Id-Version: systemd\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2020-08-19 18:02+0200\n"
|
"POT-Creation-Date: 2020-08-19 18:02+0200\n"
|
||||||
"PO-Revision-Date: 2020-08-27 02:46+0000\n"
|
"PO-Revision-Date: 2020-08-28 05:29+0000\n"
|
||||||
"Last-Translator: Julien Humbert <julroy67@gmail.com>\n"
|
"Last-Translator: Julien Humbert <julroy67@gmail.com>\n"
|
||||||
"Language-Team: French <https://translate.fedoraproject.org/projects/systemd/"
|
"Language-Team: French <https://translate.fedoraproject.org/projects/systemd/"
|
||||||
"master/fr/>\n"
|
"master/fr/>\n"
|
||||||
|
@ -51,7 +51,7 @@ msgstr ""
|
||||||
#: src/core/org.freedesktop.systemd1.policy.in:54
|
#: src/core/org.freedesktop.systemd1.policy.in:54
|
||||||
msgid "Set or unset system and service manager environment variables"
|
msgid "Set or unset system and service manager environment variables"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Définir ou supprimer des variables d'environnement du système ou du "
|
"Définir ou supprimer des variables d’environnement du système ou du "
|
||||||
"gestionnaire de services"
|
"gestionnaire de services"
|
||||||
|
|
||||||
#: src/core/org.freedesktop.systemd1.policy.in:55
|
#: src/core/org.freedesktop.systemd1.policy.in:55
|
||||||
|
@ -59,12 +59,12 @@ msgid ""
|
||||||
"Authentication is required to set or unset system and service manager "
|
"Authentication is required to set or unset system and service manager "
|
||||||
"environment variables."
|
"environment variables."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour définir ou supprimer des variables "
|
"Authentification requise pour définir ou supprimer des variables d’"
|
||||||
"d'environnement du système ou du gestionnaire de services."
|
"environnement du système ou du gestionnaire de services."
|
||||||
|
|
||||||
#: src/core/org.freedesktop.systemd1.policy.in:64
|
#: src/core/org.freedesktop.systemd1.policy.in:64
|
||||||
msgid "Reload the systemd state"
|
msgid "Reload the systemd state"
|
||||||
msgstr "Recharger l'état de systemd"
|
msgstr "Recharger l’état de systemd"
|
||||||
|
|
||||||
#: src/core/org.freedesktop.systemd1.policy.in:65
|
#: src/core/org.freedesktop.systemd1.policy.in:65
|
||||||
msgid "Authentication is required to reload the systemd state."
|
msgid "Authentication is required to reload the systemd state."
|
||||||
|
@ -77,7 +77,7 @@ msgstr "Créer un espace personnel"
|
||||||
#: src/home/org.freedesktop.home1.policy:14
|
#: src/home/org.freedesktop.home1.policy:14
|
||||||
msgid "Authentication is required to create a user's home area."
|
msgid "Authentication is required to create a user's home area."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour créer l'espace personnel d'un utilisateur."
|
"Authentification requise pour créer l’espace personnel d’un utilisateur."
|
||||||
|
|
||||||
#: src/home/org.freedesktop.home1.policy:23
|
#: src/home/org.freedesktop.home1.policy:23
|
||||||
msgid "Remove a home area"
|
msgid "Remove a home area"
|
||||||
|
@ -86,18 +86,18 @@ msgstr "Retirer un espace personnel"
|
||||||
#: src/home/org.freedesktop.home1.policy:24
|
#: src/home/org.freedesktop.home1.policy:24
|
||||||
msgid "Authentication is required to remove a user's home area."
|
msgid "Authentication is required to remove a user's home area."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour retirer l'espace personnel d'un utilisateur."
|
"Authentification requise pour retirer l’espace personnel d’un utilisateur."
|
||||||
|
|
||||||
#: src/home/org.freedesktop.home1.policy:33
|
#: src/home/org.freedesktop.home1.policy:33
|
||||||
msgid "Check credentials of a home area"
|
msgid "Check credentials of a home area"
|
||||||
msgstr "Vérifier les identifiants d'un espace personnel"
|
msgstr "Vérifier les identifiants d’un espace personnel"
|
||||||
|
|
||||||
#: src/home/org.freedesktop.home1.policy:34
|
#: src/home/org.freedesktop.home1.policy:34
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to check credentials against a user's home area."
|
"Authentication is required to check credentials against a user's home area."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour vérifier les identifiants de l'espace "
|
"Authentification requise pour vérifier les identifiants de l’espace "
|
||||||
"personnel d'un utilisateur."
|
"personnel d’un utilisateur."
|
||||||
|
|
||||||
#: src/home/org.freedesktop.home1.policy:43
|
#: src/home/org.freedesktop.home1.policy:43
|
||||||
msgid "Update a home area"
|
msgid "Update a home area"
|
||||||
|
@ -106,7 +106,7 @@ msgstr "Mettre à jour un espace personnel"
|
||||||
#: src/home/org.freedesktop.home1.policy:44
|
#: src/home/org.freedesktop.home1.policy:44
|
||||||
msgid "Authentication is required to update a user's home area."
|
msgid "Authentication is required to update a user's home area."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour mettre à jour l'espace personnel d'un "
|
"Authentification requise pour mettre à jour l’espace personnel d’un "
|
||||||
"utilisateur."
|
"utilisateur."
|
||||||
|
|
||||||
#: src/home/org.freedesktop.home1.policy:53
|
#: src/home/org.freedesktop.home1.policy:53
|
||||||
|
@ -119,34 +119,34 @@ msgstr "Authentification requise pour retailler un espace personnel."
|
||||||
|
|
||||||
#: src/home/org.freedesktop.home1.policy:63
|
#: src/home/org.freedesktop.home1.policy:63
|
||||||
msgid "Change password of a home area"
|
msgid "Change password of a home area"
|
||||||
msgstr "Changer le mot de passe d'un espace personnel"
|
msgstr "Changer le mot de passe d’un espace personnel"
|
||||||
|
|
||||||
#: src/home/org.freedesktop.home1.policy:64
|
#: src/home/org.freedesktop.home1.policy:64
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to change the password of a user's home area."
|
"Authentication is required to change the password of a user's home area."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour changer le mot de passe de l'espace personnel "
|
"Authentification requise pour changer le mot de passe de l’espace personnel "
|
||||||
"d'un utilisateur."
|
"d’un utilisateur."
|
||||||
|
|
||||||
#: src/hostname/org.freedesktop.hostname1.policy:20
|
#: src/hostname/org.freedesktop.hostname1.policy:20
|
||||||
msgid "Set hostname"
|
msgid "Set hostname"
|
||||||
msgstr "Définir le nom d'hôte"
|
msgstr "Définir le nom d’hôte"
|
||||||
|
|
||||||
#: src/hostname/org.freedesktop.hostname1.policy:21
|
#: src/hostname/org.freedesktop.hostname1.policy:21
|
||||||
msgid "Authentication is required to set the local hostname."
|
msgid "Authentication is required to set the local hostname."
|
||||||
msgstr "Authentification requise pour définir le nom d'hôte local."
|
msgstr "Authentification requise pour définir le nom d’hôte local."
|
||||||
|
|
||||||
#: src/hostname/org.freedesktop.hostname1.policy:30
|
#: src/hostname/org.freedesktop.hostname1.policy:30
|
||||||
msgid "Set static hostname"
|
msgid "Set static hostname"
|
||||||
msgstr "Définir le nom d'hôte statique"
|
msgstr "Définir le nom d’hôte statique"
|
||||||
|
|
||||||
#: src/hostname/org.freedesktop.hostname1.policy:31
|
#: src/hostname/org.freedesktop.hostname1.policy:31
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to set the statically configured local hostname, "
|
"Authentication is required to set the statically configured local hostname, "
|
||||||
"as well as the pretty hostname."
|
"as well as the pretty hostname."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour définir le nom d'hôte local de manière "
|
"Authentification requise pour définir le nom d’hôte local de manière "
|
||||||
"statique, tout comme le nom d'hôte familier."
|
"statique, tout comme le nom d’hôte familier."
|
||||||
|
|
||||||
#: src/hostname/org.freedesktop.hostname1.policy:41
|
#: src/hostname/org.freedesktop.hostname1.policy:41
|
||||||
msgid "Set machine information"
|
msgid "Set machine information"
|
||||||
|
@ -159,11 +159,11 @@ msgstr ""
|
||||||
|
|
||||||
#: src/hostname/org.freedesktop.hostname1.policy:51
|
#: src/hostname/org.freedesktop.hostname1.policy:51
|
||||||
msgid "Get product UUID"
|
msgid "Get product UUID"
|
||||||
msgstr "Obtenir l'UUID du produit"
|
msgstr "Obtenir l’UUID du produit"
|
||||||
|
|
||||||
#: src/hostname/org.freedesktop.hostname1.policy:52
|
#: src/hostname/org.freedesktop.hostname1.policy:52
|
||||||
msgid "Authentication is required to get product UUID."
|
msgid "Authentication is required to get product UUID."
|
||||||
msgstr "Authentification requise pour obtenir l'UUID du produit."
|
msgstr "Authentification requise pour obtenir l’UUID du produit."
|
||||||
|
|
||||||
#: src/import/org.freedesktop.import1.policy:22
|
#: src/import/org.freedesktop.import1.policy:22
|
||||||
msgid "Import a VM or container image"
|
msgid "Import a VM or container image"
|
||||||
|
@ -214,33 +214,33 @@ msgstr ""
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:22
|
#: src/login/org.freedesktop.login1.policy:22
|
||||||
msgid "Allow applications to inhibit system shutdown"
|
msgid "Allow applications to inhibit system shutdown"
|
||||||
msgstr "Permet aux applications d'empêcher l'arrêt du système"
|
msgstr "Permet aux applications d’empêcher l’arrêt du système"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:23
|
#: src/login/org.freedesktop.login1.policy:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required for an application to inhibit system shutdown."
|
"Authentication is required for an application to inhibit system shutdown."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour permettre à une application d'empêcher l'arrêt "
|
"Authentification requise pour permettre à une application d’empêcher l’arrêt "
|
||||||
"du système."
|
"du système."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:33
|
#: src/login/org.freedesktop.login1.policy:33
|
||||||
msgid "Allow applications to delay system shutdown"
|
msgid "Allow applications to delay system shutdown"
|
||||||
msgstr "Permet aux applications de retarder l'arrêt du système"
|
msgstr "Permet aux applications de retarder l’arrêt du système"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:34
|
#: src/login/org.freedesktop.login1.policy:34
|
||||||
msgid "Authentication is required for an application to delay system shutdown."
|
msgid "Authentication is required for an application to delay system shutdown."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour permettre à une application de retarder "
|
"Authentification requise pour permettre à une application de retarder l’"
|
||||||
"l'arrêt du système."
|
"arrêt du système."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:44
|
#: src/login/org.freedesktop.login1.policy:44
|
||||||
msgid "Allow applications to inhibit system sleep"
|
msgid "Allow applications to inhibit system sleep"
|
||||||
msgstr "Permet aux applications d'empêcher la mise en veille du système"
|
msgstr "Permet aux applications d’empêcher la mise en veille du système"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:45
|
#: src/login/org.freedesktop.login1.policy:45
|
||||||
msgid "Authentication is required for an application to inhibit system sleep."
|
msgid "Authentication is required for an application to inhibit system sleep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour permettre à une application d'empêcher la mise "
|
"Authentification requise pour permettre à une application d’empêcher la mise "
|
||||||
"en veille du système."
|
"en veille du système."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:55
|
#: src/login/org.freedesktop.login1.policy:55
|
||||||
|
@ -255,21 +255,20 @@ msgstr ""
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:65
|
#: src/login/org.freedesktop.login1.policy:65
|
||||||
msgid "Allow applications to inhibit automatic system suspend"
|
msgid "Allow applications to inhibit automatic system suspend"
|
||||||
msgstr ""
|
msgstr "Permet aux applications d’empêcher l’hibernation automatique du système"
|
||||||
"Permet aux applications d'empêcher l'hibernation automatique du système"
|
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:66
|
#: src/login/org.freedesktop.login1.policy:66
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required for an application to inhibit automatic system "
|
"Authentication is required for an application to inhibit automatic system "
|
||||||
"suspend."
|
"suspend."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour permettre à une application d'empêcher "
|
"Authentification requise pour permettre à une application d’empêcher l’"
|
||||||
"l'hibernation automatique du système."
|
"hibernation automatique du système."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:75
|
#: src/login/org.freedesktop.login1.policy:75
|
||||||
msgid "Allow applications to inhibit system handling of the power key"
|
msgid "Allow applications to inhibit system handling of the power key"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Permet aux applications d'empêcher la gestion du bouton d'alimentation du "
|
"Permet aux applications d’empêcher la gestion du bouton d’alimentation du "
|
||||||
"système"
|
"système"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:76
|
#: src/login/org.freedesktop.login1.policy:76
|
||||||
|
@ -277,13 +276,13 @@ msgid ""
|
||||||
"Authentication is required for an application to inhibit system handling of "
|
"Authentication is required for an application to inhibit system handling of "
|
||||||
"the power key."
|
"the power key."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour permettre à une application d'empêcher la "
|
"Authentification requise pour permettre à une application d’empêcher la "
|
||||||
"gestion du bouton d'alimentation du système."
|
"gestion du bouton d’alimentation du système."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:86
|
#: src/login/org.freedesktop.login1.policy:86
|
||||||
msgid "Allow applications to inhibit system handling of the suspend key"
|
msgid "Allow applications to inhibit system handling of the suspend key"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Permet aux applications d'empêcher la gestion du bouton de mise en veille du "
|
"Permet aux applications d’empêcher la gestion du bouton de mise en veille du "
|
||||||
"système"
|
"système"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:87
|
#: src/login/org.freedesktop.login1.policy:87
|
||||||
|
@ -291,13 +290,13 @@ msgid ""
|
||||||
"Authentication is required for an application to inhibit system handling of "
|
"Authentication is required for an application to inhibit system handling of "
|
||||||
"the suspend key."
|
"the suspend key."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour permettre à une application d'empêcher la "
|
"Authentification requise pour permettre à une application d’empêcher la "
|
||||||
"gestion du bouton de mise en veille du système."
|
"gestion du bouton de mise en veille du système."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:97
|
#: src/login/org.freedesktop.login1.policy:97
|
||||||
msgid "Allow applications to inhibit system handling of the hibernate key"
|
msgid "Allow applications to inhibit system handling of the hibernate key"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Permet aux applications d'empêcher la gestion du bouton d'hibernation du "
|
"Permet aux applications d’empêcher la gestion du bouton d’hibernation du "
|
||||||
"système"
|
"système"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:98
|
#: src/login/org.freedesktop.login1.policy:98
|
||||||
|
@ -305,46 +304,46 @@ msgid ""
|
||||||
"Authentication is required for an application to inhibit system handling of "
|
"Authentication is required for an application to inhibit system handling of "
|
||||||
"the hibernate key."
|
"the hibernate key."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour permettre à une application d'empêcher la "
|
"Authentification requise pour permettre à une application d’empêcher la "
|
||||||
"gestion du bouton d'hibernation du système."
|
"gestion du bouton d’hibernation du système."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:107
|
#: src/login/org.freedesktop.login1.policy:107
|
||||||
msgid "Allow applications to inhibit system handling of the lid switch"
|
msgid "Allow applications to inhibit system handling of the lid switch"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Permet aux applications d'empêcher la gestion par le système du rabat de "
|
"Permet aux applications d’empêcher la gestion par le système du rabat de "
|
||||||
"l'écran"
|
"l’écran"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:108
|
#: src/login/org.freedesktop.login1.policy:108
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required for an application to inhibit system handling of "
|
"Authentication is required for an application to inhibit system handling of "
|
||||||
"the lid switch."
|
"the lid switch."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour permettre à une application d'empêcher la "
|
"Authentification requise pour permettre à une application d’empêcher la "
|
||||||
"gestion par le système du rabat de l'écran."
|
"gestion par le système du rabat de l’écran."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:117
|
#: src/login/org.freedesktop.login1.policy:117
|
||||||
msgid "Allow non-logged-in user to run programs"
|
msgid "Allow non-logged-in user to run programs"
|
||||||
msgstr "Permet à un utilisateur non connecté d'exécuter des programmes"
|
msgstr "Permet à un utilisateur non connecté d’exécuter des programmes"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:118
|
#: src/login/org.freedesktop.login1.policy:118
|
||||||
msgid "Explicit request is required to run programs as a non-logged-in user."
|
msgid "Explicit request is required to run programs as a non-logged-in user."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Requête explicite requise pour exécuter des programmes en tant "
|
"Requête explicite requise pour exécuter des programmes en tant qu’"
|
||||||
"qu'utilisateur non connecté."
|
"utilisateur non connecté."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:127
|
#: src/login/org.freedesktop.login1.policy:127
|
||||||
msgid "Allow non-logged-in users to run programs"
|
msgid "Allow non-logged-in users to run programs"
|
||||||
msgstr "Permet aux utilisateurs non connectés d'exécuter des programmes"
|
msgstr "Permet aux utilisateurs non connectés d’exécuter des programmes"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:128
|
#: src/login/org.freedesktop.login1.policy:128
|
||||||
msgid "Authentication is required to run programs as a non-logged-in user."
|
msgid "Authentication is required to run programs as a non-logged-in user."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour exécuter des programmes en tant qu'utilisateur "
|
"Authentification requise pour exécuter des programmes en tant qu’utilisateur "
|
||||||
"non connecté."
|
"non connecté."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:137
|
#: src/login/org.freedesktop.login1.policy:137
|
||||||
msgid "Allow attaching devices to seats"
|
msgid "Allow attaching devices to seats"
|
||||||
msgstr "Permet d'associer des périphériques à des postes (seats)"
|
msgstr "Permet d’associer des périphériques à des postes (seats)"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:138
|
#: src/login/org.freedesktop.login1.policy:138
|
||||||
msgid "Authentication is required to attach a device to a seat."
|
msgid "Authentication is required to attach a device to a seat."
|
||||||
|
@ -371,27 +370,27 @@ msgstr "Authentification requise pour éteindre le système."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:169
|
#: src/login/org.freedesktop.login1.policy:169
|
||||||
msgid "Power off the system while other users are logged in"
|
msgid "Power off the system while other users are logged in"
|
||||||
msgstr "Éteindre le système alors que d'autres utilisateurs sont connectés"
|
msgstr "Éteindre le système alors que d’autres utilisateurs sont connectés"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:170
|
#: src/login/org.freedesktop.login1.policy:170
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to power off the system while other users are "
|
"Authentication is required to power off the system while other users are "
|
||||||
"logged in."
|
"logged in."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour éteindre le système alors que d'autres "
|
"Authentification requise pour éteindre le système alors que d’autres "
|
||||||
"utilisateurs sont connectés."
|
"utilisateurs sont connectés."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:180
|
#: src/login/org.freedesktop.login1.policy:180
|
||||||
msgid "Power off the system while an application is inhibiting this"
|
msgid "Power off the system while an application is inhibiting this"
|
||||||
msgstr "Éteindre le système alors qu'une application a demandé de l'empêcher"
|
msgstr "Éteindre le système alors qu’une application a demandé de l’empêcher"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:181
|
#: src/login/org.freedesktop.login1.policy:181
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to power off the system while an application is "
|
"Authentication is required to power off the system while an application is "
|
||||||
"inhibiting this."
|
"inhibiting this."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour éteindre le système alors qu'une application a "
|
"Authentification requise pour éteindre le système alors qu’une application a "
|
||||||
"demandé de l'empêcher."
|
"demandé de l’empêcher."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:191
|
#: src/login/org.freedesktop.login1.policy:191
|
||||||
msgid "Reboot the system"
|
msgid "Reboot the system"
|
||||||
|
@ -403,27 +402,27 @@ msgstr "Authentification requise pour redémarrer le système."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:202
|
#: src/login/org.freedesktop.login1.policy:202
|
||||||
msgid "Reboot the system while other users are logged in"
|
msgid "Reboot the system while other users are logged in"
|
||||||
msgstr "Redémarrer le système alors que d'autres utilisateurs sont connectés"
|
msgstr "Redémarrer le système alors que d’autres utilisateurs sont connectés"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:203
|
#: src/login/org.freedesktop.login1.policy:203
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to reboot the system while other users are logged "
|
"Authentication is required to reboot the system while other users are logged "
|
||||||
"in."
|
"in."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour redémarrer le système alors que d'autres "
|
"Authentification requise pour redémarrer le système alors que d’autres "
|
||||||
"utilisateurs sont connectés."
|
"utilisateurs sont connectés."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:213
|
#: src/login/org.freedesktop.login1.policy:213
|
||||||
msgid "Reboot the system while an application is inhibiting this"
|
msgid "Reboot the system while an application is inhibiting this"
|
||||||
msgstr "Redémarrer le système alors qu'une application a demandé de l'empêcher"
|
msgstr "Redémarrer le système alors qu’une application a demandé de l’empêcher"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:214
|
#: src/login/org.freedesktop.login1.policy:214
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to reboot the system while an application is "
|
"Authentication is required to reboot the system while an application is "
|
||||||
"inhibiting this."
|
"inhibiting this."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour redémarrer le système alors qu'une application "
|
"Authentification requise pour redémarrer le système alors qu’une application "
|
||||||
"a demandé de l'empêcher."
|
"a demandé de l’empêcher."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:224
|
#: src/login/org.freedesktop.login1.policy:224
|
||||||
msgid "Halt the system"
|
msgid "Halt the system"
|
||||||
|
@ -435,19 +434,19 @@ msgstr "Authentification requise pour arrêter le système."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:235
|
#: src/login/org.freedesktop.login1.policy:235
|
||||||
msgid "Halt the system while other users are logged in"
|
msgid "Halt the system while other users are logged in"
|
||||||
msgstr "Arrêter le système alors que d'autres utilisateurs sont connectés"
|
msgstr "Arrêter le système alors que d’autres utilisateurs sont connectés"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:236
|
#: src/login/org.freedesktop.login1.policy:236
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to halt the system while other users are logged "
|
"Authentication is required to halt the system while other users are logged "
|
||||||
"in."
|
"in."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour arrêter le système alors que d'autres "
|
"Authentification requise pour arrêter le système alors que d’autres "
|
||||||
"utilisateurs sont connectés."
|
"utilisateurs sont connectés."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:246
|
#: src/login/org.freedesktop.login1.policy:246
|
||||||
msgid "Halt the system while an application is inhibiting this"
|
msgid "Halt the system while an application is inhibiting this"
|
||||||
msgstr "Arrêter le système alors qu'une application a demandé de l'empêcher"
|
msgstr "Arrêter le système alors qu’une application a demandé de l’empêcher"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:247
|
#: src/login/org.freedesktop.login1.policy:247
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
|
@ -472,28 +471,28 @@ msgstr "Authentification requise pour mettre le système en veille."
|
||||||
#: src/login/org.freedesktop.login1.policy:267
|
#: src/login/org.freedesktop.login1.policy:267
|
||||||
msgid "Suspend the system while other users are logged in"
|
msgid "Suspend the system while other users are logged in"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Mettre le système en veille alors que d'autres utilisateurs sont connectés"
|
"Mettre le système en veille alors que d’autres utilisateurs sont connectés"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:268
|
#: src/login/org.freedesktop.login1.policy:268
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to suspend the system while other users are "
|
"Authentication is required to suspend the system while other users are "
|
||||||
"logged in."
|
"logged in."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour mettre le système en veille alors que d'autres "
|
"Authentification requise pour mettre le système en veille alors que d’autres "
|
||||||
"utilisateurs sont connectés."
|
"utilisateurs sont connectés."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:278
|
#: src/login/org.freedesktop.login1.policy:278
|
||||||
msgid "Suspend the system while an application is inhibiting this"
|
msgid "Suspend the system while an application is inhibiting this"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Mettre le système en veille alors qu'une application a demandé de l'empêcher"
|
"Mettre le système en veille alors qu’une application a demandé de l’empêcher"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:279
|
#: src/login/org.freedesktop.login1.policy:279
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to suspend the system while an application is "
|
"Authentication is required to suspend the system while an application is "
|
||||||
"inhibiting this."
|
"inhibiting this."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour mettre le système en veille alors qu'une "
|
"Authentification requise pour mettre le système en veille alors qu’une "
|
||||||
"application a demandé de l'empêcher."
|
"application a demandé de l’empêcher."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:289
|
#: src/login/org.freedesktop.login1.policy:289
|
||||||
msgid "Hibernate the system"
|
msgid "Hibernate the system"
|
||||||
|
@ -506,7 +505,7 @@ msgstr "Authentification requise pour mettre le système en hibernation."
|
||||||
#: src/login/org.freedesktop.login1.policy:299
|
#: src/login/org.freedesktop.login1.policy:299
|
||||||
msgid "Hibernate the system while other users are logged in"
|
msgid "Hibernate the system while other users are logged in"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Mettre le système en hibernation alors que d'autres utilisateurs sont "
|
"Mettre le système en hibernation alors que d’autres utilisateurs sont "
|
||||||
"connectés"
|
"connectés"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:300
|
#: src/login/org.freedesktop.login1.policy:300
|
||||||
|
@ -514,22 +513,22 @@ msgid ""
|
||||||
"Authentication is required to hibernate the system while other users are "
|
"Authentication is required to hibernate the system while other users are "
|
||||||
"logged in."
|
"logged in."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour mettre le système en hibernation alors que "
|
"Authentification requise pour mettre le système en hibernation alors que d’"
|
||||||
"d'autres utilisateurs sont connectés."
|
"autres utilisateurs sont connectés."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:310
|
#: src/login/org.freedesktop.login1.policy:310
|
||||||
msgid "Hibernate the system while an application is inhibiting this"
|
msgid "Hibernate the system while an application is inhibiting this"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Mettre le système en hibernation alors qu'une application a demandé de "
|
"Mettre le système en hibernation alors qu’une application a demandé de "
|
||||||
"l'empêcher"
|
"l’empêcher"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:311
|
#: src/login/org.freedesktop.login1.policy:311
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to hibernate the system while an application is "
|
"Authentication is required to hibernate the system while an application is "
|
||||||
"inhibiting this."
|
"inhibiting this."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour mettre le système en hibernation alors qu'une "
|
"Authentification requise pour mettre le système en hibernation alors qu’une "
|
||||||
"application a demandé de l'empêcher."
|
"application a demandé de l’empêcher."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:321
|
#: src/login/org.freedesktop.login1.policy:321
|
||||||
msgid "Manage active sessions, users and seats"
|
msgid "Manage active sessions, users and seats"
|
||||||
|
@ -553,48 +552,48 @@ msgstr ""
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:341
|
#: src/login/org.freedesktop.login1.policy:341
|
||||||
msgid "Set the reboot \"reason\" in the kernel"
|
msgid "Set the reboot \"reason\" in the kernel"
|
||||||
msgstr "Définir la « raison » du redémarrage dans le noyau"
|
msgstr "Définir la « raison » du redémarrage dans le noyau"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:342
|
#: src/login/org.freedesktop.login1.policy:342
|
||||||
msgid "Authentication is required to set the reboot \"reason\" in the kernel."
|
msgid "Authentication is required to set the reboot \"reason\" in the kernel."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour définir la « raison » du redémarrage dans le "
|
"Authentification requise pour définir la « raison » du redémarrage dans le "
|
||||||
"noyau."
|
"noyau."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:352
|
#: src/login/org.freedesktop.login1.policy:352
|
||||||
msgid "Indicate to the firmware to boot to setup interface"
|
msgid "Indicate to the firmware to boot to setup interface"
|
||||||
msgstr "Indiquer au micrologiciel de démarrer sur l'interface de configuration"
|
msgstr "Indiquer au micrologiciel de démarrer sur l’interface de configuration"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:353
|
#: src/login/org.freedesktop.login1.policy:353
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to indicate to the firmware to boot to setup "
|
"Authentication is required to indicate to the firmware to boot to setup "
|
||||||
"interface."
|
"interface."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour indiquer au micrologiciel de démarrer sur "
|
"Authentification requise pour indiquer au micrologiciel de démarrer sur l’"
|
||||||
"l'interface de configuration."
|
"interface de configuration."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:363
|
#: src/login/org.freedesktop.login1.policy:363
|
||||||
msgid "Indicate to the boot loader to boot to the boot loader menu"
|
msgid "Indicate to the boot loader to boot to the boot loader menu"
|
||||||
msgstr "Indiquer au programme d'amorçage d'afficher le menu au démarrage"
|
msgstr "Indiquer au programme d’amorçage d’afficher le menu au démarrage"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:364
|
#: src/login/org.freedesktop.login1.policy:364
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to indicate to the boot loader to boot to the "
|
"Authentication is required to indicate to the boot loader to boot to the "
|
||||||
"boot loader menu."
|
"boot loader menu."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour indiquer au programme d'amorçage d'afficher le "
|
"Authentification requise pour indiquer au programme d’amorçage d’afficher le "
|
||||||
"menu au démarrage."
|
"menu au démarrage."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:374
|
#: src/login/org.freedesktop.login1.policy:374
|
||||||
msgid "Indicate to the boot loader to boot a specific entry"
|
msgid "Indicate to the boot loader to boot a specific entry"
|
||||||
msgstr "Indiquer au programme d'amorçage de démarrer une entrée spécifique"
|
msgstr "Indiquer au programme d’amorçage de démarrer une entrée spécifique"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:375
|
#: src/login/org.freedesktop.login1.policy:375
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to indicate to the boot loader to boot into a "
|
"Authentication is required to indicate to the boot loader to boot into a "
|
||||||
"specific boot loader entry."
|
"specific boot loader entry."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour indiquer au programme d'amorçage de démarrer "
|
"Authentification requise pour indiquer au programme d’amorçage de démarrer "
|
||||||
"une entrée spécifique."
|
"une entrée spécifique."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:385
|
#: src/login/org.freedesktop.login1.policy:385
|
||||||
|
@ -624,11 +623,11 @@ msgstr ""
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:32
|
#: src/machine/org.freedesktop.machine1.policy:32
|
||||||
msgid "Log into the local host"
|
msgid "Log into the local host"
|
||||||
msgstr "Connexion à l'hôte local"
|
msgstr "Connexion à l’hôte local"
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:33
|
#: src/machine/org.freedesktop.machine1.policy:33
|
||||||
msgid "Authentication is required to log into the local host."
|
msgid "Authentication is required to log into the local host."
|
||||||
msgstr "Authentification requise pour permettre la connexion à l'hôte local."
|
msgstr "Authentification requise pour permettre la connexion à l’hôte local."
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:42
|
#: src/machine/org.freedesktop.machine1.policy:42
|
||||||
msgid "Acquire a shell in a local container"
|
msgid "Acquire a shell in a local container"
|
||||||
|
@ -642,12 +641,12 @@ msgstr ""
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:53
|
#: src/machine/org.freedesktop.machine1.policy:53
|
||||||
msgid "Acquire a shell on the local host"
|
msgid "Acquire a shell on the local host"
|
||||||
msgstr "Obtenir une interface système sur l'hôte local"
|
msgstr "Obtenir une interface système sur l’hôte local"
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:54
|
#: src/machine/org.freedesktop.machine1.policy:54
|
||||||
msgid "Authentication is required to acquire a shell on the local host."
|
msgid "Authentication is required to acquire a shell on the local host."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour obtenir une interface système sur l'hôte local."
|
"Authentification requise pour obtenir une interface système sur l’hôte local."
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:64
|
#: src/machine/org.freedesktop.machine1.policy:64
|
||||||
msgid "Acquire a pseudo TTY in a local container"
|
msgid "Acquire a pseudo TTY in a local container"
|
||||||
|
@ -662,12 +661,12 @@ msgstr ""
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:74
|
#: src/machine/org.freedesktop.machine1.policy:74
|
||||||
msgid "Acquire a pseudo TTY on the local host"
|
msgid "Acquire a pseudo TTY on the local host"
|
||||||
msgstr "Obtenir un pseudo terminal sur l'hôte local"
|
msgstr "Obtenir un pseudo terminal sur l’hôte local"
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:75
|
#: src/machine/org.freedesktop.machine1.policy:75
|
||||||
msgid "Authentication is required to acquire a pseudo TTY on the local host."
|
msgid "Authentication is required to acquire a pseudo TTY on the local host."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour obtenir un pseudo terminal sur l'hôte local."
|
"Authentification requise pour obtenir un pseudo terminal sur l’hôte local."
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:84
|
#: src/machine/org.freedesktop.machine1.policy:84
|
||||||
msgid "Manage local virtual machines and containers"
|
msgid "Manage local virtual machines and containers"
|
||||||
|
@ -890,11 +889,11 @@ msgstr ""
|
||||||
|
|
||||||
#: src/timedate/org.freedesktop.timedate1.policy:22
|
#: src/timedate/org.freedesktop.timedate1.policy:22
|
||||||
msgid "Set system time"
|
msgid "Set system time"
|
||||||
msgstr "Définir l'heure du système"
|
msgstr "Définir l’heure du système"
|
||||||
|
|
||||||
#: src/timedate/org.freedesktop.timedate1.policy:23
|
#: src/timedate/org.freedesktop.timedate1.policy:23
|
||||||
msgid "Authentication is required to set the system time."
|
msgid "Authentication is required to set the system time."
|
||||||
msgstr "Authentification requise pour définir l'heure du système."
|
msgstr "Authentification requise pour définir l’heure du système."
|
||||||
|
|
||||||
#: src/timedate/org.freedesktop.timedate1.policy:33
|
#: src/timedate/org.freedesktop.timedate1.policy:33
|
||||||
msgid "Set system timezone"
|
msgid "Set system timezone"
|
||||||
|
@ -907,7 +906,7 @@ msgstr "Authentification requise pour définir le fuseau horaire du système."
|
||||||
#: src/timedate/org.freedesktop.timedate1.policy:43
|
#: src/timedate/org.freedesktop.timedate1.policy:43
|
||||||
msgid "Set RTC to local timezone or UTC"
|
msgid "Set RTC to local timezone or UTC"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Positionner l'horloge matérielle à l'heure locale ou sur le temps universel "
|
"Positionner l’horloge matérielle à l’heure locale ou sur le temps universel "
|
||||||
"coordonné (UTC)"
|
"coordonné (UTC)"
|
||||||
|
|
||||||
#: src/timedate/org.freedesktop.timedate1.policy:44
|
#: src/timedate/org.freedesktop.timedate1.policy:44
|
||||||
|
@ -915,54 +914,54 @@ msgid ""
|
||||||
"Authentication is required to control whether the RTC stores the local or "
|
"Authentication is required to control whether the RTC stores the local or "
|
||||||
"UTC time."
|
"UTC time."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour positionner l'horloge matérielle à l'heure "
|
"Authentification requise pour positionner l’horloge matérielle à l’heure "
|
||||||
"locale ou sur le temps universel coordonné (UTC)."
|
"locale ou sur le temps universel coordonné (UTC)."
|
||||||
|
|
||||||
#: src/timedate/org.freedesktop.timedate1.policy:53
|
#: src/timedate/org.freedesktop.timedate1.policy:53
|
||||||
msgid "Turn network time synchronization on or off"
|
msgid "Turn network time synchronization on or off"
|
||||||
msgstr "Activer ou désactiver la synchronisation de l'heure avec le réseau"
|
msgstr "Activer ou désactiver la synchronisation de l’heure avec le réseau"
|
||||||
|
|
||||||
#: src/timedate/org.freedesktop.timedate1.policy:54
|
#: src/timedate/org.freedesktop.timedate1.policy:54
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to control whether network time synchronization "
|
"Authentication is required to control whether network time synchronization "
|
||||||
"shall be enabled."
|
"shall be enabled."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour activer ou désactiver la synchronisation de "
|
"Authentification requise pour activer ou désactiver la synchronisation de l’"
|
||||||
"l'heure avec le réseau."
|
"heure avec le réseau."
|
||||||
|
|
||||||
#: src/core/dbus-unit.c:362
|
#: src/core/dbus-unit.c:362
|
||||||
msgid "Authentication is required to start '$(unit)'."
|
msgid "Authentication is required to start '$(unit)'."
|
||||||
msgstr "Authentification requise pour démarrer « $(unit) »."
|
msgstr "Authentification requise pour démarrer « $(unit) »."
|
||||||
|
|
||||||
#: src/core/dbus-unit.c:363
|
#: src/core/dbus-unit.c:363
|
||||||
msgid "Authentication is required to stop '$(unit)'."
|
msgid "Authentication is required to stop '$(unit)'."
|
||||||
msgstr "Authentification requise pour arrêter « $(unit) »."
|
msgstr "Authentification requise pour arrêter « $(unit) »."
|
||||||
|
|
||||||
#: src/core/dbus-unit.c:364
|
#: src/core/dbus-unit.c:364
|
||||||
msgid "Authentication is required to reload '$(unit)'."
|
msgid "Authentication is required to reload '$(unit)'."
|
||||||
msgstr "Authentification requise pour recharger « $(unit) »."
|
msgstr "Authentification requise pour recharger « $(unit) »."
|
||||||
|
|
||||||
#: src/core/dbus-unit.c:365 src/core/dbus-unit.c:366
|
#: src/core/dbus-unit.c:365 src/core/dbus-unit.c:366
|
||||||
msgid "Authentication is required to restart '$(unit)'."
|
msgid "Authentication is required to restart '$(unit)'."
|
||||||
msgstr "Authentification requise pour redémarrer « $(unit) »."
|
msgstr "Authentification requise pour redémarrer « $(unit) »."
|
||||||
|
|
||||||
#: src/core/dbus-unit.c:538
|
#: src/core/dbus-unit.c:538
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to send a UNIX signal to the processes of "
|
"Authentication is required to send a UNIX signal to the processes of "
|
||||||
"'$(unit)'."
|
"'$(unit)'."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour envoyer un signal UNIX aux processus de "
|
"Authentification requise pour envoyer un signal UNIX aux processus de « "
|
||||||
"« $(unit) »."
|
"$(unit) »."
|
||||||
|
|
||||||
#: src/core/dbus-unit.c:569
|
#: src/core/dbus-unit.c:569
|
||||||
msgid "Authentication is required to reset the \"failed\" state of '$(unit)'."
|
msgid "Authentication is required to reset the \"failed\" state of '$(unit)'."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour réinitialiser l'état d'« échec » de "
|
"Authentification requise pour réinitialiser l’état d’« échec » de « $(unit) "
|
||||||
"« $(unit) »."
|
"»."
|
||||||
|
|
||||||
#: src/core/dbus-unit.c:602
|
#: src/core/dbus-unit.c:602
|
||||||
msgid "Authentication is required to set properties on '$(unit)'."
|
msgid "Authentication is required to set properties on '$(unit)'."
|
||||||
msgstr "Authentification requise pour définir des propriétés de « $(unit) »."
|
msgstr "Authentification requise pour définir des propriétés de « $(unit) »."
|
||||||
|
|
||||||
#: src/core/dbus-unit.c:711
|
#: src/core/dbus-unit.c:711
|
||||||
msgid ""
|
msgid ""
|
||||||
|
@ -970,7 +969,7 @@ msgid ""
|
||||||
"'$(unit)'."
|
"'$(unit)'."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Authentification requise pour supprimer les fichiers et les dossiers "
|
"Authentification requise pour supprimer les fichiers et les dossiers "
|
||||||
"associés à « $(unit) »."
|
"associés à « $(unit) »."
|
||||||
|
|
||||||
#: src/core/dbus-unit.c:760
|
#: src/core/dbus-unit.c:760
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
|
|
26
po/hr.po
26
po/hr.po
|
@ -3,22 +3,23 @@
|
||||||
# SOME DESCRIPTIVE TITLE.
|
# SOME DESCRIPTIVE TITLE.
|
||||||
# This file is distributed under the same license as the PACKAGE package.
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
# gogo <trebelnik2@gmail.com>, 2016.
|
# gogo <trebelnik2@gmail.com>, 2016.
|
||||||
#
|
# Gogo Gogsi <linux.hr@protonmail.com>, 2020.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: systemd master\n"
|
"Project-Id-Version: systemd master\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2020-08-19 18:02+0200\n"
|
"POT-Creation-Date: 2020-08-19 18:02+0200\n"
|
||||||
"PO-Revision-Date: 2020-03-08 12:57+0100\n"
|
"PO-Revision-Date: 2020-08-29 11:29+0000\n"
|
||||||
"Last-Translator: gogo <linux.hr@protonmail.com>\n"
|
"Last-Translator: Gogo Gogsi <linux.hr@protonmail.com>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: Croatian <https://translate.fedoraproject.org/projects/"
|
||||||
|
"systemd/master/hr/>\n"
|
||||||
"Language: hr\n"
|
"Language: hr\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: Poedit 2.0.6\n"
|
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
"X-Generator: Weblate 4.2.1\n"
|
||||||
|
|
||||||
#: src/core/org.freedesktop.systemd1.policy.in:22
|
#: src/core/org.freedesktop.systemd1.policy.in:22
|
||||||
msgid "Send passphrase back to system"
|
msgid "Send passphrase back to system"
|
||||||
|
@ -563,7 +564,7 @@ msgstr "Postavljanje zaslonske pruke"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:386
|
#: src/login/org.freedesktop.login1.policy:386
|
||||||
msgid "Authentication is required to set a wall message"
|
msgid "Authentication is required to set a wall message"
|
||||||
msgstr "Potrebna je ovjera za postavljanje zaslonske pruke."
|
msgstr "Potrebna je ovjera za postavljanje zaslonske poruke."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:395
|
#: src/login/org.freedesktop.login1.policy:395
|
||||||
msgid "Change Session"
|
msgid "Change Session"
|
||||||
|
@ -908,14 +909,11 @@ msgid ""
|
||||||
"Authentication is required to delete files and directories associated with "
|
"Authentication is required to delete files and directories associated with "
|
||||||
"'$(unit)'."
|
"'$(unit)'."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Potrebna je ovjera za za brisanje datoteka i direktorija pridruženih sa "
|
"Potrebna je ovjera za brisanje datoteka i direktorija pridruženih sa "
|
||||||
"'$(unit)'."
|
"'$(unit)'."
|
||||||
|
|
||||||
#: src/core/dbus-unit.c:760
|
#: src/core/dbus-unit.c:760
|
||||||
#, fuzzy
|
|
||||||
#| msgid ""
|
|
||||||
#| "Authentication is required to send a UNIX signal to the processes of "
|
|
||||||
#| "'$(unit)'."
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to freeze or thaw the processes of '$(unit)' unit."
|
"Authentication is required to freeze or thaw the processes of '$(unit)' unit."
|
||||||
msgstr "Potrebna je ovjera za slanje UNIX signala u procese '$(unit)'."
|
msgstr ""
|
||||||
|
"Potrebna je ovjera za zamrzavanje ili odmrzavanje procesa '$(unit)' jedinice."
|
||||||
|
|
397
po/uk.po
397
po/uk.po
|
@ -8,67 +8,68 @@ msgstr ""
|
||||||
"Project-Id-Version: systemd master\n"
|
"Project-Id-Version: systemd master\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2020-08-19 18:02+0200\n"
|
"POT-Creation-Date: 2020-08-19 18:02+0200\n"
|
||||||
"PO-Revision-Date: 2020-03-25 18:40+0200\n"
|
"PO-Revision-Date: 2020-08-29 11:29+0000\n"
|
||||||
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
|
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
|
||||||
"Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n"
|
"Language-Team: Ukrainian <https://translate.fedoraproject.org/projects/"
|
||||||
|
"systemd/master/uk/>\n"
|
||||||
"Language: uk\n"
|
"Language: uk\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||||
"X-Generator: Lokalize 20.03.70\n"
|
"X-Generator: Weblate 4.2.1\n"
|
||||||
|
|
||||||
#: src/core/org.freedesktop.systemd1.policy.in:22
|
#: src/core/org.freedesktop.systemd1.policy.in:22
|
||||||
msgid "Send passphrase back to system"
|
msgid "Send passphrase back to system"
|
||||||
msgstr "Надіслати пароль назад у систему"
|
msgstr "Надсилання пароля назад у систему"
|
||||||
|
|
||||||
#: src/core/org.freedesktop.systemd1.policy.in:23
|
#: src/core/org.freedesktop.systemd1.policy.in:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to send the entered passphrase back to the system."
|
"Authentication is required to send the entered passphrase back to the system."
|
||||||
msgstr ""
|
msgstr "Для надсилання введеного пароля до системи слід пройти розпізнавання."
|
||||||
"Потрібна автентифікація, щоб надіслати введений пароль назад у систему."
|
|
||||||
|
|
||||||
#: src/core/org.freedesktop.systemd1.policy.in:33
|
#: src/core/org.freedesktop.systemd1.policy.in:33
|
||||||
msgid "Manage system services or other units"
|
msgid "Manage system services or other units"
|
||||||
msgstr "Керувати системними службами й іншими одиницями systemd"
|
msgstr "Керування системними службами й іншими одиницями systemd"
|
||||||
|
|
||||||
#: src/core/org.freedesktop.systemd1.policy.in:34
|
#: src/core/org.freedesktop.systemd1.policy.in:34
|
||||||
msgid "Authentication is required to manage system services or other units."
|
msgid "Authentication is required to manage system services or other units."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб керувати системними службами й іншими одиницями "
|
"Для керування системними службами й іншими одиницями systemd слід пройти "
|
||||||
"systemd."
|
"розпізнавання."
|
||||||
|
|
||||||
#: src/core/org.freedesktop.systemd1.policy.in:43
|
#: src/core/org.freedesktop.systemd1.policy.in:43
|
||||||
msgid "Manage system service or unit files"
|
msgid "Manage system service or unit files"
|
||||||
msgstr "Керувати системними службами й одиницями systemd"
|
msgstr "Керування системними службами й одиницями systemd"
|
||||||
|
|
||||||
#: src/core/org.freedesktop.systemd1.policy.in:44
|
#: src/core/org.freedesktop.systemd1.policy.in:44
|
||||||
msgid "Authentication is required to manage system service or unit files."
|
msgid "Authentication is required to manage system service or unit files."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб керувати системними службами й одиницями "
|
"Для керування системними службами й одиницями systemd слід пройти "
|
||||||
"systemd."
|
"розпізнавання."
|
||||||
|
|
||||||
#: src/core/org.freedesktop.systemd1.policy.in:54
|
#: src/core/org.freedesktop.systemd1.policy.in:54
|
||||||
msgid "Set or unset system and service manager environment variables"
|
msgid "Set or unset system and service manager environment variables"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Встановити або забрати змінну середовища з керування службами і системою"
|
"Встановлення і скасування встановлення змінних середовища для керування "
|
||||||
|
"службами і системою"
|
||||||
|
|
||||||
#: src/core/org.freedesktop.systemd1.policy.in:55
|
#: src/core/org.freedesktop.systemd1.policy.in:55
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to set or unset system and service manager "
|
"Authentication is required to set or unset system and service manager "
|
||||||
"environment variables."
|
"environment variables."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб установити або забрати змінні середовища з "
|
"Для встановлення або скасовування встановлення змінних середовища для "
|
||||||
"керування службами і системою."
|
"керування службами і системою слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/core/org.freedesktop.systemd1.policy.in:64
|
#: src/core/org.freedesktop.systemd1.policy.in:64
|
||||||
msgid "Reload the systemd state"
|
msgid "Reload the systemd state"
|
||||||
msgstr "Перезапустити стан системи"
|
msgstr "Перезавантаження стану systemd"
|
||||||
|
|
||||||
#: src/core/org.freedesktop.systemd1.policy.in:65
|
#: src/core/org.freedesktop.systemd1.policy.in:65
|
||||||
msgid "Authentication is required to reload the systemd state."
|
msgid "Authentication is required to reload the systemd state."
|
||||||
msgstr "Потрібна автентифікація, щоб перезапустити стан системи."
|
msgstr "Для перезавантаження стану systemd слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/home/org.freedesktop.home1.policy:13
|
#: src/home/org.freedesktop.home1.policy:13
|
||||||
msgid "Create a home area"
|
msgid "Create a home area"
|
||||||
|
@ -127,31 +128,31 @@ msgstr ""
|
||||||
|
|
||||||
#: src/hostname/org.freedesktop.hostname1.policy:20
|
#: src/hostname/org.freedesktop.hostname1.policy:20
|
||||||
msgid "Set hostname"
|
msgid "Set hostname"
|
||||||
msgstr "Встановити назву вузла"
|
msgstr "Встановлення назви вузла"
|
||||||
|
|
||||||
#: src/hostname/org.freedesktop.hostname1.policy:21
|
#: src/hostname/org.freedesktop.hostname1.policy:21
|
||||||
msgid "Authentication is required to set the local hostname."
|
msgid "Authentication is required to set the local hostname."
|
||||||
msgstr "Потрібна автентифікація, щоб встановити назву локального вузла."
|
msgstr "Для встановлення назви локального вузла слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/hostname/org.freedesktop.hostname1.policy:30
|
#: src/hostname/org.freedesktop.hostname1.policy:30
|
||||||
msgid "Set static hostname"
|
msgid "Set static hostname"
|
||||||
msgstr "Встановити статичну назву вузла"
|
msgstr "Встановлення статичної назви вузла"
|
||||||
|
|
||||||
#: src/hostname/org.freedesktop.hostname1.policy:31
|
#: src/hostname/org.freedesktop.hostname1.policy:31
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to set the statically configured local hostname, "
|
"Authentication is required to set the statically configured local hostname, "
|
||||||
"as well as the pretty hostname."
|
"as well as the pretty hostname."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб вказати статично налаштовану назву локального "
|
"Для встановлення статично налаштованої назви локального вузла і форматованої "
|
||||||
"вузла, так само й форматовану."
|
"назви слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/hostname/org.freedesktop.hostname1.policy:41
|
#: src/hostname/org.freedesktop.hostname1.policy:41
|
||||||
msgid "Set machine information"
|
msgid "Set machine information"
|
||||||
msgstr "Встановити інформацію про машину"
|
msgstr "Встановлення даних щодо машини"
|
||||||
|
|
||||||
#: src/hostname/org.freedesktop.hostname1.policy:42
|
#: src/hostname/org.freedesktop.hostname1.policy:42
|
||||||
msgid "Authentication is required to set local machine information."
|
msgid "Authentication is required to set local machine information."
|
||||||
msgstr "Потрібна автентифікація, щоб вказати локальну інформацію про машини."
|
msgstr "Для встановлення даних щодо локальної машини слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/hostname/org.freedesktop.hostname1.policy:51
|
#: src/hostname/org.freedesktop.hostname1.policy:51
|
||||||
msgid "Get product UUID"
|
msgid "Get product UUID"
|
||||||
|
@ -159,371 +160,378 @@ msgstr "Отримання UUID продукту"
|
||||||
|
|
||||||
#: src/hostname/org.freedesktop.hostname1.policy:52
|
#: src/hostname/org.freedesktop.hostname1.policy:52
|
||||||
msgid "Authentication is required to get product UUID."
|
msgid "Authentication is required to get product UUID."
|
||||||
msgstr "Потрібна автентифікація, щоб отримати UUID продукту."
|
msgstr "Для отримання UUID продукту слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/import/org.freedesktop.import1.policy:22
|
#: src/import/org.freedesktop.import1.policy:22
|
||||||
msgid "Import a VM or container image"
|
msgid "Import a VM or container image"
|
||||||
msgstr "Імпортувати образ контейнера або віртуальної машини"
|
msgstr "Імпортування образу контейнера або віртуальної машини"
|
||||||
|
|
||||||
#: src/import/org.freedesktop.import1.policy:23
|
#: src/import/org.freedesktop.import1.policy:23
|
||||||
msgid "Authentication is required to import a VM or container image"
|
msgid "Authentication is required to import a VM or container image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб імпортувати образ контейнера або віртуальної "
|
"Для імпортування образу контейнера або віртуальної машини слід пройти "
|
||||||
"машини"
|
"розпізнавання"
|
||||||
|
|
||||||
#: src/import/org.freedesktop.import1.policy:32
|
#: src/import/org.freedesktop.import1.policy:32
|
||||||
msgid "Export a VM or container image"
|
msgid "Export a VM or container image"
|
||||||
msgstr "Експортувати образ контейнера або віртуальної машини"
|
msgstr "Експортування образу контейнера або віртуальної машини"
|
||||||
|
|
||||||
#: src/import/org.freedesktop.import1.policy:33
|
#: src/import/org.freedesktop.import1.policy:33
|
||||||
msgid "Authentication is required to export a VM or container image"
|
msgid "Authentication is required to export a VM or container image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб експортувати образ контейнера або віртуальної "
|
"Для експортування образу контейнера або віртуальної машини слід пройти "
|
||||||
"машини"
|
"розпізнавання"
|
||||||
|
|
||||||
#: src/import/org.freedesktop.import1.policy:42
|
#: src/import/org.freedesktop.import1.policy:42
|
||||||
msgid "Download a VM or container image"
|
msgid "Download a VM or container image"
|
||||||
msgstr "Звантажити образ контейнера або віртуальної машини"
|
msgstr "Отримання образу контейнера або віртуальної машини"
|
||||||
|
|
||||||
#: src/import/org.freedesktop.import1.policy:43
|
#: src/import/org.freedesktop.import1.policy:43
|
||||||
msgid "Authentication is required to download a VM or container image"
|
msgid "Authentication is required to download a VM or container image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб звантажити образ контейнера або віртуальної "
|
"Для отримання образу контейнера або віртуальної машини слід пройти "
|
||||||
"машини"
|
"розпізнавання"
|
||||||
|
|
||||||
#: src/locale/org.freedesktop.locale1.policy:22
|
#: src/locale/org.freedesktop.locale1.policy:22
|
||||||
msgid "Set system locale"
|
msgid "Set system locale"
|
||||||
msgstr "Вказати системну локаль"
|
msgstr "Визначення системної локалі"
|
||||||
|
|
||||||
#: src/locale/org.freedesktop.locale1.policy:23
|
#: src/locale/org.freedesktop.locale1.policy:23
|
||||||
msgid "Authentication is required to set the system locale."
|
msgid "Authentication is required to set the system locale."
|
||||||
msgstr "Потрібна автентифікація, щоб встановити системну локаль."
|
msgstr "Для визначення системної локалі слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/locale/org.freedesktop.locale1.policy:33
|
#: src/locale/org.freedesktop.locale1.policy:33
|
||||||
msgid "Set system keyboard settings"
|
msgid "Set system keyboard settings"
|
||||||
msgstr "Вказати налаштування системної клавіатури"
|
msgstr "Визначення загальносистемних параметрів клавіатури"
|
||||||
|
|
||||||
#: src/locale/org.freedesktop.locale1.policy:34
|
#: src/locale/org.freedesktop.locale1.policy:34
|
||||||
msgid "Authentication is required to set the system keyboard settings."
|
msgid "Authentication is required to set the system keyboard settings."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб вказати налаштування системної клавіатури."
|
"Для визначення загальносистемних параметрів клавіатури слід пройти "
|
||||||
|
"розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:22
|
#: src/login/org.freedesktop.login1.policy:22
|
||||||
msgid "Allow applications to inhibit system shutdown"
|
msgid "Allow applications to inhibit system shutdown"
|
||||||
msgstr "Дозволити програмам перешкоджати вимкненню системи"
|
msgstr "Уможливлення перешкоджання вимкненню системи програмами"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:23
|
#: src/login/org.freedesktop.login1.policy:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required for an application to inhibit system shutdown."
|
"Authentication is required for an application to inhibit system shutdown."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб дозволити програмам перешкоджати вимкненню "
|
"Для того, щоб уможливити програмам перешкоджання вимкненню системи, слід "
|
||||||
"системи."
|
"пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:33
|
#: src/login/org.freedesktop.login1.policy:33
|
||||||
msgid "Allow applications to delay system shutdown"
|
msgid "Allow applications to delay system shutdown"
|
||||||
msgstr "Дозволити програмам затримувати вимкнення системи"
|
msgstr "Уможливлення затримки вимкнення системи програмами"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:34
|
#: src/login/org.freedesktop.login1.policy:34
|
||||||
msgid "Authentication is required for an application to delay system shutdown."
|
msgid "Authentication is required for an application to delay system shutdown."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб дозволити програмам затримувати вимкнення "
|
"Для того, щоб уможливити програмам затримання вимкнення системи, слід пройти "
|
||||||
"системи."
|
"розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:44
|
#: src/login/org.freedesktop.login1.policy:44
|
||||||
msgid "Allow applications to inhibit system sleep"
|
msgid "Allow applications to inhibit system sleep"
|
||||||
msgstr "Дозволити програмам перешкоджати засинанню системи"
|
msgstr "Уможливлення перешкоджання присиплянню системи програмами"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:45
|
#: src/login/org.freedesktop.login1.policy:45
|
||||||
msgid "Authentication is required for an application to inhibit system sleep."
|
msgid "Authentication is required for an application to inhibit system sleep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб дозволити програмам перешкоджати засинанню "
|
"Для того, щоб уможливити програмам перешкоджання присиплянню системи, слід "
|
||||||
"системи."
|
"пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:55
|
#: src/login/org.freedesktop.login1.policy:55
|
||||||
msgid "Allow applications to delay system sleep"
|
msgid "Allow applications to delay system sleep"
|
||||||
msgstr "Дозволити програмами затримувати засинання системи"
|
msgstr "Уможливлення затримання присипляння системи програмами"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:56
|
#: src/login/org.freedesktop.login1.policy:56
|
||||||
msgid "Authentication is required for an application to delay system sleep."
|
msgid "Authentication is required for an application to delay system sleep."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб дозволити програмам затримувати засинання "
|
"Для того, щоб уможливити програмам затримання присипляння системи, слід "
|
||||||
"системи."
|
"пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:65
|
#: src/login/org.freedesktop.login1.policy:65
|
||||||
msgid "Allow applications to inhibit automatic system suspend"
|
msgid "Allow applications to inhibit automatic system suspend"
|
||||||
msgstr "Дозволити програмам перешкоджати автоматичному призупиненню системи"
|
msgstr ""
|
||||||
|
"Уможливлення перешкоджання автоматичному призупиненню системи програмами"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:66
|
#: src/login/org.freedesktop.login1.policy:66
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required for an application to inhibit automatic system "
|
"Authentication is required for an application to inhibit automatic system "
|
||||||
"suspend."
|
"suspend."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб дозволити програмам перешкоджати автоматичному "
|
"Для того, щоб уможливити програмам перешкоджання автоматичне призупинення "
|
||||||
"призупиненню системи."
|
"роботи системи, слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:75
|
#: src/login/org.freedesktop.login1.policy:75
|
||||||
msgid "Allow applications to inhibit system handling of the power key"
|
msgid "Allow applications to inhibit system handling of the power key"
|
||||||
msgstr "Дозволити програмам перешкоджати обробленню системою клавіші живлення"
|
msgstr ""
|
||||||
|
"Уможливлення перешкоджання обробці системою клавіші живлення для програм"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:76
|
#: src/login/org.freedesktop.login1.policy:76
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required for an application to inhibit system handling of "
|
"Authentication is required for an application to inhibit system handling of "
|
||||||
"the power key."
|
"the power key."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб дозволити програмам перешкоджати обробленню "
|
"Для того, щоб дозволити програмам перешкоджати обробленню системою клавіші "
|
||||||
"системою клавіші живлення."
|
"живлення, слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:86
|
#: src/login/org.freedesktop.login1.policy:86
|
||||||
msgid "Allow applications to inhibit system handling of the suspend key"
|
msgid "Allow applications to inhibit system handling of the suspend key"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Дозволити програмам перешкоджати обробленню системою клавіші призупинення"
|
"Уможливлення перешкоджання обробці системою клавіші призупинення для програм"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:87
|
#: src/login/org.freedesktop.login1.policy:87
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required for an application to inhibit system handling of "
|
"Authentication is required for an application to inhibit system handling of "
|
||||||
"the suspend key."
|
"the suspend key."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб дозволити програмам перешкоджати обробленню "
|
"Для того, щоб дозволити програмам перешкоджати обробленню системою клавіші "
|
||||||
"системою клавіші призупинення."
|
"призупинення, слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:97
|
#: src/login/org.freedesktop.login1.policy:97
|
||||||
msgid "Allow applications to inhibit system handling of the hibernate key"
|
msgid "Allow applications to inhibit system handling of the hibernate key"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Дозволити програмам перешкоджати обробленню системою клавіші присипання"
|
"Уможливлення перешкоджання обробці системою клавіші присипляння для програм"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:98
|
#: src/login/org.freedesktop.login1.policy:98
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required for an application to inhibit system handling of "
|
"Authentication is required for an application to inhibit system handling of "
|
||||||
"the hibernate key."
|
"the hibernate key."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб дозволити програмам перешкоджати обробленню "
|
"Для того, щоб дозволити програмам перешкоджати обробленню системою клавіші "
|
||||||
"системою клавіші присипання."
|
"присипляння, слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:107
|
#: src/login/org.freedesktop.login1.policy:107
|
||||||
msgid "Allow applications to inhibit system handling of the lid switch"
|
msgid "Allow applications to inhibit system handling of the lid switch"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Дозволити програмам перешкоджати обробленню системою клавіші перемикання "
|
"Уможливлення перешкоджання обробці системою перемикання кришки для програм"
|
||||||
"кришки"
|
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:108
|
#: src/login/org.freedesktop.login1.policy:108
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required for an application to inhibit system handling of "
|
"Authentication is required for an application to inhibit system handling of "
|
||||||
"the lid switch."
|
"the lid switch."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб дозволити програмам перешкоджати обробленню "
|
"Для того, щоб дозволити програмам перешкоджати обробленню системою "
|
||||||
"системою клавіші перемикання кришки."
|
"перемикання кришки, слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:117
|
#: src/login/org.freedesktop.login1.policy:117
|
||||||
msgid "Allow non-logged-in user to run programs"
|
msgid "Allow non-logged-in user to run programs"
|
||||||
msgstr "Дозволити незареєстрованим користувачам запускати програми"
|
msgstr "Дозвіл для незареєстрованого користувача на запуск програм"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:118
|
#: src/login/org.freedesktop.login1.policy:118
|
||||||
msgid "Explicit request is required to run programs as a non-logged-in user."
|
msgid "Explicit request is required to run programs as a non-logged-in user."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб дозволити незареєстрованим користувачам "
|
"Для того, щоб дозволити незареєстрованому користувачеві запускати програми, "
|
||||||
"запускати програми."
|
"потрібен явний запит."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:127
|
#: src/login/org.freedesktop.login1.policy:127
|
||||||
msgid "Allow non-logged-in users to run programs"
|
msgid "Allow non-logged-in users to run programs"
|
||||||
msgstr "Дозволити незареєстрованим користувачам запускати програми"
|
msgstr "Дозвіл для незареєстрованих користувачів на запуск програм"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:128
|
#: src/login/org.freedesktop.login1.policy:128
|
||||||
msgid "Authentication is required to run programs as a non-logged-in user."
|
msgid "Authentication is required to run programs as a non-logged-in user."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб дозволити незареєстрованим користувачам "
|
"Для того, щоб дозволити незареєстрованому користувачеві запускати програми, "
|
||||||
"запускати програми."
|
"слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:137
|
#: src/login/org.freedesktop.login1.policy:137
|
||||||
msgid "Allow attaching devices to seats"
|
msgid "Allow attaching devices to seats"
|
||||||
msgstr "Дозволити під'єднання пристроїв до місць"
|
msgstr "Дозвіл на під'єднання пристроїв до місць"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:138
|
#: src/login/org.freedesktop.login1.policy:138
|
||||||
msgid "Authentication is required to attach a device to a seat."
|
msgid "Authentication is required to attach a device to a seat."
|
||||||
msgstr "Потрібна автентифікація, щоб під'єднувати пристрої до місць."
|
msgstr ""
|
||||||
|
"Для того, щоб під'єднувати пристрої до місць, слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:148
|
#: src/login/org.freedesktop.login1.policy:148
|
||||||
msgid "Flush device to seat attachments"
|
msgid "Flush device to seat attachments"
|
||||||
msgstr "Очисний пристрій для під'єднань до місця"
|
msgstr "Вилучення прив'язки пристроїв для місць"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:149
|
#: src/login/org.freedesktop.login1.policy:149
|
||||||
msgid "Authentication is required to reset how devices are attached to seats."
|
msgid "Authentication is required to reset how devices are attached to seats."
|
||||||
msgstr ""
|
msgstr "Для скидання прив'язки пристроїв до місць слід пройти розпізнавання."
|
||||||
"Потрібна автентифікація, щоб перезапустити спосіб під'єднання до місць."
|
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:158
|
#: src/login/org.freedesktop.login1.policy:158
|
||||||
msgid "Power off the system"
|
msgid "Power off the system"
|
||||||
msgstr "Вимкнути систему"
|
msgstr "Вимикання системи"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:159
|
#: src/login/org.freedesktop.login1.policy:159
|
||||||
msgid "Authentication is required to power off the system."
|
msgid "Authentication is required to power off the system."
|
||||||
msgstr "Потрібна автентифікація, щоб вимкнути систему."
|
msgstr "Для вимикання системи слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:169
|
#: src/login/org.freedesktop.login1.policy:169
|
||||||
msgid "Power off the system while other users are logged in"
|
msgid "Power off the system while other users are logged in"
|
||||||
msgstr "Вимкнути систему, коли інші користувачі ще в ній"
|
msgstr "Вимикання системи, коли інші користувачі ще у ній"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:170
|
#: src/login/org.freedesktop.login1.policy:170
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to power off the system while other users are "
|
"Authentication is required to power off the system while other users are "
|
||||||
"logged in."
|
"logged in."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб вимкнути систему, коли інші користувачі в ній."
|
"Для вимикання системи, коли у ній ще працюють інші користувачі, слід пройти "
|
||||||
|
"розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:180
|
#: src/login/org.freedesktop.login1.policy:180
|
||||||
msgid "Power off the system while an application is inhibiting this"
|
msgid "Power off the system while an application is inhibiting this"
|
||||||
msgstr "Вимкнути систему, коли програми намагаються перешкодити цьому"
|
msgstr "Вимикання системи, коли програми намагаються перешкодити цьому"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:181
|
#: src/login/org.freedesktop.login1.policy:181
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to power off the system while an application is "
|
"Authentication is required to power off the system while an application is "
|
||||||
"inhibiting this."
|
"inhibiting this."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб вимкнути систему, коли програми намагаються "
|
"Для того, щоб вимкнути систему, коли програми намагаються перешкодити цьому, "
|
||||||
"перешкодити цьому."
|
"слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:191
|
#: src/login/org.freedesktop.login1.policy:191
|
||||||
msgid "Reboot the system"
|
msgid "Reboot the system"
|
||||||
msgstr "Перезавантажити систему"
|
msgstr "Перезавантаження системи"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:192
|
#: src/login/org.freedesktop.login1.policy:192
|
||||||
msgid "Authentication is required to reboot the system."
|
msgid "Authentication is required to reboot the system."
|
||||||
msgstr "Для перезавантаження системи необхідна ідентифікація."
|
msgstr "Для перезавантаження системи слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:202
|
#: src/login/org.freedesktop.login1.policy:202
|
||||||
msgid "Reboot the system while other users are logged in"
|
msgid "Reboot the system while other users are logged in"
|
||||||
msgstr "Перезавантажити, якщо інші користувачі в системі"
|
msgstr "Перезавантаження, якщо інші користувачі в системі"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:203
|
#: src/login/org.freedesktop.login1.policy:203
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to reboot the system while other users are logged "
|
"Authentication is required to reboot the system while other users are logged "
|
||||||
"in."
|
"in."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб перезапустити систему, коли інші користувачі в "
|
"Для перезавантаження системи, коли у ній ще працюють інші користувачі, слід "
|
||||||
"ній."
|
"пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:213
|
#: src/login/org.freedesktop.login1.policy:213
|
||||||
msgid "Reboot the system while an application is inhibiting this"
|
msgid "Reboot the system while an application is inhibiting this"
|
||||||
msgstr "Перезапустити систему, коли програми намагаються перешкодити цьому"
|
msgstr "Перезапуск системи, коли програми намагаються перешкодити цьому"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:214
|
#: src/login/org.freedesktop.login1.policy:214
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to reboot the system while an application is "
|
"Authentication is required to reboot the system while an application is "
|
||||||
"inhibiting this."
|
"inhibiting this."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб перезапустити систему, коли програми "
|
"Для того, щоб перезавантажити систему, коли програми намагаються перешкодити "
|
||||||
"намагаються перешкодити цьому."
|
"цьому, слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:224
|
#: src/login/org.freedesktop.login1.policy:224
|
||||||
msgid "Halt the system"
|
msgid "Halt the system"
|
||||||
msgstr "Зупинити систему"
|
msgstr "Зупинення системи"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:225
|
#: src/login/org.freedesktop.login1.policy:225
|
||||||
msgid "Authentication is required to halt the system."
|
msgid "Authentication is required to halt the system."
|
||||||
msgstr "Потрібна автентифікація, щоб зупинити систему."
|
msgstr "Для зупинення системи слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:235
|
#: src/login/org.freedesktop.login1.policy:235
|
||||||
msgid "Halt the system while other users are logged in"
|
msgid "Halt the system while other users are logged in"
|
||||||
msgstr "Зупинити систему, коли інші користувачі в ній"
|
msgstr "Зупинення системи, коли інші користувачі в ній"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:236
|
#: src/login/org.freedesktop.login1.policy:236
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to halt the system while other users are logged "
|
"Authentication is required to halt the system while other users are logged "
|
||||||
"in."
|
"in."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб зупинити систему, коли інші користувачі в ній."
|
"Для зупинення системи, коли у ній ще працюють інші користувачі, слід пройти "
|
||||||
|
"розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:246
|
#: src/login/org.freedesktop.login1.policy:246
|
||||||
msgid "Halt the system while an application is inhibiting this"
|
msgid "Halt the system while an application is inhibiting this"
|
||||||
msgstr "Зупинити систему, коли програми намагаються перешкодити цьому"
|
msgstr "Зупинення системи, коли програми намагаються перешкодити цьому"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:247
|
#: src/login/org.freedesktop.login1.policy:247
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to halt the system while an application is "
|
"Authentication is required to halt the system while an application is "
|
||||||
"inhibiting this."
|
"inhibiting this."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб зупинити систему, коли програма намагається "
|
"Для того, щоб зупинити систему, коли програми намагаються перешкодити цьому, "
|
||||||
"перешкодити цьому."
|
"слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:257
|
#: src/login/org.freedesktop.login1.policy:257
|
||||||
msgid "Suspend the system"
|
msgid "Suspend the system"
|
||||||
msgstr "Призупинити систему"
|
msgstr "Призупинення системи"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:258
|
#: src/login/org.freedesktop.login1.policy:258
|
||||||
msgid "Authentication is required to suspend the system."
|
msgid "Authentication is required to suspend the system."
|
||||||
msgstr "Потрібна автентифікація, щоб призупинити систему."
|
msgstr "Для призупинення системи слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:267
|
#: src/login/org.freedesktop.login1.policy:267
|
||||||
msgid "Suspend the system while other users are logged in"
|
msgid "Suspend the system while other users are logged in"
|
||||||
msgstr "Призупинити систему, коли інші користувачі в ній"
|
msgstr "Призупинення системи, коли інші користувачі в ній"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:268
|
#: src/login/org.freedesktop.login1.policy:268
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to suspend the system while other users are "
|
"Authentication is required to suspend the system while other users are "
|
||||||
"logged in."
|
"logged in."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб призупинити систему, коли інші користувачі в "
|
"Для призупинення системи, коли у ній ще працюють інші користувачі, слід "
|
||||||
"ній."
|
"пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:278
|
#: src/login/org.freedesktop.login1.policy:278
|
||||||
msgid "Suspend the system while an application is inhibiting this"
|
msgid "Suspend the system while an application is inhibiting this"
|
||||||
msgstr "Призупинити систему, коли програми намагаються перешкодити цьому"
|
msgstr "Призупинення системи, коли програми намагаються перешкодити цьому"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:279
|
#: src/login/org.freedesktop.login1.policy:279
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to suspend the system while an application is "
|
"Authentication is required to suspend the system while an application is "
|
||||||
"inhibiting this."
|
"inhibiting this."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб призупинити систему, коли програми намагаються "
|
"Для того, щоб призупинити систему, коли програми намагаються перешкодити "
|
||||||
"перешкодити цьому."
|
"цьому, слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:289
|
#: src/login/org.freedesktop.login1.policy:289
|
||||||
msgid "Hibernate the system"
|
msgid "Hibernate the system"
|
||||||
msgstr "Приспати систему"
|
msgstr "Присипляння системи"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:290
|
#: src/login/org.freedesktop.login1.policy:290
|
||||||
msgid "Authentication is required to hibernate the system."
|
msgid "Authentication is required to hibernate the system."
|
||||||
msgstr "Потрібна автентифікація, щоб приспати систему."
|
msgstr "Для присипляння системи слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:299
|
#: src/login/org.freedesktop.login1.policy:299
|
||||||
msgid "Hibernate the system while other users are logged in"
|
msgid "Hibernate the system while other users are logged in"
|
||||||
msgstr "Приспати систему, коли інші користувачі в ній"
|
msgstr "Присипляння системи, коли інші користувачі в ній"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:300
|
#: src/login/org.freedesktop.login1.policy:300
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to hibernate the system while other users are "
|
"Authentication is required to hibernate the system while other users are "
|
||||||
"logged in."
|
"logged in."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб присипання систему, коли інші користувачі в ній."
|
"Для присипляння системи, коли у ній ще працюють інші користувачі, слід "
|
||||||
|
"пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:310
|
#: src/login/org.freedesktop.login1.policy:310
|
||||||
msgid "Hibernate the system while an application is inhibiting this"
|
msgid "Hibernate the system while an application is inhibiting this"
|
||||||
msgstr "Приспати систему, коли програми намагаються перешкодити цьому"
|
msgstr "Присипляння системи, коли програми намагаються перешкодити цьому"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:311
|
#: src/login/org.freedesktop.login1.policy:311
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to hibernate the system while an application is "
|
"Authentication is required to hibernate the system while an application is "
|
||||||
"inhibiting this."
|
"inhibiting this."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб приспати систему, коли програми намагаються "
|
"Для того, щоб приспати систему, коли програми намагаються перешкодити цьому, "
|
||||||
"перешкодити цьому."
|
"слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:321
|
#: src/login/org.freedesktop.login1.policy:321
|
||||||
msgid "Manage active sessions, users and seats"
|
msgid "Manage active sessions, users and seats"
|
||||||
msgstr "Керувати сеансами, користувачами і робочими місцями"
|
msgstr "Керування сеансами, користувачами і робочими місцями"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:322
|
#: src/login/org.freedesktop.login1.policy:322
|
||||||
msgid "Authentication is required to manage active sessions, users and seats."
|
msgid "Authentication is required to manage active sessions, users and seats."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб керувати сеансами, користувачами і робочими "
|
"Для того, щоб керувати сеансами, користувачами і робочими місцями, слід "
|
||||||
"місцями."
|
"пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:331
|
#: src/login/org.freedesktop.login1.policy:331
|
||||||
msgid "Lock or unlock active sessions"
|
msgid "Lock or unlock active sessions"
|
||||||
msgstr "Заблокувати або розблокувати сеанси"
|
msgstr "Блокування і розблоковування сеансів"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:332
|
#: src/login/org.freedesktop.login1.policy:332
|
||||||
msgid "Authentication is required to lock or unlock active sessions."
|
msgid "Authentication is required to lock or unlock active sessions."
|
||||||
msgstr "Потрібна автентифікація, щоб заблокувати або розблокувати сеанси."
|
msgstr ""
|
||||||
|
"Для того, щоб заблокувати або розблокувати активні сеанси, слід пройти "
|
||||||
|
"розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:341
|
#: src/login/org.freedesktop.login1.policy:341
|
||||||
msgid "Set the reboot \"reason\" in the kernel"
|
msgid "Set the reboot \"reason\" in the kernel"
|
||||||
|
@ -532,7 +540,8 @@ msgstr "Встановлення «причини» перезавантажен
|
||||||
#: src/login/org.freedesktop.login1.policy:342
|
#: src/login/org.freedesktop.login1.policy:342
|
||||||
msgid "Authentication is required to set the reboot \"reason\" in the kernel."
|
msgid "Authentication is required to set the reboot \"reason\" in the kernel."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб встановити «причину» перезавантаження у ядрі."
|
"Для того, щоб встановити «причину» перезавантаження у ядрі, слід пройти "
|
||||||
|
"розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:352
|
#: src/login/org.freedesktop.login1.policy:352
|
||||||
msgid "Indicate to the firmware to boot to setup interface"
|
msgid "Indicate to the firmware to boot to setup interface"
|
||||||
|
@ -543,8 +552,8 @@ msgid ""
|
||||||
"Authentication is required to indicate to the firmware to boot to setup "
|
"Authentication is required to indicate to the firmware to boot to setup "
|
||||||
"interface."
|
"interface."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб дозволити мікрокоду визначати, чи завантажувати "
|
"Для того, щоб дозволити мікрокоду визначати, чи завантажувати інтерфейс "
|
||||||
"інтерфейс встановлення."
|
"встановлення, слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:363
|
#: src/login/org.freedesktop.login1.policy:363
|
||||||
msgid "Indicate to the boot loader to boot to the boot loader menu"
|
msgid "Indicate to the boot loader to boot to the boot loader menu"
|
||||||
|
@ -555,8 +564,8 @@ msgid ""
|
||||||
"Authentication is required to indicate to the boot loader to boot to the "
|
"Authentication is required to indicate to the boot loader to boot to the "
|
||||||
"boot loader menu."
|
"boot loader menu."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб вказати завантажувачу, що слід завантажитися до "
|
"Для того, щоб вказати завантажувачу, що слід завантажитися до меню "
|
||||||
"меню завантажувача."
|
"завантажувача, слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:374
|
#: src/login/org.freedesktop.login1.policy:374
|
||||||
msgid "Indicate to the boot loader to boot a specific entry"
|
msgid "Indicate to the boot loader to boot a specific entry"
|
||||||
|
@ -567,16 +576,16 @@ msgid ""
|
||||||
"Authentication is required to indicate to the boot loader to boot into a "
|
"Authentication is required to indicate to the boot loader to boot into a "
|
||||||
"specific boot loader entry."
|
"specific boot loader entry."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб вказати завантажувачу, що слід завантажити "
|
"Для того, щоб вказати завантажувачу, що слід завантажити певний пункт меню "
|
||||||
"певний пункт меню завантаження."
|
"завантаження, слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:385
|
#: src/login/org.freedesktop.login1.policy:385
|
||||||
msgid "Set a wall message"
|
msgid "Set a wall message"
|
||||||
msgstr "Вказати повідомлення на стіні"
|
msgstr "Встановлення повідомлення на стіні"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:386
|
#: src/login/org.freedesktop.login1.policy:386
|
||||||
msgid "Authentication is required to set a wall message"
|
msgid "Authentication is required to set a wall message"
|
||||||
msgstr "Потрібна автентифікація, щоб вказати повідомлення на стіні"
|
msgstr "Для встановлення повідомлення на стіні слід пройти розпізнавання"
|
||||||
|
|
||||||
#: src/login/org.freedesktop.login1.policy:395
|
#: src/login/org.freedesktop.login1.policy:395
|
||||||
msgid "Change Session"
|
msgid "Change Session"
|
||||||
|
@ -588,77 +597,81 @@ msgstr "Для зміни віртуального термінала слід
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:22
|
#: src/machine/org.freedesktop.machine1.policy:22
|
||||||
msgid "Log into a local container"
|
msgid "Log into a local container"
|
||||||
msgstr "Увійти в локальний контейнер"
|
msgstr "Вхід до локального контейнера"
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:23
|
#: src/machine/org.freedesktop.machine1.policy:23
|
||||||
msgid "Authentication is required to log into a local container."
|
msgid "Authentication is required to log into a local container."
|
||||||
msgstr "Потрібна автентифікація, щоб увійти в локальний контейнер."
|
msgstr ""
|
||||||
|
"Для того, щоб увійти до локального контейнера, слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:32
|
#: src/machine/org.freedesktop.machine1.policy:32
|
||||||
msgid "Log into the local host"
|
msgid "Log into the local host"
|
||||||
msgstr "Увійти в локальний вузол"
|
msgstr "Вхід до локального вузла"
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:33
|
#: src/machine/org.freedesktop.machine1.policy:33
|
||||||
msgid "Authentication is required to log into the local host."
|
msgid "Authentication is required to log into the local host."
|
||||||
msgstr "Потрібна автентифікація, щоб увійти в локальний вузол."
|
msgstr "Для входу до локального вузла слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:42
|
#: src/machine/org.freedesktop.machine1.policy:42
|
||||||
msgid "Acquire a shell in a local container"
|
msgid "Acquire a shell in a local container"
|
||||||
msgstr "Перейняти оболонку в локальному контейнері"
|
msgstr "Отримання командної оболонки у локальному контейнері"
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:43
|
#: src/machine/org.freedesktop.machine1.policy:43
|
||||||
msgid "Authentication is required to acquire a shell in a local container."
|
msgid "Authentication is required to acquire a shell in a local container."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб перейняти оболонку в локальному контейнері."
|
"Для отримання командної оболонки у локальному контейнері слід пройти "
|
||||||
|
"розпізнавання."
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:53
|
#: src/machine/org.freedesktop.machine1.policy:53
|
||||||
msgid "Acquire a shell on the local host"
|
msgid "Acquire a shell on the local host"
|
||||||
msgstr "Перейняти оболонку на локальному вузлі"
|
msgstr "Отримання командної оболонки на локальному вузлі"
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:54
|
#: src/machine/org.freedesktop.machine1.policy:54
|
||||||
msgid "Authentication is required to acquire a shell on the local host."
|
msgid "Authentication is required to acquire a shell on the local host."
|
||||||
msgstr "Потрібна автентифікація, щоб перейняти оболонку на локальному вузлі."
|
msgstr ""
|
||||||
|
"Для отримання командної оболонки на локальному вузлі слід пройти "
|
||||||
|
"розпізнавання."
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:64
|
#: src/machine/org.freedesktop.machine1.policy:64
|
||||||
msgid "Acquire a pseudo TTY in a local container"
|
msgid "Acquire a pseudo TTY in a local container"
|
||||||
msgstr "Перейняти псевдо TTY в локальному контейнері"
|
msgstr "Отримання псевдо-TTY у локальному контейнері"
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:65
|
#: src/machine/org.freedesktop.machine1.policy:65
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to acquire a pseudo TTY in a local container."
|
"Authentication is required to acquire a pseudo TTY in a local container."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб перейняти псевдо TTY в локальному контейнері."
|
"Для отримання псевдо-TTY в локальному контейнері слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:74
|
#: src/machine/org.freedesktop.machine1.policy:74
|
||||||
msgid "Acquire a pseudo TTY on the local host"
|
msgid "Acquire a pseudo TTY on the local host"
|
||||||
msgstr "Перейняти псевдо TTY на локальному вузлі"
|
msgstr "Отримання псевдо-TTY на локальному вузлі"
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:75
|
#: src/machine/org.freedesktop.machine1.policy:75
|
||||||
msgid "Authentication is required to acquire a pseudo TTY on the local host."
|
msgid "Authentication is required to acquire a pseudo TTY on the local host."
|
||||||
msgstr "Потрібна автентифікація, щоб перейняти псевдо TTY на локальному вузлі."
|
msgstr "Для отримання псевдо-TTY на локальному вузлі слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:84
|
#: src/machine/org.freedesktop.machine1.policy:84
|
||||||
msgid "Manage local virtual machines and containers"
|
msgid "Manage local virtual machines and containers"
|
||||||
msgstr "Керувати локальними віртуальними машинами і контейнерами"
|
msgstr "Керування локальними віртуальними машинами і контейнерами"
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:85
|
#: src/machine/org.freedesktop.machine1.policy:85
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to manage local virtual machines and containers."
|
"Authentication is required to manage local virtual machines and containers."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб керувати локальними віртуальними машинами і "
|
"Для доступу до керування локальними віртуальними машинами і контейнерами "
|
||||||
"контейнерами."
|
"слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:95
|
#: src/machine/org.freedesktop.machine1.policy:95
|
||||||
msgid "Manage local virtual machine and container images"
|
msgid "Manage local virtual machine and container images"
|
||||||
msgstr "Керувати локальними образами віртуальних машин і контейнерів"
|
msgstr "Керування локальними образами віртуальних машин і контейнерів"
|
||||||
|
|
||||||
#: src/machine/org.freedesktop.machine1.policy:96
|
#: src/machine/org.freedesktop.machine1.policy:96
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to manage local virtual machine and container "
|
"Authentication is required to manage local virtual machine and container "
|
||||||
"images."
|
"images."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб керувати локальними образами віртуальних машин "
|
"Для доступу до керування локальними образами віртуальних машин і контейнерів "
|
||||||
"і контейнерів."
|
"слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/network/org.freedesktop.network1.policy:22
|
#: src/network/org.freedesktop.network1.policy:22
|
||||||
msgid "Set NTP servers"
|
msgid "Set NTP servers"
|
||||||
|
@ -666,7 +679,7 @@ msgstr "Встановлення серверів NTP"
|
||||||
|
|
||||||
#: src/network/org.freedesktop.network1.policy:23
|
#: src/network/org.freedesktop.network1.policy:23
|
||||||
msgid "Authentication is required to set NTP servers."
|
msgid "Authentication is required to set NTP servers."
|
||||||
msgstr "Потрібна автентифікація, щоб встановити сервери NTP."
|
msgstr "Для встановлення серверів NTP слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/network/org.freedesktop.network1.policy:33
|
#: src/network/org.freedesktop.network1.policy:33
|
||||||
#: src/resolve/org.freedesktop.resolve1.policy:44
|
#: src/resolve/org.freedesktop.resolve1.policy:44
|
||||||
|
@ -676,7 +689,7 @@ msgstr "Встановлення серверів DNS"
|
||||||
#: src/network/org.freedesktop.network1.policy:34
|
#: src/network/org.freedesktop.network1.policy:34
|
||||||
#: src/resolve/org.freedesktop.resolve1.policy:45
|
#: src/resolve/org.freedesktop.resolve1.policy:45
|
||||||
msgid "Authentication is required to set DNS servers."
|
msgid "Authentication is required to set DNS servers."
|
||||||
msgstr "Потрібна автентифікація, щоб встановити сервери DNS."
|
msgstr "Для встановлення серверів DNS слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/network/org.freedesktop.network1.policy:44
|
#: src/network/org.freedesktop.network1.policy:44
|
||||||
#: src/resolve/org.freedesktop.resolve1.policy:55
|
#: src/resolve/org.freedesktop.resolve1.policy:55
|
||||||
|
@ -686,7 +699,7 @@ msgstr "Встановлення доменів"
|
||||||
#: src/network/org.freedesktop.network1.policy:45
|
#: src/network/org.freedesktop.network1.policy:45
|
||||||
#: src/resolve/org.freedesktop.resolve1.policy:56
|
#: src/resolve/org.freedesktop.resolve1.policy:56
|
||||||
msgid "Authentication is required to set domains."
|
msgid "Authentication is required to set domains."
|
||||||
msgstr "Потрібна автентифікація, щоб встановити домени."
|
msgstr "Для встановлення доменів слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/network/org.freedesktop.network1.policy:55
|
#: src/network/org.freedesktop.network1.policy:55
|
||||||
#: src/resolve/org.freedesktop.resolve1.policy:66
|
#: src/resolve/org.freedesktop.resolve1.policy:66
|
||||||
|
@ -696,7 +709,7 @@ msgstr "Встановлення типового маршруту"
|
||||||
#: src/network/org.freedesktop.network1.policy:56
|
#: src/network/org.freedesktop.network1.policy:56
|
||||||
#: src/resolve/org.freedesktop.resolve1.policy:67
|
#: src/resolve/org.freedesktop.resolve1.policy:67
|
||||||
msgid "Authentication is required to set default route."
|
msgid "Authentication is required to set default route."
|
||||||
msgstr "Потрібна автентифікація, щоб встановити типовий маршрут."
|
msgstr "Для встановлення типового маршруту слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/network/org.freedesktop.network1.policy:66
|
#: src/network/org.freedesktop.network1.policy:66
|
||||||
#: src/resolve/org.freedesktop.resolve1.policy:77
|
#: src/resolve/org.freedesktop.resolve1.policy:77
|
||||||
|
@ -706,17 +719,17 @@ msgstr "Вмикання або вимикання LLMNR"
|
||||||
#: src/network/org.freedesktop.network1.policy:67
|
#: src/network/org.freedesktop.network1.policy:67
|
||||||
#: src/resolve/org.freedesktop.resolve1.policy:78
|
#: src/resolve/org.freedesktop.resolve1.policy:78
|
||||||
msgid "Authentication is required to enable or disable LLMNR."
|
msgid "Authentication is required to enable or disable LLMNR."
|
||||||
msgstr "Потрібна автентифікація, щоб увімкнути або вимкнути LLMNR."
|
msgstr "Для вмикання або вимикання LLMNR слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/network/org.freedesktop.network1.policy:77
|
#: src/network/org.freedesktop.network1.policy:77
|
||||||
#: src/resolve/org.freedesktop.resolve1.policy:88
|
#: src/resolve/org.freedesktop.resolve1.policy:88
|
||||||
msgid "Enable/disable multicast DNS"
|
msgid "Enable/disable multicast DNS"
|
||||||
msgstr "Вмикання або вимикання трансляційного DNS"
|
msgstr "Вмикання або вимикання трансляційної DNS"
|
||||||
|
|
||||||
#: src/network/org.freedesktop.network1.policy:78
|
#: src/network/org.freedesktop.network1.policy:78
|
||||||
#: src/resolve/org.freedesktop.resolve1.policy:89
|
#: src/resolve/org.freedesktop.resolve1.policy:89
|
||||||
msgid "Authentication is required to enable or disable multicast DNS."
|
msgid "Authentication is required to enable or disable multicast DNS."
|
||||||
msgstr "Потрібна автентифікація, щоб увімкнути або вимкнути трансляційну DNS."
|
msgstr "Для вмикання або вимикання трансляційної DNS слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/network/org.freedesktop.network1.policy:88
|
#: src/network/org.freedesktop.network1.policy:88
|
||||||
#: src/resolve/org.freedesktop.resolve1.policy:99
|
#: src/resolve/org.freedesktop.resolve1.policy:99
|
||||||
|
@ -726,7 +739,7 @@ msgstr "Вмикання і вимикання DNS через TLS"
|
||||||
#: src/network/org.freedesktop.network1.policy:89
|
#: src/network/org.freedesktop.network1.policy:89
|
||||||
#: src/resolve/org.freedesktop.resolve1.policy:100
|
#: src/resolve/org.freedesktop.resolve1.policy:100
|
||||||
msgid "Authentication is required to enable or disable DNS over TLS."
|
msgid "Authentication is required to enable or disable DNS over TLS."
|
||||||
msgstr "Потрібна автентифікація, щоб увімкнути або вимкнути DNS через TLS."
|
msgstr "Для вмикання або вимикання DNS через TLS слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/network/org.freedesktop.network1.policy:99
|
#: src/network/org.freedesktop.network1.policy:99
|
||||||
#: src/resolve/org.freedesktop.resolve1.policy:110
|
#: src/resolve/org.freedesktop.resolve1.policy:110
|
||||||
|
@ -736,7 +749,7 @@ msgstr "Вмикання або вимикання DNSSEC"
|
||||||
#: src/network/org.freedesktop.network1.policy:100
|
#: src/network/org.freedesktop.network1.policy:100
|
||||||
#: src/resolve/org.freedesktop.resolve1.policy:111
|
#: src/resolve/org.freedesktop.resolve1.policy:111
|
||||||
msgid "Authentication is required to enable or disable DNSSEC."
|
msgid "Authentication is required to enable or disable DNSSEC."
|
||||||
msgstr "Потрібна автентифікація, щоб увімкнути або вимкнути DNSSEC."
|
msgstr "Для вмикання або вимикання DNSSEC слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/network/org.freedesktop.network1.policy:110
|
#: src/network/org.freedesktop.network1.policy:110
|
||||||
#: src/resolve/org.freedesktop.resolve1.policy:121
|
#: src/resolve/org.freedesktop.resolve1.policy:121
|
||||||
|
@ -747,7 +760,7 @@ msgstr "Встановлення прив'язок від'ємної довір
|
||||||
#: src/resolve/org.freedesktop.resolve1.policy:122
|
#: src/resolve/org.freedesktop.resolve1.policy:122
|
||||||
msgid "Authentication is required to set DNSSEC Negative Trust Anchors."
|
msgid "Authentication is required to set DNSSEC Negative Trust Anchors."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб встановити прив'язки від'ємної довіри DNSSEC."
|
"Для встановлення прив'язки від'ємної довіри DNSSEC слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/network/org.freedesktop.network1.policy:121
|
#: src/network/org.freedesktop.network1.policy:121
|
||||||
msgid "Revert NTP settings"
|
msgid "Revert NTP settings"
|
||||||
|
@ -772,8 +785,8 @@ msgstr "Сервер DHCP надсилає повідомлення щодо п
|
||||||
#: src/network/org.freedesktop.network1.policy:144
|
#: src/network/org.freedesktop.network1.policy:144
|
||||||
msgid "Authentication is required to send force renew message."
|
msgid "Authentication is required to send force renew message."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб надіслати повідомлення щодо примусового "
|
"Для надсилання повідомлення щодо примусового оновлення слід пройти "
|
||||||
"оновлення"
|
"розпізнавання."
|
||||||
|
|
||||||
#: src/network/org.freedesktop.network1.policy:154
|
#: src/network/org.freedesktop.network1.policy:154
|
||||||
msgid "Renew dynamic addresses"
|
msgid "Renew dynamic addresses"
|
||||||
|
@ -805,7 +818,7 @@ msgstr "Інспектування образу портативної служ
|
||||||
|
|
||||||
#: src/portable/org.freedesktop.portable1.policy:14
|
#: src/portable/org.freedesktop.portable1.policy:14
|
||||||
msgid "Authentication is required to inspect a portable service image."
|
msgid "Authentication is required to inspect a portable service image."
|
||||||
msgstr "Потрібна автентифікація, щоб інспектувати образ портативної служби."
|
msgstr "Для інспектування образу портативної служби слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/portable/org.freedesktop.portable1.policy:23
|
#: src/portable/org.freedesktop.portable1.policy:23
|
||||||
msgid "Attach or detach a portable service image"
|
msgid "Attach or detach a portable service image"
|
||||||
|
@ -815,7 +828,8 @@ msgstr "Долучення або вилучення образу портати
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to attach or detach a portable service image."
|
"Authentication is required to attach or detach a portable service image."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб долучити або вилучити образ портативної служби."
|
"Для долучення або вилучення образу портативної служби слід пройти "
|
||||||
|
"розпізнавання."
|
||||||
|
|
||||||
#: src/portable/org.freedesktop.portable1.policy:34
|
#: src/portable/org.freedesktop.portable1.policy:34
|
||||||
msgid "Delete or modify portable service image"
|
msgid "Delete or modify portable service image"
|
||||||
|
@ -825,24 +839,24 @@ msgstr "Вилучення або внесення змін до образу п
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to delete or modify a portable service image."
|
"Authentication is required to delete or modify a portable service image."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб вилучити образ портативної служби або внести до "
|
"Для вилучення образу портативної служби або внесення до нього змін слід "
|
||||||
"нього зміни."
|
"пройти розпізнавання."
|
||||||
|
|
||||||
#: src/resolve/org.freedesktop.resolve1.policy:22
|
#: src/resolve/org.freedesktop.resolve1.policy:22
|
||||||
msgid "Register a DNS-SD service"
|
msgid "Register a DNS-SD service"
|
||||||
msgstr "Зареєструвати службу DNS-SD"
|
msgstr "Реєстрація служби DNS-SD"
|
||||||
|
|
||||||
#: src/resolve/org.freedesktop.resolve1.policy:23
|
#: src/resolve/org.freedesktop.resolve1.policy:23
|
||||||
msgid "Authentication is required to register a DNS-SD service"
|
msgid "Authentication is required to register a DNS-SD service"
|
||||||
msgstr "Потрібна автентифікація, щоб зареєструвати службу DNS-SD"
|
msgstr "Для реєстрації служби DNS-SD слід пройти розпізнавання"
|
||||||
|
|
||||||
#: src/resolve/org.freedesktop.resolve1.policy:33
|
#: src/resolve/org.freedesktop.resolve1.policy:33
|
||||||
msgid "Unregister a DNS-SD service"
|
msgid "Unregister a DNS-SD service"
|
||||||
msgstr "Зняти з реєстрації службу DNS-SD"
|
msgstr "Зняття з реєстрації служби DNS-SD"
|
||||||
|
|
||||||
#: src/resolve/org.freedesktop.resolve1.policy:34
|
#: src/resolve/org.freedesktop.resolve1.policy:34
|
||||||
msgid "Authentication is required to unregister a DNS-SD service"
|
msgid "Authentication is required to unregister a DNS-SD service"
|
||||||
msgstr "Потрібна автентифікація, щоб зняти з реєстрації службу DNS-SD"
|
msgstr "Для зняття з реєстрації служби DNS-SD слід пройти розпізнавання"
|
||||||
|
|
||||||
#: src/resolve/org.freedesktop.resolve1.policy:132
|
#: src/resolve/org.freedesktop.resolve1.policy:132
|
||||||
msgid "Revert name resolution settings"
|
msgid "Revert name resolution settings"
|
||||||
|
@ -856,89 +870,88 @@ msgstr ""
|
||||||
|
|
||||||
#: src/timedate/org.freedesktop.timedate1.policy:22
|
#: src/timedate/org.freedesktop.timedate1.policy:22
|
||||||
msgid "Set system time"
|
msgid "Set system time"
|
||||||
msgstr "Вказати системний час"
|
msgstr "Встановлення загальносистемного часу"
|
||||||
|
|
||||||
#: src/timedate/org.freedesktop.timedate1.policy:23
|
#: src/timedate/org.freedesktop.timedate1.policy:23
|
||||||
msgid "Authentication is required to set the system time."
|
msgid "Authentication is required to set the system time."
|
||||||
msgstr "Потрібна автентифікація, щоб вказати системний час."
|
msgstr "Для встановлення загальносистемного часу слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/timedate/org.freedesktop.timedate1.policy:33
|
#: src/timedate/org.freedesktop.timedate1.policy:33
|
||||||
msgid "Set system timezone"
|
msgid "Set system timezone"
|
||||||
msgstr "Вказати системний часовий пояс"
|
msgstr "Встановлення загальносистемного часового поясу"
|
||||||
|
|
||||||
#: src/timedate/org.freedesktop.timedate1.policy:34
|
#: src/timedate/org.freedesktop.timedate1.policy:34
|
||||||
msgid "Authentication is required to set the system timezone."
|
msgid "Authentication is required to set the system timezone."
|
||||||
msgstr "Потрібна автентифікація, щоб вказати системний часовий пояс."
|
msgstr ""
|
||||||
|
"Для встановлення загальносистемного часового поясу слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/timedate/org.freedesktop.timedate1.policy:43
|
#: src/timedate/org.freedesktop.timedate1.policy:43
|
||||||
msgid "Set RTC to local timezone or UTC"
|
msgid "Set RTC to local timezone or UTC"
|
||||||
msgstr "Вкажіть RTC для локального часового поясу або UTC"
|
msgstr "Встановлення для RTC місцевого часового поясу або UTC"
|
||||||
|
|
||||||
#: src/timedate/org.freedesktop.timedate1.policy:44
|
#: src/timedate/org.freedesktop.timedate1.policy:44
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to control whether the RTC stores the local or "
|
"Authentication is required to control whether the RTC stores the local or "
|
||||||
"UTC time."
|
"UTC time."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб контролювати, чи зберігає RTC локальний час або "
|
"Для керування тим, зберігатиме годинник реального часу локальний час чи час "
|
||||||
"UTC."
|
"UTC, слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/timedate/org.freedesktop.timedate1.policy:53
|
#: src/timedate/org.freedesktop.timedate1.policy:53
|
||||||
msgid "Turn network time synchronization on or off"
|
msgid "Turn network time synchronization on or off"
|
||||||
msgstr "Увімкнути або вимкнути синхронізування часу через мережу"
|
msgstr "Вмикання або вимикання синхронізації часу за допомогою мережі"
|
||||||
|
|
||||||
#: src/timedate/org.freedesktop.timedate1.policy:54
|
#: src/timedate/org.freedesktop.timedate1.policy:54
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to control whether network time synchronization "
|
"Authentication is required to control whether network time synchronization "
|
||||||
"shall be enabled."
|
"shall be enabled."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб контролювати, чи синхронізування часу через "
|
"Для керування тим, чи слід вмикати синхронізацію часу за допомогою мережі, "
|
||||||
"мережу запущено."
|
"слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/core/dbus-unit.c:362
|
#: src/core/dbus-unit.c:362
|
||||||
msgid "Authentication is required to start '$(unit)'."
|
msgid "Authentication is required to start '$(unit)'."
|
||||||
msgstr "Потрібна автентифікація, щоб запустити «$(unit)»."
|
msgstr "Для запуску «$(unit)» слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/core/dbus-unit.c:363
|
#: src/core/dbus-unit.c:363
|
||||||
msgid "Authentication is required to stop '$(unit)'."
|
msgid "Authentication is required to stop '$(unit)'."
|
||||||
msgstr "Потрібна автентифікація, щоб зупинити «$(unit)»."
|
msgstr "Для зупинення «$(unit)» слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/core/dbus-unit.c:364
|
#: src/core/dbus-unit.c:364
|
||||||
msgid "Authentication is required to reload '$(unit)'."
|
msgid "Authentication is required to reload '$(unit)'."
|
||||||
msgstr "Потрібна автентифікація, щоб перезавантажити «$(unit)»."
|
msgstr "Для перезавантаження «$(unit)» слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/core/dbus-unit.c:365 src/core/dbus-unit.c:366
|
#: src/core/dbus-unit.c:365 src/core/dbus-unit.c:366
|
||||||
msgid "Authentication is required to restart '$(unit)'."
|
msgid "Authentication is required to restart '$(unit)'."
|
||||||
msgstr "Потрібна автентифікація, щоб перезапустити «$(unit)»."
|
msgstr "Для перезапуску «$(unit)» слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/core/dbus-unit.c:538
|
#: src/core/dbus-unit.c:538
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to send a UNIX signal to the processes of "
|
"Authentication is required to send a UNIX signal to the processes of "
|
||||||
"'$(unit)'."
|
"'$(unit)'."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб надіслати сигнал UNIX до процесів «$(unit)»."
|
"Для надсилання сигналу UNIX до процесів «$(unit)» слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/core/dbus-unit.c:569
|
#: src/core/dbus-unit.c:569
|
||||||
msgid "Authentication is required to reset the \"failed\" state of '$(unit)'."
|
msgid "Authentication is required to reset the \"failed\" state of '$(unit)'."
|
||||||
msgstr "Потрібна автентифікація, щоб скинути «пошкоджений» стан з «$(unit)»."
|
msgstr ""
|
||||||
|
"Для скидання «пошкодженого» стану з «$(unit)» слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/core/dbus-unit.c:602
|
#: src/core/dbus-unit.c:602
|
||||||
msgid "Authentication is required to set properties on '$(unit)'."
|
msgid "Authentication is required to set properties on '$(unit)'."
|
||||||
msgstr "Потрібна автентифікація, щоб вказати властивості на «$(unit)»."
|
msgstr "Для визначення властивостей на «$(unit)» слід пройти розпізнавання."
|
||||||
|
|
||||||
#: src/core/dbus-unit.c:711
|
#: src/core/dbus-unit.c:711
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to delete files and directories associated with "
|
"Authentication is required to delete files and directories associated with "
|
||||||
"'$(unit)'."
|
"'$(unit)'."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб вилучити файли і каталоги, які пов'язано із "
|
"Для вилучення файлів і каталогів, які пов'язано із «$(unit)», слід пройти "
|
||||||
"«$(unit)»."
|
"розпізнавання."
|
||||||
|
|
||||||
#: src/core/dbus-unit.c:760
|
#: src/core/dbus-unit.c:760
|
||||||
#, fuzzy
|
|
||||||
#| msgid ""
|
|
||||||
#| "Authentication is required to send a UNIX signal to the processes of "
|
|
||||||
#| "'$(unit)'."
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Authentication is required to freeze or thaw the processes of '$(unit)' unit."
|
"Authentication is required to freeze or thaw the processes of '$(unit)' unit."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Потрібна автентифікація, щоб надіслати сигнал UNIX до процесів «$(unit)»."
|
"Для замороження або розмороження процесів модуля «$(unit)» слід пройти "
|
||||||
|
"розпізнавання."
|
||||||
|
|
|
@ -736,6 +736,10 @@ static bool device_is_ready(sd_device *dev) {
|
||||||
if (device_is_renaming(dev) > 0)
|
if (device_is_renaming(dev) > 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
/* Is it really tagged as 'systemd' right now? */
|
||||||
|
if (sd_device_has_current_tag(dev, "systemd") <= 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
if (sd_device_get_property_value(dev, "SYSTEMD_READY", &ready) < 0)
|
if (sd_device_get_property_value(dev, "SYSTEMD_READY", &ready) < 0)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|
|
@ -77,7 +77,7 @@ enum {
|
||||||
META_ARGV_UID, /* %u: as seen in the initial user namespace */
|
META_ARGV_UID, /* %u: as seen in the initial user namespace */
|
||||||
META_ARGV_GID, /* %g: as seen in the initial user namespace */
|
META_ARGV_GID, /* %g: as seen in the initial user namespace */
|
||||||
META_ARGV_SIGNAL, /* %s: number of signal causing dump */
|
META_ARGV_SIGNAL, /* %s: number of signal causing dump */
|
||||||
META_ARGV_TIMESTAMP, /* %t: time of dump, expressed as seconds since the Epoch */
|
META_ARGV_TIMESTAMP, /* %t: time of dump, expressed as seconds since the Epoch (we expand this to µs granularity) */
|
||||||
META_ARGV_RLIMIT, /* %c: core file size soft resource limit */
|
META_ARGV_RLIMIT, /* %c: core file size soft resource limit */
|
||||||
META_ARGV_HOSTNAME, /* %h: hostname */
|
META_ARGV_HOSTNAME, /* %h: hostname */
|
||||||
_META_ARGV_MAX,
|
_META_ARGV_MAX,
|
||||||
|
@ -311,7 +311,7 @@ static int make_filename(const Context *context, char **ret) {
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
if (asprintf(ret,
|
if (asprintf(ret,
|
||||||
"/var/lib/systemd/coredump/core.%s.%s." SD_ID128_FORMAT_STR ".%s.%s000000",
|
"/var/lib/systemd/coredump/core.%s.%s." SD_ID128_FORMAT_STR ".%s.%s",
|
||||||
c,
|
c,
|
||||||
u,
|
u,
|
||||||
SD_ID128_FORMAT_VAL(boot),
|
SD_ID128_FORMAT_VAL(boot),
|
||||||
|
@ -1016,8 +1016,11 @@ static int send_iovec(const struct iovec_wrapper *iovw, int input_fd) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int gather_pid_metadata_from_argv(struct iovec_wrapper *iovw, Context *context,
|
static int gather_pid_metadata_from_argv(
|
||||||
int argc, char **argv) {
|
struct iovec_wrapper *iovw,
|
||||||
|
Context *context,
|
||||||
|
int argc, char **argv) {
|
||||||
|
|
||||||
_cleanup_free_ char *free_timestamp = NULL;
|
_cleanup_free_ char *free_timestamp = NULL;
|
||||||
int i, r, signo;
|
int i, r, signo;
|
||||||
char *t;
|
char *t;
|
||||||
|
@ -1035,6 +1038,7 @@ static int gather_pid_metadata_from_argv(struct iovec_wrapper *iovw, Context *co
|
||||||
t = argv[i];
|
t = argv[i];
|
||||||
|
|
||||||
switch (i) {
|
switch (i) {
|
||||||
|
|
||||||
case META_ARGV_TIMESTAMP:
|
case META_ARGV_TIMESTAMP:
|
||||||
/* The journal fields contain the timestamp padded with six
|
/* The journal fields contain the timestamp padded with six
|
||||||
* zeroes, so that the kernel-supplied 1s granularity timestamps
|
* zeroes, so that the kernel-supplied 1s granularity timestamps
|
||||||
|
@ -1044,12 +1048,14 @@ static int gather_pid_metadata_from_argv(struct iovec_wrapper *iovw, Context *co
|
||||||
if (!t)
|
if (!t)
|
||||||
return log_oom();
|
return log_oom();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case META_ARGV_SIGNAL:
|
case META_ARGV_SIGNAL:
|
||||||
/* For signal, record its pretty name too */
|
/* For signal, record its pretty name too */
|
||||||
if (safe_atoi(argv[i], &signo) >= 0 && SIGNAL_VALID(signo))
|
if (safe_atoi(argv[i], &signo) >= 0 && SIGNAL_VALID(signo))
|
||||||
(void) iovw_put_string_field(iovw, "COREDUMP_SIGNAL_NAME=SIG",
|
(void) iovw_put_string_field(iovw, "COREDUMP_SIGNAL_NAME=SIG",
|
||||||
signal_to_string(signo));
|
signal_to_string(signo));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,7 +93,7 @@ static bool press_any_key(void) {
|
||||||
static void print_welcome(void) {
|
static void print_welcome(void) {
|
||||||
_cleanup_free_ char *pretty_name = NULL, *ansi_color = NULL;
|
_cleanup_free_ char *pretty_name = NULL, *ansi_color = NULL;
|
||||||
static bool done = false;
|
static bool done = false;
|
||||||
const char *pn;
|
const char *pn, *ac;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
if (!arg_welcome)
|
if (!arg_welcome)
|
||||||
|
@ -112,9 +112,10 @@ static void print_welcome(void) {
|
||||||
"Failed to read os-release file, ignoring: %m");
|
"Failed to read os-release file, ignoring: %m");
|
||||||
|
|
||||||
pn = isempty(pretty_name) ? "Linux" : pretty_name;
|
pn = isempty(pretty_name) ? "Linux" : pretty_name;
|
||||||
|
ac = isempty(ansi_color) ? "0" : ansi_color;
|
||||||
|
|
||||||
if (colors_enabled())
|
if (colors_enabled())
|
||||||
printf("\nWelcome to your new installation of \x1B[%sm%s\x1B[0m!\n", ansi_color, pn);
|
printf("\nWelcome to your new installation of \x1B[%sm%s\x1B[0m!\n", ac, pn);
|
||||||
else
|
else
|
||||||
printf("\nWelcome to your new installation of %s!\n", pn);
|
printf("\nWelcome to your new installation of %s!\n", pn);
|
||||||
|
|
||||||
|
|
|
@ -81,6 +81,7 @@ int import_fork_tar_x(const char *path, pid_t *ret) {
|
||||||
if (r == 0) {
|
if (r == 0) {
|
||||||
const char *cmdline[] = {
|
const char *cmdline[] = {
|
||||||
"tar",
|
"tar",
|
||||||
|
"--ignore-zeros",
|
||||||
"--numeric-owner",
|
"--numeric-owner",
|
||||||
"-C", path,
|
"-C", path,
|
||||||
"-px",
|
"-px",
|
||||||
|
|
|
@ -728,4 +728,8 @@ global:
|
||||||
sd_event_source_set_time_relative;
|
sd_event_source_set_time_relative;
|
||||||
|
|
||||||
sd_bus_error_has_names_sentinel;
|
sd_bus_error_has_names_sentinel;
|
||||||
|
|
||||||
|
sd_device_get_current_tag_first;
|
||||||
|
sd_device_get_current_tag_next;
|
||||||
|
sd_device_has_current_tag;
|
||||||
} LIBSYSTEMD_246;
|
} LIBSYSTEMD_246;
|
||||||
|
|
|
@ -28,10 +28,10 @@ struct sd_device {
|
||||||
Set *sysattrs; /* names of sysattrs */
|
Set *sysattrs; /* names of sysattrs */
|
||||||
Iterator sysattrs_iterator;
|
Iterator sysattrs_iterator;
|
||||||
|
|
||||||
Set *tags;
|
Set *all_tags, *current_tags;
|
||||||
Iterator tags_iterator;
|
Iterator all_tags_iterator, current_tags_iterator;
|
||||||
|
uint64_t all_tags_iterator_generation, current_tags_iterator_generation; /* generation when iteration was started */
|
||||||
uint64_t tags_generation; /* changes whenever the tags are changed */
|
uint64_t tags_generation; /* changes whenever the tags are changed */
|
||||||
uint64_t tags_iterator_generation; /* generation when iteration was started */
|
|
||||||
|
|
||||||
Set *devlinks;
|
Set *devlinks;
|
||||||
Iterator devlinks_iterator;
|
Iterator devlinks_iterator;
|
||||||
|
@ -71,7 +71,7 @@ struct sd_device {
|
||||||
|
|
||||||
bool parent_set:1; /* no need to try to reload parent */
|
bool parent_set:1; /* no need to try to reload parent */
|
||||||
bool sysattrs_read:1; /* don't try to re-read sysattrs once read */
|
bool sysattrs_read:1; /* don't try to re-read sysattrs once read */
|
||||||
bool property_tags_outdated:1; /* need to update TAGS= property */
|
bool property_tags_outdated:1; /* need to update TAGS= or CURRENT_TAGS= property */
|
||||||
bool property_devlinks_outdated:1; /* need to update DEVLINKS= property */
|
bool property_devlinks_outdated:1; /* need to update DEVLINKS= property */
|
||||||
bool properties_buf_outdated:1; /* need to reread hashmap */
|
bool properties_buf_outdated:1; /* need to reread hashmap */
|
||||||
bool sysname_set:1; /* don't reread sysname */
|
bool sysname_set:1; /* don't reread sysname */
|
||||||
|
|
|
@ -329,7 +329,7 @@ static int device_amend(sd_device *device, const char *key, const char *value) {
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_device_debug_errno(device, r, "sd-device: Failed to add devlink '%s': %m", devlink);
|
return log_device_debug_errno(device, r, "sd-device: Failed to add devlink '%s': %m", devlink);
|
||||||
}
|
}
|
||||||
} else if (streq(key, "TAGS")) {
|
} else if (STR_IN_SET(key, "TAGS", "CURRENT_TAGS")) {
|
||||||
const char *word, *state;
|
const char *word, *state;
|
||||||
size_t l;
|
size_t l;
|
||||||
|
|
||||||
|
@ -339,10 +339,11 @@ static int device_amend(sd_device *device, const char *key, const char *value) {
|
||||||
(void) strncpy(tag, word, l);
|
(void) strncpy(tag, word, l);
|
||||||
tag[l] = '\0';
|
tag[l] = '\0';
|
||||||
|
|
||||||
r = device_add_tag(device, tag);
|
r = device_add_tag(device, tag, streq(key, "CURRENT_TAGS"));
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_device_debug_errno(device, r, "sd-device: Failed to add tag '%s': %m", tag);
|
return log_device_debug_errno(device, r, "sd-device: Failed to add tag '%s': %m", tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
r = device_add_property_internal(device, key, value);
|
r = device_add_property_internal(device, key, value);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
|
@ -759,8 +760,8 @@ int device_copy_properties(sd_device *device_dst, sd_device *device_src) {
|
||||||
void device_cleanup_tags(sd_device *device) {
|
void device_cleanup_tags(sd_device *device) {
|
||||||
assert(device);
|
assert(device);
|
||||||
|
|
||||||
set_free_free(device->tags);
|
device->all_tags = set_free_free(device->all_tags);
|
||||||
device->tags = NULL;
|
device->current_tags = set_free_free(device->current_tags);
|
||||||
device->property_tags_outdated = true;
|
device->property_tags_outdated = true;
|
||||||
device->tags_generation++;
|
device->tags_generation++;
|
||||||
}
|
}
|
||||||
|
@ -778,7 +779,7 @@ void device_remove_tag(sd_device *device, const char *tag) {
|
||||||
assert(device);
|
assert(device);
|
||||||
assert(tag);
|
assert(tag);
|
||||||
|
|
||||||
free(set_remove(device->tags, tag));
|
free(set_remove(device->current_tags, tag));
|
||||||
device->property_tags_outdated = true;
|
device->property_tags_outdated = true;
|
||||||
device->tags_generation++;
|
device->tags_generation++;
|
||||||
}
|
}
|
||||||
|
@ -846,7 +847,10 @@ static bool device_has_info(sd_device *device) {
|
||||||
if (!ordered_hashmap_isempty(device->properties_db))
|
if (!ordered_hashmap_isempty(device->properties_db))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (!set_isempty(device->tags))
|
if (!set_isempty(device->all_tags))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (!set_isempty(device->current_tags))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (device->watch_handle >= 0)
|
if (device->watch_handle >= 0)
|
||||||
|
@ -939,7 +943,10 @@ int device_update_db(sd_device *device) {
|
||||||
fprintf(f, "E:%s=%s\n", property, value);
|
fprintf(f, "E:%s=%s\n", property, value);
|
||||||
|
|
||||||
FOREACH_DEVICE_TAG(device, tag)
|
FOREACH_DEVICE_TAG(device, tag)
|
||||||
fprintf(f, "G:%s\n", tag);
|
fprintf(f, "G:%s\n", tag); /* Any tag */
|
||||||
|
|
||||||
|
SET_FOREACH(tag, device->current_tags, i)
|
||||||
|
fprintf(f, "Q:%s\n", tag); /* Current tag */
|
||||||
}
|
}
|
||||||
|
|
||||||
r = fflush_and_check(f);
|
r = fflush_and_check(f);
|
||||||
|
|
|
@ -45,7 +45,7 @@ void device_set_devlink_priority(sd_device *device, int priority);
|
||||||
int device_ensure_usec_initialized(sd_device *device, sd_device *device_old);
|
int device_ensure_usec_initialized(sd_device *device, sd_device *device_old);
|
||||||
int device_add_devlink(sd_device *device, const char *devlink);
|
int device_add_devlink(sd_device *device, const char *devlink);
|
||||||
int device_add_property(sd_device *device, const char *property, const char *value);
|
int device_add_property(sd_device *device, const char *property, const char *value);
|
||||||
int device_add_tag(sd_device *device, const char *tag);
|
int device_add_tag(sd_device *device, const char *tag, bool both);
|
||||||
void device_remove_tag(sd_device *device, const char *tag);
|
void device_remove_tag(sd_device *device, const char *tag);
|
||||||
void device_cleanup_tags(sd_device *device);
|
void device_cleanup_tags(sd_device *device);
|
||||||
void device_cleanup_devlinks(sd_device *device);
|
void device_cleanup_devlinks(sd_device *device);
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
tag; \
|
tag; \
|
||||||
tag = sd_device_get_tag_next(device))
|
tag = sd_device_get_tag_next(device))
|
||||||
|
|
||||||
|
#define FOREACH_DEVICE_CURRENT_TAG(device, tag) \
|
||||||
|
for (tag = sd_device_get_current_tag_first(device); \
|
||||||
|
tag; \
|
||||||
|
tag = sd_device_get_current_tag_next(device))
|
||||||
|
|
||||||
#define FOREACH_DEVICE_SYSATTR(device, attr) \
|
#define FOREACH_DEVICE_SYSATTR(device, attr) \
|
||||||
for (attr = sd_device_get_sysattr_first(device); \
|
for (attr = sd_device_get_sysattr_first(device); \
|
||||||
attr; \
|
attr; \
|
||||||
|
|
|
@ -69,7 +69,8 @@ static sd_device *device_free(sd_device *device) {
|
||||||
ordered_hashmap_free_free_free(device->properties_db);
|
ordered_hashmap_free_free_free(device->properties_db);
|
||||||
hashmap_free_free_free(device->sysattr_values);
|
hashmap_free_free_free(device->sysattr_values);
|
||||||
set_free(device->sysattrs);
|
set_free(device->sysattrs);
|
||||||
set_free(device->tags);
|
set_free(device->all_tags);
|
||||||
|
set_free(device->current_tags);
|
||||||
set_free(device->devlinks);
|
set_free(device->devlinks);
|
||||||
|
|
||||||
return mfree(device);
|
return mfree(device);
|
||||||
|
@ -1062,8 +1063,8 @@ static bool is_valid_tag(const char *tag) {
|
||||||
return !strchr(tag, ':') && !strchr(tag, ' ');
|
return !strchr(tag, ':') && !strchr(tag, ' ');
|
||||||
}
|
}
|
||||||
|
|
||||||
int device_add_tag(sd_device *device, const char *tag) {
|
int device_add_tag(sd_device *device, const char *tag, bool both) {
|
||||||
int r;
|
int r, added;
|
||||||
|
|
||||||
assert(device);
|
assert(device);
|
||||||
assert(tag);
|
assert(tag);
|
||||||
|
@ -1071,9 +1072,21 @@ int device_add_tag(sd_device *device, const char *tag) {
|
||||||
if (!is_valid_tag(tag))
|
if (!is_valid_tag(tag))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
r = set_put_strdup(&device->tags, tag);
|
/* Definitely add to the "all" list of tags (i.e. the sticky list) */
|
||||||
if (r < 0)
|
added = set_put_strdup(&device->all_tags, tag);
|
||||||
return r;
|
if (added < 0)
|
||||||
|
return added;
|
||||||
|
|
||||||
|
/* And optionally, also add it to the current list of tags */
|
||||||
|
if (both) {
|
||||||
|
r = set_put_strdup(&device->current_tags, tag);
|
||||||
|
if (r < 0) {
|
||||||
|
if (added > 0)
|
||||||
|
(void) set_remove(device->all_tags, tag);
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
device->tags_generation++;
|
device->tags_generation++;
|
||||||
device->property_tags_outdated = true;
|
device->property_tags_outdated = true;
|
||||||
|
@ -1151,8 +1164,9 @@ static int handle_db_line(sd_device *device, char key, const char *value) {
|
||||||
assert(value);
|
assert(value);
|
||||||
|
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case 'G':
|
case 'G': /* Any tag */
|
||||||
r = device_add_tag(device, value);
|
case 'Q': /* Current tag */
|
||||||
|
r = device_add_tag(device, value, key == 'Q');
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
|
@ -1407,10 +1421,10 @@ _public_ const char *sd_device_get_tag_first(sd_device *device) {
|
||||||
|
|
||||||
(void) device_read_db(device);
|
(void) device_read_db(device);
|
||||||
|
|
||||||
device->tags_iterator_generation = device->tags_generation;
|
device->all_tags_iterator_generation = device->tags_generation;
|
||||||
device->tags_iterator = ITERATOR_FIRST;
|
device->all_tags_iterator = ITERATOR_FIRST;
|
||||||
|
|
||||||
(void) set_iterate(device->tags, &device->tags_iterator, &v);
|
(void) set_iterate(device->all_tags, &device->all_tags_iterator, &v);
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1421,10 +1435,38 @@ _public_ const char *sd_device_get_tag_next(sd_device *device) {
|
||||||
|
|
||||||
(void) device_read_db(device);
|
(void) device_read_db(device);
|
||||||
|
|
||||||
if (device->tags_iterator_generation != device->tags_generation)
|
if (device->all_tags_iterator_generation != device->tags_generation)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
(void) set_iterate(device->tags, &device->tags_iterator, &v);
|
(void) set_iterate(device->all_tags, &device->all_tags_iterator, &v);
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
_public_ const char *sd_device_get_current_tag_first(sd_device *device) {
|
||||||
|
void *v;
|
||||||
|
|
||||||
|
assert_return(device, NULL);
|
||||||
|
|
||||||
|
(void) device_read_db(device);
|
||||||
|
|
||||||
|
device->current_tags_iterator_generation = device->tags_generation;
|
||||||
|
device->current_tags_iterator = ITERATOR_FIRST;
|
||||||
|
|
||||||
|
(void) set_iterate(device->current_tags, &device->current_tags_iterator, &v);
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
_public_ const char *sd_device_get_current_tag_next(sd_device *device) {
|
||||||
|
void *v;
|
||||||
|
|
||||||
|
assert_return(device, NULL);
|
||||||
|
|
||||||
|
(void) device_read_db(device);
|
||||||
|
|
||||||
|
if (device->current_tags_iterator_generation != device->tags_generation)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
(void) set_iterate(device->current_tags, &device->current_tags_iterator, &v);
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1456,6 +1498,31 @@ _public_ const char *sd_device_get_devlink_next(sd_device *device) {
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *join_string_set(Set *s) {
|
||||||
|
size_t ret_allocated = 0, ret_len;
|
||||||
|
_cleanup_free_ char *ret = NULL;
|
||||||
|
const char *tag;
|
||||||
|
Iterator i;
|
||||||
|
|
||||||
|
if (!GREEDY_REALLOC(ret, ret_allocated, 2))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
strcpy(ret, ":");
|
||||||
|
ret_len = 1;
|
||||||
|
|
||||||
|
SET_FOREACH(tag, s, i) {
|
||||||
|
char *e;
|
||||||
|
|
||||||
|
if (!GREEDY_REALLOC(ret, ret_allocated, ret_len + strlen(tag) + 2))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
e = stpcpy(stpcpy(ret + ret_len, tag), ":");
|
||||||
|
ret_len = e - ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TAKE_PTR(ret);
|
||||||
|
}
|
||||||
|
|
||||||
int device_properties_prepare(sd_device *device) {
|
int device_properties_prepare(sd_device *device) {
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
|
@ -1494,26 +1561,27 @@ int device_properties_prepare(sd_device *device) {
|
||||||
|
|
||||||
if (device->property_tags_outdated) {
|
if (device->property_tags_outdated) {
|
||||||
_cleanup_free_ char *tags = NULL;
|
_cleanup_free_ char *tags = NULL;
|
||||||
size_t tags_allocated = 0, tags_len = 0;
|
|
||||||
const char *tag;
|
|
||||||
|
|
||||||
if (!GREEDY_REALLOC(tags, tags_allocated, 2))
|
tags = join_string_set(device->all_tags);
|
||||||
|
if (!tags)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
stpcpy(tags, ":");
|
|
||||||
tags_len++;
|
|
||||||
|
|
||||||
for (tag = sd_device_get_tag_first(device); tag; tag = sd_device_get_tag_next(device)) {
|
if (!streq(tags, ":")) {
|
||||||
char *e;
|
r = device_add_property_internal(device, "TAGS", tags);
|
||||||
|
if (r < 0)
|
||||||
if (!GREEDY_REALLOC(tags, tags_allocated, tags_len + strlen(tag) + 2))
|
return r;
|
||||||
return -ENOMEM;
|
|
||||||
e = stpcpy(stpcpy(tags + tags_len, tag), ":");
|
|
||||||
tags_len = e - tags;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
r = device_add_property_internal(device, "TAGS", tags);
|
free(tags);
|
||||||
if (r < 0)
|
tags = join_string_set(device->current_tags);
|
||||||
return r;
|
if (!tags)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
if (!streq(tags, ":")) {
|
||||||
|
r = device_add_property_internal(device, "CURRENT_TAGS", tags);
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
device->property_tags_outdated = false;
|
device->property_tags_outdated = false;
|
||||||
}
|
}
|
||||||
|
@ -1689,7 +1757,16 @@ _public_ int sd_device_has_tag(sd_device *device, const char *tag) {
|
||||||
|
|
||||||
(void) device_read_db(device);
|
(void) device_read_db(device);
|
||||||
|
|
||||||
return !!set_contains(device->tags, tag);
|
return set_contains(device->all_tags, tag);
|
||||||
|
}
|
||||||
|
|
||||||
|
_public_ int sd_device_has_current_tag(sd_device *device, const char *tag) {
|
||||||
|
assert_return(device, -EINVAL);
|
||||||
|
assert_return(tag, -EINVAL);
|
||||||
|
|
||||||
|
(void) device_read_db(device);
|
||||||
|
|
||||||
|
return set_contains(device->current_tags, tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
_public_ int sd_device_get_property_value(sd_device *device, const char *key, const char **_value) {
|
_public_ int sd_device_get_property_value(sd_device *device, const char *key, const char **_value) {
|
||||||
|
|
|
@ -56,12 +56,13 @@ struct udev_device {
|
||||||
|
|
||||||
struct udev_list *properties;
|
struct udev_list *properties;
|
||||||
uint64_t properties_generation;
|
uint64_t properties_generation;
|
||||||
struct udev_list *tags;
|
struct udev_list *all_tags, *current_tags;
|
||||||
uint64_t tags_generation;
|
uint64_t all_tags_generation, current_tags_generation;
|
||||||
struct udev_list *devlinks;
|
struct udev_list *devlinks;
|
||||||
uint64_t devlinks_generation;
|
uint64_t devlinks_generation;
|
||||||
bool properties_read:1;
|
bool properties_read:1;
|
||||||
bool tags_read:1;
|
bool all_tags_read:1;
|
||||||
|
bool current_tags_read:1;
|
||||||
bool devlinks_read:1;
|
bool devlinks_read:1;
|
||||||
struct udev_list *sysattrs;
|
struct udev_list *sysattrs;
|
||||||
bool sysattrs_read;
|
bool sysattrs_read;
|
||||||
|
@ -199,7 +200,7 @@ _public_ const char *udev_device_get_property_value(struct udev_device *udev_dev
|
||||||
}
|
}
|
||||||
|
|
||||||
struct udev_device *udev_device_new(struct udev *udev, sd_device *device) {
|
struct udev_device *udev_device_new(struct udev *udev, sd_device *device) {
|
||||||
_cleanup_(udev_list_freep) struct udev_list *properties = NULL, *tags = NULL, *sysattrs = NULL, *devlinks = NULL;
|
_cleanup_(udev_list_freep) struct udev_list *properties = NULL, *all_tags = NULL, *current_tags = NULL, *sysattrs = NULL, *devlinks = NULL;
|
||||||
struct udev_device *udev_device;
|
struct udev_device *udev_device;
|
||||||
|
|
||||||
assert(device);
|
assert(device);
|
||||||
|
@ -207,8 +208,11 @@ struct udev_device *udev_device_new(struct udev *udev, sd_device *device) {
|
||||||
properties = udev_list_new(true);
|
properties = udev_list_new(true);
|
||||||
if (!properties)
|
if (!properties)
|
||||||
return_with_errno(NULL, ENOMEM);
|
return_with_errno(NULL, ENOMEM);
|
||||||
tags = udev_list_new(true);
|
all_tags = udev_list_new(true);
|
||||||
if (!tags)
|
if (!all_tags)
|
||||||
|
return_with_errno(NULL, ENOMEM);
|
||||||
|
current_tags = udev_list_new(true);
|
||||||
|
if (!current_tags)
|
||||||
return_with_errno(NULL, ENOMEM);
|
return_with_errno(NULL, ENOMEM);
|
||||||
sysattrs = udev_list_new(true);
|
sysattrs = udev_list_new(true);
|
||||||
if (!sysattrs)
|
if (!sysattrs)
|
||||||
|
@ -226,7 +230,8 @@ struct udev_device *udev_device_new(struct udev *udev, sd_device *device) {
|
||||||
.udev = udev,
|
.udev = udev,
|
||||||
.device = sd_device_ref(device),
|
.device = sd_device_ref(device),
|
||||||
.properties = TAKE_PTR(properties),
|
.properties = TAKE_PTR(properties),
|
||||||
.tags = TAKE_PTR(tags),
|
.all_tags = TAKE_PTR(all_tags),
|
||||||
|
.current_tags = TAKE_PTR(current_tags),
|
||||||
.sysattrs = TAKE_PTR(sysattrs),
|
.sysattrs = TAKE_PTR(sysattrs),
|
||||||
.devlinks = TAKE_PTR(devlinks),
|
.devlinks = TAKE_PTR(devlinks),
|
||||||
};
|
};
|
||||||
|
@ -475,7 +480,8 @@ static struct udev_device *udev_device_free(struct udev_device *udev_device) {
|
||||||
|
|
||||||
udev_list_free(udev_device->properties);
|
udev_list_free(udev_device->properties);
|
||||||
udev_list_free(udev_device->sysattrs);
|
udev_list_free(udev_device->sysattrs);
|
||||||
udev_list_free(udev_device->tags);
|
udev_list_free(udev_device->all_tags);
|
||||||
|
udev_list_free(udev_device->current_tags);
|
||||||
udev_list_free(udev_device->devlinks);
|
udev_list_free(udev_device->devlinks);
|
||||||
|
|
||||||
return mfree(udev_device);
|
return mfree(udev_device);
|
||||||
|
@ -834,21 +840,41 @@ _public_ int udev_device_get_is_initialized(struct udev_device *udev_device) {
|
||||||
_public_ struct udev_list_entry *udev_device_get_tags_list_entry(struct udev_device *udev_device) {
|
_public_ struct udev_list_entry *udev_device_get_tags_list_entry(struct udev_device *udev_device) {
|
||||||
assert_return_errno(udev_device, NULL, EINVAL);
|
assert_return_errno(udev_device, NULL, EINVAL);
|
||||||
|
|
||||||
if (device_get_tags_generation(udev_device->device) != udev_device->tags_generation ||
|
if (device_get_tags_generation(udev_device->device) != udev_device->all_tags_generation ||
|
||||||
!udev_device->tags_read) {
|
!udev_device->all_tags_read) {
|
||||||
const char *tag;
|
const char *tag;
|
||||||
|
|
||||||
udev_list_cleanup(udev_device->tags);
|
udev_list_cleanup(udev_device->all_tags);
|
||||||
|
|
||||||
FOREACH_DEVICE_TAG(udev_device->device, tag)
|
FOREACH_DEVICE_TAG(udev_device->device, tag)
|
||||||
if (!udev_list_entry_add(udev_device->tags, tag, NULL))
|
if (!udev_list_entry_add(udev_device->all_tags, tag, NULL))
|
||||||
return_with_errno(NULL, ENOMEM);
|
return_with_errno(NULL, ENOMEM);
|
||||||
|
|
||||||
udev_device->tags_read = true;
|
udev_device->all_tags_read = true;
|
||||||
udev_device->tags_generation = device_get_tags_generation(udev_device->device);
|
udev_device->all_tags_generation = device_get_tags_generation(udev_device->device);
|
||||||
}
|
}
|
||||||
|
|
||||||
return udev_list_get_entry(udev_device->tags);
|
return udev_list_get_entry(udev_device->all_tags);
|
||||||
|
}
|
||||||
|
|
||||||
|
_public_ struct udev_list_entry *udev_device_get_current_tags_list_entry(struct udev_device *udev_device) {
|
||||||
|
assert_return_errno(udev_device, NULL, EINVAL);
|
||||||
|
|
||||||
|
if (device_get_tags_generation(udev_device->device) != udev_device->current_tags_generation ||
|
||||||
|
!udev_device->current_tags_read) {
|
||||||
|
const char *tag;
|
||||||
|
|
||||||
|
udev_list_cleanup(udev_device->current_tags);
|
||||||
|
|
||||||
|
FOREACH_DEVICE_CURRENT_TAG(udev_device->device, tag)
|
||||||
|
if (!udev_list_entry_add(udev_device->current_tags, tag, NULL))
|
||||||
|
return_with_errno(NULL, ENOMEM);
|
||||||
|
|
||||||
|
udev_device->current_tags_read = true;
|
||||||
|
udev_device->current_tags_generation = device_get_tags_generation(udev_device->device);
|
||||||
|
}
|
||||||
|
|
||||||
|
return udev_list_get_entry(udev_device->current_tags);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -866,6 +892,12 @@ _public_ int udev_device_has_tag(struct udev_device *udev_device, const char *ta
|
||||||
return sd_device_has_tag(udev_device->device, tag) > 0;
|
return sd_device_has_tag(udev_device->device, tag) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_public_ int udev_device_has_current_tag(struct udev_device *udev_device, const char *tag) {
|
||||||
|
assert_return(udev_device, 0);
|
||||||
|
|
||||||
|
return sd_device_has_current_tag(udev_device->device, tag) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
sd_device *udev_device_get_sd_device(struct udev_device *udev_device) {
|
sd_device *udev_device_get_sd_device(struct udev_device *udev_device) {
|
||||||
assert(udev_device);
|
assert(udev_device);
|
||||||
|
|
||||||
|
|
|
@ -82,6 +82,7 @@ int udev_device_get_is_initialized(struct udev_device *udev_device);
|
||||||
struct udev_list_entry *udev_device_get_devlinks_list_entry(struct udev_device *udev_device);
|
struct udev_list_entry *udev_device_get_devlinks_list_entry(struct udev_device *udev_device);
|
||||||
struct udev_list_entry *udev_device_get_properties_list_entry(struct udev_device *udev_device);
|
struct udev_list_entry *udev_device_get_properties_list_entry(struct udev_device *udev_device);
|
||||||
struct udev_list_entry *udev_device_get_tags_list_entry(struct udev_device *udev_device);
|
struct udev_list_entry *udev_device_get_tags_list_entry(struct udev_device *udev_device);
|
||||||
|
struct udev_list_entry *udev_device_get_current_tags_list_entry(struct udev_device *udev_device);
|
||||||
struct udev_list_entry *udev_device_get_sysattr_list_entry(struct udev_device *udev_device);
|
struct udev_list_entry *udev_device_get_sysattr_list_entry(struct udev_device *udev_device);
|
||||||
const char *udev_device_get_property_value(struct udev_device *udev_device, const char *key);
|
const char *udev_device_get_property_value(struct udev_device *udev_device, const char *key);
|
||||||
const char *udev_device_get_driver(struct udev_device *udev_device);
|
const char *udev_device_get_driver(struct udev_device *udev_device);
|
||||||
|
@ -92,6 +93,7 @@ unsigned long long int udev_device_get_usec_since_initialized(struct udev_device
|
||||||
const char *udev_device_get_sysattr_value(struct udev_device *udev_device, const char *sysattr);
|
const char *udev_device_get_sysattr_value(struct udev_device *udev_device, const char *sysattr);
|
||||||
int udev_device_set_sysattr_value(struct udev_device *udev_device, const char *sysattr, const char *value);
|
int udev_device_set_sysattr_value(struct udev_device *udev_device, const char *sysattr, const char *value);
|
||||||
int udev_device_has_tag(struct udev_device *udev_device, const char *tag);
|
int udev_device_has_tag(struct udev_device *udev_device, const char *tag);
|
||||||
|
int udev_device_has_current_tag(struct udev_device *udev_device, const char *tag);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* udev_monitor
|
* udev_monitor
|
||||||
|
|
|
@ -118,3 +118,9 @@ global:
|
||||||
udev_queue_flush;
|
udev_queue_flush;
|
||||||
udev_queue_get_fd;
|
udev_queue_get_fd;
|
||||||
} LIBUDEV_199;
|
} LIBUDEV_199;
|
||||||
|
|
||||||
|
LIBUDEV_247 {
|
||||||
|
global:
|
||||||
|
udev_device_has_current_tag;
|
||||||
|
udev_device_get_current_tags_list_entry;
|
||||||
|
} LIBUDEV_215;
|
||||||
|
|
|
@ -195,6 +195,10 @@ int devnode_acl_all(const char *seat,
|
||||||
FOREACH_DEVICE(e, d) {
|
FOREACH_DEVICE(e, d) {
|
||||||
const char *node, *sn;
|
const char *node, *sn;
|
||||||
|
|
||||||
|
/* Make sure the tag is still in place */
|
||||||
|
if (sd_device_has_current_tag(d, "uaccess") <= 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (sd_device_get_property_value(d, "ID_SEAT", &sn) < 0 || isempty(sn))
|
if (sd_device_get_property_value(d, "ID_SEAT", &sn) < 0 || isempty(sn))
|
||||||
sn = "seat0";
|
sn = "seat0";
|
||||||
|
|
||||||
|
|
|
@ -243,7 +243,8 @@ int manager_process_seat_device(Manager *m, sd_device *d) {
|
||||||
|
|
||||||
assert(m);
|
assert(m);
|
||||||
|
|
||||||
if (device_for_action(d, DEVICE_ACTION_REMOVE)) {
|
if (device_for_action(d, DEVICE_ACTION_REMOVE) ||
|
||||||
|
sd_device_has_current_tag(d, "seat") <= 0) {
|
||||||
const char *syspath;
|
const char *syspath;
|
||||||
|
|
||||||
r = sd_device_get_syspath(d, &syspath);
|
r = sd_device_get_syspath(d, &syspath);
|
||||||
|
@ -271,7 +272,7 @@ int manager_process_seat_device(Manager *m, sd_device *d) {
|
||||||
}
|
}
|
||||||
|
|
||||||
seat = hashmap_get(m->seats, sn);
|
seat = hashmap_get(m->seats, sn);
|
||||||
master = sd_device_has_tag(d, "master-of-seat") > 0;
|
master = sd_device_has_current_tag(d, "master-of-seat") > 0;
|
||||||
|
|
||||||
/* Ignore non-master devices for unknown seats */
|
/* Ignore non-master devices for unknown seats */
|
||||||
if (!master && !seat)
|
if (!master && !seat)
|
||||||
|
@ -313,7 +314,8 @@ int manager_process_button_device(Manager *m, sd_device *d) {
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
if (device_for_action(d, DEVICE_ACTION_REMOVE)) {
|
if (device_for_action(d, DEVICE_ACTION_REMOVE) ||
|
||||||
|
sd_device_has_current_tag(d, "power-switch") <= 0) {
|
||||||
|
|
||||||
b = hashmap_get(m->buttons, sysname);
|
b = hashmap_get(m->buttons, sysname);
|
||||||
if (!b)
|
if (!b)
|
||||||
|
|
|
@ -1361,7 +1361,7 @@ static int attach_device(Manager *m, const char *seat, const char *sysfs) {
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
if (sd_device_has_tag(d, "seat") <= 0)
|
if (sd_device_has_current_tag(d, "seat") <= 0)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
if (sd_device_get_property_value(d, "ID_FOR_SEAT", &id_for_seat) < 0)
|
if (sd_device_get_property_value(d, "ID_FOR_SEAT", &id_for_seat) < 0)
|
||||||
|
|
|
@ -53,14 +53,14 @@ static int show_sysfs_one(
|
||||||
|
|
||||||
/* Explicitly also check for tag 'seat' here */
|
/* Explicitly also check for tag 'seat' here */
|
||||||
if (!streq(seat, sn) ||
|
if (!streq(seat, sn) ||
|
||||||
sd_device_has_tag(dev_list[*i_dev], "seat") <= 0 ||
|
sd_device_has_current_tag(dev_list[*i_dev], "seat") <= 0 ||
|
||||||
sd_device_get_subsystem(dev_list[*i_dev], &subsystem) < 0 ||
|
sd_device_get_subsystem(dev_list[*i_dev], &subsystem) < 0 ||
|
||||||
sd_device_get_sysname(dev_list[*i_dev], &sysname) < 0) {
|
sd_device_get_sysname(dev_list[*i_dev], &sysname) < 0) {
|
||||||
(*i_dev)++;
|
(*i_dev)++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
is_master = sd_device_has_tag(dev_list[*i_dev], "master-of-seat") > 0;
|
is_master = sd_device_has_current_tag(dev_list[*i_dev], "master-of-seat") > 0;
|
||||||
|
|
||||||
if (sd_device_get_sysattr_value(dev_list[*i_dev], "name", &name) < 0)
|
if (sd_device_get_sysattr_value(dev_list[*i_dev], "name", &name) < 0)
|
||||||
(void) sd_device_get_sysattr_value(dev_list[*i_dev], "id", &name);
|
(void) sd_device_get_sysattr_value(dev_list[*i_dev], "id", &name);
|
||||||
|
@ -80,7 +80,7 @@ static int show_sysfs_one(
|
||||||
isempty(lookahead_sn))
|
isempty(lookahead_sn))
|
||||||
lookahead_sn = "seat0";
|
lookahead_sn = "seat0";
|
||||||
|
|
||||||
if (streq(seat, lookahead_sn) && sd_device_has_tag(dev_list[lookahead], "seat") > 0)
|
if (streq(seat, lookahead_sn) && sd_device_has_current_tag(dev_list[lookahead], "seat") > 0)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -809,6 +809,8 @@ static const char *const resolv_conf_mode_table[_RESOLV_CONF_MODE_MAX] = {
|
||||||
DEFINE_STRING_TABLE_LOOKUP_WITH_BOOLEAN(resolv_conf_mode, ResolvConfMode, RESOLV_CONF_AUTO);
|
DEFINE_STRING_TABLE_LOOKUP_WITH_BOOLEAN(resolv_conf_mode, ResolvConfMode, RESOLV_CONF_AUTO);
|
||||||
|
|
||||||
int parse_link_journal(const char *s, LinkJournal *ret_mode, bool *ret_try) {
|
int parse_link_journal(const char *s, LinkJournal *ret_mode, bool *ret_try) {
|
||||||
|
int r;
|
||||||
|
|
||||||
assert(s);
|
assert(s);
|
||||||
assert(ret_mode);
|
assert(ret_mode);
|
||||||
assert(ret_try);
|
assert(ret_try);
|
||||||
|
@ -816,9 +818,6 @@ int parse_link_journal(const char *s, LinkJournal *ret_mode, bool *ret_try) {
|
||||||
if (streq(s, "auto")) {
|
if (streq(s, "auto")) {
|
||||||
*ret_mode = LINK_AUTO;
|
*ret_mode = LINK_AUTO;
|
||||||
*ret_try = false;
|
*ret_try = false;
|
||||||
} else if (streq(s, "no")) {
|
|
||||||
*ret_mode = LINK_NO;
|
|
||||||
*ret_try = false;
|
|
||||||
} else if (streq(s, "guest")) {
|
} else if (streq(s, "guest")) {
|
||||||
*ret_mode = LINK_GUEST;
|
*ret_mode = LINK_GUEST;
|
||||||
*ret_try = false;
|
*ret_try = false;
|
||||||
|
@ -831,8 +830,16 @@ int parse_link_journal(const char *s, LinkJournal *ret_mode, bool *ret_try) {
|
||||||
} else if (streq(s, "try-host")) {
|
} else if (streq(s, "try-host")) {
|
||||||
*ret_mode = LINK_HOST;
|
*ret_mode = LINK_HOST;
|
||||||
*ret_try = true;
|
*ret_try = true;
|
||||||
} else
|
} else {
|
||||||
return -EINVAL;
|
/* Also support boolean values, to make things less confusing. */
|
||||||
|
r = parse_boolean(s);
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
|
||||||
|
/* Let's consider "true" to be equivalent to "auto". */
|
||||||
|
*ret_mode = r ? LINK_AUTO : LINK_NO;
|
||||||
|
*ret_try = false;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7313,19 +7313,30 @@ static int create_edit_temp_file(const char *new_path, const char *original_path
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Failed to determine temporary filename for \"%s\": %m", new_path);
|
return log_error_errno(r, "Failed to determine temporary filename for \"%s\": %m", new_path);
|
||||||
|
|
||||||
r = mkdir_parents(new_path, 0755);
|
r = mkdir_parents_label(new_path, 0755);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Failed to create directories for \"%s\": %m", new_path);
|
return log_error_errno(r, "Failed to create directories for \"%s\": %m", new_path);
|
||||||
|
|
||||||
|
r = mac_selinux_create_file_prepare(original_path, S_IFREG);
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
|
||||||
r = copy_file(original_path, t, 0, 0644, 0, 0, COPY_REFLINK);
|
r = copy_file(original_path, t, 0, 0644, 0, 0, COPY_REFLINK);
|
||||||
if (r == -ENOENT) {
|
if (r == -ENOENT) {
|
||||||
|
|
||||||
r = touch(t);
|
r = touch(t);
|
||||||
|
|
||||||
|
mac_selinux_create_file_clear();
|
||||||
|
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Failed to create temporary file \"%s\": %m", t);
|
return log_error_errno(r, "Failed to create temporary file \"%s\": %m", t);
|
||||||
|
|
||||||
} else if (r < 0)
|
} else {
|
||||||
return log_error_errno(r, "Failed to create temporary file for \"%s\": %m", new_path);
|
mac_selinux_create_file_clear();
|
||||||
|
|
||||||
|
if (r < 0)
|
||||||
|
return log_error_errno(r, "Failed to create temporary file for \"%s\": %m", new_path);
|
||||||
|
}
|
||||||
|
|
||||||
*ret_tmp_fn = TAKE_PTR(t);
|
*ret_tmp_fn = TAKE_PTR(t);
|
||||||
|
|
||||||
|
@ -7604,6 +7615,10 @@ static int edit(int argc, char *argv[], void *userdata) {
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Failed to determine unit paths: %m");
|
return log_error_errno(r, "Failed to determine unit paths: %m");
|
||||||
|
|
||||||
|
r = mac_selinux_init();
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
|
||||||
r = acquire_bus(BUS_MANAGER, &bus);
|
r = acquire_bus(BUS_MANAGER, &bus);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
|
@ -64,6 +64,8 @@ int sd_device_get_usec_since_initialized(sd_device *device, uint64_t *usec);
|
||||||
|
|
||||||
const char *sd_device_get_tag_first(sd_device *device);
|
const char *sd_device_get_tag_first(sd_device *device);
|
||||||
const char *sd_device_get_tag_next(sd_device *device);
|
const char *sd_device_get_tag_next(sd_device *device);
|
||||||
|
const char *sd_device_get_current_tag_first(sd_device *device);
|
||||||
|
const char *sd_device_get_current_tag_next(sd_device *device);
|
||||||
const char *sd_device_get_devlink_first(sd_device *device);
|
const char *sd_device_get_devlink_first(sd_device *device);
|
||||||
const char *sd_device_get_devlink_next(sd_device *device);
|
const char *sd_device_get_devlink_next(sd_device *device);
|
||||||
const char *sd_device_get_property_first(sd_device *device, const char **value);
|
const char *sd_device_get_property_first(sd_device *device, const char **value);
|
||||||
|
@ -72,6 +74,7 @@ const char *sd_device_get_sysattr_first(sd_device *device);
|
||||||
const char *sd_device_get_sysattr_next(sd_device *device);
|
const char *sd_device_get_sysattr_next(sd_device *device);
|
||||||
|
|
||||||
int sd_device_has_tag(sd_device *device, const char *tag);
|
int sd_device_has_tag(sd_device *device, const char *tag);
|
||||||
|
int sd_device_has_current_tag(sd_device *device, const char *tag);
|
||||||
int sd_device_get_property_value(sd_device *device, const char *key, const char **value);
|
int sd_device_get_property_value(sd_device *device, const char *key, const char **value);
|
||||||
int sd_device_get_sysattr_value(sd_device *device, const char *sysattr, const char **_value);
|
int sd_device_get_sysattr_value(sd_device *device, const char *sysattr, const char **_value);
|
||||||
|
|
||||||
|
|
|
@ -958,6 +958,24 @@ static int udev_event_on_move(UdevEvent *event) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int copy_all_tags(sd_device *d, sd_device *s) {
|
||||||
|
const char *tag;
|
||||||
|
int r;
|
||||||
|
|
||||||
|
assert(d);
|
||||||
|
|
||||||
|
if (!s)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
for (tag = sd_device_get_tag_first(s); tag; tag = sd_device_get_tag_next(s)) {
|
||||||
|
r = device_add_tag(d, tag, false);
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int udev_event_execute_rules(UdevEvent *event,
|
int udev_event_execute_rules(UdevEvent *event,
|
||||||
usec_t timeout_usec,
|
usec_t timeout_usec,
|
||||||
int timeout_signal,
|
int timeout_signal,
|
||||||
|
@ -990,6 +1008,10 @@ int udev_event_execute_rules(UdevEvent *event,
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_device_debug_errno(dev, r, "Failed to clone sd_device object: %m");
|
return log_device_debug_errno(dev, r, "Failed to clone sd_device object: %m");
|
||||||
|
|
||||||
|
r = copy_all_tags(dev, event->dev_db_clone);
|
||||||
|
if (r < 0)
|
||||||
|
log_device_warning_errno(dev, r, "Failed to copy all tags from old database entry, ignoring: %m");
|
||||||
|
|
||||||
if (sd_device_get_devnum(dev, NULL) >= 0)
|
if (sd_device_get_devnum(dev, NULL) >= 0)
|
||||||
/* Disable watch during event processing. */
|
/* Disable watch during event processing. */
|
||||||
(void) udev_watch_end(event->dev_db_clone);
|
(void) udev_watch_end(event->dev_db_clone);
|
||||||
|
|
|
@ -2017,7 +2017,7 @@ static int udev_rule_apply_token_to_event(
|
||||||
if (token->op == OP_REMOVE)
|
if (token->op == OP_REMOVE)
|
||||||
device_remove_tag(dev, buf);
|
device_remove_tag(dev, buf);
|
||||||
else {
|
else {
|
||||||
r = device_add_tag(dev, buf);
|
r = device_add_tag(dev, buf, true);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_rule_error_errno(dev, rules, r, "Failed to add tag '%s': %m", buf);
|
return log_rule_error_errno(dev, rules, r, "Failed to add tag '%s': %m", buf);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
../TEST-01-BASIC/Makefile
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
TEST_DESCRIPTION="UDEV tags management"
|
||||||
|
TEST_NO_NSPAWN=1
|
||||||
|
|
||||||
|
. $TEST_BASE_DIR/test-functions
|
||||||
|
|
||||||
|
do_test "$@" 55
|
|
@ -673,7 +673,7 @@ get_ldpath() {
|
||||||
install_missing_libraries() {
|
install_missing_libraries() {
|
||||||
# install possible missing libraries
|
# install possible missing libraries
|
||||||
for i in $initdir{,/usr}/{sbin,bin}/* $initdir{,/usr}/lib/systemd/{,tests/{,manual/,unsafe/}}*; do
|
for i in $initdir{,/usr}/{sbin,bin}/* $initdir{,/usr}/lib/systemd/{,tests/{,manual/,unsafe/}}*; do
|
||||||
LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$(get_ldpath $i)" inst_libs $i
|
LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$(get_ldpath $i):$(get_ldpath $i)/src/udev" inst_libs $i
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
[Unit]
|
||||||
|
Description=TESTSUITE-55-UDEV-TAGS
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStartPre=rm -f /failed /testok
|
||||||
|
ExecStart=/usr/lib/systemd/tests/testdata/units/%N.sh
|
||||||
|
Type=oneshot
|
|
@ -0,0 +1,66 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -ex
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
mkdir -p /run/udev/rules.d/
|
||||||
|
|
||||||
|
! test -f /run/udev/tags/added/c1:3 &&
|
||||||
|
! test -f /run/udev/tags/changed/c1:3 &&
|
||||||
|
udevadm info /dev/null | grep -q -v 'E: TAGS=.*:added:.*' &&
|
||||||
|
udevadm info /dev/null | grep -q -v 'E: CURRENT_TAGS=.*:added:.*' &&
|
||||||
|
udevadm info /dev/null | grep -q -v 'E: TAGS=.*:changed:.*' &&
|
||||||
|
udevadm info /dev/null | grep -q -v 'E: CURRENT_TAGS=.*:changed:.*'
|
||||||
|
|
||||||
|
cat > /run/udev/rules.d/50-testsuite.rules <<EOF
|
||||||
|
ACTION=="add", SUBSYSTEM=="mem", KERNEL=="null", TAG+="added"
|
||||||
|
ACTION=="change", SUBSYSTEM=="mem", KERNEL=="null", TAG+="changed"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
udevadm control --reload
|
||||||
|
udevadm trigger -c add /dev/null
|
||||||
|
|
||||||
|
while : ; do
|
||||||
|
test -f /run/udev/tags/added/c1:3 &&
|
||||||
|
! test -f /run/udev/tags/changed/c1:3 &&
|
||||||
|
udevadm info /dev/null | grep -q 'E: TAGS=.*:added:.*' &&
|
||||||
|
udevadm info /dev/null | grep -q 'E: CURRENT_TAGS=.*:added:.*' &&
|
||||||
|
udevadm info /dev/null | grep -q -v 'E: TAGS=.*:changed:.*' &&
|
||||||
|
udevadm info /dev/null | grep -q -v 'E: CURRENT_TAGS=.*:changed:.*' &&
|
||||||
|
break
|
||||||
|
|
||||||
|
sleep .5
|
||||||
|
done
|
||||||
|
|
||||||
|
udevadm control --reload
|
||||||
|
udevadm trigger -c change /dev/null
|
||||||
|
|
||||||
|
while : ; do
|
||||||
|
test -f /run/udev/tags/added/c1:3 &&
|
||||||
|
test -f /run/udev/tags/changed/c1:3 &&
|
||||||
|
udevadm info /dev/null | grep -q 'E: TAGS=.*:added:.*' &&
|
||||||
|
udevadm info /dev/null | grep -q -v 'E: CURRENT_TAGS=.*:added:.*' &&
|
||||||
|
udevadm info /dev/null | grep -q 'E: TAGS=.*:changed:.*' &&
|
||||||
|
udevadm info /dev/null | grep -q 'E: CURRENT_TAGS=.*:changed:.*' &&
|
||||||
|
break
|
||||||
|
|
||||||
|
sleep .5
|
||||||
|
done
|
||||||
|
|
||||||
|
udevadm control --reload
|
||||||
|
udevadm trigger -c add /dev/null
|
||||||
|
|
||||||
|
while : ; do
|
||||||
|
test -f /run/udev/tags/added/c1:3 &&
|
||||||
|
test -f /run/udev/tags/changed/c1:3 &&
|
||||||
|
udevadm info /dev/null | grep -q 'E: TAGS=.*:added:.*' &&
|
||||||
|
udevadm info /dev/null | grep -q 'E: CURRENT_TAGS=.*:added:.*' &&
|
||||||
|
udevadm info /dev/null | grep -q 'E: TAGS=.*:changed:.*' &&
|
||||||
|
udevadm info /dev/null | grep -q -v 'E: CURRENT_TAGS=.*:changed:.*' &&
|
||||||
|
break
|
||||||
|
|
||||||
|
sleep .5
|
||||||
|
done
|
||||||
|
|
||||||
|
echo OK > /testok
|
||||||
|
|
||||||
|
exit 0
|
Loading…
Reference in New Issue