0002-db-keep-packages-with-no-files-with-installed-status.patch 1.53 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
From 3f9fe4c28be7987bd404f06e27ed03aafd8e8b52 Mon Sep 17 00:00:00 2001
From: Timo Teras <timo.teras@iki.fi>
Date: Fri, 25 Dec 2009 14:14:40 +0200
Subject: [PATCH 2/2] db: keep packages with no files with installed status

got broke few commits ago when apk_pkg_installed() call was
moved to happen after the package name has been read.
---
 src/database.c |   16 ++++++++++------
 1 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/src/database.c b/src/database.c
index 5118f5c..2fcb275 100644
--- a/src/database.c
+++ b/src/database.c
@@ -587,17 +587,21 @@ int apk_db_index_read(struct apk_database *db, struct apk_bstream *bs, int repo)
 		}
 
 		/* Standard index line? */
-		if (apk_pkg_add_info(db, pkg, field, l) == 0)
+		if (apk_pkg_add_info(db, pkg, field, l) == 0) {
+		        if (repo == -1 && field == 'S') {
+                                /* Instert to installed database; this needs to
+                                 * happen after package name has been read, but
+                                 * before first FDB entry. */
+                                ipkg = apk_pkg_install(db, pkg);
+                                diri_node = hlist_tail_ptr(&ipkg->owned_dirs);
+		        }
 			continue;
+                }
 
-		if (repo != -1) {
+		if (repo != -1 || ipkg == NULL) {
 			apk_error("Invalid index entry '%c'", field);
 			return -1;
 		}
-		if (ipkg == NULL) {
-			ipkg = apk_pkg_install(db, pkg);
-			diri_node = hlist_tail_ptr(&ipkg->owned_dirs);
-		}
 
 		/* Check FDB special entries */
 		switch (field) {
-- 
1.6.5.7