Changeset 3796:a3ee3b5bed2b in roaraudio for libroar/vio.c
- Timestamp:
- 05/07/10 17:49:13 (14 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroar/vio.c
r3795 r3796 182 182 } 183 183 184 int roar_vio_shutdown(struct roar_vio_calls * vio, int how) { 185 return roar_vio_ctl(vio, ROAR_VIO_CTL_SHUTDOWN, &how); 186 } 187 184 188 // converters: 185 189 int roar_vio_open_file (struct roar_vio_calls * calls, char * filename, int flags, mode_t mode) { … … 339 343 340 344 int roar_vio_basic_ctl (struct roar_vio_calls * vio, int cmd, void * data) { 341 int fh; 345 int tmp; 346 int s_r = 0, s_w = 0; 342 347 343 348 if ( vio == NULL || cmd == -1 ) … … 369 374 break; 370 375 case ROAR_VIO_CTL_ACCEPT: 371 fh= accept(roar_vio_get_fh(vio), NULL, 0);372 if ( fh== -1 )376 tmp = accept(roar_vio_get_fh(vio), NULL, 0); 377 if ( tmp == -1 ) 373 378 return -1; 374 379 375 380 // most proably a socket. 376 if ( roar_vio_open_fh_socket(data, fh) == -1 ) {381 if ( roar_vio_open_fh_socket(data, tmp) == -1 ) { 377 382 #ifdef ROAR_TARGET_WIN32 378 closesocket( fh);379 #else 380 close( fh);383 closesocket(tmp); 384 #else 385 close(tmp); 381 386 #endif 382 387 return -1; … … 384 389 385 390 return 0; 391 break; 392 case ROAR_VIO_CTL_SHUTDOWN: 393 tmp = *(int*)data; 394 395 if ( tmp & ROAR_VIO_SHUTDOWN_READ ) { 396 s_r = 1; 397 tmp -= ROAR_VIO_SHUTDOWN_READ; 398 } 399 400 if ( tmp & ROAR_VIO_SHUTDOWN_WRITE ) { 401 s_w = 1; 402 tmp -= ROAR_VIO_SHUTDOWN_WRITE; 403 } 404 405 if ( tmp != 0 ) /* we currently only support R and W shutdowns */ 406 return -1; 407 408 if ( s_r && s_w ) { 409 tmp = SHUT_RDWR; 410 } else if ( s_r ) { 411 tmp = SHUT_RD; 412 } else if ( s_w ) { 413 tmp = SHUT_WR; 414 } else { 415 return 0; // nothing to do. 416 } 417 418 return shutdown(roar_vio_get_fh(vio), tmp); 386 419 break; 387 420 }
Note: See TracChangeset
for help on using the changeset viewer.