mirror of https://github.com/OpenTTD/OpenTTD
(svn r11117) -Add: add support for 7z .tar files, which are in the 'old' (deprecated) format
parent
17870089d0
commit
6a8e5398a2
|
@ -349,7 +349,8 @@ FILE *FioTarFileList(const char *tar, const char *mode, size_t *filesize, FioTar
|
|||
while (!feof(f)) {
|
||||
/* Read the header and make sure it is a valid one */
|
||||
fread(&th, 1, 512, f);
|
||||
if (strncmp(th.magic, "ustar", 5) != 0) return NULL;
|
||||
/* 'ustar' is the new format, '\0' is the old format */
|
||||
if (th.magic[0] != '\0' && strncmp(th.magic, "ustar", 5) != 0) return NULL;
|
||||
|
||||
name[0] = '\0';
|
||||
int len = 0;
|
||||
|
@ -372,6 +373,9 @@ FILE *FioTarFileList(const char *tar, const char *mode, size_t *filesize, FioTar
|
|||
buf[sizeof(th.size)] = '\0';
|
||||
int skip = strtol(buf, &end, 8);
|
||||
|
||||
/* 0 byte sized files can be skipped (dirs, symlinks, ..) */
|
||||
if (skip == 0) continue;
|
||||
|
||||
/* Check in the callback if this is the file we want */
|
||||
if (callback(name, skip, userdata)) {
|
||||
if (filesize != NULL) *filesize = skip;
|
||||
|
|
Loading…
Reference in New Issue