chiark / gitweb /
loginctl: replace strv_append() by strv_extend()
[elogind.git] / src / login / loginctl.c
index 2aedbcf9225c6cc14458ac7319592b3500f0109a..e03b0b93e19f54b1b9460a79d1e4abc1ab1565b0 100644 (file)
@@ -251,7 +251,7 @@ typedef struct SessionStatusInfo {
         uid_t uid;
         const char *name;
         usec_t timestamp;
-        int vtnr;
+        unsigned int vtnr;
         const char *seat;
         const char *tty;
         const char *display;
@@ -1037,29 +1037,29 @@ static int help(void) {
                "     --kill-who=WHO      Who to send signal to\n"
                "  -s --signal=SIGNAL     Which signal to send\n\n"
                "Commands:\n"
-               "  list-sessions                   List sessions\n"
-               "  session-status [ID...]          Show session status\n"
-               "  show-session [ID...]            Show properties of one or more sessions\n"
-               "  activate [ID]                   Activate a session\n"
-               "  lock-session [ID...]            Screen lock one or more sessions\n"
-               "  unlock-session [ID...]          Screen unlock one or more sessions\n"
-               "  lock-sessions                   Screen lock all current sessions\n"
-               "  unlock-sessions                 Screen unlock all current sessions\n"
-               "  terminate-session [ID...]       Terminate one or more sessions\n"
-               "  kill-session [ID...]            Send signal to processes of a session\n"
-               "  list-users                      List users\n"
-               "  user-status [USER...]           Show user status\n"
-               "  show-user [USER...]             Show properties of one or more users\n"
-               "  enable-linger [USER...]         Enable linger state of one or more users\n"
-               "  disable-linger [USER...]        Disable linger state of one or more users\n"
-               "  terminate-user [USER...]        Terminate all sessions of one or more users\n"
-               "  kill-user [USER...]             Send signal to processes of a user\n"
-               "  list-seats                      List seats\n"
-               "  seat-status [NAME...]           Show seat status\n"
-               "  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",
+               "  list-sessions            List sessions\n"
+               "  session-status ID...     Show session status\n"
+               "  show-session [ID...]     Show properties of sessions or the manager\n"
+               "  activate ID              Activate a session\n"
+               "  lock-session ID...       Screen lock one or more sessions\n"
+               "  unlock-session ID...     Screen unlock one or more sessions\n"
+               "  lock-sessions            Screen lock all current sessions\n"
+               "  unlock-sessions          Screen unlock all current sessions\n"
+               "  terminate-session ID...  Terminate one or more sessions\n"
+               "  kill-session ID...       Send signal to processes of a session\n"
+               "  list-users               List users\n"
+               "  user-status USER...      Show user status\n"
+               "  show-user [USER...]      Show properties of users or the manager\n"
+               "  enable-linger USER...    Enable linger state of one or more users\n"
+               "  disable-linger USER...   Disable linger state of one or more users\n"
+               "  terminate-user USER...   Terminate all sessions of one or more users\n"
+               "  kill-user USER...        Send signal to processes of a user\n"
+               "  list-seats               List seats\n"
+               "  seat-status NAME...      Show seat status\n"
+               "  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;
@@ -1089,7 +1089,7 @@ static int parse_argv(int argc, char *argv[]) {
                 {}
         };
 
-        int c;
+        int c, r;
 
         assert(argc >= 0);
         assert(argv);
@@ -1107,14 +1107,9 @@ static int parse_argv(int argc, char *argv[]) {
                         return 0;
 
                 case 'p': {
-                        char **l;
-
-                        l = strv_append(arg_property, optarg);
-                        if (!l)
-                                return -ENOMEM;
-
-                        strv_free(arg_property);
-                        arg_property = l;
+                        r = strv_extend(&arg_property, optarg);
+                        if (r < 0)
+                                return log_oom();
 
                         /* If the user asked for a particular
                          * property, show it to him, even if it is