Changeset 649:0ee35e06288f in roaraudio
- Timestamp:
- 08/26/08 13:45:18 (16 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
include/libroar/file.h
r556 r649 14 14 ssize_t roar_file_play (struct roar_connection * con, char * file, int exec); 15 15 16 ssize_t roar_file_map (char * filename, int flags, mode_t mode, size_t len, void ** mem); 17 int roar_file_unmap (size_t len, void * mem); 16 18 #endif 17 19 -
libroar/file.c
r636 r649 73 73 } 74 74 75 ssize_t roar_file_map (char * filename, int flags, mode_t mode, size_t len, void ** mem) { 76 int fh; 77 int mmap_flags = 0; 78 struct stat stat; 79 80 if ( mem == NULL || filename == NULL ) 81 return -1; 82 83 *mem = NULL; 84 85 if ( flags & O_RDWR ) { 86 mmap_flags = PROT_READ|PROT_WRITE; 87 } else if ( flags & O_WRONLY ) { 88 mmap_flags = PROT_WRITE; 89 } else { 90 mmap_flags = PROT_READ; 91 } 92 93 if ( (fh = open(filename, flags, mode)) == -1 ) { 94 return -1; 95 } 96 97 if ( fstat(fh, &stat) == -1 ) { 98 close(fh); 99 return -1; 100 } 101 102 if ( stat.st_size < len ) { 103 if ( ftruncate(fh, len) == -1 ) { 104 close(fh); 105 return -1; 106 } 107 } 108 109 if ( (*mem = mmap(NULL, len, mmap_flags, MAP_SHARED, fh, 0)) == NULL ) { 110 close(fh); 111 return -1; 112 } 113 114 close(fh); 115 116 return len; 117 } 118 119 int roar_file_unmap (size_t len, void * mem) { 120 return munmap(mem, len); 121 } 122 123 75 124 ssize_t roar_file_play (struct roar_connection * con, char * file, int exec) { 76 125 int codec = -1;
Note: See TracChangeset
for help on using the changeset viewer.