diff options
author | Chris Robinson <[email protected]> | 2010-06-05 19:33:06 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2010-06-05 19:33:06 -0700 |
commit | 80fbe8a788b7007deb2e42178c857e504207aa50 (patch) | |
tree | 97204574e484a7c649aaea06a15e32aa77e86fc2 /Alc | |
parent | 0fdec056facefe2dc8a58889651fd5c859d303b7 (diff) |
Allow prepending backend names with - to remove them from the available devices
Diffstat (limited to 'Alc')
-rw-r--r-- | Alc/ALc.c | 29 |
1 files changed, 21 insertions, 8 deletions
@@ -436,13 +436,16 @@ static void alc_init(void) int n; size_t len; const char *next = devs; - int endlist; + int endlist, delitem; i = 0; do { devs = next; next = strchr(devs, ','); + delitem = (devs[0] == '-'); + if(devs[0] == '-') devs++; + if(!devs[0] || devs[0] == ',') { endlist = 0; @@ -456,15 +459,25 @@ static void alc_init(void) if(len == strlen(BackendList[n].name) && strncmp(BackendList[n].name, devs, len) == 0) { - BackendInfo Bkp = BackendList[n]; - while(n > i) + if(delitem) { - BackendList[n] = BackendList[n-1]; - --n; + do { + BackendList[n] = BackendList[n+1]; + ++n; + } while(BackendList[n].Init); + } + else + { + BackendInfo Bkp = BackendList[n]; + while(n > i) + { + BackendList[n] = BackendList[n-1]; + --n; + } + BackendList[n] = Bkp; + + i++; } - BackendList[n] = Bkp; - - i++; break; } } |