💾 Archived View for gemini.rmf-dev.com › repo › Vaati › Vgmi › files › ba293204fce31871be821a07380de… captured on 2024-02-05 at 10:00:32. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
0 /*
1 * ISC License
2 * Copyright (c) 2023 RMF <rawmonk@firemail.cc>
3 */
4 enum {
5 PARSER_GEMTEXT,
6 PARSER_REQUEST
7 };
8
9 struct parser;
10 struct request;
11
12 #ifdef PARSER_INTERNAL
13 int vread(int fd, void *buf, size_t nbytes);
14 int readnext(int fd, uint32_t *ch, size_t *pos, size_t length);
15 int renderable(uint32_t codepoint);
16 #endif
17
18 #define WHITESPACE(X) ((X) <= ' ' && (X) != '\n')
19 #define SEPARATOR(X) ((X) <= ' ')
20 #define LINEBREAK(X) (WHITESPACE(X) || X == '-')
21
22 enum {
23 MIME_GEMTEXT,
24 MIME_PLAIN,
25 MIME_IMAGE,
26 MIME_UNKNOWN
27 };
28
29 int is_gemtext(char *meta, size_t len);
30 int format_link(const char *link, size_t length, char *out, size_t out_length);
31 int parser_mime(char *meta, size_t len);
32 int parse_response(int fd, size_t length, char *meta, size_t len, int *code,
33 int *bytes_read);
34 int parse_request(struct parser *parser, struct request *request);
35 int parse_page(struct parser *parser, struct request *request, int width);
36 int parser_request_create(void);
37 int parser_page_create(void);
38 int parse_gemtext(int in, size_t length, int width, int out);
39 int parse_plain(int in, size_t length, int width, int out);
40 int parse_binary(int in, size_t length, int width, int out);
41 int parse_links(int in, size_t length, int out);
42 void parser_page(int in, int out);
43 void parser_request(int in, int out);
44 int parser_sandbox(int out, const char *title);
45