mirror of
https://github.com/AuxXxilium/eudev.git
synced 2025-01-21 11:37:31 +07:00
systemctl: limit some column widths to widest actually used
old UNIT LOAD ACTIVE SUB JOB dev-hugepages.automount loaded active running Huge Page dev-mqueue.automount loaded active waiting POSIX Mes proc-sys...misc.automount loaded active waiting Arbitrary sys-kern...ebug.automount loaded active running Debug Fil new UNIT LOAD ACTIVE SUB JOB dev-hugepages.automount loaded active running Huge Pages File System Automount Poi dev-mqueue.automount loaded active waiting POSIX Message Queue File System Auto systemd-shutdownd.socket loaded active listening systemd Delayed Shutdown Socket
This commit is contained in:
parent
eb68c413aa
commit
3333022269
@ -251,20 +251,39 @@ static int compare_unit_info(const void *a, const void *b) {
|
|||||||
return strcasecmp(u->id, v->id);
|
return strcasecmp(u->id, v->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool output_show_job(const struct unit_info *u) {
|
||||||
|
const char *dot;
|
||||||
|
return (!arg_type || ((dot = strrchr(u->id, '.')) &&
|
||||||
|
streq(dot+1, arg_type))) &&
|
||||||
|
(arg_all || !(streq(u->active_state, "inactive") || u->following[0]) || u->job_id > 0);
|
||||||
|
}
|
||||||
|
|
||||||
static void output_units_list(const struct unit_info *unit_infos, unsigned c) {
|
static void output_units_list(const struct unit_info *unit_infos, unsigned c) {
|
||||||
|
unsigned active_len, sub_len, job_len;
|
||||||
|
|
||||||
|
active_len = strlen("ACTIVE");
|
||||||
|
sub_len = strlen("SUB");
|
||||||
|
job_len = strlen("JOB");
|
||||||
|
for (const struct unit_info *u = unit_infos; u < unit_infos + c; u++) {
|
||||||
|
if (output_show_job(u)) {
|
||||||
|
active_len = MAX(active_len, strlen(u->active_state));
|
||||||
|
sub_len = MAX(sub_len, strlen(u->sub_state));
|
||||||
|
if (u->job_id != 0)
|
||||||
|
job_len = MAX(job_len, strlen(u->job_type));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (on_tty()) {
|
if (on_tty()) {
|
||||||
|
printf("%-25s %-6s %-*s %-*s %-*s", "UNIT", "LOAD",
|
||||||
|
active_len, "ACTIVE", sub_len, "SUB", job_len, "JOB");
|
||||||
if (columns() >= 80+12 || arg_full)
|
if (columns() >= 80+12 || arg_full)
|
||||||
printf("%-25s %-6s %-12s %-18s %-15s %s\n", "UNIT", "LOAD", "ACTIVE", "SUB", "JOB", "DESCRIPTION");
|
printf(" %s\n", "DESCRIPTION");
|
||||||
else
|
else
|
||||||
printf("%-25s %-6s %-12s %-18s %-15s\n", "UNIT", "LOAD", "ACTIVE", "SUB", "JOB");
|
printf("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const struct unit_info *u = unit_infos; u < unit_infos + c; u++) {
|
for (const struct unit_info *u = unit_infos; u < unit_infos + c; u++) {
|
||||||
const char *dot;
|
if (output_show_job(u)) {
|
||||||
|
|
||||||
if ((!arg_type || ((dot = strrchr(u->id, '.')) &&
|
|
||||||
streq(dot+1, arg_type))) &&
|
|
||||||
(arg_all || !(streq(u->active_state, "inactive") || u->following[0]) || u->job_id > 0)) {
|
|
||||||
char *e;
|
char *e;
|
||||||
int a = 0, b = 0;
|
int a = 0, b = 0;
|
||||||
const char *on_loaded, *off_loaded;
|
const char *on_loaded, *off_loaded;
|
||||||
@ -284,10 +303,11 @@ static void output_units_list(const struct unit_info *unit_infos, unsigned c) {
|
|||||||
|
|
||||||
e = arg_full ? NULL : ellipsize(u->id, 25, 33);
|
e = arg_full ? NULL : ellipsize(u->id, 25, 33);
|
||||||
|
|
||||||
printf("%-25s %s%-6s%s %s%-12s %-18s%s%n",
|
printf("%-25s %s%-6s%s %s%-*s %-*s%s%n",
|
||||||
e ? e : u->id,
|
e ? e : u->id,
|
||||||
on_loaded, u->load_state, off_loaded,
|
on_loaded, u->load_state, off_loaded,
|
||||||
on_active, u->active_state, u->sub_state, off_active,
|
on_active, active_len, u->active_state,
|
||||||
|
sub_len, u->sub_state, off_active,
|
||||||
&a);
|
&a);
|
||||||
|
|
||||||
free(e);
|
free(e);
|
||||||
@ -296,13 +316,13 @@ static void output_units_list(const struct unit_info *unit_infos, unsigned c) {
|
|||||||
a -= strlen(on_active) + strlen(off_active);
|
a -= strlen(on_active) + strlen(off_active);
|
||||||
|
|
||||||
if (u->job_id != 0)
|
if (u->job_id != 0)
|
||||||
printf(" %-15s%n", u->job_type, &b);
|
printf(" %-*s", job_len, u->job_type);
|
||||||
else
|
else
|
||||||
b = 1 + 15;
|
b = 1 + job_len;
|
||||||
|
|
||||||
if (a + b + 1 < columns()) {
|
if (a + b + 1 < columns()) {
|
||||||
if (u->job_id == 0)
|
if (u->job_id == 0)
|
||||||
printf(" ");
|
printf(" %-*s", job_len, "");
|
||||||
|
|
||||||
if (arg_full)
|
if (arg_full)
|
||||||
printf(" %s", u->description);
|
printf(" %s", u->description);
|
||||||
|
Loading…
Reference in New Issue
Block a user