]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
tty-ask-password-agent: coding style tweaks
authorMike Yuan <me@yhndnzj.com>
Sat, 4 Jan 2025 14:11:53 +0000 (15:11 +0100)
committerMike Yuan <me@yhndnzj.com>
Sat, 4 Jan 2025 15:44:50 +0000 (16:44 +0100)
src/tty-ask-password-agent/tty-ask-password-agent.c

index 9bd7ba452f397f1b033bd0535560443d5e414a77..68b6d1c70e44e314bcc0358cc1a8a17440c4bcc2 100644 (file)
@@ -567,12 +567,16 @@ static int parse_argv(int argc, char *argv[]) {
 /*
  * To be able to ask on all terminal devices of /dev/console the devices are collected. If more than one
  * device is found, then on each of the terminals an inquiring task is forked.  Every task has its own session
- * and its own controlling terminal.  If one of the tasks does handle a password, the remaining tasks will be
+ * and its own controlling terminal. If one of the tasks does handle a password, the remaining tasks will be
  * terminated.
  */
-static int ask_on_this_console(const char *tty, pid_t *ret_pid, char **arguments) {
+static int ask_on_this_console(const char *tty, char **arguments, pid_t *ret_pid) {
         int r;
 
+        assert(tty);
+        assert(arguments);
+        assert(ret_pid);
+
         assert_se(sigaction(SIGCHLD, &sigaction_nop_nocldstop, NULL) >= 0);
         assert_se(sigaction(SIGHUP, &sigaction_default, NULL) >= 0);
         assert_se(sigprocmask_many(SIG_UNBLOCK, NULL, SIGHUP, SIGCHLD) >= 0);
@@ -654,12 +658,12 @@ static void terminate_agents(Set *pids) {
 }
 
 static int ask_on_consoles(char *argv[]) {
-        _cleanup_set_free_ Set *pids = NULL;
         _cleanup_strv_free_ char **consoles = NULL, **arguments = NULL;
-        siginfo_t status = {};
-        pid_t pid;
+        _cleanup_set_free_ Set *pids = NULL;
         int r;
 
+        assert(argv);
+
         r = get_kernel_consoles(&consoles);
         if (r < 0)
                 return log_error_errno(r, "Failed to determine devices of /dev/console: %m");
@@ -674,7 +678,9 @@ static int ask_on_consoles(char *argv[]) {
 
         /* Start an agent on each console. */
         STRV_FOREACH(tty, consoles) {
-                r = ask_on_this_console(*tty, &pid, arguments);
+                pid_t pid;
+
+                r = ask_on_this_console(*tty, arguments, &pid);
                 if (r < 0)
                         return r;
 
@@ -684,22 +690,22 @@ static int ask_on_consoles(char *argv[]) {
 
         /* Wait for an agent to exit. */
         for (;;) {
-                zero(status);
+                siginfo_t status = {};
 
                 if (waitid(P_ALL, 0, &status, WEXITED) < 0) {
                         if (errno == EINTR)
                                 continue;
 
-                        return log_error_errno(errno, "waitid() failed: %m");
+                        return log_error_errno(errno, "Failed to wait for console ask-password agent: %m");
                 }
 
+                if (!is_clean_exit(status.si_code, status.si_status, EXIT_CLEAN_DAEMON, NULL))
+                        log_error("Password agent failed with: %d", status.si_status);
+
                 set_remove(pids, PID_TO_PTR(status.si_pid));
                 break;
         }
 
-        if (!is_clean_exit(status.si_code, status.si_status, EXIT_CLEAN_DAEMON, NULL))
-                log_error("Password agent failed with: %d", status.si_status);
-
         terminate_agents(pids);
         return 0;
 }