Changeset 4186:8052a0fa5ec2 in roaraudio for libroar/vs.c


Ignore:
Timestamp:
08/14/10 17:01:36 (14 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

read error value from RoarAudio's own errno

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroar/vs.c

    r4183 r4186  
    4040#define FLAG_NONBLOCK 0x0002 
    4141 
    42 #define _seterr(x) do { if ( error != NULL ) *error = (x); } while(0) 
     42#define _initerr()  do { errno = 0; roar_err_clear(); } while(0) 
     43#define _seterr(x)  do { if ( error != NULL ) *error = (x); } while(0) 
     44#define _seterrre() do { _seterr(roar_errno); } while(0) 
     45#define _seterrse() do { roar_err_from_errno(); _seterr(roar_errno); } while(0) 
    4346 
    4447struct roar_vs { 
     
    8487 
    8588 if ( vss == NULL ) { 
    86   _seterr(ROAR_ERROR_NOMEM); 
     89  _seterrse(); 
    8790  return NULL; 
    8891 } 
     
    113116 vss->con = &(vss->con_store); 
    114117 
     118 _initerr(); 
     119 
    115120 ret = roar_simple_connect(vss->con, (char*)server, (char*)name); 
    116121 
    117122 if ( ret == -1 ) { 
    118123  roar_vs_close(vss, ROAR_VS_TRUE, NULL); 
    119   _seterr(ROAR_ERROR_UNKNOWN); 
     124  _seterrre(); 
    120125  return NULL; 
    121126 } 
     
    131136  return -1; 
    132137 } 
     138 
     139 _initerr(); 
    133140 
    134141 ret = roar_vio_simple_new_stream_obj(&(vss->vio), vss->con, &(vss->stream), 
     
    138145 
    139146 if ( ret == -1 ) { 
    140   _seterr(ROAR_ERROR_UNKNOWN); 
     147  _seterrre(); 
    141148  return -1; 
    142149 } 
     
    202209 } 
    203210 
     211 _initerr(); 
     212 
    204213 ret = roar_vio_write(&(vss->vio), (void*)buf, len); 
    205214 
    206215 if ( ret == -1 ) { 
    207   _seterr(ROAR_ERROR_UNKNOWN); 
     216  _seterrre(); 
    208217 } 
    209218 
     
    219228 } 
    220229 
     230 _initerr(); 
     231 
    221232 ret = roar_vio_read(&(vss->vio), buf, len); 
    222233 
    223234 if ( ret == -1 ) { 
    224   _seterr(ROAR_ERROR_UNKNOWN); 
     235  _seterrre(); 
    225236 } 
    226237 
     
    239250 } 
    240251 
    241  roar_vio_sync(&(vss->vio)); 
     252 _initerr(); 
     253 
     254 if ( roar_vio_sync(&(vss->vio)) == -1 ) { 
     255  _seterrre(); 
     256  return -1; 
     257 } 
    242258 
    243259 return 0; 
     
    253269 
    254270 old = vss->flags & FLAG_NONBLOCK ? ROAR_VS_FALSE : ROAR_VS_TRUE; 
     271 
     272 _initerr(); 
    255273 
    256274 switch (val) { 
    257275  case ROAR_VS_TRUE: 
    258276    if ( roar_vio_nonblock(&(vss->vio), ROAR_SOCKET_BLOCK) == -1 ) { 
    259      _seterr(ROAR_ERROR_UNKNOWN); 
     277     _seterrre(); 
    260278     return -1; 
    261279    } 
     
    266284  case ROAR_VS_FALSE: 
    267285    if ( roar_vio_nonblock(&(vss->vio), ROAR_SOCKET_NONBLOCK) == -1 ) { 
    268      _seterr(ROAR_ERROR_UNKNOWN); 
     286     _seterrre(); 
    269287     return -1; 
    270288    } 
     
    289307 
    290308ssize_t roar_vs_latency(roar_vs_t * vss, int backend, int * error) { 
    291  _seterr(ROAR_ERROR_NOTSUP); 
     309 _seterr(ROAR_ERROR_NOSYS); 
    292310 return -1; 
    293311} 
     
    304322 if ( val != ROAR_VS_ASK ) 
    305323  old = roar_vs_flag(vss, flag, ROAR_VS_ASK, error); 
     324 
     325 _initerr(); 
    306326 
    307327 switch (val) { 
     
    310330    if ( roar_stream_set_flags(vss->con, &(vss->stream), flag, 
    311331                               val == ROAR_VS_TRUE ? ROAR_SET_FLAG : ROAR_RESET_FLAG) == -1 ) { 
    312      _seterr(ROAR_ERROR_UNKNOWN); 
     332     _seterrre(); 
    313333     return -1; 
    314334    } 
     
    320340  case ROAR_VS_ASK: 
    321341    if ( roar_stream_get_info(vss->con, &(vss->stream), &info) == -1 ) { 
    322      _seterr(ROAR_ERROR_UNKNOWN); 
     342     _seterrre(); 
    323343     return -1; 
    324344    } 
     
    356376 } 
    357377 
     378 _initerr(); 
     379 
    358380 if ( roar_get_vol(vss->con, roar_stream_get_id(&(vss->stream)), &mixer, &oldchannels) == -1 ) { 
    359   _seterr(ROAR_ERROR_UNKNOWN); 
     381  _seterrre(); 
    360382  return -1; 
    361383 } 
     
    413435 
    414436 if ( roar_set_vol(vss->con, roar_stream_get_id(&(vss->stream)), &mixer, channels) == -1 ) { 
    415   _seterr(ROAR_ERROR_UNKNOWN); 
     437  _seterrre(); 
    416438  return -1; 
    417439 } 
     
    443465 } 
    444466 
     467 _initerr(); 
     468 
    445469 if ( roar_get_vol(vss->con, roar_stream_get_id(&(vss->stream)), &mixer, &channels) == -1 ) { 
    446   _seterr(ROAR_ERROR_UNKNOWN); 
     470  _seterrre(); 
    447471  return -1; 
    448472 } 
     
    472496 meta.value  = NULL; 
    473497 
    474  // TODO: add error hadnling here. 
     498 _initerr(); 
    475499 
    476500 if ( roar_stream_meta_set(vss->con, &(vss->stream), ROAR_META_MODE_CLEAR, &meta) == -1 ) { 
    477   _seterr(ROAR_ERROR_UNKNOWN); 
     501  _seterrre(); 
    478502  ret = -1; 
    479503 } 
     
    485509 
    486510  if ( roar_stream_meta_set(vss->con, &(vss->stream), ROAR_META_MODE_ADD, &meta) == -1 ) { 
    487    _seterr(ROAR_ERROR_UNKNOWN); 
     511   _seterrre(); 
    488512   ret = -1; 
    489513  } 
     
    494518 meta.value  = NULL; 
    495519 if ( roar_stream_meta_set(vss->con, &(vss->stream), ROAR_META_MODE_FINALIZE, &meta) == -1 ) { 
    496   _seterr(ROAR_ERROR_UNKNOWN); 
     520  _seterrre(); 
    497521  ret = -1; 
    498522 } 
     
    508532 if ( !(vss->flags & FLAG_STREAM) ) { 
    509533  _seterr(ROAR_ERROR_INVAL); 
    510   return -1; 
     534  return NULL; 
    511535 } 
    512536 
     
    517541 if ( !(vss->flags & FLAG_STREAM) ) { 
    518542  _seterr(ROAR_ERROR_INVAL); 
    519   return -1; 
     543  return NULL; 
    520544 } 
    521545 
Note: See TracChangeset for help on using the changeset viewer.