version 1.17, 2005/01/04 18:20:37 |
version 1.18, 2005/01/04 18:22:09 |
|
|
findfield(char *name) |
findfield(char *name) |
{ |
{ |
int i; |
int i; |
for(i = 0; fields[i].name; i++) |
for (i = 0; fields[i].name; i++) |
if (strcmp(fields[i].name, name) == 0) |
if (strcmp(fields[i].name, name) == 0) |
return &fields[i]; |
return &fields[i]; |
return (0); |
return (0); |
|
|
m = p->valp; |
m = p->valp; |
switch(m->type) { |
switch(m->type) { |
case AUDIO_MIXER_ENUM: |
case AUDIO_MIXER_ENUM: |
for(i = 0; i < p->infp->un.e.num_mem; i++) |
for (i = 0; i < p->infp->un.e.num_mem; i++) |
if (p->infp->un.e.member[i].ord == m->un.ord) |
if (p->infp->un.e.member[i].ord == m->un.ord) |
fprintf(out, "%s", |
fprintf(out, "%s", |
p->infp->un.e.member[i].label.name); |
p->infp->un.e.member[i].label.name); |
if (prvalset) { |
if (prvalset) { |
fprintf(out, " [ "); |
fprintf(out, " [ "); |
for(i = 0; i < p->infp->un.e.num_mem; i++) |
for (i = 0; i < p->infp->un.e.num_mem; i++) |
fprintf(out, "%s ", p->infp->un.e.member[i].label.name); |
fprintf(out, "%s ", p->infp->un.e.member[i].label.name); |
fprintf(out, "]"); |
fprintf(out, "]"); |
} |
} |
break; |
break; |
case AUDIO_MIXER_SET: |
case AUDIO_MIXER_SET: |
for(n = i = 0; i < p->infp->un.s.num_mem; i++) |
for (n = i = 0; i < p->infp->un.s.num_mem; i++) |
if (m->un.mask & p->infp->un.s.member[i].mask) |
if (m->un.mask & p->infp->un.s.member[i].mask) |
fprintf(out, "%s%s", n++ ? "," : "", |
fprintf(out, "%s%s", n++ ? "," : "", |
p->infp->un.s.member[i].label.name); |
p->infp->un.s.member[i].label.name); |
if (prvalset) { |
if (prvalset) { |
fprintf(out, " { "); |
fprintf(out, " { "); |
for(i = 0; i < p->infp->un.s.num_mem; i++) |
for (i = 0; i < p->infp->un.s.num_mem; i++) |
fprintf(out, "%s ", p->infp->un.s.member[i].label.name); |
fprintf(out, "%s ", p->infp->un.s.member[i].label.name); |
fprintf(out, "}"); |
fprintf(out, "}"); |
} |
} |
|
|
m = p->valp; |
m = p->valp; |
switch(m->type) { |
switch(m->type) { |
case AUDIO_MIXER_ENUM: |
case AUDIO_MIXER_ENUM: |
for(i = 0; i < p->infp->un.e.num_mem; i++) |
for (i = 0; i < p->infp->un.e.num_mem; i++) |
if (strcmp(p->infp->un.e.member[i].label.name, q) == 0) |
if (strcmp(p->infp->un.e.member[i].label.name, q) == 0) |
break; |
break; |
if (i < p->infp->un.e.num_mem) |
if (i < p->infp->un.e.num_mem) |
|
|
break; |
break; |
case AUDIO_MIXER_SET: |
case AUDIO_MIXER_SET: |
mask = 0; |
mask = 0; |
for(v = 0; q && *q; q = s) { |
for (v = 0; q && *q; q = s) { |
if (s = strchr(q, ',')) |
if (s = strchr(q, ',')) |
*s++ = 0; |
*s++ = 0; |
for (i = 0; i < p->infp->un.s.num_mem; i++) |
for (i = 0; i < p->infp->un.s.num_mem; i++) |
|
|
if ((fd = open(file, O_RDONLY)) == -1) |
if ((fd = open(file, O_RDONLY)) == -1) |
err(1, "%s", file); |
err(1, "%s", file); |
|
|
for(ndev = 0; ; ndev++) { |
for (ndev = 0; ; ndev++) { |
dinfo.index = ndev; |
dinfo.index = ndev; |
if (ioctl(fd, AUDIO_MIXER_DEVINFO, &dinfo) < 0) |
if (ioctl(fd, AUDIO_MIXER_DEVINFO, &dinfo) < 0) |
break; |
break; |
|
|
(values = calloc(ndev, sizeof *values)) == NULL) |
(values = calloc(ndev, sizeof *values)) == NULL) |
err(1, "calloc()"); |
err(1, "calloc()"); |
|
|
for(i = 0; i < ndev; i++) { |
for (i = 0; i < ndev; i++) { |
infos[i].index = i; |
infos[i].index = i; |
if (ioctl(fd, AUDIO_MIXER_DEVINFO, &infos[i]) < 0) { |
if (ioctl(fd, AUDIO_MIXER_DEVINFO, &infos[i]) < 0) { |
ndev--, i--; |
ndev--, i--; |
|
|
} |
} |
} |
} |
|
|
for(i = 0; i < ndev; i++) { |
for (i = 0; i < ndev; i++) { |
rfields[i].name = infos[i].label.name; |
rfields[i].name = infos[i].label.name; |
rfields[i].valp = &values[i]; |
rfields[i].valp = &values[i]; |
rfields[i].infp = &infos[i]; |
rfields[i].infp = &infos[i]; |
} |
} |
|
|
for(i = 0; i < ndev; i++) { |
for (i = 0; i < ndev; i++) { |
values[i].dev = i; |
values[i].dev = i; |
values[i].type = infos[i].type; |
values[i].type = infos[i].type; |
if (infos[i].type != AUDIO_MIXER_CLASS) { |
if (infos[i].type != AUDIO_MIXER_CLASS) { |
|
|
} |
} |
} |
} |
|
|
for(j = i = 0; i < ndev; i++) { |
for (j = i = 0; i < ndev; i++) { |
if (infos[i].type != AUDIO_MIXER_CLASS && |
if (infos[i].type != AUDIO_MIXER_CLASS && |
infos[i].type != -1) { |
infos[i].type != -1) { |
fields[j++] = rfields[i]; |
fields[j++] = rfields[i]; |
for(pos = infos[i].next; pos != AUDIO_MIXER_LAST; |
for (pos = infos[i].next; pos != AUDIO_MIXER_LAST; |
pos = infos[pos].next) { |
pos = infos[pos].next) { |
fields[j] = rfields[pos]; |
fields[j] = rfields[pos]; |
fields[j].name = catstr(rfields[i].name, |
fields[j].name = catstr(rfields[i].name, |
|
|
} |
} |
} |
} |
|
|
for(i = 0; i < j; i++) { |
for (i = 0; i < j; i++) { |
int cls = fields[i].infp->mixer_class; |
int cls = fields[i].infp->mixer_class; |
if (cls >= 0 && cls < ndev) |
if (cls >= 0 && cls < ndev) |
fields[i].name = catstr(infos[cls].label.name, |
fields[i].name = catstr(infos[cls].label.name, |
|
|
} |
} |
|
|
if (!argc && aflag) { |
if (!argc && aflag) { |
for(i = 0; fields[i].name; i++) { |
for (i = 0; fields[i].name; i++) { |
prfield(&fields[i], sep, vflag); |
prfield(&fields[i], sep, vflag); |
fprintf(out, "\n"); |
fprintf(out, "\n"); |
} |
} |