Compare commits

..

16 Commits

Author SHA1 Message Date
Yu Watanabe c9fdaed079 man: add entry about SpeedMeter=
Closes #14002.
2019-11-18 16:47:26 +01:00
Yu Watanabe f0beb6f816 udev: silence warning about PROGRAM+= or IMPORT+= rules
Closes #14062.
2019-11-18 16:46:12 +01:00
Zbigniew Jędrzejewski-Szmek a1db5bbc97 man: add entry for systemd-id128 --uuid 2019-11-18 16:44:10 +01:00
Yu Watanabe dc11d2bf66 udevadm: ignore EROFS and return earlier
Fixes #14060.
2019-11-18 16:07:21 +01:00
Zbigniew Jędrzejewski-Szmek 0b15d12204
Merge pull request #14040 from poettering/root-mount-deps
root mount dep fixes
2019-11-18 15:29:35 +01:00
Yu Watanabe c00c3b64be network: add more error logs 2019-11-18 15:26:55 +01:00
Zbigniew Jędrzejewski-Szmek f0f3a0b52a
Merge pull request #14046 from poettering/id128-uuid
add "-u" switch to systemd-uuid for outputting ids in UUID format
2019-11-18 15:19:43 +01:00
Lennart Poettering 353b2baa20 tree-wide: clean up --help texts a bit
This cleans up and unifies the outut of --help texts a bit:

1. Highlight the human friendly description string, not the command
   line via ANSI sequences. Previously both this description string and
   the brief command line summary was marked with the same ANSI
   highlight sequence, but given we auto-page to less and less does not
   honour multi-line highlights only the command line summary was
   affectively highlighted. Rationale: for highlighting the description
   instead of the command line: the command line summary is relatively
   boring, and mostly the same for out tools, the description on the
   other hand is pregnant, important and captions the whole thing and
   hence deserves highlighting.

2. Always suffix "Options" with ":" in the help text

3. Rename "Flags" →  "Options" in one case

4. Move commands to the top in a few cases

5. add coloring to many more help pages

6. Unify on COMMAND instead of {COMMAND} in the command line summary.
   Some tools did it one way, others the other way. I am not sure what
   precisely {} is supposed to mean, that uppercasing doesn't, hence
   let's simplify and stick to the {}-less syntax

And minor other tweaks.
2019-11-18 15:14:43 +01:00
Yu Watanabe ce0d4c4f91
Merge pull request #14056 from yuwata/dhcp-debug-logs
dhcp: add debug logs and propagate error in restarting client
2019-11-18 18:49:45 +09:00
Yu Watanabe a339859f79 dhcp6: add debug logs 2019-11-17 23:58:43 +09:00
Yu Watanabe 944e23b8a0 dhcp4: propagate error in restarting DHCPv4 client 2019-11-17 23:52:46 +09:00
Yu Watanabe f515c345d2 dhcp4: add debug logs 2019-11-17 23:48:46 +09:00
Lennart Poettering bf7eedbf8f mount: do not update exec deps on mountinfo changes
Fixes: #13978
2019-11-16 13:53:48 +01:00
Lennart Poettering b8e5776d38 mount: extend list of extrinsic mounts a bit 2019-11-16 13:53:48 +01:00
Lennart Poettering 394fda4caf id128: drop "MESSAGE_" prefix of pretty output
Using these IDs for message identication is one use case, but there are
others, hence let's drop the prefix, it only made sense to have while
the tool was part of journalctl.
2019-11-15 19:07:05 +01:00
Lennart Poettering a19fdd66c2 id128: add new "-u" switch for outputting Ids in UUID format
For some unrelated stuff I wanted the machine ID in UUID format, and it
was annoying doing that manually. So let's add a switch for this, so
that this works:

    systemd-id128 machine-id -u
2019-11-15 19:07:05 +01:00
32 changed files with 351 additions and 214 deletions

View File

@ -42,6 +42,28 @@
<xi:include href="standard-conf.xml" xpointer="main-conf" />
<refsect1>
<title>[Network] Section Options</title>
<para>The following options are available in the <literal>[Network]</literal> section:</para>
<variablelist class='network-directives'>
<varlistentry>
<term><varname>SpeedMeter=</varname></term>
<listitem><para>Takes a boolean. If set to yes, then <command>systemd-networkd</command>
measures the traffic of each interface, and
<command>networkctl status <replaceable>INTERFACE</replaceable> shows the measured speed.
</command>Defaults to no.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SpeedMeterIntervalSec=</varname></term>
<listitem><para>Specifies the time interval to calculate the traffic speed of each interface.
If <varname>SpeedMeter=no</varname>, the value is ignored. Defaults to 10sec.</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>[DHCP] Section Options</title>

View File

@ -99,6 +99,16 @@
</listitem>
</varlistentry>
<varlistentry>
<term><option>-u</option></term>
<term><option>--uuid</option></term>
<listitem><para>Generate output as an UUID formatted in the "canonical representation", with five
groups of digits seperated by hyphens. See the
<ulink url="https://en.wikipedia.org/wiki/Universally_unique_identifier#Format">wikipedia</ulink>
for more discussion.</para></listitem>
</varlistentry>
<xi:include href="standard-options.xml" xpointer="help" />
<xi:include href="standard-options.xml" xpointer="version" />
</variablelist>

View File

@ -332,9 +332,9 @@ static int help(void) {
if (r < 0)
return log_oom();
printf("%s [OPTIONS...]\n\n"
"Listen on sockets and launch child on connection.\n\n"
"Options:\n"
printf("%s [OPTIONS...]\n"
"\n%sListen on sockets and launch child on connection.%s\n"
"\nOptions:\n"
" -h --help Show this help and exit\n"
" --version Print version string and exit\n"
" -l --listen=ADDR Listen for raw connections at ADDR\n"
@ -347,6 +347,7 @@ static int help(void) {
"\nNote: file descriptors from sd_listen_fds() will be passed through.\n"
"\nSee the %s for details.\n"
, program_invocation_short_name
, ansi_highlight(), ansi_normal()
, link
);

View File

@ -2243,26 +2243,8 @@ static int help(int argc, char *argv[], void *userdata) {
if (r < 0)
return log_oom();
printf("%s [OPTIONS...] {COMMAND} ...\n\n"
"Profile systemd, show unit dependencies, check unit files.\n\n"
" -h --help Show this help\n"
" --version Show package version\n"
" --no-pager Do not pipe output into a pager\n"
" --system Operate on system systemd instance\n"
" --user Operate on user systemd instance\n"
" --global Operate on global user configuration\n"
" -H --host=[USER@]HOST Operate on remote host\n"
" -M --machine=CONTAINER Operate on local container\n"
" --order Show only order in the graph\n"
" --require Show only requirement in the graph\n"
" --from-pattern=GLOB Show only origins in the graph\n"
" --to-pattern=GLOB Show only destinations in the graph\n"
" --fuzz=SECONDS Also print services which finished SECONDS earlier\n"
" than the latest in the branch\n"
" --man[=BOOL] Do [not] check for existence of man pages\n"
" --generators[=BOOL] Do [not] run unit generators (requires privileges)\n"
" --iterations=N Show the specified number of iterations\n"
" --base-time=TIMESTAMP Calculate calendar times relative to specified time\n"
printf("%s [OPTIONS...] COMMAND ...\n\n"
"%sProfile systemd, show unit dependencies, check unit files.%s\n"
"\nCommands:\n"
" time Print time spent in the kernel\n"
" blame Print list of running units ordered by time to init\n"
@ -2284,8 +2266,29 @@ static int help(int argc, char *argv[], void *userdata) {
" timestamp TIMESTAMP... Validate a timestamp\n"
" timespan SPAN... Validate a time span\n"
" security [UNIT...] Analyze security of unit\n"
"\nOptions:\n"
" -h --help Show this help\n"
" --version Show package version\n"
" --no-pager Do not pipe output into a pager\n"
" --system Operate on system systemd instance\n"
" --user Operate on user systemd instance\n"
" --global Operate on global user configuration\n"
" -H --host=[USER@]HOST Operate on remote host\n"
" -M --machine=CONTAINER Operate on local container\n"
" --order Show only order in the graph\n"
" --require Show only requirement in the graph\n"
" --from-pattern=GLOB Show only origins in the graph\n"
" --to-pattern=GLOB Show only destinations in the graph\n"
" --fuzz=SECONDS Also print services which finished SECONDS earlier\n"
" than the latest in the branch\n"
" --man[=BOOL] Do [not] check for existence of man pages\n"
" --generators[=BOOL] Do [not] run unit generators (requires privileges)\n"
" --iterations=N Show the specified number of iterations\n"
" --base-time=TIMESTAMP Calculate calendar times relative to specified time\n"
"\nSee the %s for details.\n"
, program_invocation_short_name
, ansi_highlight()
, ansi_normal()
, dot_link
, link
);

View File

@ -13,6 +13,8 @@
#include "main-func.h"
#include "parse-util.h"
#include "path-util.h"
#include "pretty-print.h"
#include "terminal-util.h"
#include "util.h"
#include "verbs.h"
#include "virt.h"
@ -22,19 +24,29 @@ static char **arg_path = NULL;
STATIC_DESTRUCTOR_REGISTER(arg_path, strv_freep);
static int help(int argc, char *argv[], void *userdata) {
_cleanup_free_ char *link = NULL;
int r;
printf("%s [COMMAND] [OPTIONS...]\n"
"\n"
"Mark the boot process as good or bad.\n\n"
r = terminal_urlify_man("systemd-bless-boot.service", "8", &link);
if (r < 0)
return log_oom();
printf("%s [OPTIONS...] COMMAND\n"
"\n%sMark the boot process as good or bad.%s\n"
"\nCommands:\n"
" good Mark this boot as good\n"
" bad Mark this boot as bad\n"
" indeterminate Undo any marking as good or bad\n"
"\nOptions:\n"
" -h --help Show this help\n"
" --version Print version\n"
" --path=PATH Path to the $BOOT partition (may be used multiple times)\n"
"\n"
"Commands:\n"
" good Mark this boot as good\n"
" bad Mark this boot as bad\n"
" indeterminate Undo any marking as good or bad\n",
program_invocation_short_name);
"\nSee the %s for details.\n"
, program_invocation_short_name
, ansi_highlight()
, ansi_normal()
, link
);
return 0;
}

View File

@ -11,16 +11,28 @@
#include "bus-error.h"
#include "log.h"
#include "main-func.h"
#include "pretty-print.h"
#include "terminal-util.h"
#include "util.h"
static int help(void) {
_cleanup_free_ char *link = NULL;
int r;
printf("%s [COMMAND] [OPTIONS...]\n"
"\n"
"Verify system operational state.\n\n"
r = terminal_urlify_man("systemd-boot-check-no-failures.service", "8", &link);
if (r < 0)
return log_oom();
printf("%s [OPTIONS...]\n"
"\n%sVerify system operational state.%s\n\n"
" -h --help Show this help\n"
" --version Print version\n",
program_invocation_short_name);
" --version Print version\n"
"\nSee the %s for details.\n"
, program_invocation_short_name
, ansi_highlight()
, ansi_normal()
, link
);
return 0;
}

View File

@ -1032,8 +1032,8 @@ static int help(int argc, char *argv[], void *userdata) {
if (r < 0)
return log_oom();
printf("%s [COMMAND] [OPTIONS...]\n\n"
"Install, update or remove the systemd-boot EFI boot manager.\n"
printf("%s [OPTIONS...] COMMAND ...\n"
"\n%sInstall, update or remove the systemd-boot EFI boot manager.%s\n"
"\nBoot Loader Commands:\n"
" status Show status of installed systemd-boot and EFI variables\n"
" install Install systemd-boot to the ESP and EFI variables\n"
@ -1046,6 +1046,7 @@ static int help(int argc, char *argv[], void *userdata) {
" list List boot loader entries\n"
" set-default ID Set default boot loader entry\n"
" set-oneshot ID Set default boot loader entry, for next boot only\n"
"\nOptions:\n"
" -h --help Show this help\n"
" --version Print version\n"
" --esp-path=PATH Path to the EFI System Partition (ESP)\n"
@ -1056,6 +1057,8 @@ static int help(int argc, char *argv[], void *userdata) {
" --no-pager Do not pipe output into a pager\n"
"\nSee the %s for details.\n"
, program_invocation_short_name
, ansi_highlight()
, ansi_normal()
, link);
return 0;

View File

@ -2228,9 +2228,9 @@ static int help(void) {
if (r < 0)
return log_oom();
printf("%s%s [OPTIONS...] {COMMAND} ...\n\n"
"Introspect the bus.%s\n\n"
"Commands:\n"
printf("%s [OPTIONS...] COMMAND ...\n\n"
"%sIntrospect the D-Bus IPC bus.%s\n"
"\nCommands:\n"
" list List bus names\n"
" status [SERVICE] Show bus service, process or bus owner credentials\n"
" monitor [SERVICE...] Show bus traffic\n"
@ -2277,8 +2277,8 @@ static int help(void) {
" system\n"
" --destination=SERVICE Destination service of a signal\n"
"\nSee the %s for details.\n"
, ansi_highlight()
, program_invocation_short_name
, ansi_highlight()
, ansi_normal()
, link
);

View File

@ -409,9 +409,13 @@ static bool mount_is_extrinsic(Mount *m) {
if (!MANAGER_IS_SYSTEM(UNIT(m)->manager)) /* We only automatically manage mounts if we are in system mode */
return true;
if (UNIT(m)->perpetual) /* All perpetual units never change state */
return true;
if (PATH_IN_SET(m->where, /* Don't bother with the OS data itself */
"/",
"/usr"))
"/", /* (strictly speaking redundant: should already be covered by the perpetual flag check above) */
"/usr",
"/etc"))
return true;
if (PATH_STARTSWITH_SET(m->where,
@ -546,6 +550,32 @@ static int mount_verify(Mount *m) {
return 0;
}
static int mount_add_non_exec_dependencies(Mount *m) {
int r;
assert(m);
/* Adds in all dependencies directly responsible for ordering the mount, as opposed to dependencies
* resulting from the ExecContext and such. */
r = mount_add_device_dependencies(m);
if (r < 0)
return r;
r = mount_add_mount_dependencies(m);
if (r < 0)
return r;
r = mount_add_quota_dependencies(m);
if (r < 0)
return r;
r = mount_add_default_dependencies(m);
if (r < 0)
return r;
return 0;
}
static int mount_add_extras(Mount *m) {
Unit *u = UNIT(m);
int r;
@ -573,18 +603,6 @@ static int mount_add_extras(Mount *m) {
return r;
}
r = mount_add_device_dependencies(m);
if (r < 0)
return r;
r = mount_add_mount_dependencies(m);
if (r < 0)
return r;
r = mount_add_quota_dependencies(m);
if (r < 0)
return r;
r = unit_patch_contexts(u);
if (r < 0)
return r;
@ -597,7 +615,7 @@ static int mount_add_extras(Mount *m) {
if (r < 0)
return r;
r = mount_add_default_dependencies(m);
r = mount_add_non_exec_dependencies(m);
if (r < 0)
return r;
@ -1570,7 +1588,7 @@ static int mount_setup_existing_unit(
unit_remove_dependencies(u, UNIT_DEPENDENCY_MOUNTINFO_IMPLICIT);
r = mount_add_extras(MOUNT(u));
r = mount_add_non_exec_dependencies(MOUNT(u));
if (r < 0)
return r;
}

View File

@ -145,14 +145,14 @@ static int help(void) {
if (r < 0)
return log_oom();
printf("%s%s [OPTIONS...]\n\n"
"List or retrieve coredumps from the journal.%s\n"
printf("%s [OPTIONS...] COMMAND ...\n\n"
"%sList or retrieve coredumps from the journal.%s\n"
"\nCommands:\n"
" list [MATCHES...] List available coredumps (default)\n"
" info [MATCHES...] Show detailed information about one or more coredumps\n"
" dump [MATCHES...] Print first matching coredump to stdout\n"
" debug [MATCHES...] Start a debugger for the first matching coredump\n"
"\nFlags:\n"
"\nOptions:\n"
" -h --help Show this help\n"
" --version Print version string\n"
" --no-pager Do not pipe output into a pager\n"
@ -167,8 +167,8 @@ static int help(void) {
" -D --directory=DIR Use journal files from directory\n\n"
" -q --quiet Do not show info messages and privilege warning\n"
"\nSee the %s for details.\n"
, ansi_highlight()
, program_invocation_short_name
, ansi_highlight()
, ansi_normal()
, link
);

View File

@ -310,8 +310,8 @@ static int help(void) {
if (r < 0)
return log_oom();
printf("%s%s [OPTIONS...] COMMAND ...\n\n"
"Query or change system hostname.%s\n"
printf("%s [OPTIONS...] COMMAND ...\n\n"
"%sQuery or change system hostname.%s\n"
"\nCommands:\n"
" status Show current hostname settings\n"
" set-hostname NAME Set system hostname\n"
@ -329,8 +329,8 @@ static int help(void) {
" --static Only set static hostname\n"
" --pretty Only set pretty hostname\n"
"\nSee the %s for details.\n"
, ansi_highlight()
, program_invocation_short_name
, ansi_highlight()
, ansi_normal()
, link
);

View File

@ -9,6 +9,7 @@
#include "main-func.h"
#include "pretty-print.h"
#include "selinux-util.h"
#include "terminal-util.h"
#include "util.h"
#include "verbs.h"
@ -32,18 +33,21 @@ static int help(void) {
if (r < 0)
return log_oom();
printf("%s OPTIONS COMMAND\n\n"
"Update or query the hardware database.\n\n"
printf("%s [OPTIONS...] COMMAND ...\n\n"
"%sUpdate or query the hardware database.%s\n"
"\nCommands:\n"
" update Update the hwdb database\n"
" query MODALIAS Query database and print result\n"
"\nOptions:\n"
" -h --help Show this help\n"
" --version Show package version\n"
" -s --strict When updating, return non-zero exit value on any parsing error\n"
" --usr Generate in " UDEVLIBEXECDIR " instead of /etc/udev\n"
" -r --root=PATH Alternative root path in the filesystem\n\n"
"Commands:\n"
" update Update the hwdb database\n"
" query MODALIAS Query database and print result\n"
"\nSee the %s for details.\n"
, program_invocation_short_name
, ansi_highlight()
, ansi_normal()
, link
);

View File

@ -7,14 +7,15 @@
#include "id128-print.h"
#include "main-func.h"
#include "pretty-print.h"
#include "terminal-util.h"
#include "util.h"
#include "verbs.h"
static bool arg_pretty = false;
static sd_id128_t arg_app = {};
static Id128PrettyPrintMode arg_mode = ID128_PRINT_ID128;
static sd_id128_t arg_app = SD_ID128_NULL;
static int verb_new(int argc, char **argv, void *userdata) {
return id128_print_new(arg_pretty);
return id128_print_new(arg_mode);
}
static int verb_machine_id(int argc, char **argv, void *userdata) {
@ -29,7 +30,7 @@ static int verb_machine_id(int argc, char **argv, void *userdata) {
return log_error_errno(r, "Failed to get %smachine-ID: %m",
sd_id128_is_null(arg_app) ? "" : "app-specific ");
return id128_pretty_print(id, arg_pretty);
return id128_pretty_print(id, arg_mode);
}
static int verb_boot_id(int argc, char **argv, void *userdata) {
@ -44,7 +45,7 @@ static int verb_boot_id(int argc, char **argv, void *userdata) {
return log_error_errno(r, "Failed to get %sboot-ID: %m",
sd_id128_is_null(arg_app) ? "" : "app-specific ");
return id128_pretty_print(id, arg_pretty);
return id128_pretty_print(id, arg_mode);
}
static int verb_invocation_id(int argc, char **argv, void *userdata) {
@ -59,7 +60,7 @@ static int verb_invocation_id(int argc, char **argv, void *userdata) {
if (r < 0)
return log_error_errno(r, "Failed to get invocation-ID: %m");
return id128_pretty_print(id, arg_pretty);
return id128_pretty_print(id, arg_mode);
}
static int help(void) {
@ -70,19 +71,22 @@ static int help(void) {
if (r < 0)
return log_oom();
printf("%s [OPTIONS...] {COMMAND}\n\n"
"Generate and print id128 strings.\n\n"
" -h --help Show this help\n"
" -p --pretty Generate samples of program code\n"
" -a --app-specific=ID Generate app-specific IDs\n"
printf("%s [OPTIONS...] COMMAND\n\n"
"%sGenerate and print 128bit identifiers.%s\n"
"\nCommands:\n"
" new Generate a new id128 string\n"
" machine-id Print the ID of current machine\n"
" boot-id Print the ID of current boot\n"
" invocation-id Print the ID of current invocation\n"
" help Show this help\n"
"\nOptions:\n"
" -h --help Show this help\n"
" -p --pretty Generate samples of program code\n"
" -a --app-specific=ID Generate app-specific IDs\n"
" -u --uuid Output in UUID format\n"
"\nSee the %s for details.\n"
, program_invocation_short_name
, ansi_highlight(), ansi_normal()
, link
);
@ -103,6 +107,7 @@ static int parse_argv(int argc, char *argv[]) {
{ "version", no_argument, NULL, ARG_VERSION },
{ "pretty", no_argument, NULL, 'p' },
{ "app-specific", required_argument, NULL, 'a' },
{ "uuid", no_argument, NULL, 'u' },
{},
};
@ -111,7 +116,7 @@ static int parse_argv(int argc, char *argv[]) {
assert(argc >= 0);
assert(argv);
while ((c = getopt_long(argc, argv, "hpa:", options, NULL)) >= 0)
while ((c = getopt_long(argc, argv, "hpa:u", options, NULL)) >= 0)
switch (c) {
case 'h':
@ -121,7 +126,7 @@ static int parse_argv(int argc, char *argv[]) {
return version();
case 'p':
arg_pretty = true;
arg_mode = ID128_PRINT_PRETTY;
break;
case 'a':
@ -130,6 +135,10 @@ static int parse_argv(int argc, char *argv[]) {
return log_error_errno(r, "Failed to parse \"%s\" as application-ID: %m", optarg);
break;
case 'u':
arg_mode = ID128_PRINT_UUID;
break;
case '?':
return -EINVAL;

View File

@ -16,6 +16,7 @@
#include "pretty-print.h"
#include "string-util.h"
#include "syslog-util.h"
#include "terminal-util.h"
#include "util.h"
static const char *arg_identifier = NULL;
@ -31,8 +32,8 @@ static int help(void) {
if (r < 0)
return log_oom();
printf("%s [OPTIONS...] {COMMAND} ...\n\n"
"Execute process with stdout/stderr connected to the journal.\n\n"
printf("%s [OPTIONS...] COMMAND ...\n"
"\n%sExecute process with stdout/stderr connected to the journal.%s\n\n"
" -h --help Show this help\n"
" --version Show package version\n"
" -t --identifier=STRING Set syslog identifier\n"
@ -41,6 +42,7 @@ static int help(void) {
" --level-prefix=BOOL Control whether level prefix shall be parsed\n"
"\nSee the %s for details.\n"
, program_invocation_short_name
, ansi_highlight(), ansi_normal()
, link
);

View File

@ -314,7 +314,7 @@ static int help(void) {
return log_oom();
printf("%s [OPTIONS...] [MATCHES...]\n\n"
"Query the journal.\n\n"
"%sQuery the journal.%s\n\n"
"Options:\n"
" --system Show the system journal\n"
" --user Show the user journal for the current user\n"
@ -381,6 +381,7 @@ static int help(void) {
" --setup-keys Generate a new FSS key pair\n"
"\nSee the %s for details.\n"
, program_invocation_short_name
, ansi_highlight(), ansi_normal()
, link
);
@ -2047,7 +2048,7 @@ int main(int argc, char *argv[]) {
switch (arg_action) {
case ACTION_NEW_ID128:
r = id128_print_new(true);
r = id128_print_new(ID128_PRINT_PRETTY);
goto finish;
case ACTION_SETUP_KEYS:

View File

@ -241,6 +241,7 @@ int sd_dhcp_client_set_mac(
DHCP_CLIENT_DONT_DESTROY(client);
bool need_restart = false;
int r;
assert_return(client, -EINVAL);
assert_return(addr, -EINVAL);
@ -268,8 +269,11 @@ int sd_dhcp_client_set_mac(
client->mac_addr_len = addr_len;
client->arp_type = arp_type;
if (need_restart && client->state != DHCP_STATE_STOPPED)
sd_dhcp_client_start(client);
if (need_restart && client->state != DHCP_STATE_STOPPED) {
r = sd_dhcp_client_start(client);
if (r < 0)
return log_dhcp_client_errno(client, r, "Failed to restart DHCPv4 client: %m");
}
return 0;
}
@ -305,6 +309,7 @@ int sd_dhcp_client_set_client_id(
DHCP_CLIENT_DONT_DESTROY(client);
bool need_restart = false;
int r;
assert_return(client, -EINVAL);
assert_return(data, -EINVAL);
@ -337,8 +342,11 @@ int sd_dhcp_client_set_client_id(
memcpy(&client->client_id.raw.data, data, data_len);
client->client_id_len = data_len + sizeof (client->client_id.type);
if (need_restart && client->state != DHCP_STATE_STOPPED)
sd_dhcp_client_start(client);
if (need_restart && client->state != DHCP_STATE_STOPPED) {
r = sd_dhcp_client_start(client);
if (r < 0)
return log_dhcp_client_errno(client, r, "Failed to restart DHCPv4 client: %m");
}
return 0;
}
@ -368,7 +376,7 @@ static int dhcp_client_set_iaid_duid_internal(
if (duid) {
r = dhcp_validate_duid_len(duid_type, duid_len, true);
if (r < 0)
return r;
return log_dhcp_client_errno(client, r, "Failed to validate length of DUID: %m");
}
zero(client->client_id);
@ -383,7 +391,7 @@ static int dhcp_client_set_iaid_duid_internal(
true,
&client->client_id.ns.iaid);
if (r < 0)
return r;
return log_dhcp_client_errno(client, r, "Failed to set IAID: %m");
}
}
@ -395,32 +403,32 @@ static int dhcp_client_set_iaid_duid_internal(
switch (duid_type) {
case DUID_TYPE_LLT:
if (client->mac_addr_len == 0)
return -EOPNOTSUPP;
return log_dhcp_client_errno(client, SYNTHETIC_ERRNO(EOPNOTSUPP), "Failed to set DUID-LLT, MAC address is not set.");
r = dhcp_identifier_set_duid_llt(&client->client_id.ns.duid, llt_time, client->mac_addr, client->mac_addr_len, client->arp_type, &len);
if (r < 0)
return r;
return log_dhcp_client_errno(client, r, "Failed to set DUID-LLT: %m");
break;
case DUID_TYPE_EN:
r = dhcp_identifier_set_duid_en(&client->client_id.ns.duid, &len);
if (r < 0)
return r;
return log_dhcp_client_errno(client, r, "Failed to set DUID-EN: %m");
break;
case DUID_TYPE_LL:
if (client->mac_addr_len == 0)
return -EOPNOTSUPP;
return log_dhcp_client_errno(client, SYNTHETIC_ERRNO(EOPNOTSUPP), "Failed to set DUID-LL, MAC address is not set.");
r = dhcp_identifier_set_duid_ll(&client->client_id.ns.duid, client->mac_addr, client->mac_addr_len, client->arp_type, &len);
if (r < 0)
return r;
return log_dhcp_client_errno(client, r, "Failed to set DUID-LL: %m");
break;
case DUID_TYPE_UUID:
r = dhcp_identifier_set_duid_uuid(&client->client_id.ns.duid, &len);
if (r < 0)
return r;
return log_dhcp_client_errno(client, r, "Failed to set DUID-UUID: %m");
break;
default:
return -EINVAL;
return log_dhcp_client_errno(client, SYNTHETIC_ERRNO(EINVAL), "Invalid DUID type");
}
client->client_id_len = sizeof(client->client_id.type) + len +
@ -429,7 +437,9 @@ static int dhcp_client_set_iaid_duid_internal(
if (!IN_SET(client->state, DHCP_STATE_INIT, DHCP_STATE_STOPPED)) {
log_dhcp_client(client, "Configured %sDUID, restarting.", iaid_append ? "IAID+" : "");
client_stop(client, SD_DHCP_CLIENT_EVENT_STOP);
sd_dhcp_client_start(client);
r = sd_dhcp_client_start(client);
if (r < 0)
return log_dhcp_client_errno(client, r, "Failed to restart DHCPv4 client: %m");
}
return 0;

View File

@ -232,7 +232,7 @@ static int dhcp6_client_set_duid_internal(
if (r < 0) {
r = dhcp_validate_duid_len(duid_type, duid_len, false);
if (r < 0)
return r;
return log_dhcp6_client_errno(client, r, "Failed to validate length of DUID: %m");
log_dhcp6_client(client, "Setting DUID of type %u with unexpected content", duid_type);
}
@ -243,32 +243,32 @@ static int dhcp6_client_set_duid_internal(
switch (duid_type) {
case DUID_TYPE_LLT:
if (client->mac_addr_len == 0)
return -EOPNOTSUPP;
return log_dhcp6_client_errno(client, SYNTHETIC_ERRNO(EOPNOTSUPP), "Failed to set DUID-LLT, MAC address is not set.");
r = dhcp_identifier_set_duid_llt(&client->duid, llt_time, client->mac_addr, client->mac_addr_len, client->arp_type, &client->duid_len);
if (r < 0)
return r;
return log_dhcp6_client_errno(client, r, "Failed to set DUID-LLT: %m");
break;
case DUID_TYPE_EN:
r = dhcp_identifier_set_duid_en(&client->duid, &client->duid_len);
if (r < 0)
return r;
return log_dhcp6_client_errno(client, r, "Failed to set DUID-EN: %m");
break;
case DUID_TYPE_LL:
if (client->mac_addr_len == 0)
return -EOPNOTSUPP;
return log_dhcp6_client_errno(client, SYNTHETIC_ERRNO(EOPNOTSUPP), "Failed to set DUID-LL, MAC address is not set.");
r = dhcp_identifier_set_duid_ll(&client->duid, client->mac_addr, client->mac_addr_len, client->arp_type, &client->duid_len);
if (r < 0)
return r;
return log_dhcp6_client_errno(client, r, "Failed to set DUID-LL: %m");
break;
case DUID_TYPE_UUID:
r = dhcp_identifier_set_duid_uuid(&client->duid, &client->duid_len);
if (r < 0)
return r;
return log_dhcp6_client_errno(client, r, "Failed to set DUID-UUID: %m");
break;
default:
return -EINVAL;
return log_dhcp6_client_errno(client, SYNTHETIC_ERRNO(EINVAL), "Invalid DUID type");
}
return 0;

View File

@ -383,16 +383,9 @@ static int help(void) {
if (r < 0)
return log_oom();
printf("%s%s [OPTIONS...] COMMAND ...\n\n"
"Query or change system locale and keyboard settings.%s\n\n"
" -h --help Show this help\n"
" --version Show package version\n"
" --no-pager Do not pipe output into a pager\n"
" --no-ask-password Do not prompt for password\n"
" -H --host=[USER@]HOST Operate on remote host\n"
" -M --machine=CONTAINER Operate on local container\n"
" --no-convert Don't convert keyboard mappings\n\n"
"Commands:\n"
printf("%s [OPTIONS...] COMMAND ...\n\n"
"%sQuery or change system locale and keyboard settings.%s\n"
"\nCommands:\n"
" status Show current locale settings\n"
" set-locale LOCALE... Set system locale\n"
" list-locales Show known locales\n"
@ -405,9 +398,17 @@ static int help(void) {
" list-x11-keymap-variants [LAYOUT]\n"
" Show known X11 keyboard mapping variants\n"
" list-x11-keymap-options Show known X11 keyboard mapping options\n"
"\nOptions:\n"
" -h --help Show this help\n"
" --version Show package version\n"
" --no-pager Do not pipe output into a pager\n"
" --no-ask-password Do not prompt for password\n"
" -H --host=[USER@]HOST Operate on remote host\n"
" -M --machine=CONTAINER Operate on local container\n"
" --no-convert Don't convert keyboard mappings\n"
"\nSee the %s for details.\n"
, ansi_highlight()
, program_invocation_short_name
, ansi_highlight()
, ansi_normal()
, link
);

View File

@ -20,6 +20,7 @@
#include "process-util.h"
#include "signal-util.h"
#include "strv.h"
#include "terminal-util.h"
#include "user-util.h"
#include "util.h"
@ -158,8 +159,8 @@ static int help(void) {
if (r < 0)
return log_oom();
printf("%s [OPTIONS...] {COMMAND} ...\n\n"
"Execute a process while inhibiting shutdown/sleep/idle.\n\n"
printf("%s [OPTIONS...] COMMAND ...\n"
"\n%sExecute a process while inhibiting shutdown/sleep/idle.%s\n\n"
" -h --help Show this help\n"
" --version Show package version\n"
" --no-pager Do not pipe output into a pager\n"
@ -174,6 +175,7 @@ static int help(void) {
" --list List active inhibitors\n"
"\nSee the %s for details.\n"
, program_invocation_short_name
, ansi_highlight(), ansi_normal()
, link
);

View File

@ -1279,8 +1279,8 @@ static int help(int argc, char *argv[], void *userdata) {
if (r < 0)
return log_oom();
printf("%s%s [OPTIONS...] {COMMAND} ...\n\n"
"Send control commands to or query the login manager.%s\n"
printf("%s [OPTIONS...] COMMAND ...\n\n"
"%sSend control commands to or query the login manager.%s\n"
"\nSession Commands:\n"
" list-sessions List sessions\n"
" session-status [ID...] Show session status\n"
@ -1291,23 +1291,23 @@ static int help(int argc, char *argv[], void *userdata) {
" lock-sessions Screen lock all current sessions\n"
" unlock-sessions Screen unlock all current sessions\n"
" terminate-session ID... Terminate one or more sessions\n"
" kill-session ID... Send signal to processes of a session\n\n"
"User Commands:\n"
" kill-session ID... Send signal to processes of a session\n"
"\nUser Commands:\n"
" list-users List users\n"
" user-status [USER...] Show user status\n"
" show-user [USER...] Show properties of users or the manager\n"
" enable-linger [USER...] Enable linger state of one or more users\n"
" disable-linger [USER...] Disable linger state of one or more users\n"
" terminate-user USER... Terminate all sessions of one or more users\n"
" kill-user USER... Send signal to processes of a user\n\n"
"Seat Commands:\n"
" kill-user USER... Send signal to processes of a user\n"
"\nSeat Commands:\n"
" list-seats List seats\n"
" seat-status [NAME...] Show seat status\n"
" show-seat [NAME...] Show properties of seats or the manager\n"
" attach NAME DEVICE... Attach one or more devices to a seat\n"
" flush-devices Flush all device associations\n"
" terminate-seat NAME... Terminate all sessions on one or more seats\n"
"\nOptions\n"
"\nOptions:\n"
" -h --help Show this help\n"
" --version Show package version\n"
" --no-pager Do not pipe output into a pager\n"
@ -1328,8 +1328,8 @@ static int help(int argc, char *argv[], void *userdata) {
" json, json-pretty, json-sse, json-seq, cat,\n"
" with-unit)\n"
"\nSee the %s for details.\n"
, ansi_highlight()
, program_invocation_short_name
, ansi_highlight()
, ansi_normal()
, link
);

View File

@ -2690,9 +2690,9 @@ static int help(int argc, char *argv[], void *userdata) {
if (r < 0)
return log_oom();
printf("%s%s [OPTIONS...] {COMMAND} ...\n\n"
"Send control commands to or query the virtual machine and container\n"
"registration manager.%s\n"
printf("%s [OPTIONS...] COMMAND ...\n\n"
"%sSend control commands to or query the virtual machine and container%s\n"
"%sregistration manager.%s\n"
"\nMachine Commands:\n"
" list List running VMs and containers\n"
" status NAME... Show VM/container details\n"
@ -2732,7 +2732,7 @@ static int help(int argc, char *argv[], void *userdata) {
" export-raw NAME [FILE] Export a RAW container or VM image locally\n"
" list-transfers Show list of downloads in progress\n"
" cancel-transfer Cancel a download\n"
"\nOptions\n"
"\nOptions:\n"
" -h --help Show this help\n"
" --version Show package version\n"
" --no-pager Do not pipe output into a pager\n"
@ -2762,8 +2762,10 @@ static int help(int argc, char *argv[], void *userdata) {
" checksum, signature)\n"
" --force Download image even if already exists\n"
"\nSee the %s for details.\n"
, ansi_highlight()
, program_invocation_short_name
, ansi_highlight()
, ansi_normal()
, ansi_highlight()
, ansi_normal()
, link
);

View File

@ -1887,8 +1887,8 @@ static int help(void) {
if (r < 0)
return log_oom();
printf("%s%s [OPTIONS...]\n\n"
"Query and control the networking subsystem.%s\n"
printf("%s [OPTIONS...] COMMAND\n\n"
"%sQuery and control the networking subsystem.%s\n"
"\nCommands:\n"
" list [PATTERN...] List links\n"
" status [PATTERN...] Show link status\n"
@ -1898,7 +1898,7 @@ static int help(void) {
" renew DEVICES... Renew dynamic configurations\n"
" reconfigure DEVICES... Reconfigure interfaces\n"
" reload Reload .network and .netdev files\n"
"\nOptions\n"
"\nOptions:\n"
" -h --help Show this help\n"
" --version Show package version\n"
" --no-pager Do not pipe output into a pager\n"
@ -1906,8 +1906,8 @@ static int help(void) {
" -a --all Show status for all links\n"
" -s --stats Show detailed link statics\n"
"\nSee the %s for details.\n"
, ansi_highlight()
, program_invocation_short_name
, ansi_highlight()
, ansi_normal()
, link
);

View File

@ -200,14 +200,14 @@ int dhcp4_server_configure(Link *link) {
address = link_find_dhcp_server_address(link);
if (!address)
return log_link_warning_errno(link, SYNTHETIC_ERRNO(EBUSY),
return log_link_error_errno(link, SYNTHETIC_ERRNO(EBUSY),
"Failed to find suitable address for DHCPv4 server instance.");
/* use the server address' subnet as the pool */
r = sd_dhcp_server_configure_pool(link->dhcp_server, &address->in_addr.in, address->prefixlen,
link->network->dhcp_server_pool_offset, link->network->dhcp_server_pool_size);
if (r < 0)
return r;
return log_link_error_errno(link, r, "Failed to configure address pool for DHCPv4 server instance: %m");
/* TODO:
r = sd_dhcp_server_set_router(link->dhcp_server, &main_address->in_addr.in);
@ -219,14 +219,14 @@ int dhcp4_server_configure(Link *link) {
r = sd_dhcp_server_set_max_lease_time(link->dhcp_server,
DIV_ROUND_UP(link->network->dhcp_server_max_lease_time_usec, USEC_PER_SEC));
if (r < 0)
return r;
return log_link_error_errno(link, r, "Failed to set maximum lease time for DHCPv4 server instance: %m");
}
if (link->network->dhcp_server_default_lease_time_usec > 0) {
r = sd_dhcp_server_set_default_lease_time(link->dhcp_server,
DIV_ROUND_UP(link->network->dhcp_server_default_lease_time_usec, USEC_PER_SEC));
if (r < 0)
return r;
return log_link_error_errno(link, r, "Failed to set default lease time for DHCPv4 server instance: %m");
}
if (link->network->dhcp_server_emit_dns) {
@ -302,7 +302,7 @@ int dhcp4_server_configure(Link *link) {
r = sd_dhcp_server_set_timezone(link->dhcp_server, tz);
if (r < 0)
return r;
return log_link_error_errno(link, r, "Failed to set timezone for DHCP server: %m");
}
ORDERED_HASHMAP_FOREACH(p, link->network->dhcp_server_raw_options, i) {
@ -310,7 +310,7 @@ int dhcp4_server_configure(Link *link) {
if (r == -EEXIST)
continue;
if (r < 0)
return r;
return log_link_error_errno(link, r, "Failed to set DHCPv4 option: %m");
}
if (!sd_dhcp_server_is_running(link->dhcp_server)) {

View File

@ -781,9 +781,9 @@ static int help(int argc, char *argv[], void *userdata) {
if (r < 0)
return log_oom();
printf("%s%s [OPTIONS...] {COMMAND} ...\n\n"
"Attach or detach portable services from the local system.%s\n"
"Commands:\n"
printf("%s [OPTIONS...] COMMAND ...\n\n"
"%sAttach or detach portable services from the local system.%s\n"
"\nCommands:\n"
" list List available portable service images\n"
" attach NAME|PATH [PREFIX...]\n"
" Attach the specified portable service image\n"
@ -794,7 +794,7 @@ static int help(int argc, char *argv[], void *userdata) {
" read-only NAME|PATH [BOOL] Mark or unmark portable service image read-only\n"
" remove NAME|PATH... Remove a portable service image\n"
" set-limit [NAME|PATH] Set image or pool size limit (disk quota)\n"
"\nOptions\n"
"\nOptions:\n"
" -h --help Show this help\n"
" --version Show package version\n"
" --no-pager Do not pipe output into a pager\n"
@ -810,8 +810,8 @@ static int help(int argc, char *argv[], void *userdata) {
" --cat When inspecting include unit and os-release file\n"
" contents\n"
"\nSee the %s for details.\n"
, ansi_highlight()
, program_invocation_short_name
, ansi_highlight()
, ansi_normal()
, link
);

View File

@ -2473,7 +2473,7 @@ static int compat_help(void) {
"%1$s [OPTIONS...] --statistics\n"
"%1$s [OPTIONS...] --reset-statistics\n"
"\n"
"Resolve domain names, IPv4 and IPv6 addresses, DNS records, and services.\n\n"
"%2$sResolve domain names, IPv4 and IPv6 addresses, DNS records, and services.%3$s\n\n"
" -h --help Show this help\n"
" --version Show package version\n"
" --no-pager Do not pipe output into a pager\n"
@ -2507,8 +2507,10 @@ static int compat_help(void) {
" --set-dnssec=MODE Set per-interface DNSSEC mode\n"
" --set-nta=DOMAIN Set per-interface DNSSEC NTA\n"
" --revert Revert per-interface configuration\n"
"\nSee the %2$s for details.\n"
"\nSee the %4$s for details.\n"
, program_invocation_short_name
, ansi_highlight()
, ansi_normal()
, link
);
@ -2523,10 +2525,10 @@ static int native_help(void) {
if (r < 0)
return log_oom();
printf("%s%s [OPTIONS...] {COMMAND} ...\n"
printf("%s [OPTIONS...] COMMAND ...\n"
"\n"
"Send control commands to the network name resolution manager, or\n"
"resolve domain names, IPv4 and IPv6 addresses, DNS records, and services.%s\n"
"%sSend control commands to the network name resolution manager, or%s\n"
"%sresolve domain names, IPv4 and IPv6 addresses, DNS records, and services.%s\n"
"\nCommands:\n"
" query HOSTNAME|ADDRESS... Resolve domain names, IPv4 and IPv6 addresses\n"
" service [[NAME] TYPE] DOMAIN Resolve service (SRV)\n"
@ -2546,7 +2548,7 @@ static int native_help(void) {
" dnssec [LINK [MODE]] Get/set per-interface DNSSEC mode\n"
" nta [LINK [DOMAIN...]] Get/set per-interface DNSSEC NTA\n"
" revert LINK Revert per-interface configuration\n"
"\nOptions\n"
"\nOptions:\n"
" -h --help Show this help\n"
" --version Show package version\n"
" --no-pager Do not pipe output into a pager\n"
@ -2564,8 +2566,10 @@ static int native_help(void) {
" --raw[=payload|packet] Dump the answer as binary data\n"
" --legend=BOOL Print headers and additional info (default: yes)\n"
"\nSee the %s for details.\n"
, ansi_highlight()
, program_invocation_short_name
, ansi_highlight()
, ansi_normal()
, ansi_highlight()
, ansi_normal()
, link
);

View File

@ -84,8 +84,8 @@ static int help(void) {
if (r < 0)
return log_oom();
printf("%s [OPTIONS...] {COMMAND} [ARGS...]\n\n"
"Run the specified command in a transient scope or service.\n\n"
printf("%s [OPTIONS...] COMMAND [ARGUMENTS...]\n"
"\n%sRun the specified command in a transient scope or service.%s\n\n"
" -h --help Show this help\n"
" --version Show package version\n"
" --no-ask-password Do not prompt for password\n"
@ -130,6 +130,7 @@ static int help(void) {
" --timer-property=NAME=VALUE Set timer unit property\n"
"\nSee the %s for details.\n"
, program_invocation_short_name
, ansi_highlight(), ansi_normal()
, link
);

View File

@ -10,15 +10,22 @@
#include "pretty-print.h"
#include "terminal-util.h"
int id128_pretty_print(sd_id128_t id, bool pretty) {
unsigned i;
int id128_pretty_print(sd_id128_t id, Id128PrettyPrintMode mode) {
_cleanup_free_ char *man_link = NULL, *mod_link = NULL;
const char *on, *off;
unsigned i;
if (!pretty) {
assert(mode >= 0);
assert(mode < _ID128_PRETTY_PRINT_MODE_MAX);
if (mode == ID128_PRINT_ID128) {
printf(SD_ID128_FORMAT_STR "\n",
SD_ID128_FORMAT_VAL(id));
return 0;
} else if (mode == ID128_PRINT_UUID) {
printf(SD_ID128_UUID_FORMAT_STR "\n",
SD_ID128_FORMAT_VAL(id));
return 0;
}
on = ansi_highlight();
@ -35,7 +42,7 @@ int id128_pretty_print(sd_id128_t id, bool pretty) {
"As UUID:\n"
"%s" SD_ID128_UUID_FORMAT_STR "%s\n\n"
"As %s macro:\n"
"%s#define MESSAGE_XYZ SD_ID128_MAKE(",
"%s#define XYZ SD_ID128_MAKE(",
on, SD_ID128_FORMAT_VAL(id), off,
on, SD_ID128_FORMAT_VAL(id), off,
man_link,
@ -46,14 +53,14 @@ int id128_pretty_print(sd_id128_t id, bool pretty) {
printf("As Python constant:\n"
">>> import %s\n"
">>> %sMESSAGE_XYZ = uuid.UUID('" SD_ID128_FORMAT_STR "')%s\n",
">>> %sXYZ = uuid.UUID('" SD_ID128_FORMAT_STR "')%s\n",
mod_link,
on, SD_ID128_FORMAT_VAL(id), off);
return 0;
}
int id128_print_new(bool pretty) {
int id128_print_new(Id128PrettyPrintMode mode) {
sd_id128_t id;
int r;
@ -61,5 +68,5 @@ int id128_print_new(bool pretty) {
if (r < 0)
return log_error_errno(r, "Failed to generate ID: %m");
return id128_pretty_print(id, pretty);
return id128_pretty_print(id, mode);
}

View File

@ -6,5 +6,13 @@
#include "sd-id128.h"
int id128_pretty_print(sd_id128_t id, bool pretty);
int id128_print_new(bool pretty);
typedef enum Id128PrettyPrintMode {
ID128_PRINT_ID128,
ID128_PRINT_UUID,
ID128_PRINT_PRETTY,
_ID128_PRETTY_PRINT_MODE_MAX,
_ID128_PRETTY_PRINT_MODE_INVALID = -1
} Id128PrettyPrintMode;
int id128_pretty_print(sd_id128_t id, Id128PrettyPrintMode mode);
int id128_print_new(Id128PrettyPrintMode mode);

View File

@ -7694,9 +7694,9 @@ static int systemctl_help(void) {
if (r < 0)
return log_oom();
printf("%5$s%1$s [OPTIONS...] {COMMAND} ...\n\n"
"Query or send control commands to the systemd manager.%6$s\n\n"
"%3$sUnit Commands:%4$s\n"
printf("%1$s [OPTIONS...] COMMAND ...\n\n"
"%5$sQuery or send control commands to the system manager.%6$s\n"
"\n%3$sUnit Commands:%4$s\n"
" list-units [PATTERN...] List units currently in memory\n"
" list-sockets [PATTERN...] List socket units currently in memory,\n"
" ordered by address\n"
@ -7727,8 +7727,8 @@ static int systemctl_help(void) {
" units\n"
" list-dependencies [UNIT] Recursively show units which are required\n"
" or wanted by this unit or by which this\n"
" unit is required or wanted\n\n"
"%3$sUnit File Commands:%4$s\n"
" unit is required or wanted\n"
"\n%3$sUnit File Commands:%4$s\n"
" list-unit-files [PATTERN...] List installed unit files\n"
" enable [UNIT...|PATH...] Enable one or more unit files\n"
" disable UNIT... Disable one or more unit files\n"
@ -7750,21 +7750,21 @@ static int systemctl_help(void) {
" on specified one or more units\n"
" edit UNIT... Edit one or more unit files\n"
" get-default Get the name of the default target\n"
" set-default TARGET Set the default target\n\n"
"%3$sMachine Commands:%4$s\n"
" set-default TARGET Set the default target\n"
"\n%3$sMachine Commands:%4$s\n"
" list-machines [PATTERN...] List local containers and host\n\n"
"%3$sJob Commands:%4$s\n"
"\n%3$sJob Commands:%4$s\n"
" list-jobs [PATTERN...] List jobs\n"
" cancel [JOB...] Cancel all, one, or more jobs\n\n"
"%3$sEnvironment Commands:%4$s\n"
" cancel [JOB...] Cancel all, one, or more jobs\n"
"\n%3$sEnvironment Commands:%4$s\n"
" show-environment Dump environment\n"
" set-environment VARIABLE=VALUE... Set one or more environment variables\n"
" unset-environment VARIABLE... Unset one or more environment variables\n"
" import-environment [VARIABLE...] Import all or some environment variables\n\n"
"%3$sManager Lifecycle Commands:%4$s\n"
"\n%3$sManager Lifecycle Commands:%4$s\n"
" daemon-reload Reload systemd manager configuration\n"
" daemon-reexec Reexecute systemd manager\n\n"
"%3$sSystem Commands:%4$s\n"
" daemon-reexec Reexecute systemd manager\n"
"\n%3$sSystem Commands:%4$s\n"
" is-system-running Check whether system is fully running\n"
" default Enter system default mode\n"
" rescue Enter system rescue mode\n"
@ -7780,7 +7780,7 @@ static int systemctl_help(void) {
" hybrid-sleep Hibernate and suspend the system\n"
" suspend-then-hibernate Suspend the system, wake after a period of\n"
" time and put it into hibernate\n"
"\nOptions\n"
"\n%3$sOptions:%4$s\n"
" -h --help Show this help\n"
" --version Show package version\n"
" --system Connect to system manager\n"
@ -7859,8 +7859,9 @@ static int halt_help(void) {
if (r < 0)
return log_oom();
printf("%s [OPTIONS...]%s\n\n"
"%s the system.\n\n"
printf("%s [OPTIONS...]%s\n"
"\n%s%s the system.%s\n"
"\nOptions:\n"
" --help Show this help\n"
" --halt Halt the machine\n"
" -p --poweroff Switch off the machine\n"
@ -7871,10 +7872,12 @@ static int halt_help(void) {
" --no-wall Don't send wall message before halt/power-off/reboot\n"
"\nSee the %s for details.\n"
, program_invocation_short_name
, arg_action == ACTION_REBOOT ? " [ARG]" : "",
arg_action == ACTION_REBOOT ? "Reboot" :
, arg_action == ACTION_REBOOT ? " [ARG]" : ""
, ansi_highlight()
, arg_action == ACTION_REBOOT ? "Reboot" :
arg_action == ACTION_POWEROFF ? "Power off" :
"Halt"
, ansi_normal()
, link
);
@ -7889,8 +7892,9 @@ static int shutdown_help(void) {
if (r < 0)
return log_oom();
printf("%s [OPTIONS...] [TIME] [WALL...]\n\n"
"Shut down the system.\n\n"
printf("%s [OPTIONS...] [TIME] [WALL...]\n"
"\n%sShut down the system.%s\n"
"\nOptions:\n"
" --help Show this help\n"
" -H --halt Halt the machine\n"
" -P --poweroff Power-off the machine\n"
@ -7901,6 +7905,7 @@ static int shutdown_help(void) {
" -c Cancel a pending shutdown\n"
"\nSee the %s for details.\n"
, program_invocation_short_name
, ansi_highlight(), ansi_normal()
, link
);
@ -7915,19 +7920,21 @@ static int telinit_help(void) {
if (r < 0)
return log_oom();
printf("%s [OPTIONS...] {COMMAND}\n\n"
"Send control commands to the init daemon.\n\n"
" --help Show this help\n"
" --no-wall Don't send wall message before halt/power-off/reboot\n\n"
"Commands:\n"
printf("%s [OPTIONS...] COMMAND\n\n"
"%sSend control commands to the init daemon.%s\n"
"\nCommands:\n"
" 0 Power-off the machine\n"
" 6 Reboot the machine\n"
" 2, 3, 4, 5 Start runlevelX.target unit\n"
" 1, s, S Enter rescue mode\n"
" q, Q Reload init daemon configuration\n"
" u, U Reexecute init daemon\n"
"\nOptions:\n"
" --help Show this help\n"
" --no-wall Don't send wall message before halt/power-off/reboot\n"
"\nSee the %s for details.\n"
, program_invocation_short_name
, ansi_highlight(), ansi_normal()
, link
);
@ -7942,11 +7949,13 @@ static int runlevel_help(void) {
if (r < 0)
return log_oom();
printf("%s [OPTIONS...]\n\n"
"Prints the previous and current runlevel of the init system.\n\n"
printf("%s [OPTIONS...]\n"
"\n%sPrints the previous and current runlevel of the init system.%s\n"
"\nOptions:\n"
" --help Show this help\n"
"\nSee the %s for details.\n"
, program_invocation_short_name
, ansi_highlight(), ansi_normal()
, link
);
@ -8525,7 +8534,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) {
/* Output an error mimicking getopt, and print a hint afterwards */
log_error("%s: invalid option -- '.'", program_invocation_name);
log_notice("Hint: to specify units starting with a dash, use \"--\":\n"
" %s [OPTIONS...] {COMMAND} -- -.%s ...",
" %s [OPTIONS...] COMMAND -- -.%s ...",
program_invocation_name, optarg ?: "mount");
_fallthrough_;

View File

@ -810,8 +810,8 @@ static int help(void) {
if (r < 0)
return log_oom();
printf("%s%s [OPTIONS...] COMMAND ...\n\n"
"Query or change system time and date settings.%s\n"
printf("%s [OPTIONS...] COMMAND ...\n"
"\n%sQuery or change system time and date settings.%s\n"
"\nCommands:\n"
" status Show current time settings\n"
" show Show properties of systemd-timedated\n"
@ -820,11 +820,10 @@ static int help(void) {
" list-timezones Show known time zones\n"
" set-local-rtc BOOL Control whether RTC is in local time\n"
" set-ntp BOOL Enable or disable network time synchronization\n"
"\n"
"systemd-timesyncd Commands:\n"
"\nsystemd-timesyncd Commands:\n"
" timesync-status Show status of systemd-timesyncd\n"
" show-timesync Show properties of systemd-timesyncd\n"
"\nOptions\n"
"\nOptions:\n"
" -h --help Show this help message\n"
" --version Show package version\n"
" --no-pager Do not pipe output into a pager\n"
@ -837,8 +836,8 @@ static int help(void) {
" -a --all Show all properties, including empty ones\n"
" --value When showing properties, only print the value\n"
"\nSee the %s for details.\n"
, ansi_highlight()
, program_invocation_short_name
, ansi_highlight()
, ansi_normal()
, link
);

View File

@ -751,10 +751,7 @@ static int parse_token(UdevRules *rules, const char *key, char *attr, UdevRuleOp
if (op == OP_REMOVE)
return log_token_invalid_op(rules, key);
if (!is_match) {
if (op == OP_ASSIGN)
log_token_debug(rules, "Operator '=' is specified to %s key, assuming '=='.", key);
else
log_token_warning(rules, "%s key takes '==' or '!=' operator, assuming '==', but please fix it.", key);
log_token_debug(rules, "%s key takes '==' or '!=' operator, assuming '=='.", key);
op = OP_MATCH;
}
@ -766,10 +763,7 @@ static int parse_token(UdevRules *rules, const char *key, char *attr, UdevRuleOp
if (op == OP_REMOVE)
return log_token_invalid_op(rules, key);
if (!is_match) {
if (op == OP_ASSIGN)
log_token_debug(rules, "Operator '=' is specified to %s key, assuming '=='.", key);
else
log_token_warning(rules, "%s key takes '==' or '!=' operator, assuming '==', but please fix it.", key);
log_token_debug(rules, "%s key takes '==' or '!=' operator, assuming '=='.", key);
op = OP_MATCH;
}

View File

@ -45,10 +45,13 @@ static int exec_list(sd_device_enumerator *e, const char *action, Set *settle_se
r = write_string_file(filename, action, WRITE_STRING_FILE_DISABLE_BUFFER);
if (r < 0) {
bool ignore = IN_SET(r, -ENOENT, -EACCES, -ENODEV);
bool ignore = IN_SET(r, -ENOENT, -EACCES, -ENODEV, -EROFS);
log_full_errno(ignore ? LOG_DEBUG : LOG_ERR, r,
"Failed to write '%s' to '%s': %m", action, filename);
"Failed to write '%s' to '%s'%s: %m",
action, filename, ignore ? ", ignoring" : "");
if (r == -EROFS)
return 0; /* Read only filesystem. Return earlier. */
if (ret == 0 && !ignore)
ret = r;
continue;