diff options
author | Paul Spooren <mail@aparcar.org> | 2020-10-03 12:31:56 -1000 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2020-10-06 10:02:21 +0300 |
commit | dac30d50497214c8722a57ee1ae8d3c369babe38 (patch) | |
tree | 6670abe2fc73e913d8cb9679115e786c0d8030c1 /src | |
parent | 7c2a3657fb4b6a1a8f5321e418a0a6baf10627e1 (diff) | |
download | apk-tools-dac30d50497214c8722a57ee1ae8d3c369babe38.tar.gz apk-tools-dac30d50497214c8722a57ee1ae8d3c369babe38.tar.bz2 apk-tools-dac30d50497214c8722a57ee1ae8d3c369babe38.tar.xz apk-tools-dac30d50497214c8722a57ee1ae8d3c369babe38.zip |
database: automatically create missing cache dir
On some systems the `/var/` dir is mounted in a tmpfs which is reseted
after each reboot. For that reason no post-install script can handle the
creation of the cache dir at `/var/cache/apk`.
Check on database opnening if the folder is available, if not create it.
Fixes #10715
Signed-off-by: Paul Spooren <mail@aparcar.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/database.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/database.c b/src/database.c index e064ca5..e5d8b86 100644 --- a/src/database.c +++ b/src/database.c @@ -1660,6 +1660,12 @@ int apk_db_open(struct apk_database *db, struct apk_db_options *dbopts) if (fd >= 0) close(fd); db->cache_dir = apk_static_cache_dir; db->cache_fd = openat(db->root_fd, db->cache_dir, O_RDONLY | O_CLOEXEC); + if (db->cache_fd < 0) { + mkdirat(db->root_fd, "var/cache", 0755); + mkdirat(db->root_fd, "var/cache/apk", 0755); + db->cache_fd = openat(db->root_fd, db->cache_dir, O_RDONLY | O_CLOEXEC); + if (db->cache_fd < 0) goto ret_errno; + } } db->keys_fd = openat(db->root_fd, |