loginctl: make "loginctl session-status" without session ID show the caller's session status

Similar for user-status and seat-status.
This commit is contained in:
Lennart Poettering 2015-01-09 01:43:53 +01:00
parent ff0af2a166
commit 86e1f46f92
2 changed files with 46 additions and 25 deletions

View file

@ -209,16 +209,20 @@
</varlistentry>
<varlistentry>
<term><command>session-status</command> <replaceable>ID</replaceable>...</term>
<term><command>session-status</command> <optional><replaceable>ID</replaceable>...</optional></term>
<listitem><para>Show terse runtime
status information about one or more
sessions, followed by the most recent
log data from the journal. This
function is intended to generate
human-readable output. If you are
looking for computer-parsable output,
use <command>show-session</command>
log data from the journal. Takes one
or more session identifiers as
parameters. If no session identifiers
are passed the status of the caller's
session is shown. This function is
intended to generate human-readable
output. If you are looking for
computer-parsable output, use
<command>show-session</command>
instead.</para></listitem>
</varlistentry>
@ -307,12 +311,16 @@
</varlistentry>
<varlistentry>
<term><command>user-status</command> <replaceable>USER</replaceable>...</term>
<term><command>user-status</command> <optional><replaceable>USER</replaceable>...</optional></term>
<listitem><para>Show terse runtime
status information about one or more
logged in users, followed by the most
recent log data from the journal. This
recent log data from the
journal. Takes one or more user names
or numeric user IDs as parameters. If
no parameters are passed the status of
the caller's user is shown. This
function is intended to generate
human-readable output. If you are
looking for computer-parsable output,
@ -390,12 +398,15 @@
</varlistentry>
<varlistentry>
<term><command>seat-status</command> <replaceable>NAME</replaceable>...</term>
<term><command>seat-status</command> <optional><replaceable>NAME</replaceable>...</optional></term>
<listitem><para>Show terse runtime
status information about one or more
seats. This function is
intended to generate human-readable
seats. Takes one or more seat names as
parameters. If no seat names are
passed the status of the caller's
session's seat is shown. This function
is intended to generate human-readable
output. If you are looking for
computer-parsable output, use
<command>show-seat</command>

View file

@ -684,10 +684,14 @@ static int show_session(int argc, char *argv[], void *userdata) {
pager_open_if_enabled();
if (properties && argc <= 1) {
if (argc <= 1) {
/* If not argument is specified inspect the manager
* itself */
return show_properties(bus, "/org/freedesktop/login1", &new_line);
if (properties)
return show_properties(bus, "/org/freedesktop/login1", &new_line);
/* And in the pretty case, show data of the calling session */
return print_session_status_info(bus, "/org/freedesktop/login1/session/self", &new_line);
}
for (i = 1; i < argc; i++) {
@ -736,10 +740,13 @@ static int show_user(int argc, char *argv[], void *userdata) {
pager_open_if_enabled();
if (properties && argc <= 1) {
if (argc <= 1) {
/* If not argument is specified inspect the manager
* itself */
return show_properties(bus, "/org/freedesktop/login1", &new_line);
if (properties)
return show_properties(bus, "/org/freedesktop/login1", &new_line);
return print_user_status_info(bus, "/org/freedesktop/login1/user/self", &new_line);
}
for (i = 1; i < argc; i++) {
@ -793,10 +800,13 @@ static int show_seat(int argc, char *argv[], void *userdata) {
pager_open_if_enabled();
if (properties && argc <= 1) {
if (argc <= 1) {
/* If not argument is specified inspect the manager
* itself */
return show_properties(bus, "/org/freedesktop/login1", &new_line);
if (properties)
return show_properties(bus, "/org/freedesktop/login1", &new_line);
return print_seat_status_info(bus, "/org/freedesktop/login1/seat/self", &new_line);
}
for (i = 1; i < argc; i++) {
@ -1133,7 +1143,7 @@ static int help(int argc, char *argv[], void *userdata) {
" verbose, export, json, json-pretty, json-sse, cat)\n\n"
"Session Commands:\n"
" list-sessions List sessions\n"
" session-status ID... Show session status\n"
" session-status [ID...] Show session status\n"
" show-session [ID...] Show properties of sessions or the manager\n"
" activate ID Activate a session\n"
" lock-session ID... Screen lock one or more sessions\n"
@ -1144,7 +1154,7 @@ static int help(int argc, char *argv[], void *userdata) {
" kill-session ID... Send signal to processes of a session\n\n"
"User Commands:\n"
" list-users List users\n"
" user-status USER... Show user status\n"
" user-status [USER...] Show user status\n"
" show-user [USER...] Show properties of users or the manager\n"
" enable-linger USER... Enable linger state of one or more users\n"
" disable-linger USER... Disable linger state of one or more users\n"
@ -1152,8 +1162,8 @@ static int help(int argc, char *argv[], void *userdata) {
" kill-user USER... Send signal to processes of a user\n\n"
"Seat Commands:\n"
" list-seats List seats\n"
" seat-status NAME... Show seat status\n"
" show-seat NAME... Show properties of one or more seats\n"
" seat-status [NAME...] Show seat status\n"
" show-seat [NAME...] Show properties of seats or the manager\n"
" attach NAME DEVICE... Attach one or more devices to a seat\n"
" flush-devices Flush all device associations\n"
" terminate-seat NAME... Terminate all sessions on one or more seats\n"
@ -1292,7 +1302,7 @@ static int loginctl_main(int argc, char *argv[], sd_bus *bus) {
static const Verb verbs[] = {
{ "help", VERB_ANY, VERB_ANY, 0, help },
{ "list-sessions", VERB_ANY, 1, VERB_DEFAULT, list_sessions },
{ "session-status", 2, VERB_ANY, 0, show_session },
{ "session-status", VERB_ANY, VERB_ANY, 0, show_session },
{ "show-session", VERB_ANY, VERB_ANY, 0, show_session },
{ "activate", 2, 2, 0, activate },
{ "lock-session", 2, VERB_ANY, 0, activate },
@ -1302,15 +1312,15 @@ static int loginctl_main(int argc, char *argv[], sd_bus *bus) {
{ "terminate-session", 2, VERB_ANY, 0, activate },
{ "kill-session", 2, VERB_ANY, 0, kill_session },
{ "list-users", VERB_ANY, 1, 0, list_users },
{ "user-status", 2, VERB_ANY, 0, show_user },
{ "user-status", VERB_ANY, VERB_ANY, 0, show_user },
{ "show-user", VERB_ANY, VERB_ANY, 0, show_user },
{ "enable-linger", 2, VERB_ANY, 0, enable_linger },
{ "disable-linger", 2, VERB_ANY, 0, enable_linger },
{ "terminate-user", 2, VERB_ANY, 0, terminate_user },
{ "kill-user", 2, VERB_ANY, 0, kill_user },
{ "list-seats", VERB_ANY, 1, 0, list_seats },
{ "seat-status", 2, VERB_ANY, 0, show_seat },
{ "show-seat", VERB_ANY, 1, 0, show_seat },
{ "seat-status", VERB_ANY, VERB_ANY, 0, show_seat },
{ "show-seat", VERB_ANY, VERB_ANY, 0, show_seat },
{ "attach", 3, VERB_ANY, 0, attach },
{ "flush-devices", VERB_ANY, 1, 0, flush_devices },
{ "terminate-seat", 2, VERB_ANY, 0, terminate_seat },