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 }