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 > >
