Changeset 4873:98d17d4deeec in roaraudio for libroar/vio.c


Ignore:
Timestamp:
04/26/11 11:03:46 (13 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

make use of new error stuff

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroar/vio.c

    r4831 r4873  
    4646int roar_vio_init_calls (struct roar_vio_calls * calls) { 
    4747#ifdef _CAN_OPERATE 
    48  if ( calls == NULL ) 
    49   return -1; 
     48 if ( calls == NULL ) { 
     49  roar_err_set(ROAR_ERROR_FAULT); 
     50  return -1; 
     51 } 
    5052 
    5153 memset((void*)calls, 0, sizeof(struct roar_vio_calls)); 
     
    7274 
    7375int roar_vio_set_inst (struct roar_vio_calls * vio, void * inst) { 
    74  if ( vio == NULL ) 
    75   return -1; 
     76 if ( vio == NULL ) { 
     77  roar_err_set(ROAR_ERROR_FAULT); 
     78  return -1; 
     79 } 
    7680 
    7781 vio->inst = inst; 
     
    8589 
    8690int roar_vio_get_fh   (struct roar_vio_calls * vio) { 
    87  if ( vio == NULL ) 
    88   return -1; 
     91 if ( vio == NULL ) { 
     92  roar_err_set(ROAR_ERROR_FAULT); 
     93  return -1; 
     94 } 
    8995 
    9096 return ((int)(ROAR_INSTINT)vio->inst) - 1; 
     
    9399 
    94100ssize_t roar_vio_read (struct roar_vio_calls * vio, void *buf, size_t count) { 
     101 ssize_t ret; 
     102 
    95103 ROAR_DBG("roar_vio_read(vio=%p, buf=%p, count=%u) = ?", vio, buf, (unsigned int)count); 
    96104 
    97  if ( vio == NULL ) 
    98   return -1; 
    99  
    100  if ( vio->read == NULL ) 
    101   return -1; 
    102  
    103  return vio->read(vio, buf, count); 
     105 if ( vio == NULL ) { 
     106  roar_err_set(ROAR_ERROR_FAULT); 
     107  return -1; 
     108 } 
     109 
     110 if ( vio->read == NULL ) { 
     111  roar_err_set(ROAR_ERROR_NOSYS); 
     112  return -1; 
     113 } 
     114 
     115 roar_err_clear_all(); 
     116 ret = vio->read(vio, buf, count); 
     117 roar_err_update(); 
     118 
     119 return ret; 
    104120} 
    105121 
    106122ssize_t roar_vio_write(struct roar_vio_calls * vio, void *buf, size_t count) { 
     123 ssize_t ret; 
     124 
    107125 ROAR_DBG("roar_vio_write(vio=%p, buf=%p, count=%u) = ?", vio, buf, (unsigned int)count); 
    108126 
    109  if ( vio == NULL ) 
    110   return -1; 
    111  
    112  if ( vio->write == NULL ) 
    113   return -1; 
    114  
    115  return vio->write(vio, buf, count); 
     127 if ( vio == NULL ) { 
     128  roar_err_set(ROAR_ERROR_FAULT); 
     129  return -1; 
     130 } 
     131 
     132 if ( vio->write == NULL ) { 
     133  roar_err_set(ROAR_ERROR_NOSYS); 
     134  return -1; 
     135 } 
     136 
     137 roar_err_clear_all(); 
     138 ret = vio->write(vio, buf, count); 
     139 roar_err_update(); 
     140 
     141 return ret; 
    116142} 
    117143 
    118144off_t   roar_vio_lseek(struct roar_vio_calls * vio, off_t offset, int whence) { 
     145 off_t ret; 
     146 
    119147 ROAR_DBG("roar_vio_lseek(vio=%p, offset=%u, whence=%i) = ?", vio, (unsigned int)offset, whence); 
    120148 
    121  if ( vio == NULL ) 
    122   return -1; 
    123  
    124  if ( vio->lseek == NULL ) 
    125   return -1; 
    126  
    127  return vio->lseek(vio, offset, whence); 
     149 if ( vio == NULL ) { 
     150  roar_err_set(ROAR_ERROR_FAULT); 
     151  return -1; 
     152 } 
     153 
     154 if ( vio->lseek == NULL ) { 
     155  roar_err_set(ROAR_ERROR_NOSYS); 
     156  return -1; 
     157 } 
     158 
     159 roar_err_clear_all(); 
     160 ret = vio->lseek(vio, offset, whence); 
     161 roar_err_update(); 
     162 
     163 return ret; 
    128164} 
    129165 
    130166int     roar_vio_nonblock(struct roar_vio_calls * vio, int state) { 
     167 int ret; 
     168 
    131169 ROAR_DBG("roar_vio_nonblock(vio=%p, state=%i) = ?", vio, state); 
    132170 
    133  if ( vio == NULL ) 
    134   return -1; 
    135  
    136  if ( vio->nonblock == NULL ) 
    137   return -1; 
    138  
    139  return vio->nonblock(vio, state); 
     171 if ( vio == NULL ) { 
     172  roar_err_set(ROAR_ERROR_FAULT); 
     173  return -1; 
     174 } 
     175 
     176 if ( vio->nonblock == NULL ) { 
     177  roar_err_set(ROAR_ERROR_NOSYS); 
     178  return -1; 
     179 } 
     180 
     181 roar_err_clear_all(); 
     182 ret = vio->nonblock(vio, state); 
     183 roar_err_update(); 
     184 
     185 return ret; 
    140186} 
    141187 
    142188int     roar_vio_sync    (struct roar_vio_calls * vio) { 
     189 int ret; 
     190 
    143191 ROAR_DBG("roar_vio_sync(vio=%p) = ?", vio); 
    144192 
    145  if ( vio == NULL ) 
    146   return -1; 
    147  
    148  if ( vio->sync == NULL ) 
    149   return -1; 
    150  
    151  return vio->sync(vio); 
     193 if ( vio == NULL ) { 
     194  roar_err_set(ROAR_ERROR_FAULT); 
     195  return -1; 
     196 } 
     197 
     198 if ( vio->sync == NULL ) { 
     199  roar_err_set(ROAR_ERROR_NOSYS); 
     200  return -1; 
     201 } 
     202 
     203 roar_err_clear_all(); 
     204 ret = vio->sync(vio); 
     205 roar_err_update(); 
     206 
     207 return ret; 
    152208} 
    153209 
    154210int     roar_vio_ctl     (struct roar_vio_calls * vio, int cmd, void * data) { 
     211 int ret; 
     212 
    155213 ROAR_DBG("roar_vio_ctl(vio=%p, cmd=%i, data=%p) = ?", vio, cmd, data); 
    156214 
    157  if ( vio == NULL ) 
    158   return -1; 
     215 if ( vio == NULL ) { 
     216  roar_err_set(ROAR_ERROR_FAULT); 
     217  return -1; 
     218 } 
    159219 
    160220 ROAR_DBG("roar_vio_ctl(vio=%p, cmd=0x%.8x, data=%p): vio->ctl=%p", vio, cmd, data, vio->ctl); 
     
    166226    ROAR_ERR("roar_vio_ctl(vio=%p, cmd=0x%.8x, data=%p): Please recompile your program to fix this. (No additional steps are required beside that.)", vio, cmd, data); 
    167227    ROAR_DBG("roar_vio_ctl(vio=%p, cmd=0x%.8x, data=%p) = -1", vio, cmd, data); 
     228    roar_err_set(ROAR_ERROR_BADRQC); 
    168229    return -1; 
    169230   break; 
    170231 } 
    171232 
    172  if ( vio->ctl == NULL ) 
    173   return -1; 
    174  
    175  return vio->ctl(vio, cmd, data); 
     233 if ( vio->ctl == NULL ) { 
     234  roar_err_set(ROAR_ERROR_NOSYS); 
     235  return -1; 
     236 } 
     237 
     238 roar_err_clear_all(); 
     239 ret = vio->ctl(vio, cmd, data); 
     240 roar_err_update(); 
     241 
     242 return ret; 
    176243} 
    177244 
    178245int     roar_vio_close    (struct roar_vio_calls * vio) { 
     246 int ret; 
     247 
    179248 ROAR_DBG("roar_vio_close(vio=%p) = ?", vio); 
    180249 
    181  if ( vio == NULL ) 
    182   return -1; 
    183  
    184  if ( vio->close == NULL ) 
    185   return -1; 
    186  
    187  return vio->close(vio); 
     250 if ( vio == NULL ) { 
     251  roar_err_set(ROAR_ERROR_FAULT); 
     252  return -1; 
     253 } 
     254 
     255 if ( vio->close == NULL ) { 
     256  roar_err_set(ROAR_ERROR_NOSYS); 
     257  return -1; 
     258 } 
     259 
     260 roar_err_clear_all(); 
     261 ret = vio->close(vio); 
     262 roar_err_update(); 
     263 
     264 return ret; 
    188265} 
    189266 
    190267// specal commands: 
    191268int     roar_vio_accept  (struct roar_vio_calls * calls, struct roar_vio_calls * dst) { 
    192  if (dst == NULL || calls == NULL) 
    193   return -1; 
     269 if (dst == NULL || calls == NULL) { 
     270  roar_err_set(ROAR_ERROR_FAULT); 
     271  return -1; 
     272 } 
    194273 
    195274 return roar_vio_ctl(dst, ROAR_VIO_CTL_ACCEPT, calls); 
     
    205284 int fh; 
    206285 
    207  if ( calls == NULL || filename == NULL ) 
    208   return -1; 
     286 roar_debug_warn_obsolete("roar_vio_open_file", "roar_vio_open_dstr", NULL); 
     287 
     288 if ( calls == NULL || filename == NULL ) { 
     289  roar_err_set(ROAR_ERROR_FAULT); 
     290  return -1; 
     291 } 
    209292 
    210293#ifdef ROAR_TARGET_WIN32 
     
    212295#endif 
    213296 
    214  if ( (fh = open(filename, flags, mode)) == -1 ) 
    215   return -1; 
     297 roar_err_clear_all(); 
     298 if ( (fh = open(filename, flags, mode)) == -1 ) { 
     299  roar_err_update(); 
     300  return -1; 
     301 } 
    216302 
    217303 if ( roar_vio_open_fh(calls, fh) == -1 ) { 
    218304  close(fh); 
    219   return -1; 
    220  } 
    221  
     305  roar_err_update(); 
     306  return -1; 
     307 } 
     308 
     309 roar_err_update(); 
    222310 return 0; 
    223311#else 
     
    584672 } 
    585673 
     674 roar_err_set(ROAR_ERROR_BADRQC); 
    586675 return -1; 
    587676} 
     
    708797  return -1; 
    709798 
    710  errno = 0; 
     799 roar_err_clear_all(); 
    711800 
    712801 while ( (r = roar_vio_read((struct roar_vio_calls *) vio->inst, buf, count)) > 0 ) { 
     
    734823  return -1; 
    735824 
    736  errno = 0; 
     825 roar_err_clear_all(); 
    737826 
    738827 while ( (r = roar_vio_write((struct roar_vio_calls *) vio->inst, buf, count)) > 0 ) { 
Note: See TracChangeset for help on using the changeset viewer.