Module Name: src Committed By: isaki Date: Sat Aug 24 07:39:42 UTC 2019
Modified Files: src/usr.bin/audiocfg: audiodev.c audiodev.h main.c Log Message: Revert about index number changes. It breaks its usage and output format. Pointed out by mrg@. To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/usr.bin/audiocfg/audiodev.c cvs rdiff -u -r1.8 -r1.9 src/usr.bin/audiocfg/audiodev.h cvs rdiff -u -r1.15 -r1.16 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.14 src/usr.bin/audiocfg/audiodev.c:1.15 --- src/usr.bin/audiocfg/audiodev.c:1.14 Sat Aug 24 06:32:25 2019 +++ src/usr.bin/audiocfg/audiodev.c Sat Aug 24 07:39:42 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: audiodev.c,v 1.14 2019/08/24 06:32:25 isaki Exp $ */ +/* $NetBSD: audiodev.c,v 1.15 2019/08/24 07:39:42 isaki Exp $ */ /* * Copyright (c) 2010 Jared D. McNeill <jmcne...@invisible.ca> @@ -49,7 +49,6 @@ static int audiodev_test_chmask(struct a static TAILQ_HEAD(audiodevhead, audiodev) audiodevlist = TAILQ_HEAD_INITIALIZER(audiodevlist); -static unsigned int maxunit; static int audiodev_getinfo(struct audiodev *adev) @@ -138,9 +137,6 @@ audiodev_add(const char *pdev, const cha TAILQ_INSERT_TAIL(&audiodevlist, adev, next); - if (unit > maxunit) - maxunit = unit; - return 0; } @@ -182,22 +178,29 @@ audiodev_refresh(void) } unsigned int -audiodev_maxunit(void) +audiodev_count(void) { - return maxunit; + struct audiodev *adev; + unsigned int n; + + n = 0; + TAILQ_FOREACH(adev, &audiodevlist, next) + ++n; + + return n; } -/* - * Get audiodev corresponding to audio<i> device. - */ struct audiodev * audiodev_get(unsigned int i) { struct audiodev *adev; + unsigned int n; + n = 0; TAILQ_FOREACH(adev, &audiodevlist, next) { - if (i == adev->unit) + if (n == i) return adev; + ++n; } return NULL; Index: src/usr.bin/audiocfg/audiodev.h diff -u src/usr.bin/audiocfg/audiodev.h:1.8 src/usr.bin/audiocfg/audiodev.h:1.9 --- src/usr.bin/audiocfg/audiodev.h:1.8 Sat Aug 24 05:45:25 2019 +++ src/usr.bin/audiocfg/audiodev.h Sat Aug 24 07:39:42 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: audiodev.h,v 1.8 2019/08/24 05:45:25 isaki Exp $ */ +/* $NetBSD: audiodev.h,v 1.9 2019/08/24 07:39:42 isaki Exp $ */ /* * Copyright (c) 2010 Jared D. McNeill <jmcne...@invisible.ca> @@ -60,7 +60,7 @@ struct audiodev { }; int audiodev_refresh(void); -unsigned int audiodev_maxunit(void); +unsigned int audiodev_count(void); struct audiodev * audiodev_get(unsigned int); int audiodev_set_default(struct audiodev *); int audiodev_set_param(struct audiodev *, int, Index: src/usr.bin/audiocfg/main.c diff -u src/usr.bin/audiocfg/main.c:1.15 src/usr.bin/audiocfg/main.c:1.16 --- src/usr.bin/audiocfg/main.c:1.15 Sat Aug 24 06:11:10 2019 +++ src/usr.bin/audiocfg/main.c Sat Aug 24 07:39:42 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.15 2019/08/24 06:11:10 isaki Exp $ */ +/* $NetBSD: main.c,v 1.16 2019/08/24 07:39:42 isaki Exp $ */ /* * Copyright (c) 2010 Jared D. McNeill <jmcne...@invisible.ca> @@ -75,15 +75,15 @@ const char *encoding_names[] = { u_int encoding_max = __arraycount(encoding_names); static void -print_audiodev(struct audiodev *adev) +print_audiodev(struct audiodev *adev, int i) { struct audiofmt *f; int j; assert(adev != NULL); - printf("[%c] %s @ %s: ", - adev->defaultdev ? '*' : ' ', + 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) @@ -142,28 +142,6 @@ print_audiodev(struct audiodev *adev) } } -/* Always return non-null adev, or exit */ -static struct audiodev * -getadev_fromstr(const char *str) -{ - struct audiodev *adev; - unsigned int i; - - if (*str < '0' || *str > '9') - usage(); - /* NOTREACHED */ - errno = 0; - i = strtoul(str, NULL, 10); - if (errno) - usage(); - /* NOTREACHED */ - adev = audiodev_get(i); - if (adev == NULL) { - errx(EXIT_FAILURE, "no such device"); - } - return adev; -} - int main(int argc, char *argv[]) { @@ -184,16 +162,36 @@ main(int argc, char *argv[]) /* NOTREACHED */ if (strcmp(argv[1], "list") == 0 && argc == 2) { - n = audiodev_maxunit(); - for (i = 0; i <= n; i++) { - adev = audiodev_get(i); - if (adev) - print_audiodev(adev); - } + n = audiodev_count(); + for (i = 0; i < n; i++) + print_audiodev(audiodev_get(i), i); } else if (strcmp(argv[1], "list") == 0 && argc == 3) { - print_audiodev(getadev_fromstr(argv[2])); + if (*argv[2] < '0' || *argv[2] > '9') + usage(); + /* NOTREACHED */ + errno = 0; + i = strtoul(argv[2], NULL, 10); + if (errno) + usage(); + /* NOTREACHED */ + adev = audiodev_get(i); + if (adev == NULL) { + errx(EXIT_FAILURE, "no such device"); + } + print_audiodev(adev, i); } else if (strcmp(argv[1], "default") == 0 && argc == 3) { - adev = getadev_fromstr(argv[2]); + if (*argv[2] < '0' || *argv[2] > '9') + usage(); + /* NOTREACHED */ + errno = 0; + i = strtoul(argv[2], NULL, 10); + if (errno) + usage(); + /* NOTREACHED */ + adev = audiodev_get(i); + if (adev == NULL) { + errx(EXIT_FAILURE, "no such device"); + } printf("setting default audio device to %s\n", adev->xname); if (audiodev_set_default(adev) == -1) { errx(EXIT_FAILURE, "couldn't set default device"); @@ -201,7 +199,19 @@ main(int argc, char *argv[]) } else if (strcmp(argv[1], "set") == 0 && argc == 8) { /* XXX bad commandline... */ /* audiocfg set <index> [p|r] <enc> <prec> <ch> <freq> */ - adev = getadev_fromstr(argv[2]); + if (*argv[2] < '0' || *argv[2] > '9') + usage(); + /* NOTREACHED */ + errno = 0; + i = strtoul(argv[2], NULL, 10); + if (errno) + usage(); + /* NOTREACHED */ + adev = audiodev_get(i); + if (adev == NULL) { + errx(EXIT_FAILURE, "no such device"); + } + mode = 0; for (j = 0; j < strlen(argv[3]); j++) { if (argv[3][j] == 'p') @@ -233,8 +243,19 @@ main(int argc, char *argv[]) errx(EXIT_FAILURE, "couldn't set parameter"); } } else if (strcmp(argv[1], "test") == 0 && argc == 3) { - adev = getadev_fromstr(argv[2]); - print_audiodev(adev); + if (*argv[2] < '0' || *argv[2] > '9') + usage(); + /* NOTREACHED */ + errno = 0; + i = strtoul(argv[2], NULL, 10); + if (errno) + usage(); + /* NOTREACHED */ + adev = audiodev_get(i); + if (adev == NULL) { + errx(EXIT_FAILURE, "no such device"); + } + print_audiodev(adev, i); if (audiodev_test(adev) == -1) return EXIT_FAILURE; } else