Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-ports
Path: blob/main/japanese/FreeWnn-lib/files/patch-Wnn-conv-cvt_key.c
18157 views
1
Index: Wnn/conv/cvt_key.c
2
===================================================================
3
RCS file: /home/cvs/private/hrs/freewnn/Wnn/conv/cvt_key.c,v
4
retrieving revision 1.1.1.1
5
retrieving revision 1.2
6
diff -u -p -r1.1.1.1 -r1.2
7
--- Wnn/conv/cvt_key.c 20 Dec 2008 07:13:30 -0000 1.1.1.1
8
+++ Wnn/conv/cvt_key.c 20 Dec 2008 15:22:37 -0000 1.2
9
@@ -65,172 +65,165 @@
10
extern struct CONVCODE tbl[];
11
extern int cnv_tbl_cnt; /* convert table count */
12
13
-
14
- /** int������ h ��ӥåȥ٥����Ȥߤʤ�����i�ӥåȤ�����å����뤤��Ω�Ƥ� */
15
+/** int������ h ��ӥåȥ٥����Ȥߤʤ�����i�ӥåȤ�����å����뤤��Ω�Ƥ� */
16
#define BITONP(h, i) (h[i / BITSIZ] & (1 << (i % BITSIZ)))
17
#define BITOFP(h, i) (!BITONP(h, i))
18
#define BIT_UP(h, i) (h[i / BITSIZ] |= (1 << (i % BITSIZ)))
19
#define BITDWN(h, i) (h[i / BITSIZ] &= ~(1 << (i % BITSIZ)))
20
21
- /** �Ѵ������ɤΥ����å��ȥ������Ѵ� */
22
+/** �Ѵ������ɤΥ����å��ȥ������Ѵ� */
23
int
24
-key_check (inbuf, conv_tbl, tbl_cnt, check_flg)
25
- int inbuf[]; /* ���������ȥ�� */
26
- struct CONVCODE conv_tbl[]; /* �������Ѵ��ơ��֥� */
27
- int tbl_cnt;
28
- int check_flg[];
29
+key_check (int inbuf[], /* ���������ȥ�� */
30
+ struct CONVCODE conv_tbl[], /* �������Ѵ��ơ��֥� */
31
+ int tbl_cnt,
32
+ int check_flg[])
33
{
34
- int dist, base;
35
- char *code_p;
36
- int i;
37
-
38
- for (base = 0; inbuf[base] != -1; base++)
39
- {
40
- for (dist = 0; dist < tbl_cnt; dist++)
41
- {
42
- if (BITONP (check_flg, dist) && conv_tbl[dist].fromkey != 0)
43
- {
44
- code_p = conv_tbl[dist].fromkey + base;
45
- if (*code_p == (char) inbuf[base])
46
- {
47
- if (*(code_p + 1) == (char) 0)
48
- {
49
- /* �ޥå����� */
50
- for (i = 0, base++; (inbuf[i] = inbuf[base]) != -1; i++, base++);
51
- return (conv_tbl[dist].tokey);
52
- }
53
- /* �ޤ��ޥå����Ƥ��ʤ� */
54
- }
55
- else
56
- {
57
- BITDWN (check_flg, dist); /* ̵�� */
58
- }
59
- }
60
- }
61
- }
62
-
63
- /* �ӥåȥ٥��� check_flg[] ����0��tblcnt�ӥåȤ�Ω�ä��ޤ޻ĤäƤ���
64
- ��Τ����뤫Ĵ�٤롣 */
65
- for (i = 0; i < tbl_cnt / BITSIZ; i++)
66
- {
67
- if (check_flg[i])
68
- return (-1);
69
- }
70
- if ((tbl_cnt %= BITSIZ) && (check_flg[i] & ~(~0 << tbl_cnt)))
71
- return (-1);
72
- /* return -1 �� �ޤ�̤�����ʪ������ */
73
+ int dist, base;
74
+ char *code_p;
75
+ int i;
76
+
77
+ for (base = 0; inbuf[base] != -1; base++) {
78
+ for (dist = 0; dist < tbl_cnt; dist++) {
79
+ if (BITONP (check_flg, dist) && conv_tbl[dist].fromkey != 0) {
80
+ code_p = conv_tbl[dist].fromkey + base;
81
+
82
+ if (*code_p == (char) inbuf[base]) {
83
+ if (*(code_p + 1) == (char) 0) {
84
+ /* �ޥå����� */
85
+ for (i = 0, base++; (inbuf[i] = inbuf[base]) != -1; i++, base++);
86
+ return (conv_tbl[dist].tokey);
87
+ }
88
+ /* �ޤ��ޥå����Ƥ��ʤ� */
89
+ } else {
90
+ /* ̵�� */
91
+ BITDWN (check_flg, dist);
92
+ }
93
+ }
94
+ }
95
+ }
96
+
97
+ /* �ӥåȥ٥��� check_flg[] ����0��tblcnt�ӥåȤ�Ω�ä��ޤ޻ĤäƤ���
98
+ ��Τ����뤫Ĵ�٤롣 */
99
+
100
+ for (i = 0; i < tbl_cnt / BITSIZ; i++) {
101
+ if (check_flg[i])
102
+ return (-1);
103
+ }
104
+
105
+ if ((tbl_cnt %= BITSIZ) && (check_flg[i] & ~(~0 << tbl_cnt)))
106
+ return (-1);
107
+ /* return -1 �� �ޤ�̤�����ʪ������ */
108
109
- return (-2); /* �Ѵ��оݤȤʤ�ʪ�Ϥʤ� */
110
+ /* �Ѵ��оݤȤʤ�ʪ�Ϥʤ� */
111
+ return (-2);
112
}
113
114
- /** ���ꤵ�줿�Ѵ��ơ��֥�˽��äƥ������Ѵ����롣*/
115
+/** ���ꤵ�줿�Ѵ��ơ��֥�˽��äƥ������Ѵ����롣*/
116
int
117
-convert_key (inkey, conv_tbl, tbl_cnt, matching_flg, in_buf)
118
- int (*inkey) (); /* �������ϴؿ� */
119
- struct CONVCODE conv_tbl[]; /* �Ѵ��ơ��֥� */
120
- int tbl_cnt; /* conv_tbl[] �θĿ� */
121
- int matching_flg; /* �ޥå��󥰤��ʤ��ä����ȥ�󥰤ν�������
122
- 0 : ���ͤȤ����֤�
123
- 1 : ���Υ��ȥ�󥰤ϼΤƤ� */
124
- char *in_buf;
125
+convert_key (int (*inkey)(), /* �������ϴؿ� */
126
+ struct CONVCODE conv_tbl[], /* �Ѵ��ơ��֥� */
127
+ int tbl_cnt, /* conv_tbl[] �θĿ� */
128
+ int matching_flg, /* �ޥå��󥰤��ʤ��ä����ȥ�󥰤ν�������
129
+ 0 : ���ͤȤ����֤�
130
+ 1 : ���Υ��ȥ�󥰤ϼΤƤ� */
131
+ char *in_buf)
132
{
133
#define MAX 20 /* �������ϥХåե��κ����� */
134
135
- static int inbuf[MAX]; /* �������ϥХåե� */
136
- /* �Хåե��ν�ü�ϡ�-1 �Ǽ�����롣 */
137
-
138
- int out_cnt; /* ���ϥХåե��ν��ϥ������ */
139
-
140
- static int buf_cnt = 0; /* inbuf �����ϻ��Υ����� */
141
-
142
- int check_flg[CHANGE_MAX];
143
- /* �ӥåȥ٥����Ȥ��ư���졢�ޥå��󥰻����оݤȤʤäƤ���conv_tbl[]
144
- �򼨤���1�λ��оݤȤʤꡢ0�����о� */
145
-
146
- int i, c, flg = 0; /* work */
147
-
148
- for (i = 0; i < div_up (tbl_cnt, BITSIZ); check_flg[i++] = ~0);
149
- /* ����check_flg��ӥåȥ٥�����������������0��tbl_cnt �ӥåȤ�Ω�Ƥ롣
150
- â�����ºݤϤ��ξ�����ޤ�Ω�� */
151
-
152
- for (;;)
153
- {
154
- if (flg != 0 || buf_cnt == 0)
155
- {
156
- inbuf[buf_cnt] = (*inkey) (); /* ��ʸ������ */
157
- in_buf[buf_cnt] = (char) (inbuf[buf_cnt] & 0xff);
158
- if (inbuf[buf_cnt] == -1)
159
- {
160
- if (buf_cnt > 0)
161
- {
162
- c = -2; /* �����ॢ���� */
163
- goto LABEL;
164
- }
165
- else
166
- {
167
- continue;
168
- }
169
- }
170
- else
171
- {
172
- inbuf[++buf_cnt] = -1; /* �����ߥ͡��� */
173
- }
174
- }
175
- flg++;
176
-
177
- if (buf_cnt >= MAX - 1)
178
- {
179
- in_buf[0] = '\0';
180
- return (-1); /* ERROR */
181
- }
182
-
183
- c = key_check (inbuf, conv_tbl, tbl_cnt, check_flg);
184
- LABEL:
185
- switch (c)
186
- {
187
- case -1: /* ̤���� */
188
- continue;
189
-
190
- case -2: /* �Ѵ��оݤǤʤ����Ȥ����ꤷ�� */
191
- buf_cnt--;
192
- out_cnt = 0;
193
- c = inbuf[out_cnt++];
194
- for (i = 0; inbuf[i] != -1; inbuf[i++] = inbuf[out_cnt++]);
195
- if (matching_flg != 0)
196
- {
197
- flg = 0;
198
- continue;
199
- }
200
- in_buf[0] = '\0';
201
- return (c);
202
-
203
- default: /* �Ѵ����줿������ */
204
- in_buf[buf_cnt] = '\0';
205
- buf_cnt = 0;
206
- return (c);
207
- }
208
- }
209
+ /* �������ϥХåե� */
210
+ /* �Хåե��ν�ü�ϡ�-1 �Ǽ�����롣 */
211
+ static int inbuf[MAX];
212
+
213
+ /* ���ϥХåե��ν��ϥ������ */
214
+ int out_cnt;
215
+
216
+ /* inbuf �����ϻ��Υ����� */
217
+ static int buf_cnt = 0;
218
+
219
+
220
+ /* �ӥåȥ٥����Ȥ��ư���졢�ޥå��󥰻����оݤȤʤäƤ���conv_tbl[]
221
+ �򼨤���1�λ��оݤȤʤꡢ0�����о� */
222
+ int check_flg[CHANGE_MAX];
223
+
224
+ /* work */
225
+ int i, c, flg = 0;
226
+
227
+ for (i = 0; i < div_up (tbl_cnt, BITSIZ); check_flg[i++] = ~0);
228
+ /* ����check_flg��ӥåȥ٥�����������������0��tbl_cnt �ӥåȤ�Ω�Ƥ롣
229
+ â�����ºݤϤ��ξ�����ޤ�Ω�� */
230
+
231
+ for (;;) {
232
+ if (flg != 0 || buf_cnt == 0) {
233
+ inbuf[buf_cnt] = (*inkey) (); /* ��ʸ������ */
234
+ in_buf[buf_cnt] = (char) (inbuf[buf_cnt] & 0xff);
235
+ if (inbuf[buf_cnt] == -1) {
236
+ if (buf_cnt > 0) {
237
+ c = -2;
238
+ /* �����ॢ���� */
239
+ goto LABEL;
240
+ } else {
241
+ continue;
242
+ }
243
+ } else {
244
+ /* �����ߥ͡��� */
245
+ inbuf[++buf_cnt] = -1;
246
+ }
247
+ }
248
+ flg++;
249
+
250
+ if (buf_cnt >= MAX - 1) {
251
+ in_buf[0] = '\0';
252
+
253
+ /* ERROR */
254
+ return (-1);
255
+ }
256
+
257
+ c = key_check (inbuf, conv_tbl, tbl_cnt, check_flg);
258
+
259
+ LABEL:
260
+ switch (c) {
261
+ case -1:
262
+ /* ̤���� */
263
+ continue;
264
+
265
+ case -2:
266
+ /* �Ѵ��оݤǤʤ����Ȥ����ꤷ�� */
267
+ buf_cnt--;
268
+ out_cnt = 0;
269
+ c = inbuf[out_cnt++];
270
+ for (i = 0; inbuf[i] != -1; inbuf[i++] = inbuf[out_cnt++]);
271
+
272
+ if (matching_flg != 0) {
273
+ flg = 0;
274
+ continue;
275
+ }
276
+
277
+ in_buf[0] = '\0';
278
+ return (c);
279
+
280
+ default:
281
+ /* �Ѵ����줿������ */
282
+ in_buf[buf_cnt] = '\0';
283
+ buf_cnt = 0;
284
+ return (c);
285
+ }
286
+ }
287
}
288
289
/** �������Ѵ���ȼ���������ϴؿ� */
290
int
291
-keyin1 (get_ch, in_buf)
292
- int (*get_ch) (); /* getchar() ��Ʊ�ͤδؿ� */
293
- char *in_buf;
294
+keyin1(int (*get_ch)(), /* getchar() ��Ʊ�ͤδؿ� */
295
+ char *in_buf)
296
{
297
- int ret;
298
+ int ret;
299
300
- for (;;)
301
- {
302
- if (cnv_tbl_cnt == 0)
303
- {
304
- ret = (*get_ch) ();
305
- if (ret >= 0)
306
- return (ret);
307
- }
308
- else
309
- {
310
- return (convert_key (get_ch, tbl, cnv_tbl_cnt, 0, in_buf));
311
- }
312
- }
313
+ for (;;) {
314
+ if (cnv_tbl_cnt == 0) {
315
+ ret = (*get_ch)();
316
+ if (ret >= 0)
317
+ return (ret);
318
+ } else {
319
+ return (convert_key(get_ch, tbl, cnv_tbl_cnt, 0, in_buf));
320
+ }
321
+ }
322
}
323
324