commit - 77718c121f89b39bd0095f10e2dbd2ff9df65281
commit + 97b306cbee6d105885a761e04274f661a0ec3757
blob - 4c71d8fa29d684f5d3e1e2e87ad6a972232e6875
blob + 2d1dc86cd84eeabfdb308272bb45fb5b97b0f597
--- fcgi.c
+++ fcgi.c
fcgi_req(struct client *c)
{
char addr[NI_MAXHOST], buf[22];
+ char *qs;
int e;
time_t tim;
struct tm tminfo;
fcgi_send_param(c->cgibev, "SERVER_PROTOCOL", "GEMINI");
fcgi_send_param(c->cgibev, "SERVER_SOFTWARE", GMID_VERSION);
+ if (*c->iri.query != '\0' &&
+ strchr(c->iri.query, '=') == NULL &&
+ (qs = strdup(c->iri.query)) != NULL) {
+ pct_decode_str(qs);
+ fcgi_send_param(c->cgibev, "GEMINI_SEARCH_STRING", qs);
+ free(qs);
+ }
+
TAILQ_FOREACH(p, &c->host->params, envs) {
fcgi_send_param(c->cgibev, p->name, p->value);
}
blob - 93406f757dac3ea0be62c34740ce89331bd5e07f
blob + 13717a313549f8f0a804027bbe31d1a76ef30f54
--- gmid.conf.5
+++ gmid.conf.5
The full IRI of the request.
.It Ev GEMINI_URL_PATH
The path of the request.
+.It Ev GEMINI_SEARCH_STRING
+The decoded
+.Ev QUERY_STRING
+if defined in the request and if it doesn't contain any unencoded
+.Sq =
+characters, otherwise unset.
.It Ev PATH_INFO
The portion of the requested path that is derived from the the IRI
path hierarchy following the part that identifies the script itself.
blob - c1f97814e86bd458862e6cd96d5557f1f8b4bd2d
blob + d62eef5caa531ee4e2131d28f9345c765c910e32
--- iri.c
+++ iri.c
char *t;
for (t = s; *t; ++t) {
- if (*t == '%' && valid_pct_enc_string(t))
+ if (*t == '+')
+ *t = ' ';
+ else if (*t == '%' && valid_pct_enc_string(t))
pct_decode(t);
}