util: use die() to write a message and exit(1)
[ctxt.git] / html.c
blob2bfcf1f3576054543a746a4638ed8a4f0b86ee7e
1 #include <stdio.h>
2 #include "ctxt.h"
4 static void html_doc_beg(struct doc *doc)
6 doc_write(doc, "<body>\n");
9 static void html_doc_end(struct doc *doc)
11 doc_write(doc, "</body>\n");
14 static void html_head_beg(struct doc *doc, int level)
16 char buf[64];
17 sprintf(buf, "<h%d>", level + 1);
18 doc_write(doc, buf);
21 static void html_head_end(struct doc *doc, int level)
23 char buf[64];
24 sprintf(buf, "</h%d>", level + 1);
25 doc_write(doc, buf);
28 static void html_par_beg(struct doc *doc)
30 doc_write(doc, "<p>\n");
33 static void html_par_end(struct doc *doc)
37 static void html_put(struct doc *doc, char *s)
39 doc_write(doc, s);
42 static void html_list_beg(struct doc *doc)
44 doc_write(doc, "<ul>\n");
47 static void html_list_end(struct doc *doc)
49 doc_write(doc, "</ul>\n");
52 static void html_item_beg(struct doc *doc)
54 doc_write(doc, "<li>");
57 static void html_item_end(struct doc *doc)
59 doc_write(doc, "</li>\n");
62 static void html_pre_beg(struct doc *doc)
64 doc_write(doc, "<pre>");
67 static void html_pre_end(struct doc *doc)
69 doc_write(doc, "</pre>");
72 static void html_formula_beg(struct doc *doc)
74 doc_write(doc, "<p><i>");
77 static void html_formula_end(struct doc *doc)
79 doc_write(doc, "</i>\n");
82 static void html_put_emph(struct doc *doc, char *s)
84 doc_write(doc, "<b>");
85 doc_write(doc, s);
86 doc_write(doc, "</b>");
89 static void html_put_raw(struct doc *doc, char *s)
91 doc_write(doc, s);
94 static void html_put_ref(struct doc *doc, char *s)
96 doc_write(doc, s);
99 static void html_put_url(struct doc *doc, char *url, char *desc)
101 char *msg = desc && *desc ? desc : url;
102 doc_write(doc, "<a href=\"");
103 doc_write(doc, url);
104 doc_write(doc, "\">");
105 doc_write(doc, msg);
106 doc_write(doc, "</a>");
109 static void html_table_beg(struct doc *doc, int columns)
111 doc_write(doc, "<table>\n");
114 static void html_table_end(struct doc *doc)
116 doc_write(doc, "</table>\n");
119 static void html_row_beg(struct doc *doc)
121 doc_write(doc, "<tr>");
124 static void html_row_end(struct doc *doc)
126 doc_write(doc, "</tr>\n");
129 static void html_entry_beg(struct doc *doc)
131 doc_write(doc, "<td>");
134 static void html_entry_end(struct doc *doc)
136 doc_write(doc, "</td>");
139 struct fmt_ops html_ops = {
140 .doc_beg = html_doc_beg,
141 .doc_end = html_doc_end,
142 .head_beg = html_head_beg,
143 .head_end = html_head_end,
144 .par_beg = html_par_beg,
145 .par_end = html_par_end,
146 .list_beg = html_list_beg,
147 .list_end = html_list_end,
148 .item_beg = html_item_beg,
149 .item_end = html_item_end,
150 .pre_beg = html_pre_beg,
151 .pre_end = html_pre_end,
152 .formula_beg = html_formula_beg,
153 .formula_end = html_formula_end,
154 .table_beg = html_table_beg,
155 .table_end = html_table_end,
156 .row_beg = html_row_beg,
157 .row_end = html_row_end,
158 .entry_beg = html_entry_beg,
159 .entry_end = html_entry_end,
160 .put_emph = html_put_emph,
161 .put_raw = html_put_raw,
162 .put_ref = html_put_ref,
163 .put_url = html_put_url,
164 .put = html_put