reads records from an already-open file
| 1331 | |
| 1332 | // reads records from an already-open file |
| 1333 | void LuaSaveData::ImportRecords(void* fileV) |
| 1334 | { |
| 1335 | FILE* file = (FILE*)fileV; |
| 1336 | if(!file) |
| 1337 | return; |
| 1338 | |
| 1339 | ClearRecords(); |
| 1340 | |
| 1341 | Record rec; |
| 1342 | Record* cur = &rec; |
| 1343 | Record* last = NULL; |
| 1344 | while(1) |
| 1345 | { |
| 1346 | freadint(cur->key, file); |
| 1347 | freadint(cur->size, file); |
| 1348 | |
| 1349 | if(feof(file) || ferror(file)) |
| 1350 | break; |
| 1351 | |
| 1352 | cur->data = new unsigned char [cur->size]; |
| 1353 | if ( fread(cur->data, cur->size, 1, file) == 0 ) |
| 1354 | { |
| 1355 | memset( cur->data, 0, cur->size ); |
| 1356 | } |
| 1357 | |
| 1358 | Record* next = new Record(); |
| 1359 | memcpy(next, cur, sizeof(Record)); |
| 1360 | next->next = NULL; |
| 1361 | |
| 1362 | if(last) |
| 1363 | last->next = next; |
| 1364 | else |
| 1365 | recordList = next; |
| 1366 | last = next; |
| 1367 | } |
| 1368 | } |
| 1369 | |
| 1370 | void LuaSaveData::ClearRecords() |
| 1371 | { |
no test coverage detected