Deleted Added
full compact
mixer.c (144999) mixer.c (153953)
1/*
2 * This is an example of a mixer program for Linux
3 *
4 * updated 1/1/93 to add stereo, level query, broken
5 * devmask kludge - cmetz@thor.tjhsst.edu
6 *
7 * (C) Craig Metz and Hannu Savolainen 1993.
8 *
9 * You may do anything you wish with this program.
10 *
11 * ditto for my modifications (John-Mark Gurney, 1997)
12 */
13
14#include <sys/cdefs.h>
1/*
2 * This is an example of a mixer program for Linux
3 *
4 * updated 1/1/93 to add stereo, level query, broken
5 * devmask kludge - cmetz@thor.tjhsst.edu
6 *
7 * (C) Craig Metz and Hannu Savolainen 1993.
8 *
9 * You may do anything you wish with this program.
10 *
11 * ditto for my modifications (John-Mark Gurney, 1997)
12 */
13
14#include <sys/cdefs.h>
15__FBSDID("$FreeBSD: head/usr.sbin/mixer/mixer.c 144999 2005-04-13 07:11:54Z mdodd $");
15__FBSDID("$FreeBSD: head/usr.sbin/mixer/mixer.c 153953 2006-01-01 20:19:49Z ariff $");
16
17#include <err.h>
18#include <fcntl.h>
19#include <stdio.h>
20#include <string.h>
21#include <stdlib.h>
22#include <unistd.h>
23#include <sys/soundcard.h>
24
25const char *names[SOUND_MIXER_NRDEVICES] = SOUND_DEVICE_NAMES;
26
27void usage(int devmask, int recmask);
28int res_name(const char *name, int mask);
16
17#include <err.h>
18#include <fcntl.h>
19#include <stdio.h>
20#include <string.h>
21#include <stdlib.h>
22#include <unistd.h>
23#include <sys/soundcard.h>
24
25const char *names[SOUND_MIXER_NRDEVICES] = SOUND_DEVICE_NAMES;
26
27void usage(int devmask, int recmask);
28int res_name(const char *name, int mask);
29void print_recsrc(int recsrc);
29void print_recsrc(int recsrc, int shortflag);
30
31void
32usage(int devmask, int recmask)
33{
34 int i, n;
35
36 printf("usage: mixer [-f device] [-s | -S] [dev [+|-][voll[:[+|-]volr]] ...\n"
37 " mixer [-f device] [-s | -S] recsrc ...\n"

--- 26 unchanged lines hidden (view full) ---

64 for (foo = 0; foo < SOUND_MIXER_NRDEVICES; foo++)
65 if ((1 << foo) & mask && !strcmp(names[foo], name))
66 break;
67
68 return foo == SOUND_MIXER_NRDEVICES ? -1 : foo;
69}
70
71void
30
31void
32usage(int devmask, int recmask)
33{
34 int i, n;
35
36 printf("usage: mixer [-f device] [-s | -S] [dev [+|-][voll[:[+|-]volr]] ...\n"
37 " mixer [-f device] [-s | -S] recsrc ...\n"

--- 26 unchanged lines hidden (view full) ---

64 for (foo = 0; foo < SOUND_MIXER_NRDEVICES; foo++)
65 if ((1 << foo) & mask && !strcmp(names[foo], name))
66 break;
67
68 return foo == SOUND_MIXER_NRDEVICES ? -1 : foo;
69}
70
71void
72print_recsrc(int recsrc)
72print_recsrc(int recsrc, int shortflag)
73{
74 int i, n = 0;
73{
74 int i, n = 0;
75 fprintf(stderr, "Recording source: ");
76
75
76 if (!shortflag)
77 printf("Recording source: ");
78
77 for (i = 0; i < SOUND_MIXER_NRDEVICES; i++)
78 if ((1 << i) & recsrc) {
79 for (i = 0; i < SOUND_MIXER_NRDEVICES; i++)
80 if ((1 << i) & recsrc) {
79 if (n)
80 fprintf(stderr, ", ");
81 fprintf(stderr, "%s", names[i]);
81 if (shortflag) {
82 if (n)
83 printf(" +rec ");
84 else
85 printf("=rec ");
86 } else if (n)
87 printf(", ");
88 printf("%s", names[i]);
82 n = 1;
83 }
89 n = 1;
90 }
84 fprintf(stderr, "\n");
91 if (!shortflag)
92 printf("\n");
85}
86
87int
88main(int argc, char *argv[])
89{
90 int foo, bar, baz, dev;
91 int devmask = 0, recmask = 0, recsrc = 0, orecsrc;
92 int dusage = 0, drecsrc = 0, shortflag = 0, Shortflag = 0;
93 int l = 0, r = 0, t = 0;
94 char lstr[5], rstr[5];
95 int n = 0, lrel = 0, rrel = 0;
96 int ch;
97
98 char *name;
99
93}
94
95int
96main(int argc, char *argv[])
97{
98 int foo, bar, baz, dev;
99 int devmask = 0, recmask = 0, recsrc = 0, orecsrc;
100 int dusage = 0, drecsrc = 0, shortflag = 0, Shortflag = 0;
101 int l = 0, r = 0, t = 0;
102 char lstr[5], rstr[5];
103 int n = 0, lrel = 0, rrel = 0;
104 int ch;
105
106 char *name;
107
100 name = strdup("/dev/mixer");
108 name = "/dev/mixer";
101
102 if (!strcmp(argv[0], "mixer2"))
109
110 if (!strcmp(argv[0], "mixer2"))
103 name = strdup("/dev/mixer1");
111 name = "/dev/mixer1";
104 else if (!strcmp(argv[0], "mixer3"))
112 else if (!strcmp(argv[0], "mixer3"))
105 name = strdup("/dev/mixer2");
113 name = "/dev/mixer2";
106
107 while ((ch = getopt(argc, argv, "f:sS")) != -1)
108 switch (ch) {
109 case 'f':
114
115 while ((ch = getopt(argc, argv, "f:sS")) != -1)
116 switch (ch) {
117 case 'f':
110 name = strdup(optarg);
118 name = optarg;
111 break;
112 case 's':
113 shortflag = 1;
114 break;
115 case 'S':
116 Shortflag = 1;
117 break;
118 default:
119 dusage = 1;
120 }
121 argc -= (optind - 1);
122 argv += (optind - 1);
123
124 if ((baz = open(name, O_RDWR)) < 0)
125 err(1, "%s", name);
119 break;
120 case 's':
121 shortflag = 1;
122 break;
123 case 'S':
124 Shortflag = 1;
125 break;
126 default:
127 dusage = 1;
128 }
129 argc -= (optind - 1);
130 argv += (optind - 1);
131
132 if ((baz = open(name, O_RDWR)) < 0)
133 err(1, "%s", name);
126 free(name);
127 if (ioctl(baz, SOUND_MIXER_READ_DEVMASK, &devmask) == -1)
128 err(1, "SOUND_MIXER_READ_DEVMASK");
129 if (ioctl(baz, SOUND_MIXER_READ_RECMASK, &recmask) == -1)
130 err(1, "SOUND_MIXER_READ_RECMASK");
131 if (ioctl(baz, SOUND_MIXER_READ_RECSRC, &recsrc) == -1)
132 err(1, "SOUND_MIXER_READ_RECSRC");
133 orecsrc = recsrc;
134

--- 12 unchanged lines hidden (view full) ---

147 printf("%s %d:%d ", names[foo], bar & 0x7f,
148 (bar >> 8) & 0x7f);
149 else
150 printf("Mixer %-8s is currently set to %3d:%d\n",
151 names[foo], bar & 0x7f, (bar >> 8) & 0x7f);
152 }
153 if (ioctl(baz, SOUND_MIXER_READ_RECSRC, &recsrc) == -1)
154 err(1, "SOUND_MIXER_READ_RECSRC");
134 if (ioctl(baz, SOUND_MIXER_READ_DEVMASK, &devmask) == -1)
135 err(1, "SOUND_MIXER_READ_DEVMASK");
136 if (ioctl(baz, SOUND_MIXER_READ_RECMASK, &recmask) == -1)
137 err(1, "SOUND_MIXER_READ_RECMASK");
138 if (ioctl(baz, SOUND_MIXER_READ_RECSRC, &recsrc) == -1)
139 err(1, "SOUND_MIXER_READ_RECSRC");
140 orecsrc = recsrc;
141

--- 12 unchanged lines hidden (view full) ---

154 printf("%s %d:%d ", names[foo], bar & 0x7f,
155 (bar >> 8) & 0x7f);
156 else
157 printf("Mixer %-8s is currently set to %3d:%d\n",
158 names[foo], bar & 0x7f, (bar >> 8) & 0x7f);
159 }
160 if (ioctl(baz, SOUND_MIXER_READ_RECSRC, &recsrc) == -1)
161 err(1, "SOUND_MIXER_READ_RECSRC");
155 print_recsrc(recsrc);
162 print_recsrc(recsrc, shortflag || Shortflag);
156 return(0);
157 }
158
159 argc--; argv++;
160
161 while ((argc > 0) && (dusage == 0)) {
162 if (!strcmp("recsrc", *argv)) {
163 drecsrc = 1;

--- 119 unchanged lines hidden (view full) ---

283
284 if (orecsrc != recsrc)
285 if (ioctl(baz, SOUND_MIXER_WRITE_RECSRC, &recsrc) == -1)
286 err(1, "SOUND_MIXER_WRITE_RECSRC");
287
288 if (drecsrc) {
289 if (ioctl(baz, SOUND_MIXER_READ_RECSRC, &recsrc) == -1)
290 err(1, "SOUND_MIXER_READ_RECSRC");
163 return(0);
164 }
165
166 argc--; argv++;
167
168 while ((argc > 0) && (dusage == 0)) {
169 if (!strcmp("recsrc", *argv)) {
170 drecsrc = 1;

--- 119 unchanged lines hidden (view full) ---

290
291 if (orecsrc != recsrc)
292 if (ioctl(baz, SOUND_MIXER_WRITE_RECSRC, &recsrc) == -1)
293 err(1, "SOUND_MIXER_WRITE_RECSRC");
294
295 if (drecsrc) {
296 if (ioctl(baz, SOUND_MIXER_READ_RECSRC, &recsrc) == -1)
297 err(1, "SOUND_MIXER_READ_RECSRC");
291 print_recsrc(recsrc);
298 print_recsrc(recsrc, shortflag || Shortflag);
292 }
293
294 close(baz);
295
296 exit(0);
297}
299 }
300
301 close(baz);
302
303 exit(0);
304}