X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/0681965308946ef9736a04542c4f9d3b7ea86c5b..c617bac5ba2c520255597c36a9e25f8ae704cfd0:/server/dcgi.c diff --git a/server/dcgi.c b/server/dcgi.c index 19e25e0..16a5a6c 100644 --- a/server/dcgi.c +++ b/server/dcgi.c @@ -426,8 +426,18 @@ static void process_prefs(dcgi_state *ds, int numfile) { disorder_unset(ds->g->client, file, "pick_at_random"); else disorder_set(ds->g->client, file, "pick_at_random", "0"); - if((value = numbered_arg("tags", numfile))) - disorder_set(ds->g->client, file, "tags", value); + if((value = numbered_arg("tags", numfile))) { + if(!*value) + disorder_unset(ds->g->client, file, "tags"); + else + disorder_set(ds->g->client, file, "tags", value); + } + if((value = numbered_arg("weight", numfile))) { + if(!*value || !strcmp(value, "90000")) + disorder_unset(ds->g->client, file, "weight"); + else + disorder_set(ds->g->client, file, "weight", value); + } } else if((name = cgi_get("name"))) { /* Raw preferences. Not well supported in the templates at the moment. */ value = cgi_get("value"); @@ -1750,6 +1760,17 @@ static void exp_image(int attribute((unused)) nargs, cgi_output(output, "/disorder/%s", imagestem); } +static void exp_define(int attribute((unused)) nargs, + char **args, + cgi_sink attribute((unused)) *output, + void attribute((unused)) *u) { + const char *n = args[0], *a = args[1], *v = args[2]; + int nas; + char **as = split(a, &nas, 0, 0, 0); + + cgi_define(n, nas, as, v); +} + static const struct cgi_expansion expansions[] = { { "#", 0, INT_MAX, EXP_MAGIC, exp_comment }, { "action", 0, 0, 0, exp_action }, @@ -1757,6 +1778,7 @@ static const struct cgi_expansion expansions[] = { { "arg", 1, 1, 0, exp_arg }, { "basename", 0, 1, 0, exp_basename }, { "choose", 2, 2, EXP_MAGIC, exp_choose }, + { "define", 3, 3, EXP_MAGIC, exp_define }, { "dirname", 0, 1, 0, exp_dirname }, { "enabled", 0, 0, 0, exp_enabled }, { "eq", 2, 2, 0, exp_eq },