version 1.3, 2012/11/30 21:04:35 |
version 1.4, 2012/12/01 12:06:14 |
|
|
errx(1, "%s: on/off expected", optarg); |
errx(1, "%s: on/off expected", optarg); |
} |
} |
|
|
|
int |
|
getword(char *word, char **str) |
|
{ |
|
char *p = *str; |
|
|
|
for (;;) { |
|
if (*word == '\0') |
|
break; |
|
if (*word++ != *p++) |
|
return 0; |
|
} |
|
if (*p == ',' || *p == '\0') { |
|
*str = p; |
|
return 1; |
|
} |
|
return 0; |
|
} |
|
|
unsigned int |
unsigned int |
opt_mode(void) |
opt_mode(void) |
{ |
{ |
unsigned int mode = 0; |
unsigned int mode = 0; |
char *p = optarg; |
char *p = optarg; |
size_t len; |
|
|
|
for (p = optarg; *p != '\0'; p++) { |
for (;;) { |
len = strcspn(p, ","); |
if (getword("play", &p)) { |
if (strncmp("play", p, len) == 0) { |
|
mode |= MODE_PLAY; |
mode |= MODE_PLAY; |
} else if (strncmp("rec", p, len) == 0) { |
} else if (getword("rec", &p)) { |
mode |= MODE_REC; |
mode |= MODE_REC; |
} else if (strncmp("mon", p, len) == 0) { |
} else if (getword("mon", &p)) { |
mode |= MODE_MON; |
mode |= MODE_MON; |
} else if (strncmp("midi", p, len) == 0) { |
} else if (getword("midi", &p)) { |
mode |= MODE_MIDIMASK; |
mode |= MODE_MIDIMASK; |
} else |
} else |
errx(1, "%s: bad mode", optarg); |
errx(1, "%s: bad mode", optarg); |
p += len; |
|
if (*p == '\0') |
if (*p == '\0') |
break; |
break; |
|
p++; |
} |
} |
if (mode == 0) |
if (mode == 0) |
errx(1, "empty mode"); |
errx(1, "empty mode"); |
|
|
mkdev(optarg, &par, 0, bufsz, round, rate, hold, autovol); |
mkdev(optarg, &par, 0, bufsz, round, rate, hold, autovol); |
break; |
break; |
case 'M': |
case 'M': |
/* XXX: compatibility with aucat */ |
/* XXX: for compatibility with aucat, remove this */ |
break; |
break; |
default: |
default: |
fputs(usagestr, stderr); |
fputs(usagestr, stderr); |