tree-wide: extend verbs functions with extra per-verb data parameter

We often have a pattern where the same verb function is used for
multiple actions. This leads to an antipattern where we figure out what
action needs to be taken from argv[0] multiple times: often once in
parse_argv() to figure out what options are allowed, then once again
implicitly in dispatch_verb(), and then again in the action verb itself.
Let's allow passing a parameter into the verb to simplify this.

This matches a pattern we have in conf-parser.h, where we have both
void *userdata (more global) and void *data (per-config item). Here,
I opted for uintptr_t userdata. It seems that most of the time we'll
want to just pass an enum value. This works OK with no casts. I also
tried a void* and union. In both cases, much more boilerplate is needed:
either a cast or a macro to help avoid compiler warnings. uintptr_t
seems generic enough to cover foreseeable usecases with no fuss.

This is a noop refactoring. See next commit for an example.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2026-03-18 10:28:47 +00:00
committed by Luca Boccassi
parent 9e8babc8ab
commit 31ddd87da0
216 changed files with 745 additions and 573 deletions
+1 -1
View File
@@ -17,7 +17,7 @@
#include "systemctl-util.h"
#include "unit-name.h"
int verb_add_dependency(int argc, char *argv[], void *userdata) {
int verb_add_dependency(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_strv_free_ char **names = NULL;
_cleanup_free_ char *target = NULL;
const char *verb = argv[0];
+3 -1
View File
@@ -1,4 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_add_dependency(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_add_dependency(int argc, char *argv[], uintptr_t _data, void *userdata);
+2 -2
View File
@@ -12,12 +12,12 @@
#include "systemctl-trivial-method.h"
#include "systemctl-util.h"
int verb_cancel(int argc, char *argv[], void *userdata) {
int verb_cancel(int argc, char *argv[], uintptr_t data, void *userdata) {
sd_bus *bus;
int r;
if (argc <= 1) /* Shortcut to trivial_method() if no argument is given */
return verb_trivial_method(argc, argv, userdata);
return verb_trivial_method(argc, argv, data, userdata);
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
+3 -1
View File
@@ -1,4 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_cancel(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_cancel(int argc, char *argv[], uintptr_t _data, void *userdata);
+1 -1
View File
@@ -13,7 +13,7 @@
#include "systemctl-clean-or-freeze.h"
#include "systemctl-util.h"
int verb_clean_or_freeze(int argc, char *argv[], void *userdata) {
int verb_clean_or_freeze(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(bus_wait_for_units_freep) BusWaitForUnits *w = NULL;
_cleanup_strv_free_ char **names = NULL;
int r, ret = EXIT_SUCCESS;
+3 -1
View File
@@ -1,4 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_clean_or_freeze(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_clean_or_freeze(int argc, char *argv[], uintptr_t _data, void *userdata);
+1 -1
View File
@@ -170,7 +170,7 @@ int halt_main(void) {
arg_no_block = true;
if (!arg_dry_run)
return verb_start(0, NULL, NULL);
return verb_start(0, NULL, /* data= */ 0, NULL);
}
r = must_be_root();
+1 -1
View File
@@ -62,7 +62,7 @@ int daemon_reload(enum action action, bool graceful) {
return 1;
}
int verb_daemon_reload(int argc, char *argv[], void *userdata) {
int verb_daemon_reload(int argc, char *argv[], uintptr_t _data, void *userdata) {
enum action a;
int r;
+1 -1
View File
@@ -5,4 +5,4 @@
int daemon_reload(enum action action, bool graceful);
int verb_daemon_reload(int argc, char *argv[], void *userdata);
int verb_daemon_reload(int argc, char *argv[], uintptr_t _data, void *userdata);
+2 -2
View File
@@ -20,7 +20,7 @@
#include "terminal-util.h"
#include "unit-name.h"
int verb_cat(int argc, char *argv[], void *userdata) {
int verb_cat(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_hashmap_free_ Hashmap *cached_id_map = NULL, *cached_name_map = NULL;
_cleanup_(lookup_paths_done) LookupPaths lp = {};
_cleanup_strv_free_ char **names = NULL;
@@ -324,7 +324,7 @@ static int find_paths_to_edit(
return 0;
}
int verb_edit(int argc, char *argv[], void *userdata) {
int verb_edit(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(edit_file_context_done) EditFileContext context = {
.marker_start = DROPIN_MARKER_START,
.marker_end = DROPIN_MARKER_END,
+4 -2
View File
@@ -1,5 +1,7 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_cat(int argc, char *argv[], void *userdata);
int verb_edit(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_cat(int argc, char *argv[], uintptr_t _data, void *userdata);
int verb_edit(int argc, char *argv[], uintptr_t _data, void *userdata);
+2 -2
View File
@@ -80,7 +80,7 @@ static int normalize_names(char **names) {
return 0;
}
int verb_enable(int argc, char *argv[], void *userdata) {
int verb_enable(int argc, char *argv[], uintptr_t data, void *userdata) {
const char *verb = ASSERT_PTR(argv[0]);
_cleanup_strv_free_ char **names = NULL;
int carries_install_info = -1;
@@ -402,7 +402,7 @@ int verb_enable(int argc, char *argv[], void *userdata) {
return log_oom();
}
return verb_start(strv_length(new_args), new_args, userdata);
return verb_start(strv_length(new_args), new_args, data, userdata);
}
return 0;
+3 -1
View File
@@ -1,4 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_enable(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_enable(int argc, char *argv[], uintptr_t _data, void *userdata);
+2 -2
View File
@@ -57,7 +57,7 @@ static int check_unit_generic(int code, const UnitActiveState good_states[], siz
return ok ? EXIT_SUCCESS : not_found ? EXIT_PROGRAM_OR_SERVICES_STATUS_UNKNOWN : code;
}
int verb_is_active(int argc, char *argv[], void *userdata) {
int verb_is_active(int argc, char *argv[], uintptr_t _data, void *userdata) {
static const UnitActiveState states[] = {
UNIT_ACTIVE,
@@ -69,7 +69,7 @@ int verb_is_active(int argc, char *argv[], void *userdata) {
return check_unit_generic(EXIT_PROGRAM_NOT_RUNNING, states, ELEMENTSOF(states), strv_skip(argv, 1));
}
int verb_is_failed(int argc, char *argv[], void *userdata) {
int verb_is_failed(int argc, char *argv[], uintptr_t _data, void *userdata) {
static const UnitActiveState states[] = {
UNIT_FAILED,
+4 -2
View File
@@ -1,5 +1,7 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_is_active(int argc, char *argv[], void *userdata);
int verb_is_failed(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_is_active(int argc, char *argv[], uintptr_t _data, void *userdata);
int verb_is_failed(int argc, char *argv[], uintptr_t _data, void *userdata);
+1 -1
View File
@@ -65,7 +65,7 @@ static int show_installation_targets(sd_bus *bus, const char *name) {
return 0;
}
int verb_is_enabled(int argc, char *argv[], void *userdata) {
int verb_is_enabled(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_strv_free_ char **names = NULL;
bool not_found = true, enabled = false;
int r;
+3 -1
View File
@@ -1,4 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_is_enabled(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_is_enabled(int argc, char *argv[], uintptr_t _data, void *userdata);
+1 -1
View File
@@ -25,7 +25,7 @@ static int match_startup_finished(sd_bus_message *m, void *userdata, sd_bus_erro
return 0;
}
int verb_is_system_running(int argc, char *argv[], void *userdata) {
int verb_is_system_running(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
_cleanup_(sd_bus_slot_unrefp) sd_bus_slot *slot_startup_finished = NULL;
_cleanup_(sd_event_unrefp) sd_event* event = NULL;
+3 -1
View File
@@ -1,4 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_is_system_running(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_is_system_running(int argc, char *argv[], uintptr_t _data, void *userdata);
+1 -1
View File
@@ -13,7 +13,7 @@
#include "systemctl-kill.h"
#include "systemctl-util.h"
int verb_kill(int argc, char *argv[], void *userdata) {
int verb_kill(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(bus_wait_for_units_freep) BusWaitForUnits *w = NULL;
_cleanup_strv_free_ char **names = NULL;
const char *kill_whom;
+3 -1
View File
@@ -1,4 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_kill(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_kill(int argc, char *argv[], uintptr_t _data, void *userdata);
+1 -1
View File
@@ -167,7 +167,7 @@ static int list_dependencies_one(
return 0;
}
int verb_list_dependencies(int argc, char *argv[], void *userdata) {
int verb_list_dependencies(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_strv_free_ char **units = NULL, **done = NULL;
char **patterns;
sd_bus *bus;
+3 -1
View File
@@ -1,4 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_list_dependencies(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_list_dependencies(int argc, char *argv[], uintptr_t _data, void *userdata);
+1 -1
View File
@@ -133,7 +133,7 @@ static bool output_show_job(struct job_info *job, char **patterns) {
return strv_fnmatch_or_empty(patterns, job->name, FNM_NOESCAPE);
}
int verb_list_jobs(int argc, char *argv[], void *userdata) {
int verb_list_jobs(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
_cleanup_free_ struct job_info *jobs = NULL;
+3 -1
View File
@@ -1,4 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_list_jobs(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_list_jobs(int argc, char *argv[], uintptr_t _data, void *userdata);
+1 -1
View File
@@ -231,7 +231,7 @@ static int output_machines_list(struct machine_info *machine_infos, unsigned n)
return 0;
}
int verb_list_machines(int argc, char *argv[], void *userdata) {
int verb_list_machines(int argc, char *argv[], uintptr_t _data, void *userdata) {
struct machine_info *machine_infos = NULL;
sd_bus *bus;
int r, rc;
+1 -1
View File
@@ -4,7 +4,7 @@
#include "bus-map-properties.h"
#include "shared-forward.h"
int verb_list_machines(int argc, char *argv[], void *userdata);
int verb_list_machines(int argc, char *argv[], uintptr_t _data, void *userdata);
struct machine_info {
bool is_host;
+1 -1
View File
@@ -173,7 +173,7 @@ static int output_unit_file_list(const UnitFileList *units, unsigned c) {
return 0;
}
int verb_list_unit_files(int argc, char *argv[], void *userdata) {
int verb_list_unit_files(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
_cleanup_hashmap_free_ Hashmap *h = NULL;
_cleanup_free_ UnitFileList *units = NULL;
+3 -1
View File
@@ -1,4 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_list_unit_files(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_list_unit_files(int argc, char *argv[], uintptr_t _data, void *userdata);
+5 -5
View File
@@ -258,7 +258,7 @@ static int output_units_list(const UnitInfo *unit_infos, size_t c) {
return 0;
}
int verb_list_units(int argc, char *argv[], void *userdata) {
int verb_list_units(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_free_ UnitInfo *unit_infos = NULL;
_cleanup_set_free_ Set *replies = NULL;
sd_bus *bus;
@@ -490,7 +490,7 @@ static int output_sockets_list(const SocketInfo *sockets, size_t n_sockets) {
return 0;
}
int verb_list_sockets(int argc, char *argv[], void *userdata) {
int verb_list_sockets(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_set_free_ Set *replies = NULL;
_cleanup_strv_free_ char **sockets_with_suffix = NULL;
_cleanup_free_ UnitInfo *unit_infos = NULL;
@@ -771,7 +771,7 @@ static int add_timer_info(
return 0;
}
int verb_list_timers(int argc, char *argv[], void *userdata) {
int verb_list_timers(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_set_free_ Set *replies = NULL;
_cleanup_strv_free_ char **timers_with_suffix = NULL;
_cleanup_free_ UnitInfo *unit_infos = NULL;
@@ -970,7 +970,7 @@ static int output_automounts_list(const AutomountInfo *infos, size_t n_infos) {
return 0;
}
int verb_list_automounts(int argc, char *argv[], void *userdata) {
int verb_list_automounts(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_set_free_ Set *replies = NULL;
_cleanup_strv_free_ char **names = NULL;
_cleanup_free_ UnitInfo *unit_infos = NULL;
@@ -1178,7 +1178,7 @@ static int output_paths_list(const PathInfo *paths, size_t n_paths) {
return 0;
}
int verb_list_paths(int argc, char *argv[], void *userdata) {
int verb_list_paths(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_set_free_ Set *replies = NULL;
_cleanup_strv_free_ char **units = NULL;
_cleanup_free_ UnitInfo *unit_infos = NULL;
+5 -5
View File
@@ -3,10 +3,10 @@
#include "time-util.h"
int verb_list_units(int argc, char *argv[], void *userdata);
int verb_list_sockets(int argc, char *argv[], void *userdata);
int verb_list_timers(int argc, char *argv[], void *userdata);
int verb_list_automounts(int argc, char *argv[], void *userdata);
int verb_list_paths(int argc, char *argv[], void *userdata);
int verb_list_units(int argc, char *argv[], uintptr_t _data, void *userdata);
int verb_list_sockets(int argc, char *argv[], uintptr_t _data, void *userdata);
int verb_list_timers(int argc, char *argv[], uintptr_t _data, void *userdata);
int verb_list_automounts(int argc, char *argv[], uintptr_t _data, void *userdata);
int verb_list_paths(int argc, char *argv[], uintptr_t _data, void *userdata);
usec_t calc_next_elapse(const dual_timestamp *nw, const dual_timestamp *next);
+2 -2
View File
@@ -26,7 +26,7 @@ static void give_log_control1_hint(const char *name) {
" See the %s for details.", link ?: "org.freedesktop.LogControl1(5) man page");
}
int verb_log_setting(int argc, char *argv[], void *userdata) {
int verb_log_setting(int argc, char *argv[], uintptr_t _data, void *userdata) {
sd_bus *bus;
int r;
@@ -71,7 +71,7 @@ static int service_name_to_dbus(sd_bus *bus, const char *name, char **ret_dbus_n
return 0;
}
int verb_service_log_setting(int argc, char *argv[], void *userdata) {
int verb_service_log_setting(int argc, char *argv[], uintptr_t _data, void *userdata) {
sd_bus *bus;
_cleanup_free_ char *unit = NULL, *dbus_name = NULL;
int r;
+4 -2
View File
@@ -1,5 +1,7 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_log_setting(int argc, char *argv[], void *userdata);
int verb_service_log_setting(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_log_setting(int argc, char *argv[], uintptr_t _data, void *userdata);
int verb_service_log_setting(int argc, char *argv[], uintptr_t _data, void *userdata);
+2 -2
View File
@@ -14,7 +14,7 @@
#include "systemctl-util.h"
#include "unit-name.h"
int verb_bind(int argc, char *argv[], void *userdata) {
int verb_bind(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
_cleanup_free_ char *n = NULL;
sd_bus *bus;
@@ -48,7 +48,7 @@ int verb_bind(int argc, char *argv[], void *userdata) {
return 0;
}
int verb_mount_image(int argc, char *argv[], void *userdata) {
int verb_mount_image(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
const char *unit = argv[1], *src = argv[2], *dest = argv[3];
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
+4 -2
View File
@@ -1,5 +1,7 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_bind(int argc, char *argv[], void *userdata);
int verb_mount_image(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_bind(int argc, char *argv[], uintptr_t _data, void *userdata);
int verb_mount_image(int argc, char *argv[], uintptr_t _data, void *userdata);
+1 -1
View File
@@ -13,7 +13,7 @@
#include "systemctl-util.h"
#include "verbs.h"
int verb_preset_all(int argc, char *argv[], void *userdata) {
int verb_preset_all(int argc, char *argv[], uintptr_t _data, void *userdata) {
int r;
if (should_bypass("SYSTEMD_PRESET"))
+3 -1
View File
@@ -1,4 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_preset_all(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_preset_all(int argc, char *argv[], uintptr_t _data, void *userdata);
+2 -2
View File
@@ -10,13 +10,13 @@
#include "systemctl-trivial-method.h"
#include "systemctl-util.h"
int verb_reset_failed(int argc, char *argv[], void *userdata) {
int verb_reset_failed(int argc, char *argv[], uintptr_t data, void *userdata) {
_cleanup_strv_free_ char **names = NULL;
sd_bus *bus;
int r, q;
if (argc <= 1) /* Shortcut to trivial_method() if no argument is given */
return verb_trivial_method(argc, argv, userdata);
return verb_trivial_method(argc, argv, data, userdata);
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
+3 -1
View File
@@ -1,4 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_reset_failed(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_reset_failed(int argc, char *argv[], uintptr_t _data, void *userdata);
+1 -1
View File
@@ -10,7 +10,7 @@
#include "systemctl-service-watchdogs.h"
#include "systemctl-util.h"
int verb_service_watchdogs(int argc, char *argv[], void *userdata) {
int verb_service_watchdogs(int argc, char *argv[], uintptr_t _data, void *userdata) {
sd_bus *bus;
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
int b, r;
+3 -1
View File
@@ -1,4 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_service_watchdogs(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_service_watchdogs(int argc, char *argv[], uintptr_t _data, void *userdata);
+2 -2
View File
@@ -88,7 +88,7 @@ static int determine_default(char **ret_name) {
}
}
int verb_get_default(int argc, char *argv[], void *userdata) {
int verb_get_default(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_free_ char *name = NULL;
int r;
@@ -103,7 +103,7 @@ int verb_get_default(int argc, char *argv[], void *userdata) {
return 0;
}
int verb_set_default(int argc, char *argv[], void *userdata) {
int verb_set_default(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_free_ char *unit = NULL;
int r;
+4 -2
View File
@@ -1,5 +1,7 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_get_default(int argc, char *argv[], void *userdata);
int verb_set_default(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_get_default(int argc, char *argv[], uintptr_t _data, void *userdata);
int verb_set_default(int argc, char *argv[], uintptr_t _data, void *userdata);
+3 -3
View File
@@ -70,7 +70,7 @@ static int print_variable(const char *s) {
return 0;
}
int verb_show_environment(int argc, char *argv[], void *userdata) {
int verb_show_environment(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
const char *text;
@@ -122,7 +122,7 @@ static void invalid_callback(const char *p, void *userdata) {
log_debug("Ignoring invalid environment assignment \"%s\".", strnull(t));
}
int verb_set_environment(int argc, char *argv[], void *userdata) {
int verb_set_environment(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
const char *method;
@@ -157,7 +157,7 @@ int verb_set_environment(int argc, char *argv[], void *userdata) {
return 0;
}
int verb_import_environment(int argc, char *argv[], void *userdata) {
int verb_import_environment(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
sd_bus *bus;
+5 -3
View File
@@ -1,6 +1,8 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_show_environment(int argc, char *argv[], void *userdata);
int verb_set_environment(int argc, char *argv[], void *userdata);
int verb_import_environment(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_show_environment(int argc, char *argv[], uintptr_t _data, void *userdata);
int verb_set_environment(int argc, char *argv[], uintptr_t _data, void *userdata);
int verb_import_environment(int argc, char *argv[], uintptr_t _data, void *userdata);
+1 -1
View File
@@ -51,7 +51,7 @@ static int set_property_one(sd_bus *bus, const char *name, char **properties) {
return 0;
}
int verb_set_property(int argc, char *argv[], void *userdata) {
int verb_set_property(int argc, char *argv[], uintptr_t _data, void *userdata) {
sd_bus *bus;
_cleanup_strv_free_ char **names = NULL;
int r;
+3 -1
View File
@@ -1,4 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_set_property(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_set_property(int argc, char *argv[], uintptr_t _data, void *userdata);
+1 -1
View File
@@ -2482,7 +2482,7 @@ static int show_system_status(sd_bus *bus) {
return 0;
}
int verb_show(int argc, char *argv[], void *userdata) {
int verb_show(int argc, char *argv[], uintptr_t _data, void *userdata) {
bool new_line = false, ellipsized = false;
SystemctlShowMode show_mode;
int r, ret = 0;
+3 -1
View File
@@ -1,4 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_show(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_show(int argc, char *argv[], uintptr_t _data, void *userdata);
+5 -5
View File
@@ -127,7 +127,7 @@ static int set_exit_code(uint8_t code) {
return 0;
}
int verb_start_special(int argc, char *argv[], void *userdata) {
int verb_start_special(int argc, char *argv[], uintptr_t data, void *userdata) {
bool termination_action; /* An action that terminates the system, can be performed also by signal. */
enum action a;
int r;
@@ -198,7 +198,7 @@ int verb_start_special(int argc, char *argv[], void *userdata) {
if (arg_force >= 1 &&
(termination_action || IN_SET(a, ACTION_KEXEC, ACTION_EXIT)))
r = verb_trivial_method(argc, argv, userdata);
r = verb_trivial_method(argc, argv, data, userdata);
else {
/* First try logind, to allow authentication with polkit */
switch (a) {
@@ -255,7 +255,7 @@ int verb_start_special(int argc, char *argv[], void *userdata) {
;
}
r = verb_start(argc, argv, userdata);
r = verb_start(argc, argv, data, userdata);
}
if (termination_action && arg_force < 2 &&
@@ -265,7 +265,7 @@ int verb_start_special(int argc, char *argv[], void *userdata) {
return r;
}
int verb_start_system_special(int argc, char *argv[], void *userdata) {
int verb_start_system_special(int argc, char *argv[], uintptr_t data, void *userdata) {
/* Like start_special above, but raises an error when running in user mode */
if (arg_runtime_scope != RUNTIME_SCOPE_SYSTEM)
@@ -273,5 +273,5 @@ int verb_start_system_special(int argc, char *argv[], void *userdata) {
"Bad action for %s mode.",
runtime_scope_cmdline_option_to_string(arg_runtime_scope));
return verb_start_special(argc, argv, userdata);
return verb_start_special(argc, argv, data, userdata);
}
+4 -2
View File
@@ -1,5 +1,7 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_start_special(int argc, char *argv[], void *userdata);
int verb_start_system_special(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_start_special(int argc, char *argv[], uintptr_t _data, void *userdata);
int verb_start_system_special(int argc, char *argv[], uintptr_t _data, void *userdata);
+1 -1
View File
@@ -289,7 +289,7 @@ static const char** make_extra_args(const char *extra_args[static 4]) {
return extra_args;
}
int verb_start(int argc, char *argv[], void *userdata) {
int verb_start(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(bus_wait_for_units_freep) BusWaitForUnits *wu = NULL;
_cleanup_(bus_wait_for_jobs_freep) BusWaitForJobs *w = NULL;
const char *method, *job_type, *mode, *one_name, *suffix = NULL;
+1 -1
View File
@@ -3,7 +3,7 @@
#include "systemctl.h"
int verb_start(int argc, char *argv[], void *userdata);
int verb_start(int argc, char *argv[], uintptr_t _data, void *userdata);
struct action_metadata {
const char *target;
+1 -1
View File
@@ -38,7 +38,7 @@ static int same_file_in_root(
return stat_inode_same(&sta, &stb);
}
int verb_switch_root(int argc, char *argv[], void *userdata) {
int verb_switch_root(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
_cleanup_free_ char *cmdline_init = NULL;
const char *root, *init;
+3 -1
View File
@@ -1,4 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_switch_root(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_switch_root(int argc, char *argv[], uintptr_t _data, void *userdata);
+1 -1
View File
@@ -12,7 +12,7 @@
/* A generic implementation for cases we just need to invoke a simple method call on the Manager object. */
int verb_trivial_method(int argc, char *argv[], void *userdata) {
int verb_trivial_method(int argc, char *argv[], uintptr_t _data, void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
const char *method;
sd_bus *bus;
+3 -1
View File
@@ -1,4 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_trivial_method(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_trivial_method(int argc, char *argv[], uintptr_t _data, void *userdata);
+1 -1
View File
@@ -11,7 +11,7 @@
#include "systemctl-util.h"
#include "systemctl-whoami.h"
int verb_whoami(int argc, char *argv[], void *userdata) {
int verb_whoami(int argc, char *argv[], uintptr_t _data, void *userdata) {
sd_bus *bus;
int r, ret = 0;
+3 -1
View File
@@ -1,4 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
int verb_whoami(int argc, char *argv[], void *userdata);
#include "shared-forward.h"
int verb_whoami(int argc, char *argv[], uintptr_t _data, void *userdata);