chiark / gitweb /
cgls,loginctl,systemctl: fix -l
[elogind.git] / src / login / loginctl.c
index 6c229c64e31cf646bcc32c4e8976dfeea00bdc29..1b9723fdbf5856eddff1a8c43fc470019033985e 100644 (file)
@@ -50,7 +50,8 @@ static enum transport {
         TRANSPORT_POLKIT
 } arg_transport = TRANSPORT_NORMAL;
 static bool arg_ask_password = true;
-static const char *arg_host = NULL;
+static char *arg_host = NULL;
+static char *arg_user = NULL;
 
 static void pager_open_if_enabled(void) {
 
@@ -834,17 +835,13 @@ static int show_one(const char *verb, DBusConnection *bus, const char *path, boo
         const char *interface = "";
         int r;
         DBusMessageIter iter, sub, sub2, sub3;
-        SessionStatusInfo session_info;
-        UserStatusInfo user_info;
-        SeatStatusInfo seat_info;
+        SessionStatusInfo session_info = {};
+        UserStatusInfo user_info = {};
+        SeatStatusInfo seat_info = {};
 
         assert(path);
         assert(new_line);
 
-        zero(session_info);
-        zero(user_info);
-        zero(seat_info);
-
         r = bus_method_call_with_reply(
                         bus,
                         "org.freedesktop.login1",
@@ -1300,7 +1297,7 @@ static int help(void) {
                "  -p --property=NAME     Show only properties by this name\n"
                "  -a --all               Show all properties, including empty ones\n"
                "     --kill-who=WHO      Who to send signal to\n"
-               "  --full                 Do not ellipsize output\n"
+               "  -l --full              Do not ellipsize output\n"
                "  -s --signal=SIGNAL     Which signal to send\n"
                "     --no-ask-password   Don't prompt for password\n"
                "  -H --host=[USER@]HOST  Show information for remote host\n"
@@ -1342,7 +1339,6 @@ static int parse_argv(int argc, char *argv[]) {
                 ARG_NO_PAGER,
                 ARG_KILL_WHO,
                 ARG_NO_ASK_PASSWORD,
-                ARG_FULL,
         };
 
         static const struct option options[] = {
@@ -1350,13 +1346,13 @@ static int parse_argv(int argc, char *argv[]) {
                 { "version",         no_argument,       NULL, ARG_VERSION         },
                 { "property",        required_argument, NULL, 'p'                 },
                 { "all",             no_argument,       NULL, 'a'                 },
+                { "full",            no_argument,       NULL, 'l'                 },
                 { "no-pager",        no_argument,       NULL, ARG_NO_PAGER        },
                 { "kill-who",        required_argument, NULL, ARG_KILL_WHO        },
                 { "signal",          required_argument, NULL, 's'                 },
                 { "host",            required_argument, NULL, 'H'                 },
                 { "privileged",      no_argument,       NULL, 'P'                 },
                 { "no-ask-password", no_argument,       NULL, ARG_NO_ASK_PASSWORD },
-                { "full",            no_argument,       NULL, ARG_FULL            },
                 { NULL,              0,                 NULL, 0                   }
         };
 
@@ -1365,7 +1361,7 @@ static int parse_argv(int argc, char *argv[]) {
         assert(argc >= 0);
         assert(argv);
 
-        while ((c = getopt_long(argc, argv, "hp:as:H:P", options, NULL)) >= 0) {
+        while ((c = getopt_long(argc, argv, "hp:als:H:P", options, NULL)) >= 0) {
 
                 switch (c) {
 
@@ -1399,6 +1395,10 @@ static int parse_argv(int argc, char *argv[]) {
                         arg_all = true;
                         break;
 
+                case 'l':
+                        arg_full = true;
+                        break;
+
                 case ARG_NO_PAGER:
                         arg_no_pager = true;
                         break;
@@ -1425,11 +1425,7 @@ static int parse_argv(int argc, char *argv[]) {
 
                 case 'H':
                         arg_transport = TRANSPORT_SSH;
-                        arg_host = optarg;
-                        break;
-
-                case ARG_FULL:
-                        arg_full = true;
+                        parse_user_at_host(optarg, &arg_user, &arg_host);
                         break;
 
                 case '?':