+2005-05-05 Hrvoje Niksic <hniksic@xemacs.org>
+
+ * main.c (main): Propagate option name to setoptval.
+
+ * init.c (setoptval): Accept another argument, OPTNAME. Propagate
+ that argument as the option name independently of the actual
+ command, determined by command_by_name(com).
+
2005-05-05 Hrvoje Niksic <hniksic@xemacs.org>
* init.c (parse_line): Make the return value indicate whether
to accept COMIND directly. */
void
-setoptval (const char *com, const char *val)
+setoptval (const char *com, const char *val, const char *optname)
{
+ /* Prepend "--" to OPTNAME. */
+ char *dd_optname = (char *) alloca (2 + strlen (optname) + 1);
+ dd_optname[0] = '-';
+ dd_optname[1] = '-';
+ strcpy (dd_optname + 2, optname);
+
assert (val != NULL);
- if (!setval_internal (command_by_name (com), com, val))
+ if (!setval_internal (command_by_name (com), dd_optname, val))
exit (2);
}
switch (opt->type)
{
case OPT_VALUE:
- setoptval (opt->data, optarg);
+ setoptval (opt->data, optarg, opt->long_name);
break;
case OPT_BOOLEAN:
if (optarg)
/* The user has specified a value -- use it. */
- setoptval (opt->data, optarg);
+ setoptval (opt->data, optarg, opt->long_name);
else
{
/* NEG is true for `--no-FOO' style boolean options. */
int neg = val & BOOLEAN_NEG_MARKER;
- setoptval (opt->data, neg ? "0" : "1");
+ setoptval (opt->data, neg ? "0" : "1", opt->long_name);
}
break;
case OPT_FUNCALL:
}
break;
case OPT__APPEND_OUTPUT:
- setoptval ("logfile", optarg);
+ setoptval ("logfile", optarg, opt->long_name);
append_to_log = 1;
break;
case OPT__EXECUTE:
switch (*p)
{
case 'v':
- setoptval ("verbose", "0");
+ setoptval ("verbose", "0", opt->long_name);
break;
case 'H':
- setoptval ("addhostdir", "0");
+ setoptval ("addhostdir", "0", opt->long_name);
break;
case 'd':
- setoptval ("dirstruct", "0");
+ setoptval ("dirstruct", "0", opt->long_name);
break;
case 'c':
- setoptval ("noclobber", "1");
+ setoptval ("noclobber", "1", opt->long_name);
break;
case 'p':
- setoptval ("noparent", "1");
+ setoptval ("noparent", "1", opt->long_name);
break;
default:
printf (_("%s: illegal option -- `-n%c'\n"), exec_name, *p);
|| (TOLOWER (optarg[0]) == 'o'
&& TOLOWER (optarg[1]) == 'n'));
setoptval (opt->type == OPT__PARENT ? "noparent" : "noclobber",
- flag ? "0" : "1");
+ flag ? "0" : "1", opt->long_name);
break;
}
case OPT__DONT_REMOVE_LISTING:
- setoptval ("removelisting", "0");
+ setoptval ("removelisting", "0", opt->long_name);
break;
}