gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r9472 - Extractor/src/plugins


From: gnunet
Subject: [GNUnet-SVN] r9472 - Extractor/src/plugins
Date: Thu, 12 Nov 2009 09:04:13 -0700

Author: grothoff
Date: 2009-11-12 09:04:13 -0700 (Thu, 12 Nov 2009)
New Revision: 9472

Modified:
   Extractor/src/plugins/zipextractor.c
Log:
dos2unix

Modified: Extractor/src/plugins/zipextractor.c
===================================================================
--- Extractor/src/plugins/zipextractor.c        2009-11-12 16:01:33 UTC (rev 
9471)
+++ Extractor/src/plugins/zipextractor.c        2009-11-12 16:04:13 UTC (rev 
9472)
@@ -1,610 +1,415 @@
-/** 
-     zipextractor.c  version 0.0.2
-
-     Changes from 0.0.1 to 0.0.2 
-     -> Searches for central dir struct from end of file if this is a 
self-extracting executable
-
-
-     This file was based on mp3extractor.c  (0.1.2)
-
-     Currently, this only returns a list of the filenames within a zipfile
-     and any comments on each file or the whole file itself. File sizes, 
-     modification times, and crc's are currently ignored.
-
-     TODO: Break the comments up into small, atomically, searchable chunks 
(keywords)
-         - might need some knowledge of English?
-
-     It returns:
-
-     one      EXTRACTOR_MIMETYPE
-     multiple EXTRACTOR_FILENAME
-     multiple EXTRACTOR_COMMENT
-     
-     ... from a .ZIP file
-
-     TODO: EXTRACTOR_DATE, EXTRACTOR_DESCRIPTION, EXTRACTOR_KEYWORDS, others?
-
-     Does NOT test data integrity (CRCs etc.)
-
-     This version is not recursive (i.e. doesn't look inside zip 
-     files within zip files)
-     
-     TODO: Run extract on files inside of archive (?) (i.e. gif, mp3, etc.)
-     
-     The current .ZIP format description:
-     ftp://ftp.pkware.com/appnote.zip
-
-     No Copyright 2003 Julia Wolf
-
- */  
-  
-/*
- * This file is part of libextractor.
- * (C) 2002, 2003 Vidyut Samanta and Christian Grothoff
- *
- * libextractor is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published
- * by the Free Software Foundation; either version 2, or (at your
- * option) any later version.
- * 
- * libextractor is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with libextractor; see the file COPYING.  If not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */ 
-  
-#include "platform.h"
-#include "extractor.h"
-  
-#define DEBUG_EXTRACT_ZIP 0
-  
-
-/* In a zipfile there are two kinds of comments. One is a big one for the
-   entire .zip, it's usually a BBS ad. The other is a small comment on each
-   individual file; most people don't use this.
- */ 
-  
-/* TODO: zip_entry linked list is handeled kinda messily, should clean up 
(maybe) */ 
-  
-typedef struct
+/** 
+     zipextractor.c  version 0.0.2
+
+     Changes from 0.0.1 to 0.0.2 
+     -> Searches for central dir struct from end of file if this is a 
self-extracting executable
+
+
+     This file was based on mp3extractor.c  (0.1.2)
+
+     Currently, this only returns a list of the filenames within a zipfile
+     and any comments on each file or the whole file itself. File sizes, 
+     modification times, and crc's are currently ignored.
+
+     TODO: Break the comments up into small, atomically, searchable chunks 
(keywords)
+         - might need some knowledge of English?
+
+     It returns:
+
+     one      EXTRACTOR_MIMETYPE
+     multiple EXTRACTOR_FILENAME
+     multiple EXTRACTOR_COMMENT
+     
+     ... from a .ZIP file
+
+     TODO: EXTRACTOR_DATE, EXTRACTOR_DESCRIPTION, EXTRACTOR_KEYWORDS, others?
+
+     Does NOT test data integrity (CRCs etc.)
+
+     This version is not recursive (i.e. doesn't look inside zip 
+     files within zip files)
+     
+     TODO: Run extract on files inside of archive (?) (i.e. gif, mp3, etc.)
+     
+     The current .ZIP format description:
+     ftp://ftp.pkware.com/appnote.zip
+
+     No Copyright 2003 Julia Wolf
+
+ */  
+  
+/*
+ * This file is part of libextractor.
+ * (C) 2002, 2003 Vidyut Samanta and Christian Grothoff
+ *
+ * libextractor is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation; either version 2, or (at your
+ * option) any later version.
+ * 
+ * libextractor is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with libextractor; see the file COPYING.  If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */ 
+  
+#include "platform.h"
+#include "extractor.h"
+  
+#define DEBUG_EXTRACT_ZIP 0
+  
+/* In a zipfile there are two kinds of comments. One is a big one for the
+   entire .zip, it's usually a BBS ad. The other is a small comment on each
+   individual file; most people don't use this.
+ */ 
+  
+/* TODO: zip_entry linked list is handeled kinda messily, should clean up 
(maybe) */ 
+  typedef struct
 {
-  
-char *filename;
-   
-char *comment;
-   
-void *next;
- 
-} zip_entry;
-
-
-
-
-/* mimetype = application/zip */ 
-struct EXTRACTOR_Keywords *
-libextractor_zip_extract (const char *filename, 
-const unsigned char *data,
-                          
-size_t size, 
-struct EXTRACTOR_Keywords *prev)
+  char *filename;
+   char *comment;
+   void *next;
+ } zip_entry;
+
+/* mimetype = application/zip */ 
+struct EXTRACTOR_Keywords *
+libextractor_zip_extract (const char *filename, const unsigned char *data,
+                          size_t size, struct EXTRACTOR_Keywords *prev)
 {
-  
-void *tmp;
-  
-zip_entry * info;
-  
-zip_entry * start;
-  
-char *filecomment = NULL;
-  
-const unsigned char *pos;
-  
-unsigned int offset, stop;
-  
-unsigned int name_length, extra_length, comment_length;
-  
-unsigned int filecomment_length;
-  
-unsigned int entry_total, entry_count;
-  
-EXTRACTOR_KeywordList * keyword;
-  
-const char *mimetype;
-  
-
-mimetype = EXTRACTOR_extractLast (EXTRACTOR_MIMETYPE, 
-prev);
-  
-if (NULL != mimetype)
+  void *tmp;
+  zip_entry * info;
+  zip_entry * start;
+  char *filecomment = NULL;
+  const unsigned char *pos;
+  unsigned int offset, stop;
+  unsigned int name_length, extra_length, comment_length;
+  unsigned int filecomment_length;
+  unsigned int entry_total, entry_count;
+  EXTRACTOR_KeywordList * keyword;
+  const char *mimetype;
+  mimetype = EXTRACTOR_extractLast (EXTRACTOR_MIMETYPE, prev);
+  if (NULL != mimetype)
     {
-      
-if ((0 != strcmp (mimetype, "application/x-zip")) && 
+      if ((0 != strcmp (mimetype, "application/x-zip")) && 
            (0 != strcmp (mimetype, "application/zip")))
         {
-          
-            /* we think we already know what's in here,
-               and it is not a zip */ 
+          
+            /* we think we already know what's in here,
+               and it is not a zip */ 
             return prev;
-        
-}
-    
-}
-  
-
-    /* I think the smallest zipfile you can have is about 120 bytes */ 
+        }
+    }
+  
+    /* I think the smallest zipfile you can have is about 120 bytes */ 
     if ((NULL == data) || (size < 100))
-    
-return prev;
-  
-
-if (!
+    return prev;
+  if (!
         (('P' == data[0]) && ('K' == data[1]) && (0x03 == data[2])
          && (0x04 == data[3])))
-    
-return prev;
-  
-
-    /* The filenames for each file in a zipfile are stored in two locations.
-     * There is one at the start of each entry, just before the compressed 
data,
-     * and another at the end in a 'central directory structure'.
-     *
-     * In order to catch self-extracting executables, we scan backwards from 
the end
-     * of the file looking for the central directory structure. The previous 
version
-     * of this went forewards through the local headers, but that only works 
for plain
-     * vanilla zip's and I don't feel like writing a special case for each of 
the dozen
-     * self-extracting executable stubs.
-     *
-     * This assumes that the zip file is considered to be 
non-corrupt/non-truncated.
-     * If it is truncated then it's not considered to be a zip and skipped.
-     *
-     */ 
-    
-    /* From appnote.iz and appnote.txt (more or less)
-     *
-     *   (this is why you always need to put in the last floppy if you span 
disks)
-     *
-     *   0- 3  end of central dir signature    4 bytes  (0x06054b50) P K ^E ^F
-     *   4- 5  number of this disk             2 bytes
-     *   6- 7  number of the disk with the
-     *         start of the central directory  2 bytes
-     *   8- 9  total number of entries in
-     *         the central dir on this disk    2 bytes
-     *  10-11  total number of entries in
-     *         the central dir                 2 bytes
-     *  12-15  size of the central directory   4 bytes
-     *  16-19  offset of start of central
-     *         directory with respect to
-     *         the starting disk number        4 bytes
-     *  20-21  zipfile comment length          2 bytes
-     *  22-??  zipfile comment (variable size) max length 65536 bytes
-     */ 
-    
-
-    /*  the signature can't be more than 22 bytes from the end */ 
+    return prev;
+  
+    /* The filenames for each file in a zipfile are stored in two locations.
+     * There is one at the start of each entry, just before the compressed 
data,
+     * and another at the end in a 'central directory structure'.
+     *
+     * In order to catch self-extracting executables, we scan backwards from 
the end
+     * of the file looking for the central directory structure. The previous 
version
+     * of this went forewards through the local headers, but that only works 
for plain
+     * vanilla zip's and I don't feel like writing a special case for each of 
the dozen
+     * self-extracting executable stubs.
+     *
+     * This assumes that the zip file is considered to be 
non-corrupt/non-truncated.
+     * If it is truncated then it's not considered to be a zip and skipped.
+     *
+     */ 
+    
+    /* From appnote.iz and appnote.txt (more or less)
+     *
+     *   (this is why you always need to put in the last floppy if you span 
disks)
+     *
+     *   0- 3  end of central dir signature    4 bytes  (0x06054b50) P K ^E ^F
+     *   4- 5  number of this disk             2 bytes
+     *   6- 7  number of the disk with the
+     *         start of the central directory  2 bytes
+     *   8- 9  total number of entries in
+     *         the central dir on this disk    2 bytes
+     *  10-11  total number of entries in
+     *         the central dir                 2 bytes
+     *  12-15  size of the central directory   4 bytes
+     *  16-19  offset of start of central
+     *         directory with respect to
+     *         the starting disk number        4 bytes
+     *  20-21  zipfile comment length          2 bytes
+     *  22-??  zipfile comment (variable size) max length 65536 bytes
+     */ 
+    
+    /*  the signature can't be more than 22 bytes from the end */ 
     offset = size - 22;
-  
-pos = &data[offset];
-  
-
-stop = 0;
-  
-if (((signed int) size - 65556) > 0)
-    
-stop = size - 65556;
-  
-
-    /* not using int 0x06054b50 so that we don't have to deal with endianess 
issues.
-       break out if we go more than 64K backwards and havn't found it, or if 
we hit the
-       begining of the file. */ 
-    
-while ((!
+  pos = &data[offset];
+  stop = 0;
+  if (((signed int) size - 65556) > 0)
+    stop = size - 65556;
+  
+    /* not using int 0x06054b50 so that we don't have to deal with endianess 
issues.
+       break out if we go more than 64K backwards and havn't found it, or if 
we hit the
+       begining of the file. */ 
+    while ((!
              (('P' == pos[0]) && ('K' == pos[1]) && (0x05 == pos[2])
-              && (0x06 == pos[3]))) && 
-(offset > stop))
-    
-pos = &data[offset--];
-  
-
-if (offset == stop)
+              && (0x06 == pos[3]))) && (offset > stop))
+    pos = &data[offset--];
+  if (offset == stop)
     {
-      
-#if DEBUG_EXTRACT_ZIP
+      
+#if DEBUG_EXTRACT_ZIP
         fprintf (stderr,
-                 
-"Did not find end of central directory structure signature. offset: %i\n",
-                 
-offset);
-      
-#endif  /* 
- */
+                 "Did not find end of central directory structure signature. 
offset: %i\n",
+                 offset);
+      
+#endif  /*  */
         return prev;
-    
-}
-  
-
-    /* offset should now point to the start of the end-of-central directory 
structure */ 
-    /* and pos[0] should be pointing there too */ 
-    /* so slurp down filecomment while here... */ 
-    
-filecomment_length = pos[20] + (pos[21] << 8);
-  
-if (filecomment_length + offset + 22 > size)
+    }
+  
+    /* offset should now point to the start of the end-of-central directory 
structure */ 
+    /* and pos[0] should be pointing there too */ 
+    /* so slurp down filecomment while here... */ 
+    filecomment_length = pos[20] + (pos[21] << 8);
+  if (filecomment_length + offset + 22 > size)
     {
-      
-return prev;             /* invalid zip file format! */
-    
-}
-  
-filecomment = NULL;
-  
-if (filecomment_length > 0)
+      return prev;             /* invalid zip file format! */
+    }
+  filecomment = NULL;
+  if (filecomment_length > 0)
     {
-      
-filecomment = malloc (filecomment_length + 1);
-      
-memcpy (filecomment, 
-&pos[22], 
-filecomment_length);
-      
-filecomment[filecomment_length] = '\0';
-    
-}
-  
-
-
-if ((0 != pos[4]) && (0 != pos[5]))
+      filecomment = malloc (filecomment_length + 1);
+      memcpy (filecomment, &pos[22], filecomment_length);
+      filecomment[filecomment_length] = '\0';
+    }
+  if ((0 != pos[4]) && (0 != pos[5]))
     {
-      
-#if DEBUG_EXTRACT_ZIP
+      
+#if DEBUG_EXTRACT_ZIP
         fprintf (stderr,
-                 
-"WARNING: This seems to be the last disk in a multi-volume"
-                 
- " ZIP archive, and so this might not work.\n");
-      
-#endif  /* 
- */
+                 "WARNING: This seems to be the last disk in a multi-volume"
+                  " ZIP archive, and so this might not work.\n");
+      
+#endif  /*  */
     }
-  
-if ((pos[8] != pos[10]) && (pos[9] != pos[11]))
+  if ((pos[8] != pos[10]) && (pos[9] != pos[11]))
     {
-      
-#if DEBUG_EXTRACT_ZIP
+      
+#if DEBUG_EXTRACT_ZIP
         fprintf (stderr,
-                 
-"WARNING: May not be able to find all the files in this" 
+                 "WARNING: May not be able to find all the files in this" 
                  " ZIP archive (no multi-volume support right now).\n");
-      
-#endif  /* 
- */
+      
+#endif  /*  */
     }
-  
-
-entry_total = pos[10] + (pos[11] << 8);
-  
-entry_count = 0;
-  
-
-    /* jump to start of central directory, ASSUMING that the starting disk 
that it's on is disk 0 */ 
-    /* starting disk would otherwise be pos[6]+pos[7]<<8 */ 
-    
-offset = pos[16] + (pos[17] << 8) + (pos[18] << 16) + (pos[19] << 24);     /* 
offset of cent-dir from start of disk 0 */
-  
-    /* stop   = pos[12] + (pos[13]<<8) + (pos[14]<<16) + (pos[15]<<24); *//* 
length of central dir */ 
+  entry_total = pos[10] + (pos[11] << 8);
+  entry_count = 0;
+  
+    /* jump to start of central directory, ASSUMING that the starting disk 
that it's on is disk 0 */ 
+    /* starting disk would otherwise be pos[6]+pos[7]<<8 */ 
+    offset = pos[16] + (pos[17] << 8) + (pos[18] << 16) + (pos[19] << 24);     
/* offset of cent-dir from start of disk 0 */
+  
+    /* stop   = pos[12] + (pos[13]<<8) + (pos[14]<<16) + (pos[15]<<24); *//* 
length of central dir */ 
     if (offset + 46 > size)
     {
-      
-        /* not a zip */ 
+      
+        /* not a zip */ 
         if (filecomment != NULL)
-        
-free (filecomment);
-      
-return prev;
-    
-}
-  
-pos = &data[offset];         /* jump */
-  
-
-    /* we should now be at the begining of the central directory structure */ 
-    
-    /* from appnote.txt and appnote.iz (mostly)
-     *
-     *   0- 3  central file header signature   4 bytes  (0x02014b50)
-     *   4- 5  version made by                 2 bytes
-     *   6- 7  version needed to extract       2 bytes
-     *   8- 9  general purpose bit flag        2 bytes
-     *  10-11  compression method              2 bytes
-     *  12-13  last mod file time              2 bytes
-     *  14-15  last mod file date              2 bytes
-     *  16-19  crc-32                          4 bytes
-     *  20-23  compressed size                 4 bytes
-     *  24-27  uncompressed size               4 bytes
-     *  28-29  filename length                 2 bytes
-     *  30-31  extra field length              2 bytes
-     *  32-33  file comment length             2 bytes
-     *  34-35  disk number start               2 bytes
-     *  36-37  internal file attributes        2 bytes
-     *  38-41  external file attributes        4 bytes
-     *  42-45  relative offset of local header 4 bytes
-     *
-     *  46-??  filename (variable size)
-     *   ?- ?  extra field (variable size)
-     *   ?- ?  file comment (variable size)
-     */ 
-    
-if (!
+        free (filecomment);
+      return prev;
+    }
+  pos = &data[offset];         /* jump */
+  
+    /* we should now be at the begining of the central directory structure */ 
+    
+    /* from appnote.txt and appnote.iz (mostly)
+     *
+     *   0- 3  central file header signature   4 bytes  (0x02014b50)
+     *   4- 5  version made by                 2 bytes
+     *   6- 7  version needed to extract       2 bytes
+     *   8- 9  general purpose bit flag        2 bytes
+     *  10-11  compression method              2 bytes
+     *  12-13  last mod file time              2 bytes
+     *  14-15  last mod file date              2 bytes
+     *  16-19  crc-32                          4 bytes
+     *  20-23  compressed size                 4 bytes
+     *  24-27  uncompressed size               4 bytes
+     *  28-29  filename length                 2 bytes
+     *  30-31  extra field length              2 bytes
+     *  32-33  file comment length             2 bytes
+     *  34-35  disk number start               2 bytes
+     *  36-37  internal file attributes        2 bytes
+     *  38-41  external file attributes        4 bytes
+     *  42-45  relative offset of local header 4 bytes
+     *
+     *  46-??  filename (variable size)
+     *   ?- ?  extra field (variable size)
+     *   ?- ?  file comment (variable size)
+     */ 
+    if (!
          (('P' == pos[0]) && ('K' == pos[1]) && (0x01 == pos[2])
           && (0x02 == pos[3])))
     {
-      
-#if DEBUG_EXTRACT_ZIP
+      
+#if DEBUG_EXTRACT_ZIP
         fprintf (stderr,
-                 
-"Did not find central directory structure signature. offset: %i\n",
-                 
-offset);
-      
-#endif  /* 
- */
+                 "Did not find central directory structure signature. offset: 
%i\n",
+                 offset);
+      
+#endif  /*  */
         if (filecomment != NULL)
-        
-free (filecomment);
-      
-return prev;
-    
-}
-  
-
-start = NULL;
-  
-info = NULL;
-  
+        free (filecomment);
+      return prev;
+    }
+  start = NULL;
+  info = NULL;
+  
   do
     {                           /* while ( (0x01==pos[2])&&(0x02==pos[3]) ) */
-      
-entry_count++;           /* check to make sure we found everything at the end 
*/
-      
-
-name_length = pos[28] + (pos[29] << 8);
-      
-extra_length = pos[30] + (pos[31] << 8);
-      
-comment_length = pos[32] + (pos[33] << 8);
-      
-
-if (name_length + extra_length + comment_length + offset + 46 > size)
+      entry_count++;           /* check to make sure we found everything at 
the end */
+      name_length = pos[28] + (pos[29] << 8);
+      extra_length = pos[30] + (pos[31] << 8);
+      comment_length = pos[32] + (pos[33] << 8);
+      if (name_length + extra_length + comment_length + offset + 46 > size)
         {
-          
-            /* ok, invalid, abort! */ 
+          
+            /* ok, invalid, abort! */ 
             break;
-        
-}
-      
-
-#if DEBUG_EXTRACT_ZIP
-        fprintf (stderr, 
-"Found filename length %i  Comment length: %i\n",
-                 
-name_length, 
-comment_length);
-      
-#endif  /* 
- */
-        
-        /* yay, finally get filenames */ 
+        }
+      
+#if DEBUG_EXTRACT_ZIP
+        fprintf (stderr, "Found filename length %i  Comment length: %i\n",
+                 name_length, comment_length);
+      
+#endif  /*  */
+        
+        /* yay, finally get filenames */ 
         if (start == NULL)
         {
-          
-start = malloc (sizeof (zip_entry));
-          
-start->next = NULL;
-          
-info = start;
-        
-}
+          start = malloc (sizeof (zip_entry));
+          start->next = NULL;
+          info = start;
+        }
       else
         {
-          
-info->next = malloc (sizeof (zip_entry));
-          
-info = info->next;
-          
-info->next = NULL;
-        
-}
-      
-info->filename = malloc (name_length + 1);
-      
-info->comment = malloc (comment_length + 1);
-      
-
-        /* (strings in zip files are not null terminated) */ 
-        memcpy (info->filename, 
-&pos[46], 
-name_length);
-      
-info->filename[name_length] = '\0';
-      
-memcpy (info->comment, 
-&pos[46 + name_length + extra_length],
-               
-comment_length);
-      
-info->comment[comment_length] = '\0';
-      
-
-#if DEBUG_EXTRACT_ZIP
-        fprintf (stderr, 
-"Found file %s, Comment: %s\n", 
-info->filename,
-                 
-info->comment);
-      
-#endif  /* 
- */
-        
-offset += 46 + name_length + extra_length + comment_length;
-      
-pos = &data[offset];
-      
-
-        /* check for next header entry (0x02014b50) or (0x06054b50) if at end 
*/ 
+          info->next = malloc (sizeof (zip_entry));
+          info = info->next;
+          info->next = NULL;
+        }
+      info->filename = malloc (name_length + 1);
+      info->comment = malloc (comment_length + 1);
+      
+        /* (strings in zip files are not null terminated) */ 
+        memcpy (info->filename, &pos[46], name_length);
+      info->filename[name_length] = '\0';
+      memcpy (info->comment, &pos[46 + name_length + extra_length],
+               comment_length);
+      info->comment[comment_length] = '\0';
+      
+#if DEBUG_EXTRACT_ZIP
+        fprintf (stderr, "Found file %s, Comment: %s\n", info->filename,
+                 info->comment);
+      
+#endif  /*  */
+        offset += 46 + name_length + extra_length + comment_length;
+      pos = &data[offset];
+      
+        /* check for next header entry (0x02014b50) or (0x06054b50) if at end 
*/ 
         if (('P' != pos[0]) && ('K' != pos[1]))
         {
-          
-#if DEBUG_EXTRACT_ZIP
+          
+#if DEBUG_EXTRACT_ZIP
             fprintf (stderr,
-                     
-"Did not find next header in central directory.\n");
-          
-#endif  /* 
- */
+                     "Did not find next header in central directory.\n");
+          
+#endif  /*  */
             info = start;
-          
-while (info != NULL)
+          while (info != NULL)
             {
-              
-start = info->next;
-              
-free (info->filename);
-              
-free (info->comment);
-              
-free (info);
-              
-info = start;
-            
-}
-          
-if (filecomment != NULL)
-            
-free (filecomment);
-          
-return prev;
-        
-}
-    
-
-}
+              start = info->next;
+              free (info->filename);
+              free (info->comment);
+              free (info);
+              info = start;
+            }
+          if (filecomment != NULL)
+            free (filecomment);
+          return prev;
+        }
+    }
   while ((0x01 == pos[2]) && (0x02 == pos[3]));
-  
-
-    /* end list */ 
-    
-
-    /* TODO: should this return an error? indicates corrupt zipfile (or
-       disk missing in middle of multi-disk)? */ 
+  
+    /* end list */ 
+    
+    /* TODO: should this return an error? indicates corrupt zipfile (or
+       disk missing in middle of multi-disk)? */ 
     if (entry_count != entry_total)
     {
-      
-#if DEBUG_EXTRACT_ZIP
+      
+#if DEBUG_EXTRACT_ZIP
         fprintf (stderr,
-                 
-"WARNING: Did not find all of the zipfile entries that we should have.\n");
-      
-#endif  /* 
- */
+                 "WARNING: Did not find all of the zipfile entries that we 
should have.\n");
+      
+#endif  /*  */
     }
-  
-
-    /* I'm only putting this in the else clause so that keyword has a local 
scope */ 
-    keyword 
- = malloc (sizeof (EXTRACTOR_KeywordList));
-  
-keyword->next = prev;
-  
-keyword->keyword = strdup ("application/zip");
-  
-keyword->keywordType = EXTRACTOR_MIMETYPE;
-  
-prev = keyword;
-  
-
-if (filecomment != NULL)
+  
+    /* I'm only putting this in the else clause so that keyword has a local 
scope */ 
+    keyword  = malloc (sizeof (EXTRACTOR_KeywordList));
+  keyword->next = prev;
+  keyword->keyword = strdup ("application/zip");
+  keyword->keywordType = EXTRACTOR_MIMETYPE;
+  prev = keyword;
+  if (filecomment != NULL)
     {
-      
-EXTRACTOR_KeywordList * kw 
- = malloc (sizeof (EXTRACTOR_KeywordList));
-      
-kw->next = prev;
-      
-kw->keyword = strdup (filecomment);
-      
-kw->keywordType = EXTRACTOR_COMMENT;
-      
-prev = kw;
-      
-free (filecomment);
-    
-}
-  
-
-    /* if we've gotten to here then there is at least one zip entry (see 
get_zipinfo call above) */ 
-    /* note: this free()'s the info list as it goes */ 
+      EXTRACTOR_KeywordList * kw  = malloc (sizeof (EXTRACTOR_KeywordList));
+      kw->next = prev;
+      kw->keyword = strdup (filecomment);
+      kw->keywordType = EXTRACTOR_COMMENT;
+      prev = kw;
+      free (filecomment);
+    }
+  
+    /* if we've gotten to here then there is at least one zip entry (see 
get_zipinfo call above) */ 
+    /* note: this free()'s the info list as it goes */ 
     info = start;
-  
-while (NULL != info)
+  while (NULL != info)
     {
-      
-if (info->filename != NULL)
+      if (info->filename != NULL)
         {
-          
-if (strlen (info->filename))
+          if (strlen (info->filename))
             {
-              
-EXTRACTOR_KeywordList * keyword =
+              EXTRACTOR_KeywordList * keyword =
                 malloc (sizeof (EXTRACTOR_KeywordList));
-              
-keyword->next = prev;
-              
-keyword->keyword = strdup (info->filename);
-              
-keyword->keywordType = EXTRACTOR_FILENAME;
-              
-prev = keyword;
-            
-}
-          
-free (info->filename);
-        
-}
-      
-if (strlen (info->comment))
+              keyword->next = prev;
+              keyword->keyword = strdup (info->filename);
+              keyword->keywordType = EXTRACTOR_FILENAME;
+              prev = keyword;
+            }
+          free (info->filename);
+        }
+      if (strlen (info->comment))
         {
-          
-EXTRACTOR_KeywordList * keyword =
+          EXTRACTOR_KeywordList * keyword =
             malloc (sizeof (EXTRACTOR_KeywordList));
-          
-keyword->next = prev;
-          
-keyword->keyword = strdup (info->comment);
-          
-keyword->keywordType = EXTRACTOR_COMMENT;
-          
-prev = keyword;
-        
+          keyword->next = prev;
+          keyword->keyword = strdup (info->comment);
+          keyword->keywordType = EXTRACTOR_COMMENT;
+          prev = keyword;
+        }
+      if (info->comment != NULL)
+        free (info->comment);
+      tmp = info;
+      info = info->next;
+      free (tmp);
+    }
+  return prev;
 }
-      
-if (info->comment != NULL)
-        
-free (info->comment);
-      
-tmp = info;
-      
-info = info->next;
-      
-free (tmp);
-    
-}
-  
-return prev;
-
-}
 
-
+





reply via email to

[Prev in Thread] Current Thread [Next in Thread]