Changeset 4876:06a2f29d0450 in roaraudio


Ignore:
Timestamp:
04/26/11 12:06:37 (13 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

some updates to handle error values better with DSTR

Files:
6 edited

Legend:

Unmodified
Added
Removed
  • libroar/error.c

    r4871 r4876  
    125125void   roar_err_update(void) { 
    126126 int * err = roar_errno2(); 
     127 
     128 // NOTE: _NEVER_ call ROAR_{DBG,INFO,WARN,ERRO}() in here! (will result in endless loop) 
     129 //printf("*err=%i, errno=%i\n", *err, (int)errno); 
     130 
    127131 if ( *err != ROAR_ERROR_NONE ) { 
    128132  roar_err_to_errno(); 
     
    144148 
    145149 switch (errno) { 
     150#ifdef EACCES 
     151  case EACCES:       _roar_errno = ROAR_ERROR_PERM; break; 
     152#endif 
    146153#ifdef EPERM 
    147154  case EPERM:        _roar_errno = ROAR_ERROR_PERM; break; 
  • libroar/vio.c

    r4873 r4876  
    297297 roar_err_clear_all(); 
    298298 if ( (fh = open(filename, flags, mode)) == -1 ) { 
     299  ROAR_DBG("roar_vio_open_file(*): errno=%s", strerror(errno)); 
    299300  roar_err_update(); 
     301  ROAR_DBG("roar_vio_open_file(*): errno=%s", strerror(errno)); 
    300302  return -1; 
    301303 } 
  • libroar/vio_dstr.c

    r4824 r4876  
    329329   break; 
    330330  case ROAR_VIO_DEF_TYPE_FILE: 
    331     if ( roar_vio_open_file(calls, def->d.file, def->o_flags, def->o_mode) == -1 ) 
     331    roar_libroar_nowarn(); 
     332    if ( roar_vio_open_file(calls, def->d.file, def->o_flags, def->o_mode) == -1 ) { 
     333     roar_libroar_warn(); 
     334     ROAR_DBG("roar_vio_open_default(*): Can not open file: %i", roar_error); 
    332335     return -1; 
     336    } 
     337    roar_libroar_warn(); 
    333338   break; 
    334339  case ROAR_VIO_DEF_TYPE_SOCKET: 
     
    356361} 
    357362 
    358 #define _ret(x) roar_mm_free(dstr); return (x) 
     363#define _ret(x) do { int _err = roar_error; roar_mm_free(dstr); roar_error = _err; roar_err_to_errno(); return (x); } while (0) 
    359364 
    360365int     roar_vio_open_dstr_vio(struct roar_vio_calls * calls, 
     
    548553   case ROAR_VIO_DSTR_OBJT_NULL: 
    549554   case ROAR_VIO_DSTR_OBJT_ZERO: 
     555   case ROAR_VIO_DSTR_OBJT_FULL: 
    550556   case ROAR_VIO_DSTR_OBJT_NRANDOM: 
    551557   case ROAR_VIO_DSTR_OBJT_TANTALOS: 
     
    745751} 
    746752 
    747 #define _ret(x) roar_vio_close(calls); ROAR_DBG("roar_vio_dstr_build_chain(*) = %i", (x)); return (x) 
     753#define _ret(x) do { int _err = roar_error; roar_vio_close(calls); roar_error = _err; roar_err_to_errno(); ROAR_DBG("roar_vio_dstr_build_chain(*) = %i", (x)); return (x); } while(0) 
    748754 
    749755int     roar_vio_dstr_build_chain(struct roar_vio_dstr_chain * chain, struct roar_vio_calls * calls, 
     
    871877    case ROAR_VIO_DSTR_OBJT_NULL: 
    872878    case ROAR_VIO_DSTR_OBJT_ZERO: 
     879    case ROAR_VIO_DSTR_OBJT_FULL: 
    873880    case ROAR_VIO_DSTR_OBJT_NRANDOM: 
    874881      if ( roar_vio_open_misc_by_name(tc, roar_vio_dstr_get_name(c->type)) == -1 ) { 
  • libroar/vio_misc.c

    r4826 r4876  
    131131} 
    132132 
     133static ssize_t roar_vio_misc_op_full(void * buf, size_t len, struct roar_vio_calls * vio, struct roar_vio_misc * callbacks) 
     134{ 
     135 roar_err_set(ROAR_ERROR_NOSPC); 
     136 return -1; 
     137} 
     138 
    133139static ssize_t roar_vio_misc_op_random_nonce(void * buf, size_t len, struct roar_vio_calls * vio, struct roar_vio_misc * callbacks) { 
    134140 if ( roar_random_gen_nonce(buf, len) == -1 ) 
     
    147153static const struct roar_vio_misc libroar_vio_miscs[] = { 
    148154 {.name = "null", .support_nonblocking = 1, .read = roar_vio_misc_op_return_zero, .write = roar_vio_misc_op_return_len}, 
     155 {.name = "full", .support_nonblocking = 1, .read = roar_vio_misc_op_return_zero, .write = roar_vio_misc_op_full}, 
    149156 {.name = "zero", .support_nonblocking = 1, .read = roar_vio_misc_op_zero,        .write = roar_vio_misc_op_return_len}, 
    150157 {.name = "nrandom", .support_nonblocking = 1, 
  • libroar/vio_ops.c

    r4708 r4876  
    4545 ROAR_DBG("roar_vio_copy_data(out=%p, in=%p) = ?", out, in); 
    4646 
    47  if ( out == NULL || in == NULL ) 
     47 if ( out == NULL || in == NULL ) { 
     48  roar_err_set(ROAR_ERROR_FAULT); 
    4849  return -1; 
     50 } 
     51 
     52 roar_err_clear_all(); 
    4953 
    5054 while ((len = roar_vio_read(in, buf, ROAR_VIO_COPY_BUFSIZE)) > 0) { 
     
    5862 ROAR_DBG("roar_vio_copy_data(out=%p, in=%p): len=%li, done=%li", out, in, (long int)len, (long int)done); 
    5963 
     64 roar_err_clear_all(); 
     65 
    6066 ROAR_DBG("roar_vio_copy_data(out=%p, in=%p) = %li", out, in, (long int)done); 
    6167 return done; 
  • roarclients/roarvio.c

    r4837 r4876  
    213213 
    214214 if ( roar_vio_open_dstr(&vio, file, &def, 1) == -1 ) { 
    215   ROAR_ERR("Can not open file: %s: %s", file, strerror(errno)); 
     215  ROAR_ERR("Can not open file: %s: %s", file, roar_error2str(roar_error)); 
    216216  return 1; 
    217217 } 
     
    230230 } 
    231231 
     232 if ( roar_error != ROAR_ERROR_NONE ) { 
     233  ROAR_ERR("Can not push data: %s", roar_error2str(roar_error)); 
     234 } 
     235 
    232236 roar_vio_close(&vio); 
    233237 
Note: See TracChangeset for help on using the changeset viewer.