Changeset 4873:98d17d4deeec in roaraudio for libroar/vio.c
- Timestamp:
- 04/26/11 11:03:46 (13 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroar/vio.c
r4831 r4873 46 46 int roar_vio_init_calls (struct roar_vio_calls * calls) { 47 47 #ifdef _CAN_OPERATE 48 if ( calls == NULL ) 49 return -1; 48 if ( calls == NULL ) { 49 roar_err_set(ROAR_ERROR_FAULT); 50 return -1; 51 } 50 52 51 53 memset((void*)calls, 0, sizeof(struct roar_vio_calls)); … … 72 74 73 75 int roar_vio_set_inst (struct roar_vio_calls * vio, void * inst) { 74 if ( vio == NULL ) 75 return -1; 76 if ( vio == NULL ) { 77 roar_err_set(ROAR_ERROR_FAULT); 78 return -1; 79 } 76 80 77 81 vio->inst = inst; … … 85 89 86 90 int roar_vio_get_fh (struct roar_vio_calls * vio) { 87 if ( vio == NULL ) 88 return -1; 91 if ( vio == NULL ) { 92 roar_err_set(ROAR_ERROR_FAULT); 93 return -1; 94 } 89 95 90 96 return ((int)(ROAR_INSTINT)vio->inst) - 1; … … 93 99 94 100 ssize_t roar_vio_read (struct roar_vio_calls * vio, void *buf, size_t count) { 101 ssize_t ret; 102 95 103 ROAR_DBG("roar_vio_read(vio=%p, buf=%p, count=%u) = ?", vio, buf, (unsigned int)count); 96 104 97 if ( vio == NULL ) 98 return -1; 99 100 if ( vio->read == NULL ) 101 return -1; 102 103 return vio->read(vio, buf, count); 105 if ( vio == NULL ) { 106 roar_err_set(ROAR_ERROR_FAULT); 107 return -1; 108 } 109 110 if ( vio->read == NULL ) { 111 roar_err_set(ROAR_ERROR_NOSYS); 112 return -1; 113 } 114 115 roar_err_clear_all(); 116 ret = vio->read(vio, buf, count); 117 roar_err_update(); 118 119 return ret; 104 120 } 105 121 106 122 ssize_t roar_vio_write(struct roar_vio_calls * vio, void *buf, size_t count) { 123 ssize_t ret; 124 107 125 ROAR_DBG("roar_vio_write(vio=%p, buf=%p, count=%u) = ?", vio, buf, (unsigned int)count); 108 126 109 if ( vio == NULL ) 110 return -1; 111 112 if ( vio->write == NULL ) 113 return -1; 114 115 return vio->write(vio, buf, count); 127 if ( vio == NULL ) { 128 roar_err_set(ROAR_ERROR_FAULT); 129 return -1; 130 } 131 132 if ( vio->write == NULL ) { 133 roar_err_set(ROAR_ERROR_NOSYS); 134 return -1; 135 } 136 137 roar_err_clear_all(); 138 ret = vio->write(vio, buf, count); 139 roar_err_update(); 140 141 return ret; 116 142 } 117 143 118 144 off_t roar_vio_lseek(struct roar_vio_calls * vio, off_t offset, int whence) { 145 off_t ret; 146 119 147 ROAR_DBG("roar_vio_lseek(vio=%p, offset=%u, whence=%i) = ?", vio, (unsigned int)offset, whence); 120 148 121 if ( vio == NULL ) 122 return -1; 123 124 if ( vio->lseek == NULL ) 125 return -1; 126 127 return vio->lseek(vio, offset, whence); 149 if ( vio == NULL ) { 150 roar_err_set(ROAR_ERROR_FAULT); 151 return -1; 152 } 153 154 if ( vio->lseek == NULL ) { 155 roar_err_set(ROAR_ERROR_NOSYS); 156 return -1; 157 } 158 159 roar_err_clear_all(); 160 ret = vio->lseek(vio, offset, whence); 161 roar_err_update(); 162 163 return ret; 128 164 } 129 165 130 166 int roar_vio_nonblock(struct roar_vio_calls * vio, int state) { 167 int ret; 168 131 169 ROAR_DBG("roar_vio_nonblock(vio=%p, state=%i) = ?", vio, state); 132 170 133 if ( vio == NULL ) 134 return -1; 135 136 if ( vio->nonblock == NULL ) 137 return -1; 138 139 return vio->nonblock(vio, state); 171 if ( vio == NULL ) { 172 roar_err_set(ROAR_ERROR_FAULT); 173 return -1; 174 } 175 176 if ( vio->nonblock == NULL ) { 177 roar_err_set(ROAR_ERROR_NOSYS); 178 return -1; 179 } 180 181 roar_err_clear_all(); 182 ret = vio->nonblock(vio, state); 183 roar_err_update(); 184 185 return ret; 140 186 } 141 187 142 188 int roar_vio_sync (struct roar_vio_calls * vio) { 189 int ret; 190 143 191 ROAR_DBG("roar_vio_sync(vio=%p) = ?", vio); 144 192 145 if ( vio == NULL ) 146 return -1; 147 148 if ( vio->sync == NULL ) 149 return -1; 150 151 return vio->sync(vio); 193 if ( vio == NULL ) { 194 roar_err_set(ROAR_ERROR_FAULT); 195 return -1; 196 } 197 198 if ( vio->sync == NULL ) { 199 roar_err_set(ROAR_ERROR_NOSYS); 200 return -1; 201 } 202 203 roar_err_clear_all(); 204 ret = vio->sync(vio); 205 roar_err_update(); 206 207 return ret; 152 208 } 153 209 154 210 int roar_vio_ctl (struct roar_vio_calls * vio, int cmd, void * data) { 211 int ret; 212 155 213 ROAR_DBG("roar_vio_ctl(vio=%p, cmd=%i, data=%p) = ?", vio, cmd, data); 156 214 157 if ( vio == NULL ) 158 return -1; 215 if ( vio == NULL ) { 216 roar_err_set(ROAR_ERROR_FAULT); 217 return -1; 218 } 159 219 160 220 ROAR_DBG("roar_vio_ctl(vio=%p, cmd=0x%.8x, data=%p): vio->ctl=%p", vio, cmd, data, vio->ctl); … … 166 226 ROAR_ERR("roar_vio_ctl(vio=%p, cmd=0x%.8x, data=%p): Please recompile your program to fix this. (No additional steps are required beside that.)", vio, cmd, data); 167 227 ROAR_DBG("roar_vio_ctl(vio=%p, cmd=0x%.8x, data=%p) = -1", vio, cmd, data); 228 roar_err_set(ROAR_ERROR_BADRQC); 168 229 return -1; 169 230 break; 170 231 } 171 232 172 if ( vio->ctl == NULL ) 173 return -1; 174 175 return vio->ctl(vio, cmd, data); 233 if ( vio->ctl == NULL ) { 234 roar_err_set(ROAR_ERROR_NOSYS); 235 return -1; 236 } 237 238 roar_err_clear_all(); 239 ret = vio->ctl(vio, cmd, data); 240 roar_err_update(); 241 242 return ret; 176 243 } 177 244 178 245 int roar_vio_close (struct roar_vio_calls * vio) { 246 int ret; 247 179 248 ROAR_DBG("roar_vio_close(vio=%p) = ?", vio); 180 249 181 if ( vio == NULL ) 182 return -1; 183 184 if ( vio->close == NULL ) 185 return -1; 186 187 return vio->close(vio); 250 if ( vio == NULL ) { 251 roar_err_set(ROAR_ERROR_FAULT); 252 return -1; 253 } 254 255 if ( vio->close == NULL ) { 256 roar_err_set(ROAR_ERROR_NOSYS); 257 return -1; 258 } 259 260 roar_err_clear_all(); 261 ret = vio->close(vio); 262 roar_err_update(); 263 264 return ret; 188 265 } 189 266 190 267 // specal commands: 191 268 int roar_vio_accept (struct roar_vio_calls * calls, struct roar_vio_calls * dst) { 192 if (dst == NULL || calls == NULL) 193 return -1; 269 if (dst == NULL || calls == NULL) { 270 roar_err_set(ROAR_ERROR_FAULT); 271 return -1; 272 } 194 273 195 274 return roar_vio_ctl(dst, ROAR_VIO_CTL_ACCEPT, calls); … … 205 284 int fh; 206 285 207 if ( calls == NULL || filename == NULL ) 208 return -1; 286 roar_debug_warn_obsolete("roar_vio_open_file", "roar_vio_open_dstr", NULL); 287 288 if ( calls == NULL || filename == NULL ) { 289 roar_err_set(ROAR_ERROR_FAULT); 290 return -1; 291 } 209 292 210 293 #ifdef ROAR_TARGET_WIN32 … … 212 295 #endif 213 296 214 if ( (fh = open(filename, flags, mode)) == -1 ) 215 return -1; 297 roar_err_clear_all(); 298 if ( (fh = open(filename, flags, mode)) == -1 ) { 299 roar_err_update(); 300 return -1; 301 } 216 302 217 303 if ( roar_vio_open_fh(calls, fh) == -1 ) { 218 304 close(fh); 219 return -1; 220 } 221 305 roar_err_update(); 306 return -1; 307 } 308 309 roar_err_update(); 222 310 return 0; 223 311 #else … … 584 672 } 585 673 674 roar_err_set(ROAR_ERROR_BADRQC); 586 675 return -1; 587 676 } … … 708 797 return -1; 709 798 710 errno = 0;799 roar_err_clear_all(); 711 800 712 801 while ( (r = roar_vio_read((struct roar_vio_calls *) vio->inst, buf, count)) > 0 ) { … … 734 823 return -1; 735 824 736 errno = 0;825 roar_err_clear_all(); 737 826 738 827 while ( (r = roar_vio_write((struct roar_vio_calls *) vio->inst, buf, count)) > 0 ) {
Note: See TracChangeset
for help on using the changeset viewer.