]> git.alsa-project.org Git - alsa-lib.git/commitdiff
ucm: handle better the system() call
authorJaroslav Kysela <perex@perex.cz>
Tue, 13 Apr 2021 07:52:35 +0000 (09:52 +0200)
committerJaroslav Kysela <perex@perex.cz>
Tue, 13 Apr 2021 15:14:30 +0000 (17:14 +0200)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
src/ucm/main.c

index 385ee5e83f77488bc8a9d24e2ea73c58ec2190d8..18531c80afa8ccac2dd601128e6460d9ae535ce6 100644 (file)
@@ -713,8 +713,18 @@ static int execute_sequence(snd_use_case_mgr_t *uc_mgr,
                        break;
                case SEQUENCE_ELEMENT_TYPE_EXEC:
                        err = system(s->data.exec);
-                       if (err < 0)
+                       if (WIFSIGNALED(err)) {
+                               err = -EINTR;
+                       } if (WIFEXITED(err)) {
+                               if (WEXITSTATUS(err) != 0) {
+                                       uc_error("command '%s' failed (exit code %d)", s->data.exec, WEXITSTATUS(err));
+                                       err = -EINVAL;
+                                       goto __fail;
+                               }
+                       } else if (err < 0) {
+                               err = -errno;
                                goto __fail;
+                       }
                        break;
                case SEQUENCE_ELEMENT_TYPE_CMPT_SEQ:
                        /* Execute enable or disable sequence of a component