Skip to content

Commit

Permalink
loginctl: list-sessions: also show state
Browse files Browse the repository at this point in the history
  • Loading branch information
YHNdnzj committed May 16, 2023
1 parent 486f61a commit 8b6c039
Showing 1 changed file with 20 additions and 3 deletions.
23 changes: 20 additions & 3 deletions src/login/loginctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ static int list_sessions(int argc, char *argv[], void *userdata) {
if (r < 0)
return bus_log_parse_error(r);

table = table_new("session", "uid", "user", "seat", "tty");
table = table_new("session", "uid", "user", "seat", "tty", "state");
if (!table)
return log_oom();

Expand All @@ -143,7 +143,7 @@ static int list_sessions(int argc, char *argv[], void *userdata) {

for (;;) {
_cleanup_(sd_bus_error_free) sd_bus_error error_property = SD_BUS_ERROR_NULL;
_cleanup_free_ char *tty = NULL;
_cleanup_free_ char *tty = NULL, *state = NULL;
const char *id, *user, *seat, *object;
uint32_t uid;

Expand Down Expand Up @@ -171,12 +171,29 @@ static int list_sessions(int argc, char *argv[], void *userdata) {
sd_bus_error_free(&error_property);
}

r = sd_bus_get_property_string(bus,
"org.freedesktop.login1",
object,
"org.freedesktop.login1.Session",
"State",
&error_property,
&state);
if (r < 0) {
if (sd_bus_error_has_name(&error_property, SD_BUS_ERROR_UNKNOWN_OBJECT))
/* The session is already closed when we're querying the property */
continue;

return log_error_errno(r, "Failed to get state for session %s: %s",
id, bus_error_message(&error_property, r));
}

r = table_add_many(table,
TABLE_STRING, id,
TABLE_UID, (uid_t) uid,
TABLE_STRING, user,
TABLE_STRING, seat,
TABLE_STRING, strna(tty));
TABLE_STRING, strna(tty),
TABLE_STRING, state);
if (r < 0)
return table_log_add_error(r);
}
Expand Down

0 comments on commit 8b6c039

Please sign in to comment.