diff options
author | Dan McGee <dan@archlinux.org> | 2009-01-03 07:18:22 +0100 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2009-01-03 07:18:22 +0100 |
commit | a30bf868ca4cce5464f7e4aa55cd7e7d4eade9a2 (patch) | |
tree | b1bf8a4c75855b7a3a61861ad20ff690fb5ad460 /lib/libalpm/be_files.c | |
parent | 1cc8ad6112ed07a71f356a6bb0f06f117b36b3b2 (diff) | |
parent | a73ad4f0e3981acab7234e4b17a08a52bd273ab9 (diff) | |
download | pacman-a30bf868ca4cce5464f7e4aa55cd7e7d4eade9a2.tar.gz pacman-a30bf868ca4cce5464f7e4aa55cd7e7d4eade9a2.tar.xz |
Merge branch 'maint'
Diffstat (limited to 'lib/libalpm/be_files.c')
-rw-r--r-- | lib/libalpm/be_files.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/lib/libalpm/be_files.c b/lib/libalpm/be_files.c index b9ff6464..31b23172 100644 --- a/lib/libalpm/be_files.c +++ b/lib/libalpm/be_files.c @@ -652,6 +652,26 @@ error: return(-1); } +int _alpm_db_prepare(pmdb_t *db, pmpkg_t *info) +{ + mode_t oldmask; + int retval = 0; + char *pkgpath = NULL; + + oldmask = umask(0000); + + pkgpath = get_pkgpath(db, info); + + if((retval = mkdir(pkgpath, 0755)) != 0) { + _alpm_log(PM_LOG_ERROR, _("could not create directory %s: %s\n"), pkgpath, strerror(errno)); + } + + free(pkgpath); + umask(oldmask); + + return(retval); +} + int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq) { FILE *fp = NULL; @@ -670,10 +690,8 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq) pkgpath = get_pkgpath(db, info); - oldmask = umask(0000); - mkdir(pkgpath, 0755); /* make sure we have a sane umask */ - umask(0022); + oldmask = umask(0022); if(strcmp(db->treename, "local") == 0) { local = 1; |