[Extractor-gtk-cvslog] SF.net SVN: extractor-gtk: [30] trunk/extractor
Extract files from unusual archive formats
Brought to you by:
someone-guy
From: <som...@us...> - 2007-09-16 10:29:18
|
Revision: 30 http://extractor-gtk.svn.sourceforge.net/extractor-gtk/?rev=30&view=rev Author: someone-guy Date: 2007-09-16 03:29:17 -0700 (Sun, 16 Sep 2007) Log Message: ----------- Add and use a peek_le32 function Modified Paths: -------------- trunk/extractor/generic.c trunk/extractor/helpers.c trunk/extractor/helpers.h Modified: trunk/extractor/generic.c =================================================================== --- trunk/extractor/generic.c 2007-09-15 23:08:02 UTC (rev 29) +++ trunk/extractor/generic.c 2007-09-16 10:29:17 UTC (rev 30) @@ -38,7 +38,7 @@ case TAG('R', 'I', 'F', 'F'): add_entry(&list, cnt, "riff"); list[cnt].start = ftell(in) - 4; - list[cnt].len = read_le32(in); + list[cnt].len = peek_le32(in); cnt++; break; } @@ -46,7 +46,7 @@ case TAG(0, 'F', 'W', 'S'): add_entry(&list, cnt, "swf"); list[cnt].start = ftell(in) - 3; - list[cnt].len = read_le32(in); + list[cnt].len = peek_le32(in); cnt++; break; case 0xffd8ff: @@ -61,7 +61,7 @@ case TAG(0, 0, 'B', 'M'): add_entry(&list, cnt, "bmp"); list[cnt].start = ftell(in) - 2; - list[cnt].len = read_le32(in); + list[cnt].len = peek_le32(in); cnt++; break; case 0xffd9: Modified: trunk/extractor/helpers.c =================================================================== --- trunk/extractor/helpers.c 2007-09-15 23:08:02 UTC (rev 29) +++ trunk/extractor/helpers.c 2007-09-16 10:29:17 UTC (rev 30) @@ -37,6 +37,13 @@ return (t[3] << 8 | t[2]) << 16 | (t[1] << 8 | t[0]); } +//! as read_le32 but do not advance file pointer +uint32_t peek_le32(FILE *f) { + uint32_t res = read_le32(f); + fseek(f, -4, SEEK_CUR); + return res; +} + //! read a 32 bit big-endian value from file uint32_t read_be32(FILE *f) { unsigned char t[4]; Modified: trunk/extractor/helpers.h =================================================================== --- trunk/extractor/helpers.h 2007-09-15 23:08:02 UTC (rev 29) +++ trunk/extractor/helpers.h 2007-09-16 10:29:17 UTC (rev 30) @@ -3,6 +3,7 @@ char *read_cstring(FILE *f); uint16_t read_le16(FILE *f); uint32_t read_le32(FILE *f); +uint32_t peek_le32(FILE *f); uint32_t read_be32(FILE *f); int fcopy(FILE *in, FILE *out, int len); #define TAG(a, b, c, d) ((uint32_t)(a << 8 | b) << 16 | (c << 8 | d)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |