blob: 353254e97eb123a93fa4cf8dcea4e7550c34ccb6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#ifndef HTML_H
#define HTML_H

#include "cgit.h"

extern void html_raw(const char *txt, size_t size);
extern void html(const char *txt);

/* How much of a generated run to build before handing it to html_raw. Batching
 * is what removes the write per line, and html_raw already gathers what it is
 * given into one buffer, so nothing is gained by growing past this. A run built
 * whole would instead be sized by the file it was generated from, which the
 * blob limits do not bound. */
#define HTML_BATCH (64 * 1024)

/* Write out whatever page output is still buffered. Call before anything
 * other than html_raw writes to stdout. */
extern void html_flush(void);

__attribute__((format (printf,1,2)))
extern void htmlf(const char *format,...);

__attribute__((format (printf,1,2)))
extern void html_txtf(const char *format,...);

__attribute__((format (printf,1,0)))
extern void html_vtxtf(const char *format, va_list ap);

__attribute__((format (printf,1,2)))
extern void html_attrf(const char *format,...);

extern void html_txt(const char *txt);
extern ssize_t html_ntxt(const char *txt, size_t len);
extern void html_attr(const char *txt);
extern void html_url_path(const char *txt);
extern void html_url_arg(const char *txt);
extern void html_header_arg_in_quotes(const char *txt);
extern void html_hidden(const char *name, const char *value);
extern void html_option(const char *value, const char *text, const char *selected_value);
extern void html_intoption(int value, const char *text, int selected_value);
extern void html_link_open(const char *url, const char *title, const char *class);
extern void html_link_close(void);
extern void html_fileperm(unsigned short mode);
extern int html_include(const char *filename);

extern void http_parse_querystring(const char *txt, void (*fn)(const char *name, const char *value));

#endif /* HTML_H */