|
NAME
LIBRARYlibrary “libkcgi” SYNOPSIS
enum kcgi_err
enum kcgi_err
enum kcgi_err
DESCRIPTIONModify input by replacing keys in a template. May only be called after khttp_body(3). Output is written with khttp_write(3) using the req previously allocated with khttp_parse(3) or khttp_fcgi_parse(3). The khttp_templatex(3) family allows for alternative writers. All functions accept a template t consisting of the following fields:
If t is Otherwise, the input is passed to khttp_write(3) until a key sequence in encountered matching a key in t->key. The callback t->cb is then invoked instead of printing the key sequence. If there are multiple matching keys in t->key, only one is used (which is not yet fixed). If the key sequence is not found in t->key, it is passed unchanged to khttp_write(3). The different input types are
SYNTAXEach substring of the input beginning and ending with a pair of
“at” signs,
A key sequence may not contain an escaped pair: this is parsed as a backslash followed by the trailing pair. RETURN VALUESThese return an enum kcgi_err indicating the error state:
EXAMPLESThe following simple example takes a buffer buf and applies the replacement template of two values, writing it to the current context req. static int writer(size_t idx, void *arg)
{
struct kreq *r = arg;
if (idx == 0)
khttp_puts(r, "foo-value");
else if (idx == 1)
khttp_puts(r, "bar-value");
return 1;
}
enum kcgi_err format(struct kreq *r)
{
const char *const keys[] = { "foo", "bar" };
struct ktemplate t = {
.key = keys,
.keysz = 2,
.arg = r,
.cb = writer
};
const char *buf = "foo=@@foo@@, bar=@@bar@@";
return khttp_template_buf(r, &t, buf, strlen(buf));
}
The function will produce "foo=foo-value, bar=bar-value". SEE ALSOkcgi(3), khttp_body(3), khttp_parse(3), khttp_templatex(3), khttp_write(3) AUTHORSWritten by Kristaps Dzonsons <kristaps@bsd.lv>.
|