sj3/eucmessage.c

499 lines
18 KiB
C

/*
* Copyright (c) 1994 Sony Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY CLAIM,
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
* THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Except as contained in this notice, the name of Sony Corporation
* shall not be used in advertising or otherwise to promote the sale, use
* or other dealings in this Software without prior written authorization
* from Sony Corporation.
*
*/
#include "wchar16.h"
#include <locale.h>
#include "kctype.h"
#include "sj3libsj3.h"
#include "sj2.h"
unsigned char* EucMessages[] = {
(unsigned char*)"\243\323\243\312\243\263\241\241\241\241\241\241\241\241\241\241\241\241\241\241",
(unsigned char*)"Buffer\241\241\241\241",
(unsigned char*)"Unbuffer\241\241",
(unsigned char*)"\301\264\244\322\244\351\244\254\244\312",
(unsigned char*)"\301\264\245\253\245\277\245\253\245\312",
(unsigned char*)"\310\276\245\253\245\277\245\253\245\312",
(unsigned char*)"\301\264\245\242\245\353\245\325\245\241",
(unsigned char*)"\310\276\245\242\245\353\245\325\245\241",
(unsigned char*)" \312\321\264\271 \314\265\312\321 etc. \267\350\304\352 code \310\276\245\242 \301\264\245\242 \310\276\245\253 \301\264\245\253 \244\253\244\312",
(unsigned char*)"\244\275\244\316\302\276\241\241\241\241\241\241\241\241\241\241\241\241\241\241",
(unsigned char*)" \305\320\317\277 \276\303\265\356 Help sjrc \312\324\275\270 \272\306\300\334 \241\241\241\241 \241\241\241\241 \241\241\241\241 \241\241\241\241",
(unsigned char*)"Help\241\241Mode",
(unsigned char*)" \245\254\245\244\245\311\241\246\245\351\245\244\245\363 %s \244\313\244\312\244\352\244\336\244\267\244\277 ",
(unsigned char*)"ShiftJIS\241\241",
(unsigned char*)"\241\241\243\305\243\325\243\303\241\241",
(unsigned char*)"\243\305\243\325\243\303\312\344\275\365",
(unsigned char*)"\241\241\243\312\243\311\243\323\241\241",
(unsigned char*)"\243\312\243\311\243\323\312\344\275\365",
(unsigned char*)"\241\241\241\241\266\350\305\300\241\241",
(unsigned char*)"\266\350\305\300\241\241\312\344\275\365",
(unsigned char*)"\305\320\317\277",
(unsigned char*)" \310\317\260\317\244\362\273\330\304\352\244\267\244\306\244\257\244\300\244\265\244\244 ",
(unsigned char*)" \264\301\273\372 [%s] : \306\311\244\337\306\376\316\317 ",
(unsigned char*)" \264\301\273\372 [%s] : \306\311\244\337 [%s] : \311\312\273\354 [%s] (y/n)? ",
(unsigned char*)" \264\301\273\372 [%s] : \306\311\244\337 [%s] (y/n)? ",
(unsigned char*)" \312\270\313\241\276\360\312\363 : 1.\314\276\273\354 2.\314\276\273\372 3.\314\276\301\260 4.\303\317\314\276 5.\245\265\312\321\306\260\273\354",
(unsigned char*)" \305\320\317\277\244\267\244\336\244\267\244\277 ",
(unsigned char*)" \306\311\244\337\306\376\316\317 ",
(unsigned char*)" 1",
(unsigned char*)"y",
(unsigned char*)" \306\261\260\354\244\316\303\261\270\354\244\254\244\271\244\307\244\313\302\270\272\337\244\267\244\306\244\244\244\336\244\271",
(unsigned char*)" \244\263\244\316\306\311\244\337\312\270\273\372\316\363\244\307\244\317\305\320\317\277\244\307\244\255\244\336\244\273\244\363",
(unsigned char*)" \244\263\244\316\264\301\273\372\312\270\273\372\316\363\244\307\244\317\305\320\317\277\244\307\244\255\244\336\244\273\244\363",
(unsigned char*)" \244\263\244\354\260\312\276\345\306\261\244\270\306\311\244\337\244\307\244\317\305\320\317\277\244\307\244\255\244\336\244\273\244\363",
(unsigned char*)" \244\263\244\354\260\312\276\345\245\346\241\274\245\266\274\255\275\361\244\313\244\317\305\320\317\277\244\307\244\255\244\336\244\273\244\363",
(unsigned char*)" \245\346\241\274\245\266\274\255\275\361\244\254\245\355\245\303\245\257\244\265\244\354\244\306\244\244\244\336\244\271",
(unsigned char*)" \245\267\245\271\245\306\245\340\245\250\245\351\241\274\244\307\305\320\317\277\244\307\244\255\244\336\244\273\244\363",
(unsigned char*)",",
(unsigned char*)"\276\303\265\356",
(unsigned char*)" \264\301\273\372 [%s] : \306\311\244\337 [%s] : \311\312\273\354 [%s]\244\362\276\303\265\356\244\267\244\336\244\267\244\277 ",
(unsigned char*)" \273\330\304\352\244\265\244\354\244\277\306\311\244\337\241\246\264\301\273\372\244\317\305\320\317\277\244\265\244\354\244\306\244\244\244\336\244\273\244\363",
(unsigned char*)" \245\346\241\274\245\266\274\255\275\361\244\254\245\355\245\303\245\257\244\265\244\354\244\306\244\244\244\336\244\271",
(unsigned char*)" \244\263\244\316\306\311\244\337\312\270\273\372\316\363\244\317\276\303\265\356\244\307\244\255\244\336\244\273\244\363",
(unsigned char*)" \244\263\244\316\264\301\273\372\312\270\273\372\316\363\244\317\276\303\265\356\244\307\244\255\244\336\244\273\244\363",
(unsigned char*)" \245\267\245\271\245\306\245\340\245\250\245\351\241\274\244\307\276\303\265\356\244\307\244\255\244\336\244\273\244\363",
(unsigned char*)"\244\362\306\311\244\337\271\376\244\337\244\336\244\267\244\277",
(unsigned char*)"\244\362\306\311\244\337\271\376\244\341\244\336\244\273\244\363\244\307\244\267\244\277",
(unsigned char*)"\245\273\245\303\245\310\245\242\245\303\245\327\245\325\245\241\245\244\245\353\244\254\244\242\244\352\244\336\244\273\244\363 ",
(unsigned char*)"Change weight (1-9) current weight %d ",
(unsigned char*)"\272\306\300\334\302\263 ",
(unsigned char*)" \245\265\241\274\245\320\314\276 [%s] \244\362\273\330\304\352\244\267\244\306\244\257\244\300\244\265\244\244 ",
(unsigned char*)" \245\265\241\274\245\320 [%s] \244\313\300\334\302\263\244\267\244\336\244\267\244\277 ",
(unsigned char*)"\245\265\241\274\245\320 [%s] \244\310\244\316\300\334\302\263\244\254\300\332\244\354\244\336\244\267\244\277",
(unsigned char*)" ",
(unsigned char*)" ",
(unsigned char*)" \302\263\244\261\244\336\244\271\244\253? y",
(unsigned char*)"\245\265\241\274\245\320\241\274\244\254\273\340\244\313\244\336\244\267\244\277\241\243",
(unsigned char*)"\245\265\241\274\245\320\241\274\244\313\300\334\302\263\272\321\244\307\244\271\241\243",
(unsigned char*)"\245\265\241\274\245\320\241\274\244\330\244\316\300\334\302\263\244\313\274\272\307\324\244\267\244\336\244\267\244\277\241\243",
(unsigned char*)"\245\341\245\244\245\363\274\255\275\361\245\325\245\241\245\244\245\353\244\362\245\252\241\274\245\327\245\363\244\307\244\255\244\336\244\273\244\363\241\243",
(unsigned char*)"\245\346\241\274\245\266\241\246\245\307\245\243\245\354\245\257\245\310\245\352\244\316\272\356\300\256\244\313\274\272\307\324\244\267\244\336\244\267\244\277\241\243",
(unsigned char*)"\245\346\241\274\245\266\274\255\275\361\245\325\245\241\245\244\245\353\244\316\300\270\300\256\244\313\274\272\307\324\244\267\244\336\244\267\244\277\241\243",
(unsigned char*)"\245\346\241\274\245\266\274\255\275\361\245\325\245\241\245\244\245\353\244\362\245\252\241\274\245\327\245\363\244\307\244\255\244\336\244\273\244\363\241\243",
(unsigned char*)"\263\330\275\254\245\325\245\241\245\244\245\353\244\316\300\270\300\256\244\313\274\272\307\324\244\267\244\336\244\267\244\277\241\243",
(unsigned char*)"\263\330\275\254\245\325\245\241\245\244\245\353\244\362\245\252\241\274\245\327\245\363\244\307\244\255\244\336\244\273\244\363\241\243",
(unsigned char*)"\312\324\275\270 ",
(unsigned char*)"\243\323\243\312\243\263\241\241\241\241\241\241\241\241\241\241\241\241\241\241",
(unsigned char*)" \312\324\275\270\312\270\273\372\316\363\244\254\304\271\244\271\244\256\244\336\244\271",
(unsigned char*)"$$",
(unsigned char*)"on",
(unsigned char*)"off",
(unsigned char*)"\314\276\273\354",
(unsigned char*)"\314\276\273\372",
(unsigned char*)"\314\276\301\260",
(unsigned char*)"\303\317\314\276",
(unsigned char*)"\245\265\312\321\306\260\273\354",
(unsigned char*)"",
(unsigned char*)"F1",
(unsigned char*)"F2",
(unsigned char*)"F3",
(unsigned char*)"F4",
(unsigned char*)"F5",
(unsigned char*)"F6",
(unsigned char*)"F7",
(unsigned char*)"F8",
(unsigned char*)"F9",
(unsigned char*)"F10",
(unsigned char*)"F11",
(unsigned char*)"F12",
(unsigned char*)"F13",
(unsigned char*)"F14",
(unsigned char*)"F15",
(unsigned char*)"F16",
(unsigned char*)"F17",
(unsigned char*)"F18",
(unsigned char*)"F19",
(unsigned char*)"F20",
(unsigned char*)"Select",
(unsigned char*)"Kanji",
(unsigned char*)"Cancel",
(unsigned char*)"Execute",
(unsigned char*)"Up",
(unsigned char*)"Down",
(unsigned char*)"Right",
(unsigned char*)"Left",
(unsigned char*)"start",
(unsigned char*)"henkan",
(unsigned char*)"muhen",
(unsigned char*)"kettei",
(unsigned char*)"hira",
(unsigned char*)"halpha",
(unsigned char*)"zalpha",
(unsigned char*)"hkata",
(unsigned char*)"zkata",
(unsigned char*)"code",
(unsigned char*)"etc",
(unsigned char*)"right",
(unsigned char*)"left",
(unsigned char*)"kaku",
(unsigned char*)"shuku",
(unsigned char*)"edit",
(unsigned char*)"toggle",
(unsigned char*)"wrapback",
(unsigned char*)"wrap",
(unsigned char*)"sjrc",
(unsigned char*)"buffer",
(unsigned char*)"toroku",
(unsigned char*)"shoukyo",
(unsigned char*)"help",
(unsigned char*)"ha-kettei",
(unsigned char*)"flush",
(unsigned char*)"debug",
(unsigned char*)"cancel",
(unsigned char*)"saihenkan",
(unsigned char*)"ignore",
(unsigned char*)"top",
(unsigned char*)"end",
(unsigned char*)"reconnect",
(unsigned char*)"kill",
(unsigned char*)"key",
(unsigned char*)"escape",
(unsigned char*)"sjxkey",
(unsigned char*)"etckey",
(unsigned char*)"intr",
(unsigned char*)"bskey",
(unsigned char*)"delkey",
(unsigned char*)"setnormal",
(unsigned char*)"throughnext",
(unsigned char*)"initialmode",
(unsigned char*)"helpmode",
(unsigned char*)"defaultcode",
(unsigned char*)"muhenkanmode",
(unsigned char*)"muhenkaninedit",
(unsigned char*)"muhenkantoggle",
(unsigned char*)"guide",
(unsigned char*)"forkshell",
(unsigned char*)"execshell",
(unsigned char*)"dictionary",
(unsigned char*)"userdic",
(unsigned char*)"maindic",
(unsigned char*)"romaji",
(unsigned char*)"bstudy",
(unsigned char*)"silent",
(unsigned char*)"flushafterconversion",
(unsigned char*)"rkerrbell",
(unsigned char*)"server",
(unsigned char*)"shiftjis",
(unsigned char*)"sjis",
(unsigned char*)"euc",
(unsigned char*)"euc2",
(unsigned char*)"jis",
(unsigned char*)"jis2",
(unsigned char*)"kuten",
(unsigned char*)"kuten2",
(unsigned char*)"buff",
(unsigned char*)"unbuff",
(unsigned char*)"direct",
(unsigned char*)"sj2",
(unsigned char*)"shift",
(unsigned char*)"function",
(unsigned char*)"unbuffer",
(unsigned char*)"funcetc"
};
#define CURMESSAGES 182
wchar16_t* WcMessages[CURMESSAGES];
#define CURWCVTKEY 29
struct wcvtkey wcvtkeytbl[CURWCVTKEY];
int init_wcvtkey() {
int i = 0;
for(i = 0; i < CURWCVTKEY; i++) {
wcvtkeytbl[i].key_seq[0] = 0;
}
wcvtkeytbl[0].key_word = WCF1;
wcvtkeytbl[1].key_word = WCF2;
wcvtkeytbl[2].key_word = WCF3;
wcvtkeytbl[3].key_word = WCF4;
wcvtkeytbl[4].key_word = WCF5;
wcvtkeytbl[5].key_word = WCF6;
wcvtkeytbl[6].key_word = WCF7;
wcvtkeytbl[7].key_word = WCF8;
wcvtkeytbl[8].key_word = WCF9;
wcvtkeytbl[9].key_word = WCF10;
wcvtkeytbl[10].key_word = WCF11;
wcvtkeytbl[11].key_word = WCF12;
wcvtkeytbl[12].key_word = WCF13;
wcvtkeytbl[13].key_word = WCF14;
wcvtkeytbl[14].key_word = WCF15;
wcvtkeytbl[15].key_word = WCF16;
wcvtkeytbl[16].key_word = WCF17;
wcvtkeytbl[17].key_word = WCF18;
wcvtkeytbl[18].key_word = WCF19;
wcvtkeytbl[19].key_word = WCF20;
wcvtkeytbl[20].key_word = WCSelect;
wcvtkeytbl[21].key_word = WCKanji;
wcvtkeytbl[22].key_word = WCCancel;
wcvtkeytbl[23].key_word = WCExecute;
wcvtkeytbl[24].key_word = WCUp;
wcvtkeytbl[25].key_word = WCDown;
wcvtkeytbl[26].key_word = WCRight;
wcvtkeytbl[27].key_word = WCLeft;
wcvtkeytbl[28].key_word = NULL;
}
wchar16_t* comstr[KEY_OTHER];
int init_comstr() {
comstr[0] = WCStart;
comstr[1] = WCHenkan;
comstr[2] = WCMuhen;
comstr[3] = WCKettei;
comstr[4] = WCHira;
comstr[5] = WCHalpha;
comstr[6] = WCZalpha;
comstr[7] = WCHkata;
comstr[8] = WCZkata;
comstr[9] = WCCode;
comstr[10] = WCEtc;
comstr[11] = WCRightl;
comstr[12] = WCLeftl;
comstr[13] = WCKaku;
comstr[14] = WCSyuku;
comstr[15] = WCEdit;
comstr[16] = WCToggle;
comstr[17] = WCWrapback;
comstr[18] = WCWrap;
comstr[19] = WCSjrc;
comstr[20] = WCBuffer;
comstr[21] = WCToroku;
comstr[22] = WCShoukyo;
comstr[23] = WCHelp;
comstr[24] = WCHaKettei;
comstr[25] = WCFlush;
comstr[26] = WCDebug;
comstr[27] = WCCancell;
comstr[28] = WCSaihenkan;
comstr[29] = WCIgnore;
comstr[30] = WCTop;
comstr[31] = WCEnd;
comstr[32] = WCReconnect;
comstr[33] = WCKill;
comstr[34] = WCKara;
}
struct valtbl hin_val[5];
int init_hin_val() {
hin_val[0].keyword = WCMeishi;
hin_val[0].ivalue = SJ3_H_NRMNOUN;
hin_val[1].keyword = WCMyouji;
hin_val[1].ivalue = SJ3_H_LNAME;
hin_val[2].keyword = WCNamae;
hin_val[2].ivalue = SJ3_H_FNAME;
hin_val[3].keyword = WCTimei;
hin_val[3].ivalue = SJ3_H_LOCNAME;
hin_val[4].keyword = WCSahen;
hin_val[4].ivalue = SJ3_H_SILVERB;
}
extern int set_func(), set_etckeys(), set_intr(),
set_delkey(), set_goto(), set_trap(), set_init_mode(),
set_helpmenu(), set_defcode(), set_muhenkan(), set_muedit(),
set_m_toggle(), set_guide(), set_forkshell(), set_bstudy(),
set_silent(), set_flush_conversion(), set_rkebell(), set_server(),
set_dict();
#define CURFUNCS 29
struct functbl funcs[CURFUNCS];
int init_funcs() {
funcs[0].keyword = WCKey;
funcs[0].func = set_func;
funcs[1].keyword = WCEscape;
funcs[1].func = set_func;
funcs[2].keyword = WCEtckey;
funcs[2].func = set_etckeys;
funcs[3].keyword = WCIntr;
funcs[3].func = set_intr;
funcs[4].keyword = WCDelkey;
funcs[4].func = set_delkey;
funcs[5].keyword = WCSetnormal;
funcs[5].func = set_goto;
funcs[6].keyword = WCThroughnext;
funcs[6].func = set_trap;
funcs[7].keyword = WCInitialmode;
funcs[7].func = set_init_mode;
funcs[8].keyword = WCHelpmode;
funcs[8].func = set_helpmenu;
funcs[9].keyword = WCDefaultcode;
funcs[9].func = set_defcode;
funcs[10].keyword = WCMuhenkanmode;
funcs[10].func = set_muhenkan;
funcs[11].keyword = WCMuhenkaninedit;
funcs[11].func = set_muedit;
funcs[12].keyword = WCMuhenkantoggle;
funcs[12].func = set_m_toggle;
funcs[13].keyword = WCGuide;
funcs[13].func = set_guide;
funcs[14].keyword = WCForkshell;
funcs[14].func = set_forkshell;
funcs[15].keyword = WCExecshell;
funcs[15].func = set_forkshell;
funcs[16].keyword = WCBstudy;
funcs[16].func = set_bstudy;
funcs[17].keyword = WCSilent;
funcs[17].func = set_silent;
funcs[18].keyword = WCFlushafterconversion;
funcs[18].func = set_flush_conversion;
funcs[19].keyword = WCRkerrbell;
funcs[19].func = set_rkebell;
funcs[20].keyword = WCServer;
funcs[20].func = set_server;
funcs[21].keyword = WCDictionary;
funcs[21].func = set_dict;
funcs[22].keyword = NULL;
funcs[22].func = NULL;
}
struct valtbl mode_val[5];
int init_mode_val() {
mode_val[0].keyword = WCHalpha;
mode_val[0].ivalue = MODE_HALPHA;
mode_val[1].keyword = WCZalpha;
mode_val[1].ivalue = MODE_ZALPHA;
mode_val[2].keyword = WCHkata;
mode_val[2].ivalue = MODE_HKATA;
mode_val[3].keyword = WCZkata;
mode_val[3].ivalue = MODE_ZKATA;
mode_val[4].keyword = WCHira;
mode_val[4].ivalue = MODE_ZHIRA;
}
struct valtbl code_val[8];
int init_code_val() {
code_val[0].keyword = WCShiftjis;
code_val[0].ivalue = CODE_SJIS;
code_val[1].keyword = WCSjis;
code_val[1].ivalue = CODE_SJIS;
code_val[2].keyword = WCEuc;
code_val[2].ivalue = CODE_EUC;
code_val[3].keyword = WCEuc2;
code_val[3].ivalue = CODE_EUC2;
code_val[4].keyword = WCJis;
code_val[4].ivalue = CODE_JIS;
code_val[5].keyword = WCJis2;
code_val[5].ivalue = CODE_JIS2;
code_val[6].keyword = WCKuten;
code_val[6].ivalue = CODE_KUTEN;
code_val[7].keyword = WCKuten2;
code_val[7].ivalue = CODE_KUTEN2;
}
int init_messages() {
#define LOCALELEN 20
char cur_loc[LOCALELEN];
char* loc;
short message_len[CURMESSAGES];
int ret;
int i;
int all_len = 0;
int saved_locale = 0;
extern int current_locale;
if(current_locale != LC_CTYPE_EUC) {
saved_locale = current_locale;
current_locale = LC_CTYPE_EUC;
#ifdef __sony_news
strncpy((char*)cur_loc, setlocale(LC_CTYPE, NULL), LOCALELEN);
loc = setlocale(LC_CTYPE, "ja_JP.EUC");
#endif
}
for(i = 0; i < CURMESSAGES; i++) {
message_len[i] = jstrlen((char*)EucMessages[i]) + 1;
all_len += message_len[i];
}
WcMessages[0] = (wchar16_t*)malloc(all_len * sizeof(wchar16_t));
if(WcMessages[0] == NULL)
goto Fail;
ret = (int)mbstowcs(WcMessages[0], (char*)EucMessages[0], message_len[0]);
if(ret < -1)
goto Fail;
for(i = 1; i < CURMESSAGES; i++) {
WcMessages[i] = WcMessages[i - 1] + message_len[i - 1];
ret = mbstowcs(WcMessages[i], (char*)EucMessages[i], message_len[i]);
if(ret < -1)
goto Fail;
}
init_wcvtkey();
init_comstr();
init_hin_val();
init_funcs();
init_mode_val();
init_code_val();
if(saved_locale) {
current_locale = saved_locale;
#ifdef __sony_news
setlocale(LC_CTYPE, cur_loc);
#endif
}
return TRUE;
Fail:
if(saved_locale) {
current_locale = saved_locale;
#ifdef __sony_news
setlocale(LC_CTYPE, cur_loc);
#endif
}
return FALSE;
}