From 841aa8c0b484b96654b95d3c4e936e37da4c7dda Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 21 Dec 2013 14:20:29 -0500 Subject: [PATCH] loginctl,shell-completions: fix listing of sessions/users/seats --- man/loginctl.xml | 10 ++++++++++ man/systemctl.xml | 2 +- shell-completion/bash/loginctl | 6 +++--- shell-completion/zsh/_loginctl | 6 +++--- src/login/loginctl.c | 26 ++++++++++++++++++++------ 5 files changed, 37 insertions(+), 13 deletions(-) diff --git a/man/loginctl.xml b/man/loginctl.xml index eb4a2fd77..100ce491b 100644 --- a/man/loginctl.xml +++ b/man/loginctl.xml @@ -93,6 +93,16 @@ pager. + + + + + Do not print the legend, + i.e. the column headers and + the footer. + + + diff --git a/man/systemctl.xml b/man/systemctl.xml index 5e55f2928..8ce8661a8 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -294,7 +294,7 @@ along with systemd; If not, see . - Do not print a legend, i.e. the column headers and + Do not print the legend, i.e. the column headers and the footer with hints. diff --git a/shell-completion/bash/loginctl b/shell-completion/bash/loginctl index b0816a3b8..7263f7f7b 100644 --- a/shell-completion/bash/loginctl +++ b/shell-completion/bash/loginctl @@ -24,9 +24,9 @@ __contains_word () { done } -__get_all_sessions () { loginctl list-sessions | { while read -r a b; do printf "%s\n" "$a"; done; } ; } -__get_all_users () { loginctl list-users | { while read -r a b; do printf "%s\n" "$b"; done; } ; } -__get_all_seats () { loginctl list-seats | { while read -r a b; do printf "%s\n" "$a"; done; } ; } +__get_all_sessions () { loginctl --no-legend list-sessions | { while read -r a b; do printf "%s\n" "$a"; done; } ; } +__get_all_users () { loginctl --no-legend list-users | { while read -r a b; do printf "%s\n" "$b"; done; } ; } +__get_all_seats () { loginctl --no-legend list-seats | { while read -r a b; do printf "%s\n" "$a"; done; } ; } _loginctl () { local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} diff --git a/shell-completion/zsh/_loginctl b/shell-completion/zsh/_loginctl index a22fc9948..740629d53 100644 --- a/shell-completion/zsh/_loginctl +++ b/shell-completion/zsh/_loginctl @@ -1,8 +1,8 @@ #compdef loginctl -_loginctl_all_sessions(){_sys_all_sessions=($(loginctl list-sessions | { while read a b; do echo " $a"; done; }) )} -_loginctl_all_users() {_sys_all_users=( $(loginctl list-users | { while read a b; do echo " $a"; done; }) )} -_loginctl_all_seats() {_sys_all_seats=( $(loginctl list-seats | { while read a b; do echo " $a"; done; }) )} +_loginctl_all_sessions(){_sys_all_sessions=($(loginctl --no-legend list-sessions | { while read a b; do echo " $a"; done; }) )} +_loginctl_all_users() {_sys_all_users=( $(loginctl --no-legend list-users | { while read a b; do echo " $a"; done; }) )} +_loginctl_all_seats() {_sys_all_seats=( $(loginctl --no-legend list-seats | { while read a b; do echo " $a"; done; }) )} # Completion functions for SESSIONS for fun in session-status show-session activate lock-session unlock-session terminate-session kill-session ; do diff --git a/src/login/loginctl.c b/src/login/loginctl.c index 5f3221eee..7e6406647 100644 --- a/src/login/loginctl.c +++ b/src/login/loginctl.c @@ -45,6 +45,7 @@ static char **arg_property = NULL; static bool arg_all = false; static bool arg_full = false; static bool arg_no_pager = false; +static bool arg_legend = true; static const char *arg_kill_who = NULL; static int arg_signal = SIGTERM; static BusTransport arg_transport = BUS_TRANSPORT_LOCAL; @@ -99,7 +100,8 @@ static int list_sessions(sd_bus *bus, char **args, unsigned n) { if (r < 0) return bus_log_parse_error(r); - printf("%10s %10s %-16s %-16s\n", "SESSION", "UID", "USER", "SEAT"); + if (arg_legend) + printf("%10s %10s %-16s %-16s\n", "SESSION", "UID", "USER", "SEAT"); while ((r = sd_bus_message_read(reply, "(susso)", &id, &uid, &user, &seat, &object)) > 0) { printf("%10s %10u %-16s %-16s\n", id, (unsigned) uid, user, seat); @@ -108,7 +110,8 @@ static int list_sessions(sd_bus *bus, char **args, unsigned n) { if (r < 0) return bus_log_parse_error(r); - printf("\n%u sessions listed.\n", k); + if (arg_legend) + printf("\n%u sessions listed.\n", k); return 0; } @@ -140,7 +143,8 @@ static int list_users(sd_bus *bus, char **args, unsigned n) { if (r < 0) return bus_log_parse_error(r); - printf("%10s %-16s\n", "UID", "USER"); + if (arg_legend) + printf("%10s %-16s\n", "UID", "USER"); while ((r = sd_bus_message_read(reply, "(uso)", &uid, &user, &object)) > 0) { printf("%10u %-16s\n", (unsigned) uid, user); @@ -149,7 +153,8 @@ static int list_users(sd_bus *bus, char **args, unsigned n) { if (r < 0) return bus_log_parse_error(r); - printf("\n%u users listed.\n", k); + if (arg_legend) + printf("\n%u users listed.\n", k); return 0; } @@ -180,7 +185,8 @@ static int list_seats(sd_bus *bus, char **args, unsigned n) { if (r < 0) return bus_log_parse_error(r); - printf("%-16s\n", "SEAT"); + if (arg_legend) + printf("%-16s\n", "SEAT"); while ((r = sd_bus_message_read(reply, "(so)", &seat, &object)) > 0) { printf("%-16s\n", seat); @@ -189,7 +195,8 @@ static int list_seats(sd_bus *bus, char **args, unsigned n) { if (r < 0) return bus_log_parse_error(r); - printf("\n%u seats listed.\n", k); + if (arg_legend) + printf("\n%u seats listed.\n", k); return 0; } @@ -1040,6 +1047,7 @@ static int help(void) { " -h --help Show this help\n" " --version Show package version\n" " --no-pager Do not pipe output into a pager\n" + " --no-legend Do not show the headers and footers\n" " --no-ask-password Don't prompt for password\n" " -H --host=[USER@]HOST Operate on remote host\n" " -M --machine=CONTAINER Operate on local container\n" @@ -1082,6 +1090,7 @@ static int parse_argv(int argc, char *argv[]) { enum { ARG_VERSION = 0x100, ARG_NO_PAGER, + ARG_NO_LEGEND, ARG_KILL_WHO, ARG_NO_ASK_PASSWORD, }; @@ -1093,6 +1102,7 @@ static int parse_argv(int argc, char *argv[]) { { "all", no_argument, NULL, 'a' }, { "full", no_argument, NULL, 'l' }, { "no-pager", no_argument, NULL, ARG_NO_PAGER }, + { "no-legend", no_argument, NULL, ARG_NO_LEGEND }, { "kill-who", required_argument, NULL, ARG_KILL_WHO }, { "signal", required_argument, NULL, 's' }, { "host", required_argument, NULL, 'H' }, @@ -1142,6 +1152,10 @@ static int parse_argv(int argc, char *argv[]) { arg_no_pager = true; break; + case ARG_NO_LEGEND: + arg_legend = false; + break; + case ARG_NO_ASK_PASSWORD: arg_ask_password = false; break; -- 2.30.2