1 /*
2  * $Id: xheader.c,v 1.2 2001/06/14 18:16:13 ura Exp $
3  */
4 
5 /*
6  * FreeWnn is a network-extensible Kana-to-Kanji conversion system.
7  * This file is part of FreeWnn.
8  *
9  * Copyright Kyoto University Research Institute for Mathematical Sciences
10  *                 1987, 1988, 1989, 1990, 1991, 1992
11  * Copyright OMRON Corporation. 1987, 1988, 1989, 1990, 1991, 1992, 1999
12  * Copyright ASTEC, Inc. 1987, 1988, 1989, 1990, 1991, 1992
13  * Copyright 1991, 1992 by Massachusetts Institute of Technology
14  *
15  * Author: OMRON SOFTWARE Co., Ltd. <freewnn@rd.kyoto.omronsoft.co.jp>
16  *
17  * This program is free software; you can redistribute it and/or modify
18  * it under the terms of the GNU General Public License as published by
19  * the Free Software Foundation; either version 2, or (at your option)
20  * any later version.
21  *
22  * This program is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
25  * GNU General Public License for more details.
26  *
27  * You should have received a copy of the GNU General Public License
28  * along with GNU Emacs; see the file COPYING.  If not, write to the
29  * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
30  *
31  * Commentary:
32  *
33  * Change log:
34  *
35  * Last modified date: 8,Feb.1999
36  *
37  * Code:
38  *
39  */
40 /*      Version 4.0
41  */
42 #include <stdio.h>
43 #include "config.h"
44 #include "commonhd.h"
45 #include "sdefine.h"
46 #include "xjutil.h"
47 #include "sxheader.h"
48 #include "xext.h"
49 
50 int max_env = 0;
51 WnnEnv *normal_env = NULL;
52 WnnEnv *reverse_env = NULL;
53 WnnEnv *cur_normal_env = NULL;
54 WnnEnv *cur_reverse_env = NULL;
55 
56 int save_env_id[32];
57 int save_env_reverse_id[32];
58 int env_is_reverse = 0;
59 
60 w_char *input_buffer;
61 w_char *return_buf;             /* return you mojiretsu buffer */
62 
63 int cur_bnst_ = 0;              /* current bunsetsu pointer */
64 
65 int rubout_code = 127;
66 
67 int (*main_table[TBL_CNT][TBL_SIZE]) ();
68 char romkan_clear_tbl[TBL_CNT][TBL_SIZE];
69 char jishopath[256];
70 char hindopath[256];
71 char fuzokugopath[256];
72 
73 ClientBuf *c_b;
74 
75 int excellent_delete = 1;
76 
77 int *bunsetsu;
78 int *bunsetsuend;
79 int *touroku_bnst;
80 int touroku_bnst_cnt;
81 w_char *kill_buffer;
82 w_char *remember_buf;
83 int kill_buffer_offset = 0;
84 
85 int touroku_comment = 0;
86 
87 char *uumrc_name = NULL;
88 char *envrc_name = NULL;
89 char *uumkey_name = NULL;
90 char *cvt_key_file = NULL;
91 char *cvt_fun_file = NULL;
92 char *cvt_meta_file = NULL;
93 char *rkfile_name = NULL;
94 
95 char *jserver_name = NULL;
96 char *display_name = NULL;
97 char *username = NULL;
98 
99 int maxbunsetsu;
100 int max_ichiran_kosu;
101 int maxchg;
102 int maxlength;
103 
104 WNN_DIC_INFO *dicinfo;
105 int dic_list_size;
106 
107 char *prgname;                  /* argv[0] */
108 
109 struct wnn_ret_buf rb = { 0, NULL };
110 struct wnn_ret_buf dicrb = { 0, NULL };
111 struct wnn_ret_buf wordrb = { 0, NULL };
112 
113 Xjutil *xjutil = NULL;
114 XIMRootRec *cur_root = NULL;
115 JutilTextRec *cur_text = NULL;
116 
117 Romkan *cur_rk = NULL;
118 RomkanTable *cur_rk_table = NULL;
119 
120 BoxRec *box_list = NULL;
121 
122 XjutilFSList font_set_list = NULL;
123 XjutilFSRec *cur_fs = NULL;
124 
125 struct msg_cat *cd;
126 
127 wchar *wc_buf = NULL;
128 unsigned char *ct_buf = NULL;
129 unsigned char *c_buf = NULL;
130 int wc_buf_max = 0;
131 int ct_buf_max = 0;
132 int c_buf_max = 0;
133 #ifndef X_WCHAR
134 wchar_t *wt_buf = NULL;
135 int wt_buf_max = 0;
136 #endif /* !X_WCHAR */
137 
138 ConvCode cvt_key_tbl[MAX_CVT_ENTRY_CNT];
139 int cvt_key_tbl_cnt = 0;        /* convert table count */
140 
141 FunctionTable *f_table = NULL;
142 
143 FunctionTable function_db[] = {
144   {"Normal",
145    NULL, NULL, call_t_redraw_move_normal,
146    call_t_redraw_move_1_normal, call_t_redraw_move_2_normal,
147    call_t_print_l_normal, NULL, char_len_normal, char_q_len_normal,
148    t_redraw_move_normal, t_print_l_normal, c_top_normal, c_end_normal,
149    c_end_normal, hani_settei_normal, NULL, NULL},
150 #ifdef  CHINESE
151   {"Yincoding",
152    print_out_yincod, input_yincod, call_t_redraw_move_yincod,
153    call_t_redraw_move_1_yincod, call_t_redraw_move_2_yincod,
154    call_t_print_l_yincod, redraw_when_chmsig_yincod, char_len_yincod,
155    char_q_len_yincod, t_redraw_move_yincod,
156    t_print_l_yincod, c_top_yincod, c_end_yincod, c_end_nobi_yincod,
157    hani_settei_yincod, NULL, NULL},
158 #endif /* CHINESE */
159   {NULL,
160    NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
161    NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
162 };
163