[PATCH v2 1/2] pactree: Add --debug
Signed-off-by: Edward E <develinthedetail@gmail.com> --- Regarding colors, now cb_log() simply follows pacman's lead. Also changed from v1: re-ordered longopts in usage(), as well as OP_* getopt switch cases. I don't know how important alphabetized options are, hope it makes sense to do this now while I'm at it? doc/pactree.8.txt | 3 +++ src/pactree.c | 49 ++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/doc/pactree.8.txt b/doc/pactree.8.txt index b177788..57a91cb 100644 --- a/doc/pactree.8.txt +++ b/doc/pactree.8.txt @@ -61,6 +61,9 @@ Options *\--config <file>*:: Specify an alternate pacman configuration file. +*\--debug*:: + Print log messages produced by libalpm. + See Also -------- diff --git a/src/pactree.c b/src/pactree.c index a862f9e..feac956 100644 --- a/src/pactree.c +++ b/src/pactree.c @@ -78,6 +78,8 @@ struct color_choices { const char *branch2; const char *leaf1; const char *leaf2; + const char *error; + const char *warning; const char *off; }; @@ -86,6 +88,8 @@ static struct color_choices use_color = { "\033[0;37m", /* white */ "\033[1;32m", /* bold green */ "\033[0;32m", /* green */ + "\033[1;31m", /* bold red */ + "\033[1;33m", /* bold yellow */ "\033[0m" }; @@ -94,12 +98,15 @@ static struct color_choices no_color = { "", "", "", + "", + "", "" }; /* long operations */ enum { - OP_CONFIG = 1000 + OP_CONFIG = 1000, + OP_DEBUG }; /* globals */ @@ -115,9 +122,32 @@ static int max_depth = -1; static int reverse = 0; static int unique = 0; static int searchsyncs = 0; +static int debug = 0; static const char *dbpath = DBPATH; static const char *configfile = CONFFILE; +void cb_log(alpm_loglevel_t level, const char *fmt, va_list args) +{ + switch(level) { + case ALPM_LOG_ERROR: + fprintf(stderr, "%s%s%s", color->error, "error: ", + color->off); + break; + case ALPM_LOG_WARNING: + fprintf(stderr, "%s%s%s", color->warning, "warning: ", + color->off); + break; + case ALPM_LOG_DEBUG: + fprintf(stderr, "debug: "); + break; + case ALPM_LOG_FUNCTION: + fprintf(stderr, "function: "); + break; + } + + vfprintf(stderr, fmt, args); +} + /* Trim whitespace and newlines from a string */ static size_t strtrim(char *str) @@ -222,7 +252,8 @@ static void usage(void) " -s, --sync search sync databases instead of local\n" " -u, --unique show dependencies with no duplicates (implies -l)\n" " -v, --version display the version\n" - " --config <path> set an alternate configuration file\n"); + " --config <path> set an alternate configuration file\n" + " --debug display debug messages\n"); } static void version(void) @@ -249,6 +280,7 @@ static int parse_options(int argc, char *argv[]) {"version", no_argument, 0, 'v'}, {"config", required_argument, 0, OP_CONFIG}, + {"debug", no_argument, 0, OP_DEBUG}, {0, 0, 0, 0} }; @@ -263,12 +295,15 @@ static int parse_options(int argc, char *argv[]) } switch(opt) { - case 'a': - style = &graph_default; - break; case OP_CONFIG: configfile = optarg; break; + case OP_DEBUG: + debug = 1; + break; + case 'a': + style = &graph_default; + break; case 'b': dbpath = optarg; break; @@ -500,6 +535,10 @@ int main(int argc, char *argv[]) cleanup(1); } + if(debug) { + alpm_option_set_logcb(handle, cb_log); + } + if(searchsyncs) { if(register_syncs() != 0) { cleanup(1); -- 2.24.1
Addresses https://github.com/msys2/MSYS2-packages/issues/1720 Signed-off-by: Edward E <develinthedetail@gmail.com> --- Anticipating that someone might need to override the default, this updated patch also adds a --gpgdir option. Both patches tested on msys2/Win10. doc/pactree.8.txt | 4 ++++ src/Makefile.am | 4 +++- src/pactree.c | 15 +++++++++++++-- 3 files changed, 20 insertions(+), 3 deletions(-) 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 <dir>*:: + 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 <path> set an alternate configuration file\n" - " --debug display debug messages\n"); + " --debug display debug messages\n" + " --gpgdir <path> 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); -- 2.24.1
Excerpts from Edward E's message of January 7, 2020 2:16:
Signed-off-by: Edward E <develinthedetail@gmail.com> ---
Regarding colors, now cb_log() simply follows pacman's lead. Also changed from v1: re-ordered longopts in usage(), as well as OP_* getopt switch cases. I don't know how important alphabetized options are, hope it makes sense to do this now while I'm at it?
doc/pactree.8.txt | 3 +++ src/pactree.c | 49 ++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 47 insertions(+), 5 deletions(-)
Hey, Sorry for the delay, looks good, thanks! -- Sincerely, Johannes Löthberg :: SA0DEM
participants (2)
-
Edward E
-
Johannes Löthberg