gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r2148 - Extractor/src/main


From: grothoff
Subject: [GNUnet-SVN] r2148 - Extractor/src/main
Date: Mon, 26 Sep 2005 07:21:58 -0700 (PDT)

Author: grothoff
Date: 2005-09-26 07:21:56 -0700 (Mon, 26 Sep 2005)
New Revision: 2148

Modified:
   Extractor/src/main/extract.c
   Extractor/src/main/extractor.c
Log:
better error handling

Modified: Extractor/src/main/extract.c
===================================================================
--- Extractor/src/main/extract.c        2005-09-26 13:55:03 UTC (rev 2147)
+++ Extractor/src/main/extract.c        2005-09-26 14:21:56 UTC (rev 2148)
@@ -600,11 +600,17 @@
            _("%% BiBTeX file\n"));
   for (i = optind; i < argc; i++)
     {
-      if (0 != ACCESS(argv[i], R_OK)) {
+      errno = 0;
+      keywords = EXTRACTOR_getKeywords (extractors, argv[i]);
+      if (0 != errno) {
+       if (verbose == YES) {
+         fprintf(stderr, 
+                 "%s: %s: %s\n",
+                 argv[0], argv[i], strerror(errno));
+       }
        ret = 1;
        continue;
       }
-      keywords = EXTRACTOR_getKeywords (extractors, argv[i]);
       if (duplicates != -1 || bibtex == YES)
        keywords = EXTRACTOR_removeDuplicateKeywords (keywords, duplicates);
       if (verbose == YES && bibtex == NO)

Modified: Extractor/src/main/extractor.c
===================================================================
--- Extractor/src/main/extractor.c      2005-09-26 13:55:03 UTC (rev 2147)
+++ Extractor/src/main/extractor.c      2005-09-26 14:21:56 UTC (rev 2148)
@@ -883,6 +883,7 @@
   void * buffer;
   struct stat fstatbuf;
   size_t size;
+  int eno;
 
 #ifdef O_LARGEFILE
   file = fileopen(filename, O_RDONLY | O_LARGEFILE);
@@ -904,17 +905,18 @@
   if (size > MAX_READ)
     size = MAX_READ; /* do not mmap/read more than 1 GB! */
   buffer = MMAP(NULL, size, PROT_READ, MAP_PRIVATE, file, 0);
-  close(file);
-  if ( (buffer == NULL) || (buffer == (void *) -1) )
+  if ( (buffer == NULL) || (buffer == (void *) -1) ) {
+    eno = errno;
+    close(file);
+    errno = eno;
     return NULL;
+  }
   result = getKeywords(extractor,
                       filename,
                       buffer,
                       size);
-  if (size > 0)
-    MUNMAP (buffer, size);
-  else
-    free(buffer);
+  MUNMAP (buffer, size);
+  close(file);
   return result;
 }
 





reply via email to

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