db: rmdir() directories only on package purge
parent
0655699133
commit
c7ffc96a16
|
@ -113,7 +113,6 @@ static void apk_db_dir_put(struct apk_database *db, struct apk_db_dir *dir)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
db->installed.stats.dirs--;
|
db->installed.stats.dirs--;
|
||||||
rmdir(dir->dirname);
|
|
||||||
|
|
||||||
if (dir->parent != NULL)
|
if (dir->parent != NULL)
|
||||||
apk_db_dir_put(db, dir->parent);
|
apk_db_dir_put(db, dir->parent);
|
||||||
|
@ -190,7 +189,7 @@ static void apk_db_diri_set(struct apk_db_dir_instance *diri, mode_t mode,
|
||||||
diri->gid = gid;
|
diri->gid = gid;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void apk_db_diri_create(struct apk_db_dir_instance *diri)
|
static void apk_db_diri_mkdir(struct apk_db_dir_instance *diri)
|
||||||
{
|
{
|
||||||
if (diri->dir->refs == 1) {
|
if (diri->dir->refs == 1) {
|
||||||
mkdir(diri->dir->dirname, diri->mode);
|
mkdir(diri->dir->dirname, diri->mode);
|
||||||
|
@ -198,6 +197,13 @@ static void apk_db_diri_create(struct apk_db_dir_instance *diri)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void apk_db_diri_rmdir(struct apk_db_dir_instance *diri)
|
||||||
|
{
|
||||||
|
if (diri->dir->refs == 1) {
|
||||||
|
rmdir(diri->dir->dirname);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void apk_db_diri_free(struct apk_database *db,
|
static void apk_db_diri_free(struct apk_database *db,
|
||||||
struct apk_db_dir_instance *diri)
|
struct apk_db_dir_instance *diri)
|
||||||
{
|
{
|
||||||
|
@ -889,7 +895,7 @@ static int apk_db_install_archive_entry(void *_ctx,
|
||||||
ctx->file_diri_node = NULL;
|
ctx->file_diri_node = NULL;
|
||||||
|
|
||||||
apk_db_diri_set(diri, ae->mode & 0777, ae->uid, ae->gid);
|
apk_db_diri_set(diri, ae->mode & 0777, ae->uid, ae->gid);
|
||||||
apk_db_diri_create(diri);
|
apk_db_diri_mkdir(diri);
|
||||||
}
|
}
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
|
@ -914,6 +920,7 @@ static void apk_db_purge_pkg(struct apk_database *db,
|
||||||
|
|
||||||
db->installed.stats.files--;
|
db->installed.stats.files--;
|
||||||
}
|
}
|
||||||
|
apk_db_diri_rmdir(diri);
|
||||||
apk_db_dir_put(db, diri->dir);
|
apk_db_dir_put(db, diri->dir);
|
||||||
__hlist_del(dc, &pkg->owned_dirs.first);
|
__hlist_del(dc, &pkg->owned_dirs.first);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue