X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flogin%2Floginctl.c;h=03abb7594f1ca952a0662f222aa04465ab2505a3;hp=914f3169989551dd8c54de0ef6537b2efca7b6fd;hb=de33fc625725d199629ed074d6278504deb23deb;hpb=016284c352084cdbf856905704070c1f30970f58 diff --git a/src/login/loginctl.c b/src/login/loginctl.c index 914f31699..03abb7594 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) }, @@ -382,10 +384,8 @@ static int print_session_status_info(sd_bus *bus, const char *path, bool *new_li int r; r = bus_map_all_properties(bus, "org.freedesktop.login1", path, map, &i); - if (r < 0) { - log_error("Could not get properties: %s", strerror(-r)); - return r; - } + if (r < 0) + return log_error_errno(r, "Could not get properties: %m"); if (*new_line) printf("\n"); @@ -423,7 +423,7 @@ static int print_session_status_info(sd_bus *bus, const char *path, bool *new_li printf("\t Seat: %s", i.seat); if (i.vtnr > 0) - printf("; vc%i", i.vtnr); + printf("; vc%u", i.vtnr); printf("\n"); } @@ -453,13 +453,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); @@ -491,7 +496,7 @@ static int print_user_status_info(sd_bus *bus, const char *path, bool *new_line) r = bus_map_all_properties(bus, "org.freedesktop.login1", path, map, &i); if (r < 0) { - log_error("Could not get properties: %s", strerror(-r)); + log_error_errno(r, "Could not get properties: %m"); goto finish; } @@ -555,7 +560,7 @@ static int print_seat_status_info(sd_bus *bus, const char *path, bool *new_line) r = bus_map_all_properties(bus, "org.freedesktop.login1", path, map, &i); if (r < 0) { - log_error("Could not get properties: %s", strerror(-r)); + log_error_errno(r, "Could not get properties: %m"); goto finish; } @@ -610,7 +615,7 @@ static int show_properties(sd_bus *bus, const char *path, bool *new_line) { r = bus_print_all_properties(bus, "org.freedesktop.login1", path, arg_property, arg_all); if (r < 0) - log_error("Could not get properties: %s", strerror(-r)); + log_error_errno(r, "Could not get properties: %m"); return r; } @@ -692,10 +697,8 @@ static int show_user(sd_bus *bus, char **args, unsigned n) { uid_t uid; r = get_user_creds((const char**) (args+i), &uid, NULL, NULL, NULL); - if (r < 0) { - log_error("Failed to look up user %s: %s", args[i], strerror(-r)); - return r; - } + if (r < 0) + return log_error_errno(r, "Failed to look up user %s: %m", args[i]); r = sd_bus_call_method( bus, @@ -852,10 +855,8 @@ static int enable_linger(sd_bus *bus, char **args, unsigned n) { uid_t uid; r = get_user_creds((const char**) (args+i), &uid, NULL, NULL, NULL); - if (r < 0) { - log_error("Failed to look up user %s: %s", args[i], strerror(-r)); - return r; - } + if (r < 0) + return log_error_errno(r, "Failed to look up user %s: %m", args[i]); r = sd_bus_call_method ( bus, @@ -885,10 +886,8 @@ static int terminate_user(sd_bus *bus, char **args, unsigned n) { uid_t uid; r = get_user_creds((const char**) (args+i), &uid, NULL, NULL, NULL); - if (r < 0) { - log_error("Failed to look up user %s: %s", args[i], strerror(-r)); - return r; - } + if (r < 0) + return log_error_errno(r, "Failed to look up user %s: %m", args[i]); r = sd_bus_call_method ( bus, @@ -921,10 +920,8 @@ static int kill_user(sd_bus *bus, char **args, unsigned n) { uid_t uid; r = get_user_creds((const char**) (args+i), &uid, NULL, NULL, NULL); - if (r < 0) { - log_error("Failed to look up user %s: %s", args[i], strerror(-r)); - return r; - } + if (r < 0) + return log_error_errno(r, "Failed to look up user %s: %m", args[i]); r = sd_bus_call_method ( bus, @@ -1040,8 +1037,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 +1075,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 +1110,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); @@ -1178,7 +1173,7 @@ static int parse_argv(int argc, char *argv[]) { break; case 'M': - arg_transport = BUS_TRANSPORT_CONTAINER; + arg_transport = BUS_TRANSPORT_MACHINE; arg_host = optarg; break; @@ -1188,7 +1183,6 @@ static int parse_argv(int argc, char *argv[]) { default: assert_not_reached("Unhandled option"); } - } return 1; } @@ -1291,7 +1285,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, ""); @@ -1304,7 +1298,7 @@ int main(int argc, char *argv[]) { r = bus_open_transport(arg_transport, arg_host, false, &bus); if (r < 0) { - log_error("Failed to create bus connection: %s", strerror(-r)); + log_error_errno(r, "Failed to create bus connection: %m"); goto finish; }