shared/verbs: turn verb argument specification into nulstr

Like the command-level CommandDescription.argspec, a verb's argspec is now
a nulstr, so that a verb may declare multiple alternative usage lines. The
verbs help table renders one synopsis line per nulstr entry in the
synopsis cell.

All verb argument specifications must gain an explicit NUL suffix. This
is a lot of churn, but I think this needs to be done. For now, there'll
be only one user of the new functionality (i.e. a verb with more than
one argspec), but I think we'll eventually want to use this in other
places too.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2026-08-28 09:29:04 +02:00
parent 057fc4251a
commit efd63ddfbf
42 changed files with 365 additions and 351 deletions
+27 -27
View File
@@ -213,19 +213,19 @@ VERB_SCOPE(, verb_time, "time", NULL, VERB_ANY, 1, VERB_DEFAULT,
"Print time required to boot the machine");
VERB_SCOPE(, verb_blame, "blame", NULL, VERB_ANY, 1, 0,
"Print list of running units ordered by time to init");
VERB_SCOPE(, verb_critical_chain, "critical-chain", "[UNIT...]", VERB_ANY, VERB_ANY, 0,
VERB_SCOPE(, verb_critical_chain, "critical-chain", "[UNIT...]\0", VERB_ANY, VERB_ANY, 0,
"Print a tree of the time critical chain of units");
VERB_GROUP("Dependency Analysis");
VERB_SCOPE(, verb_plot, "plot", NULL, VERB_ANY, 1, 0,
"Output SVG graphic showing service initialization");
VERB_SCOPE(, verb_dot, "dot", "[UNIT...]", VERB_ANY, VERB_ANY, 0,
VERB_SCOPE(, verb_dot, "dot", "[UNIT...]\0", VERB_ANY, VERB_ANY, 0,
"Output dependency graph in dot(1) format");
VERB_SCOPE(, verb_dump, "dump", "[PATTERN...]", VERB_ANY, VERB_ANY, 0,
VERB_SCOPE(, verb_dump, "dump", "[PATTERN...]\0", VERB_ANY, VERB_ANY, 0,
"Output state serialization of service manager");
VERB_GROUP("Configuration Files and Search Paths");
VERB_SCOPE(, verb_cat_config, "cat-config", "NAME|PATH...", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_cat_config, "cat-config", "NAME|PATH...\0", 2, VERB_ANY, 0,
"Show configuration file and drop-ins");
VERB_SCOPE(, verb_unit_files, "unit-files", NULL, VERB_ANY, VERB_ANY, 0,
"List files and symlinks for units");
@@ -233,57 +233,57 @@ VERB_SCOPE(, verb_unit_paths, "unit-paths", NULL, 1, 1, 0,
"List load directories for units");
VERB_GROUP("Enumerate OS Concepts");
VERB_SCOPE(, verb_exit_status, "exit-status", "[STATUS...]", VERB_ANY, VERB_ANY, 0,
VERB_SCOPE(, verb_exit_status, "exit-status", "[STATUS...]\0", VERB_ANY, VERB_ANY, 0,
"List exit status definitions");
VERB_SCOPE(, verb_capabilities, "capability", "[CAP...]", VERB_ANY, VERB_ANY, 0,
VERB_SCOPE(, verb_capabilities, "capability", "[CAP...]\0", VERB_ANY, VERB_ANY, 0,
"List capability definitions");
VERB_SCOPE(, verb_syscall_filters, "syscall-filter", "[NAME...]", VERB_ANY, VERB_ANY, 0,
VERB_SCOPE(, verb_syscall_filters, "syscall-filter", "[NAME...]\0", VERB_ANY, VERB_ANY, 0,
"List syscalls in seccomp filters");
VERB_SCOPE(, verb_filesystems, "filesystems", "[NAME...]", VERB_ANY, VERB_ANY, 0,
VERB_SCOPE(, verb_filesystems, "filesystems", "[NAME...]\0", VERB_ANY, VERB_ANY, 0,
"List known filesystems");
VERB_SCOPE(, verb_architectures, "architectures", "[NAME...]", VERB_ANY, VERB_ANY, 0,
VERB_SCOPE(, verb_architectures, "architectures", "[NAME...]\0", VERB_ANY, VERB_ANY, 0,
"List known architectures");
VERB_SCOPE(, verb_smbios11, "smbios11", NULL, VERB_ANY, 1, 0,
"List strings passed via SMBIOS Type #11");
VERB_SCOPE(, verb_chid, "chid", NULL, VERB_ANY, VERB_ANY, 0,
"List local CHIDs");
VERB(verb_transient_settings, "transient-settings", "TYPE...", 2, VERB_ANY, 0,
VERB(verb_transient_settings, "transient-settings", "TYPE...\0", 2, VERB_ANY, 0,
"List transient settings for unit TYPE");
VERB_GROUP("Expression Evaluation");
VERB_SCOPE(, verb_condition, "condition", "CONDITION...", VERB_ANY, VERB_ANY, 0,
VERB_SCOPE(, verb_condition, "condition", "CONDITION...\0", VERB_ANY, VERB_ANY, 0,
"Evaluate conditions and asserts");
VERB_SCOPE(, verb_compare_versions, "compare-versions", "V1 [OP] V2", 3, 4, 0,
VERB_SCOPE(, verb_compare_versions, "compare-versions", "V1 [OP] V2\0", 3, 4, 0,
"Compare two version strings");
VERB_SCOPE(, verb_image_policy, "image-policy", "POLICY...", 2, 2, 0,
VERB_SCOPE(, verb_image_policy, "image-policy", "POLICY...\0", 2, 2, 0,
"Analyze image policy string");
VERB_GROUP("Clock & Time");
VERB_SCOPE(, verb_calendar, "calendar", "SPEC...", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_calendar, "calendar", "SPEC...\0", 2, VERB_ANY, 0,
"Validate repetitive calendar time events");
VERB_SCOPE(, verb_timestamp, "timestamp", "TIMESTAMP...", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_timestamp, "timestamp", "TIMESTAMP...\0", 2, VERB_ANY, 0,
"Validate a timestamp");
VERB_SCOPE(, verb_timespan, "timespan", "SPAN...", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_timespan, "timespan", "SPAN...\0", 2, VERB_ANY, 0,
"Validate a time span");
VERB_GROUP("Unit & Service Analysis");
VERB_SCOPE(, verb_verify, "verify", "FILE...", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_verify, "verify", "FILE...\0", 2, VERB_ANY, 0,
"Check unit files for correctness");
VERB_SCOPE(, verb_security, "security", "[UNIT...]", VERB_ANY, VERB_ANY, 0,
VERB_SCOPE(, verb_security, "security", "[UNIT...]\0", VERB_ANY, VERB_ANY, 0,
"Analyze security of unit");
VERB_SCOPE(, verb_fdstore, "fdstore", "SERVICE...", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_fdstore, "fdstore", "SERVICE...\0", 2, VERB_ANY, 0,
"Show file descriptor store contents of service");
VERB_SCOPE(, verb_malloc, "malloc", "[D-BUS SERVICE...]", VERB_ANY, VERB_ANY, 0,
VERB_SCOPE(, verb_malloc, "malloc", "[D-BUS SERVICE...]\0", VERB_ANY, VERB_ANY, 0,
"Dump malloc stats of a D-Bus service");
VERB_SCOPE(, verb_unit_gdb, "unit-gdb", "SERVICE", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_unit_gdb, "unit-gdb", "SERVICE\0", 2, VERB_ANY, 0,
"Attach a debugger to the given running service");
VERB_SCOPE(, verb_unit_shell, "unit-shell", "SERVICE [COMMAND ...]", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_unit_shell, "unit-shell", "SERVICE [COMMAND ...]\0", 2, VERB_ANY, 0,
"Run command on the namespace of the service");
VERB_GROUP("Executable Analysis");
VERB_SCOPE(, verb_elf_inspection, "inspect-elf", "FILE...", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_elf_inspection, "inspect-elf", "FILE...\0", 2, VERB_ANY, 0,
"Parse and print ELF package metadata");
VERB_SCOPE(, verb_dlopen_metadata, "dlopen-metadata", "FILE", 2, 2, 0,
VERB_SCOPE(, verb_dlopen_metadata, "dlopen-metadata", "FILE\0", 2, 2, 0,
"Parse and print ELF dlopen metadata");
VERB_GROUP("TPM Operations");
@@ -291,11 +291,11 @@ VERB_SCOPE(, verb_has_tpm2, "has-tpm2", NULL, VERB_ANY, 1, 0,
"Report whether TPM2 support is available");
VERB_SCOPE(, verb_identify_tpm2, "identify-tpm2", NULL, VERB_ANY, 1, 0,
"Show TPM2 vendor information");
VERB_SCOPE(, verb_pcrs, "pcrs", "[PCR...]", VERB_ANY, VERB_ANY, 0,
VERB_SCOPE(, verb_pcrs, "pcrs", "[PCR...]\0", VERB_ANY, VERB_ANY, 0,
"Show TPM2 PCRs and their names");
VERB_SCOPE(, verb_nvpcrs, "nvpcrs", "[NVPCR...]", VERB_ANY, VERB_ANY, 0,
VERB_SCOPE(, verb_nvpcrs, "nvpcrs", "[NVPCR...]\0", VERB_ANY, VERB_ANY, 0,
"Show additional TPM2 PCRs stored in NV indexes");
VERB_SCOPE(, verb_srk, "srk", "[>FILE]", VERB_ANY, 1, 0,
VERB_SCOPE(, verb_srk, "srk", "[>FILE]\0", VERB_ANY, 1, 0,
"Write TPM2 SRK (to FILE)");
/* The following are deprecated and not shown in --help. */
+2 -2
View File
@@ -530,7 +530,7 @@ static int device_new_from_arg(const char *s, sd_device **ret) {
return 1; /* Found. */
}
VERB(verb_load, "load", "[backlight|leds]:DEVICE", 2, 2, VERB_ONLINE_ONLY,
VERB(verb_load, "load", "[backlight|leds]:DEVICE\0", 2, 2, VERB_ONLINE_ONLY,
"Set brightness to be the previously saved value");
static int verb_load(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_device_unrefp) sd_device *device = NULL;
@@ -582,7 +582,7 @@ static int verb_load(int argc, char *argv[], uintptr_t _data, void *userdata) {
return 0;
}
VERB(verb_save, "save", "[backlight|leds]:DEVICE", 2, 2, VERB_ONLINE_ONLY,
VERB(verb_save, "save", "[backlight|leds]:DEVICE\0", 2, 2, VERB_ONLINE_ONLY,
"Save current brightness");
static int verb_save(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_device_unrefp) sd_device *device = NULL;
+11 -11
View File
@@ -302,7 +302,7 @@ VERB_GROUP("Generic EFI Firmware/Boot Loader Commands");
VERB_SCOPE(, verb_status, "status", NULL, VERB_ANY, 1, VERB_DEFAULT,
"Show status of installed boot loader and EFI variables");
VERB_SCOPE(, verb_reboot_to_firmware, "reboot-to-firmware", "[BOOL]", VERB_ANY, 2, 0,
VERB_SCOPE(, verb_reboot_to_firmware, "reboot-to-firmware", "[BOOL]\0", VERB_ANY, 2, 0,
"Query or set reboot-to-firmware EFI flag");
VERB_GROUP("Boot Loader Specification Commands");
@@ -310,10 +310,10 @@ VERB_GROUP("Boot Loader Specification Commands");
VERB_SCOPE_NOARG(, verb_list, "list",
"List boot loader entries");
VERB_SCOPE(, verb_unlink, "unlink", "ID", VERB_ANY, 2, 0,
VERB_SCOPE(, verb_unlink, "unlink", "ID\0", VERB_ANY, 2, 0,
"Remove boot loader entry");
VERB_SCOPE(, verb_link, "link", "KERNEL", 2, 2, 0,
VERB_SCOPE(, verb_link, "link", "KERNEL\0", 2, 2, 0,
"Create boot loader entry for specified kernel");
VERB_SCOPE_NOARG(, verb_link_auto, "link-auto",
@@ -324,22 +324,22 @@ VERB_SCOPE_NOARG(, verb_cleanup, "cleanup",
VERB_GROUP("Boot Loader Interface Commands");
VERB_SCOPE(, verb_set_efivar, "set-default", "ID", 2, 2, 0,
VERB_SCOPE(, verb_set_efivar, "set-default", "ID\0", 2, 2, 0,
"Set default boot loader entry");
VERB_SCOPE(, verb_set_efivar, "set-oneshot", "ID", 2, 2, 0,
VERB_SCOPE(, verb_set_efivar, "set-oneshot", "ID\0", 2, 2, 0,
"Set default boot loader entry, for next boot only");
VERB_SCOPE(, verb_set_efivar, "set-sysfail", "ID", 2, 2, 0,
VERB_SCOPE(, verb_set_efivar, "set-sysfail", "ID\0", 2, 2, 0,
"Set boot loader entry used in case of a system failure");
VERB_SCOPE(, verb_set_efivar, "set-timeout", "SECONDS", 2, 2, 0,
VERB_SCOPE(, verb_set_efivar, "set-timeout", "SECONDS\0", 2, 2, 0,
"Set the menu timeout");
VERB_SCOPE(, verb_set_efivar, "set-timeout-oneshot", "SECONDS", 2, 2, 0,
VERB_SCOPE(, verb_set_efivar, "set-timeout-oneshot", "SECONDS\0", 2, 2, 0,
"Set the menu timeout for the next boot only");
VERB_SCOPE(, verb_set_efivar, "set-preferred", "ID", 2, 2, 0,
VERB_SCOPE(, verb_set_efivar, "set-preferred", "ID\0", 2, 2, 0,
/* help= */ NULL);
VERB_GROUP("systemd-boot Commands");
@@ -361,10 +361,10 @@ VERB_SCOPE_NOARG(, verb_random_seed, "random-seed",
VERB_GROUP("Kernel Image Commands");
VERB_SCOPE(, verb_kernel_identify, "kernel-identify", "KERNEL-IMAGE", 2, 2, 0,
VERB_SCOPE(, verb_kernel_identify, "kernel-identify", "KERNEL-IMAGE\0", 2, 2, 0,
"Identify kernel image type");
VERB_SCOPE(, verb_kernel_inspect, "kernel-inspect", "KERNEL-IMAGE", 2, 2, 0,
VERB_SCOPE(, verb_kernel_inspect, "kernel-inspect", "KERNEL-IMAGE\0", 2, 2, 0,
"Prints details about the kernel image");
static int parse_argv(int argc, char *argv[], char ***ret_args) {
+10 -10
View File
@@ -547,7 +547,7 @@ static int tree_one(sd_bus *bus, const char *service) {
return r;
}
VERB(verb_tree, "tree", "[SERVICE…]", VERB_ANY, VERB_ANY, 0,
VERB(verb_tree, "tree", "[SERVICE…]\0", VERB_ANY, VERB_ANY, 0,
"Show object tree of service");
static int verb_tree(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -1008,7 +1008,7 @@ static int members_flags_to_string(const Member *m, char **ret) {
return 0;
}
VERB(verb_introspect, "introspect", "SERVICE OBJECT [INTERFACE]", 3, 4, 0,
VERB(verb_introspect, "introspect", "SERVICE OBJECT [INTERFACE]\0", 3, 4, 0,
"Introspect an object");
static int verb_introspect(int argc, char *argv[], uintptr_t _data, void *userdata) {
static const XMLIntrospectOps ops = {
@@ -1391,13 +1391,13 @@ static int monitor(int argc, char **argv, int (*dump)(sd_bus_message *m, FILE *f
}
}
VERB(verb_monitor, "monitor", "[SERVICE…]", VERB_ANY, VERB_ANY, 0,
VERB(verb_monitor, "monitor", "[SERVICE…]\0", VERB_ANY, VERB_ANY, 0,
"Show bus traffic");
static int verb_monitor(int argc, char *argv[], uintptr_t _data, void *userdata) {
return monitor(argc, argv, sd_json_format_enabled(arg_json_format_flags) ? message_json : message_dump);
}
VERB(verb_capture, "capture", "[SERVICE…]", VERB_ANY, VERB_ANY, 0,
VERB(verb_capture, "capture", "[SERVICE…]\0", VERB_ANY, VERB_ANY, 0,
"Capture bus traffic as pcap");
static int verb_capture(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_free_ char *osname = NULL;
@@ -1426,7 +1426,7 @@ static int verb_capture(int argc, char *argv[], uintptr_t _data, void *userdata)
return r;
}
VERB(verb_status, "status", "[SERVICE]", VERB_ANY, 2, 0,
VERB(verb_status, "status", "[SERVICE]\0", VERB_ANY, 2, 0,
"Show bus service, process, or bus owner credentials");
static int verb_status(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -1798,7 +1798,7 @@ static int bus_message_dump(sd_bus_message *m, uint64_t flags) {
return 0;
}
VERB(verb_call, "call", "SERVICE OBJECT INTERFACE METHOD [SIGNATURE [ARGUMENT…]]", 5, VERB_ANY, 0,
VERB(verb_call, "call", "SERVICE OBJECT INTERFACE METHOD [SIGNATURE [ARGUMENT…]]\0", 5, VERB_ANY, 0,
"Call a method");
static int verb_call(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -1867,7 +1867,7 @@ static int verb_call(int argc, char *argv[], uintptr_t _data, void *userdata) {
return bus_message_dump(reply, /* flags= */ 0);
}
VERB(verb_emit, "emit", "OBJECT INTERFACE SIGNAL [SIGNATURE [ARGUMENT…]]", 4, VERB_ANY, 0,
VERB(verb_emit, "emit", "OBJECT INTERFACE SIGNAL [SIGNATURE [ARGUMENT…]]\0", 4, VERB_ANY, 0,
"Emit a signal");
static int verb_emit(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -1914,7 +1914,7 @@ static int verb_emit(int argc, char *argv[], uintptr_t _data, void *userdata) {
return 0;
}
VERB(verb_get_property, "get-property", "SERVICE OBJECT INTERFACE PROPERTY…", 5, VERB_ANY, 0,
VERB(verb_get_property, "get-property", "SERVICE OBJECT INTERFACE PROPERTY…\0", 5, VERB_ANY, 0,
"Get property value");
static int verb_get_property(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -1974,7 +1974,7 @@ static int on_bus_signal(sd_bus_message *msg, void *userdata, sd_bus_error *ret_
return 0;
}
VERB(verb_wait, "wait", "[SERVICE] OBJECT INTERFACE SIGNAL", 4, 5, 0,
VERB(verb_wait, "wait", "[SERVICE] OBJECT INTERFACE SIGNAL\0", 4, 5, 0,
"Wait for a signal");
static int verb_wait(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -2024,7 +2024,7 @@ static int verb_wait(int argc, char *argv[], uintptr_t _data, void *userdata) {
return sd_event_loop(e);
}
VERB(verb_set_property, "set-property", "SERVICE OBJECT INTERFACE PROPERTY SIGNATURE ARGUMENT…", 6, VERB_ANY, 0,
VERB(verb_set_property, "set-property", "SERVICE OBJECT INTERFACE PROPERTY SIGNATURE ARGUMENT…\0", 6, VERB_ANY, 0,
"Set property value");
static int verb_set_property(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
+2 -2
View File
@@ -103,7 +103,7 @@ static int clone_device(
return 0;
}
VERB(verb_add, "add", "NAME SOURCE DEST METADATA [OPTIONS]", 5, 6, 0, "Create a dm-clone device");
VERB(verb_add, "add", "NAME SOURCE DEST METADATA [OPTIONS]\0", 5, 6, 0, "Create a dm-clone device");
/* Arguments: systemd-clonesetup add NAME SOURCE DEST METADATA [OPTIONS] */
static int verb_add(int argc, char *argv[], uintptr_t data, void *userdata) {
@@ -126,7 +126,7 @@ static int verb_add(int argc, char *argv[], uintptr_t data, void *userdata) {
return clone_device(name, src, dst, meta, options);
}
VERB(verb_remove, "remove", "NAME", 2, 2, 0, "Remove a dm-clone device");
VERB(verb_remove, "remove", "NAME\0", 2, 2, 0, "Remove a dm-clone device");
static int verb_remove(int argc, char *argv[], uintptr_t data, void *userdata) {
const char *name = ASSERT_PTR(argv[1]);
+5 -5
View File
@@ -214,15 +214,15 @@ static int parse_argv(int argc, char *argv[], char ***remaining_args) {
return 1;
}
VERB_SCOPE(, verb_dump_list, "list", "[MATCHES…]", VERB_ANY, VERB_ANY, VERB_DEFAULT,
VERB_SCOPE(, verb_dump_list, "list", "[MATCHES…]\0", VERB_ANY, VERB_ANY, VERB_DEFAULT,
"List available coredumps");
VERB_SCOPE(, verb_dump_list, "info", "[MATCHES…]", VERB_ANY, VERB_ANY, 0,
VERB_SCOPE(, verb_dump_list, "info", "[MATCHES…]\0", VERB_ANY, VERB_ANY, 0,
"Show detailed information about one or more coredumps");
VERB_SCOPE(, verb_dump_core, "dump", "[MATCHES…]", VERB_ANY, VERB_ANY, 0,
VERB_SCOPE(, verb_dump_core, "dump", "[MATCHES…]\0", VERB_ANY, VERB_ANY, 0,
"Print first matching coredump to stdout");
VERB_SCOPE(, verb_run_debug, "debug", "[MATCHES…]", VERB_ANY, VERB_ANY, 0,
VERB_SCOPE(, verb_run_debug, "debug", "[MATCHES…]\0", VERB_ANY, VERB_ANY, 0,
"Start a debugger for the first matching coredump");
VERB_SCOPE(, verb_run_debug, "gdb", "[MATCHES…]", VERB_ANY, VERB_ANY, 0,
VERB_SCOPE(, verb_run_debug, "gdb", "[MATCHES…]\0", VERB_ANY, VERB_ANY, 0,
/* help= */ NULL);
static int check_units_active(void) {
+3 -3
View File
@@ -473,7 +473,7 @@ static int write_blob(FILE *f, const void *data, size_t size) {
return 0;
}
VERB(verb_cat, "cat", "CREDENTIAL...", 2, VERB_ANY, 0,
VERB(verb_cat, "cat", "CREDENTIAL...\0", 2, VERB_ANY, 0,
"Show contents of specified credentials");
static int verb_cat(int argc, char *argv[], uintptr_t _data, void *userdata) {
usec_t timestamp;
@@ -561,7 +561,7 @@ static int verb_cat(int argc, char *argv[], uintptr_t _data, void *userdata) {
return ret;
}
VERB(verb_encrypt, "encrypt", "INPUT OUTPUT", 3, 3, 0,
VERB(verb_encrypt, "encrypt", "INPUT OUTPUT\0", 3, 3, 0,
"Encrypt plaintext credential file and write to ciphertext credential file");
static int verb_encrypt(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(iovec_done_erase) struct iovec plaintext = {}, output = {};
@@ -671,7 +671,7 @@ static int verb_encrypt(int argc, char *argv[], uintptr_t _data, void *userdata)
return EXIT_SUCCESS;
}
VERB(verb_decrypt, "decrypt", "INPUT [OUTPUT]", 2, 3, 0,
VERB(verb_decrypt, "decrypt", "INPUT [OUTPUT]\0", 2, 3, 0,
"Decrypt ciphertext credential file and write to plaintext credential file");
static int verb_decrypt(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(iovec_done_erase) struct iovec input = {}, plaintext = {};
+2 -2
View File
@@ -2484,7 +2484,7 @@ static int discover_key(const char *key_file, const char *volume, TokenType toke
return r;
}
VERB(verb_attach, "attach", "VOLUME SOURCE-DEVICE [KEY-FILE] [CONFIG]", 3, 5, 0,
VERB(verb_attach, "attach", "VOLUME SOURCE-DEVICE [KEY-FILE] [CONFIG]\0", 3, 5, 0,
"Attach an encrypted block device");
static int verb_attach(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(crypt_freep) struct crypt_device *cd = NULL;
@@ -2731,7 +2731,7 @@ static int verb_attach(int argc, char *argv[], uintptr_t _data, void *userdata)
return 0;
}
VERB(verb_detach, "detach", "VOLUME", 2, 2, 0,
VERB(verb_detach, "detach", "VOLUME\0", 2, 2, 0,
"Detach an encrypted block device");
static int verb_detach(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(crypt_freep) struct crypt_device *cd = NULL;
+18 -18
View File
@@ -711,7 +711,7 @@ static int inspect_home(sd_bus *bus, const char *name) {
return 0;
}
VERB(verb_inspect_homes, "inspect", "USER…", VERB_ANY, VERB_ANY, 0,
VERB(verb_inspect_homes, "inspect", "USER…\0", VERB_ANY, VERB_ANY, 0,
"Inspect a home area");
static int verb_inspect_homes(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -1459,7 +1459,7 @@ static int create_home_common(sd_json_variant *input, bool show_enforce_password
return 0;
}
VERB(verb_create_home, "create", "USER", VERB_ANY, 2, 0,
VERB(verb_create_home, "create", "USER\0", VERB_ANY, 2, 0,
"Create a home area");
static int verb_create_home(int argc, char *argv[], uintptr_t _data, void *userdata) {
int r;
@@ -1641,7 +1641,7 @@ static int home_record_reset_human_interaction_permission(UserRecord *hr) {
return 0;
}
VERB(verb_update_home, "update", "USER", VERB_ANY, 2, 0,
VERB(verb_update_home, "update", "USER\0", VERB_ANY, 2, 0,
"Update a home area");
static int verb_update_home(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -1824,7 +1824,7 @@ static int verb_update_home(int argc, char *argv[], uintptr_t _data, void *userd
return 0;
}
VERB(verb_passwd_home, "passwd", "USER", VERB_ANY, 2, 0,
VERB(verb_passwd_home, "passwd", "USER\0", VERB_ANY, 2, 0,
"Change password of a home area");
static int verb_passwd_home(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(user_record_unrefp) UserRecord *old_secret = NULL, *new_secret = NULL;
@@ -1943,7 +1943,7 @@ static int parse_disk_size(const char *t, uint64_t *ret) {
return 0;
}
VERB(verb_resize_home, "resize", "USER SIZE", 2, 3, 0,
VERB(verb_resize_home, "resize", "USER SIZE\0", 2, 3, 0,
"Resize a home area");
static int verb_resize_home(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -2007,7 +2007,7 @@ static int verb_resize_home(int argc, char *argv[], uintptr_t _data, void *userd
return 0;
}
VERB(verb_remove_home, "remove", "USER…", 2, VERB_ANY, 0,
VERB(verb_remove_home, "remove", "USER…\0", 2, VERB_ANY, 0,
"Remove a home area");
static int verb_remove_home(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -2043,7 +2043,7 @@ static int verb_remove_home(int argc, char *argv[], uintptr_t _data, void *userd
}
VERB_GROUP("Advanced User Manipulation Commands");
VERB(verb_activate_home, "activate", "USER…", 2, VERB_ANY, 0,
VERB(verb_activate_home, "activate", "USER…\0", 2, VERB_ANY, 0,
"Activate a home area");
static int verb_activate_home(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -2093,7 +2093,7 @@ static int verb_activate_home(int argc, char *argv[], uintptr_t _data, void *use
return ret;
}
VERB(verb_deactivate_home, "deactivate", "USER…", 2, VERB_ANY, 0,
VERB(verb_deactivate_home, "deactivate", "USER…\0", 2, VERB_ANY, 0,
"Deactivate a home area");
static int verb_deactivate_home(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -2168,7 +2168,7 @@ static int verb_deactivate_all_homes(int argc, char *argv[], uintptr_t _data, vo
return 0;
}
VERB(verb_with_home, "with", "USER [COMMAND…]", 2, VERB_ANY, 0,
VERB(verb_with_home, "with", "USER [COMMAND…]\0", 2, VERB_ANY, 0,
"Run shell or command with access to a home area");
static int verb_with_home(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -2327,7 +2327,7 @@ static int authenticate_home(sd_bus *bus, const char *name) {
}
}
VERB(verb_authenticate_homes, "authenticate", "USER…", VERB_ANY, VERB_ANY, 0,
VERB(verb_authenticate_homes, "authenticate", "USER…\0", VERB_ANY, VERB_ANY, 0,
"Authenticate a home area");
static int verb_authenticate_homes(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -2355,7 +2355,7 @@ static int verb_authenticate_homes(int argc, char *argv[], uintptr_t _data, void
}
VERB_GROUP("User Migration Commands");
VERB(verb_adopt_home, "adopt", "PATH…", VERB_ANY, VERB_ANY, 0,
VERB(verb_adopt_home, "adopt", "PATH…\0", VERB_ANY, VERB_ANY, 0,
"Add an existing home area on this system");
static int verb_adopt_home(int argc, char *argv[], uintptr_t _data, void *userdata) {
int r, ret = 0;
@@ -2439,7 +2439,7 @@ static int register_home_one(sd_bus *bus, FILE *f, const char *path) {
return register_home_common(bus, v);
}
VERB(verb_register_home, "register", "PATH…", VERB_ANY, VERB_ANY, 0,
VERB(verb_register_home, "register", "PATH…\0", VERB_ANY, VERB_ANY, 0,
"Register a user record locally");
static int verb_register_home(int argc, char *argv[], uintptr_t _data, void *userdata) {
int r;
@@ -2472,7 +2472,7 @@ static int verb_register_home(int argc, char *argv[], uintptr_t _data, void *use
return r;
}
VERB(verb_unregister_home, "unregister", "USER…", 2, VERB_ANY, 0,
VERB(verb_unregister_home, "unregister", "USER…\0", 2, VERB_ANY, 0,
"Unregister a user record locally");
static int verb_unregister_home(int argc, char *argv[], uintptr_t _data, void *userdata) {
int r;
@@ -2597,7 +2597,7 @@ static int verb_list_signing_keys(int argc, char *argv[], uintptr_t _data, void
return 0;
}
VERB(verb_get_signing_key, "get-signing-key", "[NAME…]", VERB_ANY, VERB_ANY, 0,
VERB(verb_get_signing_key, "get-signing-key", "[NAME…]\0", VERB_ANY, VERB_ANY, 0,
"Get a named home signing key");
static int verb_get_signing_key(int argc, char *argv[], uintptr_t _data, void *userdata) {
int r;
@@ -2655,7 +2655,7 @@ static int add_signing_key_one(sd_bus *bus, const char *fn, FILE *key) {
return 0;
}
VERB(verb_add_signing_key, "add-signing-key", "FILE…", VERB_ANY, VERB_ANY, 0,
VERB(verb_add_signing_key, "add-signing-key", "FILE…\0", VERB_ANY, VERB_ANY, 0,
"Add home signing key");
static int verb_add_signing_key(int argc, char *argv[], uintptr_t _data, void *userdata) {
int r;
@@ -2764,7 +2764,7 @@ static int remove_signing_key_one(sd_bus *bus, const char *fn) {
return 0;
}
VERB(verb_remove_signing_key, "remove-signing-key", "NAME…", 2, VERB_ANY, 0,
VERB(verb_remove_signing_key, "remove-signing-key", "NAME…\0", 2, VERB_ANY, 0,
"Remove home signing key");
static int verb_remove_signing_key(int argc, char *argv[], uintptr_t _data, void *userdata) {
int r;
@@ -2782,7 +2782,7 @@ static int verb_remove_signing_key(int argc, char *argv[], uintptr_t _data, void
}
VERB_GROUP("Lock/Unlock Commands");
VERB(verb_lock_home, "lock", "USER…", 2, VERB_ANY, 0,
VERB(verb_lock_home, "lock", "USER…\0", 2, VERB_ANY, 0,
"Temporarily lock an active home area");
static int verb_lock_home(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -2815,7 +2815,7 @@ static int verb_lock_home(int argc, char *argv[], uintptr_t _data, void *userdat
return ret;
}
VERB(verb_unlock_home, "unlock", "USER…", 2, VERB_ANY, 0,
VERB(verb_unlock_home, "unlock", "USER…\0", 2, VERB_ANY, 0,
"Unlock a temporarily locked home area");
static int verb_unlock_home(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
+2 -2
View File
@@ -37,7 +37,7 @@ static int help(void) {
return table_print_or_warn(options);
}
VERB(verb_groups, "groups", "[USER]", VERB_ANY, 2, 0, "Select groups");
VERB(verb_groups, "groups", "[USER]\0", VERB_ANY, 2, 0, "Select groups");
static int verb_groups(int argc, char *argv[], uintptr_t _data, void *userdata) {
assert(argv);
@@ -55,7 +55,7 @@ static int verb_groups(int argc, char *argv[], uintptr_t _data, void *userdata)
return 0;
}
VERB(verb_shell, "shell", "[USER]", VERB_ANY, 2, 0, "Select shell");
VERB(verb_shell, "shell", "[USER]\0", VERB_ANY, 2, 0, "Select shell");
static int verb_shell(int argc, char *argv[], uintptr_t _data, void *userdata) {
assert(argv);
+11 -11
View File
@@ -710,42 +710,42 @@ static int verb_set_hostname(int argc, char *argv[], uintptr_t _data, void *user
return ret;
}
VERB(verb_get_or_set_hostname, "hostname", "[NAME]", VERB_ANY, 2, 0, "Get/set system hostname");
VERB(verb_get_or_set_hostname, "set-hostname", "NAME", 2, 2, 0, NULL); /* obsolete */
VERB(verb_get_or_set_hostname, "hostname", "[NAME]\0", VERB_ANY, 2, 0, "Get/set system hostname");
VERB(verb_get_or_set_hostname, "set-hostname", "NAME\0", 2, 2, 0, NULL); /* obsolete */
static int verb_get_or_set_hostname(int argc, char *argv[], uintptr_t data, void *userdata) {
return argc == 1 ? get_hostname_based_on_flag(userdata) :
verb_set_hostname(argc, argv, data, userdata);
}
VERB(verb_get_or_set_icon_name, "icon-name", "[NAME]", VERB_ANY, 2, 0, "Get/set icon name for host");
VERB(verb_get_or_set_icon_name, "set-icon-name", "NAME", 2, 2, 0, NULL); /* obsolete */
VERB(verb_get_or_set_icon_name, "icon-name", "[NAME]\0", VERB_ANY, 2, 0, "Get/set icon name for host");
VERB(verb_get_or_set_icon_name, "set-icon-name", "NAME\0", 2, 2, 0, NULL); /* obsolete */
static int verb_get_or_set_icon_name(int argc, char *argv[], uintptr_t _data, void *userdata) {
return argc == 1 ? get_one_name(userdata, "IconName", NULL) :
set_simple_string(userdata, "icon", "SetIconName", argv[1]);
}
VERB(verb_get_or_set_chassis, "chassis", "[NAME]", VERB_ANY, 2, 0, "Get/set chassis type for host");
VERB(verb_get_or_set_chassis, "set-chassis", "NAME", 2, 2, 0, NULL); /* obsolete */
VERB(verb_get_or_set_chassis, "chassis", "[NAME]\0", VERB_ANY, 2, 0, "Get/set chassis type for host");
VERB(verb_get_or_set_chassis, "set-chassis", "NAME\0", 2, 2, 0, NULL); /* obsolete */
static int verb_get_or_set_chassis(int argc, char *argv[], uintptr_t _data, void *userdata) {
return argc == 1 ? get_one_name(userdata, "Chassis", NULL) :
set_simple_string(userdata, "chassis", "SetChassis", argv[1]);
}
VERB(verb_get_or_set_deployment, "deployment", "[NAME]", VERB_ANY, 2, 0, "Get/set deployment environment for host");
VERB(verb_get_or_set_deployment, "set-deployment", "NAME", 2, 2, 0, NULL); /* obsolete */
VERB(verb_get_or_set_deployment, "deployment", "[NAME]\0", VERB_ANY, 2, 0, "Get/set deployment environment for host");
VERB(verb_get_or_set_deployment, "set-deployment", "NAME\0", 2, 2, 0, NULL); /* obsolete */
static int verb_get_or_set_deployment(int argc, char *argv[], uintptr_t _data, void *userdata) {
return argc == 1 ? get_one_name(userdata, "Deployment", NULL) :
set_simple_string(userdata, "deployment", "SetDeployment", argv[1]);
}
VERB(verb_get_or_set_location, "location", "[NAME]", VERB_ANY, 2, 0, "Get/set location for host");
VERB(verb_get_or_set_location, "set-location", "NAME", 2, 2, 0, NULL); /* obsolete */
VERB(verb_get_or_set_location, "location", "[NAME]\0", VERB_ANY, 2, 0, "Get/set location for host");
VERB(verb_get_or_set_location, "set-location", "NAME\0", 2, 2, 0, NULL); /* obsolete */
static int verb_get_or_set_location(int argc, char *argv[], uintptr_t _data, void *userdata) {
return argc == 1 ? get_one_name(userdata, "Location", NULL) :
set_simple_string(userdata, "location", "SetLocation", argv[1]);
}
VERB(verb_get_or_set_tags, "tags", "[TAG …]", VERB_ANY, VERB_ANY, 0, "Get/set machine tags for host");
VERB(verb_get_or_set_tags, "tags", "[TAG …]\0", VERB_ANY, VERB_ANY, 0, "Get/set machine tags for host");
static int verb_get_or_set_tags(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
sd_bus *bus = ASSERT_PTR(userdata);
+1 -1
View File
@@ -20,7 +20,7 @@ COMMAND(
.man_pages = "systemd-hwdb(8)\0",
);
VERB(verb_query, "query", "MODALIAS", 2, 2, 0,
VERB(verb_query, "query", "MODALIAS\0", 2, 2, 0,
"Query database and print result");
static int verb_query(int argc, char *argv[], uintptr_t _data, void *userdata) {
return hwdb_query(argv[1], arg_root);
+1 -1
View File
@@ -175,7 +175,7 @@ static int show_one(Table **table, const char *name, sd_id128_t uuid, bool first
arg_mode == ID128_PRINT_ID128 ? TABLE_ID128 : TABLE_UUID, uuid);
}
VERB(verb_show, "show", "[NAME|UUID]", VERB_ANY, VERB_ANY, 0, "Print one or more UUIDs");
VERB(verb_show, "show", "[NAME|UUID]\0", VERB_ANY, VERB_ANY, 0, "Print one or more UUIDs");
static int verb_show(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(table_unrefp) Table *table = NULL;
int r;
+2 -2
View File
@@ -49,7 +49,7 @@ static void on_tar_finished(TarExport *export, int error, void *userdata) {
sd_event_exit(event, ABS(error));
}
VERB(verb_export_tar, "tar", "NAME [FILE]", 2, 3, 0,
VERB(verb_export_tar, "tar", "NAME [FILE]\0", 2, 3, 0,
"Export a TAR image");
static int verb_export_tar(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(tar_export_unrefp) TarExport *export = NULL;
@@ -132,7 +132,7 @@ static void on_raw_finished(RawExport *export, int error, void *userdata) {
sd_event_exit(event, ABS(error));
}
VERB(verb_export_raw, "raw", "NAME [FILE]", 2, 3, 0,
VERB(verb_export_raw, "raw", "NAME [FILE]\0", 2, 3, 0,
"Export a RAW image");
static int verb_export_raw(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(raw_export_unrefp) RawExport *export = NULL;
+1 -1
View File
@@ -113,7 +113,7 @@ static int progress_bytes(uint64_t nbytes, uint64_t bps, void *userdata) {
return 0;
}
VERB(verb_import_fs, "run", "DIRECTORY [NAME]", 2, 3, 0,
VERB(verb_import_fs, "run", "DIRECTORY [NAME]\0", 2, 3, 0,
"Import a directory");
static int verb_import_fs(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(rm_rf_subvolume_and_freep) char *temp_path = NULL;
+2 -2
View File
@@ -143,7 +143,7 @@ static void on_tar_finished(TarImport *import, int error, void *userdata) {
sd_event_exit(event, ABS(error));
}
VERB(verb_tar, "tar", "FILE [NAME]", 2, 3, 0, "Import a TAR image");
VERB(verb_tar, "tar", "FILE [NAME]\0", 2, 3, 0, "Import a TAR image");
static int verb_tar(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(tar_import_unrefp) TarImport *import = NULL;
_cleanup_free_ char *ll = NULL, *normalized = NULL;
@@ -213,7 +213,7 @@ static void on_raw_finished(RawImport *import, int error, void *userdata) {
sd_event_exit(event, ABS(error));
}
VERB(verb_raw, "raw", "FILE [NAME]", 2, 3, 0, "Import a RAW image");
VERB(verb_raw, "raw", "FILE [NAME]\0", 2, 3, 0, "Import a RAW image");
static int verb_raw(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(raw_import_unrefp) RawImport *import = NULL;
_cleanup_free_ char *ll = NULL, *normalized = NULL;
+9 -9
View File
@@ -268,7 +268,7 @@ static int transfer_image_common(sd_bus *bus, sd_bus_message *m) {
return -r;
}
VERB(verb_pull_tar, "pull-tar", "URL [NAME]", 2, 3, 0, "Download a TAR container image");
VERB(verb_pull_tar, "pull-tar", "URL [NAME]\0", 2, 3, 0, "Download a TAR container image");
static int verb_pull_tar(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
_cleanup_free_ char *l = NULL, *ll = NULL;
@@ -342,7 +342,7 @@ static int verb_pull_tar(int argc, char *argv[], uintptr_t _data, void *userdata
return transfer_image_common(bus, m);
}
VERB(verb_pull_raw, "pull-raw", "URL [NAME]", 2, 3, 0, "Download a RAW container or VM image");
VERB(verb_pull_raw, "pull-raw", "URL [NAME]\0", 2, 3, 0, "Download a RAW container or VM image");
static int verb_pull_raw(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
_cleanup_free_ char *l = NULL, *ll = NULL;
@@ -416,7 +416,7 @@ static int verb_pull_raw(int argc, char *argv[], uintptr_t _data, void *userdata
return transfer_image_common(bus, m);
}
VERB(verb_pull_oci, "pull-oci", "REF [NAME]", 2, 3, 0, "Download an OCI container image");
VERB(verb_pull_oci, "pull-oci", "REF [NAME]\0", 2, 3, 0, "Download an OCI container image");
static int verb_pull_oci(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
_cleanup_free_ char *l = NULL;
@@ -472,7 +472,7 @@ static int verb_pull_oci(int argc, char *argv[], uintptr_t _data, void *userdata
return transfer_image_common(bus, m);
}
VERB(verb_import_tar, "import-tar", "FILE [NAME]", 2, 3, 0, "Import a local TAR container image");
VERB(verb_import_tar, "import-tar", "FILE [NAME]\0", 2, 3, 0, "Import a local TAR container image");
static int verb_import_tar(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
_cleanup_free_ char *ll = NULL, *fn = NULL;
@@ -552,7 +552,7 @@ static int verb_import_tar(int argc, char *argv[], uintptr_t _data, void *userda
return transfer_image_common(bus, m);
}
VERB(verb_import_raw, "import-raw", "FILE [NAME]", 2, 3, 0, "Import a local RAW container or VM image");
VERB(verb_import_raw, "import-raw", "FILE [NAME]\0", 2, 3, 0, "Import a local RAW container or VM image");
static int verb_import_raw(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
_cleanup_free_ char *ll = NULL, *fn = NULL;
@@ -632,7 +632,7 @@ static int verb_import_raw(int argc, char *argv[], uintptr_t _data, void *userda
return transfer_image_common(bus, m);
}
VERB(verb_import_fs, "import-fs", "DIRECTORY [NAME]", 2, 3, 0, "Import a local directory container image");
VERB(verb_import_fs, "import-fs", "DIRECTORY [NAME]\0", 2, 3, 0, "Import a local directory container image");
static int verb_import_fs(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
const char *local = NULL, *path = NULL;
@@ -720,7 +720,7 @@ static void determine_compression_from_filename(const char *p) {
arg_format = "zstd";
}
VERB(verb_export_tar, "export-tar", "NAME [FILE]", 2, 3, 0, "Export a TAR container image locally");
VERB(verb_export_tar, "export-tar", "NAME [FILE]\0", 2, 3, 0, "Export a TAR container image locally");
static int verb_export_tar(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
_cleanup_close_ int fd = -EBADF;
@@ -780,7 +780,7 @@ static int verb_export_tar(int argc, char *argv[], uintptr_t _data, void *userda
return transfer_image_common(bus, m);
}
VERB(verb_export_raw, "export-raw", "NAME [FILE]", 2, 3, 0, "Export a RAW container or VM image locally");
VERB(verb_export_raw, "export-raw", "NAME [FILE]\0", 2, 3, 0, "Export a RAW container or VM image locally");
static int verb_export_raw(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
_cleanup_close_ int fd = -EBADF;
@@ -945,7 +945,7 @@ static int verb_list_transfers(int argc, char *argv[], uintptr_t _data, void *us
return 0;
}
VERB(verb_cancel_transfer, "cancel-transfer", "[ID...]", 2, VERB_ANY, 0, "Cancel a transfer");
VERB(verb_cancel_transfer, "cancel-transfer", "[ID...]\0", 2, VERB_ANY, 0, "Cancel a transfer");
static int verb_cancel_transfer(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
sd_bus *bus = ASSERT_PTR(userdata);
+3 -3
View File
@@ -123,7 +123,7 @@ static void on_tar_finished(TarPull *pull, int error, void *userdata) {
sd_event_exit(event, ABS(error));
}
VERB(verb_tar, "tar", "URL [NAME]", 2, 3, 0, "Download a TAR image");
VERB(verb_tar, "tar", "URL [NAME]\0", 2, 3, 0, "Download a TAR image");
static int verb_tar(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_free_ char *ll = NULL, *normalized = NULL;
_cleanup_(sd_event_unrefp) sd_event *event = NULL;
@@ -194,7 +194,7 @@ static void on_raw_finished(RawPull *pull, int error, void *userdata) {
sd_event_exit(event, ABS(error));
}
VERB(verb_raw, "raw", "URL [NAME]", 2, 3, 0, "Download a RAW image");
VERB(verb_raw, "raw", "URL [NAME]\0", 2, 3, 0, "Download a RAW image");
static int verb_raw(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_free_ char *ll = NULL, *normalized = NULL;
_cleanup_(sd_event_unrefp) sd_event *event = NULL;
@@ -264,7 +264,7 @@ static void on_oci_finished(OciPull *pull, int error, void *userdata) {
sd_event_exit(event, ABS(error));
}
VERB(verb_oci, "oci", "REF [NAME]", 2, 3, 0, "Download an OCI image");
VERB(verb_oci, "oci", "REF [NAME]\0", 2, 3, 0, "Download an OCI image");
static int verb_oci(int argc, char *argv[], uintptr_t _data, void *userdata) {
int r;
+2 -2
View File
@@ -82,7 +82,7 @@ static const char *integrity_algorithm_select(const void *key_file_buf) {
return dm_integrity_algorithm_to_string(a);
}
VERB(verb_attach, "attach", "VOLUME DEVICE [HMAC_KEY_FILE|-] [OPTIONS]", 3, 5, 0,
VERB(verb_attach, "attach", "VOLUME DEVICE [HMAC_KEY_FILE|-] [OPTIONS]\0", 3, 5, 0,
"Attach an integrity protected block device");
static int verb_attach(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(crypt_freep) struct crypt_device *cd = NULL;
@@ -151,7 +151,7 @@ static int verb_attach(int argc, char *argv[], uintptr_t _data, void *userdata)
return 0;
}
VERB(verb_detach, "detach", "VOLUME", 2, 2, 0,
VERB(verb_detach, "detach", "VOLUME\0", 2, 2, 0,
"Detach an integrity protected block device");
static int verb_detach(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(crypt_freep) struct crypt_device *cd = NULL;
+3 -3
View File
@@ -1281,7 +1281,7 @@ static int do_add(
return context_execute(c);
}
VERB(verb_add, "add", "[[[KERNEL-VERSION] KERNEL-IMAGE] [INITRD ...]]", 1, VERB_ANY, 0,
VERB(verb_add, "add", "[[[KERNEL-VERSION] KERNEL-IMAGE] [INITRD ...]]\0", 1, VERB_ANY, 0,
"Add a kernel and initrd images to the boot partition");
static int verb_add(int argc, char *argv[], uintptr_t _data, void *userdata) {
const char *version, *kernel;
@@ -1394,7 +1394,7 @@ static int run_as_installkernel(char **args) {
return verb_add(3, STRV_MAKE("add", args[0], args[1]), /* data= */ 0, /* userdata= */ NULL);
}
VERB(verb_remove, "remove", "KERNEL-VERSION", 2, VERB_ANY, 0,
VERB(verb_remove, "remove", "KERNEL-VERSION\0", 2, VERB_ANY, 0,
"Remove a kernel from the boot partition");
static int verb_remove(int argc, char *argv[], uintptr_t _data, void *userdata) {
int r;
@@ -1432,7 +1432,7 @@ static int verb_remove(int argc, char *argv[], uintptr_t _data, void *userdata)
return context_execute(&c);
}
VERB(verb_inspect, "inspect", "[[[KERNEL-VERSION] KERNEL-IMAGE] [INITRD ...]]", 1, VERB_ANY, VERB_DEFAULT,
VERB(verb_inspect, "inspect", "[[[KERNEL-VERSION] KERNEL-IMAGE] [INITRD ...]]\0", 1, VERB_ANY, VERB_DEFAULT,
"Print details about the installation");
static int verb_inspect(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(table_unrefp) Table *t = NULL;
+4 -4
View File
@@ -186,7 +186,7 @@ static int verb_show_status(int argc, char *argv[], uintptr_t _data, void *userd
return print_status_info(&info);
}
VERB(verb_set_locale, "set-locale", "LOCALE...", 2, VERB_ANY, 0,
VERB(verb_set_locale, "set-locale", "LOCALE...\0", 2, VERB_ANY, 0,
"Set system locale");
static int verb_set_locale(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
@@ -232,7 +232,7 @@ static int verb_list_locales(int argc, char *argv[], uintptr_t _data, void *user
return 0;
}
VERB(verb_set_vconsole_keymap, "set-keymap", "MAP [MAP]", 2, 3, 0,
VERB(verb_set_vconsole_keymap, "set-keymap", "MAP [MAP]\0", 2, 3, 0,
"Set console and X11 keyboard mappings");
static int verb_set_vconsole_keymap(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -275,7 +275,7 @@ static int verb_list_vconsole_keymaps(int argc, char *argv[], uintptr_t _data, v
return 0;
}
VERB(verb_set_x11_keymap, "set-x11-keymap", "LAYOUT [MODEL [VARIANT [OPTIONS]]]", 2, 5, 0,
VERB(verb_set_x11_keymap, "set-x11-keymap", "LAYOUT [MODEL [VARIANT [OPTIONS]]]\0", 2, 5, 0,
"Set X11 and console keyboard mappings");
static int verb_set_x11_keymap(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -316,7 +316,7 @@ VERB_NOARG(verb_list_x11_keymaps, "list-x11-keymap-models",
"Show known X11 keyboard mapping models");
VERB_NOARG(verb_list_x11_keymaps, "list-x11-keymap-layouts",
"Show known X11 keyboard mapping layouts");
VERB(verb_list_x11_keymaps, "list-x11-keymap-variants", "[LAYOUT]", VERB_ANY, 2, 0,
VERB(verb_list_x11_keymaps, "list-x11-keymap-variants", "[LAYOUT]\0", VERB_ANY, 2, 0,
"Show known X11 keyboard mapping variants");
VERB_NOARG(verb_list_x11_keymaps, "list-x11-keymap-options",
"Show known X11 keyboard mapping options");
+17 -17
View File
@@ -930,9 +930,9 @@ static int get_bus_path_by_id(
return strdup_to(ret, path);
}
VERB(verb_show_session, "session-status", "[ID…]", VERB_ANY, VERB_ANY, 0,
VERB(verb_show_session, "session-status", "[ID…]\0", VERB_ANY, VERB_ANY, 0,
"Show session status");
VERB(verb_show_session, "show-session", "[ID…]", VERB_ANY, VERB_ANY, 0,
VERB(verb_show_session, "show-session", "[ID…]\0", VERB_ANY, VERB_ANY, 0,
"Show properties of sessions or the manager");
static int verb_show_session(int argc, char *argv[], uintptr_t _data, void *userdata) {
sd_bus *bus = ASSERT_PTR(userdata);
@@ -980,11 +980,11 @@ static int verb_show_session(int argc, char *argv[], uintptr_t _data, void *user
return 0;
}
VERB(verb_activate, "activate", "[ID]", VERB_ANY, 2, 0,
VERB(verb_activate, "activate", "[ID]\0", VERB_ANY, 2, 0,
"Activate a session");
VERB(verb_activate, "lock-session", "[ID…]", VERB_ANY, VERB_ANY, 0,
VERB(verb_activate, "lock-session", "[ID…]\0", VERB_ANY, VERB_ANY, 0,
"Screen lock one or more sessions");
VERB(verb_activate, "unlock-session", "[ID…]", VERB_ANY, VERB_ANY, 0,
VERB(verb_activate, "unlock-session", "[ID…]\0", VERB_ANY, VERB_ANY, 0,
"Screen unlock one or more sessions");
static int verb_activate(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -1053,10 +1053,10 @@ static int verb_lock_sessions(int argc, char *argv[], uintptr_t _data, void *use
}
/* The implementation is above, but we put this here to preserve the logical order in --help. */
VERB(verb_activate, "terminate-session", "ID…", 2, VERB_ANY, 0,
VERB(verb_activate, "terminate-session", "ID…\0", 2, VERB_ANY, 0,
"Terminate one or more sessions");
VERB(verb_kill_session, "kill-session", "ID…", 2, VERB_ANY, 0,
VERB(verb_kill_session, "kill-session", "ID…\0", 2, VERB_ANY, 0,
"Send signal to processes of a session");
static int verb_kill_session(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -1163,9 +1163,9 @@ static int verb_list_users(int argc, char *argv[], uintptr_t _data, void *userda
return list_table_print(table, "users");
}
VERB(verb_show_user, "user-status", "[USER…]", VERB_ANY, VERB_ANY, 0,
VERB(verb_show_user, "user-status", "[USER…]\0", VERB_ANY, VERB_ANY, 0,
"Show user status");
VERB(verb_show_user, "show-user", "[USER…]", VERB_ANY, VERB_ANY, 0,
VERB(verb_show_user, "show-user", "[USER…]\0", VERB_ANY, VERB_ANY, 0,
"Show properties of users or the manager");
static int verb_show_user(int argc, char *argv[], uintptr_t _data, void *userdata) {
sd_bus *bus = ASSERT_PTR(userdata);
@@ -1218,9 +1218,9 @@ static int verb_show_user(int argc, char *argv[], uintptr_t _data, void *userdat
return 0;
}
VERB(verb_enable_linger, "enable-linger", "[USER…]", VERB_ANY, VERB_ANY, 0,
VERB(verb_enable_linger, "enable-linger", "[USER…]\0", VERB_ANY, VERB_ANY, 0,
"Enable linger state of one or more users");
VERB(verb_enable_linger, "disable-linger", "[USER…]", VERB_ANY, VERB_ANY, 0,
VERB(verb_enable_linger, "disable-linger", "[USER…]\0", VERB_ANY, VERB_ANY, 0,
"Disable linger state of one or more users");
static int verb_enable_linger(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -1270,7 +1270,7 @@ static int verb_enable_linger(int argc, char *argv[], uintptr_t _data, void *use
return 0;
}
VERB(verb_terminate_user, "terminate-user", "USER…", 2, VERB_ANY, 0,
VERB(verb_terminate_user, "terminate-user", "USER…\0", 2, VERB_ANY, 0,
"Terminate all sessions of one or more users");
static int verb_terminate_user(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -1300,7 +1300,7 @@ static int verb_terminate_user(int argc, char *argv[], uintptr_t _data, void *us
return 0;
}
VERB(verb_kill_user, "kill-user", "USER…", 2, VERB_ANY, 0,
VERB(verb_kill_user, "kill-user", "USER…\0", 2, VERB_ANY, 0,
"Send signal to processes of a user");
static int verb_kill_user(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -1385,9 +1385,9 @@ static int verb_list_seats(int argc, char *argv[], uintptr_t _data, void *userda
return list_table_print(table, "seats");
}
VERB(verb_show_seat, "seat-status", "[NAME…]", VERB_ANY, VERB_ANY, 0,
VERB(verb_show_seat, "seat-status", "[NAME…]\0", VERB_ANY, VERB_ANY, 0,
"Show seat status");
VERB(verb_show_seat, "show-seat", "[NAME…]", VERB_ANY, VERB_ANY, 0,
VERB(verb_show_seat, "show-seat", "[NAME…]\0", VERB_ANY, VERB_ANY, 0,
"Show properties of seats or the manager");
static int verb_show_seat(int argc, char *argv[], uintptr_t _data, void *userdata) {
sd_bus *bus = ASSERT_PTR(userdata);
@@ -1435,7 +1435,7 @@ static int verb_show_seat(int argc, char *argv[], uintptr_t _data, void *userdat
return 0;
}
VERB(verb_attach, "attach", "NAME DEVICE…", 3, VERB_ANY, 0,
VERB(verb_attach, "attach", "NAME DEVICE…\0", 3, VERB_ANY, 0,
"Attach one or more devices to a seat");
static int verb_attach(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -1478,7 +1478,7 @@ static int verb_flush_devices(int argc, char *argv[], uintptr_t _data, void *use
return 0;
}
VERB(verb_terminate_seat, "terminate-seat", "NAME…", 2, VERB_ANY, 0,
VERB(verb_terminate_seat, "terminate-seat", "NAME…\0", 2, VERB_ANY, 0,
"Terminate all sessions on one or more seats");
static int verb_terminate_seat(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
+29 -29
View File
@@ -702,9 +702,9 @@ static int show_machine_properties(sd_bus *bus, const char *path, bool *new_line
return r;
}
VERB(verb_show_machine, "status", "NAME…", 2, VERB_ANY, 0,
VERB(verb_show_machine, "status", "NAME…\0", 2, VERB_ANY, 0,
"Show VM/container details");
VERB(verb_show_machine, "show", "[NAME…]", VERB_ANY, VERB_ANY, 0,
VERB(verb_show_machine, "show", "[NAME…]\0", VERB_ANY, VERB_ANY, 0,
"Show properties of one or more VMs/containers");
static int verb_show_machine(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -782,7 +782,7 @@ static int image_exists(sd_bus *bus, const char *name) {
return 1;
}
VERB(verb_start_machine, "start", "NAME…", 2, VERB_ANY, 0,
VERB(verb_start_machine, "start", "NAME…\0", 2, VERB_ANY, 0,
"Start container as a service");
static int verb_start_machine(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -951,7 +951,7 @@ static int on_machine_removed(sd_bus_message *m, void *userdata, sd_bus_error *r
return 0;
}
VERB(verb_login_machine, "login", "[NAME]", VERB_ANY, 2, 0,
VERB(verb_login_machine, "login", "[NAME]\0", VERB_ANY, 2, 0,
"Get a login prompt in a container or on the local host");
static int verb_login_machine(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
@@ -1004,7 +1004,7 @@ static int verb_login_machine(int argc, char *argv[], uintptr_t _data, void *use
return process_forward(event, slot, master, PTY_FORWARD_IGNORE_VHANGUP, machine);
}
VERB(verb_shell_machine, "shell", "[[USER@]NAME [COMMAND…]]", VERB_ANY, VERB_ANY, 0,
VERB(verb_shell_machine, "shell", "[[USER@]NAME [COMMAND…]]\0", VERB_ANY, VERB_ANY, 0,
"Invoke a shell (or other command) in a container or on the local host");
static int verb_shell_machine(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL, *m = NULL;
@@ -1096,9 +1096,9 @@ static int verb_shell_machine(int argc, char *argv[], uintptr_t _data, void *use
static int verb_poweroff_machine(int argc, char *argv[], uintptr_t data, void *userdata);
VERB(verb_enable_machine, "enable", "NAME…", 2, VERB_ANY, 0,
VERB(verb_enable_machine, "enable", "NAME…\0", 2, VERB_ANY, 0,
"Enable automatic container start at boot");
VERB(verb_enable_machine, "disable", "NAME…", 2, VERB_ANY, 0,
VERB(verb_enable_machine, "disable", "NAME…\0", 2, VERB_ANY, 0,
"Disable automatic container start at boot");
static int verb_enable_machine(int argc, char *argv[], uintptr_t data, void *userdata) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL, *reply = NULL;
@@ -1267,9 +1267,9 @@ static int verb_machine_control_one(const char *machine_name, const char *method
return 0;
}
VERB(verb_poweroff_machine, "poweroff", "NAME…", 2, VERB_ANY, 0,
VERB(verb_poweroff_machine, "poweroff", "NAME…\0", 2, VERB_ANY, 0,
"Power off one or more machines");
VERB(verb_poweroff_machine, "stop", "NAME…", 2, VERB_ANY, 0,
VERB(verb_poweroff_machine, "stop", "NAME…\0", 2, VERB_ANY, 0,
/* help= */ NULL); /* Convenience alias */
static int verb_poweroff_machine(int argc, char *argv[], uintptr_t data, void *userdata) {
sd_bus *bus = ASSERT_PTR(userdata);
@@ -1296,9 +1296,9 @@ static int verb_poweroff_machine(int argc, char *argv[], uintptr_t data, void *u
return 0;
}
VERB(verb_reboot_machine, "reboot", "NAME…", 2, VERB_ANY, 0,
VERB(verb_reboot_machine, "reboot", "NAME…\0", 2, VERB_ANY, 0,
"Reboot one or more machines");
VERB(verb_reboot_machine, "restart", "NAME…", 2, VERB_ANY, 0,
VERB(verb_reboot_machine, "restart", "NAME…\0", 2, VERB_ANY, 0,
/* help= */ NULL); /* Convenience alias */
static int verb_reboot_machine(int argc, char *argv[], uintptr_t data, void *userdata) {
sd_bus *bus = ASSERT_PTR(userdata);
@@ -1338,19 +1338,19 @@ static int verb_vm_control(int argc, char *argv[], const char *method) {
return 0;
}
VERB(verb_pause, "pause", "NAME…", 2, VERB_ANY, 0,
VERB(verb_pause, "pause", "NAME…\0", 2, VERB_ANY, 0,
"Pause one or more machines");
static int verb_pause(int argc, char *argv[], uintptr_t _data, void *userdata) {
return verb_vm_control(argc, argv, "io.systemd.MachineInstance.Pause");
}
VERB(verb_resume, "resume", "NAME…", 2, VERB_ANY, 0,
VERB(verb_resume, "resume", "NAME…\0", 2, VERB_ANY, 0,
"Resume one or more paused machines");
static int verb_resume(int argc, char *argv[], uintptr_t _data, void *userdata) {
return verb_vm_control(argc, argv, "io.systemd.MachineInstance.Resume");
}
VERB(verb_terminate_machine, "terminate", "NAME…", 2, VERB_ANY, 0,
VERB(verb_terminate_machine, "terminate", "NAME…\0", 2, VERB_ANY, 0,
"Terminate one or more machines");
static int verb_terminate_machine(int argc, char *argv[], uintptr_t _data, void *userdata) {
sd_bus *bus = ASSERT_PTR(userdata);
@@ -1376,7 +1376,7 @@ static int verb_terminate_machine(int argc, char *argv[], uintptr_t _data, void
return 0;
}
VERB(verb_kill_machine, "kill", "NAME…", 2, VERB_ANY, 0,
VERB(verb_kill_machine, "kill", "NAME…\0", 2, VERB_ANY, 0,
"Send signal to processes of a machine");
static int verb_kill_machine(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -1410,9 +1410,9 @@ static const char* select_copy_method(bool copy_from, bool force) {
return copy_from ? "CopyFromMachine" : "CopyToMachine";
}
VERB(verb_copy_files, "copy-to", "NAME PATH [PATH]", 3, 4, 0,
VERB(verb_copy_files, "copy-to", "NAME PATH [PATH]\0", 3, 4, 0,
"Copy files from the host to a container");
VERB(verb_copy_files, "copy-from", "NAME PATH [PATH]", 3, 4, 0,
VERB(verb_copy_files, "copy-from", "NAME PATH [PATH]\0", 3, 4, 0,
"Copy files from a container to the host");
static int verb_copy_files(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -1469,7 +1469,7 @@ static int verb_copy_files(int argc, char *argv[], uintptr_t _data, void *userda
return 0;
}
VERB(verb_bind_mount, "bind", "NAME PATH [PATH]", 3, 4, 0,
VERB(verb_bind_mount, "bind", "NAME PATH [PATH]\0", 3, 4, 0,
"Bind mount a path from the host into a container");
static int verb_bind_mount(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -1808,9 +1808,9 @@ static int show_image_properties(sd_bus *bus, const char *path, bool *new_line)
return r;
}
VERB(verb_show_image, "image-status", "[NAME…]", VERB_ANY, VERB_ANY, 0,
VERB(verb_show_image, "image-status", "[NAME…]\0", VERB_ANY, VERB_ANY, 0,
"Show image details");
VERB(verb_show_image, "show-image", "[NAME…]", VERB_ANY, VERB_ANY, 0,
VERB(verb_show_image, "show-image", "[NAME…]\0", VERB_ANY, VERB_ANY, 0,
"Show properties of image");
static int verb_show_image(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -1896,7 +1896,7 @@ static int get_settings_path(const char *name, char **ret_path) {
return -ENOENT;
}
VERB(verb_edit_settings, "edit", "NAME|FILE…", 2, VERB_ANY, 0,
VERB(verb_edit_settings, "edit", "NAME|FILE…\0", 2, VERB_ANY, 0,
"Edit settings of one or more VMs/containers");
static int verb_edit_settings(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(edit_file_context_done) EditFileContext context = {};
@@ -1968,7 +1968,7 @@ static int verb_edit_settings(int argc, char *argv[], uintptr_t _data, void *use
return do_edit_files_and_install(&context);
}
VERB(verb_cat_settings, "cat", "NAME|FILE…", 2, VERB_ANY, 0,
VERB(verb_cat_settings, "cat", "NAME|FILE…\0", 2, VERB_ANY, 0,
"Show settings of one or more VMs/containers");
static int verb_cat_settings(int argc, char *argv[], uintptr_t _data, void *userdata) {
int r = 0;
@@ -2021,7 +2021,7 @@ static int verb_cat_settings(int argc, char *argv[], uintptr_t _data, void *user
return r;
}
VERB(verb_clone_image, "clone", "NAME NAME", 3, 3, 0,
VERB(verb_clone_image, "clone", "NAME NAME\0", 3, 3, 0,
"Clone an image");
static int verb_clone_image(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -2047,7 +2047,7 @@ static int verb_clone_image(int argc, char *argv[], uintptr_t _data, void *userd
return 0;
}
VERB(verb_rename_image, "rename", "NAME NAME", 3, 3, 0,
VERB(verb_rename_image, "rename", "NAME NAME\0", 3, 3, 0,
"Rename an image");
static int verb_rename_image(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -2069,7 +2069,7 @@ static int verb_rename_image(int argc, char *argv[], uintptr_t _data, void *user
return 0;
}
VERB(verb_read_only_image, "read-only", "NAME [BOOL]", 2, 3, 0,
VERB(verb_read_only_image, "read-only", "NAME [BOOL]\0", 2, 3, 0,
"Mark or unmark image read-only");
static int verb_read_only_image(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -2093,7 +2093,7 @@ static int verb_read_only_image(int argc, char *argv[], uintptr_t _data, void *u
return 0;
}
VERB(verb_remove_image, "remove", "NAME…", 2, VERB_ANY, 0,
VERB(verb_remove_image, "remove", "NAME…\0", 2, VERB_ANY, 0,
"Remove an image");
static int verb_remove_image(int argc, char *argv[], uintptr_t _data, void *userdata) {
sd_bus *bus = ASSERT_PTR(userdata);
@@ -2122,7 +2122,7 @@ static int verb_remove_image(int argc, char *argv[], uintptr_t _data, void *user
return 0;
}
VERB(verb_set_limit, "set-limit", "[NAME] BYTES", 2, 3, 0,
VERB(verb_set_limit, "set-limit", "[NAME] BYTES\0", 2, 3, 0,
"Set image or pool size limit (disk quota)");
static int verb_set_limit(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -2210,7 +2210,7 @@ static int verb_clean_images(int argc, char *argv[], uintptr_t _data, void *user
return 0;
}
VERB(verb_bind_volume, "bind-volume", "MACHINE PROVIDER:VOLUME[:…]", 3, 3, 0,
VERB(verb_bind_volume, "bind-volume", "MACHINE PROVIDER:VOLUME[:…]\0", 3, 3, 0,
"Attach a volume to a running machine");
static int verb_bind_volume(int argc, char *argv[], uintptr_t _data, void *userdata) {
int r;
@@ -2282,7 +2282,7 @@ static int verb_bind_volume(int argc, char *argv[], uintptr_t _data, void *userd
return 0;
}
VERB(verb_unbind_volume, "unbind-volume", "MACHINE PROVIDER:VOLUME", 3, 3, 0,
VERB(verb_unbind_volume, "unbind-volume", "MACHINE PROVIDER:VOLUME\0", 3, 3, 0,
"Detach a volume from a running machine");
static int verb_unbind_volume(int argc, char *argv[], uintptr_t _data, void *userdata) {
int r;
+15 -15
View File
@@ -45,39 +45,39 @@ COMMAND(
.pager_flags = &arg_pager_flags,
);
VERB_SCOPE(, verb_list_links, "list", "[PATTERN...]", VERB_ANY, VERB_ANY, VERB_DEFAULT|VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_list_links, "list", "[PATTERN...]\0", VERB_ANY, VERB_ANY, VERB_DEFAULT|VERB_ONLINE_ONLY,
"List links");
VERB_SCOPE(, verb_link_status, "status", "[PATTERN...]", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_link_status, "status", "[PATTERN...]\0", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
"Show link status");
VERB_SCOPE(, verb_dhcp_lease, "dhcp-lease", "INTERFACE [CODE[:FORMAT]...]", 2, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_dhcp_lease, "dhcp-lease", "INTERFACE [CODE[:FORMAT]...]\0", 2, VERB_ANY, VERB_ONLINE_ONLY,
"Show DHCP lease");
VERB_SCOPE(, verb_link_lldp_status, "lldp", "[PATTERN...]", VERB_ANY, VERB_ANY, 0,
VERB_SCOPE(, verb_link_lldp_status, "lldp", "[PATTERN...]\0", VERB_ANY, VERB_ANY, 0,
"Show LLDP neighbors");
VERB_SCOPE(, verb_list_address_labels, "label", NULL, 1, 1, 0,
"Show current address label entries in the kernel");
VERB_SCOPE(, verb_link_delete, "delete", "DEVICES...", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_link_delete, "delete", "DEVICES...\0", 2, VERB_ANY, 0,
"Delete virtual netdevs");
VERB_SCOPE(, verb_link_varlink_simple_method, "up", "DEVICES...", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_link_varlink_simple_method, "up", "DEVICES...\0", 2, VERB_ANY, 0,
"Bring devices up");
VERB_SCOPE(, verb_link_varlink_simple_method, "down", "DEVICES...", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_link_varlink_simple_method, "down", "DEVICES...\0", 2, VERB_ANY, 0,
"Bring devices down");
VERB_SCOPE(, verb_link_varlink_simple_method, "renew", "DEVICES...", 2, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_link_varlink_simple_method, "renew", "DEVICES...\0", 2, VERB_ANY, VERB_ONLINE_ONLY,
"Renew dynamic configurations");
VERB_SCOPE(, verb_link_varlink_simple_method, "forcerenew", "DEVICES...", 2, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_link_varlink_simple_method, "forcerenew", "DEVICES...\0", 2, VERB_ANY, VERB_ONLINE_ONLY,
"Trigger DHCP reconfiguration of all connected clients");
VERB_SCOPE(, verb_link_varlink_simple_method, "reconfigure", "DEVICES...", 2, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_link_varlink_simple_method, "reconfigure", "DEVICES...\0", 2, VERB_ANY, VERB_ONLINE_ONLY,
"Reconfigure interfaces");
VERB_SCOPE(, verb_reload, "reload", NULL, 1, 1, VERB_ONLINE_ONLY,
"Reload .network and .netdev files");
VERB_SCOPE(, verb_edit, "edit", "FILES|DEVICES...", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_edit, "edit", "FILES|DEVICES...\0", 2, VERB_ANY, 0,
"Edit network configuration files");
VERB_SCOPE(, verb_cat, "cat", "[FILES|DEVICES...]", 1, VERB_ANY, 0,
VERB_SCOPE(, verb_cat, "cat", "[FILES|DEVICES...]\0", 1, VERB_ANY, 0,
"Show network configuration files");
VERB_SCOPE(, verb_mask, "mask", "FILES...", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_mask, "mask", "FILES...\0", 2, VERB_ANY, 0,
"Mask network configuration files");
VERB_SCOPE(, verb_unmask, "unmask", "FILES...", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_unmask, "unmask", "FILES...\0", 2, VERB_ANY, 0,
"Unmask network configuration files");
VERB_SCOPE(, verb_persistent_storage, "persistent-storage", "BOOL", 2, 2, 0,
VERB_SCOPE(, verb_persistent_storage, "persistent-storage", "BOOL\0", 2, 2, 0,
"Notify systemd-networkd if persistent storage is ready");
VERB_COMMON_HELP_AUTO_HIDDEN();
+8 -8
View File
@@ -4733,7 +4733,7 @@ static int verb_unlock_secureboot_authority(int argc, char *argv[], uintptr_t _d
return unlink_pcrlock(PCRLOCK_SECUREBOOT_AUTHORITY_PATH);
}
VERB(verb_lock_gpt, "lock-gpt", "[DISK]", VERB_ANY, 2, 0,
VERB(verb_lock_gpt, "lock-gpt", "[DISK]\0", VERB_ANY, 2, 0,
"Generate a .pcrlock file from GPT header");
static int verb_lock_gpt(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_json_variant_unrefp) sd_json_variant *array = NULL, *record = NULL;
@@ -4912,7 +4912,7 @@ static int acquire_pe_fd(const char *path) {
return acquire_stdin_pe_fd();
}
VERB(verb_lock_pe, "lock-pe", "[BINARY]", VERB_ANY, 2, 0,
VERB(verb_lock_pe, "lock-pe", "[BINARY]\0", VERB_ANY, 2, 0,
"Generate a .pcrlock file from PE binary");
static int verb_lock_pe(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_json_variant_unrefp) sd_json_variant *array = NULL;
@@ -4982,7 +4982,7 @@ static void section_hashes_array_done(SectionHashArray *array) {
free((*array)[i]);
}
VERB(verb_lock_uki, "lock-uki", "[UKI]", VERB_ANY, 2, 0,
VERB(verb_lock_uki, "lock-uki", "[UKI]\0", VERB_ANY, 2, 0,
"Generate a .pcrlock file from UKI PE binary");
static int verb_lock_uki(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_json_variant_unrefp) sd_json_variant *array = NULL, *pe_digests = NULL;
@@ -5136,7 +5136,7 @@ static int pcrlock_file_system_path(const char *normalized_path, char **ret) {
return 0;
}
VERB(verb_lock_file_system, "lock-file-system", "[PATH]", VERB_ANY, 2, 0,
VERB(verb_lock_file_system, "lock-file-system", "[PATH]\0", VERB_ANY, 2, 0,
"Generate a .pcrlock file from current root fs + /var/");
static int verb_lock_file_system(int argc, char *argv[], uintptr_t _data, void *userdata) {
const char* paths[3] = {};
@@ -5191,7 +5191,7 @@ static int verb_lock_file_system(int argc, char *argv[], uintptr_t _data, void *
return 0;
}
VERB(verb_unlock_file_system, "unlock-file-system", "[PATH]", VERB_ANY, 2, 0,
VERB(verb_unlock_file_system, "unlock-file-system", "[PATH]\0", VERB_ANY, 2, 0,
"Remove .pcrlock file for root fs + /var/");
static int verb_unlock_file_system(int argc, char *argv[], uintptr_t _data, void *userdata) {
const char* paths[3] = {};
@@ -5223,7 +5223,7 @@ static int verb_unlock_file_system(int argc, char *argv[], uintptr_t _data, void
return 0;
}
VERB(verb_lock_kernel_cmdline, "lock-kernel-cmdline", "[FILE]", VERB_ANY, 2, 0,
VERB(verb_lock_kernel_cmdline, "lock-kernel-cmdline", "[FILE]\0", VERB_ANY, 2, 0,
"Generate a .pcrlock file from kernel command line");
static int verb_lock_kernel_cmdline(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_json_variant_unrefp) sd_json_variant *record = NULL, *array = NULL;
@@ -5268,7 +5268,7 @@ static int verb_unlock_kernel_cmdline(int argc, char *argv[], uintptr_t _data, v
return unlink_pcrlock(PCRLOCK_KERNEL_CMDLINE_PATH);
}
VERB(verb_lock_kernel_initrd, "lock-kernel-initrd", "FILE", VERB_ANY, 2, 0,
VERB(verb_lock_kernel_initrd, "lock-kernel-initrd", "FILE\0", VERB_ANY, 2, 0,
"Generate a .pcrlock file from an initrd file");
static int verb_lock_kernel_initrd(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_json_variant_unrefp) sd_json_variant *records = NULL;
@@ -5299,7 +5299,7 @@ static int verb_unlock_kernel_initrd(int argc, char *argv[], uintptr_t _data, vo
return unlink_pcrlock(PCRLOCK_KERNEL_INITRD_PATH);
}
VERB(verb_lock_raw, "lock-raw", "[FILE]", VERB_ANY, 2, 0,
VERB(verb_lock_raw, "lock-raw", "[FILE]\0", VERB_ANY, 2, 0,
"Generate a .pcrlock file from raw data");
static int verb_lock_raw(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_json_variant_unrefp) sd_json_variant *records = NULL;
+8 -8
View File
@@ -474,7 +474,7 @@ static bool image_metadata_error_is_no_match(const sd_bus_error *error) {
return sd_bus_error_has_name(error, BUS_ERROR_NO_MATCHING_UNIT_FILES);
}
VERB(verb_inspect_image, "inspect", "NAME|PATH [PREFIX…]", 2, VERB_ANY, 0,
VERB(verb_inspect_image, "inspect", "NAME|PATH [PREFIX…]\0", 2, VERB_ANY, 0,
"Show details of specified portable service image");
static int verb_inspect_image(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
@@ -1283,13 +1283,13 @@ static int attach_reattach_image(int argc, char *argv[], const char *method) {
return 0;
}
VERB(verb_attach_image, "attach", "NAME|PATH [PREFIX…]", 2, VERB_ANY, 0,
VERB(verb_attach_image, "attach", "NAME|PATH [PREFIX…]\0", 2, VERB_ANY, 0,
"Attach the specified portable service image");
static int verb_attach_image(int argc, char *argv[], uintptr_t _data, void *userdata) {
return attach_reattach_image(argc, argv, strv_isempty(arg_extension_images) && !arg_force ? "AttachImage" : "AttachImageWithExtensions");
}
VERB(verb_detach_image, "detach", "NAME|PATH [PREFIX…]", 2, VERB_ANY, 0,
VERB(verb_detach_image, "detach", "NAME|PATH [PREFIX…]\0", 2, VERB_ANY, 0,
"Detach the specified portable service image");
static int verb_detach_image(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL, *reply = NULL;
@@ -1345,13 +1345,13 @@ static int verb_detach_image(int argc, char *argv[], uintptr_t _data, void *user
return 0;
}
VERB(verb_reattach_image, "reattach", "NAME|PATH [PREFIX…]", 2, VERB_ANY, 0,
VERB(verb_reattach_image, "reattach", "NAME|PATH [PREFIX…]\0", 2, VERB_ANY, 0,
"Reattach the specified portable service image");
static int verb_reattach_image(int argc, char *argv[], uintptr_t _data, void *userdata) {
return attach_reattach_image(argc, argv, strv_isempty(arg_extension_images) && !arg_force ? "ReattachImage" : "ReattachImageWithExtensions");
}
VERB(verb_is_image_attached, "is-attached", "NAME|PATH", 2, 2, 0,
VERB(verb_is_image_attached, "is-attached", "NAME|PATH\0", 2, 2, 0,
"Query if portable service image is attached");
static int verb_is_image_attached(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL, *reply = NULL;
@@ -1403,7 +1403,7 @@ static int verb_is_image_attached(int argc, char *argv[], uintptr_t _data, void
return streq(state, "detached");
}
VERB(verb_read_only_image, "read-only", "NAME|PATH [BOOL]", 2, 3, 0,
VERB(verb_read_only_image, "read-only", "NAME|PATH [BOOL]\0", 2, 3, 0,
"Mark or unmark portable service image read-only");
static int verb_read_only_image(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -1434,7 +1434,7 @@ static int verb_read_only_image(int argc, char *argv[], uintptr_t _data, void *u
return 0;
}
VERB(verb_remove_image, "remove", "NAME|PATH…", 2, VERB_ANY, 0,
VERB(verb_remove_image, "remove", "NAME|PATH…\0", 2, VERB_ANY, 0,
"Remove a portable service image");
static int verb_remove_image(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -1472,7 +1472,7 @@ static int verb_remove_image(int argc, char *argv[], uintptr_t _data, void *user
return 0;
}
VERB(verb_set_limit, "set-limit", "[NAME|PATH] LIMIT", 2, 3, 0,
VERB(verb_set_limit, "set-limit", "[NAME|PATH] LIMIT\0", 2, 3, 0,
"Set image or pool size limit (disk quota)");
static int verb_set_limit(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
+4 -4
View File
@@ -650,13 +650,13 @@ static int context_collect_metrics(Context *context) {
return 1;
}
VERB_FULL(verb_metrics, "metrics", "[MATCH…]", VERB_ANY, VERB_ANY, 0, ACTION_LIST_METRICS,
VERB_FULL(verb_metrics, "metrics", "[MATCH…]\0", VERB_ANY, VERB_ANY, 0, ACTION_LIST_METRICS,
"Acquire list of metrics and their values");
VERB_FULL(verb_metrics, "describe", "[MATCH…]", VERB_ANY, VERB_ANY, 0, ACTION_DESCRIBE_METRICS,
VERB_FULL(verb_metrics, "describe", "[MATCH…]\0", VERB_ANY, VERB_ANY, 0, ACTION_DESCRIBE_METRICS,
"Describe available metrics");
VERB_FULL(verb_metrics, "generate", "[MATCH…]", VERB_ANY, VERB_ANY, 0, ACTION_GENERATE,
VERB_FULL(verb_metrics, "generate", "[MATCH…]\0", VERB_ANY, VERB_ANY, 0, ACTION_GENERATE,
"Build a report with metrics");
VERB_FULL(verb_metrics, "upload", "[MATCH…]", VERB_ANY, VERB_ANY, 0, ACTION_UPLOAD,
VERB_FULL(verb_metrics, "upload", "[MATCH…]\0", VERB_ANY, VERB_ANY, 0, ACTION_UPLOAD,
"Upload a report with metrics");
static int verb_metrics(int argc, char *argv[], uintptr_t data, void *userdata) {
Action action = data;
+15 -15
View File
@@ -881,7 +881,7 @@ invalid:
"Invalid DNS URI: %s", name);
}
VERB(verb_query, "query", "HOSTNAME|ADDRESS…", 2, VERB_ANY, 0,
VERB(verb_query, "query", "HOSTNAME|ADDRESS…\0", 2, VERB_ANY, 0,
"Resolve domain names, IPv4 and IPv6 addresses");
static int verb_query(int argc, char *argv[], uintptr_t _data, void *userdata) {
int ret = 0, r;
@@ -1025,7 +1025,7 @@ static int resolve_service(const char *name, const char *type, const char *domai
return 0;
}
VERB(verb_service, "service", "[[NAME] TYPE] DOMAIN", 2, 4, 0,
VERB(verb_service, "service", "[[NAME] TYPE] DOMAIN\0", 2, 4, 0,
"Resolve service (SRV)");
static int verb_service(int argc, char *argv[], uintptr_t _data, void *userdata) {
uint64_t flags = arg_flags;
@@ -1104,7 +1104,7 @@ static int resolve_openpgp(const char *address) {
}
#endif
VERB(verb_openpgp, "openpgp", "EMAIL@DOMAIN…", 2, VERB_ANY, 0,
VERB(verb_openpgp, "openpgp", "EMAIL@DOMAIN…\0", 2, VERB_ANY, 0,
"Query OpenPGP public key");
static int verb_openpgp(int argc, char *argv[], uintptr_t _data, void *userdata) {
#if HAVE_OPENSSL
@@ -1157,7 +1157,7 @@ static bool service_family_is_valid(const char *s) {
return STR_IN_SET(s, "tcp", "udp", "sctp");
}
VERB(verb_tlsa, "tlsa", "DOMAIN[:PORT]…", 2, VERB_ANY, 0,
VERB(verb_tlsa, "tlsa", "DOMAIN[:PORT]…\0", 2, VERB_ANY, 0,
"Query TLS public key");
static int verb_tlsa(int argc, char *argv[], uintptr_t _data, void *userdata) {
const char *family = "tcp";
@@ -1770,7 +1770,7 @@ static int status_ifindex(int ifindex, StatusMode mode) {
return status_full(mode, STRV_MAKE(ifname));
}
VERB(verb_status, "status", "[LINK…]", VERB_ANY, VERB_ANY, VERB_DEFAULT,
VERB(verb_status, "status", "[LINK…]\0", VERB_ANY, VERB_ANY, VERB_DEFAULT,
"Show link and server status");
static int verb_status(int argc, char *argv[], uintptr_t _data, void *userdata) {
return status_full(STATUS_ALL, strv_skip(argv, 1));
@@ -2658,7 +2658,7 @@ static int verb_show_server_state(int argc, char *argv[], uintptr_t _data, void
return sd_json_variant_dump(d, arg_json_format_flags, NULL, NULL);
}
VERB(verb_dns, "dns", "[LINK [SERVER…]]", VERB_ANY, VERB_ANY, 0,
VERB(verb_dns, "dns", "[LINK [SERVER…]]\0", VERB_ANY, VERB_ANY, 0,
"Get/set per-interface DNS server address");
static int verb_dns(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -2745,7 +2745,7 @@ static int call_domain(sd_bus *bus, char **domain, const BusLocator *locator, sd
return sd_bus_call(bus, req, 0, error, NULL);
}
VERB(verb_domain, "domain", "[LINK [DOMAIN…]]", VERB_ANY, VERB_ANY, 0,
VERB(verb_domain, "domain", "[LINK [DOMAIN…]]\0", VERB_ANY, VERB_ANY, 0,
"Get/set per-interface search domain");
static int verb_domain(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -2786,7 +2786,7 @@ static int verb_domain(int argc, char *argv[], uintptr_t _data, void *userdata)
return 0;
}
VERB(verb_default_route, "default-route", "[LINK [BOOL]]", VERB_ANY, 3, 0,
VERB(verb_default_route, "default-route", "[LINK [BOOL]]\0", VERB_ANY, 3, 0,
"Get/set per-interface default route flag");
static int verb_default_route(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -2832,7 +2832,7 @@ static int verb_default_route(int argc, char *argv[], uintptr_t _data, void *use
return 0;
}
VERB(verb_llmnr, "llmnr", "[LINK [MODE]]", VERB_ANY, 3, 0,
VERB(verb_llmnr, "llmnr", "[LINK [MODE]]\0", VERB_ANY, 3, 0,
"Get/set per-interface LLMNR mode");
static int verb_llmnr(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -2892,7 +2892,7 @@ static int verb_llmnr(int argc, char *argv[], uintptr_t _data, void *userdata) {
return 0;
}
VERB(verb_mdns, "mdns", "[LINK [MODE]]", VERB_ANY, 3, 0,
VERB(verb_mdns, "mdns", "[LINK [MODE]]\0", VERB_ANY, 3, 0,
"Get/set per-interface MulticastDNS mode");
static int verb_mdns(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -2958,7 +2958,7 @@ static int verb_mdns(int argc, char *argv[], uintptr_t _data, void *userdata) {
return 0;
}
VERB(verb_dns_over_tls, "dnsovertls", "[LINK [MODE]]", VERB_ANY, 3, 0,
VERB(verb_dns_over_tls, "dnsovertls", "[LINK [MODE]]\0", VERB_ANY, 3, 0,
"Get/set per-interface DNS-over-TLS mode");
static int verb_dns_over_tls(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -3006,7 +3006,7 @@ static int verb_dns_over_tls(int argc, char *argv[], uintptr_t _data, void *user
return 0;
}
VERB(verb_dnssec, "dnssec", "[LINK [MODE]]", VERB_ANY, 3, 0,
VERB(verb_dnssec, "dnssec", "[LINK [MODE]]\0", VERB_ANY, 3, 0,
"Get/set per-interface DNSSEC mode");
static int verb_dnssec(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -3069,7 +3069,7 @@ static int call_nta(sd_bus *bus, char **nta, const BusLocator *locator, sd_bus_
return sd_bus_call(bus, req, 0, error, NULL);
}
VERB(verb_nta, "nta", "[LINK [DOMAIN…]]", VERB_ANY, VERB_ANY, 0,
VERB(verb_nta, "nta", "[LINK [DOMAIN…]]\0", VERB_ANY, VERB_ANY, 0,
"Get/set per-interface DNSSEC NTA");
static int verb_nta(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -3129,7 +3129,7 @@ static int verb_nta(int argc, char *argv[], uintptr_t _data, void *userdata) {
return 0;
}
VERB(verb_revert_link, "revert", "LINK", VERB_ANY, 2, 0,
VERB(verb_revert_link, "revert", "LINK\0", VERB_ANY, 2, 0,
"Revert per-interface configuration");
static int verb_revert_link(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@@ -3168,7 +3168,7 @@ static int verb_revert_link(int argc, char *argv[], uintptr_t _data, void *userd
return 0;
}
VERB(verb_log_level, "log-level", "[LEVEL]", VERB_ANY, 2, 0,
VERB(verb_log_level, "log-level", "[LEVEL]\0", VERB_ANY, 2, 0,
"Get/set logging threshold for systemd-resolved");
static int verb_log_level(int argc, char *argv[], uintptr_t _data, void *userdata) {
int r;
+1 -1
View File
@@ -365,7 +365,7 @@ static int pkcs7_add_digest_attribute(PKCS7 *p7, BIO *data, PKCS7_SIGNER_INFO *s
return 0;
}
VERB(verb_sign, "sign", "EXEFILE", 2, 2, 0,
VERB(verb_sign, "sign", "EXEFILE\0", 2, 2, 0,
"Sign the given binary for EFI Secure Boot");
static int verb_sign(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(openssl_ask_password_ui_freep) OpenSSLAskPasswordUI *ui = NULL;
+40 -26
View File
@@ -176,40 +176,54 @@ static int verb_add_help_one(Table *table, const Verb *verb) {
assert(verb);
bool is_default = FLAGS_SET(verb->flags, VERB_DEFAULT);
_cleanup_free_ char *cell = NULL;
int r;
/* We indent the option string by two spaces. We could set the minimum cell width and
* right-align for a similar result, but that'd be more work. This is only used for
* display. */
_cleanup_free_ char *s = strjoin(" ",
is_default ? "[" : "",
verb->verb,
verb->argspec ? " " : "",
strempty(verb->argspec),
is_default ? "]" : "");
if (!s)
return log_oom();
/* The synopsis cell contains one line per entry in the argspec nulstr. An unset argspec is
* equivalent to a single empty specification. */
for (const char *spec = empty_to_null(verb->argspec);;) {
/* We indent the option string by two spaces. We could set the minimum cell width and
* right-align for a similar result, but that'd be more work. This is only used for
* display. */
_cleanup_free_ char *s = strjoin(" ",
is_default ? "[" : "",
verb->verb,
spec ? " " : "",
strempty(spec),
is_default ? "]" : "");
if (!s)
return log_oom();
const char *ss = NULL;
if (columns() < VERB_SYNOPSIS_WIDTH_SANE * 4) {
/* If the synopsis is very wide, try to split it up. But do this only if the terminal
* is not very wide. If it _is_ wide, the broken up synopsis would look silly. */
const char *p = find_point_to_break(s, VERB_SYNOPSIS_WIDTH_SANE), *p2 = NULL;
if (p) {
const char *s1 = strndupa_safe(s, p - s), *s2 = NULL;
const char *ss = NULL;
if (columns() < VERB_SYNOPSIS_WIDTH_SANE * 4) {
/* If the synopsis is very wide, try to split it up. But do this only if the terminal
* is not very wide. If it _is_ wide, the broken up synopsis would look silly. */
const char *p = find_point_to_break(s, VERB_SYNOPSIS_WIDTH_SANE), *p2 = NULL;
if (p) {
const char *s1 = strndupa_safe(s, p - s), *s2 = NULL;
p2 = find_point_to_break(p, VERB_SYNOPSIS_WIDTH_SANE - 4); /* we indent by two spaces more */
if (p2)
s2 = strndupa_safe(p, p2 - p);
p2 = find_point_to_break(p, VERB_SYNOPSIS_WIDTH_SANE - 4); /* we indent by two spaces more */
if (p2)
s2 = strndupa_safe(p, p2 - p);
if (s2)
ss = strjoina(s1, "\n ", s2, "\n ", p2);
else
ss = strjoina(s1, "\n ", p);
if (s2)
ss = strjoina(s1, "\n ", s2, "\n ", p2);
else
ss = strjoina(s1, "\n ", p);
}
}
if (!strextend_with_separator(&cell, "\n", ss ?: s))
return log_oom();
if (!spec)
break;
spec += strlen(spec) + 1; /* Advance to the next entry in the nulstr */
if (isempty(spec))
break;
}
r = table_add_cell(table, NULL, TABLE_STRING, ss ?: s);
r = table_add_cell(table, NULL, TABLE_STRING, cell);
if (r < 0)
return table_log_add_error(r);
+2 -2
View File
@@ -18,7 +18,7 @@ typedef enum CommandFlags {
typedef struct CommandDescription {
const char *names; /* nulstr with the main command name and potentially aliases */
const char *abstract; /* concrete abstract */
const char *argspec; /* optional specification of positional args in synopsis */
const char *argspec; /* optional nulstr with specifications of positional args */
const char *footer; /* optional footer to print right above man page links */
const char *man_pages; /* nulstr with man page names */
const char *option_namespace; /* optional option namespace for this command */
@@ -41,7 +41,7 @@ typedef struct _alignptr_ Verb {
VerbFlags flags;
int (* const dispatch)(int argc, char *argv[], uintptr_t data, void *userdata);
uintptr_t data;
const char *argspec;
const char *argspec; /* optional nulstr with specifications of positional args */
const char *help;
const char *option_namespace; /* optional namespace with the verb's own options */
} Verb;
+2 -2
View File
@@ -140,7 +140,7 @@ static int on_list_reply(
return 0;
}
VERB(verb_list_volumes, "volumes", "GLOB", /* min_args= */ VERB_ANY, /* max_args= */ 2, VERB_DEFAULT, "List storage volumes");
VERB(verb_list_volumes, "volumes", "GLOB\0", /* min_args= */ VERB_ANY, /* max_args= */ 2, VERB_DEFAULT, "List storage volumes");
static int verb_list_volumes(int argc, char *argv[], uintptr_t data, void *userdata) {
int r;
@@ -245,7 +245,7 @@ static int on_list_templates_reply(
return 0;
}
VERB(verb_templates, "templates", "GLOB", /* min_args= */ VERB_ANY, /* max_args= */ 2, /* flags= */ 0, "List storage volume templates");
VERB(verb_templates, "templates", "GLOB\0", /* min_args= */ VERB_ANY, /* max_args= */ 2, /* flags= */ 0, "List storage volume templates");
static int verb_templates(int argc, char *argv[], uintptr_t data, void *userdata) {
int r;
+56 -56
View File
@@ -911,128 +911,128 @@ int systemctl_dispatch_parse_argv(int argc, char *argv[], int log_level_shift, c
VERB_GROUP("Unit Commands");
VERB_SCOPE(, verb_list_units, "list-units", "[PATTERN…]", VERB_ANY, VERB_ANY, VERB_DEFAULT|VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_list_units, "list-units", "[PATTERN…]\0", VERB_ANY, VERB_ANY, VERB_DEFAULT|VERB_ONLINE_ONLY,
"List units currently in memory");
VERB_SCOPE(, verb_list_automounts, "list-automounts", "[PATTERN…]", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_list_automounts, "list-automounts", "[PATTERN…]\0", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
"List automount units currently in memory, ordered by path");
VERB_SCOPE(, verb_list_paths, "list-paths", "[PATTERN…]", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_list_paths, "list-paths", "[PATTERN…]\0", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
"List path units currently in memory, ordered by path");
VERB_SCOPE(, verb_list_sockets, "list-sockets", "[PATTERN…]", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_list_sockets, "list-sockets", "[PATTERN…]\0", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
"List socket units currently in memory, ordered by address");
VERB_SCOPE(, verb_list_timers, "list-timers", "[PATTERN…]", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_list_timers, "list-timers", "[PATTERN…]\0", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
"List timer units currently in memory, ordered by next elapse");
VERB_SCOPE(, verb_is_active, "is-active", "PATTERN…", 2, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_is_active, "is-active", "PATTERN…\0", 2, VERB_ANY, VERB_ONLINE_ONLY,
"Check whether units are active");
VERB_SCOPE(, verb_is_failed, "is-failed", "[PATTERN…]", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_is_failed, "is-failed", "[PATTERN…]\0", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
"Check whether units are failed or system is in degraded state");
VERB_SCOPE(, verb_show, "status", "[PATTERN…|PID…]", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_show, "status", "[PATTERN…|PID…]\0", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
"Show runtime status of one or more units");
VERB_SCOPE(, verb_show, "show", "[PATTERN…|JOB…]", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_show, "show", "[PATTERN…|JOB…]\0", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
"Show properties of one or more units/jobs or the manager");
VERB_SCOPE(, verb_cat, "cat", "PATTERN…", 2, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_cat, "cat", "PATTERN…\0", 2, VERB_ANY, VERB_ONLINE_ONLY,
"Show files and drop-ins of specified units");
VERB_SCOPE(, verb_show, "help", "PATTERN…|PID…", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_show, "help", "PATTERN…|PID…\0", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
"Show manual for one or more units");
VERB_SCOPE(, verb_list_dependencies, "list-dependencies", "[UNIT…]", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_list_dependencies, "list-dependencies", "[UNIT…]\0", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
"Recursively show units which are required or wanted by the units "
"or by which those units are required or wanted");
VERB_SCOPE(, verb_start, "start", "UNIT…", 2, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_start, "start", "UNIT…\0", 2, VERB_ANY, VERB_ONLINE_ONLY,
"Start (activate) one or more units");
VERB_SCOPE(, verb_start, "stop", "UNIT…", 2, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_start, "stop", "UNIT…\0", 2, VERB_ANY, VERB_ONLINE_ONLY,
"Stop (deactivate) one or more units");
VERB_SCOPE(, verb_start, "reload", "UNIT…", 2, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_start, "reload", "UNIT…\0", 2, VERB_ANY, VERB_ONLINE_ONLY,
"Reload one or more units");
VERB_SCOPE(, verb_start, "restart", "UNIT…", 2, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_start, "restart", "UNIT…\0", 2, VERB_ANY, VERB_ONLINE_ONLY,
"Start or restart one or more units");
VERB_SCOPE(, verb_start, "try-restart", "UNIT…", 2, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_start, "try-restart", "UNIT…\0", 2, VERB_ANY, VERB_ONLINE_ONLY,
"Restart one or more units if active");
VERB_SCOPE(, verb_start, "enqueue-marked", NULL, 1, 1, VERB_ONLINE_ONLY,
"Enqueue jobs for all marked units");
VERB_SCOPE(, verb_start, "reload-or-restart", "UNIT…", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_start, "reload-or-restart", "UNIT…\0", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
"Reload one or more units if possible, otherwise start or restart");
VERB_SCOPE(, verb_start, "try-reload-or-restart", "UNIT…", 2, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_start, "try-reload-or-restart", "UNIT…\0", 2, VERB_ANY, VERB_ONLINE_ONLY,
"If active, reload one or more units, if supported, otherwise restart");
VERB_SCOPE(, verb_start, "isolate", "UNIT", 2, 2, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_start, "isolate", "UNIT\0", 2, 2, VERB_ONLINE_ONLY,
"Start one unit and stop all others");
VERB_SCOPE(, verb_kill, "kill", "UNIT…", 2, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_kill, "kill", "UNIT…\0", 2, VERB_ANY, VERB_ONLINE_ONLY,
"Send signal to processes of a unit");
VERB_SCOPE(, verb_clean_or_freeze, "clean", "UNIT…", 2, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_clean_or_freeze, "clean", "UNIT…\0", 2, VERB_ANY, VERB_ONLINE_ONLY,
"Clean runtime, cache, state, logs or configuration of unit");
VERB_SCOPE(, verb_clean_or_freeze, "freeze", "PATTERN…", 2, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_clean_or_freeze, "freeze", "PATTERN…\0", 2, VERB_ANY, VERB_ONLINE_ONLY,
"Freeze execution of unit processes");
VERB_SCOPE(, verb_clean_or_freeze, "thaw", "PATTERN…", 2, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_clean_or_freeze, "thaw", "PATTERN…\0", 2, VERB_ANY, VERB_ONLINE_ONLY,
"Resume execution of a frozen unit");
VERB_SCOPE(, verb_set_property, "set-property", "UNIT PROPERTY=VALUE…", 3, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_set_property, "set-property", "UNIT PROPERTY=VALUE…\0", 3, VERB_ANY, VERB_ONLINE_ONLY,
"Sets one or more properties of a unit");
VERB_SCOPE(, verb_bind, "bind", "UNIT PATH [PATH]", 3, 4, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_bind, "bind", "UNIT PATH [PATH]\0", 3, 4, VERB_ONLINE_ONLY,
"Bind-mount a path from the host into a unit's namespace");
VERB_SCOPE(, verb_mount_image, "mount-image", "UNIT PATH [PATH [OPTS]]", 4, 5, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_mount_image, "mount-image", "UNIT PATH [PATH [OPTS]]\0", 4, 5, VERB_ONLINE_ONLY,
"Mount an image from the host into a unit's namespace");
VERB_SCOPE(, verb_service_log_setting, "service-log-level", "SERVICE [LEVEL]", 2, 3, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_service_log_setting, "service-log-level", "SERVICE [LEVEL]\0", 2, 3, VERB_ONLINE_ONLY,
"Get/set logging threshold for service");
VERB_SCOPE(, verb_service_log_setting, "service-log-target", "SERVICE [TARGET]", 2, 3, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_service_log_setting, "service-log-target", "SERVICE [TARGET]\0", 2, 3, VERB_ONLINE_ONLY,
"Get/set logging target for service");
VERB_SCOPE(, verb_reset_failed, "reset-failed", "[PATTERN…]", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_reset_failed, "reset-failed", "[PATTERN…]\0", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
"Reset failed state for all, one, or more units");
VERB_SCOPE(, verb_whoami, "whoami", "[PID…]", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_whoami, "whoami", "[PID…]\0", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
"Return unit caller or specified PIDs are part of");
VERB_GROUP("Unit File Commands");
VERB_SCOPE(, verb_list_unit_files, "list-unit-files", "[PATTERN…]", VERB_ANY, VERB_ANY, 0,
VERB_SCOPE(, verb_list_unit_files, "list-unit-files", "[PATTERN…]\0", VERB_ANY, VERB_ANY, 0,
"List installed unit files");
VERB_SCOPE(, verb_enable, "enable", "[UNIT…|PATH…]", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_enable, "enable", "[UNIT…|PATH…]\0", 2, VERB_ANY, 0,
"Enable one or more unit files");
VERB_SCOPE(, verb_enable, "disable", "UNIT…", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_enable, "disable", "UNIT…\0", 2, VERB_ANY, 0,
"Disable one or more unit files");
VERB_SCOPE(, verb_enable, "reenable", "UNIT…", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_enable, "reenable", "UNIT…\0", 2, VERB_ANY, 0,
"Reenable one or more unit files");
VERB_SCOPE(, verb_enable, "preset", "UNIT…", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_enable, "preset", "UNIT…\0", 2, VERB_ANY, 0,
"Enable/disable one or more unit files based on preset configuration");
VERB_SCOPE(, verb_preset_all, "preset-all", NULL, VERB_ANY, 1, 0,
"Enable/disable all unit files based on preset configuration");
VERB_SCOPE(, verb_is_enabled, "is-enabled", "UNIT…", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_is_enabled, "is-enabled", "UNIT…\0", 2, VERB_ANY, 0,
"Check whether unit files are enabled");
VERB_SCOPE(, verb_enable, "mask", "UNIT…", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_enable, "mask", "UNIT…\0", 2, VERB_ANY, 0,
"Mask one or more units");
VERB_SCOPE(, verb_enable, "unmask", "UNIT…", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_enable, "unmask", "UNIT…\0", 2, VERB_ANY, 0,
"Unmask one or more units");
VERB_SCOPE(, verb_enable, "link", "PATH…", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_enable, "link", "PATH…\0", 2, VERB_ANY, 0,
"Link one or more units files into the search path");
VERB_SCOPE(, verb_enable, "revert", "UNIT…", 2, VERB_ANY, 0,
VERB_SCOPE(, verb_enable, "revert", "UNIT…\0", 2, VERB_ANY, 0,
"Revert one or more unit files to vendor version");
VERB_SCOPE(, verb_add_dependency, "add-wants", "TARGET UNIT…", 3, VERB_ANY, 0,
VERB_SCOPE(, verb_add_dependency, "add-wants", "TARGET UNIT…\0", 3, VERB_ANY, 0,
"Add 'Wants' dependency for the target on specified one or more units");
VERB_SCOPE(, verb_add_dependency, "add-requires", "TARGET UNIT…", 3, VERB_ANY, 0,
VERB_SCOPE(, verb_add_dependency, "add-requires", "TARGET UNIT…\0", 3, VERB_ANY, 0,
"Add 'Requires' dependency for the target on specified one or more units");
VERB_SCOPE(, verb_edit, "edit", "UNIT…", 2, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_edit, "edit", "UNIT…\0", 2, VERB_ANY, VERB_ONLINE_ONLY,
"Edit one or more unit files");
VERB_SCOPE(, verb_get_default, "get-default", NULL, VERB_ANY, 1, 0,
"Get the name of the default target");
VERB_SCOPE(, verb_set_default, "set-default", "TARGET", 2, 2, 0,
VERB_SCOPE(, verb_set_default, "set-default", "TARGET\0", 2, 2, 0,
"Set the default target");
VERB_GROUP("Machine Commands");
VERB_SCOPE(, verb_list_machines, "list-machines", "[PATTERN…]", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_list_machines, "list-machines", "[PATTERN…]\0", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
"List local containers and host");
VERB_GROUP("Job Commands");
VERB_SCOPE(, verb_list_jobs, "list-jobs", "[PATTERN…]", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_list_jobs, "list-jobs", "[PATTERN…]\0", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
"List jobs");
VERB_SCOPE(, verb_cancel, "cancel", "[JOB…]", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_cancel, "cancel", "[JOB…]\0", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
"Cancel all, one, or more jobs");
VERB_GROUP("Environment Commands");
VERB_SCOPE(, verb_show_environment, "show-environment", NULL, VERB_ANY, 1, VERB_ONLINE_ONLY,
"Dump environment");
VERB_SCOPE(, verb_set_environment, "set-environment", "VARIABLE=VALUE…", 2, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_set_environment, "set-environment", "VARIABLE=VALUE…\0", 2, VERB_ANY, VERB_ONLINE_ONLY,
"Set one or more environment variables");
VERB_SCOPE(, verb_set_environment, "unset-environment", "VARIABLE…", 2, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_set_environment, "unset-environment", "VARIABLE…\0", 2, VERB_ANY, VERB_ONLINE_ONLY,
"Unset one or more environment variables");
VERB_SCOPE(, verb_import_environment, "import-environment", "VARIABLE…", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_import_environment, "import-environment", "VARIABLE…\0", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
"Import all or some environment variables");
VERB_GROUP("Manager State Commands");
@@ -1041,11 +1041,11 @@ VERB_SCOPE(, verb_daemon_reload, "daemon-reload", NULL, 1,
"Reload systemd manager configuration");
VERB_SCOPE(, verb_daemon_reload, "daemon-reexec", NULL, 1, 1, VERB_ONLINE_ONLY,
"Reexecute systemd manager");
VERB_SCOPE(, verb_log_setting, "log-level", "[LEVEL]", VERB_ANY, 2, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_log_setting, "log-level", "[LEVEL]\0", VERB_ANY, 2, VERB_ONLINE_ONLY,
"Get/set logging threshold for manager");
VERB_SCOPE(, verb_log_setting, "log-target", "[TARGET]", VERB_ANY, 2, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_log_setting, "log-target", "[TARGET]\0", VERB_ANY, 2, VERB_ONLINE_ONLY,
"Get/set logging target for manager");
VERB_SCOPE(, verb_service_watchdogs, "service-watchdogs", "[BOOL]", VERB_ANY, 2, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_service_watchdogs, "service-watchdogs", "[BOOL]\0", VERB_ANY, 2, VERB_ONLINE_ONLY,
"Get/set service watchdog state");
VERB_GROUP("System Commands");
@@ -1068,9 +1068,9 @@ VERB_SCOPE(, verb_start_system_special, "kexec", NULL, VERB_ANY,
"Shut down and reboot the system with kexec");
VERB_SCOPE(, verb_start_system_special, "soft-reboot", NULL, VERB_ANY, 1, VERB_ONLINE_ONLY,
"Shut down and reboot userspace");
VERB_SCOPE(, verb_start_special, "exit", "[EXIT_CODE]", VERB_ANY, 2, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_start_special, "exit", "[EXIT_CODE]\0", VERB_ANY, 2, VERB_ONLINE_ONLY,
"Request user instance or container exit");
VERB_SCOPE(, verb_switch_root, "switch-root", "[ROOT [INIT]]", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
VERB_SCOPE(, verb_switch_root, "switch-root", "[ROOT [INIT]]\0", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
"Change to a different root file system");
VERB_SCOPE(, verb_start_system_special, "sleep", NULL, VERB_ANY, 1, VERB_ONLINE_ONLY,
"Put the system to sleep (through one of the operations below)");
+8 -8
View File
@@ -1942,7 +1942,7 @@ static int verify_polkit(Context *context, sd_varlink *link, const char *action,
&s->polkit_registry);
}
VERB(verb_list, "list", "[VERSION]", VERB_ANY, 2, VERB_DEFAULT,
VERB(verb_list, "list", "[VERSION]\0", VERB_ANY, 2, VERB_DEFAULT,
"Show installed and available versions");
static int verb_list(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(context_done) Context context = CONTEXT_NULL;
@@ -2019,7 +2019,7 @@ static int verb_list(int argc, char *argv[], uintptr_t _data, void *userdata) {
}
}
VERB(verb_features, "features", "[FEATURE]", VERB_ANY, 2, 0,
VERB(verb_features, "features", "[FEATURE]\0", VERB_ANY, 2, 0,
"Show optional features");
static int verb_features(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(context_done) Context context = CONTEXT_NULL;
@@ -2312,9 +2312,9 @@ static int context_enable_feature(
return ret;
}
VERB(verb_enable_feature, "enable-feature", "FEATURE…", 1, VERB_ANY, 0,
VERB(verb_enable_feature, "enable-feature", "FEATURE…\0", 1, VERB_ANY, 0,
"Enable optional feature");
VERB(verb_enable_feature, "disable-feature", "FEATURE…", 1, VERB_ANY, 0,
VERB(verb_enable_feature, "disable-feature", "FEATURE…\0", 1, VERB_ANY, 0,
"Disable optional feature");
static int verb_enable_feature(int argc, char *argv[], uintptr_t _data, void *userdata) {
bool enable = streq(argv[0], "enable-feature");
@@ -2759,7 +2759,7 @@ static int verb_update_impl(int argc, char **argv, UpdateActionFlags action_flag
}
}
VERB(verb_update, "update", "[VERSION]", VERB_ANY, 2, 0,
VERB(verb_update, "update", "[VERSION]\0", VERB_ANY, 2, 0,
"Install new version now");
static int verb_update(int argc, char *argv[], uintptr_t _data, void *userdata) {
UpdateActionFlags flags = UPDATE_ACTION_INSTALL;
@@ -2770,7 +2770,7 @@ static int verb_update(int argc, char *argv[], uintptr_t _data, void *userdata)
return verb_update_impl(argc, argv, flags);
}
VERB(verb_acquire, "acquire", "[VERSION]", VERB_ANY, 2, 0,
VERB(verb_acquire, "acquire", "[VERSION]\0", VERB_ANY, 2, 0,
"Acquire (download) new version now");
static int verb_acquire(int argc, char *argv[], uintptr_t _data, void *userdata) {
return verb_update_impl(argc, argv, UPDATE_ACTION_ACQUIRE);
@@ -3163,9 +3163,9 @@ static int vl_method_list_targets(sd_varlink *link, sd_json_variant *parameters,
SD_JSON_BUILD_PAIR_VARIANT("targets", l));
}
VERB(verb_enable_component, "enable-component", "COMPONENT…", 1, VERB_ANY, 0,
VERB(verb_enable_component, "enable-component", "COMPONENT…\0", 1, VERB_ANY, 0,
"Enable component");
VERB(verb_enable_component, "disable-component", "COMPONENT…", 1, VERB_ANY, 0,
VERB(verb_enable_component, "disable-component", "COMPONENT…\0", 1, VERB_ANY, 0,
"Disable component");
static int verb_enable_component(int argc, char *argv[], uintptr_t _data, void *userdata) {
bool enable = streq(argv[0], "enable-component");
+7 -7
View File
@@ -651,7 +651,7 @@ static int describe(sd_bus *bus, const char *target_path, const char *version) {
return table_print_with_pager(table, SD_JSON_FORMAT_OFF, arg_pager_flags, arg_legend);
}
VERB(verb_list, "list", "[TARGET[@VERSION]]", VERB_ANY, 2, VERB_DEFAULT|VERB_ONLINE_ONLY,
VERB(verb_list, "list", "[TARGET[@VERSION]]\0", VERB_ANY, 2, VERB_DEFAULT|VERB_ONLINE_ONLY,
"List available targets and versions");
static int verb_list(int argc, char *argv[], uintptr_t _data, void *userdata) {
sd_bus *bus = ASSERT_PTR(userdata);
@@ -764,7 +764,7 @@ static int check_finished(sd_bus_message *reply, void *userdata, sd_bus_error *r
return 0;
}
VERB(verb_check, "check", "[TARGET...]", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
VERB(verb_check, "check", "[TARGET...]\0", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
"Check for updates");
static int verb_check(int argc, char *argv[], uintptr_t _data, void *userdata) {
sd_bus *bus = ASSERT_PTR(userdata);
@@ -1306,7 +1306,7 @@ static int do_update(sd_bus *bus, char **targets) {
return did_anything ? 1 : 0;
}
VERB(verb_update, "update", "[TARGET[@VERSION]...]", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
VERB(verb_update, "update", "[TARGET[@VERSION]...]\0", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
"Install updates");
static int verb_update(int argc, char *argv[], uintptr_t _data, void *userdata) {
sd_bus *bus = ASSERT_PTR(userdata);
@@ -1361,7 +1361,7 @@ static int do_vacuum(sd_bus *bus, const char *target, const char *path) {
return count + disabled > 0 ? 1 : 0;
}
VERB(verb_vacuum, "vacuum", "[TARGET...]", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
VERB(verb_vacuum, "vacuum", "[TARGET...]\0", VERB_ANY, VERB_ANY, VERB_ONLINE_ONLY,
"Clean up old updates");
static int verb_vacuum(int argc, char *argv[], uintptr_t _data, void *userdata) {
sd_bus *bus = ASSERT_PTR(userdata);
@@ -1507,7 +1507,7 @@ static int list_features(sd_bus *bus) {
return table_print_with_pager(table, SD_JSON_FORMAT_OFF, arg_pager_flags, arg_legend);
}
VERB(verb_features, "features", "[FEATURE]", VERB_ANY, 2, VERB_ONLINE_ONLY,
VERB(verb_features, "features", "[FEATURE]\0", VERB_ANY, 2, VERB_ONLINE_ONLY,
"List and inspect optional features on host OS");
static int verb_features(int argc, char *argv[], uintptr_t _data, void *userdata) {
sd_bus *bus = ASSERT_PTR(userdata);
@@ -1558,9 +1558,9 @@ static int verb_features(int argc, char *argv[], uintptr_t _data, void *userdata
return table_print_with_pager(table, SD_JSON_FORMAT_OFF, arg_pager_flags, false);
}
VERB(verb_enable, "enable", "FEATURE...", 2, VERB_ANY, VERB_ONLINE_ONLY,
VERB(verb_enable, "enable", "FEATURE...\0", 2, VERB_ANY, VERB_ONLINE_ONLY,
"Enable optional feature on host OS");
VERB(verb_enable, "disable", "FEATURE...", 2, VERB_ANY, VERB_ONLINE_ONLY,
VERB(verb_enable, "disable", "FEATURE...\0", 2, VERB_ANY, VERB_ONLINE_ONLY,
"Disable optional feature on host OS");
static int verb_enable(int argc, char *argv[], uintptr_t _data, void *userdata) {
sd_bus *bus = ASSERT_PTR(userdata);
+1 -1
View File
@@ -96,7 +96,7 @@ static const CommandDescription introspect_command = {
static const Verb introspect_verbs[] = {
{ .flags = VERB_COMMAND_MARKER, .data = (uintptr_t) &introspect_command },
{ .verb = "alpha", .min_args = VERB_ANY, .max_args = VERB_ANY, .dispatch = noop_dispatcher,
.argspec = "ARG", .help = "Alpha verb", .option_namespace = "test-verbs-alpha" },
.argspec = "FORM1\0FORM2…\0", .help = "Alpha verb", .option_namespace = "test-verbs-alpha" },
{ .verb = "beta", .min_args = VERB_ANY, .max_args = VERB_ANY, .dispatch = noop_dispatcher,
.help = "Beta verb" },
{}
+6 -6
View File
@@ -237,7 +237,7 @@ static int verb_show(int argc, char *argv[], uintptr_t _data, void *userdata) {
return 0;
}
VERB(verb_set_time, "set-time", "TIME", 2, 2, 0, "Set system time");
VERB(verb_set_time, "set-time", "TIME\0", 2, 2, 0, "Set system time");
static int verb_set_time(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
sd_bus *bus = userdata;
@@ -263,7 +263,7 @@ static int verb_set_time(int argc, char *argv[], uintptr_t _data, void *userdata
return 0;
}
VERB(verb_set_timezone, "set-timezone", "ZONE", 2, 2, 0, "Set system time zone");
VERB(verb_set_timezone, "set-timezone", "ZONE\0", 2, 2, 0, "Set system time zone");
static int verb_set_timezone(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
sd_bus *bus = userdata;
@@ -301,7 +301,7 @@ static int verb_list_timezones(int argc, char *argv[], uintptr_t _data, void *us
return 0;
}
VERB(verb_set_local_rtc, "set-local-rtc", "BOOL", 2, 2, 0, "Control whether RTC is in local time");
VERB(verb_set_local_rtc, "set-local-rtc", "BOOL\0", 2, 2, 0, "Control whether RTC is in local time");
static int verb_set_local_rtc(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
sd_bus *bus = userdata;
@@ -333,7 +333,7 @@ static int verb_set_local_rtc(int argc, char *argv[], uintptr_t _data, void *use
return 0;
}
VERB(verb_set_ntp, "set-ntp", "BOOL", 2, 2, 0, "Enable or disable network time synchronization");
VERB(verb_set_ntp, "set-ntp", "BOOL\0", 2, 2, 0, "Enable or disable network time synchronization");
static int verb_set_ntp(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -847,7 +847,7 @@ static int parse_ifindex_bus(sd_bus *bus, const char *str) {
return i;
}
VERB(verb_ntp_servers, "ntp-servers", "INTERFACE SERVER…", 3, VERB_ANY, 0,
VERB(verb_ntp_servers, "ntp-servers", "INTERFACE SERVER…\0", 3, VERB_ANY, 0,
"Set the interface specific NTP servers");
static int verb_ntp_servers(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@@ -880,7 +880,7 @@ static int verb_ntp_servers(int argc, char *argv[], uintptr_t _data, void *userd
return 0;
}
VERB(verb_revert, "revert", "INTERFACE", 2, 2, 0, "Revert the interface specific NTP servers");
VERB(verb_revert, "revert", "INTERFACE\0", 2, 2, 0, "Revert the interface specific NTP servers");
static int verb_revert(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
sd_bus *bus = ASSERT_PTR(userdata);
+2 -2
View File
@@ -261,13 +261,13 @@ static int query_solutions_for_path(const char *path) {
return 0;
}
VERB(verb_query, "query", "PATH", 2, 2, 0,
VERB(verb_query, "query", "PATH\0", 2, 2, 0,
"Query the known solution for the device");
static int verb_query(int argc, char *argv[], uintptr_t _data, void *userdata) {
return query_solutions_for_path(ASSERT_PTR(argv[1]));
}
VERB(verb_apply, "apply", "PATH [SOLUTION]", 2, 3, 0,
VERB(verb_apply, "apply", "PATH [SOLUTION]\0", 2, 3, 0,
"Apply solution for the device if found, do nothing otherwise");
static int verb_apply(int argc, char *argv[], uintptr_t _data, void *userdata) {
return apply_solution_for_path(
+9 -9
View File
@@ -47,17 +47,17 @@ static int help(void) {
VERB_COMMON_HELP(help);
VERB_SCOPE(, verb_info_main, "info", "[DEVPATH|FILE]", VERB_ANY, VERB_ANY, 0, "Query sysfs or the udev database");
VERB_SCOPE(, verb_trigger_main, "trigger", "DEVPATH", VERB_ANY, VERB_ANY, 0, "Request events from the kernel");
VERB_SCOPE(, verb_info_main, "info", "[DEVPATH|FILE]\0", VERB_ANY, VERB_ANY, 0, "Query sysfs or the udev database");
VERB_SCOPE(, verb_trigger_main, "trigger", "DEVPATH\0", VERB_ANY, VERB_ANY, 0, "Request events from the kernel");
VERB_SCOPE(, verb_settle_main, "settle", NULL, VERB_ANY, VERB_ANY, 0, "Wait for pending udev events");
VERB_SCOPE(, verb_control_main, "control", "OPTION", VERB_ANY, VERB_ANY, 0, "Control the udev daemon");
VERB_SCOPE(, verb_control_main, "control", "OPTION\0", VERB_ANY, VERB_ANY, 0, "Control the udev daemon");
VERB_SCOPE(, verb_monitor_main, "monitor", NULL, VERB_ANY, VERB_ANY, 0, "Listen to kernel and udev events");
VERB_SCOPE(, verb_test_main, "test", "DEVPATH", VERB_ANY, VERB_ANY, 0, "Test an event run");
VERB_SCOPE(, verb_builtin_main, "test-builtin", "COMMAND DEVPATH", VERB_ANY, VERB_ANY, 0, "Test a built-in command");
VERB_SCOPE(, verb_verify_main, "verify", "[FILE…]", VERB_ANY, VERB_ANY, 0, "Verify udev rules files");
VERB_SCOPE(, verb_cat_main, "cat", "[FILE…]", VERB_ANY, VERB_ANY, 0, "Show udev rules files");
VERB_SCOPE(, verb_wait_main, "wait", "DEVICE [DEVICE…]", VERB_ANY, VERB_ANY, 0, "Wait for device or device symlink");
VERB_SCOPE(, verb_lock_main, "lock", "[OPTIONS…] COMMAND", VERB_ANY, VERB_ANY, 0, "Lock a block device");
VERB_SCOPE(, verb_test_main, "test", "DEVPATH\0", VERB_ANY, VERB_ANY, 0, "Test an event run");
VERB_SCOPE(, verb_builtin_main, "test-builtin", "COMMAND DEVPATH\0", VERB_ANY, VERB_ANY, 0, "Test a built-in command");
VERB_SCOPE(, verb_verify_main, "verify", "[FILE…]\0", VERB_ANY, VERB_ANY, 0, "Verify udev rules files");
VERB_SCOPE(, verb_cat_main, "cat", "[FILE…]\0", VERB_ANY, VERB_ANY, 0, "Show udev rules files");
VERB_SCOPE(, verb_wait_main, "wait", "DEVICE [DEVICE…]\0", VERB_ANY, VERB_ANY, 0, "Wait for device or device symlink");
VERB_SCOPE(, verb_lock_main, "lock", "[OPTIONS…] COMMAND\0", VERB_ANY, VERB_ANY, 0, "Lock a block device");
VERB_SCOPE(, verb_hwdb_main, "hwdb", NULL, VERB_ANY, VERB_ANY, 0, /* help= */ NULL); /* deprecated */
VERB_NOARG(verb_version_main, "version", /* help= */ NULL);
+5 -5
View File
@@ -418,7 +418,7 @@ static int table_add_uid_map(
return n_added;
}
VERB(verb_display_user, "user", "[USER…]", VERB_ANY, VERB_ANY, VERB_DEFAULT,
VERB(verb_display_user, "user", "[USER…]\0", VERB_ANY, VERB_ANY, VERB_DEFAULT,
"Inspect user");
static int verb_display_user(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(table_unrefp) Table *table = NULL;
@@ -763,7 +763,7 @@ static int add_unavailable_gid(Table *table, uid_t start, uid_t end) {
return 2;
}
VERB(verb_display_group, "group", "[GROUP…]", VERB_ANY, VERB_ANY, 0,
VERB(verb_display_group, "group", "[GROUP…]\0", VERB_ANY, VERB_ANY, 0,
"Inspect group");
static int verb_display_group(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(table_unrefp) Table *table = NULL;
@@ -966,9 +966,9 @@ static int show_membership(const char *user, const char *group, Table *table) {
return 0;
}
VERB(verb_display_memberships, "users-in-group", "[GROUP…]", VERB_ANY, VERB_ANY, 0,
VERB(verb_display_memberships, "users-in-group", "[GROUP…]\0", VERB_ANY, VERB_ANY, 0,
"Show users that are members of specified groups");
VERB(verb_display_memberships, "groups-of-user", "[USER…]", VERB_ANY, VERB_ANY, 0,
VERB(verb_display_memberships, "groups-of-user", "[USER…]\0", VERB_ANY, VERB_ANY, 0,
"Show groups the specified users are members of");
static int verb_display_memberships(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(table_unrefp) Table *table = NULL;
@@ -1131,7 +1131,7 @@ static int verb_display_services(int argc, char *argv[], uintptr_t _data, void *
return 0;
}
VERB(verb_ssh_authorized_keys, "ssh-authorized-keys", "USER", 2, VERB_ANY, 0,
VERB(verb_ssh_authorized_keys, "ssh-authorized-keys", "USER\0", 2, VERB_ANY, 0,
"Show SSH authorized keys for user");
static int verb_ssh_authorized_keys(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(user_record_unrefp) UserRecord *ur = NULL;
+7 -7
View File
@@ -295,8 +295,8 @@ COMMAND(
.pager_flags = &arg_pager_flags,
);
VERB(verb_info, "info", "ADDRESS", 2, 2, 0, "Show service information");
VERB(verb_info, "list-interfaces", "ADDRESS", 2, 2, 0, "List interfaces implemented by service");
VERB(verb_info, "info", "ADDRESS\0", 2, 2, 0, "Show service information");
VERB(verb_info, "list-interfaces", "ADDRESS\0", 2, 2, 0, "List interfaces implemented by service");
static int verb_info(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_varlink_unrefp) sd_varlink *vl = NULL;
const char *url;
@@ -390,8 +390,8 @@ typedef struct GetInterfaceDescriptionData {
const char *description;
} GetInterfaceDescriptionData;
VERB(verb_introspect, "introspect", "ADDRESS [INTERFACE…]", 2, VERB_ANY, 0, "Show interface definition");
VERB(verb_introspect, "list-methods", "ADDRESS [INTERFACE…]", 2, VERB_ANY, 0,
VERB(verb_introspect, "introspect", "ADDRESS [INTERFACE…]\0", 2, VERB_ANY, 0, "Show interface definition");
VERB(verb_introspect, "list-methods", "ADDRESS [INTERFACE…]\0", 2, VERB_ANY, 0,
"List methods implemented by services or specific interfaces");
static int verb_introspect(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_varlink_unrefp) sd_varlink *vl = NULL;
@@ -709,7 +709,7 @@ static int varlink_call_and_upgrade(const char *url, const char *method, sd_json
return 0;
}
VERB(verb_call, "call", "ADDRESS METHOD [PARAMS]", 3, VERB_ANY, 0, "Invoke method");
VERB(verb_call, "call", "ADDRESS METHOD [PARAMS]\0", 3, VERB_ANY, 0, "Invoke method");
static int verb_call(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_json_variant_unrefp) sd_json_variant *jp = NULL;
_cleanup_(sd_varlink_unrefp) sd_varlink *vl = NULL;
@@ -983,7 +983,7 @@ static int verb_call(int argc, char *argv[], uintptr_t _data, void *userdata) {
return 0;
}
VERB(verb_validate_idl, "validate-idl", "[FILE]", 1, 2, 0, "Validate interface description");
VERB(verb_validate_idl, "validate-idl", "[FILE]\0", 1, 2, 0, "Validate interface description");
static int verb_validate_idl(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_varlink_interface_freep) sd_varlink_interface *vi = NULL;
_cleanup_free_ char *text = NULL;
@@ -1386,7 +1386,7 @@ static int method_serve_upgrade(sd_varlink *link, sd_json_variant *parameters, s
return 0;
}
VERB(verb_serve, "serve", "METHOD CMDLINE…", 3, VERB_ANY, 0, "Serve a command via varlink protocol upgrade");
VERB(verb_serve, "serve", "METHOD CMDLINE…\0", 3, VERB_ANY, 0, "Serve a command via varlink protocol upgrade");
static int verb_serve(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_varlink_server_unrefp) sd_varlink_server *s = NULL;
_cleanup_(sd_event_unrefp) sd_event *event = NULL;
+2 -2
View File
@@ -303,7 +303,7 @@ COMMAND(
.man_pages = "systemd-veritysetup@.service(8)\0",
);
VERB(verb_attach, "attach", "VOLUME DATADEVICE HASHDEVICE ROOTHASH [OPTIONS]", 5, 6, 0,
VERB(verb_attach, "attach", "VOLUME DATADEVICE HASHDEVICE ROOTHASH [OPTIONS]\0", 5, 6, 0,
"Attach a verity-protected block device");
static int verb_attach(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(crypt_freep) struct crypt_device *cd = NULL;
@@ -441,7 +441,7 @@ static int verb_attach(int argc, char *argv[], uintptr_t _data, void *userdata)
return 0;
}
VERB(verb_detach, "detach", "VOLUME", 2, 2, 0,
VERB(verb_detach, "detach", "VOLUME\0", 2, 2, 0,
"Detach a verity-protected block device");
static int verb_detach(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(crypt_freep) struct crypt_device *cd = NULL;