[PATCH 1/2] pactree: Add --debug

Johannes Löthberg johannes at kyriasis.com
Sun Jan 5 13:32:02 UTC 2020


Excerpts from Edward E's message of January 5, 2020 6:47:
> Signed-off-by: Edward E <develinthedetail at gmail.com>
> ---
> This code is basically borrowed from pacman; libalpm debug messages
> were crucially helpful for tracking down the `pactree -s` gpgdir bug.
>  doc/pactree.8.txt |  3 +++
>  src/pactree.c     | 47 ++++++++++++++++++++++++++++++++++++++++++++++-
>  2 files changed, 49 insertions(+), 1 deletion(-)
> 
> 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..8b77f05 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 *info;
>  	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;36m", /* bold cyan */
>  	"\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,38 @@ 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)
> +{
> +	const char *log_color = "";
> +	const char *log_title = "";
> +
> +	switch(level) {
> +		case ALPM_LOG_ERROR:
> +			log_color = color->error;
> +			log_title = "error: ";
> +			break;
> +		case ALPM_LOG_WARNING:
> +			log_color = color->error;
> +			log_title = "warning: ";
> +			break;

Warnings shouldn't look the same as errors.  Please make this "\033[1;33m" instead.


> +		case ALPM_LOG_DEBUG:
> +			log_color = color->info;
> +			log_title = "debug: ";
> +			break;
> +		case ALPM_LOG_FUNCTION:
> +			log_color = color->info;
> +			log_title = "function: ";
> +			break;

Please leave these uncolored, as making all debug log lines colorized 
doesn't really add anything, and makes the visual difference between 
output and logs smaller.


> +		}
> +
> +	fprintf(stderr, "%s%s%s", log_color, log_title, color->off);
> +	vfprintf(stderr, fmt, args);
> +}
> +
>  /* Trim whitespace and newlines from a string
>   */
>  static size_t strtrim(char *str)
> @@ -222,6 +258,7 @@ 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"
> +			"      --debug          display debug messages\n"
>  			"      --config <path>  set an alternate configuration file\n");
>  }
>  
> @@ -249,6 +286,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}
>  	};
>  
> @@ -269,6 +307,9 @@ static int parse_options(int argc, char *argv[])
>  			case OP_CONFIG:
>  				configfile = optarg;
>  				break;
> +			case OP_DEBUG:
> +				debug = 1;
> +				break;
>  			case 'b':
>  				dbpath = optarg;
>  				break;
> @@ -500,6 +541,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
> 

Other than that, it looks good.  Thanks!
-- 
Sincerely,
  Johannes Löthberg :: SA0DEM
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 1727 bytes
Desc: not available
URL: <https://lists.archlinux.org/pipermail/pacman-contrib/attachments/20200105/80b31b2d/attachment.sig>


More information about the pacman-contrib mailing list