Changeset 3033:a3426e8335fb in roaraudio for libroar
- Timestamp:
- 11/07/09 13:59:55 (14 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroar/vio_string.c
r3031 r3033 61 61 62 62 char * roar_vio_fgets (struct roar_vio_calls * vio, char * s, size_t size) { 63 size_t have = 0; 64 char cur; 63 size_t have = 0; 64 size_t need = size; 65 ssize_t ret; 66 char cur; 67 char buf[1024]; 68 off_t offs; 69 char * eol; 65 70 66 71 if ( size == 0 ) … … 73 78 size -= 1; 74 79 75 /* 76 if ( roar_vio_lseek(vio, 0, SEEK_CUR) == (off_t)-1 ) { 77 */ 80 if ( (offs = roar_vio_lseek(vio, 0, SEEK_CUR)) == (off_t)-1 ) { 78 81 // need to use the one byte at a time methode 79 82 while ( have < size ) { … … 87 90 break; 88 91 } 89 /*90 92 } else { 91 93 // can use the optimized version 94 eol = NULL; 95 96 memset(s, '+', size); 97 98 while ( have < size && eol == NULL ) { 99 ret = roar_vio_read(vio, buf, need > 1023 ? 1023 : need); 100 101 if ( ret == -1 || ret == 0 ) 102 break; 103 104 ROAR_DBG("roar_vio_fgets(*): have=%u", (unsigned int) have); 105 106 buf[1023] = 0; 107 if ( (eol = strstr(buf, "\n")) == NULL ) { 108 memcpy(s, buf, ret); 109 s += ret; 110 have += ret; 111 need -= ret; 112 } else { 113 offs = eol - buf - ret + 1; 114 if ( roar_vio_lseek(vio, offs, SEEK_CUR) == -1 ) 115 return NULL; 116 117 ROAR_DBG("roar_vio_fgets(*): have=%u", (unsigned int) have); 118 ROAR_DBG("roar_vio_fgets(*): eol - buf=%lli", (long long) (eol - buf)); 119 120 ret = (size_t)(eol - buf); 121 ret++; 122 ROAR_DBG("roar_vio_fgets(*): ret=%lli", (long long) ret); 123 124 memcpy(s, buf, ret); 125 have += ret; 126 127 ROAR_DBG("roar_vio_fgets(*): have=%u", (unsigned int) have); 128 129 break; 130 } 131 ROAR_DBG("roar_vio_fgets(*): have=%u", (unsigned int) have); 132 } 133 92 134 } 93 */ 135 136 ROAR_DBG("roar_vio_fgets(*): have=%u", (unsigned int) have); 94 137 95 138 if ( !have )
Note: See TracChangeset
for help on using the changeset viewer.