OSDN Git Service

speaker-test: fix option ordering
authorKen Benoit <kbenoit@redhat.com>
Thu, 17 Sep 2015 19:06:38 +0000 (15:06 -0400)
committerJaroslav Kysela <perex@perex.cz>
Thu, 17 Sep 2015 19:49:09 +0000 (21:49 +0200)
The -c and -s options needed to be provided in a specific order for the -s option to work correctly.

This pulls the speaker option check outside of the option parsing so that all the options have been parsed before checking to see if the parameter to -s is correct.

Signed-off-by: Ken Benoit <kbenoit@redhat.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
speaker-test/speaker-test.c

index 25970af..5b9cbec 100644 (file)
@@ -1041,6 +1041,7 @@ int main(int argc, char *argv[]) {
   double               time1,time2,time3;
   unsigned int         n, nloops;
   struct   timeval     tv1,tv2;
+  int                  speakeroptset = 0;
 #ifdef CONFIG_SUPPORT_CHMAP
   const char *chmap = NULL;
 #endif
@@ -1162,11 +1163,7 @@ int main(int argc, char *argv[]) {
     case 's':
       speaker = atoi(optarg);
       speaker = speaker < 1 ? 0 : speaker;
-      speaker = speaker > channels ? 0 : speaker;
-      if (speaker==0) {
-        fprintf(stderr, _("Invalid parameter for -s option.\n"));
-        exit(EXIT_FAILURE);
-      }  
+      speakeroptset = 1;
       break;
     case 'w':
       given_test_wav_file = optarg;
@@ -1200,6 +1197,14 @@ int main(int argc, char *argv[]) {
     exit(EXIT_SUCCESS);
   }
 
+  if (speakeroptset) {
+    speaker = speaker > channels ? 0 : speaker;
+    if (speaker==0) {
+      fprintf(stderr, _("Invalid parameter for -s option.\n"));
+      exit(EXIT_FAILURE);
+    }
+  }
+
   if (!force_frequency) {
     freq = freq < 30.0 ? 30.0 : freq;
     freq = freq > 8000.0 ? 8000.0 : freq;