version 1.28, 2008/06/26 05:42:21 |
version 1.29, 2009/11/12 07:27:31 |
|
|
struct field *findfield(char *); |
struct field *findfield(char *); |
void adjlevel(char **, u_char *, int); |
void adjlevel(char **, u_char *, int); |
void catstr(char *, char *, char *); |
void catstr(char *, char *, char *); |
void prfield(struct field *, char *, int); |
void prfield(struct field *, char *, int, mixer_ctrl_t *); |
void rdfield(int, struct field *, char *, int); |
void rdfield(int, struct field *, char *, int, char *); |
__dead void usage(void); |
__dead void usage(void); |
|
|
#define FIELD_NAME_MAX 64 |
#define FIELD_NAME_MAX 64 |
|
|
#define s_member_name un.s.member[i].label.name |
#define s_member_name un.s.member[i].label.name |
|
|
void |
void |
prfield(struct field *p, char *sep, int prvalset) |
prfield(struct field *p, char *sep, int prvalset, mixer_ctrl_t *m) |
{ |
{ |
mixer_ctrl_t *m; |
|
int i, n; |
int i, n; |
|
|
if (sep) |
if (sep) |
printf("%s%s", p->name, sep); |
printf("%s%s", p->name, sep); |
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++) |
|
|
} |
} |
|
|
void |
void |
rdfield(int fd, struct field *p, char *q, int quiet) |
rdfield(int fd, struct field *p, char *q, int quiet, char *sep) |
{ |
{ |
mixer_ctrl_t *m, oldval; |
mixer_ctrl_t *m, oldval; |
int i, mask; |
int i, mask; |
|
|
if (ioctl(fd, AUDIO_MIXER_WRITE, p->valp) < 0) { |
if (ioctl(fd, AUDIO_MIXER_WRITE, p->valp) < 0) { |
warn("AUDIO_MIXER_WRITE"); |
warn("AUDIO_MIXER_WRITE"); |
} else if (!quiet) { |
} else if (!quiet) { |
*p->valp = oldval; |
|
prfield(p, ": ", 0); |
|
if (ioctl(fd, AUDIO_MIXER_READ, p->valp) < 0) { |
if (ioctl(fd, AUDIO_MIXER_READ, p->valp) < 0) { |
warn("AUDIO_MIXER_READ"); |
warn("AUDIO_MIXER_READ"); |
} else { |
} else { |
printf(" -> "); |
if (sep) { |
prfield(p, NULL, 0); |
prfield(p, ": ", 0, &oldval); |
|
printf(" -> "); |
|
} |
|
prfield(p, NULL, 0, p->valp); |
printf("\n"); |
printf("\n"); |
} |
} |
} |
} |
|
|
|
|
if (!argc && aflag) { |
if (!argc && aflag) { |
for (i = 0; fields[i].name[0] != '\0'; i++) { |
for (i = 0; fields[i].name[0] != '\0'; i++) { |
prfield(&fields[i], sep, vflag); |
prfield(&fields[i], sep, vflag, fields[i].valp); |
printf("\n"); |
printf("\n"); |
} |
} |
} else if (argc > 0 && !aflag) { |
} else if (argc > 0 && !aflag) { |
|
|
} else if (ch || tflag) { |
} else if (ch || tflag) { |
if (tflag && q == NULL) |
if (tflag && q == NULL) |
q = "toggle"; |
q = "toggle"; |
rdfield(fd, p, q, qflag); |
rdfield(fd, p, q, qflag, sep); |
} else { |
} else { |
prfield(p, sep, vflag); |
prfield(p, sep, vflag, p->valp); |
printf("\n"); |
printf("\n"); |
} |
} |
|
|