Mercurial > hg > xemacs-beta
comparison src/mule-canna.c @ 380:8626e4521993 r21-2-5
Import from CVS: tag r21-2-5
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:07:10 +0200 |
parents | 6240c7796c7a |
children | 74fd4e045ea6 |
comparison
equal
deleted
inserted
replaced
379:76b7d63099ad | 380:8626e4521993 |
---|---|
370 else | 370 else |
371 { | 371 { |
372 char servername[256]; | 372 char servername[256]; |
373 | 373 |
374 CHECK_STRING (server); | 374 CHECK_STRING (server); |
375 strncpy (servername, XSTRING (server)->_data, XSTRING (server)->_size); | 375 strncpy (servername, XSTRING_DATA (server), XSTRING_LENGTH (server)); |
376 servername[XSTRING (server)->_size] = '\0'; | 376 servername[XSTRING_LENGTH (server)] = '\0'; |
377 jrKanjiControl (0, KC_SETSERVERNAME, servername); | 377 jrKanjiControl (0, KC_SETSERVERNAME, servername); |
378 } | 378 } |
379 | 379 |
380 if (NILP (rcfile)) | 380 if (NILP (rcfile)) |
381 { | 381 { |
384 else | 384 else |
385 { | 385 { |
386 char rcname[256]; | 386 char rcname[256]; |
387 | 387 |
388 CHECK_STRING (rcfile); | 388 CHECK_STRING (rcfile); |
389 strncpy (rcname, XSTRING (rcfile)->_data, XSTRING (rcfile)->_size); | 389 strncpy (rcname, XSTRING_DATA (rcfile), XSTRING_LENGTH (rcfile)); |
390 rcname[XSTRING (rcfile)->_size] = '\0'; | 390 rcname[XSTRING_LENGTH (rcfile)] = '\0'; |
391 jrKanjiControl (0, KC_SETINITFILENAME, rcname); | 391 jrKanjiControl (0, KC_SETINITFILENAME, rcname); |
392 } | 392 } |
393 | 393 |
394 warning = (char **) 0; | 394 warning = (char **) 0; |
395 #ifdef nec_ews_svr4 | 395 #ifdef nec_ews_svr4 |
412 } | 412 } |
413 val = Fcons (val, Qnil); | 413 val = Fcons (val, Qnil); |
414 | 414 |
415 if (res == -1) | 415 if (res == -1) |
416 { | 416 { |
417 val = Fcons (make_string ((unsigned char*) jrKanjiError, | 417 val = Fcons (make_string ((unsigned char*) jrKanjiError, |
418 strlen (jrKanjiError)), val); | 418 strlen (jrKanjiError)), val); |
419 /* イニシャライズで失敗した場合。 */ | 419 /* イニシャライズで失敗した場合。 */ |
420 return Fcons (Qnil, val); | 420 return Fcons (Qnil, val); |
421 } | 421 } |
422 else | 422 else |
488 | 488 |
489 CHECK_STRING (str); | 489 CHECK_STRING (str); |
490 ksv.buffer = (unsigned char *) buf; | 490 ksv.buffer = (unsigned char *) buf; |
491 ksv.bytes_buffer = KEYTOSTRSIZE; | 491 ksv.bytes_buffer = KEYTOSTRSIZE; |
492 #ifndef CANNA_MULE | 492 #ifndef CANNA_MULE |
493 ks.echoStr = XSTRING (str)->_data; | 493 ks.echoStr = XSTRING_DATA (str); |
494 ks.length = XSTRING (str)->_size; | 494 ks.length = XSTRING_LENGTH (str); |
495 #else /* CANNA_MULE */ | 495 #else /* CANNA_MULE */ |
496 m2c (XSTRING (str)->_data, XSTRING (str)->_size, cbuf); | 496 m2c (XSTRING_DATA (str), XSTRING_LENGTH (str), cbuf); |
497 ks.echoStr = cbuf; | 497 ks.echoStr = cbuf; |
498 ks.length = strlen (cbuf); | 498 ks.length = strlen (cbuf); |
499 #endif /* CANNA_MULE */ | 499 #endif /* CANNA_MULE */ |
500 ksv.ks = &ks; | 500 ksv.ks = &ks; |
501 len = jrKanjiControl (0, KC_DEFINEKANJI, (char *)&ksv); | 501 len = jrKanjiControl (0, KC_DEFINEKANJI, (char *)&ksv); |
502 val = storeResults (buf, ksv.val, ksv.ks); | 502 val = storeResults (buf, ksv.val, ksv.ks); |
503 return val; | 503 return val; |
504 } | 504 } |
505 | 505 |
506 DEFUN ("canna-set-width", Fcanna_set_width, 1, 1, 0, /* | 506 DEFUN ("canna-set-width", Fcanna_set_width, 1, 1, 0, /* |
507 Set status-line width information, which is used to display | 507 Set status-line width information, which is used to display |
508 kanji candidates. | 508 kanji candidates. |
509 */ | 509 */ |
510 (num)) | 510 (num)) |
511 { | 511 { |
512 CHECK_INT (num); | 512 CHECK_INT (num); |
562 jrKanjiStatusWithValue ksv; | 562 jrKanjiStatusWithValue ksv; |
563 jrKanjiStatus ks; | 563 jrKanjiStatus ks; |
564 | 564 |
565 CHECK_STRING (yomi); | 565 CHECK_STRING (yomi); |
566 #ifndef CANNA_MULE | 566 #ifndef CANNA_MULE |
567 strncpy (buf, XSTRING (yomi)->_data, XSTRING (yomi)->_size); | 567 strncpy (buf, XSTRING_DATA (yomi), XSTRING_LENGTH (yomi)); |
568 ks.length = XSTRING (yomi)->_size; | 568 ks.length = XSTRING_LENGTH (yomi); |
569 buf[ks.length] = '\0'; | 569 buf[ks.length] = '\0'; |
570 #else /* CANNA_MULE */ | 570 #else /* CANNA_MULE */ |
571 m2c (XSTRING (yomi)->_data, XSTRING (yomi)->_size, buf); | 571 m2c (XSTRING_DATA (yomi), XSTRING_LENGTH (yomi), buf); |
572 ks.length = strlen (buf); | 572 ks.length = strlen (buf); |
573 #endif /* CANNA_MULE */ | 573 #endif /* CANNA_MULE */ |
574 | 574 |
575 if (NILP (roma)) | 575 if (NILP (roma)) |
576 { | 576 { |
579 else | 579 else |
580 { | 580 { |
581 CHECK_STRING (roma); | 581 CHECK_STRING (roma); |
582 | 582 |
583 #ifndef CANNA_MULE | 583 #ifndef CANNA_MULE |
584 strncpy (buf + XSTRING (yomi)->_size + 1, XSTRING (roma)->_data, | 584 strncpy (buf + XSTRING_LENGTH (yomi) + 1, XSTRING_DATA (roma), |
585 XSTRING (roma)->_size); | 585 XSTRING_LENGTH (roma)); |
586 buf[XSTRING (yomi)->_size + 1 + XSTRING (roma)->_size] = '\0'; | 586 buf[XSTRING_LENGTH (yomi) + 1 + XSTRING_LENGTH (roma)] = '\0'; |
587 ks.mode = (unsigned char *)(buf + XSTRING (yomi)->_size + 1); | 587 ks.mode = (unsigned char *)(buf + XSTRING_LENGTH (yomi) + 1); |
588 #else /* CANNA_MULE */ | 588 #else /* CANNA_MULE */ |
589 ks.mode = (unsigned char *)(buf + ks.length + 1); | 589 ks.mode = (unsigned char *)(buf + ks.length + 1); |
590 m2c (XSTRING (roma)->_data, XSTRING (roma)->_size, ks.mode); | 590 m2c (XSTRING_DATA (roma), XSTRING_LENGTH (roma), ks.mode); |
591 #endif /* CANNA_MULE */ | 591 #endif /* CANNA_MULE */ |
592 } | 592 } |
593 | 593 |
594 ks.echoStr = (unsigned char *) buf; | 594 ks.echoStr = (unsigned char *) buf; |
595 ksv.buffer = (unsigned char *) buf; /* 返値用 */ | 595 ksv.buffer = (unsigned char *) buf; /* 返値用 */ |
641 int n; | 641 int n; |
642 | 642 |
643 CHECK_STRING (str); | 643 CHECK_STRING (str); |
644 | 644 |
645 #ifndef CANNA_MULE | 645 #ifndef CANNA_MULE |
646 strncpy (buf, XSTRING (str)->_data, XSTRING (str)->_size); | 646 strncpy (buf, XSTRING_DATA (str), XSTRING_LENGTH (str)); |
647 buf[XSTRING (str)->_size] = '\0'; | 647 buf[XSTRING_LENGTH (str)] = '\0'; |
648 #else /* CANNA_MULE */ | 648 #else /* CANNA_MULE */ |
649 m2c (XSTRING (str)->_data, XSTRING (str)->_size, buf); | 649 m2c (XSTRING_DATA (str), XSTRING_LENGTH (str), buf); |
650 #endif /* CANNA_MULE */ | 650 #endif /* CANNA_MULE */ |
651 p = (unsigned char**) buf; | 651 p = (unsigned char**) buf; |
652 n = jrKanjiControl (0, KC_PARSE, (char *) &p); | 652 n = jrKanjiControl (0, KC_PARSE, (char *) &p); |
653 val = Qnil; | 653 val = Qnil; |
654 while (n > 0) | 654 while (n > 0) |
728 if (confirmContext () == 0) | 728 if (confirmContext () == 0) |
729 { | 729 { |
730 return Qnil; | 730 return Qnil; |
731 } | 731 } |
732 #ifndef CANNA_MULE | 732 #ifndef CANNA_MULE |
733 strncpy (yomibuf, XSTRING (yomi)->_data, XSTRING (yomi)->_size); | 733 strncpy (yomibuf, XSTRING_DATA (yomi), XSTRING_LENGTH (yomi)); |
734 yomibuf[XSTRING (yomi)->_size] = '\0'; | 734 yomibuf[XSTRING_LENGTH (yomi)] = '\0'; |
735 nbun = RkBgnBun (IRCP_context, XSTRING (yomi)->_data, XSTRING (yomi)->_size, | 735 nbun = RkBgnBun (IRCP_context, XSTRING_DATA (yomi), XSTRING_LENGTH (yomi), |
736 (RK_XFER << RK_XFERBITS) | RK_KFER); | 736 (RK_XFER << RK_XFERBITS) | RK_KFER); |
737 #else /* CANNA_MULE */ | 737 #else /* CANNA_MULE */ |
738 m2c (XSTRING (yomi)->_data, XSTRING (yomi)->_size, yomibuf); | 738 m2c (XSTRING_DATA (yomi), XSTRING_LENGTH (yomi), yomibuf); |
739 nbun = RkBgnBun (IRCP_context, (char *) yomibuf, strlen (yomibuf), | 739 nbun = RkBgnBun (IRCP_context, (char *) yomibuf, strlen (yomibuf), |
740 (RK_XFER << RK_XFERBITS) | RK_KFER); | 740 (RK_XFER << RK_XFERBITS) | RK_KFER); |
741 #endif /* CANNA_MULE */ | 741 #endif /* CANNA_MULE */ |
742 | 742 |
743 return kanjiYomiList (IRCP_context, nbun); | 743 return kanjiYomiList (IRCP_context, nbun); |
812 { | 812 { |
813 int nbun, len; | 813 int nbun, len; |
814 | 814 |
815 CHECK_INT (bunsetsu); | 815 CHECK_INT (bunsetsu); |
816 CHECK_INT (bunlen); | 816 CHECK_INT (bunlen); |
817 | 817 |
818 nbun = XINT (bunsetsu); | 818 nbun = XINT (bunsetsu); |
819 if (confirmContext () == 0) | 819 if (confirmContext () == 0) |
820 { | 820 { |
821 return Qnil; | 821 return Qnil; |
822 } | 822 } |
1022 void | 1022 void |
1023 syms_of_mule_canna (void) | 1023 syms_of_mule_canna (void) |
1024 { | 1024 { |
1025 DEFVAR_LISP ("CANNA", &VCANNA); /* hir@nec, 1992.5.21 */ | 1025 DEFVAR_LISP ("CANNA", &VCANNA); /* hir@nec, 1992.5.21 */ |
1026 VCANNA = Qt; /* hir@nec, 1992.5.21 */ | 1026 VCANNA = Qt; /* hir@nec, 1992.5.21 */ |
1027 | 1027 |
1028 DEFSUBR (Fcanna_key_proc); | 1028 DEFSUBR (Fcanna_key_proc); |
1029 DEFSUBR (Fcanna_initialize); | 1029 DEFSUBR (Fcanna_initialize); |
1030 DEFSUBR (Fcanna_finalize); | 1030 DEFSUBR (Fcanna_finalize); |
1031 DEFSUBR (Fcanna_touroku_string); | 1031 DEFSUBR (Fcanna_touroku_string); |
1032 DEFSUBR (Fcanna_set_width); | 1032 DEFSUBR (Fcanna_set_width); |
1778 | 1778 |
1779 static void | 1779 static void |
1780 c2mu (char *cp, int l, char *mp) | 1780 c2mu (char *cp, int l, char *mp) |
1781 { | 1781 { |
1782 char ch, *ep = cp+l; | 1782 char ch, *ep = cp+l; |
1783 | 1783 |
1784 while ((cp < ep) && (ch = *cp)) | 1784 while ((cp < ep) && (ch = *cp)) |
1785 { | 1785 { |
1786 if ((unsigned char) ch == ISO_CODE_SS2) | 1786 if ((unsigned char) ch == ISO_CODE_SS2) |
1787 { | 1787 { |
1788 *mp++ = LEADING_BYTE_KATAKANA_JISX0201; | 1788 *mp++ = LEADING_BYTE_KATAKANA_JISX0201; |
1807 /* MULE internal string to EUC multibyte string */ | 1807 /* MULE internal string to EUC multibyte string */ |
1808 | 1808 |
1809 static void | 1809 static void |
1810 m2c (unsigned char *mp, int l, unsigned char *cp) | 1810 m2c (unsigned char *mp, int l, unsigned char *cp) |
1811 { | 1811 { |
1812 unsigned char ch, *ep = mp + l;; | 1812 unsigned char ch, *ep = mp + l; |
1813 | 1813 |
1814 while ((mp < ep) && (ch = *mp++)) | 1814 while ((mp < ep) && (ch = *mp++)) |
1815 { | 1815 { |
1816 switch (ch) | 1816 switch (ch) |
1817 { | 1817 { |
1818 case LEADING_BYTE_KATAKANA_JISX0201: | 1818 case LEADING_BYTE_KATAKANA_JISX0201: |
1827 break; | 1827 break; |
1828 default: | 1828 default: |
1829 *cp++ = ch; | 1829 *cp++ = ch; |
1830 break; | 1830 break; |
1831 } | 1831 } |
1832 } | 1832 } |
1833 *cp = 0; | 1833 *cp = 0; |
1834 } | 1834 } |
1835 | 1835 |
1836 #undef make_string | 1836 #undef make_string |
1837 | 1837 |
1838 /* make_string after converting EUC string to MULE internal string */ | 1838 /* make_string after converting EUC string to MULE internal string */ |
1839 static Lisp_Object | 1839 static Lisp_Object |
1840 mule_make_string (unsigned char *p, int l) | 1840 mule_make_string (unsigned char *p, int l) |
1841 { | 1841 { |
1842 unsigned char cbuf[4096]; | 1842 unsigned char cbuf[4096]; |
1843 | 1843 |
1844 c2mu (p,l,cbuf); | 1844 c2mu (p,l,cbuf); |
1845 return (make_string (cbuf,strlen (cbuf))); | 1845 return (make_string (cbuf,strlen (cbuf))); |
1846 } | 1846 } |
1847 | 1847 |
1848 /* return the MULE internal string length of EUC string */ | 1848 /* return the MULE internal string length of EUC string */ |
1849 /* Modified by sb to return a character count not byte count. */ | 1849 /* Modified by sb to return a character count not byte count. */ |
1850 static int | 1850 static int |
1851 mule_strlen (unsigned char *p, int l) | 1851 mule_strlen (unsigned char *p, int l) |
1852 { | 1852 { |
1853 unsigned char ch, *cp = p; | 1853 unsigned char ch, *cp = p; |
1854 int len = 0; | 1854 int len = 0; |
1855 | 1855 |
1856 while ((cp < p + l) && (ch = *cp)) | 1856 while ((cp < p + l) && (ch = *cp)) |
1857 { | 1857 { |
1858 if ((unsigned char) ch == ISO_CODE_SS2) | 1858 if ((unsigned char) ch == ISO_CODE_SS2) |
1859 { | 1859 { |
1860 len++; | 1860 len++; |
1871 cp += 2; | 1871 cp += 2; |
1872 } | 1872 } |
1873 else | 1873 else |
1874 { | 1874 { |
1875 len++; | 1875 len++; |
1876 cp++; | 1876 cp++; |
1877 } | 1877 } |
1878 } | 1878 } |
1879 return (len); | 1879 return (len); |
1880 } | 1880 } |
1881 | 1881 |
1883 static void | 1883 static void |
1884 count_char (unsigned char *p, int len, int pos, int rev, int *clen, int *cpos, | 1884 count_char (unsigned char *p, int len, int pos, int rev, int *clen, int *cpos, |
1885 int *crev) | 1885 int *crev) |
1886 { | 1886 { |
1887 unsigned char *q = p; | 1887 unsigned char *q = p; |
1888 | 1888 |
1889 *clen = *cpos = *crev = 0; | 1889 *clen = *cpos = *crev = 0; |
1890 if (len == 0) return; | 1890 if (len == 0) return; |
1891 while (q < p + pos) | 1891 while (q < p + pos) |
1892 { | 1892 { |
1893 (*clen)++; | 1893 (*clen)++; |
1897 while (q < p + pos + rev) | 1897 while (q < p + pos + rev) |
1898 { | 1898 { |
1899 (*clen)++; | 1899 (*clen)++; |
1900 (*crev)++; | 1900 (*crev)++; |
1901 if (*q++ & 0x80) q++; | 1901 if (*q++ & 0x80) q++; |
1902 } | 1902 } |
1903 while (q < p + len) | 1903 while (q < p + len) |
1904 { | 1904 { |
1905 (*clen)++; | 1905 (*clen)++; |
1906 if (*q++ & 0x80) q++; | 1906 if (*q++ & 0x80) q++; |
1907 } | 1907 } |