OSDN Git Service

v3.0.0 Alpha5 OSDN最終版
[hengband/hengband.git] / src / japanese.c
diff --git a/src/japanese.c b/src/japanese.c
deleted file mode 100644 (file)
index 0ee827a..0000000
+++ /dev/null
@@ -1,471 +0,0 @@
-/* File: japanese.c */
-
-
-#include "angband.h"
-
-#ifdef JP
-
-typedef struct convert_key convert_key;
-
-struct convert_key
-{
-       cptr key1;
-       cptr key2;
-};
-
-static const convert_key s2j_table[] = {
-       {"mb","nb"}, {"mp","np"}, {"mv","nv"}, {"mm","nm"},
-       {"x","ks"},
-       /* sindar:¥·¥ó¥À¡¼¥ë  parantir:¥Ñ¥é¥ó¥Æ¥£¥¢  feanor:¥Õ¥§¥¢¥Î¡¼¥ë */
-       {"ar$","a-ru$"}, {"ir$","ia$"}, {"or$","o-ru$"},
-       {"ra","¥é"}, {"ri","¥ê"}, {"ru","¥ë"}, {"re","¥ì"}, {"ro","¥í"},
-       {"ir","ia"}, {"ur","ua"}, {"er","ea"}, {"ar","a¥ë"},
-       {"sha","¥·¥ã"}, {"shi","¥·"}, {"shu","¥·¥å"}, {"she","¥·¥§"}, {"sho","¥·¥ç"},
-       {"tha","¥µ"}, {"thi","¥·"}, {"thu","¥¹"}, {"the","¥»"}, {"tho","¥½"},
-       {"cha","¥Ï"}, {"chi","¥Ò"}, {"chu","¥Õ"}, {"che","¥Ø"}, {"cho","¥Û"},
-       {"dha","¥¶"}, {"dhi","¥¸"}, {"dhu","¥º"}, {"dhe","¥¼"}, {"dho","¥¾"},
-       {"ba","¥Ð"}, {"bi","¥Ó"}, {"bu","¥Ö"}, {"be","¥Ù"}, {"bo","¥Ü"},
-       {"ca","¥«"}, {"ci","¥­"}, {"cu","¥¯"}, {"ce","¥±"}, {"co","¥³"},
-       {"da","¥À"}, {"di","¥Ç¥£"}, {"du","¥É¥¥"}, {"de","¥Ç"}, {"do","¥É"},
-       {"fa","¥Õ¥¡"}, {"fi","¥Õ¥£"}, {"fu","¥Õ"}, {"fe","¥Õ¥§"}, {"fo","¥Õ¥©"},
-       {"ga","¥¬"}, {"gi","¥®"}, {"gu","¥°"}, {"ge","¥²"}, {"go","¥´"},
-       {"ha","¥Ï"}, {"hi","¥Ò"}, {"hu","¥Õ"}, {"he","¥Ø"}, {"ho","¥Û"},
-       {"ja","¥¸¥ã"}, {"ji","¥¸"}, {"ju","¥¸¥å"}, {"je","¥¸¥§"}, {"jo","¥¸¥ç"},
-       {"ka","¥«"}, {"ki","¥­"}, {"ku","¥¯"}, {"ke","¥±"}, {"ko","¥³"},
-       {"la","¥é"}, {"li","¥ê"}, {"lu","¥ë"}, {"le","¥ì"}, {"lo","¥í"},
-       {"ma","¥Þ"}, {"mi","¥ß"}, {"mu","¥à"}, {"me","¥á"}, {"mo","¥â"},
-       {"na","¥Ê"}, {"ni","¥Ë"}, {"nu","¥Ì"}, {"ne","¥Í"}, {"no","¥Î"},
-       {"pa","¥Ñ"}, {"pi","¥Ô"}, {"pu","¥×"}, {"pe","¥Ú"}, {"po","¥Ý"},
-       {"qu","¥¯"},
-       {"sa","¥µ"}, {"si","¥·"}, {"su","¥¹"}, {"se","¥»"}, {"so","¥½"},
-       {"ta","¥¿"}, {"ti","¥Æ¥£"}, {"tu","¥È¥¥"}, {"te","¥Æ"}, {"to","¥È"},
-       {"va","¥ô¥¡"}, {"vi","¥ô¥£"}, {"vu","¥ô"}, {"ve","¥ô¥§"}, {"vo","¥ô¥©"},
-       {"wa","¥ï"}, {"wi","¥¦¥£"}, {"wu","¥¦"}, {"we","¥¦¥§"}, {"wo","¥¦¥©"},
-       {"ya","¥ä"}, {"yu","¥æ"}, {"yo","¥è"},
-       {"za","¥¶"}, {"zi","¥¸"}, {"zu","¥º"}, {"ze","¥¼"}, {"zo","¥¾"},
-       {"dh","¥º"}, {"ch","¥Õ"}, {"th","¥¹"},
-       {"b","¥Ö"}, {"c","¥¯"}, {"d","¥É"}, {"f","¥Õ"}, {"g","¥°"},
-       {"h","¥Õ"}, {"j","¥¸¥å"}, {"k","¥¯"}, {"l","¥ë"}, {"m","¥à"},
-       {"n","¥ó"}, {"p","¥×"}, {"q","¥¯"}, {"r","¥ë"}, {"s","¥¹"},
-       {"t","¥È"}, {"v","¥ô"}, {"w","¥¦"}, {"y","¥¤"},
-       {"a","¥¢"}, {"i","¥¤"}, {"u","¥¦"}, {"e","¥¨"}, {"o","¥ª"},
-       {"-","¡¼"},
-       {NULL,NULL}
-};
-
-/* ¥·¥ó¥À¥ê¥ó¤òÆüËܸì¤ÎÆɤߤËÊÑ´¹¤¹¤ë */
-void sindarin_to_kana(char *kana, const char *sindarin)
-{
-       char buf[256];
-       int idx;
-
-       sprintf(kana, "%s$", sindarin);
-       for (idx = 0; kana[idx]; idx++)
-               if (isupper(kana[idx])) kana[idx] = tolower(kana[idx]);
-
-       for (idx = 0; s2j_table[idx].key1 != NULL; idx++)
-       {
-               cptr pat1 = s2j_table[idx].key1;
-               cptr pat2 = s2j_table[idx].key2;
-               int len = strlen(pat1);
-               char *src = kana;
-               char *dest = buf;
-
-               while (*src)
-               {
-                       if (strncmp(src, pat1, len) == 0)
-                       {
-                               strcpy(dest, pat2);
-                               src += len;
-                               dest += strlen(pat2);
-                       }
-                       else
-                       {
-                               if (iskanji(*src))
-                               {
-                                       *dest = *src;
-                                       src++;
-                                       dest++;
-                               }
-                               *dest = *src;
-                               src++;
-                               dest++;
-                       }
-               }
-
-               *dest = 0;
-               strcpy(kana, buf);
-       }
-
-       idx = 0;
-
-       while (kana[idx] != '$') idx++;
-
-       kana[idx] = '\0';
-}
-
-
-/*ÆüËܸìÆ°»ì³èÍÑ (ÂǤġäÂǤäÆ,ÂǤÁ etc) */
-/* JVERB_AND: ²¥¤ë,½³¤ë > ²¥¤ê,½³¤ë */
-/* JVERB_TO:  ²¥¤ë,½³¤ë > ²¥¤Ã¤Æ½³¤ë */
-/* JVERB_OR:  ²¥¤ë,½³¤ë > ²¥¤Ã¤¿¤ê½³¤Ã¤¿¤ê */
-
-static const struct jverb_table_t {
-       const char* from;
-       const char* to[3];
-} jverb_table[] = {
-       { "¤¹¤ë", {"¤·", "¤·¤Æ", "¤·¤¿"}},
-       { "¤¤¤ë", {"¤¤¤Æ", "¤¤¤Æ", "¤¤¤¿"}},
-
-       { "¤¨¤ë", {"¤¨", "¤¨¤Æ", "¤¨¤¿"}},
-       { "¤±¤ë", {"¤±", "¤±¤Æ", "¤±¤¿"}},
-       { "¤²¤ë", {"¤²", "¤¨¤Æ", "¤²¤¿"}},
-       { "¤»¤ë", {"¤»", "¤»¤Æ", "¤»¤¿"}},
-       { "¤¼¤ë", {"¤¼", "¤¼¤Æ", "¤¼¤¿"}},
-       { "¤Æ¤ë", {"¤Æ", "¤Æ¤Ã¤Æ", "¤Æ¤Ã¤¿"}},
-       { "¤Ç¤ë", {"¤Ç", "¤Ç¤Æ", "¤Ç¤¿"}},
-       { "¤Í¤ë", {"¤Í", "¤Í¤Æ", "¤Í¤¿"}},
-       { "¤Ø¤ë", {"¤Ø", "¤Ø¤Æ", "¤Ø¤¿"}},
-       { "¤Ù¤ë", {"¤Ù", "¤Ù¤Æ", "¤Ù¤¿"}},
-       { "¤á¤ë", {"¤á", "¤á¤Æ", "¤á¤¿"}},
-       { "¤ì¤ë", {"¤ì", "¤ì¤Æ", "¤ì¤¿"}},
-
-       { "¤¦", {"¤¤", "¤Ã¤Æ", "¤Ã¤¿"}},
-       { "¤¯", {"¤­", "¤¤¤Æ", "¤¤¤¿"}},
-       { "¤°", {"¤®", "¤¤¤Ç", "¤¤¤À"}},
-       { "¤¹", {"¤·", "¤·¤Æ", "¤·¤¿"}},
-       { "¤º", {"¤¸", "¤¸¤Æ", "¤¸¤¿"}},
-       { "¤Ä", {"¤Á", "¤Ã¤Æ", "¤Ã¤¿"}},
-       { "¤Å", {"¤Â", "¤Ã¤Æ", "¤Ã¤¿"}},
-       { "¤Ì", {"¤Ë", "¤Í¤Æ", "¤Í¤¿"}},
-       { "¤Õ", {"¤Ò", "¤Ø¤Æ", "¤Ø¤¿"}},
-       { "¤Ö", {"¤Ó", "¤ó¤Ç", "¤ó¤À"}},
-       { "¤à", {"¤ß", "¤ó¤Ç", "¤ó¤À"}},
-       { "¤ë", {"¤ê", "¤Ã¤Æ", "¤Ã¤¿"}},
-       { NULL, {"¤½¤·¤Æ", "¤³¤È¤Ë¤è¤ê", "¤³¤È¤ä"}},
-};
-
-void jverb(const char *in , char *out , int flag)
-{
-       const struct jverb_table_t * p;
-       int in_len = strlen(in);
-
-       strcpy(out, in);
-
-       for (p = jverb_table; p->from; p++) {
-               int from_len = strlen(p->from);
-               if (strncmp(&in[in_len-from_len], p->from, from_len) == 0) {
-                       strcpy(&out[in_len - from_len], p->to[flag - 1]);
-                       break;
-               }
-       }
-
-       if (p->from == NULL)
-               strcpy(&out[in_len], p->to[flag - 1]);
-}
-
-
-/*
- * Convert SJIS string to EUC string
- */
-void sjis2euc(char *str)
-{
-       int i;
-       unsigned char c1, c2;
-       unsigned char *tmp;
-
-       int len = strlen(str);
-
-       C_MAKE(tmp, len+1, byte);
-
-       for (i = 0; i < len; i++)
-       {
-               c1 = str[i];
-               if (c1 & 0x80)
-               {
-                       i++;
-                       c2 = str[i];
-                       if (c2 >= 0x9f)
-                       {
-                               c1 = c1 * 2 - (c1 >= 0xe0 ? 0xe0 : 0x60);
-                               c2 += 2;
-                       }
-                       else
-                       {
-                               c1 = c1 * 2 - (c1 >= 0xe0 ? 0xe1 : 0x61);
-                               c2 += 0x60 + (c2 < 0x7f);
-                       }
-                       tmp[i - 1] = c1;
-                       tmp[i] = c2;
-               }
-               else
-                       tmp[i] = c1;
-       }
-       tmp[len] = 0;
-       strcpy(str, (char *)tmp);
-
-       C_KILL(tmp, len+1, byte);
-}  
-
-
-/*
- * Convert EUC string to SJIS string
- */
-void euc2sjis(char *str)
-{
-       int i;
-       unsigned char c1, c2;
-       unsigned char *tmp;
-       
-       int len = strlen(str);
-
-       C_MAKE(tmp, len+1, byte);
-
-       for (i = 0; i < len; i++)
-       {
-               c1 = str[i];
-               if (c1 & 0x80)
-               {
-                       i++;
-                       c2 = str[i];
-                       if (c1 % 2)
-                       {
-                               c1 = (c1 >> 1) + (c1 < 0xdf ? 0x31 : 0x71);
-                               c2 -= 0x60 + (c2 < 0xe0);
-                       }
-                       else
-                       {
-                               c1 = (c1 >> 1) + (c1 < 0xdf ? 0x30 : 0x70);
-                               c2 -= 2;
-                       }
-
-                       tmp[i - 1] = c1;
-                       tmp[i] = c2;
-               }
-               else
-                       tmp[i] = c1;
-       }
-       tmp[len] = 0;
-       strcpy(str, (char *)tmp);
-
-       C_KILL(tmp, len+1, byte);
-}  
-
-
-/*
- * str¤ò´Ä¶­¤Ë¹ç¤Ã¤¿Ê¸»ú¥³¡¼¥É¤ËÊÑ´¹¤·¡¢ÊÑ´¹Á°¤Îʸ»ú¥³¡¼¥É¤òÊÖ¤¹¡£
- * str¤ÎŤµ¤ËÀ©¸Â¤Ï¤Ê¤¤¡£
- *
- * 0: Unknown
- * 1: ASCII (Never known to be ASCII in this function.)
- * 2: EUC
- * 3: SJIS
- */
-byte codeconv(char *str)
-{
-       byte code = 0;
-       int i;
-
-       for (i = 0; str[i]; i++)
-       {
-               unsigned char c1;
-               unsigned char c2;
-
-               /* First byte */
-               c1 = str[i];
-
-               /* ASCII? */
-               if (!(c1 & 0x80)) continue;
-
-               /* Second byte */
-               i++;
-               c2 = str[i];
-
-               if (((0xa1 <= c1 && c1 <= 0xdf) || (0xfd <= c1 && c1 <= 0xfe)) &&
-                   (0xa1 <= c2 && c2 <= 0xfe))
-               {
-                       /* Only EUC is allowed */
-                       if (!code)
-                       {
-                               /* EUC */
-                               code = 2;
-                       }
-
-                       /* Broken string? */
-                       else if (code != 2)
-                       {
-                               /* No conversion */
-                               return 0;
-                       }
-               }
-
-               else if (((0x81 <= c1 && c1 <= 0x9f) &&
-                         ((0x40 <= c2 && c2 <= 0x7e) || (0x80 <= c2 && c2 <= 0xfc))) ||
-                        ((0xe0 <= c1 && c1 <= 0xfc) &&
-                         (0x40 <= c2 && c2 <= 0x7e)))
-               {
-                       /* Only SJIS is allowed */
-                       if (!code)
-                       {
-                               /* SJIS */
-                               code = 3;
-                       }
-
-                       /* Broken string? */
-                       else if (code != 3)
-                       {
-                               /* No conversion */
-                               return 0;
-                       }
-               }
-       }
-
-
-       switch (code)
-       {
-#ifdef EUC
-       case 3:
-               /* SJIS -> EUC */
-               sjis2euc(str);
-               break;
-#endif
-
-#ifdef SJIS
-       case 2:
-               /* EUC -> SJIS */
-               euc2sjis(str);
-
-               break;
-#endif
-       }
-
-       /* Return kanji code */
-       return code;
-}
-
-/* Ê¸»úÎós¤Îx¥Ð¥¤¥ÈÌܤ¬´Á»ú¤Î1¥Ð¥¤¥ÈÌܤ«¤É¤¦¤«È½Äꤹ¤ë */
-bool iskanji2(cptr s, int x)
-{
-       int i;
-
-       for (i = 0; i < x; i++)
-       {
-               if (iskanji(s[i])) i++;
-       }
-       if ((x == i) && iskanji(s[x])) return TRUE;
-
-       return FALSE;
-}
-
-/*!
- * @brief Ê¸»úÎó¤Îʸ»ú¥³¡¼¥É¤¬ASCII¤«¤É¤¦¤«¤òȽÄꤹ¤ë
- * @param str È½Äꤹ¤ëʸ»úÎó¤Ø¤Î¥Ý¥¤¥ó¥¿
- * @return Ê¸»úÎó¤Îʸ»ú¥³¡¼¥É¤¬ASCII¤Ê¤éTRUE¡¢¤½¤¦¤Ç¤Ê¤±¤ì¤ÐFALSE
- */
-static bool is_ascii_str(cptr str)
-{
-       for (;*str; str++) {
-               if (!(0x00 < *str && *str <= 0x7f))
-                       return FALSE;
-       }
-       return TRUE;
-}
-
-/*!
- * @brief Ê¸»úÎó¤Îʸ»ú¥³¡¼¥É¤¬UTF-8¤«¤É¤¦¤«¤òȽÄꤹ¤ë
- * @param str È½Äꤹ¤ëʸ»úÎó¤Ø¤Î¥Ý¥¤¥ó¥¿
- * @return Ê¸»úÎó¤Îʸ»ú¥³¡¼¥É¤¬UTF-8¤Ê¤éTRUE¡¢¤½¤¦¤Ç¤Ê¤±¤ì¤ÐFALSE
- */
-static bool is_utf8_str(cptr str)
-{
-       const unsigned char* p;
-       for (p = (const unsigned char*)str; *p; p++) {
-               int subseq_num = 0;
-               if (0x00 < *p && *p <= 0x7f) continue;
-               
-               if ((*p & 0xe0) == 0xc0) subseq_num = 1;
-               if ((*p & 0xf0) == 0xe0) subseq_num = 2;
-               if ((*p & 0xf8) == 0xf0) subseq_num = 3;
-
-               if (subseq_num == 0) return FALSE;
-               while (subseq_num--) {
-                       p++;
-                       if (!*p || (*p & 0xc0) != 0x80) return FALSE;
-               }
-       }
-       return TRUE;
-}
-
-#if defined(EUC)
-#include <iconv.h>
-#elif defined(SJIS) && defined(WINDOWS)
-#include <Windows.h>
-#endif
-/*!
- * @brief Ê¸»ú¥³¡¼¥É¤¬UTF-8¤Îʸ»úÎó¤ò¥·¥¹¥Æ¥à¤Îʸ»ú¥³¡¼¥É¤ËÊÑ´¹¤¹¤ë
- * @param utf8_str ÊÑ´¹¤¹¤ëUTF-8¤Îʸ»úÎó¤Ø¤Î¥Ý¥¤¥ó¥¿
- * @param sys_str_buffer ÊÑ´¹¤·¤¿¥·¥¹¥Æ¥à¤Îʸ»ú¥³¡¼¥É¤Îʸ»úÎó¤ò³ÊǼ¤¹¤ë¥Ð¥Ã¥Õ¥¡¤Ø¤Î¥Ý¥¤¥ó¥¿
- * @param sys_str_buflen ÊÑ´¹¤·¤¿¥·¥¹¥Æ¥à¤Îʸ»ú¥³¡¼¥É¤Îʸ»úÎó¤ò³ÊǼ¤¹¤ë¥Ð¥Ã¥Õ¥¡¤ÎŤµ
- * @return ÊÑ´¹¤ËÀ®¸ù¤·¤¿¾ì¹çTRUE¡¢¼ºÇÔ¤·¤¿¾ì¹çFALSE¤òÊÖ¤¹
- */
-static bool utf8_to_sys(char* utf8_str, char* sys_str_buffer, size_t sys_str_buflen)
-{
-#if defined(EUC)
-
-        iconv_t cd = iconv_open("EUC-JP", "UTF-8");
-        size_t utf8_len = strlen(utf8_str) + 1; /* include termination character */
-        char *from = utf8_str;
-        int ret = iconv(cd, &from, &utf8_len, &sys_str_buffer, &sys_str_buflen);
-        iconv_close(cd);
-        return (ret >= 0);
-
-#elif defined(SJIS) && defined(WINDOWS)
-
-       LPWSTR utf16buf;
-       int input_len = strlen(utf8_str) + 1; /* include termination character */
-
-       C_MAKE(utf16buf, input_len, WCHAR);
-
-       /* UTF-8 -> UTF-16 */
-       if (MultiByteToWideChar( CP_UTF8, 0, utf8_str, input_len, utf16buf, input_len) == 0) {
-               C_KILL(utf16buf, input_len, WCHAR);
-               return FALSE;
-       }
-
-       /* UTF-8 -> SJIS(CP932) */
-       if (WideCharToMultiByte( CP_ACP, 0, utf16buf, -1, sys_str_buffer, sys_str_buflen, NULL, NULL ) == 0) {
-               C_KILL(utf16buf, input_len, WCHAR);
-               return FALSE;
-       }
-
-       C_KILL(utf16buf, input_len, WCHAR);
-       return TRUE;
-
-#endif
-}
-
-/*!
- * @brief ¼õ¤±¼è¤Ã¤¿Ê¸»úÎó¤Îʸ»ú¥³¡¼¥É¤ò¿äÄꤷ¡¢¥·¥¹¥Æ¥à¤Îʸ»ú¥³¡¼¥É¤ØÊÑ´¹¤¹¤ë
- * @param strbuf ÊÑ´¹¤¹¤ëʸ»úÎó¤ò³ÊǼ¤·¤¿¥Ð¥Ã¥Õ¥¡¤Ø¤Î¥Ý¥¤¥ó¥¿¡£
- *               ¥Ð¥Ã¥Õ¥¡¤ÏÊÑ´¹¤·¤¿Ê¸»úÎó¤Ç¾å½ñ¤­¤µ¤ì¤ë¡£
- *               UTF-8¤«¤éSJIS¤â¤·¤¯¤ÏEUC¤Ø¤ÎÊÑ´¹¤òÁÛÄꤷ¤Æ¤¤¤ë¤Î¤Ç¥Ð¥Ã¥Õ¥¡¤ÎŤµ¤¬Â­¤ê¤Ê¤¯¤Ê¤ë¤³¤È¤Ï¤Ê¤¤¡£
- * @param buflen ¥Ð¥Ã¥Õ¥¡¤ÎŤµ¡£
- * @return ¤Ê¤·
- */
-void guess_convert_to_system_encoding(char* strbuf, int buflen)
-{
-       if (is_ascii_str(strbuf)) return;
-
-       if (is_utf8_str(strbuf)) {
-               char* work;
-               C_MAKE(work, buflen, char);
-               my_strcpy(work, strbuf, buflen);
-               if (!utf8_to_sys(work, strbuf, buflen)) {
-                       msg_print("·Ù¹ð:ʸ»ú¥³¡¼¥É¤ÎÊÑ´¹¤Ë¼ºÇÔ¤·¤Þ¤·¤¿");
-                       msg_print(NULL);
-               }
-               C_KILL(work, buflen, char);
-       }
-}
-
-#endif /* JP */