summaryrefslogtreecommitdiffstats
path: root/src/util/pactree.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/pactree.c')
-rw-r--r--src/util/pactree.c47
1 files changed, 13 insertions, 34 deletions
diff --git a/src/util/pactree.c b/src/util/pactree.c
index e9a2816e..1dee61bf 100644
--- a/src/util/pactree.c
+++ b/src/util/pactree.c
@@ -74,6 +74,7 @@ static struct color_choices no_color = {
};
/* globals */
+pmhandle_t *handle = NULL;
pmdb_t *db_local;
alpm_list_t *walked = NULL;
alpm_list_t *provisions = NULL;
@@ -87,33 +88,6 @@ int reverse = 0;
int unique = 0;
const char *dbpath = DBPATH;
-static int alpm_local_init(void)
-{
- int ret;
-
- ret = alpm_initialize();
- if(ret != 0) {
- return ret;
- }
-
- ret = alpm_option_set_root(ROOTDIR);
- if(ret != 0) {
- return ret;
- }
-
- ret = alpm_option_set_dbpath(dbpath);
- if(ret != 0) {
- return ret;
- }
-
- db_local = alpm_option_get_localdb();
- if(!db_local) {
- return 1;
- }
-
- return 0;
-}
-
static int parse_options(int argc, char *argv[])
{
int opt, option_index = 0;
@@ -196,7 +170,7 @@ static void cleanup(void)
{
alpm_list_free(walked);
alpm_list_free(provisions);
- alpm_release();
+ alpm_release(handle);
}
/* pkg provides provision */
@@ -340,22 +314,27 @@ static void walk_deps(pmpkg_t *pkg, int depth)
int main(int argc, char *argv[])
{
- int ret;
+ int ret = 0;
+ enum _pmerrno_t err;
const char *target_name;
pmpkg_t *pkg;
- ret = parse_options(argc, argv);
- if(ret != 0) {
+ if(parse_options(argc, argv) != 0) {
usage();
+ ret = 1;
goto finish;
}
- ret = alpm_local_init();
- if(ret != 0) {
- fprintf(stderr, "error: cannot initialize alpm: %s\n", alpm_strerrorlast());
+ handle = alpm_initialize(ROOTDIR, dbpath, &err);
+ if(!handle) {
+ fprintf(stderr, "error: cannot initialize alpm: %s\n",
+ alpm_strerror(err));
+ ret = 1;
goto finish;
}
+ db_local = alpm_option_get_localdb(handle);
+
/* we only care about the first non option arg for walking */
target_name = argv[optind];