X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/e7eb3a2744aa45179daea235800753d3d1955338..598b07b7de7559ddcaed4063912f68bf951d6701:/cgi/options.c diff --git a/cgi/options.c b/cgi/options.c index b56b424..5517c76 100644 --- a/cgi/options.c +++ b/cgi/options.c @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -/** @file server/options.c +/** @file cgi/options.c * @brief CGI options * * Options represent an additional configuration system private to the @@ -58,9 +58,15 @@ static void option__columns(int nvec, 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 }, @@ -72,7 +78,7 @@ static void option__split_error(const char *msg, 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) { @@ -84,7 +90,7 @@ 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; @@ -94,17 +100,17 @@ static void option__readfile(const char *name) { 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);