summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2013-12-21 14:20:29 -0500
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2013-12-21 18:35:27 -0500
commit841aa8c0b484b96654b95d3c4e936e37da4c7dda (patch)
treee69969003e2c5674274b724592bfc8d8051c45d6
parent40be878abb86308f1aa025f5bbc77dff16383025 (diff)
loginctl,shell-completions: fix listing of sessions/users/seats
-rw-r--r--man/loginctl.xml10
-rw-r--r--man/systemctl.xml2
-rw-r--r--shell-completion/bash/loginctl6
-rw-r--r--shell-completion/zsh/_loginctl6
-rw-r--r--src/login/loginctl.c26
5 files changed, 37 insertions, 13 deletions
diff --git a/man/loginctl.xml b/man/loginctl.xml
index eb4a2fd77a..100ce491b0 100644
--- a/man/loginctl.xml
+++ b/man/loginctl.xml
@@ -94,6 +94,16 @@
</varlistentry>
<varlistentry>
+ <term><option>--no-legend</option></term>
+
+ <listitem>
+ <para>Do not print the legend,
+ i.e. the column headers and
+ the footer.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term><option>--no-ask-password</option></term>
<listitem><para>Do not query the user
diff --git a/man/systemctl.xml b/man/systemctl.xml
index 5e55f29287..8ce8661a8e 100644
--- a/man/systemctl.xml
+++ b/man/systemctl.xml
@@ -294,7 +294,7 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
<term><option>--no-legend</option></term>
<listitem>
- <para>Do not print a legend, i.e. the column headers and
+ <para>Do not print the legend, i.e. the column headers and
the footer with hints.</para>
</listitem>
</varlistentry>
diff --git a/shell-completion/bash/loginctl b/shell-completion/bash/loginctl
index b0816a3b86..7263f7f7bf 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 a22fc9948a..740629d53d 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 5f3221eee8..7e64066479 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;