A cleaner cleanup that avoids passing an off_t to scanf
authorEric Andersen <andersen@codepoet.org>
Wed, 11 Dec 2002 21:45:08 +0000 (21:45 -0000)
committerEric Andersen <andersen@codepoet.org>
Wed, 11 Dec 2002 21:45:08 +0000 (21:45 -0000)
archival/libunarchive/get_header_cpio.c

index 96057a7b83ab977ce172f5f16b36c40524d8a1c4..ea0857840d2b10c110dbc4789a0004ce9149f539 100644 (file)
@@ -85,11 +85,15 @@ extern char get_header_cpio(archive_handle_t *archive_handle)
                error_msg_and_die("Unsupported cpio format, use newc or crc");
        }
 
-       sscanf(cpio_header, "%6c%8x%8x%8x%8x%8x%8lx%8lx%16c%8x%8x%8x%8c",
-               dummy, &inode, (unsigned int*)&file_header->mode, 
-               (unsigned int*)&file_header->uid, (unsigned int*)&file_header->gid,
-               &nlink, &file_header->mtime, (unsigned long*)&file_header->size,
-               dummy, &major, &minor, &namesize, dummy);
+       {
+           unsigned long tmpsize;
+           sscanf(cpio_header, "%6c%8x%8x%8x%8x%8x%8lx%8lx%16c%8x%8x%8x%8c",
+                   dummy, &inode, (unsigned int*)&file_header->mode, 
+                   (unsigned int*)&file_header->uid, (unsigned int*)&file_header->gid,
+                   &nlink, &file_header->mtime, &tmpsize,
+                   dummy, &major, &minor, &namesize, dummy);
+           file_header->size = tmpsize;
+       }
 
        file_header->name = (char *) xmalloc(namesize + 1);
        archive_xread_all(archive_handle, file_header->name, namesize); /* Read in filename */