[Extractor-gtk-cvslog] SF.net SVN: extractor-gtk: [25] trunk/extractor/generic.c
Extract files from unusual archive formats
Brought to you by:
someone-guy
From: <som...@us...> - 2007-08-30 10:56:31
|
Revision: 25 http://extractor-gtk.svn.sourceforge.net/extractor-gtk/?rev=25&view=rev Author: someone-guy Date: 2007-08-30 03:56:28 -0700 (Thu, 30 Aug 2007) Log Message: ----------- Some refactoring Modified Paths: -------------- trunk/extractor/generic.c Modified: trunk/extractor/generic.c =================================================================== --- trunk/extractor/generic.c 2007-08-30 10:56:22 UTC (rev 24) +++ trunk/extractor/generic.c 2007-08-30 10:56:28 UTC (rev 25) @@ -17,6 +17,15 @@ return 0; } +static void add_entry(file_t **list, int cnt, char *ext) { + file_t *l = *list; + l = realloc(l, (cnt + 2) * sizeof(file_t)); + memset(&l[cnt + 1], 0, sizeof(file_t)); + l[cnt].name = malloc(50); + snprintf(l[cnt].name, 50, "%i.%s", cnt, ext); + *list = l; +} + static file_t *get_list(FILE *in) { register uint32_t t = 0; int cnt = 0; @@ -26,23 +35,17 @@ t = t << 8 | fgetc(in); switch (t) { case TAG('R', 'I', 'F', 'F'): - list = realloc(list, (cnt + 2) * sizeof(file_t)); - memset(&list[cnt + 1], 0, sizeof(file_t)); + add_entry(&list, cnt, "riff"); list[cnt].start = ftell(in) - 4; list[cnt].len = read_le32(in); - list[cnt].name = malloc(50); - snprintf(list[cnt].name, 50, "%i.riff", cnt); cnt++; break; } switch (t & 0xffff) { case TAG(' ', ' ', 'B', 'M') & 0xffff: - list = realloc(list, (cnt + 2) * sizeof(file_t)); - memset(&list[cnt + 1], 0, sizeof(file_t)); + add_entry(&list, cnt, "bmp"); list[cnt].start = ftell(in) - 2; list[cnt].len = read_le32(in); - list[cnt].name = malloc(50); - snprintf(list[cnt].name, 50, "%i.bmp", cnt); cnt++; break; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |