diff options
author | Allan McRae <allan@archlinux.org> | 2009-01-02 19:12:22 +1000 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2009-01-02 23:52:32 -0600 |
commit | a73ad4f0e3981acab7234e4b17a08a52bd273ab9 (patch) | |
tree | 6fea0afe2a4cf4fc57b68bc89fd816f2573ebf0c /lib/libalpm/add.c | |
parent | b3169a5687bfc02fd512f1a1b5f83dfe00bbce7c (diff) | |
download | pacman-a73ad4f0e3981acab7234e4b17a08a52bd273ab9.tar.xz |
Separate local db directory creation and db write
Changelogs and install files were getting extracted into the local
db folder before it was manually created. This created issues for
uses with 0077 umasks and was highlighted with the new sudo handling
of umasks (FS#12263).
This moves the local db creation to its own function which is called
before the start of package archive extraction. Also, added a check
that the folder is actually created.
Signed-off-by: Allan McRae <allan@archlinux.org>
[Dan: rename to _alpm_db_prepare()]
Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'lib/libalpm/add.c')
-rw-r--r-- | lib/libalpm/add.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/libalpm/add.c b/lib/libalpm/add.c index eef7aab1..1e8ec9f2 100644 --- a/lib/libalpm/add.c +++ b/lib/libalpm/add.c @@ -696,6 +696,16 @@ static int commit_single_pkg(pmpkg_t *newpkg, int pkg_current, int pkg_count, } } + /* prepare directory for database entries so permission are correct after + changelog/install script installation (FS#12263) */ + if(_alpm_db_prepare(db, newpkg)) { + alpm_logaction("error: could not create database entry %s-%s\n", + alpm_pkg_get_name(newpkg), alpm_pkg_get_version(newpkg)); + pm_errno = PM_ERR_DB_WRITE; + ret = -1; + goto cleanup; + } + if(!(trans->flags & PM_TRANS_FLAG_DBONLY)) { struct archive *archive; struct archive_entry *entry; |