[pacman-dev] [PATCH] pactree: Add "--config" option

Dave Reisner d at falconindy.com
Mon Oct 10 08:59:41 EDT 2011


On Mon, Oct 10, 2011 at 02:38:59PM +0200, Lukas Fleischer wrote:
> This allows for specifying an alternate configuration file path, similar
> to pacman's "--config" option.
> 
> Given that there is currently no other way to tell pactree to read from
> another configuration file (except for patching or symlinking), this
> seems totally sensible - even if there are plans to refactor and/or
> replace the standalone configuration file parser.
> 
> We do not define a short option for the sake of consistency with
> pacman's set of command line options.
> 

Shouldn't we complain if the config file isn't found now that we're
allowing a user specified location? As it stands, you can pass something
like:

  pactree --config /not/a/real/path foo

And pactree won't complain. If you actually add the -s flag to walk the
sync DBs, pactree will just tell you 'foo not found', which isn't really
very helpful. Maybe I'm just bitter after a weekend of fighting false
negatives from another tool...

dave

> Signed-off-by: Lukas Fleischer <archlinux at cryptocrack.de>
> ---
>  src/util/pactree.c |   18 +++++++++++++++---
>  1 files changed, 15 insertions(+), 3 deletions(-)
> 
> diff --git a/src/util/pactree.c b/src/util/pactree.c
> index 09fe101..5e98f79 100644
> --- a/src/util/pactree.c
> +++ b/src/util/pactree.c
> @@ -76,6 +76,11 @@ static struct color_choices no_color = {
>  	""
>  };
>  
> +/* long operations */
> +enum {
> +	OP_CONFIG = 1000
> +};
> +
>  /* globals */
>  alpm_handle_t *handle = NULL;
>  alpm_list_t *walked = NULL;
> @@ -90,6 +95,7 @@ int reverse = 0;
>  int unique = 0;
>  int searchsyncs = 0;
>  const char *dbpath = DBPATH;
> +const char *configfile = CONFFILE;
>  
>  #ifndef HAVE_STRNDUP
>  /* A quick and dirty implementation derived from glibc */
> @@ -154,7 +160,7 @@ static int register_syncs(void) {
>  	char line[LINE_MAX];
>  	const alpm_siglevel_t level = ALPM_SIG_DATABASE | ALPM_SIG_DATABASE_OPTIONAL;
>  
> -	fp = fopen(CONFFILE, "r");
> +	fp = fopen(configfile, "r");
>  	if(!fp) {
>  		return 1;
>  	}
> @@ -202,6 +208,8 @@ static int parse_options(int argc, char *argv[])
>  		{"reverse", no_argument,          0, 'r'},
>  		{"sync",    no_argument,          0, 'S'},
>  		{"unique",  no_argument,          0, 'u'},
> +
> +		{"config",  required_argument,    0, OP_CONFIG},
>  		{0, 0, 0, 0}
>  	};
>  
> @@ -211,6 +219,9 @@ static int parse_options(int argc, char *argv[])
>  		}
>  
>  		switch(opt) {
> +			case OP_CONFIG:
> +				configfile = optarg;
> +				break;
>  			case 'b':
>  				dbpath = optarg;
>  				break;
> @@ -263,11 +274,12 @@ static void usage(void)
>  			"  -c, --color          colorize output\n"
>  			"  -d, --depth <#>      limit the depth of recursion\n"
>  			"  -g, --graph          generate output for graphviz's dot\n"
> +			"  -h, --help           display this help message\n"
>  			"  -l, --linear         enable linear output\n"
>  			"  -r, --reverse        show reverse dependencies\n"
>  			"  -s, --sync           search sync DBs instead of local\n"
> -			"  -u, --unique         show dependencies with no duplicates (implies -l)\n\n"
> -			"  -h, --help           display this help message\n");
> +			"  -u, --unique         show dependencies with no duplicates (implies -l)\n"
> +			"      --config <path>  set an alternate configuration file\n");
>  }
>  
>  static void cleanup(void)
> -- 
> 1.7.7
> 
> 


More information about the pacman-dev mailing list