Changeset 1505:06a3687a4ce8 in roaraudio for libroar/vio.c


Ignore:
Timestamp:
04/01/09 17:55:36 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added more support for vio_ctl, added ROAR_VIO_CTL_GET_*FH and ROAR_VIO_CTL_SELECT

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroar/vio.c

    r1474 r1505  
    5757 calls->nonblock = roar_vio_basic_nonblock; 
    5858 calls->sync     = roar_vio_basic_sync; 
     59 calls->ctl      = roar_vio_basic_ctl; 
    5960 calls->close    = roar_vio_basic_close; 
    6061 
     
    380381 return 0; 
    381382#endif 
     383} 
     384 
     385int     roar_vio_basic_ctl     (struct roar_vio_calls * vio, int cmd, void * data) { 
     386 
     387 if ( vio == NULL || cmd == -1 ) 
     388  return -1; 
     389 
     390 switch (cmd) { 
     391  case ROAR_VIO_CTL_GET_FH: 
     392  case ROAR_VIO_CTL_GET_READ_FH: 
     393  case ROAR_VIO_CTL_GET_WRITE_FH: 
     394    *(int*)data = roar_vio_get_fh(vio); 
     395    return 0; 
     396   break; 
     397 } 
     398 
     399 return -1; 
    382400} 
    383401 
     
    441459 
    442460int     roar_vio_pass_ctl     (struct roar_vio_calls * vio, int cmd, void * data) { 
     461 if (vio == NULL || cmd == -1) 
     462  return -1; 
     463 
     464 switch (cmd) { 
     465  case ROAR_VIO_CTL_GET_NEXT: 
     466    *(struct roar_vio_calls **)data = vio->inst; 
     467    return 0; 
     468   break; 
     469  case ROAR_VIO_CTL_SET_NEXT: 
     470    vio->inst = *(struct roar_vio_calls **)data; 
     471    return 0; 
     472   break; 
     473 } 
     474 
    443475 return roar_vio_ctl((struct roar_vio_calls *) vio->inst, cmd, data); 
    444476} 
     
    538570} 
    539571 
     572int     roar_vio_stdio_ctl     (struct roar_vio_calls * vio, int cmd, void * data) { 
     573 
     574 if ( vio == NULL || cmd == -1 ) 
     575  return -1; 
     576 
     577 switch (cmd) { 
     578  case ROAR_VIO_CTL_GET_FH: 
     579  case ROAR_VIO_CTL_GET_READ_FH: 
     580  case ROAR_VIO_CTL_GET_WRITE_FH: 
     581   *(int*)data = fileno((FILE*)(vio->inst)); 
     582    return 0; 
     583   break; 
     584 } 
     585 
     586 return -1; 
     587} 
     588 
    540589int     roar_vio_stdio_close   (struct roar_vio_calls * vio) { 
    541590 return fclose((FILE*)(vio->inst)); 
Note: See TracChangeset for help on using the changeset viewer.