Changeset 881:fdf97832f81f in roaraudio for libroar/vio.c
- Timestamp:
- 11/16/08 00:31:12 (15 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroar/vio.c
r690 r881 41 41 memset((void*)calls, 0, sizeof(struct roar_vio_calls)); 42 42 43 /* 43 44 calls->read = (ssize_t (*)(int fd, void *buf, size_t count, void * inst))read; 44 45 calls->write = (ssize_t (*)(int fd, void *buf, size_t count, void * inst))write; 45 46 calls->lseek = (off_t (*)(int fildes, off_t offset, int whence, void * inst))lseek; 47 */ 48 49 calls->read = roar_vio_basic_read; 50 calls->write = roar_vio_basic_write; 51 calls->lseek = roar_vio_basic_lseek; 46 52 47 53 return 0; 48 54 } 49 55 56 int roar_vio_set_inst (struct roar_vio_calls * vio, void * inst) { 57 if ( vio == NULL ) 58 return -1; 59 60 vio->inst = inst; 61 62 return 0; 63 } 64 65 int roar_vio_set_fh (struct roar_vio_calls * vio, int fh) { 66 return roar_vio_set_inst(vio, (void*)(fh + 1)); 67 } 68 69 int roar_vio_get_fh (struct roar_vio_calls * vio) { 70 if ( vio == NULL ) 71 return -1; 72 73 return ((int)vio->inst) - 1; 74 } 75 76 77 ssize_t roar_vio_read (struct roar_vio_calls * vio, void *buf, size_t count) { 78 if ( vio == NULL ) 79 return -1; 80 81 if ( vio->read == NULL ) 82 return -1; 83 84 return vio->read(vio, buf, count); 85 } 86 87 ssize_t roar_vio_write(struct roar_vio_calls * vio, void *buf, size_t count) { 88 if ( vio == NULL ) 89 return -1; 90 91 if ( vio->write == NULL ) 92 return -1; 93 94 return vio->write(vio, buf, count); 95 } 96 97 off_t roar_vio_lseek(struct roar_vio_calls * vio, off_t offset, int whence) { 98 if ( vio == NULL ) 99 return -1; 100 101 if ( vio->lseek == NULL ) 102 return -1; 103 104 return vio->lseek(vio, offset, whence); 105 } 106 107 108 ssize_t roar_vio_basic_read (struct roar_vio_calls * vio, void *buf, size_t count) { 109 return read(roar_vio_get_fh(vio), buf, count); 110 } 111 112 ssize_t roar_vio_basic_write(struct roar_vio_calls * vio, void *buf, size_t count) { 113 return write(roar_vio_get_fh(vio), buf, count); 114 } 115 116 off_t roar_vio_basic_lseek(struct roar_vio_calls * vio, off_t offset, int whence) { 117 return lseek(roar_vio_get_fh(vio), offset, whence); 118 } 119 50 120 //ll
Note: See TracChangeset
for help on using the changeset viewer.