From 68f1b41bf0c62b79a95c4547194bf7bde535de47 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Tue, 26 May 2020 15:08:51 +0100 Subject: Amiga: Use IANA codeset number to identify local charset --- frontends/amiga/gui.c | 1 + frontends/amiga/options.h | 16 +++++++++++++--- frontends/amiga/utf8.c | 8 +++++--- 3 files changed, 19 insertions(+), 6 deletions(-) (limited to 'frontends') diff --git a/frontends/amiga/gui.c b/frontends/amiga/gui.c index 36ee75631..8eb34fb92 100644 --- a/frontends/amiga/gui.c +++ b/frontends/amiga/gui.c @@ -1095,6 +1095,7 @@ static nserror ami_set_options(struct nsoption_s *defaults) const char *encname = (const char *)ObtainCharsetInfo(DFCS_NUMBER, codeset, DFCS_MIMENAME); nsoption_set_charp(local_charset, strdup(encname)); + nsoption_set_int(local_codeset, codeset); #else nsoption_set_bool(download_notify, false); nsoption_set_bool(font_antialiasing, false); diff --git a/frontends/amiga/options.h b/frontends/amiga/options.h index 196b05709..101558f6a 100644 --- a/frontends/amiga/options.h +++ b/frontends/amiga/options.h @@ -1,5 +1,5 @@ /* - * Copyright 2008 - 2012 Chris Young + * Copyright 2008 - 2020 Chris Young * * This file is part of NetSurf, http://www.netsurf-browser.org/ * @@ -89,12 +89,22 @@ NSOPTION_INTEGER(redraw_tile_size_y, 0) NSOPTION_INTEGER(monitor_aspect_x, 0) NSOPTION_INTEGER(monitor_aspect_y, 0) NSOPTION_BOOL(accept_lang_locale, true) + +/* Local charset when using iconv */ NSOPTION_STRING(local_charset, "ISO-8859-1") + #ifdef __amigaos4__ -/* Options relevant for OS4 only */ +/** Options relevant for OS4 only **/ + +/* Local charset IANA number when using codesets */ +NSOPTION_INTEGER(local_codeset, 0) + +/* Use ExtMem */ NSOPTION_BOOL(use_extmem, true) + #else -/* Options relevant for OS3 only */ +/** Options relevant for OS3 only **/ + NSOPTION_BOOL(friend_bitmap, false) #endif diff --git a/frontends/amiga/utf8.c b/frontends/amiga/utf8.c index 83872ebff..f16cbba6c 100755 --- a/frontends/amiga/utf8.c +++ b/frontends/amiga/utf8.c @@ -38,16 +38,18 @@ static nserror ami_utf8_codesets(const char *string, size_t len, char **result, ULONG utf8_tag, local_tag; if(to_local == false) { - local_tag = CSA_SourceCodeset; + local_tag = CSA_SourceMIBenum; utf8_tag = CSA_DestMIBenum; } else { utf8_tag = CSA_SourceMIBenum; - local_tag = CSA_DestCodeset; + local_tag = CSA_DestMIBenum; } out = CodesetsConvertStr(CSA_Source, string, CSA_SourceLen, len, - local_tag, CodesetsFindA(nsoption_charp(local_charset), NULL), +#ifdef __amigaos4__ + local_tag, nsoption_int(local_codeset), +#endif utf8_tag, CS_MIBENUM_UTF_8, CSA_MapForeignChars, TRUE, TAG_DONE); -- cgit v1.2.3