Clean up code and fix style(9) nits.
This commit is contained in:
parent
c60bd3d3a5
commit
e68adf0bb6
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=177197
@ -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);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user