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 <[email protected]>
> ---
>  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
> 
> 

Reply via email to