libgcgi.h - libgcgi - REST library for Gopher
HTML git clone git://bitreich.org/libgcgi/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/libgcgi/
DIR Log
DIR Files
DIR Refs
DIR Tags
DIR README
DIR LICENSE
---
libgcgi.h (1554B)
---
1 #include <stddef.h>
2
3 #ifndef LIBGCGI_H
4 #define LIBGCGI_H
5
6 /*
7 * Gopher CGI library to use in CGI scripts
8 *
9 * See libgcgi(3) or the README for usage and examples.
10 */
11
12 /* maps glob pattern */
13 struct gcgi_handler {
14 char const *glob;
15 void (*fn)(char **matches);
16 };
17
18 /* storage for key-value pair */
19 struct gcgi_var_list {
20 struct gcgi_var {
21 char *key, *val;
22 } *list;
23 size_t len;
24 char *buf;
25 };
26
27 /* main loop executing h->fn() if h->glob is matching */
28 void gcgi_handle_request(struct gcgi_handler h[], char **argv, int argc);
29
30 /* abort the program with an error message sent to the client */
31 void gcgi_fatal(char *fmt, ...);
32
33 /* print a template with every "{{name}}" looked up in `vars` */
34 void gcgi_template(char const *path, struct gcgi_var_list *vars);
35
36 /* manage a `key`-`val` pair storage `vars`, as used with gcgi_template */
37 void gcgi_set_var(struct gcgi_var_list *vars, char *key, char *val);
38 char *gcgi_get_var(struct gcgi_var_list *vars, char *key);
39 void gcgi_free_var_list(struct gcgi_var_list *vars);
40
41 /* store and read a list of variables onto a simple RFC822-like format */
42 void gcgi_read_var_list(struct gcgi_var_list *vars, char *path);
43 int gcgi_write_var_list(struct gcgi_var_list *vars, char *path);
44
45 /* components of the gopher request */
46 extern char *gcgi_gopher_search;
47 extern char *gcgi_gopher_path;
48 extern struct gcgi_var_list gcgi_gopher_query;
49 extern char *gcgi_gopher_host;
50 extern char *gcgi_gopher_port;
51
52 /* need to be provided if not present in libc, which is rare */
53 char *strsep(char **s, const char *delims);
54
55 #endif