summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTimo Teras <timo.teras@iki.fi>2009-12-25 14:14:40 +0200
committerTimo Teras <timo.teras@iki.fi>2009-12-25 14:15:10 +0200
commit3f9fe4c28be7987bd404f06e27ed03aafd8e8b52 (patch)
tree75104f3369666aaf7a1f3043eca486b27ca09c1e /src
parentd67ee300b6cbd9deaaa8c5e506e836e253f7b77d (diff)
downloadapk-tools-3f9fe4c28be7987bd404f06e27ed03aafd8e8b52.tar.bz2
apk-tools-3f9fe4c28be7987bd404f06e27ed03aafd8e8b52.tar.xz
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.
Diffstat (limited to 'src')
-rw-r--r--src/database.c16
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) {