Mercurial > freewnn
comparison Wnn/jutil/ujisf.c @ 22:c966456648ad
- fixed argument style in function definition
- created header files for prototype check. (in progress)
- suppress warnings
author | Yoshiki Yazawa <yaz@cc.rim.or.jp> |
---|---|
date | Thu, 17 Apr 2008 01:17:45 +0900 |
parents | 6ab41ec6f895 |
children | a7ccf412ba02 |
comparison
equal
deleted
inserted
replaced
21:22b754fbd8fe | 22:c966456648ad |
---|---|
66 #ifndef min | 66 #ifndef min |
67 #define min(a, b) ((a > b)? b:a) | 67 #define min(a, b) ((a > b)? b:a) |
68 #define max(a, b) ((a < b)? b:a) | 68 #define max(a, b) ((a < b)? b:a) |
69 #endif | 69 #endif |
70 | 70 |
71 /* prototypes */ | |
71 extern unsigned char kanjiaddr (); | 72 extern unsigned char kanjiaddr (); |
72 extern void Print_entry (); | 73 extern void Print_entry (); |
73 extern int wnn_find_hinsi_by_name (); | 74 extern int wnn_find_hinsi_by_name (); |
74 #ifdef CHINESE | 75 #ifdef CHINESE |
75 extern void cwnn_zy_str_analysis (), cwnn_py_str_analysis (); | 76 extern void cwnn_zy_str_analysis (), cwnn_py_str_analysis (); |
76 #endif | 77 #endif |
77 int sort_func (), Sorted (), w_stradd (); | 78 |
78 static void Kanjistradd (), bunpou_num (), read_kanji_str (), toesc (); | 79 |
79 void exit1 (); | 80 #include "ujisf.h" |
81 | |
82 static void Kanjistradd (w_char *k, w_char *y, w_char *c, register UCHAR **cp); | |
83 static void bunpou_num (register char *a, register int *p); | |
84 static void read_kanji_str (register char *c, register char *o); | |
85 static void toesc (char *ckanji, char *cyomi); | |
86 void exit1 (void); | |
80 | 87 |
81 extern struct JT jt; | 88 extern struct JT jt; |
82 | 89 |
83 /* extern variables */ | 90 /* extern variables */ |
84 | 91 |
111 int lc; | 118 int lc; |
112 | 119 |
113 static char stack[LINE_SIZE] = { 0 }; | 120 static char stack[LINE_SIZE] = { 0 }; |
114 | 121 |
115 int | 122 int |
116 get_line (c) | 123 get_line (register char *c) |
117 register char *c; | |
118 { | 124 { |
119 if (stack[0]) | 125 if (stack[0]) |
120 { | 126 { |
121 strcpy (c, stack); | 127 strcpy (c, stack); |
122 stack[0] = 0; | 128 stack[0] = 0; |
130 } | 136 } |
131 return (0); | 137 return (0); |
132 } | 138 } |
133 | 139 |
134 void | 140 void |
135 unget_line (c) | 141 unget_line (char *c) |
136 char *c; | |
137 { | 142 { |
138 strcpy (stack, c); | 143 strcpy (stack, c); |
139 } | 144 } |
140 | 145 |
141 | 146 |
142 char * | 147 char * |
143 get_string (str, buf) | 148 get_string (register char *str, char *buf) |
144 register char *str; | |
145 char *buf; | |
146 { | 149 { |
147 register char *c = buf; | 150 register char *c = buf; |
148 for (; *c == '\t' || *c == ' '; c++); | 151 for (; *c == '\t' || *c == ' '; c++); |
149 if (*c == '\0' || *c == '\n') | 152 if (*c == '\0' || *c == '\n') |
150 { | 153 { |
158 *str = 0; | 161 *str = 0; |
159 return (c); | 162 return (c); |
160 } | 163 } |
161 | 164 |
162 void | 165 void |
163 bad_line (bf) | 166 bad_line (char *bf) |
164 char *bf; | |
165 { | 167 { |
166 static int badl = 0; | 168 static int badl = 0; |
167 | 169 |
168 fprintf (stderr, "Bad line \"%s\"\n", bf); | 170 fprintf (stderr, "Bad line \"%s\"\n", bf); |
169 fprintf (stderr, "Bad line omitted\n"); | 171 fprintf (stderr, "Bad line omitted\n"); |
173 exit1 (); | 175 exit1 (); |
174 } | 176 } |
175 } | 177 } |
176 | 178 |
177 void | 179 void |
178 error_no_heap () | 180 error_no_heap (void) |
179 { | 181 { |
180 fprintf (stderr, "Heap area is exhausted.\n"); | 182 fprintf (stderr, "Heap area is exhausted.\n"); |
181 exit1 (); | 183 exit1 (); |
182 } | 184 } |
183 | 185 |
184 static int | 186 static int |
185 get_one_line (buffer, jep, rev, to_esc, which_dict) | 187 get_one_line (char *buffer, register struct je **jep, int rev, int to_esc, int which_dict) |
186 char *buffer; | |
187 register struct je **jep; | |
188 int rev; | |
189 int to_esc; | |
190 int which_dict; | |
191 { | 188 { |
192 register char *c = buffer; | 189 register char *c = buffer; |
193 static char tmp[LINE_SIZE]; | 190 static char tmp[LINE_SIZE]; |
194 static char ckanji[LINE_SIZE]; | 191 static char ckanji[LINE_SIZE]; |
195 static char cyomi[LINE_SIZE]; | 192 static char cyomi[LINE_SIZE]; |
341 comm, &(*jep)->kanji); | 338 comm, &(*jep)->kanji); |
342 return (0); | 339 return (0); |
343 } | 340 } |
344 | 341 |
345 static void | 342 static void |
346 Kanjistradd (k, y, c, cp) | 343 Kanjistradd (w_char *k, w_char *y, w_char *c, register UCHAR **cp) |
347 register UCHAR **cp; | |
348 w_char *k, *y, *c; | |
349 { | 344 { |
350 int len; | 345 int len; |
351 if (hp + LENGTHKANJI >= heapend) | 346 if (hp + LENGTHKANJI >= heapend) |
352 { | 347 { |
353 if ((hp = heap = (UCHAR *) malloc ((HEAPINC * HEAP_PER_LINE))) == NULL) | 348 if ((hp = heap = (UCHAR *) malloc ((HEAPINC * HEAP_PER_LINE))) == NULL) |
365 } | 360 } |
366 hp += len; | 361 hp += len; |
367 } | 362 } |
368 | 363 |
369 int | 364 int |
370 w_stradd (str, cp) | 365 w_stradd (register w_char *str, register w_char **cp) |
371 register w_char **cp; | |
372 register w_char *str; | |
373 { | 366 { |
374 register int len = wnn_Strlen (str); | 367 register int len = wnn_Strlen (str); |
375 | 368 |
376 if (yhp + len + 1 >= yheapend) | 369 if (yhp + len + 1 >= yheapend) |
377 { | 370 { |
386 wnn_Strcpy (yhp, str); | 379 wnn_Strcpy (yhp, str); |
387 yhp += len + 1; | 380 yhp += len + 1; |
388 return (0); | 381 return (0); |
389 } | 382 } |
390 | 383 |
391 void | 384 |
392 #ifdef CHINESE | 385 #ifdef CHINESE |
393 ujis_header (which_dict) | 386 void ujis_header (int *which_dict) |
394 int *which_dict; | |
395 #else | 387 #else |
396 ujis_header () | 388 void ujis_header (void) |
397 #endif | 389 #endif |
398 { | 390 { |
399 char buffer[LINE_SIZE]; | 391 char buffer[LINE_SIZE]; |
400 char *c = buffer; | 392 char *c = buffer; |
401 char str[LINE_SIZE]; | 393 char str[LINE_SIZE]; |
495 jt.maxcomment = wnn_Strlen (file_comment); | 487 jt.maxcomment = wnn_Strlen (file_comment); |
496 jt.maxhinsi_list = wnn_Strlen (hinsi_list) + 1; | 488 jt.maxhinsi_list = wnn_Strlen (hinsi_list) + 1; |
497 } | 489 } |
498 | 490 |
499 void | 491 void |
500 read_ujis (rev, to_esc, which_dict) | 492 read_ujis (int rev, int to_esc, int which_dict) |
501 int rev; | |
502 int to_esc; | |
503 int which_dict; | |
504 { | 493 { |
505 char buffer[LINE_SIZE]; | 494 char buffer[LINE_SIZE]; |
506 register int tmp; | 495 register int tmp; |
507 | 496 |
508 for (lc = 0; get_line (buffer) != EOF;) | 497 for (lc = 0; get_line (buffer) != EOF;) |
525 jt.syurui = which_dict; | 514 jt.syurui = which_dict; |
526 #endif | 515 #endif |
527 } | 516 } |
528 | 517 |
529 void | 518 void |
530 reverse_yomi () | 519 reverse_yomi (void) |
531 { | 520 { |
532 register int i; | 521 register int i; |
533 w_char ytmp[LINE_SIZE]; | 522 w_char ytmp[LINE_SIZE]; |
534 | 523 |
535 for (i = 0; i < jt.maxserial; i++) | 524 for (i = 0; i < jt.maxserial; i++) |
546 } | 535 } |
547 | 536 |
548 extern char *wnn_get_hinsi_name (); | 537 extern char *wnn_get_hinsi_name (); |
549 | 538 |
550 void | 539 void |
551 print_je (jep, opter, serial_out, esc_exp) | 540 print_je (register struct je *jep, register FILE *opter, int serial_out, int esc_exp) |
552 register FILE *opter; | |
553 register struct je *jep; | |
554 int serial_out; | |
555 int esc_exp; | |
556 { | 541 { |
557 /* if (jep->yomi != 0) { */ | 542 /* if (jep->yomi != 0) { */ |
558 if (jep->hinsi != SAKUJO_HINSI) | 543 if (jep->hinsi != SAKUJO_HINSI) |
559 { | 544 { |
560 Print_entry (jep->yomi, jep->kan, jep->comm, jep->hindo, 0, jep->hinsi, serial_out ? jep->serial : -1, opter, esc_exp); | 545 Print_entry (jep->yomi, jep->kan, jep->comm, jep->hindo, 0, jep->hinsi, serial_out ? jep->serial : -1, opter, esc_exp); |
561 } | 546 } |
562 } | 547 } |
563 | 548 |
564 #ifdef nodef | 549 #ifdef nodef |
565 kprint (fp, kpter) | 550 kprint (register FILE *fp, register w_char *kpter) |
566 register FILE *fp; | |
567 register w_char *kpter; | |
568 { | 551 { |
569 char out_str[LENGTHKANJI]; | 552 char out_str[LENGTHKANJI]; |
570 register int out_len; | 553 register int out_len; |
571 char tmp[LENGTHKANJI]; | 554 char tmp[LENGTHKANJI]; |
572 | 555 |
580 putc ('\t', fp); | 563 putc ('\t', fp); |
581 } | 564 } |
582 #endif | 565 #endif |
583 | 566 |
584 void | 567 void |
585 output_ujis (opter, serial_out, esc_exp) | 568 output_ujis (register FILE *opter, int serial_out, int esc_exp) |
586 register FILE *opter; | |
587 int serial_out; | |
588 int esc_exp; | |
589 { | 569 { |
590 register struct je **jep; | 570 register struct je **jep; |
591 char buffer[WNN_COMMENT_LEN + WNN_HINSI_LEN]; | 571 char buffer[WNN_COMMENT_LEN + WNN_HINSI_LEN]; |
592 register int i; | 572 register int i; |
593 | 573 |
623 } | 603 } |
624 } | 604 } |
625 } | 605 } |
626 | 606 |
627 int | 607 int |
628 init_heap (hpb, yhpb, l, rl, ipf) | 608 init_heap (int hpb, int yhpb, int l, int rl, FILE *ipf) |
629 int hpb, yhpb, l, rl; | |
630 FILE *ipf; | |
631 { | 609 { |
632 jehp = je_heap = (struct je *) malloc ((rl * sizeof (struct je))); | 610 jehp = je_heap = (struct je *) malloc ((rl * sizeof (struct je))); |
633 hp = heap = (UCHAR *) malloc (hpb); | 611 hp = heap = (UCHAR *) malloc (hpb); |
634 yhp = yomi_heap = (w_char *) malloc ((yhpb * sizeof (w_char))); | 612 yhp = yomi_heap = (w_char *) malloc ((yhpb * sizeof (w_char))); |
635 if ((jeary = (struct je **) calloc (l, sizeof (struct je *))) == NULL) | 613 if ((jeary = (struct je **) calloc (l, sizeof (struct je *))) == NULL) |
644 jeheapend = je_heap + rl; | 622 jeheapend = je_heap + rl; |
645 return (0); | 623 return (0); |
646 } | 624 } |
647 | 625 |
648 void | 626 void |
649 init_jeary () | 627 init_jeary (void) |
650 { | 628 { |
651 int k; | 629 int k; |
652 for (k = 0; k < jt.maxserial; k++) | 630 for (k = 0; k < jt.maxserial; k++) |
653 { | 631 { |
654 jeary[k] = je_heap + k; | 632 jeary[k] = je_heap + k; |
678 } | 656 } |
679 | 657 |
680 /* must be updated later */ | 658 /* must be updated later */ |
681 | 659 |
682 static void | 660 static void |
683 bunpou_num (a, p) | 661 bunpou_num (register char *a, register int *p) |
684 register char *a; | |
685 register int *p; | |
686 { | 662 { |
687 int tmp; | 663 int tmp; |
688 if ((tmp = wnn_find_hinsi_by_name (a)) == -1) | 664 if ((tmp = wnn_find_hinsi_by_name (a)) == -1) |
689 { | 665 { |
690 if (sscanf (a, "%d", p) == 0) | 666 if (sscanf (a, "%d", p) == 0) |
702 #endif | 678 #endif |
703 } | 679 } |
704 | 680 |
705 #ifdef CHINESE | 681 #ifdef CHINESE |
706 static void | 682 static void |
707 sisheng_num (a, p) | 683 sisheng_num (register char *a, register int *p) |
708 register char *a; | |
709 register int *p; | |
710 { | 684 { |
711 sscanf (a, "%d", p); | 685 sscanf (a, "%d", p); |
712 } | 686 } |
713 #endif | 687 #endif |
714 | 688 |
715 int | 689 int |
716 sort_func_je (a, b) | 690 sort_func_je (const void *a, const void *b) |
717 char *a, *b; | 691 { |
718 { | 692 return (sort_func ((char *)a, (char *)b, D_YOMI)); |
719 return (sort_func (a, b, D_YOMI)); | |
720 } | 693 } |
721 | 694 |
722 int | 695 int |
723 sort_func_je_kanji (a, b) | 696 sort_func_je_kanji (const void *a, const void *b) |
724 char *a, *b; | 697 { |
725 { | 698 return (sort_func ((char *)a, (char *)b, D_KANJI)); |
726 return (sort_func (a, b, D_KANJI)); | |
727 } | 699 } |
728 | 700 |
729 int | 701 int |
730 sort_func (a, b, which) | 702 sort_func (register char *a, register char *b, int which) |
731 register char *a, *b; | |
732 int which; | |
733 { | 703 { |
734 register int tmp; | 704 register int tmp; |
735 register struct je *pa, *pb; | 705 register struct je *pa, *pb; |
736 pa = *((struct je **) a); | 706 pa = *((struct je **) a); |
737 pb = *((struct je **) b); | 707 pb = *((struct je **) b); |
802 } | 772 } |
803 return (0); | 773 return (0); |
804 } | 774 } |
805 | 775 |
806 void | 776 void |
807 sort () | 777 sort (void) |
808 { | 778 { |
809 qsort ((char *) jeary, jt.maxserial, sizeof (struct je *), sort_func_je); | 779 qsort ((char *) jeary, jt.maxserial, sizeof (struct je *), sort_func_je); |
810 } | 780 } |
811 | 781 |
812 void | 782 void |
813 sort_if_not_sorted () | 783 sort_if_not_sorted (void) |
814 { | 784 { |
815 if (!Sorted ((char *) jeary, jt.maxserial, sizeof (struct je *), sort_func_je)) | 785 if (!Sorted ((char *) jeary, jt.maxserial, sizeof (struct je *), sort_func_je)) |
816 { | 786 { |
817 sort (); | 787 sort (); |
818 } | 788 } |
819 } | 789 } |
820 | 790 |
821 void | 791 void |
822 sort_kanji () | 792 sort_kanji (void) |
823 { | 793 { |
824 qsort ((char *) jeary, jt.maxserial, sizeof (struct je *), sort_func_je_kanji); | 794 qsort ((char *) jeary, jt.maxserial, sizeof (struct je *), sort_func_je_kanji); |
825 } | 795 } |
826 | 796 |
827 void | 797 void |
828 uniq_je (func) | 798 uniq_je (int (*func) ()) |
829 int (*func) (); | |
830 { | 799 { |
831 int k; | 800 int k; |
832 struct je **prev, **jep; | 801 struct je **prev, **jep; |
833 | 802 |
834 if (jt.maxserial == 0) | 803 if (jt.maxserial == 0) |
879 prev++; | 848 prev++; |
880 jt.maxserial = prev - &jeary[0]; | 849 jt.maxserial = prev - &jeary[0]; |
881 } | 850 } |
882 | 851 |
883 #ifdef nodef | 852 #ifdef nodef |
884 make_kanji_str (o, c) | 853 make_kanji_str (register UCHAR *o, register UCHAR *c) |
885 register UCHAR *o, *c; | |
886 { | 854 { |
887 register UCHAR *o0 = o; | 855 register UCHAR *o0 = o; |
888 | 856 |
889 for (; *c; c++) | 857 for (; *c; c++) |
890 { | 858 { |
907 return (o - o0); | 875 return (o - o0); |
908 } | 876 } |
909 #endif | 877 #endif |
910 | 878 |
911 static void | 879 static void |
912 read_kanji_str (c, o) | 880 read_kanji_str (register char *c, register char *o) |
913 register char *c, *o; | |
914 { | 881 { |
915 for (; *o; c++) | 882 for (; *o; c++) |
916 { | 883 { |
917 if (*o == '\\') | 884 if (*o == '\\') |
918 { | 885 { |
946 *c = 0; | 913 *c = 0; |
947 } | 914 } |
948 | 915 |
949 #ifdef CHINESE | 916 #ifdef CHINESE |
950 static void | 917 static void |
951 read_kanji_str_w (c, o) | 918 read_kanji_str_w (register w_char *c, register w_char *) |
952 register w_char *c, *o; | |
953 { | 919 { |
954 for (; *o; c++) | 920 for (; *o; c++) |
955 { | 921 { |
956 if (*o == (w_char) '\\') | 922 if (*o == (w_char) '\\') |
957 { | 923 { |
985 *c = 0; | 951 *c = 0; |
986 } | 952 } |
987 #endif | 953 #endif |
988 | 954 |
989 int | 955 int |
990 Sorted (st, lc, size, sort_fun) | 956 Sorted (register char *st, register int lc, int size, int (*sort_fun) (const void *a, const void *b)) |
991 register char *st; | |
992 register int lc; | |
993 int size; | |
994 int (*sort_fun) (); | |
995 { | 957 { |
996 char *dst = st + size; | 958 char *dst = st + size; |
997 for (lc--; lc > 0; lc--, st = dst, dst += size) | 959 for (lc--; lc > 0; lc--, st = dst, dst += size) |
998 { | 960 { |
999 if (sort_fun (st, dst) > 0) | 961 if (sort_fun (st, dst) > 0) |
1003 } | 965 } |
1004 return (1); | 966 return (1); |
1005 } | 967 } |
1006 | 968 |
1007 int | 969 int |
1008 is_katakana (k, y) | 970 is_katakana (register char *k, register char *y) |
1009 register char *k, *y; | |
1010 { | 971 { |
1011 for (; *k && *y;) | 972 for (; *k && *y;) |
1012 { | 973 { |
1013 if (*y == (char) 0xa1 && *k == (char) 0xa1 && *(y + 1) == (char) 0xbc && *(y + 1) == (char) 0xbc) | 974 if (*y == (char) 0xa1 && *k == (char) 0xa1 && *(y + 1) == (char) 0xbc && *(y + 1) == (char) 0xbc) |
1014 { /*"¡¼" */ | 975 { /*"¡¼" */ |
1026 } | 987 } |
1027 return (!(*k | *y)); | 988 return (!(*k | *y)); |
1028 } | 989 } |
1029 | 990 |
1030 static void | 991 static void |
1031 toesc (ckanji, cyomi) | 992 toesc (char *ckanji, char *cyomi) |
1032 char *ckanji, *cyomi; | |
1033 { | 993 { |
1034 if (strcmp (ckanji, cyomi) == 0) | 994 if (strcmp (ckanji, cyomi) == 0) |
1035 { | 995 { |
1036 strcpy (ckanji, DIC_HIRAGANA); | 996 strcpy (ckanji, DIC_HIRAGANA); |
1037 } | 997 } |