summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2016-01-26 19:37:18 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2016-01-26 19:37:18 +0000
commit520e81f98d7560cb39a9141c698723e2e36aa675 (patch)
tree6fb7885421e4c7e2c8c08187ca4963886ebdf1ea
parent9505b8e5143b3b11f86469818258f1b628053d08 (diff)
downloadnetsurf-520e81f98d7560cb39a9141c698723e2e36aa675.tar.gz
netsurf-520e81f98d7560cb39a9141c698723e2e36aa675.tar.bz2
Alloc specifying local charset on OS3 as we can't get this from Locale
-rw-r--r--amiga/options.h1
-rw-r--r--amiga/os3support.h2
-rwxr-xr-xamiga/utf8.c6
3 files changed, 8 insertions, 1 deletions
diff --git a/amiga/options.h b/amiga/options.h
index c46c979b4..0c4db5c45 100644
--- a/amiga/options.h
+++ b/amiga/options.h
@@ -90,5 +90,6 @@ NSOPTION_BOOL(accept_lang_locale, true)
/* Options relevant for OS3 only */
#ifndef __amigaos4__
NSOPTION_BOOL(friend_bitmap, false)
+NSOPTION_STRING(local_charset, "ISO-8859-1")
#endif
diff --git a/amiga/os3support.h b/amiga/os3support.h
index 5f21fadba..c1db0541d 100644
--- a/amiga/os3support.h
+++ b/amiga/os3support.h
@@ -140,7 +140,7 @@
#define ESetInfo SetInfo
/* Only used in one place we haven't ifdeffed, where it returns the charset name */
-#define ObtainCharsetInfo(A,B,C) (const char *)"ISO-8859-1"
+#define ObtainCharsetInfo(A,B,C) (const char *)nsoption_charp(local_charset)
/* DOS */
#define AllocSysObjectTags(A,B,C,D) CreateMsgPort() /* Assume ASOT_PORT for now */
diff --git a/amiga/utf8.c b/amiga/utf8.c
index 9bf1b1adb..91d7c90c0 100755
--- a/amiga/utf8.c
+++ b/amiga/utf8.c
@@ -23,6 +23,7 @@
#include <proto/diskfont.h>
#include <diskfont/diskfonttag.h>
+#include "utils/nsoption.h"
#include "utils/utf8.h"
#include "desktop/gui_utf8.h"
@@ -37,6 +38,8 @@ nserror utf8_from_local_encoding(const char *string, size_t len, char **result)
charset = GetDiskFontCtrl(DFCTRL_CHARSET);
encname = (const char *) ObtainCharsetInfo(DFCS_NUMBER, charset, DFCS_MIMENAME);
+#else
+ encname = nsoption_charp(local_charset);
#endif
return utf8_from_enc(string,encname,len,result,NULL);
@@ -51,6 +54,8 @@ nserror utf8_to_local_encoding(const char *string, size_t len, char **result)
charset = GetDiskFontCtrl(DFCTRL_CHARSET);
encname = (const char *) ObtainCharsetInfo(DFCS_NUMBER, charset, DFCS_MIMENAME);
+#else
+ encname = nsoption_charp(local_charset);
#endif
return utf8_to_enc(string,encname,len,result);
@@ -96,3 +101,4 @@ static struct gui_utf8_table utf8_table = {
};
struct gui_utf8_table *amiga_utf8_table = &utf8_table;
+