diff options
author | Allan McRae <allan@archlinux.org> | 2010-10-11 13:47:18 +1000 |
---|---|---|
committer | Allan McRae <allan@archlinux.org> | 2010-10-14 13:17:39 +1000 |
commit | 448f78c067955d617c302f322a2dc6507cb6eb13 (patch) | |
tree | ecd74abe4fe689dc39589475e6f0782ca4e8f899 /lib/libalpm/be_local.c | |
parent | 5717c7d508db463ec178a83e852dc5e89212bd15 (diff) | |
download | pacman-448f78c067955d617c302f322a2dc6507cb6eb13.tar.xz |
Restrict visibility of checkdbdir and get_pkgpath
These functions are only needed by be_local and were only promoted
to db.{h,c} as part of the splitting of handling the local and sync
dbs. Move them into be_local.c and make them static again.
Signed-off-by: Allan McRae <allan@archlinux.org>
Diffstat (limited to 'lib/libalpm/be_local.c')
-rw-r--r-- | lib/libalpm/be_local.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/libalpm/be_local.c b/lib/libalpm/be_local.c index 05bd47cf..e97c0055 100644 --- a/lib/libalpm/be_local.c +++ b/lib/libalpm/be_local.c @@ -322,6 +322,25 @@ static struct pkg_operations local_pkg_ops = { .changelog_close = _cache_changelog_close, }; +static int checkdbdir(pmdb_t *db) +{ + struct stat buf; + const char *path = _alpm_db_path(db); + + if(stat(path, &buf) != 0) { + _alpm_log(PM_LOG_DEBUG, "database dir '%s' does not exist, creating it\n", + path); + if(_alpm_makepath(path) != 0) { + RET_ERR(PM_ERR_SYSTEM, -1); + } + } else if(!S_ISDIR(buf.st_mode)) { + _alpm_log(PM_LOG_WARNING, _("removing invalid database: %s\n"), path); + if(unlink(path) != 0 || _alpm_makepath(path) != 0) { + RET_ERR(PM_ERR_SYSTEM, -1); + } + } + return(0); +} static int is_dir(const char *path, struct dirent *entry) { @@ -411,6 +430,21 @@ int _alpm_local_db_populate(pmdb_t *db) return(count); } +/* Note: the return value must be freed by the caller */ +static char *get_pkgpath(pmdb_t *db, pmpkg_t *info) +{ + size_t len; + char *pkgpath; + const char *dbpath; + + dbpath = _alpm_db_path(db); + len = strlen(dbpath) + strlen(info->name) + strlen(info->version) + 3; + MALLOC(pkgpath, len, RET_ERR(PM_ERR_MEMORY, NULL)); + sprintf(pkgpath, "%s%s-%s/", dbpath, info->name, info->version); + return(pkgpath); +} + + int _alpm_local_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq) { FILE *fp = NULL; |