Module Name: src Committed By: jmcneill Date: Fri Sep 3 19:20:37 UTC 2010
Modified Files: src/usr.bin/audiocfg: audiodev.c main.c Log Message: return an error if testing fails, and dump the device info before running tests To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/usr.bin/audiocfg/audiodev.c cvs rdiff -u -r1.5 -r1.6 src/usr.bin/audiocfg/main.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/audiocfg/audiodev.c diff -u src/usr.bin/audiocfg/audiodev.c:1.3 src/usr.bin/audiocfg/audiodev.c:1.4 --- src/usr.bin/audiocfg/audiodev.c:1.3 Thu Sep 2 02:17:35 2010 +++ src/usr.bin/audiocfg/audiodev.c Fri Sep 3 19:20:37 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: audiodev.c,v 1.3 2010/09/02 02:17:35 jmcneill Exp $ */ +/* $NetBSD: audiodev.c,v 1.4 2010/09/03 19:20:37 jmcneill Exp $ */ /* * Copyright (c) 2010 Jared D. McNeill <jmcne...@invisible.ca> @@ -245,6 +245,7 @@ int16_t *buf; size_t buflen; off_t off; + int rv = 0; AUDIO_INITINFO(&info); info.play.sample_rate = AUDIODEV_SAMPLE_RATE; @@ -271,7 +272,12 @@ size_t wlen = info.play.buffer_size; if (wlen > buflen) wlen = buflen; - write(adev->fd, (char *)buf + off, wlen); + wlen = write(adev->fd, (char *)buf + off, wlen); + if (wlen == -1) { + perror("write"); + rv = -1; + goto done; + } off += wlen; buflen -= wlen; } @@ -279,7 +285,8 @@ if (ioctl(adev->fd, AUDIO_DRAIN) == -1) perror("ioctl AUDIO_DRAIN"); +done: free(buf); - return 0; + return rv; } Index: src/usr.bin/audiocfg/main.c diff -u src/usr.bin/audiocfg/main.c:1.5 src/usr.bin/audiocfg/main.c:1.6 --- src/usr.bin/audiocfg/main.c:1.5 Thu Sep 2 02:17:35 2010 +++ src/usr.bin/audiocfg/main.c Fri Sep 3 19:20:37 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.5 2010/09/02 02:17:35 jmcneill Exp $ */ +/* $NetBSD: main.c,v 1.6 2010/09/03 19:20:37 jmcneill Exp $ */ /* * Copyright (c) 2010 Jared D. McNeill <jmcne...@invisible.ca> @@ -26,6 +26,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#include <assert.h> #include <errno.h> #include <fcntl.h> #include <limits.h> @@ -45,6 +46,21 @@ exit(EXIT_FAILURE); } +static void +print_audiodev(struct audiodev *adev, int i) +{ + assert(adev != NULL); + + printf("%u: [%c] %s @ %s: ", + i, adev->defaultdev ? '*' : ' ', + adev->xname, adev->pxname); + printf("%s", adev->audio_device.name); + if (strlen(adev->audio_device.version) > 0) + printf(" %s", adev->audio_device.version); + printf(", %u playback channel%s\n", + adev->pchan, adev->pchan == 1 ? "" : "s"); +} + int main(int argc, char *argv[]) { @@ -60,17 +76,8 @@ if (strcmp(argv[1], "list") == 0) { n = audiodev_count(); - for (i = 0; i < n; i++) { - adev = audiodev_get(i); - printf("%u: [%c] %s @ %s: ", - i, adev->defaultdev ? '*' : ' ', - adev->xname, adev->pxname); - printf("%s", adev->audio_device.name); - if (strlen(adev->audio_device.version) > 0) - printf(" %s", adev->audio_device.version); - printf(", %u playback channel%s\n", - adev->pchan, adev->pchan == 1 ? "" : "s"); - } + for (i = 0; i < n; i++) + print_audiodev(audiodev_get(i), i); } else if (strcmp(argv[1], "default") == 0 && argc == 3) { if (*argv[2] < '0' || *argv[2] > '9') usage(argv[0]); @@ -104,9 +111,13 @@ fprintf(stderr, "no such device\n"); return EXIT_FAILURE; } + print_audiodev(adev, i); for (i = 0; i < adev->pchan; i++) { - printf("testing channel %d...\n", i); - audiodev_test(adev, 1 << i); + printf(" testing channel %d...", i); + fflush(stdout); + if (audiodev_test(adev, 1 << i) == -1) + return EXIT_FAILURE; + printf(" done\n"); } } else usage(argv[0]);