X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flogin%2Floginctl.c;h=fcdf6275e9cd6fef21cabaece41053fc452eebe9;hb=31cf921abbeafc9dae2d5c777f3e2285e6f4c19d;hp=914f3169989551dd8c54de0ef6537b2efca7b6fd;hpb=016284c352084cdbf856905704070c1f30970f58;p=elogind.git diff --git a/src/login/loginctl.c b/src/login/loginctl.c index 914f31699..fcdf6275e 100644 --- a/src/login/loginctl.c +++ b/src/login/loginctl.c @@ -271,6 +271,7 @@ typedef struct SessionStatusInfo { const char *class; const char *state; const char *scope; + const char *desktop; } SessionStatusInfo; typedef struct UserStatusInfo { @@ -363,6 +364,7 @@ static int print_session_status_info(sd_bus *bus, const char *path, bool *new_li { "RemoteHost", "s", NULL, offsetof(SessionStatusInfo, remote_host) }, { "RemoteUser", "s", NULL, offsetof(SessionStatusInfo, remote_user) }, { "Service", "s", NULL, offsetof(SessionStatusInfo, service) }, + { "Desktop", "s", NULL, offsetof(SessionStatusInfo, desktop) }, { "Type", "s", NULL, offsetof(SessionStatusInfo, type) }, { "Class", "s", NULL, offsetof(SessionStatusInfo, class) }, { "Scope", "s", NULL, offsetof(SessionStatusInfo, scope) }, @@ -453,13 +455,18 @@ static int print_session_status_info(sd_bus *bus, const char *path, bool *new_li printf("\n"); } else if (i.type) { - printf("\t Type: %s\n", i.type); + printf("\t Type: %s", i.type); if (i.class) printf("; class %s", i.class); + + printf("\n"); } else if (i.class) printf("\t Class: %s\n", i.class); + if (!isempty(i.desktop)) + printf("\t Desktop: %s\n", i.desktop); + if (i.state) printf("\t State: %s\n", i.state); @@ -1040,8 +1047,7 @@ static int terminate_seat(sd_bus *bus, char **args, unsigned n) { return 0; } -static int help(void) { - +static void help(void) { printf("%s [OPTIONS...] {COMMAND} ...\n\n" "Send control commands to or query the login manager.\n\n" " -h --help Show this help\n" @@ -1079,10 +1085,8 @@ static int help(void) { " show-seat NAME... Show properties of one or more seats\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", - program_invocation_short_name); - - return 0; + " terminate-seat NAME... Terminate all sessions on one or more seats\n" + , program_invocation_short_name); } static int parse_argv(int argc, char *argv[]) { @@ -1116,12 +1120,13 @@ static int parse_argv(int argc, char *argv[]) { assert(argc >= 0); assert(argv); - while ((c = getopt_long(argc, argv, "hp:als:H:M:", options, NULL)) >= 0) { + while ((c = getopt_long(argc, argv, "hp:als:H:M:", options, NULL)) >= 0) switch (c) { case 'h': - return help(); + help(); + return 0; case ARG_VERSION: puts(PACKAGE_STRING); @@ -1188,7 +1193,6 @@ static int parse_argv(int argc, char *argv[]) { default: assert_not_reached("Unhandled option"); } - } return 1; } @@ -1291,7 +1295,7 @@ static int loginctl_main(sd_bus *bus, int argc, char *argv[]) { } int main(int argc, char *argv[]) { - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; int r; setlocale(LC_ALL, "");