8 /*ÆüËܸìÆ°»ì³èÍÑ (ÂǤġäÂǤäÆ,ÂǤÁ etc) */
10 #define CMPTAIL(y) strncmp(&in[l-strlen(y)],y,strlen(y))
12 /* ²¥¤ë,½³¤ë¡ä²¥¤ê,½³¤ë */
13 void jverb1( const char *in , char *out){
17 if( CMPTAIL("¤¹¤ë")==0) sprintf(&out[l-4],"¤·");else
18 if( CMPTAIL("¤¤¤ë")==0) sprintf(&out[l-4],"¤¤¤Æ");else
20 if( CMPTAIL("¤¨¤ë")==0) sprintf(&out[l-4],"¤¨");else
21 if( CMPTAIL("¤±¤ë")==0) sprintf(&out[l-4],"¤±");else
22 if( CMPTAIL("¤²¤ë")==0) sprintf(&out[l-4],"¤²");else
23 if( CMPTAIL("¤»¤ë")==0) sprintf(&out[l-4],"¤»");else
24 if( CMPTAIL("¤¼¤ë")==0) sprintf(&out[l-4],"¤¼");else
25 if( CMPTAIL("¤Æ¤ë")==0) sprintf(&out[l-4],"¤Æ");else
26 if( CMPTAIL("¤Ç¤ë")==0) sprintf(&out[l-4],"¤Ç");else
27 if( CMPTAIL("¤Í¤ë")==0) sprintf(&out[l-4],"¤Í");else
28 if( CMPTAIL("¤Ø¤ë")==0) sprintf(&out[l-4],"¤Ø");else
29 if( CMPTAIL("¤Ù¤ë")==0) sprintf(&out[l-4],"¤Ù");else
30 if( CMPTAIL("¤á¤ë")==0) sprintf(&out[l-4],"¤á");else
31 if( CMPTAIL("¤ì¤ë")==0) sprintf(&out[l-4],"¤ì");else
33 if( CMPTAIL("¤¦")==0) sprintf(&out[l-2],"¤¤");else
34 if( CMPTAIL("¤¯")==0) sprintf(&out[l-2],"¤");else
35 if( CMPTAIL("¤°")==0) sprintf(&out[l-2],"¤®");else
36 if( CMPTAIL("¤¹")==0) sprintf(&out[l-2],"¤·");else
37 if( CMPTAIL("¤º")==0) sprintf(&out[l-2],"¤¸");else
38 if( CMPTAIL("¤Ä")==0) sprintf(&out[l-2],"¤Á");else
39 if( CMPTAIL("¤Å")==0) sprintf(&out[l-2],"¤Â");else
40 if( CMPTAIL("¤Ì")==0) sprintf(&out[l-2],"¤Ë");else
41 if( CMPTAIL("¤Õ")==0) sprintf(&out[l-2],"¤Ò");else
42 if( CMPTAIL("¤Ö")==0) sprintf(&out[l-2],"¤Ó");else
43 if( CMPTAIL("¤à")==0) sprintf(&out[l-2],"¤ß");else
44 if( CMPTAIL("¤ë")==0) sprintf(&out[l-2],"¤ê");else
46 sprintf(&out[l],"¤½¤·¤Æ");}
48 /* ²¥¤ë,½³¤ë> ²¥¤Ã¤Æ½³¤ë */
49 void jverb2( const char *in , char *out){
53 if( CMPTAIL("¤¹¤ë")==0) sprintf(&out[l-4],"¤·¤Æ");else
54 if( CMPTAIL("¤¤¤ë")==0) sprintf(&out[l-4],"¤¤¤Æ");else
56 if( CMPTAIL("¤¨¤ë")==0) sprintf(&out[l-4],"¤¨¤Æ");else
57 if( CMPTAIL("¤±¤ë")==0) sprintf(&out[l-4],"¤±¤Æ");else
58 if( CMPTAIL("¤²¤ë")==0) sprintf(&out[l-4],"¤²¤Æ");else
59 if( CMPTAIL("¤»¤ë")==0) sprintf(&out[l-4],"¤»¤Æ");else
60 if( CMPTAIL("¤¼¤ë")==0) sprintf(&out[l-4],"¤¼¤Æ");else
61 if( CMPTAIL("¤Æ¤ë")==0) sprintf(&out[l-4],"¤Æ¤Ã¤Æ");else
62 if( CMPTAIL("¤Ç¤ë")==0) sprintf(&out[l-4],"¤Ç¤Æ");else
63 if( CMPTAIL("¤Í¤ë")==0) sprintf(&out[l-4],"¤Í¤Æ");else
64 if( CMPTAIL("¤Ø¤ë")==0) sprintf(&out[l-4],"¤Ø¤Æ");else
65 if( CMPTAIL("¤Ù¤ë")==0) sprintf(&out[l-4],"¤Ù¤Æ");else
66 if( CMPTAIL("¤á¤ë")==0) sprintf(&out[l-4],"¤á¤Æ");else
67 if( CMPTAIL("¤ì¤ë")==0) sprintf(&out[l-4],"¤ì¤Æ");else
69 if( CMPTAIL("¤¦")==0) sprintf(&out[l-2],"¤Ã¤Æ");else
70 if( CMPTAIL("¤¯")==0) sprintf(&out[l-2],"¤¤¤Æ");else
71 if( CMPTAIL("¤°")==0) sprintf(&out[l-2],"¤¤¤Ç");else
72 if( CMPTAIL("¤¹")==0) sprintf(&out[l-2],"¤·¤Æ");else
73 if( CMPTAIL("¤º")==0) sprintf(&out[l-2],"¤¸¤Æ");else
74 if( CMPTAIL("¤Ä")==0) sprintf(&out[l-2],"¤Ã¤Æ");else
75 if( CMPTAIL("¤Å")==0) sprintf(&out[l-2],"¤Ã¤Æ");else
76 if( CMPTAIL("¤Ì")==0) sprintf(&out[l-2],"¤Í¤Æ");else
77 if( CMPTAIL("¤Õ")==0) sprintf(&out[l-2],"¤Ø¤Æ");else
78 if( CMPTAIL("¤Ö")==0) sprintf(&out[l-2],"¤ó¤Ç");else
79 if( CMPTAIL("¤à")==0) sprintf(&out[l-2],"¤ó¤Ç");else
80 if( CMPTAIL("¤ë")==0) sprintf(&out[l-2],"¤Ã¤Æ");else
81 sprintf(&out[l],"¤³¤È¤Ë¤è¤ê");}
83 /* ²¥¤ë,½³¤ë > ²¥¤Ã¤¿¤ê½³¤Ã¤¿¤ê */
84 void jverb3( const char *in , char *out){
88 if( CMPTAIL("¤¹¤ë")==0) sprintf(&out[l-4],"¤·¤¿");else
89 if( CMPTAIL("¤¤¤ë")==0) sprintf(&out[l-4],"¤¤¤¿");else
91 if( CMPTAIL("¤¨¤ë")==0) sprintf(&out[l-4],"¤¨¤¿");else
92 if( CMPTAIL("¤±¤ë")==0) sprintf(&out[l-4],"¤±¤¿");else
93 if( CMPTAIL("¤²¤ë")==0) sprintf(&out[l-4],"¤²¤¿");else
94 if( CMPTAIL("¤»¤ë")==0) sprintf(&out[l-4],"¤»¤¿");else
95 if( CMPTAIL("¤¼¤ë")==0) sprintf(&out[l-4],"¤¼¤¿");else
96 if( CMPTAIL("¤Æ¤ë")==0) sprintf(&out[l-4],"¤Æ¤Ã¤¿");else
97 if( CMPTAIL("¤Ç¤ë")==0) sprintf(&out[l-4],"¤Ç¤¿");else
98 if( CMPTAIL("¤Í¤ë")==0) sprintf(&out[l-4],"¤Í¤¿");else
99 if( CMPTAIL("¤Ø¤ë")==0) sprintf(&out[l-4],"¤Ø¤¿");else
100 if( CMPTAIL("¤Ù¤ë")==0) sprintf(&out[l-4],"¤Ù¤¿");else
101 if( CMPTAIL("¤á¤ë")==0) sprintf(&out[l-4],"¤á¤¿");else
102 if( CMPTAIL("¤ì¤ë")==0) sprintf(&out[l-4],"¤ì¤¿");else
104 if( CMPTAIL("¤¦")==0) sprintf(&out[l-2],"¤Ã¤¿");else
105 if( CMPTAIL("¤¯")==0) sprintf(&out[l-2],"¤¤¤¿");else
106 if( CMPTAIL("¤°")==0) sprintf(&out[l-2],"¤¤¤À");else
107 if( CMPTAIL("¤¹")==0) sprintf(&out[l-2],"¤·¤¿");else
108 if( CMPTAIL("¤º")==0) sprintf(&out[l-2],"¤¸¤¿");else
109 if( CMPTAIL("¤Ä")==0) sprintf(&out[l-2],"¤Ã¤¿");else
110 if( CMPTAIL("¤Å")==0) sprintf(&out[l-2],"¤Ã¤¿");else
111 if( CMPTAIL("¤Ì")==0) sprintf(&out[l-2],"¤Í¤¿");else
112 if( CMPTAIL("¤Õ")==0) sprintf(&out[l-2],"¤Ø¤¿");else
113 if( CMPTAIL("¤Ö")==0) sprintf(&out[l-2],"¤ó¤À");else
114 if( CMPTAIL("¤à")==0) sprintf(&out[l-2],"¤ó¤À");else
115 if( CMPTAIL("¤ë")==0) sprintf(&out[l-2],"¤Ã¤¿");else
116 sprintf(&out[l],"¤³¤È¤ä");}
119 void jverb( const char *in , char *out , int flag){
121 case JVERB_AND:jverb1(in , out);break;
122 case JVERB_TO :jverb2(in , out);break;
123 case JVERB_OR :jverb3(in , out);break;
129 * Convert SJIS string to EUC string
131 void sjis2euc(char *str)
134 unsigned char c1, c2;
137 int len = strlen(str);
139 C_MAKE(tmp, len+1, byte);
141 for (i = 0; i < len; i++)
150 c1 = c1 * 2 - (c1 >= 0xe0 ? 0xe0 : 0x60);
155 c1 = c1 * 2 - (c1 >= 0xe0 ? 0xe1 : 0x61);
156 c2 += 0x60 + (c2 < 0x7f);
165 strcpy(str, (char *)tmp);
167 C_KILL(tmp, len+1, byte);
172 * Convert EUC string to SJIS string
174 void euc2sjis(char *str)
177 unsigned char c1, c2;
180 int len = strlen(str);
182 C_MAKE(tmp, len+1, byte);
184 for (i = 0; i < len; i++)
193 c1 = (c1 >> 1) + (c1 < 0xdf ? 0x31 : 0x71);
194 c2 -= 0x60 + (c2 < 0xe0);
198 c1 = (c1 >> 1) + (c1 < 0xdf ? 0x30 : 0x70);
209 strcpy(str, (char *)tmp);
211 C_KILL(tmp, len+1, byte);
216 * str¤ò´Ä¶¤Ë¹ç¤Ã¤¿Ê¸»ú¥³¡¼¥É¤ËÊÑ´¹¤·¡¢ÊÑ´¹Á°¤Îʸ»ú¥³¡¼¥É¤òÊÖ¤¹¡£
217 * str¤ÎŤµ¤ËÀ©¸Â¤Ï¤Ê¤¤¡£
220 * 1: ASCII (Never known to be ASCII in this function.)
224 byte codeconv(char *str)
229 for (i = 0; str[i]; i++)
238 if (!(c1 & 0x80)) continue;
244 if (((0xa1 <= c1 && c1 <= 0xdf) || (0xfd <= c1 && c1 <= 0xfe)) &&
245 (0xa1 <= c2 && c2 <= 0xfe))
247 /* Only EUC is allowed */
262 else if (((0x81 <= c1 && c1 <= 0x9f) &&
263 ((0x40 <= c2 && c2 <= 0x7e) || (0x80 <= c2 && c2 <= 0xfc))) ||
264 ((0xe0 <= c1 && c1 <= 0xfc) &&
265 (0x40 <= c2 && c2 <= 0x7e)))
267 /* Only SJIS is allowed */
302 /* Return kanji code */
306 /* ʸ»úÎós¤Îx¥Ð¥¤¥ÈÌܤ¬´Á»ú¤Î1¥Ð¥¤¥ÈÌܤ«¤É¤¦¤«È½Äꤹ¤ë */
307 bool iskanji2(cptr s, int x)
311 for (i = 0; i < x; i++)
313 if (iskanji(s[i])) i++;
315 if ((x == i) && iskanji(s[x])) return TRUE;