Changeset 886:2dc09cf3bc74 in roaraudio for libroar/vio.c


Ignore:
Timestamp:
11/19/08 21:28:22 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added vio funcs for reread/write and simple pass

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroar/vio.c

    r881 r886  
    105105} 
    106106 
     107// VIOs: 
    107108 
     109// basic 
    108110ssize_t roar_vio_basic_read (struct roar_vio_calls * vio, void *buf, size_t count) { 
    109111 return read(roar_vio_get_fh(vio), buf, count); 
     
    118120} 
    119121 
     122// pass 
     123ssize_t roar_vio_pass_read (struct roar_vio_calls * vio, void *buf, size_t count) { 
     124 return roar_vio_read((struct roar_vio_calls *) vio->inst, buf, count); 
     125} 
     126 
     127ssize_t roar_vio_pass_write(struct roar_vio_calls * vio, void *buf, size_t count) { 
     128 return roar_vio_write((struct roar_vio_calls *) vio->inst, buf, count); 
     129} 
     130 
     131off_t   roar_vio_pass_lseek(struct roar_vio_calls * vio, off_t offset, int whence) { 
     132 return roar_vio_lseek((struct roar_vio_calls *) vio->inst, offset, whence); 
     133} 
     134 
     135 
     136// re 
     137ssize_t roar_vio_re_read (struct roar_vio_calls * vio, void *buf, size_t count) { 
     138  size_t len =  0; 
     139 ssize_t r   = -1; 
     140 
     141 if ( vio == NULL ) 
     142  return -1; 
     143 
     144 if ( vio->inst == NULL ) 
     145  return -1; 
     146 
     147 errno = 0; 
     148 
     149 while ( (r = roar_vio_read((struct roar_vio_calls *) vio->inst, buf, count)) > 0 ) { 
     150  len   += r; 
     151  buf   += r; 
     152  count -= r; 
     153  if ( count == 0 ) 
     154   break; 
     155 } 
     156 
     157 if ( len == 0 && r == -1 ) 
     158  return -1; 
     159 
     160 return len; 
     161} 
     162 
     163ssize_t roar_vio_re_write(struct roar_vio_calls * vio, void *buf, size_t count) { 
     164  size_t len =  0; 
     165 ssize_t r   = -1; 
     166 
     167 if ( vio == NULL ) 
     168  return -1; 
     169 
     170 if ( vio->inst == NULL ) 
     171  return -1; 
     172 
     173 errno = 0; 
     174 
     175 while ( (r = roar_vio_write((struct roar_vio_calls *) vio->inst, buf, count)) > 0 ) { 
     176  len   += r; 
     177  buf   += r; 
     178  count -= r; 
     179  if ( count == 0 ) 
     180   break; 
     181 } 
     182 
     183 if ( len == 0 && r == -1 ) 
     184  return -1; 
     185 
     186 return len; 
     187} 
     188 
     189// we should do a some more intelgent thing here. 
     190off_t   roar_vio_re_lseek(struct roar_vio_calls * vio, off_t offset, int whence) { 
     191 return roar_vio_lseek((struct roar_vio_calls *) vio->inst, offset, whence); 
     192} 
     193 
     194 
    120195//ll 
Note: See TracChangeset for help on using the changeset viewer.