Changeset 4412
- Timestamp:
- 04/07/09 04:02:15 (4 years ago)
- Location:
- luci/trunk/contrib/lar
- Files:
-
- 2 modified
-
lar.c (modified) (10 diffs)
-
openwrt/050-lar-source-loader.patch (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
luci/trunk/contrib/lar/lar.c
r4410 r4412 32 32 uint32_t idx_offset; 33 33 uint32_t idx_length; 34 lar_index *idx_map, *idx_ptr; 34 lar_index *idx_map; 35 lar_index *idx_ptr; 35 36 36 37 if( lseek(ar->fd, -(sizeof(idx_offset)), SEEK_END) == -1 ) … … 46 47 idx_map = NULL; 47 48 48 for( i = 0; i < idx_length; \ 49 i += (sizeof(lar_index) - sizeof(char *)) 50 ) { 49 for( i = 0; i < idx_length; i += (sizeof(lar_index) - sizeof(char *)) ) { 51 50 idx_ptr = (lar_index *)malloc(sizeof(lar_index)); 52 51 … … 65 64 } 66 65 67 uint32_t lar_get_filename( lar_archive *ar, 68 lar_index *idx_ptr, char *filename 69 ) { 66 uint32_t lar_get_filename( lar_archive *ar, lar_index *idx_ptr, char *filename ) 67 { 70 68 if( idx_ptr->nlength >= LAR_FNAME_BUFFER ) 71 69 LAR_DIE("Filename exceeds maximum allowed length"); … … 77 75 LAR_DIE("Unexpected EOF while reading filename"); 78 76 79 filename[idx_ptr->nlength] = 0;77 filename[idx_ptr->nlength] = '\0'; 80 78 81 79 return idx_ptr->nlength; … … 86 84 lar_index *idx_ptr = ar->index; 87 85 lar_member *member; 88 char memberfile[LAR_FNAME_BUFFER];89 86 char *memberdata; 90 size_t pgsz = getpagesize(); 87 size_t pgof; 88 size_t pgsz = getpagesize(); 89 LAR_FNAME(memberfile); 91 90 92 91 while(idx_ptr) … … 96 95 if( !strncmp(memberfile, name, idx_ptr->nlength) ) 97 96 { 97 pgof = ( idx_ptr->foffset % pgsz ); 98 98 99 memberdata = mmap( 99 0, idx_ptr->flength + ( idx_ptr->foffset % pgsz ), 100 PROT_READ, MAP_PRIVATE, ar->fd, 101 idx_ptr->foffset - ( idx_ptr->foffset % pgsz ) 100 0, idx_ptr->flength + pgof, PROT_READ, MAP_PRIVATE, 101 ar->fd, idx_ptr->foffset - pgof 102 102 ); 103 103 … … 109 109 member->flags = idx_ptr->flags; 110 110 member->length = idx_ptr->flength; 111 member->data = &memberdata[ idx_ptr->foffset % pgsz];111 member->data = &memberdata[pgof]; 112 112 113 113 member->mmap = memberdata; 114 member->mlen = idx_ptr->flength + ( idx_ptr->foffset % pgsz );114 member->mlen = idx_ptr->flength + pgof; 115 115 116 116 return member; … … 177 177 lar_archive * lar_find_archive( const char *package, const char *path ) 178 178 { 179 int seg = 1; 180 int len = 0; 181 int pln = 0; 182 int i, j; 179 uint32_t i; 180 uint32_t j; 181 uint32_t seg = 1; 182 uint32_t len = 0; 183 uint32_t pln = 0; 183 184 struct stat s; 184 185 LAR_FNAME(buffer); … … 212 213 } 213 214 214 buffer[pln+i+0] = '.'; buffer[pln+i+1] = 'l'; buffer[pln+i+2] = 'a'; 215 buffer[pln+i+3] = 'r'; buffer[pln+i+4] = '\0'; 215 strcpy(&buffer[pln+i], ".lar"); 216 216 217 217 if( (stat(buffer, &s) > -1) && (s.st_mode & S_IFREG) ) … … 237 237 } 238 238 239 buffer[len+0] = '.'; buffer[len+1] = 'l'; buffer[len+2] = 'u'; 240 buffer[len+3] = 'a'; buffer[len+4] = '\0'; 239 strcpy(&buffer[len], ".lua"); 241 240 242 241 return lar_open_member(ar, buffer); -
luci/trunk/contrib/lar/openwrt/050-lar-source-loader.patch
r4411 r4412 13 13 diff -Nurb lua-5.1.4.orig/src/lar.c lua-5.1.4/src/lar.c 14 14 --- lua-5.1.4.orig/src/lar.c 1970-01-01 01:00:00.000000000 +0100 15 +++ lua-5.1.4/src/lar.c 2009-04-07 0 0:35:55.000000000 +020016 @@ -0,0 +1,24 3@@15 +++ lua-5.1.4/src/lar.c 2009-04-07 03:53:29.000000000 +0200 16 @@ -0,0 +1,242 @@ 17 17 +#include "lar.h" 18 18 + … … 48 48 + uint32_t idx_offset; 49 49 + uint32_t idx_length; 50 + lar_index *idx_map, *idx_ptr; 50 + lar_index *idx_map; 51 + lar_index *idx_ptr; 51 52 + 52 53 + if( lseek(ar->fd, -(sizeof(idx_offset)), SEEK_END) == -1 ) … … 62 63 + idx_map = NULL; 63 64 + 64 + for( i = 0; i < idx_length; \ 65 + i += (sizeof(lar_index) - sizeof(char *)) 66 + ) { 65 + for( i = 0; i < idx_length; i += (sizeof(lar_index) - sizeof(char *)) ) { 67 66 + idx_ptr = (lar_index *)malloc(sizeof(lar_index)); 68 67 + … … 81 80 +} 82 81 + 83 +uint32_t lar_get_filename( lar_archive *ar, 84 + lar_index *idx_ptr, char *filename 85 +) { 82 +uint32_t lar_get_filename( lar_archive *ar, lar_index *idx_ptr, char *filename ) 83 +{ 86 84 + if( idx_ptr->nlength >= LAR_FNAME_BUFFER ) 87 85 + LAR_DIE("Filename exceeds maximum allowed length"); … … 93 91 + LAR_DIE("Unexpected EOF while reading filename"); 94 92 + 95 + filename[idx_ptr->nlength] = 0;93 + filename[idx_ptr->nlength] = '\0'; 96 94 + 97 95 + return idx_ptr->nlength; … … 102 100 + lar_index *idx_ptr = ar->index; 103 101 + lar_member *member; 104 + char memberfile[LAR_FNAME_BUFFER];105 102 + char *memberdata; 106 + size_t pgsz = getpagesize(); 103 + size_t pgof; 104 + size_t pgsz = getpagesize(); 105 + LAR_FNAME(memberfile); 107 106 + 108 107 + while(idx_ptr) … … 112 111 + if( !strncmp(memberfile, name, idx_ptr->nlength) ) 113 112 + { 113 + pgof = ( idx_ptr->foffset % pgsz ); 114 + 114 115 + memberdata = mmap( 115 + 0, idx_ptr->flength + ( idx_ptr->foffset % pgsz ), 116 + PROT_READ, MAP_PRIVATE, ar->fd, 117 + idx_ptr->foffset - ( idx_ptr->foffset % pgsz ) 116 + 0, idx_ptr->flength + pgof, PROT_READ, MAP_PRIVATE, 117 + ar->fd, idx_ptr->foffset - pgof 118 118 + ); 119 119 + … … 125 125 + member->flags = idx_ptr->flags; 126 126 + member->length = idx_ptr->flength; 127 + member->data = &memberdata[ idx_ptr->foffset % pgsz];127 + member->data = &memberdata[pgof]; 128 128 + 129 129 + member->mmap = memberdata; 130 + member->mlen = idx_ptr->flength + ( idx_ptr->foffset % pgsz );130 + member->mlen = idx_ptr->flength + pgof; 131 131 + 132 132 + return member; … … 193 193 +lar_archive * lar_find_archive( const char *package, const char *path ) 194 194 +{ 195 + int seg = 1; 196 + int len = 0; 197 + int pln = 0; 198 + int i, j; 195 + uint32_t i; 196 + uint32_t j; 197 + uint32_t seg = 1; 198 + uint32_t len = 0; 199 + uint32_t pln = 0; 199 200 + struct stat s; 200 201 + LAR_FNAME(buffer); … … 228 229 + } 229 230 + 230 + buffer[pln+i+0] = '.'; buffer[pln+i+1] = 'l'; buffer[pln+i+2] = 'a'; 231 + buffer[pln+i+3] = 'r'; buffer[pln+i+4] = '\0'; 231 + strcpy(&buffer[pln+i], ".lar"); 232 232 + 233 233 + if( (stat(buffer, &s) > -1) && (s.st_mode & S_IFREG) ) … … 253 253 + } 254 254 + 255 + buffer[len+0] = '.'; buffer[len+1] = 'l'; buffer[len+2] = 'u'; 256 + buffer[len+3] = 'a'; buffer[len+4] = '\0'; 255 + strcpy(&buffer[len], ".lua"); 257 256 + 258 257 + return lar_open_member(ar, buffer);
