Changeset 886:2dc09cf3bc74 in roaraudio
- Timestamp:
- 11/19/08 21:28:22 (15 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
include/libroar/vio.h
r881 r886 69 69 off_t roar_vio_basic_lseek(struct roar_vio_calls * vio, off_t offset, int whence); 70 70 71 // pass 72 73 ssize_t roar_vio_pass_read (struct roar_vio_calls * vio, void *buf, size_t count); 74 ssize_t roar_vio_pass_write(struct roar_vio_calls * vio, void *buf, size_t count); 75 off_t roar_vio_pass_lseek(struct roar_vio_calls * vio, off_t offset, int whence); 76 77 // re-read/write 78 79 ssize_t roar_vio_re_read (struct roar_vio_calls * vio, void *buf, size_t count); 80 ssize_t roar_vio_re_write(struct roar_vio_calls * vio, void *buf, size_t count); 81 off_t roar_vio_re_lseek(struct roar_vio_calls * vio, off_t offset, int whence); 82 83 84 71 85 #endif 72 86 -
libroar/vio.c
r881 r886 105 105 } 106 106 107 // VIOs: 107 108 109 // basic 108 110 ssize_t roar_vio_basic_read (struct roar_vio_calls * vio, void *buf, size_t count) { 109 111 return read(roar_vio_get_fh(vio), buf, count); … … 118 120 } 119 121 122 // pass 123 ssize_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 127 ssize_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 131 off_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 137 ssize_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 163 ssize_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. 190 off_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 120 195 //ll
Note: See TracChangeset
for help on using the changeset viewer.