chiark / gitweb /
systemctl: fix enable/disable reply handling
[elogind.git] / src / login / loginctl.c
index cb05907ff12dc97cf62c523475663e6b1eed2d0f..2aedbcf9225c6cc14458ac7319592b3500f0109a 100644 (file)
@@ -53,7 +53,6 @@ static char *arg_host = NULL;
 
 static void pager_open_if_enabled(void) {
 
-        /* Cache result before we open the pager */
         if (arg_no_pager)
                 return;
 
@@ -67,12 +66,10 @@ static void polkit_agent_open_if_enabled(void) {
         if (!arg_ask_password)
                 return;
 
-        polkit_agent_open();
-}
+        if (arg_transport != BUS_TRANSPORT_LOCAL)
+                return;
 
-static int log_parse_error(int r) {
-        log_error("Failed to parse message: %s", strerror(-r));
-        return r;
+        polkit_agent_open();
 }
 
 static int list_sessions(sd_bus *bus, char **args, unsigned n) {
@@ -100,7 +97,7 @@ static int list_sessions(sd_bus *bus, char **args, unsigned n) {
 
         r = sd_bus_message_enter_container(reply, 'a', "(susso)");
         if (r < 0)
-                return log_parse_error(r);
+                return bus_log_parse_error(r);
 
         printf("%10s %10s %-16s %-16s\n", "SESSION", "UID", "USER", "SEAT");
 
@@ -109,7 +106,7 @@ static int list_sessions(sd_bus *bus, char **args, unsigned n) {
                 k++;
         }
         if (r < 0)
-                return log_parse_error(r);
+                return bus_log_parse_error(r);
 
         printf("\n%u sessions listed.\n", k);
 
@@ -141,7 +138,7 @@ static int list_users(sd_bus *bus, char **args, unsigned n) {
 
         r = sd_bus_message_enter_container(reply, 'a', "(uso)");
         if (r < 0)
-                return log_parse_error(r);
+                return bus_log_parse_error(r);
 
         printf("%10s %-16s\n", "UID", "USER");
 
@@ -150,7 +147,7 @@ static int list_users(sd_bus *bus, char **args, unsigned n) {
                 k++;
         }
         if (r < 0)
-                return log_parse_error(r);
+                return bus_log_parse_error(r);
 
         printf("\n%u users listed.\n", k);
 
@@ -181,7 +178,7 @@ static int list_seats(sd_bus *bus, char **args, unsigned n) {
 
         r = sd_bus_message_enter_container(reply, 'a', "(so)");
         if (r < 0)
-                return log_parse_error(r);
+                return bus_log_parse_error(r);
 
         printf("%-16s\n", "SEAT");
 
@@ -190,7 +187,7 @@ static int list_seats(sd_bus *bus, char **args, unsigned n) {
                 k++;
         }
         if (r < 0)
-                return log_parse_error(r);
+                return bus_log_parse_error(r);
 
         printf("\n%u seats listed.\n", k);
 
@@ -372,9 +369,9 @@ static int print_session_status_info(sd_bus *bus, const char *path) {
                 {}
         };
 
-        SessionStatusInfo i = {};
         char since1[FORMAT_TIMESTAMP_RELATIVE_MAX], *s1;
         char since2[FORMAT_TIMESTAMP_MAX], *s2;
+        SessionStatusInfo i = {};
         int r;
 
         r = bus_map_all_properties(bus, "org.freedesktop.login1", path, map, &i);
@@ -527,8 +524,8 @@ static int print_seat_status_info(sd_bus *bus, const char *path) {
 
         static const struct bus_properties_map map[]  = {
                 { "Id",            "s",     NULL, offsetof(SeatStatusInfo, id) },
-                { "ActiveSession", "(so)",  &prop_map_first_of_struct, offsetof(SeatStatusInfo, active_session) },
-                { "Sessions",      "a(so)", &prop_map_sessions_strv, offsetof(SeatStatusInfo, sessions) },
+                { "ActiveSession", "(so)",  prop_map_first_of_struct, offsetof(SeatStatusInfo, active_session) },
+                { "Sessions",      "a(so)", prop_map_sessions_strv, offsetof(SeatStatusInfo, sessions) },
                 {}
         };
 
@@ -620,7 +617,7 @@ static int show_session(sd_bus *bus, char **args, unsigned n) {
 
                 r = sd_bus_message_read(reply, "o", &path);
                 if (r < 0)
-                        return log_parse_error(r);
+                        return bus_log_parse_error(r);
 
                 if (show_properties)
                         r = bus_print_all_properties(bus, "org.freedesktop.login1", path, NULL, arg_all);
@@ -687,7 +684,7 @@ static int show_user(sd_bus *bus, char **args, unsigned n) {
 
                 r = sd_bus_message_read(reply, "o", &path);
                 if (r < 0)
-                        return log_parse_error(r);
+                        return bus_log_parse_error(r);
 
                 if (show_properties)
                         r = bus_print_all_properties(bus, "org.freedesktop.login1", path, NULL, arg_all);
@@ -747,7 +744,7 @@ static int show_seat(sd_bus *bus, char **args, unsigned n) {
 
                 r = sd_bus_message_read(reply, "o", &path);
                 if (r < 0)
-                        return log_parse_error(r);
+                        return bus_log_parse_error(r);
 
                 if (show_properties)
                         r = bus_print_all_properties(bus, "org.freedesktop.login1", path, NULL, arg_all);