diff options
-rwxr-xr-x | amiga/iff_cset.h | 32 | ||||
-rw-r--r-- | amiga/options.h | 5 | ||||
-rwxr-xr-x | amiga/utf8.c | 26 | ||||
-rwxr-xr-x | amiga/utf8.h | 1 |
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 |