[systemd-devel] [PATCH 3/4] loginctl: use show_properties() to get login1 properties

Djalal Harouni tixxdz at opendz.org
Tue Dec 17 10:42:02 PST 2013


Commit f8f14b3654bcd introduced a regression that makes loginctl ignore
the "--property" option.

This patch fixes the bug, it uses the new show_properties() function to
query and filter properties.
---
 src/login/loginctl.c | 48 ++++++++++++++++++------------------------------
 1 file changed, 18 insertions(+), 30 deletions(-)

diff --git a/src/login/loginctl.c b/src/login/loginctl.c
index ce0c94b..01df999 100644
--- a/src/login/loginctl.c
+++ b/src/login/loginctl.c
@@ -588,25 +588,21 @@ static int show_properties(sd_bus *bus, const char *path, bool *new_line) {
 }
 
 static int show_session(sd_bus *bus, char **args, unsigned n) {
-        bool show_properties;
+        bool properties, new_line = false;
         unsigned i;
         int r;
 
         assert(bus);
         assert(args);
 
-        show_properties = !strstr(args[0], "status");
+        properties = !strstr(args[0], "status");
 
         pager_open_if_enabled();
 
-        if (show_properties && n <= 1) {
+        if (properties && n <= 1) {
                 /* If not argument is specified inspect the manager
                  * itself */
-                r = bus_print_all_properties(bus, "org.freedesktop.login1", "/org/freedesktop/login1", NULL, arg_all);
-                if (r < 0)
-                        log_error("Failed to query login manager.");
-
-                return r;
+                return show_properties(bus, "/org/freedesktop/login1", &new_line);
         }
 
         for (i = 1; i < n; i++) {
@@ -634,8 +630,8 @@ static int show_session(sd_bus *bus, char **args, unsigned n) {
                 if (r < 0)
                         return bus_log_parse_error(r);
 
-                if (show_properties)
-                        r = bus_print_all_properties(bus, "org.freedesktop.login1", path, NULL, arg_all);
+                if (properties)
+                        r = show_properties(bus, path, &new_line);
                 else
                         r = print_session_status_info(bus, path);
                 if (r < 0) {
@@ -648,25 +644,21 @@ static int show_session(sd_bus *bus, char **args, unsigned n) {
 }
 
 static int show_user(sd_bus *bus, char **args, unsigned n) {
-        bool show_properties;
+        bool properties, new_line = false;
         unsigned i;
         int r;
 
         assert(bus);
         assert(args);
 
-        show_properties = !strstr(args[0], "status");
+        properties = !strstr(args[0], "status");
 
         pager_open_if_enabled();
 
-        if (show_properties && n <= 1) {
+        if (properties && n <= 1) {
                 /* If not argument is specified inspect the manager
                  * itself */
-                r = bus_print_all_properties(bus, "org.freedesktop.login1", "/org/freedesktop/login1", NULL, arg_all);
-                if (r < 0)
-                        log_error("Failed to query login manager.");
-
-                return r;
+                return show_properties(bus, "/org/freedesktop/login1", &new_line);
         }
 
         for (i = 1; i < n; i++) {
@@ -701,8 +693,8 @@ static int show_user(sd_bus *bus, char **args, unsigned n) {
                 if (r < 0)
                         return bus_log_parse_error(r);
 
-                if (show_properties)
-                        r = bus_print_all_properties(bus, "org.freedesktop.login1", path, NULL, arg_all);
+                if (properties)
+                        r = show_properties(bus, path, &new_line);
                 else
                         r = print_user_status_info(bus, path);
                 if (r < 0) {
@@ -715,25 +707,21 @@ static int show_user(sd_bus *bus, char **args, unsigned n) {
 }
 
 static int show_seat(sd_bus *bus, char **args, unsigned n) {
-        bool show_properties;
+        bool properties, new_line = false;
         unsigned i;
         int r;
 
         assert(bus);
         assert(args);
 
-        show_properties = !strstr(args[0], "status");
+        properties = !strstr(args[0], "status");
 
         pager_open_if_enabled();
 
-        if (show_properties && n <= 1) {
+        if (properties && n <= 1) {
                 /* If not argument is specified inspect the manager
                  * itself */
-                r = bus_print_all_properties(bus, "org.freedesktop.login1", "/org/freedesktop/login1", NULL, arg_all);
-                if (r < 0)
-                        log_error("Failed to query login manager.");
-
-                return r;
+                return show_properties(bus, "/org/freedesktop/login1", &new_line);
         }
 
         for (i = 1; i < n; i++) {
@@ -761,8 +749,8 @@ static int show_seat(sd_bus *bus, char **args, unsigned n) {
                 if (r < 0)
                         return bus_log_parse_error(r);
 
-                if (show_properties)
-                        r = bus_print_all_properties(bus, "org.freedesktop.login1", path, NULL, arg_all);
+                if (properties)
+                        r = show_properties(bus, path, &new_line);
                 else
                         r = print_seat_status_info(bus, path);
                 if (r < 0) {
-- 
1.8.3.1



More information about the systemd-devel mailing list