summaryrefslogtreecommitdiff
path: root/amiga
diff options
context:
space:
mode:
Diffstat (limited to 'amiga')
-rwxr-xr-xamiga/iff_cset.h32
-rw-r--r--amiga/options.h5
-rwxr-xr-xamiga/utf8.c26
-rwxr-xr-xamiga/utf8.h1
4 files changed, 63 insertions, 1 deletions
diff --git a/amiga/iff_cset.h b/amiga/iff_cset.h
new file mode 100755
index 000000000..9885baf35
--- /dev/null
+++ b/amiga/iff_cset.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2008 Chris Young <chris@unsatisfactorysoftware.co.uk>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef AMIGA_IFF_CSET_H
+#define AMIGA_IFF_CSET_H
+
+/* This structure is for the IFF CSET chunk, registered by Martin Taillefer */
+
+struct CSet {
+ LONG CodeSet; /* 0=ECMA Latin 1 (std Amiga charset) */
+ /* CBM will define additional values */
+ LONG Reserved[7];
+ };
+
+#define ID_CSET MAKE_ID('C','S','E','T')
+
+#endif
diff --git a/amiga/options.h b/amiga/options.h
index ff38c24ea..d6ab89f3a 100644
--- a/amiga/options.h
+++ b/amiga/options.h
@@ -27,6 +27,7 @@ extern bool option_use_wb;
extern int option_modeid;
extern char *option_toolbar_images;
extern bool option_no_iframes;
+extern bool option_utf8_clipboard;
#define EXTRA_OPTION_DEFINE \
bool option_verbose_log = false; \
@@ -36,6 +37,7 @@ bool option_use_wb = false; \
int option_modeid = 0; \
char *option_toolbar_images = 0; \
bool option_no_iframes = false; \
+bool option_utf8_clipboard = false; \
#define EXTRA_OPTION_TABLE \
{ "verbose_log", OPTION_BOOL, &option_verbose_log}, \
@@ -44,5 +46,6 @@ bool option_no_iframes = false; \
{ "use_workbench", OPTION_BOOL, &option_use_wb}, \
{ "screen_modeid", OPTION_INTEGER, &option_modeid}, \
{ "toolbar_images", OPTION_STRING, &option_toolbar_images }, \
-{ "no_iframes", OPTION_BOOL, &option_no_iframes},
+{ "no_iframes", OPTION_BOOL, &option_no_iframes}, \
+{ "clipboard_write_utf8", OPTION_BOOL, &option_utf8_clipboard},
#endif
diff --git a/amiga/utf8.c b/amiga/utf8.c
index 26b2fe2c7..648736c01 100755
--- a/amiga/utf8.c
+++ b/amiga/utf8.c
@@ -53,3 +53,29 @@ char *ami_utf8_easy(char *string)
return NULL;
}
}
+
+char *ami_to_utf8_easy(char *string)
+{
+ char *localtext;
+
+ if(utf8_from_local_encoding(string,strlen(string),&localtext) == UTF8_CONVERT_OK)
+ {
+ return localtext;
+ }
+ else
+ {
+ return NULL;
+ }
+}
+
+utf8_convert_ret utf8_from_local_encoding(const char *string, size_t len,
+ char **result)
+{
+ ULONG *charset;
+ char *encname;
+
+ charset = GetDiskFontCtrl(DFCTRL_CHARSET);
+ encname = parserutils_charset_mibenum_to_name(charset);
+
+ return utf8_from_enc(string,encname,len,result);
+}
diff --git a/amiga/utf8.h b/amiga/utf8.h
index fd863ca8a..a328b4bef 100755
--- a/amiga/utf8.h
+++ b/amiga/utf8.h
@@ -20,4 +20,5 @@
#define AMIGA_UTF8_H
char *ami_utf8_easy(char *string);
void ami_utf8_free(char *ptr);
+char *ami_to_utf8_easy(char *string);
#endif