merge m17n patch

add libwc
This commit is contained in:
Fumitoshi UKAI
2003-09-22 21:02:15 +00:00
parent 6d122c7f45
commit 604c11affe
218 changed files with 227575 additions and 2474 deletions

399
rc.c
View File

@@ -1,4 +1,4 @@
/* $Id: rc.c,v 1.86 2003/09/22 17:37:41 ukai Exp $ */
/* $Id: rc.c,v 1.87 2003/09/22 21:02:20 ukai Exp $ */
/*
* Initialization file etc.
*/
@@ -8,7 +8,6 @@
#include <errno.h>
#include "parsetag.h"
#include "local.h"
#include "terms.h"
#include <stdlib.h>
struct param_ptr {
@@ -17,7 +16,7 @@ struct param_ptr {
int inputtype;
void *varptr;
char *comment;
struct sel_c *select;
void *select;
};
struct param_section {
@@ -44,7 +43,7 @@ static int RC_table_size;
#ifdef USE_COLOR
#define P_COLOR 6
#endif
#ifdef JP_CHARSET
#ifdef USE_M17N
#define P_CODE 7
#endif
#define P_PIXELS 8
@@ -52,15 +51,18 @@ static int RC_table_size;
#define P_SCALE 10
#if LANG == JA
static wc_ces OptionCharset = WC_CES_EUC_JP;
static int OptionEncode = FALSE;
#define CMT_HELPER "<22><><EFBFBD><EFBFBD><EFBFBD>ӥ塼<D3A5><E5A1BC><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD>"
#define CMT_TABSTOP "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
#define CMT_INDENT_INCR "HTML<4D><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><CEA5><EFBFBD><EFBFBD>ǥ<EFBFBD><C7A5><EFBFBD><EFBFBD><EFBFBD>"
#define CMT_PIXEL_PER_CHAR "ʸ<><CAB8><EFBFBD><EFBFBD> (4.0...32.0)"
#define CMT_PIXEL_PER_LINE "<22><><EFBFBD>Ԥι⤵ (4.0...64.0)"
#define CMT_PAGERLINE "<22>ڡ<EFBFBD><DAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѥ<EFBFBD><D1A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD><C2B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD>"
#define CMT_HISTORY "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD>"
#define CMT_HISTSIZE "<22>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>URL<52><4C><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD>"
#define CMT_SAVEHIST "URL<52><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸"
#define CMT_KANJICODE "ɽ<><C9BD><EFBFBD>Ѵ<EFBFBD><D1B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
#define CMT_FRAME "<22>ե졼<D5A5><ECA1BC><EFBFBD>μ<EFBFBD>ưɽ<C6B0><C9BD>"
#define CMT_ARGV_IS_URL "scheme <20>Τʤ<CEA4><CAA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> URL <20>Ȥߤʤ<DFA4>"
#define CMT_TSELF "target<65><74>̤<EFBFBD><CCA4><EFBFBD><EFBFBD><EFBFBD>ξ<EFBFBD><CEBE><EFBFBD><EFBFBD><EFBFBD>_self<6C><66><EFBFBD><EFBFBD><EFBFBD>Ѥ<EFBFBD><D1A4><EFBFBD>"
@@ -144,8 +146,6 @@ static int RC_table_size;
#define CMT_ACCEPTENCODING "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ(Accept-Encoding:)"
#define CMT_ACCEPTMEDIA "<22><><EFBFBD><EFBFBD><EFBFBD>Ĥ<EFBFBD><C4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǥ<EFBFBD><C7A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Accept:)"
#define CMT_ACCEPTLANG "<22><><EFBFBD><EFBFBD><EFBFBD>Ĥ<EFBFBD><C4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Accept-Language:)"
#define CMT_DOCUMENTCODE "ʸ<><CAB8><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
#define CMT_SYSTEMCODE "<22><><EFBFBD><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
#define CMT_MARK_ALL_PAGES "<22><><EFBFBD>ƤΥڡ<CEA5><DAA1><EFBFBD><EFBFBD><EFBFBD>URL<52><4C><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󥯤ˤ<F3A5AFA4><CBA4><EFBFBD>"
#define CMT_WRAP "<22>ޤ<EFBFBD><DEA4>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD>"
#define CMT_VIEW_UNSEENOBJECTS "<22>طʲ<D8B7><CAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؤΥ<D8A4><CEA5>󥯤<EFBFBD><F3A5AFA4><EFBFBD><EFBFBD><EFBFBD>"
@@ -203,6 +203,30 @@ static int RC_table_size;
#define CMT_MIGEMO_COMMAND "Migemo<6D><6F><EFBFBD>ޥ<EFBFBD><DEA5><EFBFBD>"
#endif /* USE_MIGEMO */
#ifdef USE_M17N
#define CMT_DISPLAY_CHARSET "ɽ<><C9BD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
#define CMT_DOCUMENT_CHARSET "ʸ<><CAB8><EFBFBD><EFBFBD>ɸ<EFBFBD><C9B8><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
#define CMT_AUTO_DETECT "ʸ<><CAB8><EFBFBD><EFBFBD><EFBFBD>ɤ߹<C9A4><DFB9>߻<EFBFBD><DFBB><EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤμ<C9A4>ưȽ<C6B0><C8BD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD>"
#define CMT_SYSTEM_CHARSET "<22><><EFBFBD><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
#define CMT_FOLLOW_LOCALE "Locale(LC_CTYPE) <20>˽<EFBFBD><CBBD>äƥ<C3A4><C6A5><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤ<EFBFBD><C9A4><EFBFBD><EFBFBD><EFBFBD>"
#define CMT_EXT_HALFDUMP "ɽ<><C9BD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤ<EFBFBD> halfdump <20>ν<EFBFBD><CEBD>Ϥ<EFBFBD><CFA4>Ԥ<EFBFBD>"
#define CMT_USE_WIDE "ʣ<><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD>"
#define CMT_USE_COMBINING "<22><><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD>"
#define CMT_USE_LANGUAGE_TAG "Unicode <20>θ<EFBFBD><CEB8>쥿<EFBFBD><ECA5BF><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD>"
#define CMT_UCS_CONV "Unicode<64><65><EFBFBD>𤷤<EFBFBD><F0A4B7A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>"
#define CMT_PRE_CONV "ʸ<><CAB8><EFBFBD><EFBFBD><EFBFBD>ɤ߹<C9A4><DFB9>߻<EFBFBD><DFBB><EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤ<EFBFBD><C9A4>Ѵ<EFBFBD><D1B4><EFBFBD><EFBFBD><EFBFBD>"
#define CMT_SEARCH_CONV "<22><><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤ<EFBFBD><C9A4>Ѵ<EFBFBD><D1B4><EFBFBD><EFBFBD><EFBFBD>"
#define CMT_FIX_WIDTH_CONV "ʸ<><CAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѥ<EFBFBD><D1A4><EFBFBD><EFBFBD>Ѵ<EFBFBD><D1B4>򤷤ʤ<F2A4B7A4>"
#define CMT_USE_GB12345_MAP "GB 12345 <20><> Unicode <20>ޥåפ<C3A5> GB 2312 <20>Ѥ˻Ȥ<CBBB>"
#define CMT_USE_JISX0201 "ISO-2022-JP <20><> JIS X 0201-Roman <20><><EFBFBD>Ȥ<EFBFBD>"
#define CMT_USE_JISC6226 "ISO-2022-JP <20><> JIS C 6226:1978(<28><>JIS) <20><><EFBFBD>Ȥ<EFBFBD>"
#define CMT_USE_JISX0201K "JIS X 0201-Katakana <20><><EFBFBD>Ȥ<EFBFBD>"
#define CMT_USE_JISX0212 "JIS X 0212:1990(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20><><EFBFBD>Ȥ<EFBFBD>"
#define CMT_USE_JISX0213 "JIS X 0213:2000(2000JIS) <20><><EFBFBD>Ȥ<EFBFBD>"
#define CMT_STRICT_ISO2022 "<22><><EFBFBD>ʤ<EFBFBD> ISO-2022-JP/KR/CN <20><><EFBFBD>Ȥ<EFBFBD>"
#define CMT_GB18030_AS_UCS "GB18030 <20><> 4<>Х<EFBFBD><D0A5><EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD> Unicode <20>Ȥ<EFBFBD><C8A4>ư<EFBFBD><C6B0><EFBFBD>"
#endif
#define CMT_KEYMAP_FILE "keymap<61>ե<EFBFBD><D5A5><EFBFBD><EFBFBD><EFBFBD>"
#else /* LANG != JA */
@@ -210,13 +234,13 @@ static int RC_table_size;
#define CMT_HELPER "External Viewer Setup"
#define CMT_TABSTOP "Tab width in characters"
#define CMT_INDENT_INCR "Indent for HTML rendering"
#define CMT_PIXEL_PER_CHAR "Number of pixels per character (4.0...32.0)"
#define CMT_PIXEL_PER_LINE "Number of pixels per line (4.0...64.0)"
#define CMT_PAGERLINE "Number of remembered lines when used as a pager"
#define CMT_HISTORY "Use URL history"
#define CMT_HISTSIZE "Number of remembered URL"
#define CMT_SAVEHIST "Save URL history"
/* #define CMT_KANJICODE "Display Kanji Code" */
#define CMT_FRAME "Render frames automatically"
#define CMT_ARGV_IS_URL "Treat argument without scheme as URL"
#define CMT_TSELF "Use _self as default target"
@@ -300,8 +324,6 @@ static int RC_table_size;
#define CMT_ACCEPTENCODING "Accept-Encoding header"
#define CMT_ACCEPTMEDIA "Accept header"
#define CMT_ACCEPTLANG "Accept-Language header"
/* #define CMT_DOCUMENTCODE "Document Charset" */
/* #define CMT_SYSTEMCODE "System Kanji Code" */
#define CMT_MARK_ALL_PAGES "Treat URL-like strings as links in all pages"
#define CMT_WRAP "Wrap search"
#define CMT_VIEW_UNSEENOBJECTS "Display unseen objects (e.g. bgimage tag)"
@@ -358,6 +380,30 @@ static int RC_table_size;
#define CMT_MIGEMO_COMMAND "Migemo command"
#endif /* USE_MIGEMO */
#ifdef USE_M17N
#define CMT_DISPLAY_CHARSET "Display charset"
#define CMT_DOCUMENT_CHARSET "Default document charset"
#define CMT_AUTO_DETECT "Automatic charset detect when loading"
#define CMT_SYSTEM_CHARSET "System charset"
#define CMT_FOLLOW_LOCALE "System charset follows locale(LC_CTYPE)"
#define CMT_EXT_HALFDUMP "Output halfdump with display charset"
#define CMT_USE_WIDE "Use multi column characters"
#define CMT_USE_COMBINING "Use combining characters"
#define CMT_USE_LANGUAGE_TAG "Use Unicode language tags"
#define CMT_UCS_CONV "Charset conversion using Unicode map"
#define CMT_PRE_CONV "Charset conversion when loading"
#define CMT_SEARCH_CONV "Adjust search string for document charset"
#define CMT_FIX_WIDTH_CONV "Fix character width when conversion"
#define CMT_USE_GB12345_MAP "Use GB 12345 Unicode map instead of GB 2312's"
#define CMT_USE_JISX0201 "Use JIS X 0201 Roman for ISO-2022-JP"
#define CMT_USE_JISC6226 "Use JIS C 6226:1978 for ISO-2022-JP"
#define CMT_USE_JISX0201K "Use JIS X 0201 Katakana"
#define CMT_USE_JISX0212 "Use JIS X 0212:1990 (Supplemental Kanji)"
#define CMT_USE_JISX0213 "Use JIS X 0213:2000 (2000JIS)"
#define CMT_STRICT_ISO2022 "Strict ISO-2022-JP/KR/CN"
#define CMT_GB18030_AS_UCS "Treat 4 bytes char. of GB18030 as Unicode"
#endif
#define CMT_KEYMAP_FILE "keymap file"
#endif /* LANG != JA */
@@ -365,6 +411,9 @@ static int RC_table_size;
#define PI_TEXT 0
#define PI_ONOFF 1
#define PI_SEL_C 2
#ifdef USE_M17N
#define PI_CODE 3
#endif
struct sel_c {
int value;
@@ -372,32 +421,6 @@ struct sel_c {
char *text;
};
#ifdef JP_CHARSET
static struct sel_c kcodestr[] = {
{CODE_EUC, "E", STR_EUC},
{CODE_SJIS, "S", STR_SJIS},
{CODE_JIS_j, "j", STR_JIS_j},
{CODE_JIS_N, "N", STR_JIS_N},
{CODE_JIS_m, "m", STR_JIS_m},
{CODE_JIS_n, "n", STR_JIS_n},
{0, NULL, NULL}
};
static struct sel_c dcodestr[] = {
{'\0', "0", "auto detect"},
{CODE_EUC, "E", STR_EUC},
{CODE_SJIS, "S", STR_SJIS},
{CODE_INNER_EUC, "I", STR_INNER_EUC},
{0, NULL, NULL}
};
static struct sel_c scodestr[] = {
{CODE_EUC, "E", STR_EUC},
{CODE_SJIS, "S", STR_SJIS},
{0, NULL, NULL}
};
#endif /* JP_CHARSET */
#ifdef USE_COLOR
static struct sel_c colorstr[] = {
#if LANG == JA
@@ -451,6 +474,7 @@ static struct sel_c defaulturls[] = {
#endif
{0, NULL, NULL}
};
#ifdef USE_MOUSE
static struct sel_c wheelmode[] = {
#if LANG == JA
@@ -487,22 +511,28 @@ static struct sel_c badcookiestr[] = {
};
#endif /* USE_COOKIE */
#ifdef USE_M17N
static wc_ces_list *display_charset_str = NULL;
static wc_ces_list *document_charset_str = NULL;
static wc_ces_list *system_charset_str = NULL;
static struct sel_c auto_detect_str[] = {
{N_S(WC_OPT_DETECT_OFF), "OFF"},
{N_S(WC_OPT_DETECT_ISO_2022), "Only ISO 2022"},
{N_S(WC_OPT_DETECT_ON), "ON"},
{0, NULL, NULL}
};
#endif
struct param_ptr params1[] = {
{"tabstop", P_NZINT, PI_TEXT, (void *)&Tabstop, CMT_TABSTOP, NULL},
{"indent_incr", P_NZINT, PI_TEXT, (void *)&IndentIncr, CMT_INDENT_INCR,
NULL},
{"pixel_per_char", P_PIXELS, PI_TEXT, (void *)&pixel_per_char,
CMT_PIXEL_PER_CHAR, NULL},
#ifdef USE_IMAGE
{"pixel_per_line", P_PIXELS, PI_TEXT, (void *)&pixel_per_line,
CMT_PIXEL_PER_LINE, NULL},
#endif
#ifdef JP_CHARSET
{"kanjicode", P_CODE, PI_SEL_C, (void *)&DisplayCode, CMT_KANJICODE,
kcodestr},
{"document_code", P_CODE, PI_SEL_C, (void *)&DocumentCode,
CMT_DOCUMENTCODE, dcodestr},
{"system_code", P_CODE, PI_SEL_C, (void *)&SystemCode, CMT_SYSTEMCODE,
scodestr},
#endif /* JP_CHARSET */
{"frame", P_CHARINT, PI_ONOFF, (void *)&RenderFrame, CMT_FRAME, NULL},
{"target_self", P_CHARINT, PI_ONOFF, (void *)&TargetSelf, CMT_TSELF, NULL},
{"open_tab_blank", P_INT, PI_ONOFF, (void *)&open_tab_blank,
@@ -527,10 +557,8 @@ struct param_ptr params1[] = {
{"multicol", P_INT, PI_ONOFF, (void *)&multicolList, CMT_MULTICOL, NULL},
{"alt_entity", P_CHARINT, PI_ONOFF, (void *)&UseAltEntity, CMT_ALT_ENTITY,
NULL},
#ifndef KANJI_SYMBOLS
{"graphic_char", P_CHARINT, PI_ONOFF, (void *)&UseGraphicChar,
CMT_GRAPHIC_CHAR, NULL},
#endif
{"fold_textarea", P_CHARINT, PI_ONOFF, (void *)&FoldTextarea,
CMT_FOLD_TEXTAREA, NULL},
{"display_ins_del", P_INT, PI_ONOFF, (void *)&displayInsDel,
@@ -570,26 +598,27 @@ struct param_ptr params1[] = {
struct param_ptr params2[] = {
{"color", P_INT, PI_ONOFF, (void *)&useColor, CMT_COLOR, NULL},
{"basic_color", P_COLOR, PI_SEL_C, (void *)&basic_color, CMT_B_COLOR,
colorstr},
(void *)colorstr},
{"anchor_color", P_COLOR, PI_SEL_C, (void *)&anchor_color, CMT_A_COLOR,
colorstr},
(void *)colorstr},
{"image_color", P_COLOR, PI_SEL_C, (void *)&image_color, CMT_I_COLOR,
colorstr},
(void *)colorstr},
{"form_color", P_COLOR, PI_SEL_C, (void *)&form_color, CMT_F_COLOR,
colorstr},
(void *)colorstr},
#ifdef USE_BG_COLOR
{"mark_color", P_COLOR, PI_SEL_C, (void *)&mark_color, CMT_MARK_COLOR,
colorstr},
{"bg_color", P_COLOR, PI_SEL_C, (void *)&bg_color, CMT_BG_COLOR, colorstr},
(void *)colorstr},
{"bg_color", P_COLOR, PI_SEL_C, (void *)&bg_color, CMT_BG_COLOR,
(void *)colorstr},
#endif /* USE_BG_COLOR */
{"active_style", P_INT, PI_ONOFF, (void *)&useActiveColor,
CMT_ACTIVE_STYLE, NULL},
{"active_color", P_COLOR, PI_SEL_C, (void *)&active_color, CMT_C_COLOR,
colorstr},
(void *)colorstr},
{"visited_anchor", P_INT, PI_ONOFF, (void *)&useVisitedColor,
CMT_VISITED_ANCHOR, NULL},
{"visited_color", P_COLOR, PI_SEL_C, (void *)&visited_color, CMT_V_COLOR,
colorstr},
(void *)colorstr},
{NULL, 0, 0, NULL, NULL, NULL},
};
#endif /* USE_COLOR */
@@ -629,7 +658,7 @@ struct param_ptr params3[] = {
{"reverse_mouse", P_INT, PI_ONOFF, (void *)&reverse_mouse,
CMT_REVERSE_MOUSE, NULL},
{"relative_wheel_scroll", P_INT, PI_SEL_C, (void *)&relative_wheel_scroll,
CMT_RELATIVE_WHEEL_SCROLL, wheelmode},
CMT_RELATIVE_WHEEL_SCROLL, (void *)wheelmode},
{"relative_wheel_scroll_ratio", P_INT, PI_TEXT,
(void *)&relative_wheel_scroll_ratio,
CMT_RELATIVE_WHEEL_SCROLL_RATIO, NULL},
@@ -728,7 +757,7 @@ struct param_ptr params8[] = {
{"accept_cookie", P_INT, PI_ONOFF, (void *)&accept_cookie,
CMT_ACCEPTCOOKIE, NULL},
{"accept_bad_cookie", P_INT, PI_SEL_C, (void *)&accept_bad_cookie,
CMT_ACCEPTBADCOOKIE, badcookiestr},
CMT_ACCEPTBADCOOKIE, (void *)badcookiestr},
{"cookie_reject_domains", P_STRING, PI_TEXT,
(void *)&cookie_reject_domains, CMT_COOKIE_REJECT_DOMAINS, NULL},
{"cookie_accept_domains", P_STRING, PI_TEXT,
@@ -736,6 +765,7 @@ struct param_ptr params8[] = {
{NULL, 0, 0, NULL, NULL, NULL},
};
#endif
struct param_ptr params9[] = {
{"passwd_file", P_STRING, PI_TEXT, (void *)&passwd_file, CMT_PASSWDFILE,
NULL},
@@ -762,15 +792,14 @@ struct param_ptr params9[] = {
{"retry_http", P_INT, PI_ONOFF, (void *)&retryAsHttp, CMT_RETRY_HTTP,
NULL},
{"default_url", P_INT, PI_SEL_C, (void *)&DefaultURLString,
CMT_DEFAULT_URL,
defaulturls},
CMT_DEFAULT_URL, (void *)defaulturls},
{"follow_redirection", P_INT, PI_TEXT, &FollowRedirection,
CMT_FOLLOW_REDIRECTION, NULL},
{"meta_refresh", P_CHARINT, PI_ONOFF, (void *)&MetaRefresh,
CMT_META_REFRESH, NULL},
#ifdef INET6
{"dns_order", P_INT, PI_SEL_C, (void *)&DNS_order, CMT_DNS_ORDER,
dnsorders},
(void *)dnsorders},
#endif /* INET6 */
#ifdef USE_NNTP
{"nntpserver", P_STRING, PI_TEXT, (void *)&NNTP_server, CMT_NNTP_SERVER,
@@ -781,6 +810,60 @@ struct param_ptr params9[] = {
{NULL, 0, 0, NULL, NULL, NULL},
};
#ifdef USE_M17N
struct param_ptr params10[] = {
{"display_charset", P_CODE, PI_CODE, (void *)&DisplayCharset,
CMT_DISPLAY_CHARSET, (void *)&display_charset_str},
{"document_charset", P_CODE, PI_CODE, (void *)&DocumentCharset,
CMT_DOCUMENT_CHARSET, (void *)&document_charset_str},
{"auto_detect", P_CHARINT, PI_SEL_C, (void *)&WcOption.auto_detect,
CMT_AUTO_DETECT, (void *)auto_detect_str},
{"system_charset", P_CODE, PI_CODE, (void *)&SystemCharset,
CMT_SYSTEM_CHARSET, (void *)&system_charset_str},
{"follow_locale", P_CHARINT, PI_ONOFF, (void *)&FollowLocale,
CMT_FOLLOW_LOCALE, NULL},
{"ext_halfdump", P_CHARINT, PI_ONOFF, (void *)&ExtHalfdump,
CMT_EXT_HALFDUMP, NULL},
{"use_wide", P_CHARINT, PI_ONOFF, (void *)&WcOption.use_wide, CMT_USE_WIDE,
NULL},
{"use_combining", P_CHARINT, PI_ONOFF, (void *)&WcOption.use_combining,
CMT_USE_COMBINING, NULL},
#ifdef USE_UNICODE
{"use_language_tag", P_CHARINT, PI_ONOFF,
(void *)&WcOption.use_language_tag, CMT_USE_LANGUAGE_TAG, NULL},
{"ucs_conv", P_CHARINT, PI_ONOFF, (void *)&WcOption.ucs_conv, CMT_UCS_CONV,
NULL},
#endif
{"pre_conv", P_CHARINT, PI_ONOFF, (void *)&WcOption.pre_conv, CMT_PRE_CONV,
NULL},
{"search_conv", P_CHARINT, PI_ONOFF, (void *)&SearchConv, CMT_SEARCH_CONV,
NULL},
{"fix_width_conv", P_CHARINT, PI_ONOFF, (void *)&WcOption.fix_width_conv,
CMT_FIX_WIDTH_CONV, NULL},
#ifdef USE_UNICODE
{"use_gb12345_map", P_CHARINT, PI_ONOFF, (void *)&WcOption.use_gb12345_map,
CMT_USE_GB12345_MAP, NULL},
#endif
{"use_jisx0201", P_CHARINT, PI_ONOFF, (void *)&WcOption.use_jisx0201,
CMT_USE_JISX0201, NULL},
{"use_jisc6226", P_CHARINT, PI_ONOFF, (void *)&WcOption.use_jisc6226,
CMT_USE_JISC6226, NULL},
{"use_jisx0201k", P_CHARINT, PI_ONOFF, (void *)&WcOption.use_jisx0201k,
CMT_USE_JISX0201K, NULL},
{"use_jisx0212", P_CHARINT, PI_ONOFF, (void *)&WcOption.use_jisx0212,
CMT_USE_JISX0212, NULL},
{"use_jisx0213", P_CHARINT, PI_ONOFF, (void *)&WcOption.use_jisx0213,
CMT_USE_JISX0213, NULL},
{"strict_iso2022", P_CHARINT, PI_ONOFF, (void *)&WcOption.strict_iso2022,
CMT_STRICT_ISO2022, NULL},
#ifdef USE_UNICODE
{"gb18030_as_ucs", P_CHARINT, PI_ONOFF, (void *)&WcOption.gb18030_as_ucs,
CMT_GB18030_AS_UCS, NULL},
#endif
{NULL, 0, 0, NULL, NULL, NULL},
};
#endif
struct param_section sections[] = {
#if LANG == JA
{"ɽ<EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD>", params1},
@@ -798,6 +881,10 @@ struct param_section sections[] = {
#ifdef USE_COOKIE
{"<EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", params8},
#endif
#ifdef USE_M17N
{"ʸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", params10},
#endif
#else /* LANG != JA */
{"Display Settings", params1},
#ifdef USE_COLOR
@@ -814,6 +901,9 @@ struct param_section sections[] = {
#ifdef USE_COOKIE
{"Cookie Settings", params8},
#endif
#ifdef USE_M17N
{"Charset Settings", params10},
#endif
#endif /* LANG != JA */
{NULL, NULL}
};
@@ -919,13 +1009,13 @@ show_params(FILE * fp)
fputs("\nconfiguration parameters\n", fp);
for (j = 0; sections[j].name != NULL; j++) {
#ifdef JP_CHARSET
if (InnerCode != DisplayCode)
cmt = conv(sections[j].name, InnerCode, DisplayCode)->ptr;
#if LANG == JA
if (!OptionEncode)
cmt = wc_conv(sections[j].name, OptionCharset, InnerCharset)->ptr;
else
#endif /* JP_CHARSET */
#endif
cmt = sections[j].name;
fprintf(fp, " section[%d]: %s\n", j, cmt);
fprintf(fp, " section[%d]: %s\n", j, conv_to_system(cmt));
i = 0;
while (sections[j].params[i].name) {
switch (sections[j].params[i].type) {
@@ -952,9 +1042,9 @@ show_params(FILE * fp)
t = "color";
break;
#endif
#ifdef JP_CHARSET
#ifdef USE_M17N
case P_CODE:
t = "E|S|j|N|m|n";
t = "charset";
break;
#endif
case P_PIXELS:
@@ -964,18 +1054,19 @@ show_params(FILE * fp)
t = "percent";
break;
}
#ifdef JP_CHARSET
if (InnerCode != DisplayCode)
cmt = conv(sections[j].params[i].comment,
InnerCode, DisplayCode)->ptr;
#if LANG == JA
if (!OptionEncode)
cmt = wc_conv(sections[j].params[i].comment,
OptionCharset, InnerCharset)->ptr;
else
#endif /* JP_CHARSET */
#endif
cmt = sections[j].params[i].comment;
l = 30 - (strlen(sections[j].params[i].name) + strlen(t));
if (l < 0)
l = 1;
fprintf(fp, " -o %s=<%s>%*s%s\n",
sections[j].params[i].name, t, l, " ", cmt);
sections[j].params[i].name, t, l, " ",
conv_to_system(cmt));
i++;
}
}
@@ -1050,64 +1141,6 @@ str_to_color(char *value)
}
#endif
#ifdef JP_CHARSET
char
str_to_code(char *str)
{
if (str == NULL)
return CODE_ASCII;
switch (*str) {
case CODE_ASCII:
return CODE_ASCII;
case CODE_EUC:
case 'e':
return CODE_EUC;
case CODE_SJIS:
case 's':
return CODE_SJIS;
case CODE_JIS_n:
return CODE_JIS_n;
case CODE_JIS_m:
return CODE_JIS_m;
case CODE_JIS_N:
return CODE_JIS_N;
case CODE_JIS_j:
return CODE_JIS_j;
case CODE_JIS_J:
return CODE_JIS_J;
case CODE_INNER_EUC:
return CODE_INNER_EUC;
}
return CODE_ASCII;
}
char *
code_to_str(char code)
{
switch (code) {
case CODE_ASCII:
return STR_ASCII;
case CODE_EUC:
return STR_EUC;
case CODE_SJIS:
return STR_SJIS;
case CODE_JIS_n:
return STR_JIS_n;
case CODE_JIS_m:
return STR_JIS_m;
case CODE_JIS_N:
return STR_JIS_N;
case CODE_JIS_j:
return STR_JIS_j;
case CODE_JIS_J:
return STR_JIS_J;
case CODE_INNER_EUC:
return STR_INNER_EUC;
}
return "unknown";
}
#endif
static int
set_param(char *name, char *value)
{
@@ -1157,9 +1190,10 @@ set_param(char *name, char *value)
*(int *)p->varptr = str_to_color(value);
break;
#endif
#ifdef JP_CHARSET
#ifdef USE_M17N
case P_CODE:
*(char *)p->varptr = str_to_code(value);
*(wc_ces *) p->varptr =
wc_guess_charset_short(value, *(wc_ces *) p->varptr);
break;
#endif
case P_PIXELS:
@@ -1258,7 +1292,7 @@ parse_proxy()
#ifdef USE_GOPHER
if (non_null(GOPHER_proxy))
parseURL(GOPHER_proxy, &GOPHER_proxy_parsed, NULL);
#endif /* USE_GOPHER */
#endif
if (non_null(FTP_proxy))
parseURL(FTP_proxy, &FTP_proxy_parsed, NULL);
if (non_null(NO_proxy))
@@ -1361,6 +1395,12 @@ init_rc(void)
if (i > 1 && rc_dir[i - 1] == '/')
rc_dir[i - 1] = '\0';
#ifdef USE_M17N
display_charset_str = wc_get_ces_list();
document_charset_str = display_charset_str;
system_charset_str = display_charset_str;
#endif
if (stat(rc_dir, &st) < 0) {
if (errno == ENOENT) { /* no directory */
if (do_mkdir(rc_dir, 0700) < 0) {
@@ -1428,6 +1468,8 @@ static char optionpanel_src1[] =
</form><br>\
<form method=internal action=option>";
static Str optionpanel_str = NULL;
static Str
to_str(struct param_ptr *p)
{
@@ -1435,6 +1477,10 @@ to_str(struct param_ptr *p)
case P_INT:
#ifdef USE_COLOR
case P_COLOR:
#endif
#ifdef USE_M17N
case P_CODE:
return Sprintf("%d", (int)(*(wc_ces *)p->varptr));
#endif
case P_NZINT:
return Sprintf("%d", *(int *)p->varptr);
@@ -1443,15 +1489,13 @@ to_str(struct param_ptr *p)
case P_CHARINT:
return Sprintf("%d", *(char *)p->varptr);
case P_CHAR:
#ifdef JP_CHARSET
case P_CODE:
#endif
return Sprintf("%c", *(char *)p->varptr);
case P_STRING:
#if defined(USE_SSL) && defined(USE_SSL_VERIFY)
case P_SSLPATH:
#endif
return Strnew_charp(*(char **)p->varptr);
/* SystemCharset -> InnerCharset */
return Strnew_charp(conv_from_system(*(char **)p->varptr));
case P_PIXELS:
case P_SCALE:
return Sprintf("%g", *(double *)p->varptr);
@@ -1463,12 +1507,36 @@ to_str(struct param_ptr *p)
Buffer *
load_option_panel(void)
{
Str src = Sprintf(optionpanel_src1, html_quote(w3m_version),
html_quote(localCookie()->ptr), CMT_HELPER);
Str str;
struct param_ptr *p;
struct sel_c *s;
#ifdef USE_M17N
wc_ces_list *c;
#endif
int x, i;
Str tmp;
Buffer *buf;
if (optionpanel_str == NULL)
optionpanel_str = Sprintf(optionpanel_src1, w3m_version,
html_quote(Local_cookie->ptr), CMT_HELPER);
#ifdef LANG == JA
if (!OptionEncode) {
optionpanel_str =
wc_Str_conv(optionpanel_str, OptionCharset, InnerCharset);
for (i = 0; sections[i].name != NULL; i++) {
sections[i].name =
wc_conv(sections[i].name, OptionCharset, InnerCharset)->ptr;
for (p = sections[i].params; p->name; p++)
p->comment =
wc_conv(p->comment, OptionCharset, InnerCharset)->ptr;
}
for (s = colorstr; s->text; s++)
s->text = wc_conv(s->text, OptionCharset, InnerCharset)->ptr;
OptionEncode = TRUE;
}
#endif
src = Strdup(optionpanel_str);
Strcat_charp(src, "<table><tr><td>");
for (i = 0; sections[i].name != NULL; i++) {
@@ -1499,25 +1567,32 @@ load_option_panel(void)
case PI_SEL_C:
tmp = to_str(p);
Strcat_m_charp(src, "<select name=", p->name, ">", NULL);
for (s = p->select; s->text != NULL; s++) {
for (s = (struct sel_c *)p->select; s->text != NULL; s++) {
Strcat_charp(src, "<option value=");
Strcat(src, Sprintf("%s\n", s->cvalue));
if ((p->type != P_CHAR &&
#ifdef JP_CHARSET
p->type != P_CODE &&
#endif
s->value == atoi(tmp->ptr)) || ((p->type == P_CHAR
#ifdef JP_CHARSET
|| p->type == P_CODE
#endif
)
&& (char)(s->value) ==
*(tmp->ptr)))
if ((p->type != P_CHAR && s->value == atoi(tmp->ptr)) ||
(p->type == P_CHAR && (char)s->value == *(tmp->ptr)))
Strcat_charp(src, " selected");
Strcat_char(src, '>');
Strcat_charp(src, s->text);
}
Strcat_charp(src, "</select>");
break;
#ifdef USE_M17N
case PI_CODE:
tmp = to_str(p);
Strcat_m_charp(src, "<select name=", p->name, ">", NULL);
for (c = *(wc_ces_list **)p->select; c->desc != NULL; c++) {
Strcat_charp(src, "<option value=");
Strcat(src, Sprintf("%s\n", c->name));
if (c->id == atoi(tmp->ptr))
Strcat_charp(src, " selected");
Strcat_char(src, '>');
Strcat_charp(src, c->desc);
}
Strcat_charp(src, "</select>");
break;
#endif
}
Strcat_charp(src, "</td></tr>\n");
p++;
@@ -1527,13 +1602,23 @@ load_option_panel(void)
Strcat_charp(src, "</table><hr width=50%>");
}
Strcat_charp(src, "</table></form></body></html>");
return loadHTMLString(src);
buf = loadHTMLString(src);
#ifdef USE_M17N
if (buf)
#if LANG == JA
buf->document_charset = OptionCharset;
#else
buf->document_charset = SystemCharset;
#endif
#endif
return buf;
}
void
panel_set_option(struct parsed_tagarg *arg)
{
FILE *f = NULL;
char *p;
if (no_rc_dir) {
disp_message("There's no ~/.w3m directory... config not saved", FALSE);
@@ -1545,9 +1630,13 @@ panel_set_option(struct parsed_tagarg *arg)
}
}
while (arg) {
if (set_param(arg->arg, arg->value)) {
if (f)
fprintf(f, "%s %s\n", arg->arg, arg->value);
/* InnerCharset -> SystemCharset */
if (arg->value) {
p = conv_to_system(arg->value);
if (set_param(arg->arg, p)) {
if (f)
fprintf(f, "%s %s\n", arg->arg, p);
}
}
arg = arg->next;
}