💾 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

View Raw

More Information

⬅️ Previous capture (2023-12-28)

-=-=-=-=-=-=-

Go Back

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