Mercurial > hg > xemacs-beta
comparison src/mule-wnnfns.c @ 157:6b37e6ddd302 r20-3b5
Import from CVS: tag r20-3b5
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:40:41 +0200 |
parents | 59463afc5666 |
children | 15872534500d |
comparison
equal
deleted
inserted
replaced
156:60baf0b43294 | 157:6b37e6ddd302 |
---|---|
289 void w2m (w_char *wp, unsigned char *mp, unsigned char lb); | 289 void w2m (w_char *wp, unsigned char *mp, unsigned char lb); |
290 void m2w (unsigned char *mp, w_char *wp); | 290 void m2w (unsigned char *mp, w_char *wp); |
291 void w2y (w_char *w); | 291 void w2y (w_char *w); |
292 void c2m (unsigned char *cp, unsigned char *mp, unsigned char lb); | 292 void c2m (unsigned char *cp, unsigned char *mp, unsigned char lb); |
293 static void puts2 (char *s); | 293 static void puts2 (char *s); |
294 static int dai_end (int no, int server); | |
294 static int yes_or_no (unsigned char *s); | 295 static int yes_or_no (unsigned char *s); |
296 | |
297 /* Why doesn't wnn have a prototype for these? */ | |
298 typedef unsigned int letter; | |
299 int cwnn_yincod_pzy(w_char *, w_char, int); | |
300 int cwnn_pzy_yincod(letter *, letter *, int); | |
295 | 301 |
296 static struct wnn_buf *wnnfns_buf[NSERVER]; | 302 static struct wnn_buf *wnnfns_buf[NSERVER]; |
297 static struct wnn_env *wnnfns_env_norm[NSERVER]; | 303 static struct wnn_env *wnnfns_env_norm[NSERVER]; |
298 static struct wnn_env *wnnfns_env_rev[NSERVER]; | 304 static struct wnn_env *wnnfns_env_rev[NSERVER]; |
299 static int wnnfns_norm; | 305 static int wnnfns_norm; |
348 */ | 354 */ |
349 case WNNSERVER_K: | 355 case WNNSERVER_K: |
350 strcpy (langname, "ko_KR"); | 356 strcpy (langname, "ko_KR"); |
351 break; | 357 break; |
352 } | 358 } |
353 strncpy (envname, XSTRING (lname)->_data, 32); | 359 strncpy (envname, (char *) XSTRING_DATA (lname), 32); |
354 if (EQ(hname, Qnil)) strcpy (hostname, ""); | 360 if (NILP (hname)) strcpy (hostname, ""); |
355 else | 361 else |
356 { | 362 { |
357 CHECK_STRING (hname); | 363 CHECK_STRING (hname); |
358 strncpy (hostname, XSTRING (hname)->_data, 32); | 364 strncpy (hostname, (char *) XSTRING_DATA (hname), 32); |
359 } | 365 } |
360 CHECK_STRING (lname); | 366 CHECK_STRING (lname); |
361 /* 97/4/16 jhod@po.iijnet.or.jp | 367 /* 97/4/16 jhod@po.iijnet.or.jp |
362 * libwnn uses SIGALRM, so we need to stop and start interrupts. | 368 * libwnn uses SIGALRM, so we need to stop and start interrupts. |
363 */ | 369 */ |
494 val = Qnil; | 500 val = Qnil; |
495 for (i = 0, dicinfo += cnt; i < cnt; i++) | 501 for (i = 0, dicinfo += cnt; i < cnt; i++) |
496 { | 502 { |
497 dicinfo--; | 503 dicinfo--; |
498 w2m (dicinfo->comment, comment, lb); | 504 w2m (dicinfo->comment, comment, lb); |
499 val = Fcons (Fcons (make_int (dicinfo->dic_no), | 505 /* #### The following has not been Mule-ized!! |
500 list4 (make_string (dicinfo->fname, strlen | 506 fname and comment must be ASCII strings! */ |
501 (dicinfo->fname)), | 507 val = |
502 make_string (comment, strlen (comment)), | 508 Fcons (Fcons (make_int (dicinfo->dic_no), |
503 make_int (dicinfo->gosuu), | 509 list4 (make_string ((Bufbyte *) (dicinfo->fname), |
504 make_int (dicinfo->nice))), val); | 510 strlen (dicinfo->fname)), |
511 make_string (comment, strlen ((char *) comment)), | |
512 make_int (dicinfo->gosuu), | |
513 make_int (dicinfo->nice))), val); | |
505 } | 514 } |
506 return val; | 515 return val; |
507 } | 516 } |
508 | 517 |
509 DEFUN ("wnn-server-dict-comment", Fwnn_dict_comment, 2, 2, 0, /* | 518 DEFUN ("wnn-server-dict-comment", Fwnn_dict_comment, 2, 2, 0, /* |
510 Set comment to dictionary specified by DIC-NUMBER. | 519 Set comment to dictionary specified by DIC-NUMBER. |
511 Comment string COMMENT | 520 Comment string COMMENT |
512 */ | 521 */ |
513 (dicno, comment)) | 522 (dicno, comment)) |
514 { | 523 { |
515 w_char wbuf[512]; | 524 w_char wbuf[512]; |
516 int snum; | 525 int snum; |
517 CHECK_INT (dicno); | 526 CHECK_INT (dicno); |
518 CHECK_STRING (comment); | 527 CHECK_STRING (comment); |
519 if ((snum = check_wnn_server_type ()) == -1) return Qnil; | 528 if ((snum = check_wnn_server_type ()) == -1) return Qnil; |
520 if (!wnnfns_buf[snum]) return Qnil; | 529 if (!wnnfns_buf[snum]) return Qnil; |
521 m2w (XSTRING (comment)->_data, wbuf); | 530 m2w (XSTRING (comment)->_data, wbuf); |
532 { | 541 { |
533 int snum; | 542 int snum; |
534 if ((snum = check_wnn_server_type ()) == -1) return Qnil; | 543 if ((snum = check_wnn_server_type ()) == -1) return Qnil; |
535 if (EQ(rev, Qnil)) | 544 if (EQ(rev, Qnil)) |
536 { | 545 { |
537 if ((!wnnfns_buf[snum]) || (!wnnfns_env_norm[snum])) return; | 546 if ((!wnnfns_buf[snum]) || (!wnnfns_env_norm[snum])) return Qnil; |
538 jl_env_set (wnnfns_buf[snum], wnnfns_env_norm[snum]); | 547 jl_env_set (wnnfns_buf[snum], wnnfns_env_norm[snum]); |
539 wnnfns_norm = 1; | 548 wnnfns_norm = 1; |
540 } | 549 } |
541 else | 550 else |
542 { | 551 { |
543 if ((!wnnfns_buf[snum]) || (!wnnfns_env_rev[snum])) return; | 552 if ((!wnnfns_buf[snum]) || (!wnnfns_env_rev[snum])) return Qnil; |
544 jl_env_set (wnnfns_buf[snum], wnnfns_env_rev[snum]); | 553 jl_env_set (wnnfns_buf[snum], wnnfns_env_rev[snum]); |
545 wnnfns_norm = 0; | 554 wnnfns_norm = 0; |
546 } | 555 } |
547 return Qt; | 556 return Qt; |
548 } | 557 } |
616 if ((snum = check_wnn_server_type ()) == -1) return Qnil; | 625 if ((snum = check_wnn_server_type ()) == -1) return Qnil; |
617 lb = lb_wnn_server_type[snum]; | 626 lb = lb_wnn_server_type[snum]; |
618 if (!wnnfns_buf[snum]) return Qnil; | 627 if (!wnnfns_buf[snum]) return Qnil; |
619 jl_get_zenkouho_kanji (wnnfns_buf[snum], XINT (kouhoNo), wbuf); | 628 jl_get_zenkouho_kanji (wnnfns_buf[snum], XINT (kouhoNo), wbuf); |
620 w2m (wbuf, kanji_buf, lb); | 629 w2m (wbuf, kanji_buf, lb); |
621 return make_string (kanji_buf, strlen (kanji_buf)); | 630 return make_string (kanji_buf, strlen ((char *) kanji_buf)); |
622 } | 631 } |
623 | 632 |
624 DEFUN ("wnn-server-zenkouho-bun", Fwnn_zenkouho_bun, 0, 0, 0, /* | 633 DEFUN ("wnn-server-zenkouho-bun", Fwnn_zenkouho_bun, 0, 0, 0, /* |
625 For Wnn. | 634 For Wnn. |
626 */ | 635 */ |
741 yomilen = jl_get_yomi (wnnfns_buf[snum], bun_no, bun_no + 1, wbuf); | 750 yomilen = jl_get_yomi (wnnfns_buf[snum], bun_no, bun_no + 1, wbuf); |
742 jirilen = wnnfns_buf[snum]->bun[bun_no]->jirilen; | 751 jirilen = wnnfns_buf[snum]->bun[bun_no]->jirilen; |
743 for (i = yomilen; i >= jirilen; i--) wbuf[i+1] = wbuf[i]; | 752 for (i = yomilen; i >= jirilen; i--) wbuf[i+1] = wbuf[i]; |
744 wbuf[jirilen] = '+'; | 753 wbuf[jirilen] = '+'; |
745 w2m (wbuf, cbuf, lb); | 754 w2m (wbuf, cbuf, lb); |
746 val = Fcons (make_string (cbuf, strlen (cbuf)), val); | 755 val = Fcons (make_string (cbuf, strlen ((char *) cbuf)), val); |
747 jl_get_kanji (wnnfns_buf[snum], bun_no, bun_no + 1, wbuf); | 756 jl_get_kanji (wnnfns_buf[snum], bun_no, bun_no + 1, wbuf); |
748 w2m (wbuf, cbuf, lb); | 757 w2m (wbuf, cbuf, lb); |
749 val = Fcons (make_string (cbuf, strlen (cbuf)), val); | 758 val = Fcons (make_string (cbuf, strlen ((char *) cbuf)), val); |
750 return val; | 759 return val; |
751 } | 760 } |
752 | 761 |
753 | 762 |
754 DEFUN ("wnn-server-henkan-quit", Fwnn_quit_henkan, 0, 0, 0, /* | 763 DEFUN ("wnn-server-henkan-quit", Fwnn_quit_henkan, 0, 0, 0, /* |
778 lb = lb_wnn_server_type[snum]; | 787 lb = lb_wnn_server_type[snum]; |
779 if (!wnnfns_buf[snum]) return Qnil; | 788 if (!wnnfns_buf[snum]) return Qnil; |
780 no = XINT (bunNo); | 789 no = XINT (bunNo); |
781 kanji_len = jl_get_kanji (wnnfns_buf[snum], no, no + 1, wbuf); | 790 kanji_len = jl_get_kanji (wnnfns_buf[snum], no, no + 1, wbuf); |
782 w2m (wbuf, kanji_buf, lb); | 791 w2m (wbuf, kanji_buf, lb); |
783 return Fcons (make_string (kanji_buf, strlen (kanji_buf)), | 792 return Fcons (make_string (kanji_buf, strlen ((char *) kanji_buf)), |
784 make_int (kanji_len)); | 793 make_int (kanji_len)); |
785 } | 794 } |
786 | 795 |
787 DEFUN ("wnn-server-bunsetu-yomi", Fwnn_bunsetu_yomi, 1, 1, 0, /* | 796 DEFUN ("wnn-server-bunsetu-yomi", Fwnn_bunsetu_yomi, 1, 1, 0, /* |
788 Get the pair of yomi and length of bunsetsu specified by BUN-NUMBER. | 797 Get the pair of yomi and length of bunsetsu specified by BUN-NUMBER. |
800 lb = lb_wnn_server_type[snum]; | 809 lb = lb_wnn_server_type[snum]; |
801 if (!wnnfns_buf[snum]) return Qnil; | 810 if (!wnnfns_buf[snum]) return Qnil; |
802 no = XINT (bunNo); | 811 no = XINT (bunNo); |
803 yomi_len = jl_get_yomi (wnnfns_buf[snum], no, no + 1, wbuf); | 812 yomi_len = jl_get_yomi (wnnfns_buf[snum], no, no + 1, wbuf); |
804 w2m (wbuf, yomi_buf, lb); | 813 w2m (wbuf, yomi_buf, lb); |
805 return Fcons (make_string (yomi_buf, strlen (yomi_buf)), | 814 return Fcons (make_string (yomi_buf, strlen ((char *) yomi_buf)), |
806 make_int (yomi_len)); | 815 make_int (yomi_len)); |
807 } | 816 } |
808 | 817 |
809 DEFUN ("wnn-server-bunsetu-suu", Fwnn_bunsetu_suu, 0, 0, 0, /* | 818 DEFUN ("wnn-server-bunsetu-suu", Fwnn_bunsetu_suu, 0, 0, 0, /* |
810 Get the number of bunsetsu. | 819 Get the number of bunsetsu. |
924 { | 933 { |
925 val = Qnil; | 934 val = Qnil; |
926 val = Fcons (make_int (info_buf->hinshi), val); | 935 val = Fcons (make_int (info_buf->hinshi), val); |
927 val = Fcons (make_int (info_buf->hindo), val); | 936 val = Fcons (make_int (info_buf->hindo), val); |
928 w2m (info_buf->com, cbuf, lb); | 937 w2m (info_buf->com, cbuf, lb); |
929 val = Fcons (make_string (cbuf, strlen (cbuf)), val); | 938 val = Fcons (make_string (cbuf, strlen ((char *) cbuf)), val); |
930 w2m (info_buf->kanji, cbuf, lb); | 939 w2m (info_buf->kanji, cbuf, lb); |
931 val = Fcons (make_string (cbuf, strlen (cbuf)), val); | 940 val = Fcons (make_string (cbuf, strlen ((char *) cbuf)), val); |
932 w2m (info_buf->yomi, cbuf, lb); | 941 w2m (info_buf->yomi, cbuf, lb); |
933 val = Fcons (make_string (cbuf, strlen (cbuf)), val); | 942 val = Fcons (make_string (cbuf, strlen ((char *) cbuf)), val); |
934 return val; | 943 return val; |
935 } | 944 } |
936 } | 945 } |
937 | 946 |
938 DEFUN ("wnn-server-word-hindo-set", Fwnn_hindo_set, 3, 3, 0, /* | 947 DEFUN ("wnn-server-word-hindo-set", Fwnn_hindo_set, 3, 3, 0, /* |
984 val = Qnil; | 993 val = Qnil; |
985 for (i = 0, wordinfo += count; i < count; i++) | 994 for (i = 0, wordinfo += count; i < count; i++) |
986 { | 995 { |
987 wordinfo--; | 996 wordinfo--; |
988 w2m (wordinfo->kanji, kanji_buf, lb); | 997 w2m (wordinfo->kanji, kanji_buf, lb); |
989 val = Fcons (Fcons (make_string (kanji_buf, strlen (kanji_buf)), | 998 val = Fcons (Fcons (make_string (kanji_buf, strlen ((char *) kanji_buf)), |
990 list4 (make_int (wordinfo->hinshi), | 999 list4 (make_int (wordinfo->hinshi), |
991 make_int (wordinfo->hindo), | 1000 make_int (wordinfo->hindo), |
992 make_int (wordinfo->dic_no), | 1001 make_int (wordinfo->dic_no), |
993 make_int (wordinfo->serial))), | 1002 make_int (wordinfo->serial))), |
994 val); | 1003 val); |
1114 DEFUN ("wnn-server-get-msg", Fwnn_get_msg, 0, 0, 0, /* | 1123 DEFUN ("wnn-server-get-msg", Fwnn_get_msg, 0, 0, 0, /* |
1115 Get message string from wnn_perror. | 1124 Get message string from wnn_perror. |
1116 */ | 1125 */ |
1117 ()) | 1126 ()) |
1118 { | 1127 { |
1119 char mbuf[256]; | 1128 unsigned char mbuf[256]; |
1120 char *msgp; | 1129 char *msgp; |
1121 int snum; | 1130 int snum; |
1122 unsigned char lb; | 1131 unsigned char lb; |
1123 char langname[32]; | 1132 char langname[32]; |
1124 /* CHECK_INT (errno);*/ | 1133 /* CHECK_INT (errno);*/ |
1142 break; | 1151 break; |
1143 } | 1152 } |
1144 if (!wnnfns_buf[snum]) return Qnil; | 1153 if (!wnnfns_buf[snum]) return Qnil; |
1145 /* msgp = msg_get (wnn_msg_cat, XINT (errno), 0, 0);*/ | 1154 /* msgp = msg_get (wnn_msg_cat, XINT (errno), 0, 0);*/ |
1146 msgp = wnn_perror_lang (langname); | 1155 msgp = wnn_perror_lang (langname); |
1147 c2m (msgp, mbuf, lb); | 1156 c2m ((unsigned char *) msgp, mbuf, lb); |
1148 return make_string (mbuf, strlen (mbuf)); | 1157 return make_string (mbuf, strlen ((char *) mbuf)); |
1149 } | 1158 } |
1150 | 1159 |
1151 | 1160 |
1152 DEFUN ("wnn-server-fuzokugo-set", Fwnn_fuzokugo_set, 1, 1, 0, /* | 1161 DEFUN ("wnn-server-fuzokugo-set", Fwnn_fuzokugo_set, 1, 1, 0, /* |
1153 For Wnn. | 1162 For Wnn. |
1171 char fname[256]; | 1180 char fname[256]; |
1172 int snum; | 1181 int snum; |
1173 if ((snum = check_wnn_server_type ()) == -1) return Qnil; | 1182 if ((snum = check_wnn_server_type ()) == -1) return Qnil; |
1174 if (!wnnfns_buf[snum]) return Qnil; | 1183 if (!wnnfns_buf[snum]) return Qnil; |
1175 if (jl_fuzokugo_get (wnnfns_buf[snum], fname) < 0) return Qnil; | 1184 if (jl_fuzokugo_get (wnnfns_buf[snum], fname) < 0) return Qnil; |
1176 return make_string (fname, strlen (fname)); | 1185 return make_string ((Bufbyte *) fname, strlen (fname)); |
1177 } | 1186 } |
1178 | 1187 |
1179 | 1188 |
1180 DEFUN ("wnn-server-isconnect", Fwnn_isconnect, 0, 0, 0, /* | 1189 DEFUN ("wnn-server-isconnect", Fwnn_isconnect, 0, 0, 0, /* |
1181 For Wnn. | 1190 For Wnn. |
1236 val = Qnil; | 1245 val = Qnil; |
1237 for (area += cnt; cnt > 0; cnt--) | 1246 for (area += cnt; cnt > 0; cnt--) |
1238 { | 1247 { |
1239 area--; | 1248 area--; |
1240 w2m (*area, cbuf, lb); | 1249 w2m (*area, cbuf, lb); |
1241 val = Fcons (make_string (cbuf, strlen (cbuf)), val); | 1250 val = Fcons (make_string (cbuf, strlen ((char *) cbuf)), val); |
1242 } | 1251 } |
1243 return val; | 1252 return val; |
1244 } | 1253 } |
1245 | 1254 |
1246 DEFUN ("wnn-server-hinsi-name", Fwnn_hinsi_name, 1, 1, 0, /* | 1255 DEFUN ("wnn-server-hinsi-name", Fwnn_hinsi_name, 1, 1, 0, /* |
1256 if ((snum = check_wnn_server_type ()) == -1) return Qnil; | 1265 if ((snum = check_wnn_server_type ()) == -1) return Qnil; |
1257 lb = lb_wnn_server_type[snum]; | 1266 lb = lb_wnn_server_type[snum]; |
1258 if (!wnnfns_buf[snum]) return Qnil; | 1267 if (!wnnfns_buf[snum]) return Qnil; |
1259 if ((wname = jl_hinsi_name (wnnfns_buf[snum], XINT (no))) == 0) return Qnil; | 1268 if ((wname = jl_hinsi_name (wnnfns_buf[snum], XINT (no))) == 0) return Qnil; |
1260 w2m (wname, name, lb); | 1269 w2m (wname, name, lb); |
1261 return make_string (name, strlen (name)); | 1270 return make_string (name, strlen ((char *) name)); |
1262 } | 1271 } |
1263 #ifdef WNN6 | 1272 #ifdef WNN6 |
1264 DEFUN ("wnn-server-fisys-dict-add", Fwnn_fisys_dict_add, 3, MANY, 0, /* | 1273 DEFUN ("wnn-server-fisys-dict-add", Fwnn_fisys_dict_add, 3, MANY, 0, /* |
1265 Add dictionary specified by FISYS-DICT-FILE-NAME, FISYS-FREQ-FILE-NAME, | 1274 Add dictionary specified by FISYS-DICT-FILE-NAME, FISYS-FREQ-FILE-NAME, |
1266 FISYS-FREQ-FILE-MODE. | 1275 FISYS-FREQ-FILE-MODE. |
2002 } | 2011 } |
2003 | 2012 |
2004 void | 2013 void |
2005 w2y (w_char *w) | 2014 w2y (w_char *w) |
2006 { | 2015 { |
2007 unsigned long pbuf[5000], ybuf[5000]; | 2016 letter pbuf[5000], ybuf[5000]; |
2008 unsigned long *pin; | 2017 unsigned int *pin; |
2009 w_char *y; | 2018 w_char *y; |
2010 int len; | 2019 int len; |
2011 | 2020 |
2012 pin = pbuf; | 2021 pin = pbuf; |
2013 y = w; | 2022 y = w; |
2047 *mp++ = *cp++; | 2056 *mp++ = *cp++; |
2048 } | 2057 } |
2049 *mp = 0; | 2058 *mp = 0; |
2050 } | 2059 } |
2051 | 2060 |
2052 int | 2061 static int |
2053 dai_end (int no, int server) | 2062 dai_end (int no, int server) |
2054 { | 2063 { |
2055 for (no++; no < jl_bun_suu (wnnfns_buf[server]) | 2064 for (no++; no < jl_bun_suu (wnnfns_buf[server]) |
2056 && !jl_dai_top (wnnfns_buf[server], no); no++); | 2065 && !jl_dai_top (wnnfns_buf[server], no); no++); |
2057 return (no); | 2066 return (no); |