mirror of
https://github.com/systemd/systemd.git
synced 2024-10-30 06:25:37 +03:00
cgls: mangle user-provided unit names
so the CLI interface is now similar to `systemctl`, i.e. if no unit name suffix is provided, assume `.service`. Fixes: #20492 Before: ``` $ systemd-cgls --unit user@1000 Failed to query unit control group path: Invalid argument Failed to list cgroup tree: Invalid argument ``` After: ``` $ build/systemd-cgls --unit user@1000 Unit user@1000.service (/user.slice/user-1000.slice/user@1000.service): ├─session.slice (#4939) │ ├─pipewire-pulse.service (#5203) │ │ └─7711 /usr/bin/pipewire-pulse ... ```
This commit is contained in:
parent
24759d8f08
commit
217d4a1164
@ -208,7 +208,11 @@ static int run(int argc, char *argv[]) {
|
||||
|
||||
if (arg_show_unit != SHOW_UNIT_NONE) {
|
||||
/* Command line arguments are unit names */
|
||||
_cleanup_free_ char *cgroup = NULL;
|
||||
_cleanup_free_ char *cgroup = NULL, *unit_name = NULL;
|
||||
|
||||
r = unit_name_mangle(*name, UNIT_NAME_MANGLE_WARN, &unit_name);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to mangle unit name: %m");
|
||||
|
||||
if (!bus) {
|
||||
/* Connect to the bus only if necessary */
|
||||
@ -219,16 +223,16 @@ static int run(int argc, char *argv[]) {
|
||||
return bus_log_connect_error(r, BUS_TRANSPORT_LOCAL);
|
||||
}
|
||||
|
||||
q = show_cgroup_get_unit_path_and_warn(bus, *name, &cgroup);
|
||||
q = show_cgroup_get_unit_path_and_warn(bus, unit_name, &cgroup);
|
||||
if (q < 0)
|
||||
goto failed;
|
||||
|
||||
if (isempty(cgroup)) {
|
||||
q = log_warning_errno(SYNTHETIC_ERRNO(ENOENT), "Unit %s not found.", *name);
|
||||
q = log_warning_errno(SYNTHETIC_ERRNO(ENOENT), "Unit %s not found.", unit_name);
|
||||
goto failed;
|
||||
}
|
||||
|
||||
printf("Unit %s (%s):\n", *name, cgroup);
|
||||
printf("Unit %s (%s):\n", unit_name, cgroup);
|
||||
fflush(stdout);
|
||||
|
||||
q = show_cgroup_by_path(cgroup, NULL, 0, arg_output_flags);
|
||||
|
Loading…
Reference in New Issue
Block a user