version 1.5, 2021/01/29 11:21:00 |
version 1.6, 2021/01/29 11:25:05 |
|
|
int pmin, int pmax, int rmin, int rmax, |
int pmin, int pmax, int rmin, int rmax, |
int maxweight, int mmc, int dup, unsigned int mode) |
int maxweight, int mmc, int dup, unsigned int mode) |
{ |
{ |
struct opt *o; |
struct opt *o, **po; |
unsigned int len; |
unsigned int len, num; |
char c; |
char c; |
|
|
if (opt_byname(d, name)) { |
|
dev_log(d); |
|
log_puts("."); |
|
log_puts(name); |
|
log_puts(": already defined\n"); |
|
return NULL; |
|
} |
|
for (len = 0; name[len] != '\0'; len++) { |
for (len = 0; name[len] != '\0'; len++) { |
if (len == OPT_NAMEMAX) { |
if (len == OPT_NAMEMAX) { |
log_puts(name); |
log_puts(name); |
|
|
return NULL; |
return NULL; |
} |
} |
} |
} |
|
num = 0; |
|
for (po = &opt_list; *po != NULL; po = &(*po)->next) |
|
num++; |
|
if (num >= OPT_NMAX) { |
|
log_puts(name); |
|
log_puts(": too many opts\n"); |
|
return NULL; |
|
} |
|
if (opt_byname(d, name)) { |
|
dev_log(d); |
|
log_puts("."); |
|
log_puts(name); |
|
log_puts(": already defined\n"); |
|
return NULL; |
|
} |
o = xmalloc(sizeof(struct opt)); |
o = xmalloc(sizeof(struct opt)); |
|
o->num = num; |
o->dev = d; |
o->dev = d; |
if (mode & MODE_PLAY) { |
if (mode & MODE_PLAY) { |
o->pmin = pmin; |
o->pmin = pmin; |
|
|
o->dup = dup; |
o->dup = dup; |
o->mode = mode; |
o->mode = mode; |
memcpy(o->name, name, len + 1); |
memcpy(o->name, name, len + 1); |
o->next = opt_list; |
o->next = *po; |
opt_list = o; |
*po = o; |
if (log_level >= 2) { |
if (log_level >= 2) { |
dev_log(d); |
dev_log(d); |
log_puts("."); |
log_puts("."); |