Changeset 3667:cfe93dbf0bdb in roaraudio for libroaross


Ignore:
Timestamp:
04/05/10 11:49:06 (14 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

support static files with fopen()

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroaross/libroaross.c

    r3666 r3667  
    13481348//roar_vio_to_stdio 
    13491349 
     1350static int _vio_close    (struct roar_vio_calls * vio) { 
     1351 int ret = 0; 
     1352 
     1353 if ( roar_vio_get_fh(vio) != -1 ) 
     1354  ret = close(roar_vio_get_fh(vio)); 
     1355 
     1356 roar_mm_free(vio); 
     1357 
     1358 return ret; 
     1359} 
     1360 
    13501361FILE *fopen(const char *path, const char *mode) { 
     1362 struct roar_vio_calls * vio; 
    13511363 struct pointer * pointer; 
    13521364 FILE  * fr; 
     
    13981410   break; 
    13991411  default:       // return successfully opened pointer to caller 
     1412#if 0 
    14001413    if ( (pointer = _get_pointer_by_fh(ret)) != NULL ) { 
    14011414     if ( (fr = roar_vio_to_stdio(&(pointer->handle->stream_vio), flags)) == NULL ) { 
     
    14091422     return NULL; 
    14101423    } 
     1424#endif 
     1425    if ( (vio = roar_mm_malloc(sizeof(struct roar_vio_calls))) == NULL ) { 
     1426     return NULL; // errno should be set correctly by roar_mm_malloc(). 
     1427    } 
     1428 
     1429    roar_vio_init_calls(vio);  // TODO: add error handling. 
     1430    roar_vio_set_fh(vio, ret); // TODO: add error handling. 
     1431    vio->close = _vio_close; 
     1432    if ( (fr = roar_vio_to_stdio(vio, flags)) == NULL ) { 
     1433     _vio_close(vio); 
     1434     errno = EIO; 
     1435     return NULL; 
     1436    } else { 
     1437     return fr; 
     1438    } 
    14111439   break; 
    14121440 } 
Note: See TracChangeset for help on using the changeset viewer.