💾 Archived View for gemini.rmf-dev.com › repo › Vaati › Vgmi › files › 668d4c7cb6acf5ffa171eb7145a95… captured on 2024-02-05 at 10:01:04. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-12-28)
-=-=-=-=-=-=-
0 /*
1 * ISC License
2 * Copyright (c) 2023 RMF <rawmonk@firemail.cc>
3 */
4 #include <stdlib.h>
5 #include <string.h>
6 #include <stdint.h>
7 #include <unistd.h>
8 #include "strlcpy.h"
9 #include "strnstr.h"
10 #include "macro.h"
11 #include "page.h"
12 #include "request.h"
13 #include "parser.h"
14
15 int metadata_trim(const char *metadata, size_t len, char *out, size_t outlen) {
16 size_t i;
17 for (i = 0; i < len && i < outlen; i++) {
18 if (WHITESPACE(metadata[i]) || metadata[i] == ';') break;
19 out[i] = metadata[i];
20 }
21 out[i] = '\0';
22 return 0;
23 }
24
25 int parser_mime(char *meta, size_t len) {
26 char mime[1024];
27 metadata_trim(meta, len, V(mime));
28 if (!strncmp(mime, "text/gemini", sizeof(mime))) return MIME_GEMTEXT;
29 if (!strncmp(mime, "text/plain", sizeof(mime))) return MIME_PLAIN;
30 if (!memcmp(mime, "image/", sizeof("image/") - 1)) return MIME_IMAGE;
31 return MIME_UNKNOWN;
32 }
33
34 int is_gemtext(char *meta, size_t len) {
35 return parser_mime(meta, len) == MIME_GEMTEXT;
36 }
37