]> Zhao Yanbai Git Server - minix.git/commitdiff
Added O_REOPEN, better error handling.
authorPhilip Homburg <philip@cs.vu.nl>
Mon, 25 Feb 2008 12:13:30 +0000 (12:13 +0000)
committerPhilip Homburg <philip@cs.vu.nl>
Mon, 25 Feb 2008 12:13:30 +0000 (12:13 +0000)
commands/ibm/playwave.c

index b369fd741e382d829eb87b0a6481a3b5ea06035f..13c81e2c8b98d0da5d883fa49130fa01930c5aff 100755 (executable)
@@ -69,7 +69,7 @@ void usage()
 
 void main ( int argc, char *argv[] )
 {
-  int i, audio, file;
+  int i, r, audio, file;
   char *buffer, *file_name;
   unsigned int sign;
   unsigned int fragment_size;
@@ -92,9 +92,9 @@ void main ( int argc, char *argv[] )
   else file_name = argv[1];
 
   /* Open DSP */
-  if ((audio = open("/dev/audio", O_RDWR)) < 0) 
+  if ((audio = open("/dev/audio", O_RDWR | O_REOPEN)) < 0) 
   {
-    printf("Cannot open /dev/audio\n");
+    printf("Cannot open /dev/audio: %s\n", strerror(errno));
     exit(-1);
   }
 
@@ -196,6 +196,19 @@ void main ( int argc, char *argv[] )
     }
 
     /* Copy data to DSP */
-    write(audio, buffer,  fragment_size);
+    r= write(audio, buffer,  fragment_size);
+    if (r != fragment_size)
+    {
+       if (r < 0)
+       {
+               fprintf(stderr, "playwave: write to audio device failed: %s\n",
+                       strerror(errno));
+       }
+       else
+       {
+               fprintf(stderr, "playwave: partial write %d instead of %d\n",
+                       r, fragment_size);
+       }
+    }
   }
 }