| 30 #include <ctype.h> |
30 #include <ctype.h> |
| 31 #include <string.h> |
31 #include <string.h> |
| 32 #include "codegens.h" |
32 #include "codegens.h" |
| 33 |
33 |
| 34 |
34 |
| 35 size_t writeescapedchar(char *dest, size_t dp, char c) { |
35 void put_htmlescaped(UcxBuffer *dest, char c) { |
| 36 if (c == '>') { |
36 if (c == '>') { |
| 37 dest[dp++] = '&'; dest[dp++] = 'g'; dest[dp++] = 't'; dest[dp++] = ';'; |
37 ucx_buffer_puts(dest, ">"); |
| 38 } else if (c == '<') { |
38 } else if (c == '<') { |
| 39 dest[dp++] = '&'; dest[dp++] = 'l'; dest[dp++] = 't'; dest[dp++] = ';'; |
39 ucx_buffer_puts(dest, "<"); |
| 40 } else { |
40 } else { |
| 41 dest[dp++] = c; |
41 ucx_buffer_putc(dest, c); |
| 42 } |
42 } |
| |
43 } |
| 43 |
44 |
| 44 return dp; |
45 void put_htmlescapedstr(UcxBuffer *dest, sstr_t s) { |
| |
46 for (int i = 0 ; i < s.length ; i++) { |
| |
47 put_htmlescaped(dest, s.ptr[i]); |
| |
48 } |
| 45 } |
49 } |
| 46 |
50 |
| 47 int check_keyword(sstr_t word, const char** keywords) { |
51 int check_keyword(sstr_t word, const char** keywords) { |
| 48 for (int i = 0 ; keywords[i] ; i++) { |
52 for (int i = 0 ; keywords[i] ; i++) { |
| 49 if (sstrcmp(word, sstr((char*)keywords[i])) == 0) { |
53 if (sstrcmp(word, sstr((char*)keywords[i])) == 0) { |