Changeset 5276:0eb24ca6810e in roaraudio for libroar/vio.c


Ignore:
Timestamp:
11/20/11 18:36:49 (12 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

merged VIO's _nonblock() into _ctl() (Closes: #135)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroar/vio.c

    r5270 r5276  
    6565 calls->write    = roar_vio_basic_write; 
    6666 calls->lseek    = roar_vio_basic_lseek; 
    67  calls->nonblock = roar_vio_basic_nonblock; 
    6867 calls->sync     = roar_vio_basic_sync; 
    6968 calls->ctl      = roar_vio_basic_ctl; 
     
    179178 
    180179int     roar_vio_nonblock(struct roar_vio_calls * vio, int state) { 
    181  int ret; 
    182  
    183180 ROAR_DBG("roar_vio_nonblock(vio=%p, state=%i) = ?", vio, state); 
    184181 
     
    188185 } 
    189186 
    190  if ( vio->nonblock == NULL ) { 
    191   roar_err_set(ROAR_ERROR_NOSYS); 
    192   return -1; 
    193  } 
    194  
    195  roar_err_clear_all(); 
    196  ret = vio->nonblock(vio, state); 
    197  roar_err_update(); 
    198  
    199  return ret; 
     187 return roar_vio_ctl(vio, ROAR_VIO_CTL_NONBLOCK, &state); 
    200188} 
    201189 
     
    346334 calls->read     = roar_vio_winsock_read; 
    347335 calls->write    = roar_vio_winsock_write; 
    348  calls->nonblock = roar_vio_winsock_nonblock; 
    349336 calls->sync     = roar_vio_winsock_sync; 
    350337 calls->ctl      = roar_vio_winsock_ctl; 
     
    414401 return -1; 
    415402#endif 
    416 } 
    417  
    418 int     roar_vio_basic_nonblock(struct roar_vio_calls * vio, int state) { 
    419  if ( roar_socket_nonblock(roar_vio_get_fh(vio), state) == -1 ) 
    420   return -1; 
    421  
    422  if ( state == ROAR_SOCKET_NONBLOCK ) 
    423   return 0; 
    424  
    425  roar_vio_sync(vio); 
    426  
    427  return 0; 
    428403} 
    429404 
     
    666641   break; 
    667642#endif 
     643  case ROAR_VIO_CTL_NONBLOCK: 
     644    if ( roar_socket_nonblock(roar_vio_get_fh(vio), *(int*)data) == -1 ) 
     645     return -1; 
     646 
     647    if ( *(int*)data == ROAR_SOCKET_NONBLOCK ) 
     648     return 0; 
     649 
     650    roar_vio_sync(vio); 
     651    return 0; 
     652   break; 
    668653 } 
    669654 
     
    713698 calls->write    = roar_vio_pass_write; 
    714699 calls->lseek    = roar_vio_pass_lseek; 
    715  calls->nonblock = roar_vio_pass_nonblock; 
    716700 calls->sync     = roar_vio_pass_sync; 
    717701 calls->ctl      = roar_vio_pass_ctl; 
     
    733717off_t   roar_vio_pass_lseek(struct roar_vio_calls * vio, off_t offset, int whence) { 
    734718 return roar_vio_lseek((struct roar_vio_calls *) vio->inst, offset, whence); 
    735 } 
    736  
    737 int     roar_vio_pass_nonblock(struct roar_vio_calls * vio, int state) { 
    738  return roar_vio_nonblock((struct roar_vio_calls *) vio->inst, state); 
    739719} 
    740720 
Note: See TracChangeset for help on using the changeset viewer.