Mercurial > hg > xemacs-beta
comparison src/mule-canna.c @ 1650:34abfb24e891
[xemacs-hg @ 2003-08-28 15:44:04 by james]
Fix the C++ build, with many module-specific fixes.
author | james |
---|---|
date | Thu, 28 Aug 2003 15:44:30 +0000 |
parents | 4f4c898836ab |
children | de0e5e7132db |
comparison
equal
deleted
inserted
replaced
1649:9afdad50eaf7 | 1650:34abfb24e891 |
---|---|
167 #endif /* !CANNA2 */ | 167 #endif /* !CANNA2 */ |
168 extern char *jrKanjiError; | 168 extern char *jrKanjiError; |
169 | 169 |
170 /* #### is this global really necessary? */ | 170 /* #### is this global really necessary? */ |
171 #define KEYTOSTRSIZE 2048 | 171 #define KEYTOSTRSIZE 2048 |
172 static unsigned char key_buffer[KEYTOSTRSIZE]; | 172 static char key_buffer[KEYTOSTRSIZE]; |
173 static char **warning; | 173 static char **warning; |
174 | 174 |
175 static int canna_empty_info, canna_through_info; | 175 static int canna_empty_info, canna_through_info; |
176 static int canna_underline; | 176 static int canna_underline; |
177 static int canna_inhibit_hankakukana; | 177 static int canna_inhibit_hankakukana; |
189 static Fixnum canna_ichiran_revLen; | 189 static Fixnum canna_ichiran_revLen; |
190 static Lisp_Object Vcanna_mode_string; | 190 static Lisp_Object Vcanna_mode_string; |
191 | 191 |
192 static int IRCP_context; | 192 static int IRCP_context; |
193 | 193 |
194 static Lisp_Object storeResults (unsigned char *, int, jrKanjiStatus *); | 194 static Lisp_Object storeResults (char *, int, jrKanjiStatus *); |
195 static Lisp_Object kanjiYomiList (int, int); | 195 static Lisp_Object kanjiYomiList (int, int); |
196 static Lisp_Object CANNA_mode_keys (void); | 196 static Lisp_Object CANNA_mode_keys (void); |
197 | 197 |
198 #ifdef CANNA_MULE | 198 #ifdef CANNA_MULE |
199 static void m2c (unsigned char *, int, unsigned char *); | 199 static void m2c (unsigned char *, int, unsigned char *); |
220 len = jrKanjiString (0, XCHAR (ch), key_buffer, KEYTOSTRSIZE, &ks); | 220 len = jrKanjiString (0, XCHAR (ch), key_buffer, KEYTOSTRSIZE, &ks); |
221 return storeResults (key_buffer, len, &ks); | 221 return storeResults (key_buffer, len, &ks); |
222 } | 222 } |
223 | 223 |
224 static Lisp_Object | 224 static Lisp_Object |
225 storeResults (unsigned char *buf, int len, jrKanjiStatus *ks) | 225 storeResults (char *buf, int len, jrKanjiStatus *ks) |
226 { | 226 { |
227 Lisp_Object val = Qnil; | 227 Lisp_Object val = Qnil; |
228 | 228 |
229 if (len < 0) | 229 if (len < 0) |
230 { /* Error detected */ | 230 { /* Error detected */ |
231 val = make_string ((unsigned char*) jrKanjiError, strlen (jrKanjiError)); | 231 val = make_string ((unsigned char*) jrKanjiError, strlen (jrKanjiError)); |
232 } | 232 } |
233 else | 233 else |
234 { | 234 { |
235 /* 確定した文字列 (the confirmed string) */ | 235 /* 確定した文字列 (the confirmed string) */ |
236 Vcanna_kakutei_string = make_string (buf, len); | 236 Vcanna_kakutei_string = make_string ((unsigned char *) buf, len); |
237 val = make_int (len); | 237 val = make_int (len); |
238 /* 確定した文字列の読みの情報... | 238 /* 確定した文字列の読みの情報... |
239 (info about the reading of the confirmed string) */ | 239 (info about the reading of the confirmed string) */ |
240 Vcanna_kakutei_yomi = Vcanna_kakutei_romaji = Qnil; | 240 Vcanna_kakutei_yomi = Vcanna_kakutei_romaji = Qnil; |
241 if (ks->info & KanjiYomiInfo) | 241 if (ks->info & KanjiYomiInfo) |
242 { | 242 { |
243 unsigned char *p = buf + len + 1; | 243 char *p = buf + len + 1; |
244 int yomilen = strlen (p); | 244 int yomilen = strlen (p); |
245 | 245 |
246 if (len + yomilen + 1 < KEYTOSTRSIZE) | 246 if (len + yomilen + 1 < KEYTOSTRSIZE) |
247 { | 247 { |
248 int yomilen2; | 248 int yomilen2; |
249 | 249 |
250 Vcanna_kakutei_yomi = make_string (p, yomilen); /* 読み | 250 Vcanna_kakutei_yomi = |
251 (reading) */ | 251 make_string ((unsigned char *) p, yomilen); /* 読み (reading) */ |
252 p += yomilen + 1; | 252 p += yomilen + 1; |
253 yomilen2 = strlen (p); | 253 yomilen2 = strlen (p); |
254 if (len + yomilen + yomilen2 + 2 < KEYTOSTRSIZE) | 254 if (len + yomilen + yomilen2 + 2 < KEYTOSTRSIZE) |
255 { | 255 { |
256 Vcanna_kakutei_romaji = make_string (p, yomilen2); | 256 Vcanna_kakutei_romaji = |
257 make_string ((unsigned char *) p, yomilen2); | |
257 /* ローマ字 (romanization) */ | 258 /* ローマ字 (romanization) */ |
258 } | 259 } |
259 } | 260 } |
260 } | 261 } |
261 | 262 |
307 | 308 |
308 /* モードの情報 (mode information) */ | 309 /* モードの情報 (mode information) */ |
309 Vcanna_mode_string = Qnil; | 310 Vcanna_mode_string = Qnil; |
310 if (ks->info & KanjiModeInfo) | 311 if (ks->info & KanjiModeInfo) |
311 { | 312 { |
312 Vcanna_mode_string = make_string (ks->mode, strlen (ks->mode)); | 313 Vcanna_mode_string = |
314 make_string (ks->mode, strlen ((const char *) ks->mode)); | |
313 } | 315 } |
314 | 316 |
315 /* その他の情報 (other information) */ | 317 /* その他の情報 (other information) */ |
316 canna_empty_info = (ks->info & KanjiEmptyInfo) ? 1 : 0; | 318 canna_empty_info = (ks->info & KanjiEmptyInfo) ? 1 : 0; |
317 canna_through_info = (ks->info & KanjiThroughInfo) ? 1 : 0; | 319 canna_through_info = (ks->info & KanjiThroughInfo) ? 1 : 0; |
380 else | 382 else |
381 { | 383 { |
382 char servername[256]; | 384 char servername[256]; |
383 | 385 |
384 CHECK_STRING (server); | 386 CHECK_STRING (server); |
385 strncpy (servername, XSTRING_DATA (server), XSTRING_LENGTH (server)); | 387 strncpy (servername, (const char *) XSTRING_DATA (server), |
388 XSTRING_LENGTH (server)); | |
386 servername[XSTRING_LENGTH (server)] = '\0'; | 389 servername[XSTRING_LENGTH (server)] = '\0'; |
387 jrKanjiControl (0, KC_SETSERVERNAME, servername); | 390 jrKanjiControl (0, KC_SETSERVERNAME, servername); |
388 } | 391 } |
389 | 392 |
390 if (NILP (rcfile)) | 393 if (NILP (rcfile)) |
394 else | 397 else |
395 { | 398 { |
396 char rcname[256]; | 399 char rcname[256]; |
397 | 400 |
398 CHECK_STRING (rcfile); | 401 CHECK_STRING (rcfile); |
399 strncpy (rcname, XSTRING_DATA (rcfile), XSTRING_LENGTH (rcfile)); | 402 strncpy (rcname, (const char *) XSTRING_DATA (rcfile), |
403 XSTRING_LENGTH (rcfile)); | |
400 rcname[XSTRING_LENGTH (rcfile)] = '\0'; | 404 rcname[XSTRING_LENGTH (rcfile)] = '\0'; |
401 jrKanjiControl (0, KC_SETINITFILENAME, rcname); | 405 jrKanjiControl (0, KC_SETINITFILENAME, rcname); |
402 } | 406 } |
403 | 407 |
404 warning = (char **) 0; | 408 warning = (char **) 0; |
415 for (p = q = (unsigned char **) warning ; *q ; q++) | 419 for (p = q = (unsigned char **) warning ; *q ; q++) |
416 ; | 420 ; |
417 while (p < q) | 421 while (p < q) |
418 { | 422 { |
419 q--; | 423 q--; |
420 val = Fcons (make_string (*q, strlen (*q)), val); | 424 val = Fcons (make_string (*q, strlen ((const char *) *q)), val); |
421 } | 425 } |
422 } | 426 } |
423 val = Fcons (val, Qnil); | 427 val = Fcons (val, Qnil); |
424 | 428 |
425 if (res == -1) | 429 if (res == -1) |
426 { | 430 { |
427 val = Fcons (make_string ((unsigned char*) jrKanjiError, | 431 val = Fcons (make_string ((unsigned char *) jrKanjiError, |
428 strlen (jrKanjiError)), val); | 432 strlen (jrKanjiError)), val); |
429 /* イニシャライズで失敗した場合。 (on initialization failure) */ | 433 /* イニシャライズで失敗した場合。 (on initialization failure) */ |
430 return Fcons (Qnil, val); | 434 return Fcons (Qnil, val); |
431 } | 435 } |
432 else | 436 else |
475 val = Qnil; | 479 val = Qnil; |
476 if (warning) | 480 if (warning) |
477 { | 481 { |
478 for (p = (unsigned char**) warning ; *p ; p++) | 482 for (p = (unsigned char**) warning ; *p ; p++) |
479 { | 483 { |
480 val = Fcons (make_string (*p, strlen (*p)), val); | 484 val = Fcons (make_string (*p, strlen ((const char *) *p)), val); |
481 } | 485 } |
482 } | 486 } |
483 val = Fcons (val, Qnil); | 487 val = Fcons (val, Qnil); |
484 IRCP_context = -1; | 488 IRCP_context = -1; |
485 return val; | 489 return val; |
504 ks.echoStr = XSTRING_DATA (str); | 508 ks.echoStr = XSTRING_DATA (str); |
505 ks.length = XSTRING_LENGTH (str); | 509 ks.length = XSTRING_LENGTH (str); |
506 #else /* CANNA_MULE */ | 510 #else /* CANNA_MULE */ |
507 m2c (XSTRING_DATA (str), XSTRING_LENGTH (str), cbuf); | 511 m2c (XSTRING_DATA (str), XSTRING_LENGTH (str), cbuf); |
508 ks.echoStr = cbuf; | 512 ks.echoStr = cbuf; |
509 ks.length = strlen (cbuf); | 513 ks.length = strlen ((const char *) cbuf); |
510 #endif /* CANNA_MULE */ | 514 #endif /* CANNA_MULE */ |
511 ksv.ks = &ks; | 515 ksv.ks = &ks; |
512 len = jrKanjiControl (0, KC_DEFINEKANJI, (char *)&ksv); | 516 len = jrKanjiControl (0, KC_DEFINEKANJI, (char *)&ksv); |
513 return storeResults (key_buffer, ksv.val, ksv.ks); | 517 return storeResults (key_buffer, ksv.val, ksv.ks); |
514 } | 518 } |
574 #ifndef CANNA_MULE | 578 #ifndef CANNA_MULE |
575 strncpy (key_buffer, XSTRING_DATA (yomi), XSTRING_LENGTH (yomi)); | 579 strncpy (key_buffer, XSTRING_DATA (yomi), XSTRING_LENGTH (yomi)); |
576 ks.length = XSTRING_LENGTH (yomi); | 580 ks.length = XSTRING_LENGTH (yomi); |
577 key_buffer[ks.length] = '\0'; | 581 key_buffer[ks.length] = '\0'; |
578 #else /* CANNA_MULE */ | 582 #else /* CANNA_MULE */ |
579 m2c (XSTRING_DATA (yomi), XSTRING_LENGTH (yomi), key_buffer); | 583 m2c (XSTRING_DATA (yomi), XSTRING_LENGTH (yomi), |
584 (unsigned char *) key_buffer); | |
580 ks.length = strlen (key_buffer); | 585 ks.length = strlen (key_buffer); |
581 #endif /* CANNA_MULE */ | 586 #endif /* CANNA_MULE */ |
582 | 587 |
583 if (NILP (roma)) | 588 if (NILP (roma)) |
584 { | 589 { |
593 XSTRING_LENGTH (roma)); | 598 XSTRING_LENGTH (roma)); |
594 key_buffer[XSTRING_LENGTH (yomi) + 1 + XSTRING_LENGTH (roma)] = '\0'; | 599 key_buffer[XSTRING_LENGTH (yomi) + 1 + XSTRING_LENGTH (roma)] = '\0'; |
595 ks.mode = (unsigned char *)(key_buffer + XSTRING_LENGTH (yomi) + 1); | 600 ks.mode = (unsigned char *)(key_buffer + XSTRING_LENGTH (yomi) + 1); |
596 #else /* CANNA_MULE */ | 601 #else /* CANNA_MULE */ |
597 ks.mode = (unsigned char *)(key_buffer + ks.length + 1); | 602 ks.mode = (unsigned char *)(key_buffer + ks.length + 1); |
598 m2c (XSTRING_DATA (roma), XSTRING_LENGTH (roma), ks.mode); | 603 m2c (XSTRING_DATA (roma), XSTRING_LENGTH (roma), |
604 (unsigned char *) ks.mode); | |
599 #endif /* CANNA_MULE */ | 605 #endif /* CANNA_MULE */ |
600 } | 606 } |
601 | 607 |
602 ks.echoStr = (unsigned char *) key_buffer; | 608 ks.echoStr = (unsigned char *) key_buffer; |
603 ksv.buffer = (unsigned char *) key_buffer; /* 返値用 (return value) */ | 609 ksv.buffer = (unsigned char *) key_buffer; /* 返値用 (return value) */ |
650 | 656 |
651 #ifndef CANNA_MULE | 657 #ifndef CANNA_MULE |
652 strncpy (key_buffer, XSTRING_DATA (str), XSTRING_LENGTH (str)); | 658 strncpy (key_buffer, XSTRING_DATA (str), XSTRING_LENGTH (str)); |
653 key_buffer[XSTRING_LENGTH (str)] = '\0'; | 659 key_buffer[XSTRING_LENGTH (str)] = '\0'; |
654 #else /* CANNA_MULE */ | 660 #else /* CANNA_MULE */ |
655 m2c (XSTRING_DATA (str), XSTRING_LENGTH (str), key_buffer); | 661 m2c (XSTRING_DATA (str), XSTRING_LENGTH (str), (unsigned char *) key_buffer); |
656 #endif /* CANNA_MULE */ | 662 #endif /* CANNA_MULE */ |
657 p = (unsigned char**) key_buffer; | 663 p = (unsigned char**) key_buffer; |
658 n = jrKanjiControl (0, KC_PARSE, (char *) &p); | 664 n = jrKanjiControl (0, KC_PARSE, (char *) &p); |
659 val = Qnil; | 665 val = Qnil; |
660 while (n > 0) | 666 while (n > 0) |
661 { | 667 { |
662 n--; | 668 n--; |
663 val = Fcons (make_string (p[n], strlen (p[n])), val); | 669 val = Fcons (make_string (p[n], strlen ((const char *) p[n])), val); |
664 } | 670 } |
665 return val; | 671 return val; |
666 } | 672 } |
667 | 673 |
668 DEFUN ("canna-query-mode", Fcanna_query_mode, 0, 0, 0, /* | 674 DEFUN ("canna-query-mode", Fcanna_query_mode, 0, 0, 0, /* |
669 Get current mode string. | 675 Get current mode string. |
670 */ | 676 */ |
671 ()) | 677 ()) |
672 { | 678 { |
673 unsigned char buf[256]; | 679 char buf[256]; |
674 | 680 |
675 jrKanjiControl (0, KC_QUERYMODE, buf); | 681 jrKanjiControl (0, KC_QUERYMODE, buf); |
676 return make_string (buf, strlen (buf)); | 682 return make_string ((unsigned char *) buf, strlen (buf)); |
677 } | 683 } |
678 | 684 |
679 /* | 685 /* |
680 * Functions following this line are for KKCP interface compatible | 686 * Functions following this line are for KKCP interface compatible |
681 * library. These functions may be used by MILK system. | 687 * library. These functions may be used by MILK system. |
741 yomibuf[XSTRING_LENGTH (yomi)] = '\0'; | 747 yomibuf[XSTRING_LENGTH (yomi)] = '\0'; |
742 nbun = RkBgnBun (IRCP_context, XSTRING_DATA (yomi), XSTRING_LENGTH (yomi), | 748 nbun = RkBgnBun (IRCP_context, XSTRING_DATA (yomi), XSTRING_LENGTH (yomi), |
743 (RK_XFER << RK_XFERBITS) | RK_KFER); | 749 (RK_XFER << RK_XFERBITS) | RK_KFER); |
744 #else /* CANNA_MULE */ | 750 #else /* CANNA_MULE */ |
745 m2c (XSTRING_DATA (yomi), XSTRING_LENGTH (yomi), yomibuf); | 751 m2c (XSTRING_DATA (yomi), XSTRING_LENGTH (yomi), yomibuf); |
746 nbun = RkBgnBun (IRCP_context, (char *) yomibuf, strlen (yomibuf), | 752 nbun = RkBgnBun (IRCP_context, (char *) yomibuf, |
753 strlen ((const char *) yomibuf), | |
747 (RK_XFER << RK_XFERBITS) | RK_KFER); | 754 (RK_XFER << RK_XFERBITS) | RK_KFER); |
748 #endif /* CANNA_MULE */ | 755 #endif /* CANNA_MULE */ |
749 | 756 |
750 return kanjiYomiList (IRCP_context, nbun); | 757 return kanjiYomiList (IRCP_context, nbun); |
751 } | 758 } |
796 RkGoTo (IRCP_context, XINT (bunsetsu)); | 803 RkGoTo (IRCP_context, XINT (bunsetsu)); |
797 len = RkGetKanjiList (IRCP_context, RkBuf, RKBUFSIZE); | 804 len = RkGetKanjiList (IRCP_context, RkBuf, RKBUFSIZE); |
798 p = RkBuf; | 805 p = RkBuf; |
799 for (i = 0 ; i < len ; i++) | 806 for (i = 0 ; i < len ; i++) |
800 { | 807 { |
801 slen = strlen (p); | 808 slen = strlen ((const char *) p); |
802 if (NILP(res)) | 809 if (NILP(res)) |
803 { | 810 { |
804 endp = res = Fcons (make_string (p, slen), Qnil); | 811 endp = res = Fcons (make_string (p, slen), Qnil); |
805 } | 812 } |
806 else | 813 else |
1849 mule_make_string (unsigned char *p, int l) | 1856 mule_make_string (unsigned char *p, int l) |
1850 { | 1857 { |
1851 unsigned char cbuf[4096]; | 1858 unsigned char cbuf[4096]; |
1852 | 1859 |
1853 c2mu (p,l,cbuf); | 1860 c2mu (p,l,cbuf); |
1854 return (make_string (cbuf,strlen (cbuf))); | 1861 return (make_string (cbuf, strlen ((const char *) cbuf))); |
1855 } | 1862 } |
1856 | 1863 |
1857 /* return the MULE internal string length of EUC string */ | 1864 /* return the MULE internal string length of EUC string */ |
1858 /* Modified by sb to return a character count not byte count. */ | 1865 /* Modified by sb to return a character count not byte count. */ |
1859 static int | 1866 static int |