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 }