diff options
author | Timo Teras <timo.teras@iki.fi> | 2009-12-25 14:14:40 +0200 |
---|---|---|
committer | Timo Teras <timo.teras@iki.fi> | 2009-12-25 14:15:10 +0200 |
commit | 3f9fe4c28be7987bd404f06e27ed03aafd8e8b52 (patch) | |
tree | 75104f3369666aaf7a1f3043eca486b27ca09c1e /src | |
parent | d67ee300b6cbd9deaaa8c5e506e836e253f7b77d (diff) | |
download | apk-tools-3f9fe4c28be7987bd404f06e27ed03aafd8e8b52.tar.gz apk-tools-3f9fe4c28be7987bd404f06e27ed03aafd8e8b52.tar.bz2 apk-tools-3f9fe4c28be7987bd404f06e27ed03aafd8e8b52.tar.xz apk-tools-3f9fe4c28be7987bd404f06e27ed03aafd8e8b52.zip |
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.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) { |