(svn r11117) -Add: add support for 7z .tar files, which are in the 'old' (deprecated) format
authortruelight
Sat, 15 Sep 2007 15:38:09 +0000
changeset 7590 08e4689e05b3
parent 7589 f989c4d11269
child 7591 06202df3799e
(svn r11117) -Add: add support for 7z .tar files, which are in the 'old' (deprecated) format
src/fileio.cpp
--- a/src/fileio.cpp	Sat Sep 15 15:21:17 2007 +0000
+++ b/src/fileio.cpp	Sat Sep 15 15:38:09 2007 +0000
@@ -349,7 +349,8 @@
 	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 @@
 		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;