]> err.no Git - dpkg/commitdiff
do not read a .list or statoverride file if they are empty
authorWichert Akkerman <wakkerma@debian.org>
Sun, 22 Apr 2001 14:43:46 +0000 (14:43 +0000)
committerWichert Akkerman <wakkerma@debian.org>
Sun, 22 Apr 2001 14:43:46 +0000 (14:43 +0000)
ChangeLog
main/filesdb.c

index 4e853ff37bf0cc75df7db769920f0dc311780a9d..80a488d79dd98dbed8ab75bfeeb490481ba0e743 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sun Apr 22 16:42:22 CEST 2001 Wichert Akkerman <wakkerma@debian.org>
+
+  * main/filesdb.c: don't read a statoverride or .list file if they
+    are 0 bytes
+
 Sun Apr 22 02:46:06 CDT 2001 Adam Heath <doogie@debian.org>
 
   * dpkg-deb/build.c, dpkg-deb/extract.c, dpkg-deb/main.c, lib/mlib.c(*),
index 6b4927c63de1aea6663ef6cbfdf47a3916503d38..2e40aba36d60e40d2479bfaa6b3e1ac54f4e0fcb 100644 (file)
@@ -139,30 +139,33 @@ void ensure_packagefiles_available(struct pkginfo *pkg) {
   
    if(fstat(fd, &stat_buf))
      ohshite("unable to stat files list file for package `%.250s'",pkg->name);
-   loaded_list = nfmalloc(stat_buf.st_size);
-   loaded_list_end = loaded_list + stat_buf.st_size;
 
-  fd_buf_copy(fd, loaded_list, stat_buf.st_size, _("files list for package `%.250s'"), pkg->name);
-
-  lendp= &pkg->clientdata->files;
-  thisline = loaded_list;
-  while (thisline < loaded_list_end) {
-    if (!(ptr = memchr(thisline, '\n', loaded_list_end - thisline))) 
-      ohshit("files list file for package `%.250s' is missing final newline",pkg->name);
-    /* where to start next time around */
-    nextline = ptr + 1;
-    /* strip trailing "/" */
-    if (ptr > thisline && ptr[-1] == '/') ptr--;
-    /* add the file to the list */
-    if (ptr == thisline)
-      ohshit(_("files list file for package `%.250s' contains empty filename"),pkg->name);
-    *ptr = 0;
-    newent= nfmalloc(sizeof(struct fileinlist));
-    newent->namenode= findnamenode(thisline, fnn_nocopy);
-    newent->next= 0;
-    *lendp= newent;
-    lendp= &newent->next;
-    thisline = nextline;
+   if (stat_buf.st_size) {
+     loaded_list = nfmalloc(stat_buf.st_size);
+     loaded_list_end = loaded_list + stat_buf.st_size;
+  
+    fd_buf_copy(fd, loaded_list, stat_buf.st_size, _("files list for package `%.250s'"), pkg->name);
+  
+    lendp= &pkg->clientdata->files;
+    thisline = loaded_list;
+    while (thisline < loaded_list_end) {
+      if (!(ptr = memchr(thisline, '\n', loaded_list_end - thisline))) 
+        ohshit("files list file for package `%.250s' is missing final newline",pkg->name);
+      /* where to start next time around */
+      nextline = ptr + 1;
+      /* strip trailing "/" */
+      if (ptr > thisline && ptr[-1] == '/') ptr--;
+      /* add the file to the list */
+      if (ptr == thisline)
+        ohshit(_("files list file for package `%.250s' contains empty filename"),pkg->name);
+      *ptr = 0;
+      newent= nfmalloc(sizeof(struct fileinlist));
+      newent->namenode= findnamenode(thisline, fnn_nocopy);
+      newent->next= 0;
+      *lendp= newent;
+      lendp= &newent->next;
+      thisline = nextline;
+    }
   }
   pop_cleanup(ehflag_normaltidy); /* fd= open() */
   if (close(fd))
@@ -336,6 +339,12 @@ void ensure_statoverrides(void) {
   if (statoverridefile) fclose(statoverridefile);
   statoverridefile= file;
 
+  /* If the statoverride list is empty we don't need to bother reading it. */
+  if (!stab2.st_size) {
+    onerr_abort--;
+    return;
+  }
+
   loaded_list = nfmalloc(stab2.st_size);
   loaded_list_end = loaded_list + stab2.st_size;