hash_add(columns, vec[0], &c, HASH_INSERT_OR_REPLACE);
}
+/** @brief Definition of an option command */
static struct option {
+ /** @brief Command name */
const char *name;
- int minargs, maxargs;
+ /** @brief Minimum number of arguments */
+ int minargs;
+ /** @brief Maximum number of arguments */
+ int maxargs;
+ /** @brief Command handler */
void (*handler)(int nvec, char **vec);
} options[] = {
{ "columns", 1, INT_MAX, option__columns },
void *u) {
struct read_options_state *cs = u;
- error(0, "%s:%d: %s", cs->name, cs->line, msg);
+ disorder_error(0, "%s:%d: %s", cs->name, cs->line, msg);
}
static void option__readfile(const char *name) {
if(!(cs.name = mx_find(name, 1/*report*/)))
return;
if(!(fp = fopen(cs.name, "r")))
- fatal(errno, "error opening %s", cs.name);
+ disorder_fatal(errno, "error opening %s", cs.name);
cs.line = 0;
while(!inputline(cs.name, fp, &buffer, '\n')) {
++cs.line;
if(!n)
continue;
if((i = TABLE_FIND(options, name, vec[0])) == -1) {
- error(0, "%s:%d: unknown option '%s'", cs.name, cs.line, vec[0]);
+ disorder_error(0, "%s:%d: unknown option '%s'", cs.name, cs.line, vec[0]);
continue;
}
++vec;
--n;
if(n < options[i].minargs) {
- error(0, "%s:%d: too few arguments to '%s'", cs.name, cs.line, vec[-1]);
+ disorder_error(0, "%s:%d: too few arguments to '%s'", cs.name, cs.line, vec[-1]);
continue;
}
if(n > options[i].maxargs) {
- error(0, "%s:%d: too many arguments to '%s'", cs.name, cs.line, vec[-1]);
+ disorder_error(0, "%s:%d: too many arguments to '%s'", cs.name, cs.line, vec[-1]);
continue;
}
options[i].handler(n, vec);