equal
deleted
inserted
replaced
335 return f; |
335 return f; |
336 } |
336 } |
337 |
337 |
338 FILE *FioFOpenFileTar(TarFileListEntry *entry, size_t *filesize) |
338 FILE *FioFOpenFileTar(TarFileListEntry *entry, size_t *filesize) |
339 { |
339 { |
340 FILE *f = fopen(entry->tar->filename, "rb"); |
340 FILE *f = fopen(entry->tar_filename, "rb"); |
341 assert(f != NULL); |
341 assert(f != NULL); |
342 |
342 |
343 fseek(f, entry->position, SEEK_SET); |
343 fseek(f, entry->position, SEEK_SET); |
344 if (filesize != NULL) *filesize = entry->size; |
344 if (filesize != NULL) *filesize = entry->size; |
345 return f; |
345 return f; |
511 if (it != _tar_list.end()) return false; |
511 if (it != _tar_list.end()) return false; |
512 |
512 |
513 FILE *f = fopen(filename, "rb"); |
513 FILE *f = fopen(filename, "rb"); |
514 assert(f != NULL); |
514 assert(f != NULL); |
515 |
515 |
516 TarListEntry *tar_entry = MallocT<TarListEntry>(1); |
516 const char *dupped_filename = strdup(filename); |
517 tar_entry->filename = strdup(filename); |
517 _tar_list[filename].filename = dupped_filename; |
518 _tar_list.insert(TarList::value_type(filename, tar_entry)); |
|
519 |
518 |
520 TarLinkList links; ///< Temporary list to collect links |
519 TarLinkList links; ///< Temporary list to collect links |
521 |
520 |
522 TarHeader th; |
521 TarHeader th; |
523 char buf[sizeof(th.name) + 1], *end; |
522 char buf[sizeof(th.name) + 1], *end; |
573 |
572 |
574 if (strlen(name) == 0) break; |
573 if (strlen(name) == 0) break; |
575 |
574 |
576 /* Store this entry in the list */ |
575 /* Store this entry in the list */ |
577 TarFileListEntry entry; |
576 TarFileListEntry entry; |
578 entry.tar = tar_entry; |
577 entry.tar_filename = dupped_filename; |
579 entry.size = skip; |
578 entry.size = skip; |
580 entry.position = pos; |
579 entry.position = pos; |
581 |
580 |
582 /* Convert to lowercase and our PATHSEPCHAR */ |
581 /* Convert to lowercase and our PATHSEPCHAR */ |
583 SimplifyFileName(name); |
582 SimplifyFileName(name); |
584 |
583 |
585 DEBUG(misc, 6, "Found file in tar: %s (%d bytes, %d offset)", name, skip, pos); |
584 DEBUG(misc, 6, "Found file in tar: %s (%d bytes, %d offset)", name, skip, pos); |