summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimo Teras <timo.teras@iki.fi>2008-11-11 09:00:10 +0200
committerTimo Teras <timo.teras@iki.fi>2008-11-11 09:00:10 +0200
commitffa03a21d86f770a526e1d8b9bfa195fe09f344b (patch)
tree4ad54e620398b9485cf10c76d4c8ac4480a91559
parent791cf6f05bc71118925343528edd44fd4a671bb3 (diff)
downloadapk-tools-ffa03a21d86f770a526e1d8b9bfa195fe09f344b.tar.bz2
apk-tools-ffa03a21d86f770a526e1d8b9bfa195fe09f344b.tar.xz
db: remember empty .apks
-rw-r--r--TODO1
-rw-r--r--src/database.c8
2 files changed, 5 insertions, 4 deletions
diff --git a/TODO b/TODO
index a504e38..f31352e 100644
--- a/TODO
+++ b/TODO
@@ -1,4 +1,3 @@
-- Empty .APK is not remembered as installed
- Index/pkginfo reader: same field multiple times -> memleak
- Compress index and db files
diff --git a/src/database.c b/src/database.c
index a1c0300..15757ff 100644
--- a/src/database.c
+++ b/src/database.c
@@ -323,6 +323,9 @@ static int apk_db_write_fdb(struct apk_database *db, int fd)
n += apk_hexdump_format(sizeof(buf)-n, &buf[n],
APK_BLOB_BUF(pkg->csum));
buf[n++] = '\n';
+ if (write(fd, buf, n) != n)
+ return -1;
+ n = 0;
dir = NULL;
hlist_for_each_entry(file, c2, &pkg->owned_files, pkg_files_list) {
@@ -340,7 +343,8 @@ static int apk_db_write_fdb(struct apk_database *db, int fd)
"F%s\n",
file->filename);
- write(fd, buf, n);
+ if (write(fd, buf, n) != n)
+ return -1;
n = 0;
}
}
@@ -523,8 +527,6 @@ static int apk_db_write_config(struct apk_database *db)
void apk_db_close(struct apk_database *db)
{
- apk_db_write_config(db);
-
apk_hash_free(&db->available.names);
apk_hash_free(&db->available.packages);
apk_hash_free(&db->installed.dirs);