diff --git a/doc/pactree.8.txt b/doc/pactree.8.txt
index 57a91cb..296d04e 100644
--- a/doc/pactree.8.txt
+++ b/doc/pactree.8.txt
@@ -64,6 +64,10 @@ Options
*\--debug*::
Print log messages produced by libalpm.
+*\--gpgdir
*::
+ Specify an alternate GnuPG directory for verifying database signatures
+ (default is /etc/pacman.d/gnupg).
+
See Also
--------
diff --git a/src/Makefile.am b/src/Makefile.am
index 8d33be8..eef0590 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -7,6 +7,7 @@ DIST_SUBDIRS = $(SUBDIRS)
# paths set at make time
conffile = ${sysconfdir}/pacman.conf
dbpath = ${localstatedir}/lib/pacman/
+gpgdir = ${sysconfdir}/pacman.d/gnupg/
bin_SCRIPTS = \
$(OURSCRIPTS)
@@ -82,7 +83,8 @@ endif
AM_CPPFLAGS = \
-DLOCALEDIR=\"@localedir@\" \
-DCONFFILE=\"$(conffile)\" \
- -DDBPATH=\"$(dbpath)\"
+ -DDBPATH=\"$(dbpath)\" \
+ -DGPGDIR=\"$(gpgdir)\"
AM_CFLAGS = \
-pedantic \
diff --git a/src/pactree.c b/src/pactree.c
index feac956..5bc0032 100644
--- a/src/pactree.c
+++ b/src/pactree.c
@@ -106,7 +106,8 @@ static struct color_choices no_color = {
/* long operations */
enum {
OP_CONFIG = 1000,
- OP_DEBUG
+ OP_DEBUG,
+ OP_GPGDIR
};
/* globals */
@@ -125,6 +126,7 @@ static int searchsyncs = 0;
static int debug = 0;
static const char *dbpath = DBPATH;
static const char *configfile = CONFFILE;
+static const char *gpgdir = GPGDIR;
void cb_log(alpm_loglevel_t level, const char *fmt, va_list args)
{
@@ -253,7 +255,8 @@ static void usage(void)
" -u, --unique show dependencies with no duplicates (implies -l)\n"
" -v, --version display the version\n"
" --config set an alternate configuration file\n"
- " --debug display debug messages\n");
+ " --debug display debug messages\n"
+ " --gpgdir set an alternate home directory for GnuPG\n");
}
static void version(void)
@@ -281,6 +284,8 @@ static int parse_options(int argc, char *argv[])
{"config", required_argument, 0, OP_CONFIG},
{"debug", no_argument, 0, OP_DEBUG},
+ {"gpgdir", required_argument, 0, OP_GPGDIR},
+
{0, 0, 0, 0}
};
@@ -301,6 +306,9 @@ static int parse_options(int argc, char *argv[])
case OP_DEBUG:
debug = 1;
break;
+ case OP_GPGDIR:
+ gpgdir = optarg;
+ break;
case 'a':
style = &graph_default;
break;
@@ -539,6 +547,9 @@ int main(int argc, char *argv[])
alpm_option_set_logcb(handle, cb_log);
}
+ /* no need to fail on error here */
+ alpm_option_set_gpgdir(handle, gpgdir);
+
if(searchsyncs) {
if(register_syncs() != 0) {
cleanup(1);