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);