Changeset 1298:b87039ebf291 in roaraudio for libroar/vio_magic.c
- Timestamp:
- 03/16/09 03:57:20 (15 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroar/vio_magic.c
r1284 r1298 1 //vio_magic.c: 1 2 2 3 3 /* … … 35 35 #include "libroar.h" 36 36 37 int roar_vio_open_magic (struct roar_vio_calls * calls, struct roar_vio_calls * dst, int * codec); 38 int roar_vio_magic_close (struct roar_vio_calls * vio); 39 40 ssize_t roar_vio_magic_read (struct roar_vio_calls * vio, void *buf, size_t count) { 41 struct roar_vio_magic * self = (struct roar_vio_magic *)(vio->inst); 42 void * calls; 43 size_t len; 44 45 if (self == NULL) 46 return -1; 47 48 if ( roar_stack_get_cur(&(self->vios), &calls) == -1 ) 49 return -1; 50 51 if ( roar_buffer_get_len(&(self->inp), &len) == -1 ) 52 return -1; 53 54 if ( len ) { 55 len = len > count ? count : len; 56 if ( roar_buffer_shift_out(&(self->inp), buf, &len) == -1 ) 57 return -1; 58 } 59 60 count -= len; 61 buf += len; 62 63 if ( count ) { 64 if ( (count = roar_vio_read((struct roar_vio_calls*) calls, buf, count)) == -1 ) 65 return len; 66 67 return len+count; 68 } 69 70 return len; 71 } 72 73 ssize_t roar_vio_magic_write (struct roar_vio_calls * vio, void *buf, size_t count) { 74 struct roar_vio_magic * self = (struct roar_vio_magic *)(vio->inst); 75 void * calls; 76 77 if (self == NULL) 78 return -1; 79 80 if ( roar_stack_get_cur(&(self->vios), &calls) == -1 ) 81 return -1; 82 83 return roar_vio_write((struct roar_vio_calls*)calls, buf, count); 84 } 85 86 off_t roar_vio_magic_lseek (struct roar_vio_calls * vio, off_t offset, int whence) { 87 struct roar_vio_magic * self = (struct roar_vio_magic *)(vio->inst); 88 void * calls; 89 90 if (self == NULL) 91 return -1; 92 93 if ( roar_stack_get_cur(&(self->vios), &calls) == -1 ) 94 return -1; 95 96 return roar_vio_lseek((struct roar_vio_calls*)calls, offset, whence); 97 } 98 99 int roar_vio_magic_nonblock(struct roar_vio_calls * vio, int state) { 100 struct roar_vio_magic * self = (struct roar_vio_magic *)(vio->inst); 101 void * calls; 102 103 if (self == NULL) 104 return -1; 105 106 if ( roar_stack_get_cur(&(self->vios), &calls) == -1 ) 107 return -1; 108 109 return roar_vio_nonblock((struct roar_vio_calls*)calls, state); 110 } 111 112 int roar_vio_magic_sync (struct roar_vio_calls * vio) { 113 struct roar_vio_magic * self = (struct roar_vio_magic *)(vio->inst); 114 void * calls; 115 116 if (self == NULL) 117 return -1; 118 119 if ( roar_stack_get_cur(&(self->vios), &calls) == -1 ) 120 return -1; 121 122 return roar_vio_sync((struct roar_vio_calls*)calls); 123 } 124 37 125 //ll
Note: See TracChangeset
for help on using the changeset viewer.