summaryrefslogtreecommitdiff
path: root/src/login/loginctl.c
diff options
context:
space:
mode:
authorDjalal Harouni <tixxdz@opendz.org>2013-12-17 19:42:01 +0100
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2013-12-18 23:58:24 -0500
commit97aa7b478177f200d250dc0186f49e52b5f6e3c8 (patch)
tree13cedef2b40a5eab5366f4e353c71fd8426d5f94 /src/login/loginctl.c
parent1c3051eba4f2a3cbb8417f8d2e11699a67987700 (diff)
loginctl: use show_properties() to get login1 properties
Commit f8f14b3654bcd introduced a regression that makes loginctl ignore the "--property" option. This patch fixes the bug, it uses a new show_properties() function to query and filter properties.
Diffstat (limited to 'src/login/loginctl.c')
-rw-r--r--src/login/loginctl.c63
1 files changed, 33 insertions, 30 deletions
diff --git a/src/login/loginctl.c b/src/login/loginctl.c
index e03b0b93e1..01df99920e 100644
--- a/src/login/loginctl.c
+++ b/src/login/loginctl.c
@@ -572,26 +572,37 @@ finish:
return 0;
}
+static int show_properties(sd_bus *bus, const char *path, bool *new_line) {
+ int r;
+
+ if (*new_line)
+ printf("\n");
+
+ *new_line = true;
+
+ 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));
+
+ return r;
+}
+
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++) {
@@ -619,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) {
@@ -633,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++) {
@@ -686,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) {
@@ -700,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++) {
@@ -746,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) {