Compare commits

..

5 Commits

Author SHA1 Message Date
Daniele Medri 972e81629d Italian: removed spurious lines of old labels 2020-03-01 12:00:42 +01:00
Daniele Medri f7ae155b14 italian: language updates 2020-03-01 12:00:42 +01:00
Yu Watanabe 8ad2012d1e
Merge pull request #14966 from keszybz/journalctl-facilities
journalctl: filtering by facility
2020-03-01 13:17:00 +09:00
Zbigniew Jędrzejewski-Szmek 196dedd503 journalctl: implement --facility=foo
Fixes #9716.
2020-02-29 18:07:37 +01:00
Zbigniew Jędrzejewski-Szmek aa73f181e9 basic/string-table: avoid crash when table is sparse
Generated _from_string() would crash when invoked on a table with some
holes.
2020-02-27 21:36:58 +01:00
4 changed files with 178 additions and 31 deletions

View File

@ -597,6 +597,16 @@
priorities.</para></listitem> priorities.</para></listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><option>--facility=</option></term>
<listitem><para>Filter output by syslog facility. Takes a comma-separated list of numbers or facility
names. The names are the usual syslog facilities as documented in
<citerefentry project='man-pages'><refentrytitle>syslog</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
<option>--facility=help</option> may be used to display a list of known facility names and exit.
</para></listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><option>-g</option></term> <term><option>-g</option></term>
<term><option>--grep=</option></term> <term><option>--grep=</option></term>

119
po/it.po
View File

@ -8,8 +8,8 @@ msgid ""
msgstr "" 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-01-19 11:37+0100\n" "POT-Creation-Date: 2020-02-27 17:10+0100\n"
"PO-Revision-Date: 2020-01-19 11:46+0100\n" "PO-Revision-Date: 2020-02-27 17:22+0100\n"
"Last-Translator: Daniele Medri <dmedri@gmail.com>\n" "Last-Translator: Daniele Medri <dmedri@gmail.com>\n"
"Language-Team: Italian\n" "Language-Team: Italian\n"
"Language: it\n" "Language: it\n"
@ -70,6 +70,59 @@ msgstr "Ricarica lo stato di systemd"
msgid "Authentication is required to reload the systemd state." msgid "Authentication is required to reload the systemd state."
msgstr "Autenticazione richiesta per riavviare lo stato di sistemd." msgstr "Autenticazione richiesta per riavviare lo stato di sistemd."
#: src/home/org.freedesktop.home1.policy:13
msgid "Create a home area"
msgstr "Crea un'area home"
#: src/home/org.freedesktop.home1.policy:14
msgid "Authentication is required to creat a user's home area."
msgstr "Autenticazione richiesta per creare un'area home per l'utente."
#: src/home/org.freedesktop.home1.policy:23
msgid "Remove a home area"
msgstr "Rimuovi un'area home"
#: src/home/org.freedesktop.home1.policy:24
msgid "Authentication is required to remov a user's home area."
msgstr "Autenticazione richiesta per rimuovere un'area home per l'utente."
#: src/home/org.freedesktop.home1.policy:33
msgid "Check credentials of a home area"
msgstr "Controlla credenziali di un'area home"
#: src/home/org.freedesktop.home1.policy:34
msgid ""
"Authentication is required to check credentials against a user's home area."
msgstr ""
"Autenticazione richiesta per controllare le credenziali di un'area home per "
"l'utente."
#: src/home/org.freedesktop.home1.policy:43
msgid "Update a home area"
msgstr "Aggiorna un'area home"
#: src/home/org.freedesktop.home1.policy:44
msgid "Authentication is required to updat a user's home area."
msgstr "Autenticazione richiesta per aggiornare un'area home per l'utente."
#: src/home/org.freedesktop.home1.policy:53
msgid "Resize a home area"
msgstr "Ridimensiona un'area home"
#: src/home/org.freedesktop.home1.policy:54
msgid "Authentication is required to resiz a user's home area."
msgstr "Autenticazione richiesta per ridimensionare l'area home dell'utente."
#: src/home/org.freedesktop.home1.policy:63
msgid "Change password of a home area"
msgstr "Cambia password di un'area home"
#: src/home/org.freedesktop.home1.policy:64
msgid "Authentication is required to chang the password of a user's home area."
msgstr ""
"Autenticazione richiesta per cambiare le password per l'area home "
"dell'utente."
#: src/hostname/org.freedesktop.hostname1.policy:20 #: src/hostname/org.freedesktop.hostname1.policy:20
msgid "Set host name" msgid "Set host name"
msgstr "Configura il nome host" msgstr "Configura il nome host"
@ -293,8 +346,7 @@ msgid "Flush device to seat attachments"
msgstr "Scollega i dispositivi dalla postazione" msgstr "Scollega i dispositivi dalla postazione"
#: src/login/org.freedesktop.login1.policy:149 #: src/login/org.freedesktop.login1.policy:149
msgid "" msgid "Authentication is required to reset how devices are attached to seats."
"Authentication is required to reset how devices are attached to seats."
msgstr "" msgstr ""
"Autenticazione richiesta per ripristinare come i dispositivi sono collegati " "Autenticazione richiesta per ripristinare come i dispositivi sono collegati "
"alle postazioni." "alle postazioni."
@ -325,8 +377,8 @@ msgstr "Spegni il sistema mentre un'applicazione chiede di inibirne l'azione"
#: 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 " "Authentication is required to power off the system while an application is "
"is inhibiting this." "inhibiting this."
msgstr "" msgstr ""
"Autenticazione richiesta per spegnere il sistema mentre un'applicazione " "Autenticazione richiesta per spegnere il sistema mentre un'applicazione "
"chiede di inibirne l'azione." "chiede di inibirne l'azione."
@ -345,8 +397,8 @@ msgstr "Riavvia il sistema mentre altri utenti sono connessi"
#: 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 " "Authentication is required to reboot the system while other users are logged "
"logged in." "in."
msgstr "" msgstr ""
"Autenticazione richiesta per riavviare il sistema mentre altri utenti sono " "Autenticazione richiesta per riavviare il sistema mentre altri utenti sono "
"connessi." "connessi."
@ -357,8 +409,8 @@ msgstr "Riavvia il sistema mentre un'applicazione chiede di inibirne l'azione"
#: 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 " "Authentication is required to reboot the system while an application is "
"is inhibiting this." "inhibiting this."
msgstr "" msgstr ""
"Autenticazione richiesta per riavviare il sistema mentre un'applicazione " "Autenticazione richiesta per riavviare il sistema mentre un'applicazione "
"chiede di inibirne l'azione." "chiede di inibirne l'azione."
@ -377,8 +429,8 @@ msgstr "Ferma il sistema mentre altri utenti sono connessi"
#: 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 " "Authentication is required to halt the system while other users are logged "
"logged in." "in."
msgstr "" msgstr ""
"Autenticazione richiesta per fermare il sistema mentre altri utenti sono " "Autenticazione richiesta per fermare il sistema mentre altri utenti sono "
"connessi." "connessi."
@ -389,11 +441,11 @@ msgstr "Ferma il sistema mentre un'applicazione chiede di inibirne l'azione"
#: 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 asked " "Authentication is required to halt the system while an application is "
"to inhibit it." "inhibiting this."
msgstr "" msgstr ""
"Autenticazione richiesta per fermare il sistema mentre un'applicazione " "Autenticazione richiesta per ibernare il sistema mentre un'applicazione ne "
"chiede di inibirne l'azione." "inibisce l'azione."
#: src/login/org.freedesktop.login1.policy:257 #: src/login/org.freedesktop.login1.policy:257
msgid "Suspend the system" msgid "Suspend the system"
@ -421,8 +473,8 @@ msgstr "Sospendi il sistema mentre un'applicazione chiede di inibirne l'azione"
#: 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 " "Authentication is required to suspend the system while an application is "
"is inhibiting this." "inhibiting this."
msgstr "" msgstr ""
"Autenticazione richiesta per sospendere il sistema mentre un'applicazione " "Autenticazione richiesta per sospendere il sistema mentre un'applicazione "
"chiede di inibirne l'azione." "chiede di inibirne l'azione."
@ -453,8 +505,8 @@ msgstr "Iberna il sistema mentre un'applicazione chiede di inibirne l'azione"
#: 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 " "Authentication is required to hibernate the system while an application is "
"is inhibiting this." "inhibiting this."
msgstr "" msgstr ""
"Autenticazione richiesta per ibernare il sistema mentre un'applicazione " "Autenticazione richiesta per ibernare il sistema mentre un'applicazione "
"chiede di inibirne l'azione." "chiede di inibirne l'azione."
@ -464,8 +516,7 @@ msgid "Manage active sessions, users and seats"
msgstr "Gestione delle sessioni attive, utenti e postazioni" msgstr "Gestione delle sessioni attive, utenti e postazioni"
#: src/login/org.freedesktop.login1.policy:322 #: src/login/org.freedesktop.login1.policy:322
msgid "" msgid "Authentication is required to manage active sessions, users and seats."
"Authentication is required to manage active sessions, users and seats."
msgstr "" msgstr ""
"Autenticazione richiesta per gestire le sessioni attive, gli utenti e le " "Autenticazione richiesta per gestire le sessioni attive, gli utenti e le "
"postazioni." "postazioni."
@ -532,6 +583,14 @@ msgstr "Configura un messaggio per gli utenti"
msgid "Authentication is required to set a wall message" msgid "Authentication is required to set a wall message"
msgstr "Autenticazione richiesta per configurare un messaggio per gli utenti" msgstr "Autenticazione richiesta per configurare un messaggio per gli utenti"
#: src/login/org.freedesktop.login1.policy:395
msgid "Change Session"
msgstr "Cambia sessione"
#: src/login/org.freedesktop.login1.policy:396
msgid "Authentication is required to change the virtual terminal."
msgstr "Autenticazione richiesta per cambiare il terminale virtuale."
#: 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 "Accedi ad un container locale" msgstr "Accedi ad un container locale"
@ -835,23 +894,23 @@ msgstr ""
"Autenticazione richiesta per verificare se la sincronizzazione dell'orario " "Autenticazione richiesta per verificare se la sincronizzazione dell'orario "
"in rete deve essere attivata." "in rete deve essere attivata."
#: src/core/dbus-unit.c:354 #: src/core/dbus-unit.c:356
msgid "Authentication is required to start '$(unit)'." msgid "Authentication is required to start '$(unit)'."
msgstr "Autenticazione richiesta per avviare '$(unit)'." msgstr "Autenticazione richiesta per avviare '$(unit)'."
#: src/core/dbus-unit.c:355 #: src/core/dbus-unit.c:357
msgid "Authentication is required to stop '$(unit)'." msgid "Authentication is required to stop '$(unit)'."
msgstr "Autenticazione richiesta per fermare '$(unit)'." msgstr "Autenticazione richiesta per fermare '$(unit)'."
#: src/core/dbus-unit.c:356 #: src/core/dbus-unit.c:358
msgid "Authentication is required to reload '$(unit)'." msgid "Authentication is required to reload '$(unit)'."
msgstr "Autenticazione richiesta per ricaricare '$(unit)'." msgstr "Autenticazione richiesta per ricaricare '$(unit)'."
#: src/core/dbus-unit.c:357 src/core/dbus-unit.c:358 #: src/core/dbus-unit.c:359 src/core/dbus-unit.c:360
msgid "Authentication is required to restart '$(unit)'." msgid "Authentication is required to restart '$(unit)'."
msgstr "Autenticazione richiesta per riavviare '$(unit)'." msgstr "Autenticazione richiesta per riavviare '$(unit)'."
#: src/core/dbus-unit.c:530 #: src/core/dbus-unit.c:532
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)'."
@ -859,16 +918,16 @@ msgstr ""
"Autenticazione richiesta per inviare un segnale UNIX ai processi di " "Autenticazione richiesta per inviare un segnale UNIX ai processi di "
"'$(unit)'." "'$(unit)'."
#: src/core/dbus-unit.c:561 #: src/core/dbus-unit.c:563
msgid "Authentication is required to reset the \"failed\" state of '$(unit)'." msgid "Authentication is required to reset the \"failed\" state of '$(unit)'."
msgstr "" msgstr ""
"Autenticazione richiesta per riconfigurare lo stato \"fallito\" di '$(unit)'." "Autenticazione richiesta per riconfigurare lo stato \"fallito\" di '$(unit)'."
#: src/core/dbus-unit.c:594 #: src/core/dbus-unit.c:596
msgid "Authentication is required to set properties on '$(unit)'." msgid "Authentication is required to set properties on '$(unit)'."
msgstr "Autenticazione richiesta per configurare le proprietà di '$(unit)'." msgstr "Autenticazione richiesta per configurare le proprietà di '$(unit)'."
#: src/core/dbus-unit.c:703 #: src/core/dbus-unit.c:705
msgid "" msgid ""
"Authentication is required to delete files and directories associated with " "Authentication is required to delete files and directories associated with "
"'$(unit)'." "'$(unit)'."

View File

@ -44,7 +44,7 @@ ssize_t string_table_lookup(const char * const *table, size_t len, const char *k
char *s; \ char *s; \
if (i < 0 || i > max) \ if (i < 0 || i > max) \
return -ERANGE; \ return -ERANGE; \
if (i < (type) ELEMENTSOF(name##_table)) { \ if (i < (type) ELEMENTSOF(name##_table) && name##_table[i]) { \
s = strdup(name##_table[i]); \ s = strdup(name##_table[i]); \
if (!s) \ if (!s) \
return -ENOMEM; \ return -ENOMEM; \

View File

@ -62,6 +62,7 @@
#include "sigbus.h" #include "sigbus.h"
#include "string-table.h" #include "string-table.h"
#include "strv.h" #include "strv.h"
#include "stdio-util.h"
#include "syslog-util.h" #include "syslog-util.h"
#include "terminal-util.h" #include "terminal-util.h"
#include "tmpfile-util.h" #include "tmpfile-util.h"
@ -101,6 +102,7 @@ static const char *arg_directory = NULL;
static char **arg_file = NULL; static char **arg_file = NULL;
static bool arg_file_stdin = false; static bool arg_file_stdin = false;
static int arg_priorities = 0xFF; static int arg_priorities = 0xFF;
static Set *arg_facilities = NULL;
static char *arg_verify_key = NULL; static char *arg_verify_key = NULL;
#if HAVE_GCRYPT #if HAVE_GCRYPT
static usec_t arg_interval = DEFAULT_FSS_INTERVAL_USEC; static usec_t arg_interval = DEFAULT_FSS_INTERVAL_USEC;
@ -303,6 +305,21 @@ static int parse_boot_descriptor(const char *x, sd_id128_t *boot_id, int *offset
return 1; return 1;
} }
static int help_facilities(void) {
if (!arg_quiet)
puts("Available facilities:");
for (int i = 0; i < LOG_NFACILITIES; i++) {
_cleanup_free_ char *t = NULL;
if (log_facility_unshifted_to_string_alloc(i, &t))
return log_oom();
puts(t);
}
return 0;
}
static int help(void) { static int help(void) {
_cleanup_free_ char *link = NULL; _cleanup_free_ char *link = NULL;
int r; int r;
@ -332,6 +349,7 @@ static int help(void) {
" --user-unit=UNIT Show logs from the specified user unit\n" " --user-unit=UNIT Show logs from the specified user unit\n"
" -t --identifier=STRING Show entries with the specified syslog identifier\n" " -t --identifier=STRING Show entries with the specified syslog identifier\n"
" -p --priority=RANGE Show entries with the specified priority\n" " -p --priority=RANGE Show entries with the specified priority\n"
" --facility=FACILITY... Show entries with the specified facilities\n"
" -g --grep=PATTERN Show entries with MESSAGE matching PATTERN\n" " -g --grep=PATTERN Show entries with MESSAGE matching PATTERN\n"
" --case-sensitive[=BOOL] Force case sensitive or insenstive matching\n" " --case-sensitive[=BOOL] Force case sensitive or insenstive matching\n"
" -e --pager-end Immediately jump to the end in the pager\n" " -e --pager-end Immediately jump to the end in the pager\n"
@ -404,6 +422,7 @@ static int parse_argv(int argc, char *argv[]) {
ARG_SYSTEM, ARG_SYSTEM,
ARG_ROOT, ARG_ROOT,
ARG_HEADER, ARG_HEADER,
ARG_FACILITY,
ARG_SETUP_KEYS, ARG_SETUP_KEYS,
ARG_FILE, ARG_FILE,
ARG_INTERVAL, ARG_INTERVAL,
@ -461,6 +480,7 @@ static int parse_argv(int argc, char *argv[]) {
{ "header", no_argument, NULL, ARG_HEADER }, { "header", no_argument, NULL, ARG_HEADER },
{ "identifier", required_argument, NULL, 't' }, { "identifier", required_argument, NULL, 't' },
{ "priority", required_argument, NULL, 'p' }, { "priority", required_argument, NULL, 'p' },
{ "facility", required_argument, NULL, ARG_FACILITY },
{ "grep", required_argument, NULL, 'g' }, { "grep", required_argument, NULL, 'g' },
{ "case-sensitive", optional_argument, NULL, ARG_CASE_SENSITIVE }, { "case-sensitive", optional_argument, NULL, ARG_CASE_SENSITIVE },
{ "setup-keys", no_argument, NULL, ARG_SETUP_KEYS }, { "setup-keys", no_argument, NULL, ARG_SETUP_KEYS },
@ -832,6 +852,41 @@ static int parse_argv(int argc, char *argv[]) {
break; break;
} }
case ARG_FACILITY: {
const char *p;
for (p = optarg;;) {
_cleanup_free_ char *fac = NULL;
int num;
r = extract_first_word(&p, &fac, ",", 0);
if (r < 0)
return log_error_errno(r, "Failed to parse facilities: %s", optarg);
if (r == 0)
break;
if (streq(fac, "help")) {
help_facilities();
return 0;
}
num = log_facility_unshifted_from_string(fac);
if (num < 0)
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
"Bad --facility= argument \"%s\".", fac);
r = set_ensure_allocated(&arg_facilities, NULL);
if (r < 0)
return log_oom();
r = set_put(arg_facilities, INT_TO_PTR(num));
if (r < 0)
return log_oom();
}
break;
}
#if HAVE_PCRE2 #if HAVE_PCRE2
case 'g': case 'g':
arg_pattern = optarg; arg_pattern = optarg;
@ -1676,6 +1731,24 @@ static int add_priorities(sd_journal *j) {
return 0; return 0;
} }
static int add_facilities(sd_journal *j) {
void *p;
Iterator it;
int r;
SET_FOREACH(p, arg_facilities, it) {
char match[STRLEN("SYSLOG_FACILITY=") + DECIMAL_STR_MAX(int)];
xsprintf(match, "SYSLOG_FACILITY=%d", PTR_TO_INT(p));
r = sd_journal_add_match(j, match, strlen(match));
if (r < 0)
return log_error_errno(r, "Failed to add match: %m");
}
return 0;
}
static int add_syslog_identifier(sd_journal *j) { static int add_syslog_identifier(sd_journal *j) {
int r; int r;
char **i; char **i;
@ -2314,6 +2387,10 @@ int main(int argc, char *argv[]) {
if (r < 0) if (r < 0)
goto finish; goto finish;
r = add_facilities(j);
if (r < 0)
goto finish;
r = add_matches(j, argv + optind); r = add_matches(j, argv + optind);
if (r < 0) if (r < 0)
goto finish; goto finish;
@ -2681,6 +2758,7 @@ finish:
strv_free(arg_file); strv_free(arg_file);
set_free(arg_facilities);
strv_free(arg_syslog_identifier); strv_free(arg_syslog_identifier);
strv_free(arg_system_units); strv_free(arg_system_units);
strv_free(arg_user_units); strv_free(arg_user_units);