mixer.c (108421) | mixer.c (113299) |
---|---|
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#ifndef lint 15static const char rcsid[] = | 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#ifndef lint 15static const char rcsid[] = |
16 "$FreeBSD: head/usr.sbin/mixer/mixer.c 108421 2002-12-30 04:23:08Z jmallett $"; | 16 "$FreeBSD: head/usr.sbin/mixer/mixer.c 113299 2003-04-09 15:25:52Z mdodd $"; |
17#endif /* not lint */ 18 19#include <err.h> 20#include <fcntl.h> 21#include <stdio.h> 22#include <string.h> 23#include <stdlib.h> 24#include <unistd.h> --- 5 unchanged lines hidden (view full) --- 30int res_name(const char *name, int mask); 31void print_recsrc(int recsrc); 32 33void 34usage(int devmask, int recmask) 35{ 36 int i, n; 37 | 17#endif /* not lint */ 18 19#include <err.h> 20#include <fcntl.h> 21#include <stdio.h> 22#include <string.h> 23#include <stdlib.h> 24#include <unistd.h> --- 5 unchanged lines hidden (view full) --- 30int res_name(const char *name, int mask); 31void print_recsrc(int recsrc); 32 33void 34usage(int devmask, int recmask) 35{ 36 int i, n; 37 |
38 printf("usage: mixer [-f device] [-s] [[dev [voll[:volr]] | recsrc | {^|+|-|=}rec recdev] ... ]\n"); | 38 printf("usage: mixer [-f device] [-s] [dev [+|-][voll[:[+|-]volr]] ...\n" 39 " mixer [-f device] [-s] recsrc ...\n" 40 " mixer [-f device] [-s] {^|+|-|=}rec rdev ... \n"); |
39 printf(" devices: "); 40 for (i = 0, n = 0; i < SOUND_MIXER_NRDEVICES; i++) 41 if ((1 << i) & devmask) { 42 if (n) 43 printf(", "); 44 printf("%s", names[i]); 45 n = 1; 46 } --- 39 unchanged lines hidden (view full) --- 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; 93 int l = 0, r = 0, t = 0; | 41 printf(" devices: "); 42 for (i = 0, n = 0; i < SOUND_MIXER_NRDEVICES; i++) 43 if ((1 << i) & devmask) { 44 if (n) 45 printf(", "); 46 printf("%s", names[i]); 47 n = 1; 48 } --- 39 unchanged lines hidden (view full) --- 88 89int 90main(int argc, char *argv[]) 91{ 92 int foo, bar, baz, dev; 93 int devmask = 0, recmask = 0, recsrc = 0, orecsrc; 94 int dusage = 0, drecsrc = 0, shortflag = 0; 95 int l = 0, r = 0, t = 0; |
96 char lstr[5], rstr[5]; 97 int n = 0, lrel = 0, rrel = 0; |
|
94 char ch; 95 96 char *name; 97 98 name = strdup("/dev/mixer"); 99 100 if (!strcmp(argv[0], "mixer2")) 101 name = strdup("/dev/mixer1"); --- 83 unchanged lines hidden (view full) --- 185 dev = 0; 186 } 187 else if((dev = res_name(*argv, devmask)) == -1) { 188 warnx("unknown device: %s", *argv); 189 dusage = 1; 190 break; 191 } 192 | 98 char ch; 99 100 char *name; 101 102 name = strdup("/dev/mixer"); 103 104 if (!strcmp(argv[0], "mixer2")) 105 name = strdup("/dev/mixer1"); --- 83 unchanged lines hidden (view full) --- 189 dev = 0; 190 } 191 else if((dev = res_name(*argv, devmask)) == -1) { 192 warnx("unknown device: %s", *argv); 193 dusage = 1; 194 break; 195 } 196 |
193 switch(argc > 1 ? sscanf(argv[1], "%d:%d", &l, &r) : t) { | 197#define issign(c) (((c) == '+') || ((c) == '-')) 198 199 if (argc > 1) { 200 n = sscanf(argv[1], "%7[^:]:%7s", lstr, rstr); 201 if (n > 0) { 202 if (issign(lstr[0])) 203 lrel = rrel = 1; 204 l = atoi(lstr); 205 } 206 if (n > 1) { 207 rrel = 0; 208 if (issign(rstr[0])) 209 rrel = 1; 210 r = atoi(rstr); 211 } 212 } 213 214 switch(argc > 1 ? n : t) { |
194 case 0: 195 if (ioctl(baz, MIXER_READ(dev),&bar)== -1) { 196 warn("MIXER_READ"); 197 argc--; argv++; 198 continue; 199 } 200 if (shortflag) 201 printf("%s %d:%d ", names[dev], bar & 0x7f, (bar >> 8) & 0x7f); 202 else 203 printf("Mixer %-8s is currently set to %3d:%d\n", 204 names[dev], bar & 0x7f, (bar >> 8) & 0x7f); 205 206 argc--; argv++; 207 break; 208 case 1: 209 r = l; 210 case 2: | 215 case 0: 216 if (ioctl(baz, MIXER_READ(dev),&bar)== -1) { 217 warn("MIXER_READ"); 218 argc--; argv++; 219 continue; 220 } 221 if (shortflag) 222 printf("%s %d:%d ", names[dev], bar & 0x7f, (bar >> 8) & 0x7f); 223 else 224 printf("Mixer %-8s is currently set to %3d:%d\n", 225 names[dev], bar & 0x7f, (bar >> 8) & 0x7f); 226 227 argc--; argv++; 228 break; 229 case 1: 230 r = l; 231 case 2: |
232 if (ioctl(baz, MIXER_READ(dev),&bar)== -1) { 233 warn("MIXER_READ"); 234 argc--; argv++; 235 continue; 236 } 237 238 if (lrel) 239 l = (bar & 0x7f) + l; 240 if (rrel) 241 r = ((bar >> 8) & 0x7f) + r; 242 |
|
211 if (l < 0) 212 l = 0; 213 else if (l > 100) 214 l = 100; 215 if (r < 0) 216 r = 0; 217 else if (r > 100) 218 r = 100; 219 | 243 if (l < 0) 244 l = 0; 245 else if (l > 100) 246 l = 100; 247 if (r < 0) 248 r = 0; 249 else if (r > 100) 250 r = 100; 251 |
220 if (ioctl(baz, MIXER_READ(dev),&bar)== -1) { 221 warn("MIXER_READ"); 222 argc--; argv++; 223 continue; 224 } 225 | |
226 printf("Setting the mixer %s from %d:%d to %d:%d.\n", 227 names[dev], bar & 0x7f, (bar >> 8) & 0x7f, l, r); 228 229 l |= r << 8; 230 if (ioctl(baz, MIXER_WRITE(dev), &l) == -1) 231 warn("WRITE_MIXER"); 232 233 argc -= 2; argv += 2; --- 24 unchanged lines hidden --- | 252 printf("Setting the mixer %s from %d:%d to %d:%d.\n", 253 names[dev], bar & 0x7f, (bar >> 8) & 0x7f, l, r); 254 255 l |= r << 8; 256 if (ioctl(baz, MIXER_WRITE(dev), &l) == -1) 257 warn("WRITE_MIXER"); 258 259 argc -= 2; argv += 2; --- 24 unchanged lines hidden --- |