Changeset 4008:e83733d722d9 in roaraudio for libroaross


Ignore:
Timestamp:
07/01/10 15:43:44 (14 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

corrected matching of devices, only allow $DEV, $DEV[0-9], so no strange prgram starts to detect endlessly soundcards

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroaross/libroaross.c

    r4007 r4008  
    245245  struct handle * (*open)(const char * file, int flags, mode_t mode, struct devices * ptr); 
    246246} _device_list[] = { 
    247  {"/dev/dsp*",          HT_WAVEFORM,  0, NULL, NULL}, 
    248  {"/dev/audio*",        HT_WAVEFORM,  0, NULL, NULL}, 
    249  {"/dev/sound/dsp*",    HT_WAVEFORM,  0, NULL, NULL}, 
    250  {"/dev/sound/audio*",  HT_WAVEFORM,  0, NULL, NULL}, 
    251  {"/dev/mixer*",        HT_MIXER,     0, NULL, NULL}, 
    252  {"/dev/sound/mixer*",  HT_MIXER,     0, NULL, NULL}, 
    253  {"/dev/midi*",         HT_MIDI,      0, NULL, NULL}, 
    254  {"/dev/rmidi*",        HT_MIDI,      0, NULL, NULL}, 
    255  {"/dev/sound/midi*",   HT_MIDI,      0, NULL, NULL}, 
    256  {"/dev/sound/rmidi*",  HT_MIDI,      0, NULL, NULL}, 
    257  {"/dev/dmx*",          HT_DMX,       0, NULL, NULL}, 
    258  {"/dev/misc/dmx*",     HT_DMX,       0, NULL, NULL}, 
    259  {"/dev/dmxin*",        HT_DMX,       0, NULL, NULL}, 
    260  {"/dev/misc/dmxin*",   HT_DMX,       0, NULL, NULL}, 
     247 {"/dev/dsp",           HT_WAVEFORM,  0, NULL, NULL}, 
     248 {"/dev/dsp?",          HT_WAVEFORM,  0, NULL, NULL}, 
     249 {"/dev/audio",         HT_WAVEFORM,  0, NULL, NULL}, 
     250 {"/dev/audio?",        HT_WAVEFORM,  0, NULL, NULL}, 
     251 {"/dev/sound/dsp",     HT_WAVEFORM,  0, NULL, NULL}, 
     252 {"/dev/sound/dsp?",    HT_WAVEFORM,  0, NULL, NULL}, 
     253 {"/dev/sound/audio",   HT_WAVEFORM,  0, NULL, NULL}, 
     254 {"/dev/sound/audio?",  HT_WAVEFORM,  0, NULL, NULL}, 
     255 {"/dev/mixer",         HT_MIXER,     0, NULL, NULL}, 
     256 {"/dev/mixer?",        HT_MIXER,     0, NULL, NULL}, 
     257 {"/dev/sound/mixer",   HT_MIXER,     0, NULL, NULL}, 
     258 {"/dev/sound/mixer?",  HT_MIXER,     0, NULL, NULL}, 
     259 {"/dev/midi",          HT_MIDI,      0, NULL, NULL}, 
     260 {"/dev/midi?",         HT_MIDI,      0, NULL, NULL}, 
     261 {"/dev/rmidi",         HT_MIDI,      0, NULL, NULL}, 
     262 {"/dev/rmidi?",        HT_MIDI,      0, NULL, NULL}, 
     263 {"/dev/sound/midi",    HT_MIDI,      0, NULL, NULL}, 
     264 {"/dev/sound/midi?",   HT_MIDI,      0, NULL, NULL}, 
     265 {"/dev/sound/rmidi",   HT_MIDI,      0, NULL, NULL}, 
     266 {"/dev/sound/rmidi?",  HT_MIDI,      0, NULL, NULL}, 
     267 {"/dev/dmx",           HT_DMX,       0, NULL, NULL}, 
     268 {"/dev/dmx?",          HT_DMX,       0, NULL, NULL}, 
     269 {"/dev/misc/dmx",      HT_DMX,       0, NULL, NULL}, 
     270 {"/dev/misc/dmx?",     HT_DMX,       0, NULL, NULL}, 
     271 {"/dev/dmxin",         HT_DMX,       0, NULL, NULL}, 
     272 {"/dev/dmxin?",        HT_DMX,       0, NULL, NULL}, 
     273 {"/dev/misc/dmxin",    HT_DMX,       0, NULL, NULL}, 
     274 {"/dev/misc/dmxin?",   HT_DMX,       0, NULL, NULL}, 
    261275 {"/dev/sndstat",       HT_STATIC,    sizeof(_sf__dev_sndstat)-1, _sf__dev_sndstat, NULL}, 
    262276#ifdef ROAR_DEFAULT_OSS_DEV 
     
    533547 
    534548static struct devices * _get_device (const char * pathname) { 
    535  size_t len; 
     549 size_t len, pathlen; 
    536550 int i; 
     551 int qm_match; 
    537552 
    538553 ROAR_DBG("_get_device(pathname='%s') = ?", pathname); 
     554 
     555 pathlen = strlen(pathname); 
    539556 
    540557 for (i = 0; _device_list[i].prefix != NULL; i++) { 
    541558  len = strlen(_device_list[i].prefix); 
    542559 
     560  qm_match = 0; 
     561 
    543562  if ( _device_list[i].prefix[len-1] == '*' ) { 
     563   len--; 
     564  } else if ( _device_list[i].prefix[len-1] == '?' ) { 
     565   qm_match = 1; 
    544566   len--; 
    545567  } else { 
    546568   len++; 
    547569  } 
     570 
    548571  if ( !strncmp(pathname, _device_list[i].prefix, len) ) { 
    549    return &(_device_list[i]); 
     572   if ( !qm_match || pathlen == (len + 1) ) 
     573    return &(_device_list[i]); 
    550574  } 
    551575 } 
Note: See TracChangeset for help on using the changeset viewer.