Clean up code and fix style(9) nits.

This commit is contained in:
Jung-uk Kim 2008-03-15 01:20:05 +00:00
parent c60bd3d3a5
commit e68adf0bb6
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=177197

View File

@ -24,20 +24,20 @@ __FBSDID("$FreeBSD$");
#include <unistd.h> #include <unistd.h>
#include <sys/soundcard.h> #include <sys/soundcard.h>
const char *names[SOUND_MIXER_NRDEVICES] = SOUND_DEVICE_NAMES; const char *names[SOUND_MIXER_NRDEVICES] = SOUND_DEVICE_NAMES;
void usage(int devmask, int recmask); static void usage(int devmask, int recmask);
int res_name(const char *name, int mask); static int res_name(const char *name, int mask);
void print_recsrc(int recsrc, int recmask, int shortflag); static void print_recsrc(int recsrc, int recmask, int sflag);
void static void
usage(int devmask, int recmask) usage(int devmask, int recmask)
{ {
int i, n; int i, n;
printf("usage: mixer [-f device] [-s | -S] [dev [+|-][voll[:[+|-]volr]] ...\n" printf("usage: mixer [-f device] [-s | -S] [dev [+|-][voll[:[+|-]volr]] ...\n"
" mixer [-f device] [-s | -S] recsrc ...\n" " mixer [-f device] [-s | -S] recsrc ...\n"
" mixer [-f device] [-s | -S] {^|+|-|=}rec rdev ... \n"); " mixer [-f device] [-s | -S] {^|+|-|=}rec rdev ...\n");
if (devmask != 0) { if (devmask != 0) {
printf(" devices: "); printf(" devices: ");
for (i = 0, n = 0; i < SOUND_MIXER_NRDEVICES; i++) for (i = 0, n = 0; i < SOUND_MIXER_NRDEVICES; i++)
@ -45,7 +45,7 @@ usage(int devmask, int recmask)
if (n) if (n)
printf(", "); printf(", ");
printf("%s", names[i]); printf("%s", names[i]);
n = 1; n++;
} }
} }
if (recmask != 0) { if (recmask != 0) {
@ -55,64 +55,59 @@ usage(int devmask, int recmask)
if (n) if (n)
printf(", "); printf(", ");
printf("%s", names[i]); printf("%s", names[i]);
n = 1; n++;
} }
} }
printf("\n"); printf("\n");
exit(1); exit(1);
} }
int static int
res_name(const char *name, int mask) res_name(const char *name, int mask)
{ {
int foo; int foo;
for (foo = 0; foo < SOUND_MIXER_NRDEVICES; foo++) for (foo = 0; foo < SOUND_MIXER_NRDEVICES; foo++)
if ((1 << foo) & mask && !strcmp(names[foo], name)) if ((1 << foo) & mask && strcmp(names[foo], name) == 0)
break; break;
return foo == SOUND_MIXER_NRDEVICES ? -1 : foo; return (foo == SOUND_MIXER_NRDEVICES ? -1 : foo);
} }
void static void
print_recsrc(int recsrc, int recmask, int shortflag) print_recsrc(int recsrc, int recmask, int sflag)
{ {
int i, n = 0; int i, n;
if (recmask == 0) if (recmask == 0)
return; return;
if (!shortflag) if (!sflag)
printf("Recording source: "); printf("Recording source: ");
for (i = 0; i < SOUND_MIXER_NRDEVICES; i++) for (i = 0, n = 0; i < SOUND_MIXER_NRDEVICES; i++)
if ((1 << i) & recsrc) { if ((1 << i) & recsrc) {
if (shortflag) { if (sflag)
if (n) printf("%srec ", n ? " +" : "=");
printf(" +rec "); else if (n)
else
printf("=rec ");
} else if (n)
printf(", "); printf(", ");
printf("%s", names[i]); printf("%s", names[i]);
n = 1; n++;
} }
if (!shortflag) if (!sflag)
printf("\n"); printf("\n");
} }
int int
main(int argc, char *argv[]) main(int argc, char *argv[])
{ {
char mixer[PATH_MAX] = "/dev/mixer"; char mixer[PATH_MAX] = "/dev/mixer";
char *name, *eptr; char lstr[5], rstr[5];
int foo, bar, baz, dev; char *name, *eptr;
int devmask = 0, recmask = 0, recsrc = 0, orecsrc; int devmask = 0, recmask = 0, recsrc = 0, orecsrc;
int dusage = 0, drecsrc = 0, shortflag = 0, Shortflag = 0; int dusage = 0, drecsrc = 0, sflag = 0, Sflag = 0;
int l = 0, r = 0, t = 0; int l, r, lrel, rrel;
char lstr[5], rstr[5]; int ch, foo, bar, baz, dev, m, n, t;
int n, lrel = 0, rrel = 0;
char ch;
if ((name = strdup(basename(argv[0]))) == NULL) if ((name = strdup(basename(argv[0]))) == NULL)
err(1, "strdup()"); err(1, "strdup()");
@ -138,17 +133,17 @@ main(int argc, char *argv[])
name = argv[n + 1]; name = argv[n + 1];
n += 2; n += 2;
} else if (ch == 's') { } else if (ch == 's') {
shortflag = 1; sflag = 1;
n++; n++;
} else if (ch == 'S') { } else if (ch == 'S') {
Shortflag = 1; Sflag = 1;
n++; n++;
} else { } else {
dusage = 1; dusage = 1;
break; break;
} }
} }
if (shortflag && Shortflag) if (sflag && Sflag)
dusage = 1; dusage = 1;
argc -= n - 1; argc -= n - 1;
@ -164,38 +159,41 @@ main(int argc, char *argv[])
err(1, "SOUND_MIXER_READ_RECSRC"); err(1, "SOUND_MIXER_READ_RECSRC");
orecsrc = recsrc; orecsrc = recsrc;
if ((argc == 1) && (dusage == 0)) { if (argc == 1 && dusage == 0) {
for (foo = 0; foo < SOUND_MIXER_NRDEVICES; foo++) { for (foo = 0, n = 0; foo < SOUND_MIXER_NRDEVICES; foo++) {
if (!((1 << foo) & devmask)) if (!((1 << foo) & devmask))
continue; continue;
if (ioctl(baz, MIXER_READ(foo),&bar)== -1) { if (ioctl(baz, MIXER_READ(foo),&bar) == -1) {
warn("MIXER_READ"); warn("MIXER_READ");
continue; continue;
} }
if (Shortflag) if (Sflag || sflag) {
printf("%s:%d:%d ", names[foo], bar & 0x7f, printf("%s%s%c%d:%d", n ? " " : "",
(bar >> 8) & 0x7f); names[foo], Sflag ? ':' : ' ',
else if (shortflag) bar & 0x7f, (bar >> 8) & 0x7f);
printf("%s %d:%d ", names[foo], bar & 0x7f, n++;
(bar >> 8) & 0x7f); } else
else printf("Mixer %-8s is currently set to "
printf("Mixer %-8s is currently set to %3d:%d\n", "%3d:%d\n", names[foo], bar & 0x7f,
names[foo], bar & 0x7f, (bar >> 8) & 0x7f); (bar >> 8) & 0x7f);
} }
if (ioctl(baz, SOUND_MIXER_READ_RECSRC, &recsrc) == -1) if (n && recmask)
err(1, "SOUND_MIXER_READ_RECSRC"); printf(" ");
print_recsrc(recsrc, recmask, shortflag || Shortflag); print_recsrc(recsrc, recmask, Sflag | sflag);
return(0); return (0);
} }
argc--; argv++; argc--;
argv++;
while ((argc > 0) && (dusage == 0)) { n = 0;
if (!strcmp("recsrc", *argv)) { while (argc > 0 && dusage == 0) {
if (strcmp("recsrc", *argv) == 0) {
drecsrc = 1; drecsrc = 1;
argc--; argv++; argc--;
argv++;
continue; continue;
} else if (argc > 1 && !strcmp("rec", *argv + 1)) { } else if (argc > 1 && strcmp("rec", *argv + 1) == 0) {
if (**argv != '+' && **argv != '-' && if (**argv != '+' && **argv != '-' &&
**argv != '=' && **argv != '^') { **argv != '=' && **argv != '^') {
warnx("unknown modifier: %c", **argv); warnx("unknown modifier: %c", **argv);
@ -207,7 +205,7 @@ main(int argc, char *argv[])
dusage = 1; dusage = 1;
break; break;
} }
switch(**argv) { switch (**argv) {
case '+': case '+':
recsrc |= (1 << dev); recsrc |= (1 << dev);
break; break;
@ -222,61 +220,63 @@ main(int argc, char *argv[])
break; break;
} }
drecsrc = 1; drecsrc = 1;
argc -= 2; argv += 2; argc -= 2;
argv += 2;
continue; continue;
} }
if ((t = sscanf(*argv, "%d:%d", &l, &r)) > 0) { if ((t = sscanf(*argv, "%d:%d", &l, &r)) > 0)
dev = 0; dev = 0;
} else if ((dev = res_name(*argv, devmask)) == -1) {
else if((dev = res_name(*argv, devmask)) == -1) {
warnx("unknown device: %s", *argv); warnx("unknown device: %s", *argv);
dusage = 1; dusage = 1;
break; break;
} }
#define issign(c) (((c) == '+') || ((c) == '-')) lrel = rrel = 0;
if (argc > 1) { if (argc > 1) {
n = sscanf(argv[1], "%7[^:]:%7s", lstr, rstr); m = sscanf(argv[1], "%7[^:]:%7s", lstr, rstr);
if (n > 0) { if (m > 0) {
if (issign(lstr[0])) if (*lstr == '+' || *lstr == '-')
lrel = rrel = 1; lrel = rrel = 1;
l = atoi(lstr); l = strtol(lstr, NULL, 10);
} }
if (n > 1) { if (m > 1) {
rrel = 0; if (*rstr == '+' || *rstr == '-')
if (issign(rstr[0]))
rrel = 1; rrel = 1;
r = atoi(rstr); r = strtol(rstr, NULL, 10);
} }
} }
switch(argc > 1 ? n : t) { switch (argc > 1 ? m : t) {
case 0: case 0:
if (ioctl(baz, MIXER_READ(dev),&bar)== -1) { if (ioctl(baz, MIXER_READ(dev), &bar) == -1) {
warn("MIXER_READ"); warn("MIXER_READ");
argc--; argv++; argc--;
argv++;
continue; continue;
} }
if (Shortflag) if (Sflag || sflag) {
printf("%s:%d:%d ", names[dev], bar & 0x7f, printf("%s%s%c%d:%d", n ? " " : "",
(bar >> 8) & 0x7f); names[dev], Sflag ? ':' : ' ',
else if (shortflag) bar & 0x7f, (bar >> 8) & 0x7f);
printf("%s %d:%d ", names[dev], bar & 0x7f, n++;
(bar >> 8) & 0x7f); } else
else printf("Mixer %-8s is currently set to "
printf("Mixer %-8s is currently set to %3d:%d\n", "%3d:%d\n", names[dev], bar & 0x7f,
names[dev], bar & 0x7f, (bar >> 8) & 0x7f); (bar >> 8) & 0x7f);
argc--; argv++; argc--;
argv++;
break; break;
case 1: case 1:
r = l; r = l;
/* FALLTHROUGH */
case 2: case 2:
if (ioctl(baz, MIXER_READ(dev),&bar)== -1) { if (ioctl(baz, MIXER_READ(dev), &bar) == -1) {
warn("MIXER_READ"); warn("MIXER_READ");
argc--; argv++; argc--;
argv++;
continue; continue;
} }
@ -294,15 +294,17 @@ main(int argc, char *argv[])
else if (r > 100) else if (r > 100)
r = 100; r = 100;
if (!Shortflag) if (!Sflag)
printf("Setting the mixer %s from %d:%d to %d:%d.\n", printf("Setting the mixer %s from %d:%d to "
names[dev], bar & 0x7f, (bar >> 8) & 0x7f, l, r); "%d:%d.\n", names[dev], bar & 0x7f,
(bar >> 8) & 0x7f, l, r);
l |= r << 8; l |= r << 8;
if (ioctl(baz, MIXER_WRITE(dev), &l) == -1) if (ioctl(baz, MIXER_WRITE(dev), &l) == -1)
warn("WRITE_MIXER"); warn("WRITE_MIXER");
argc -= 2; argv += 2; argc -= 2;
argv += 2;
break; break;
} }
} }
@ -310,7 +312,7 @@ main(int argc, char *argv[])
if (dusage) { if (dusage) {
close(baz); close(baz);
usage(devmask, recmask); usage(devmask, recmask);
/* Not reached */ /* NOTREACHED */
} }
if (orecsrc != recsrc) { if (orecsrc != recsrc) {
@ -319,11 +321,11 @@ main(int argc, char *argv[])
if (ioctl(baz, SOUND_MIXER_READ_RECSRC, &recsrc) == -1) if (ioctl(baz, SOUND_MIXER_READ_RECSRC, &recsrc) == -1)
err(1, "SOUND_MIXER_READ_RECSRC"); err(1, "SOUND_MIXER_READ_RECSRC");
} }
if (drecsrc) if (drecsrc)
print_recsrc(recsrc, recmask, shortflag || Shortflag); print_recsrc(recsrc, recmask, Sflag || sflag);
close(baz); close(baz);
exit(0); return (0);
} }