Changeset 1253:b3dc719b129f in roaraudio


Ignore:
Timestamp:
02/27/09 00:29:24 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

done a converter to let you use an FILE* (stdio) stream as an VIO object

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • include/libroar/vio.h

    r1252 r1253  
    135135off_t   roar_vio_re_lseek(struct roar_vio_calls * vio, off_t offset, int whence); 
    136136 
    137  
     137// stdio 
     138ssize_t roar_vio_stdio_read    (struct roar_vio_calls * vio, void *buf, size_t count); 
     139ssize_t roar_vio_stdio_write   (struct roar_vio_calls * vio, void *buf, size_t count); 
     140off_t   roar_vio_stdio_lseek   (struct roar_vio_calls * vio, off_t offset, int whence); 
     141int     roar_vio_stdio_sync    (struct roar_vio_calls * vio); 
     142int     roar_vio_stdio_close   (struct roar_vio_calls * vio); 
    138143 
    139144#endif 
  • libroar/vio.c

    r1252 r1253  
    180180  return -1; 
    181181 
    182  return -1; 
     182 memset(calls, 0, sizeof(struct roar_vio_calls)); 
     183 
     184 calls->read  = roar_vio_stdio_read; 
     185 calls->write = roar_vio_stdio_write; 
     186 calls->lseek = roar_vio_stdio_lseek; 
     187 calls->sync  = roar_vio_stdio_sync; 
     188 calls->close = roar_vio_stdio_close; 
     189 
     190 calls->inst  = dst; 
     191 
     192 return 0; 
    183193} 
    184194 
     
    361371} 
    362372 
     373// stdio: 
     374ssize_t roar_vio_stdio_read    (struct roar_vio_calls * vio, void *buf, size_t count) { 
     375 return fread(buf, 1, count, (FILE*)(vio->inst)); 
     376} 
     377 
     378ssize_t roar_vio_stdio_write   (struct roar_vio_calls * vio, void *buf, size_t count) { 
     379 return fwrite(buf, 1, count, (FILE*)(vio->inst)); 
     380} 
     381 
     382off_t   roar_vio_stdio_lseek   (struct roar_vio_calls * vio, off_t offset, int whence) { 
     383 if ( fseek((FILE*)(vio->inst), offset, whence) == -1 ) 
     384  return -1; 
     385 
     386 return ftell((FILE*)(vio->inst)); 
     387} 
     388 
     389int     roar_vio_stdio_sync    (struct roar_vio_calls * vio) { 
     390 return fflush((FILE*)(vio->inst)); 
     391} 
     392 
     393int     roar_vio_stdio_close   (struct roar_vio_calls * vio) { 
     394 return fclose((FILE*)(vio->inst)); 
     395} 
    363396 
    364397//ll 
Note: See TracChangeset for help on using the changeset viewer.