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