Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-ports
Path: blob/main/japanese/FreeWnn-lib/files/patch-Wnn-etc-revdic.c
18157 views
1
Index: Wnn/etc/revdic.c
2
===================================================================
3
RCS file: /home/cvs/private/hrs/freewnn/Wnn/etc/revdic.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/etc/revdic.c 20 Dec 2008 07:13:30 -0000 1.1.1.1
8
+++ Wnn/etc/revdic.c 20 Dec 2008 15:22:40 -0000 1.2
9
@@ -5,7 +5,7 @@
10
/*
11
* FreeWnn is a network-extensible Kana-to-Kanji conversion system.
12
* This file is part of FreeWnn.
13
- *
14
+ *
15
* Copyright Kyoto University Research Institute for Mathematical Sciences
16
* 1987, 1988, 1989, 1990, 1991, 1992
17
* Copyright OMRON Corporation. 1987, 1988, 1989, 1990, 1991, 1992, 1999
18
@@ -35,13 +35,11 @@
19
#include "jh.h"
20
#include "jdata.h"
21
22
-
23
#ifndef min
24
#define min(a, b) ((a > b)? b:a)
25
#define max(a, b) ((a < b)? b:a)
26
#endif
27
28
-
29
/*
30
* rev_ud_hontai(hostart, maxhontai)
31
* rev_ud_table(tary, maxtable)
32
@@ -51,96 +49,81 @@
33
34
static int tmptmp;
35
36
-#define rev_int(x) (tmptmp = *(x), *(x) = ((tmptmp >> 24) & 0xff) | \
37
- (((tmptmp >> 16) & 0xff) << 8) | \
38
- (((tmptmp >> 8) & 0xff) << 16) | \
39
- (((tmptmp & 0xff) << 24)))
40
+#define rev_int(x) (tmptmp = *(x), *(x) = ((tmptmp >> 24) & 0xff) | \
41
+ (((tmptmp >> 16) & 0xff) << 8) | \
42
+ (((tmptmp >> 8) & 0xff) << 16) | \
43
+ (((tmptmp & 0xff) << 24)))
44
45
#define rev_short(x) (tmptmp = *(x), *(x) = ((tmptmp >> 8) & 0xff) | \
46
- ((tmptmp & 0xff) << 8))
47
+ ((tmptmp & 0xff) << 8))
48
49
#define rev_int_org(x) (tmptmp = *(x), *(x) = ((tmptmp >> 24) & 0xff) | \
50
- (((tmptmp >> 16) & 0xff) << 8) | \
51
- (((tmptmp >> 8) & 0xff) << 16) | \
52
- ((tmptmp & 0xff) << 24), tmptmp)
53
+ (((tmptmp >> 16) & 0xff) << 8) | \
54
+ (((tmptmp >> 8) & 0xff) << 16) | \
55
+ ((tmptmp & 0xff) << 24), tmptmp)
56
57
#define rev_short_org(x) (tmptmp = *(x), *(x) = ((tmptmp >> 8) & 0xff) | \
58
- ((tmptmp & 0xff) << 8), tmptmp)
59
+ ((tmptmp & 0xff) << 8), tmptmp)
60
61
+void
62
+rev_ud_hontai(UCHAR *hostart,
63
+ int maxhontai,
64
+ int match /* whether the cpu type match the dictionary */
65
+ )
66
+{
67
+ UCHAR *hoend = hostart + maxhontai;
68
+ struct uind2 *hop, *hop1;
69
+ int k;
70
+ int len;
71
+
72
+ /* Skip first 4 bytes for some reason. (cf. ujistoud() in atod.c) */
73
+ for (hop = (struct uind2 *)((int *) hostart + 1); (UCHAR *) hop < hoend;) {
74
+ rev_int(&(hop->next));
75
+ rev_int(&(hop->serial));
76
+ rev_int(&(hop->kanjipter));
77
+ rev_short(&(hop->kosuu));
78
+
79
+ if (match) {
80
+ len = hop->yomi[0];
81
+ hop1 = (struct uind2 *)(AL_INT (&(hop->yomi[0]) + 1 + max((len - 4), 0)));
82
+ rev_short(&(hop->yomi[0]));
83
+ for (k = 0; k < len - 4; k++)
84
+ rev_short(&(hop->yomi[k + 1]));
85
+ hop = hop1;
86
+ } else {
87
+ rev_short(&(hop->yomi[0]));
88
+ len = hop->yomi[0];
89
+ for (k = 0; k < len - 4; k++)
90
+ rev_short(&(hop->yomi[k + 1]));
91
+ hop = (struct uind2 *)(AL_INT (&(hop->yomi[0]) + 1 + max((len - 4), 0)));
92
+ }
93
+ }
94
+}
95
96
+void
97
+rev_ud_table(struct uind1 *tary,
98
+ int maxtable,
99
+ int match)
100
+{
101
+ int k;
102
+
103
+ for (k = 0; k < maxtable; k++) {
104
+ rev_int(&(tary[k].pter1));
105
+ rev_int(&(tary[k].pter));
106
+ rev_int(&(tary[k].yomi1));
107
+ rev_int(&(tary[k].yomi2));
108
+ }
109
+}
110
111
void
112
-rev_ud_hontai (hostart, maxhontai, match)
113
- UCHAR *hostart;
114
- int maxhontai;
115
- int match; /* whether the cpu type match the dictionary */
116
-{
117
- UCHAR *hoend = hostart + maxhontai;
118
- struct uind2 *hop, *hop1;
119
- int k;
120
- int len;
121
-
122
- /* Skip first 4 bytes for some reason. (cf. ujistoud() in atod.c) */
123
- for (hop = (struct uind2 *)((int *) hostart + 1); (UCHAR *) hop < hoend;)
124
- {
125
- rev_int (&(hop->next));
126
- rev_int (&(hop->serial));
127
- rev_int (&(hop->kanjipter));
128
- rev_short (&(hop->kosuu));
129
- if (match)
130
- {
131
- len = hop->yomi[0];
132
- hop1 = (struct uind2 *) (AL_INT (&(hop->yomi[0]) + 1 + max ((len - 4), 0)));
133
- rev_short (&(hop->yomi[0]));
134
- for (k = 0; k < len - 4; k++)
135
- {
136
- rev_short (&(hop->yomi[k + 1]));
137
- }
138
- hop = hop1;
139
- }
140
- else
141
- {
142
- rev_short (&(hop->yomi[0]));
143
- len = hop->yomi[0];
144
- for (k = 0; k < len - 4; k++)
145
- {
146
- rev_short (&(hop->yomi[k + 1]));
147
- }
148
- hop = (struct uind2 *) (AL_INT (&(hop->yomi[0]) + 1 + max ((len - 4), 0)));
149
- }
150
- }
151
-}
152
-
153
-
154
-void
155
-rev_ud_table (tary, maxtable, match)
156
- struct uind1 *tary;
157
- int maxtable;
158
- int match;
159
-{
160
- int k;
161
-
162
- for (k = 0; k < maxtable; k++)
163
- {
164
- rev_int (&(tary[k].pter1));
165
- rev_int (&(tary[k].pter));
166
- rev_int (&(tary[k].yomi1));
167
- rev_int (&(tary[k].yomi2));
168
- }
169
-}
170
-
171
-void
172
-rev_hinsi (hinsi, maxserial, match)
173
- unsigned short *hinsi;
174
- int maxserial;
175
- int match;
176
-{
177
- int k;
178
-
179
- for (k = 0; k < maxserial; k++)
180
- {
181
- rev_short (&(hinsi[k]));
182
- }
183
+rev_hinsi(unsigned short *hinsi,
184
+ int maxserial,
185
+ int match)
186
+{
187
+ int k;
188
+
189
+ for (k = 0; k < maxserial; k++)
190
+ rev_short(&(hinsi[k]));
191
}
192
193
/*
194
@@ -154,200 +137,183 @@ void travel_next_nodes ();
195
void rev_sd_node ();
196
197
void
198
-rev_sd_hontai0 (hopter, hostart, match)
199
- UCHAR *hostart;
200
- UCHAR *hopter;
201
- int match;
202
-{
203
- if (match)
204
- {
205
- travel_next_nodes (hopter, hostart, match);
206
- rev_sd_node (hopter, hostart, match);
207
- }
208
- else
209
- {
210
- rev_sd_node (hopter, hostart, match);
211
- travel_next_nodes (hopter, hostart, match);
212
- }
213
-}
214
-
215
-void
216
-rev_sd_hontai (hostart, match)
217
- UCHAR *hostart;
218
- int match;
219
-{
220
- rev_sd_hontai0 (hostart, hostart, match);
221
-}
222
-
223
-void
224
-travel_next_nodes (hopter, hostart, match)
225
- UCHAR *hostart, *hopter;
226
- int match;
227
-{
228
- int k;
229
- int tsize;
230
- w_char *charst;
231
- w_char *sumst;
232
- int *ptrst;
233
-
234
- switch (*(unsigned short *) hopter)
235
- {
236
- case ST_NORMAL:
237
- tsize = *(w_char *) (hopter + 2);
238
- charst = (w_char *) (hopter + 12);
239
- sumst = ((w_char *) charst + tsize + 2); /* + 2 keeps two zero words */
240
- ptrst = (int *) ((w_char *) sumst + tsize);
241
- for (k = 0; k < tsize; k++)
242
- {
243
- if (ptrst[k] != ENDPTR)
244
- {
245
- rev_sd_hontai0 (hostart + ptrst[k], hostart, match);
246
- }
247
- }
248
- break;
249
- case ST_NOPTER:
250
- break;
251
- case ST_NOENT:
252
- tsize = *(w_char *) (hopter + 2);
253
- charst = (w_char *) (hopter + 4);
254
- ptrst = (int *) AL_INT ((w_char *) charst + tsize);
255
- for (k = 0; k < tsize; k++)
256
- {
257
- rev_sd_hontai0 (hostart + ptrst[k], hostart, match);
258
- }
259
- break;
260
- case ST_SMALL:
261
- rev_sd_hontai0 (hopter + 4, hostart, match);
262
- break;
263
- }
264
+rev_sd_hontai0(UCHAR *hopter,
265
+ UCHAR *hostart,
266
+ int match)
267
+{
268
+ if (match) {
269
+ travel_next_nodes(hopter, hostart, match);
270
+ rev_sd_node(hopter, hostart, match);
271
+ } else {
272
+ rev_sd_node(hopter, hostart, match);
273
+ travel_next_nodes(hopter, hostart, match);
274
+ }
275
+}
276
+
277
+void
278
+rev_sd_hontai(UCHAR *hostart,
279
+ int match)
280
+{
281
+ rev_sd_hontai0(hostart, hostart, match);
282
+}
283
+
284
+void
285
+travel_next_nodes(UCHAR *hopter,
286
+ UCHAR *hostart,
287
+ int match)
288
+{
289
+ int k;
290
+ int tsize;
291
+ w_char *charst;
292
+ w_char *sumst;
293
+ int *ptrst;
294
+
295
+ switch (*(unsigned short *)hopter) {
296
+ case ST_NORMAL:
297
+ tsize = *(w_char *)(hopter + 2);
298
+ charst = (w_char *)(hopter + 12);
299
+ sumst = ((w_char *)charst + tsize + 2); /* + 2 keeps two zero words */
300
+ ptrst = (int *)((w_char *)sumst + tsize);
301
+
302
+ for (k = 0; k < tsize; k++) {
303
+ if (ptrst[k] != ENDPTR)
304
+ rev_sd_hontai0(hostart + ptrst[k], hostart, match);
305
+ }
306
+ break;
307
+
308
+ case ST_NOPTER:
309
+ break;
310
+ case ST_NOENT:
311
+ tsize = *(w_char *)(hopter + 2);
312
+ charst = (w_char *)(hopter + 4);
313
+ ptrst = (int *)AL_INT((w_char *)charst + tsize);
314
+
315
+ for (k = 0; k < tsize; k++)
316
+ rev_sd_hontai0(hostart + ptrst[k], hostart, match);
317
+ break;
318
+ case ST_SMALL:
319
+ rev_sd_hontai0(hopter + 4, hostart, match);
320
+ break;
321
+ }
322
}
323
324
#define rev_if_short(x) (match? rev_short_org(x): rev_short(x))
325
#define rev_if_int(x) (match? rev_int_org(x): rev_int(x))
326
327
void
328
-rev_sd_node (hopter, hostart, match)
329
- UCHAR *hostart, *hopter;
330
- int match;
331
-{
332
- /* whether current state of dict matches the cpu type of the machine */
333
- int k;
334
- int tsize;
335
- w_char *charst;
336
- w_char *sumst;
337
- int *ptrst;
338
- int state;
339
-
340
- state = rev_if_short ((unsigned short *) hopter);
341
- switch (state)
342
- {
343
- case ST_NORMAL:
344
- case ST_NOPTER:
345
- tsize = rev_if_short ((w_char *) (hopter + 2));
346
- rev_int ((int *) (hopter + 4));
347
- rev_int ((int *) (hopter + 8));
348
- charst = (w_char *) (hopter + 12);
349
- sumst = ((w_char *) charst + tsize + 2); /* + 2 keeps two zero words */
350
- ptrst = (int *) ((w_char *) sumst + tsize);
351
- for (k = 0; k < tsize; k++)
352
- {
353
- rev_short (charst + k);
354
- rev_short (sumst + k);
355
- }
356
- if (state == ST_NORMAL)
357
- {
358
- for (k = 0; k < tsize; k++)
359
- {
360
- rev_int (ptrst + k);
361
- }
362
- }
363
- break;
364
- case ST_NOENT:
365
- tsize = rev_if_short ((w_char *) (hopter + 2));
366
- charst = (w_char *) (hopter + 4);
367
- ptrst = (int *) AL_INT ((w_char *) charst + tsize);
368
- for (k = 0; k < tsize; k++)
369
- {
370
- rev_short (charst + k);
371
- rev_int (ptrst + k);
372
- }
373
- break;
374
- case ST_SMALL:
375
- rev_short ((unsigned short *) (hopter + 2));
376
- break;
377
- }
378
+rev_sd_node(UCHAR *hopter,
379
+ UCHAR *hostart,
380
+ int match)
381
+{
382
+ /* whether current state of dict matches the cpu type of the machine */
383
+ int k;
384
+ int tsize;
385
+ w_char *charst;
386
+ w_char *sumst;
387
+ int *ptrst;
388
+ int state;
389
+
390
+ state = rev_if_short((unsigned short *) hopter);
391
+
392
+ switch (state) {
393
+ case ST_NORMAL:
394
+ case ST_NOPTER:
395
+ tsize = rev_if_short((w_char *)(hopter + 2));
396
+ rev_int((int *)(hopter + 4));
397
+ rev_int((int *)(hopter + 8));
398
+ charst = (w_char *)(hopter + 12);
399
+ sumst = ((w_char *)charst + tsize + 2); /* + 2 keeps two zero words */
400
+ ptrst = (int *)((w_char *)sumst + tsize);
401
+
402
+ for (k = 0; k < tsize; k++) {
403
+ rev_short(charst + k);
404
+ rev_short(sumst + k);
405
+ }
406
+
407
+ if (state == ST_NORMAL) {
408
+ for (k = 0; k < tsize; k++)
409
+ rev_int (ptrst + k);
410
+ }
411
+ break;
412
+
413
+ case ST_NOENT:
414
+ tsize = rev_if_short((w_char *)(hopter + 2));
415
+ charst = (w_char *)(hopter + 4);
416
+ ptrst = (int *)AL_INT((w_char *)charst + tsize);
417
+
418
+ for (k = 0; k < tsize; k++) {
419
+ rev_short(charst + k);
420
+ rev_int(ptrst + k);
421
+ }
422
+ break;
423
+
424
+ case ST_SMALL:
425
+ rev_short((unsigned short *)(hopter + 2));
426
+ break;
427
+ }
428
}
429
430
-
431
int
432
-little_endian ()
433
+little_endian()
434
{
435
- int a = 1;
436
+ int a = 1;
437
#ifdef BYTE_SWAP
438
- return (1);
439
+ return (1);
440
#else
441
- return (*(char *) &a == 1);
442
+ return (*(char *) &a == 1);
443
#endif
444
}
445
446
void
447
-rev_rd_rind1 (ri1, maxri1, match)
448
- struct rind1 *ri1;
449
- int maxri1;
450
- int match;
451
-{
452
- int k;
453
-
454
- for (k = 0; k < maxri1; k++)
455
- {
456
- rev_int (&(ri1[k].pter1));
457
- rev_int (&(ri1[k].pter));
458
- }
459
+rev_rd_rind1(struct rind1 *ri1,
460
+ int maxri1,
461
+ int match)
462
+{
463
+ int k;
464
+
465
+ for (k = 0; k < maxri1; k++) {
466
+ rev_int(&(ri1[k].pter1));
467
+ rev_int(&(ri1[k].pter));
468
+ }
469
}
470
471
void
472
-rev_rd_rind2 (ri2, maxri2, match)
473
- struct rind2 *ri2;
474
- int maxri2;
475
- int match;
476
-{
477
- int k;
478
-
479
- for (k = 0; k < maxri2; k++)
480
- {
481
- rev_int (&(ri2[k].kanjipter));
482
- rev_int (&(ri2[k].next[D_YOMI]));
483
- rev_int (&(ri2[k].next[D_KANJI]));
484
- }
485
+rev_rd_rind2(struct rind2 *ri2,
486
+ int maxri2,
487
+ int match)
488
+{
489
+ int k;
490
+
491
+ for (k = 0; k < maxri2; k++) {
492
+ rev_int(&(ri2[k].kanjipter));
493
+ rev_int(&(ri2[k].next[D_YOMI]));
494
+ rev_int(&(ri2[k].next[D_KANJI]));
495
+ }
496
}
497
498
void rev_w_char ();
499
500
void
501
-rev_kanji (kpter, maxk, match)
502
- UCHAR *kpter;
503
- int maxk;
504
- int match;
505
-{
506
- UCHAR *kend = kpter + maxk;
507
-
508
- while (kpter < kend && *kpter)
509
- {
510
- rev_w_char ((w_char *) (kpter + 2), *kpter / 2 - 1);
511
- kpter += *kpter;
512
- }
513
+rev_kanji(UCHAR *kpter,
514
+ int maxk,
515
+ int match)
516
+{
517
+ UCHAR *kend = kpter + maxk;
518
+
519
+ while (kpter < kend && *kpter) {
520
+ rev_w_char((w_char *)(kpter + 2), *kpter / 2 - 1);
521
+ kpter += *kpter;
522
+ }
523
}
524
525
void
526
-rev_w_char (p, maxp)
527
- w_char *p;
528
- int maxp;
529
-{
530
- for (; maxp > 0; maxp--)
531
- {
532
- rev_short (p);
533
- p++;
534
- }
535
+rev_w_char(w_char *p,
536
+ int maxp)
537
+{
538
+ for (; maxp > 0; maxp--) {
539
+ rev_short(p);
540
+ p++;
541
+ }
542
}
543
544
/*
545
@@ -357,87 +323,78 @@ rev_w_char (p, maxp)
546
*/
547
548
int
549
-revdic (jtl, match)
550
- struct JT *jtl;
551
- int match;
552
-{
553
- extern int rev_ud (), rev_rd (), rev_sd ();
554
- int syurui = jtl->syurui;
555
-
556
- syurui = jtl->syurui & 0xff;
557
-
558
- if (syurui == WNN_UD_DICT)
559
- {
560
- if (rev_ud (jtl, match) == -1)
561
- return (-1);
562
- }
563
- else if (syurui == WNN_REV_DICT)
564
- {
565
- if (rev_rd (jtl, match) == -1)
566
- return (-1);
567
- }
568
- else
569
- {
570
- if (rev_sd (jtl, match) == -1)
571
- return (-1);
572
- }
573
- return (0);
574
+revdic(struct JT *jtl,
575
+ int match)
576
+{
577
+ extern int rev_ud(), rev_rd(), rev_sd();
578
+ int syurui = jtl->syurui;
579
+
580
+ syurui = jtl->syurui & 0xff;
581
+
582
+ if (syurui == WNN_UD_DICT) {
583
+ if (rev_ud (jtl, match) == -1)
584
+ return (-1);
585
+ } else if (syurui == WNN_REV_DICT) {
586
+ if (rev_rd (jtl, match) == -1)
587
+ return (-1);
588
+ } else {
589
+ if (rev_sd (jtl, match) == -1)
590
+ return (-1);
591
+ }
592
+
593
+ return (0);
594
}
595
596
void rev_common ();
597
598
int
599
-rev_ud (jtl, match)
600
- struct JT *jtl;
601
- int match;
602
-{
603
- rev_common (jtl, match);
604
- rev_ud_hontai (jtl->hontai, jtl->maxhontai, match);
605
- rev_ud_table (jtl->table, jtl->maxtable, match);
606
- return (0);
607
+rev_ud(struct JT *jtl,
608
+ int match)
609
+{
610
+ rev_common(jtl, match);
611
+ rev_ud_hontai(jtl->hontai, jtl->maxhontai, match);
612
+ rev_ud_table(jtl->table, jtl->maxtable, match);
613
+
614
+ return (0);
615
}
616
617
int
618
-rev_sd (jtl, match)
619
- struct JT *jtl;
620
- int match;
621
-{
622
- rev_common (jtl, match);
623
- rev_sd_hontai (jtl->hontai, match);
624
- return (0);
625
+rev_sd(struct JT *jtl,
626
+ int match)
627
+{
628
+ rev_common(jtl, match);
629
+ rev_sd_hontai(jtl->hontai, match);
630
+ return (0);
631
}
632
633
int
634
-rev_rd (jtl, match)
635
- struct JT *jtl;
636
- int match;
637
-{
638
- rev_common (jtl, match);
639
- rev_rd_rind1 (jtl->ri1[D_YOMI], jtl->maxri1[D_YOMI], match);
640
- rev_rd_rind1 (jtl->ri1[D_KANJI], jtl->maxri1[D_KANJI], match);
641
- rev_rd_rind2 (jtl->ri2, jtl->maxri2, match);
642
- return (0);
643
+rev_rd(struct JT *jtl,
644
+ int match)
645
+{
646
+ rev_common(jtl, match);
647
+ rev_rd_rind1(jtl->ri1[D_YOMI], jtl->maxri1[D_YOMI], match);
648
+ rev_rd_rind1(jtl->ri1[D_KANJI], jtl->maxri1[D_KANJI], match);
649
+ rev_rd_rind2(jtl->ri2, jtl->maxri2, match);
650
+ return (0);
651
}
652
653
void
654
-rev_common (jtl, match)
655
- struct JT *jtl;
656
- int match;
657
-{
658
- if (jtl->hinsi)
659
- rev_hinsi (jtl->hinsi, jtl->maxserial, match);
660
- if (jtl->kanji)
661
- rev_kanji (jtl->kanji, jtl->maxkanji, match);
662
- if (jtl->comment)
663
- rev_w_char (jtl->comment, jtl->maxcomment);
664
- if (jtl->hinsi_list)
665
- rev_w_char (jtl->hinsi_list, jtl->maxhinsi_list);
666
+rev_common(struct JT *jtl,
667
+ int match)
668
+{
669
+ if (jtl->hinsi)
670
+ rev_hinsi(jtl->hinsi, jtl->maxserial, match);
671
+ if (jtl->kanji)
672
+ rev_kanji(jtl->kanji, jtl->maxkanji, match);
673
+ if (jtl->comment)
674
+ rev_w_char(jtl->comment, jtl->maxcomment);
675
+ if (jtl->hinsi_list)
676
+ rev_w_char(jtl->hinsi_list, jtl->maxhinsi_list);
677
}
678
679
/* rev_short is called from atod.c.... kanapiiii */
680
void
681
-rev_short_fun (sp)
682
- w_char *sp;
683
+rev_short_fun(w_char *sp)
684
{
685
- rev_short (sp);
686
+ rev_short (sp);
687
}
688
689