feat: ports - netsurf with the monkey frontend

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018Ae69wJS7sueQMUwNxV3nX
This commit is contained in:
2026-08-07 21:26:32 +02:00
co-authored by Claude Opus 5
parent d14c8565d3
commit f4dce0cdd6
15 changed files with 953 additions and 0 deletions
+41
View File
@@ -0,0 +1,41 @@
/*
* <iconv.h> for the MontaukOS NetSurf port.
*
* MontaukOS has no iconv. Rather than port GNU libiconv, this implements the
* three-function iconv API on top of libparserutils' charset codecs, which are
* already in the ports sysroot.
*
* That is a good fit rather than a bodge: libparserutils decodes a charset to
* UCS-4 and encodes UCS-4 back out, so iconv() is decode-then-encode through a
* UCS-4 staging buffer. The supported set is whatever libparserutils supports
* -- UTF-8, UTF-16, ASCII, ISO-8859-x and the Windows-125x range -- which is
* exactly the set the HTML parser can handle anyway, so nothing is lost that
* would otherwise have worked.
*
* NetSurf touches iconv only from utils/utf8.c.
*
* NOT SUPPORTED: the "//TRANSLIT" and "//IGNORE" suffixes glibc accepts. They
* are stripped and ignored; conversion uses libparserutils' LOOSE error mode,
* which substitutes rather than failing.
*/
#ifndef _MONTAUK_COMPAT_ICONV_H_
#define _MONTAUK_COMPAT_ICONV_H_
#include <stddef.h>
typedef void *iconv_t;
#ifdef __cplusplus
extern "C" {
#endif
iconv_t iconv_open(const char *tocode, const char *fromcode);
size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft,
char **outbuf, size_t *outbytesleft);
int iconv_close(iconv_t cd);
#ifdef __cplusplus
}
#endif
#endif