=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/sndiod/dev.c,v retrieving revision 1.72 retrieving revision 1.73 diff -u -r1.72 -r1.73 --- src/usr.bin/sndiod/dev.c 2020/06/12 15:40:18 1.72 +++ src/usr.bin/sndiod/dev.c 2020/06/18 05:11:13 1.73 @@ -1,4 +1,4 @@ -/* $OpenBSD: dev.c,v 1.72 2020/06/12 15:40:18 ratchov Exp $ */ +/* $OpenBSD: dev.c,v 1.73 2020/06/18 05:11:13 ratchov Exp $ */ /* * Copyright (c) 2008-2012 Alexandre Ratchov * @@ -1017,10 +1017,11 @@ return NULL; } d = xmalloc(sizeof(struct dev)); - d->path_list = NULL; - namelist_add(&d->path_list, path); + d->alt_list = NULL; + dev_addname(d,path); d->num = dev_sndnum++; d->opt_list = NULL; + d->alt_num = 1; /* * XXX: below, we allocate a midi input buffer, since we don't @@ -1066,6 +1067,27 @@ } /* + * add a alternate name + */ +int +dev_addname(struct dev *d, char *name) +{ + struct dev_alt *a; + + if (d->alt_list != NULL && d->alt_list->idx == DEV_NMAX - 1) { + log_puts(name); + log_puts(": too many alternate names\n"); + return 0; + } + a = xmalloc(sizeof(struct dev_alt)); + a->name = name; + a->idx = (d->alt_list == NULL) ? 0 : d->alt_list->idx + 1; + a->next = d->alt_list; + d->alt_list = a; + return 1; +} + +/* * adjust device parameters and mode */ void @@ -1418,6 +1440,7 @@ dev_del(struct dev *d) { struct dev **p; + struct dev_alt *a; #ifdef DEBUG if (log_level >= 3) { @@ -1440,7 +1463,10 @@ } midi_del(d->midi); *p = d->next; - namelist_clear(&d->path_list); + while ((a = d->alt_list) != NULL) { + d->alt_list = a->next; + xfree(a); + } xfree(d); }