X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/71634563a24f62eedab5fd97fed3c029061acf43..9d61799376c6d4a51b5386ddb432693ad31129a6:/server/options.c diff --git a/server/options.c b/server/options.c index e3cf7b8..68f8271 100644 --- a/server/options.c +++ b/server/options.c @@ -19,25 +19,12 @@ */ /** @file server/options.c * @brief CGI options + * + * Options represent an additional configuration system private to the + * CGI program. */ -#include -#include "types.h" - -#include -#include -#include -#include - -#include "mem.h" -#include "hash.h" -#include "macros.h" -#include "options.h" -#include "split.h" -#include "table.h" -#include "log.h" -#include "inputline.h" -#include "printf.h" +#include "disorder-cgi.h" struct column { int ncolumns; @@ -96,7 +83,7 @@ static void option__readfile(const char *name) { char **vec, *buffer; struct read_options_state cs; - if(!(cs.name = mx_find(name))) + if(!(cs.name = mx_find(name, 1/*report*/))) return; if(!(fp = fopen(cs.name, "r"))) fatal(errno, "error opening %s", cs.name); @@ -166,24 +153,26 @@ void option_set(const char *name, const char *value) { */ const char *option_label(const char *key) { const char *label; + char **lptr; option__init(); - if(!(label = *(char **)hash_find(labels, key))) { - /* No label found */ - if(!strncmp(key, "images.", 7)) { - static const char *url_static; - /* images.X defaults to X.png */ - - if(!url_static) - url_static = option_label("url.static"); - byte_xasprintf((char **)&label, "%s%s.png", url_static, key + 7); - } else if((label = strrchr(key, '.'))) - /* X.Y defaults to Y */ - ++label; - else - /* otherwise default to label name */ - label = key; - } + lptr = hash_find(labels, key); + if(lptr) + return *lptr; + /* No label found */ + if(!strncmp(key, "images.", 7)) { + static const char *url_static; + /* images.X defaults to X.png */ + + if(!url_static) + url_static = option_label("url.static"); + byte_xasprintf((char **)&label, "%s%s.png", url_static, key + 7); + } else if((label = strrchr(key, '.'))) + /* X.Y defaults to Y */ + ++label; + else + /* otherwise default to label name */ + label = key; return label; }