}
#endif
+#define DUP_CONFIG() \
+ *conf_file = xstrdup (optarg); \
+ break;
+
#define PRINT_HELP_EXIT() \
print_help (); \
exit (EXIT_SUCCESS);
process_opts (int argc, char **argv, char **conf_file)
{
int opt;
- while ((opt = getopt_long (argc, argv, "hV", long_opts, NULL)) != -1)
+ while ((opt = getopt_long (argc, argv, "c:hV", long_opts, NULL)) != -1)
{
switch (opt)
{
clean_all = true;
break;
case OPT_CONFIG:
- *conf_file = xstrdup (optarg);
- break;
+ DUP_CONFIG ();
case OPT_EXCLUDE_RANDOM:
opts_set |= OPT_EXCLUDE_RANDOM_SET;
opts_arg.exclude_random = xstrdup (optarg);
ABORT_TRACE ();
}
break;
+ case 'c':
+ DUP_CONFIG ();
case 'h':
PRINT_HELP_EXIT ();
case 'V':
static void
parse_conf (const char *conf_file, struct conf *config)
{
+ unsigned int cnt = 0;
char line[256 + 1];
FILE *conf;
char *assign, *comment, *opt, *value;
char *p;
+ cnt++;
if (strlen (line) > (sizeof (line) - 2))
- vfprintf_fail ("%s: line exceeds maximum of %u characters", conf_file, (unsigned int)(sizeof (line) - 2));
+ vfprintf_fail ("%s: line %u exceeds maximum of %u characters", conf_file, cnt, (unsigned int)(sizeof (line) - 2));
if ((p = strrchr (line, '\n')))
*p = '\0';
/* NAME PARSING (start) */
};
const struct opt_data opts_data[] = {
{ "attr", NULL, "=ATTR1,ATTR2,..." },
- { "config", NULL, "=PATH" },
+ { "config", "c", "=PATH" },
{ "exclude-random", NULL, "=COLOR" },
{ "help", "h", NULL },
{ "version", "V", NULL },
if (opt_data)
{
if (opt_data->short_opt)
- printf ("\t\t-%s, --%s\n", opt_data->short_opt, opt->name);
+ printf ("\t\t-%s, --%s", opt_data->short_opt, opt->name);
else
- printf ("\t\t --%s%s\n", opt->name, opt_data->arg);
+ printf ("\t\t --%s", opt->name);
+ if (opt_data->arg)
+ printf ("%s", opt_data->arg);
+ printf ("\n");
}
else
printf ("\t\t --%s\n", opt->name);