OSDN Git Service

文字コードの判定のミスを減らした。メッセージ履歴をロードした段階でEUCで無い事を判定できれば以降はSJISを仮定する。
authormogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sun, 7 Sep 2003 16:43:21 +0000 (16:43 +0000)
committermogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sun, 7 Sep 2003 16:43:21 +0000 (16:43 +0000)
src/externs.h
src/japanese.c
src/load.c
src/scores.c

index 8b895e2..590ef67 100644 (file)
@@ -1541,7 +1541,7 @@ extern void jverb2( const char *in , char *out);
 extern void jverb3( const char *in , char *out);
 extern void jverb( const char *in , char *out , int flag);
 extern char* strstr_j(cptr str1, cptr str2);
-extern void codeconv(char *str);
+extern void codeconv(char *str, bool unknown);
 extern bool iskanji2(cptr s, int x);
 #endif
 
index 0c2b1bf..7c61f5d 100644 (file)
@@ -146,14 +146,20 @@ char* strstr_j(const char* s, const char* t)
  * str¤ò´Ä¶­¤Ë¹ç¤Ã¤¿Ê¸»ú¥³¡¼¥É¤ËÊÑ´¹¤¹¤ë¡£
  * str¤ÎŤµ¤ËÀ©¸Â¤Ï¤Ê¤¤¡£
  */
-void codeconv(char *str)
+void codeconv(char *str, bool unknown)
 {
+       /* EUC¤ò²¾Äê¡£ */
+       static bool iseuc = 1;
+
        int i;
-       int kanji = 0, iseuc = 1;
+       int kanji = 0;
        int len;
        unsigned char c1, c2;
        unsigned char *tmp;
 
+       /* Ê¸»ú¥³¡¼¥É¤¬ÊѤï¤ë²ÄǽÀ­¤¬¤¢¤ë»þ¤Ï¡¢º£¤Þ¤Ç¤Î¾ðÊó¤ò˺¤ì¤ë¡£ */
+       if (unknown) iseuc = 1;
+
        /* ´Á»ú¤¬Â¸ºß¤·¡¢¤½¤Î´Á»ú¥³¡¼¥É¤¬EUC¤«¤É¤¦¤«Ä´¤Ù¤ë¡£*/
        for (i = 0; str[i]; i++)
        {
index fe102c9..ea41235 100644 (file)
@@ -221,7 +221,8 @@ static void rd_string(char *str, int max)
        /* Terminate */
        str[max-1] = '\0';
 #ifdef JP
-       codeconv(str);
+       /* Ê¸»ú¥³¡¼¥É¤¬°ìÅÙEUC¤Ç¤Ê¤¤¤È¤ï¤«¤ì¤Ð»Ä¤ê¤ÏÁ´¤ÆSJIS¤Î¤Ï¤º¡£ */
+       codeconv(str, FALSE);
 #endif
 }
 
index 0479951..afbe781 100644 (file)
@@ -308,7 +308,8 @@ if (mlev > clev) strcat(out_val, format(" (
                        }
                        else
                        {
-                               codeconv(the_score.how);
+                               /* Ê¸»ú¥³¡¼¥É¤ÏÊѤï¤ë¤«¤â¤·¤ì¤Ê¤¤¡£ */
+                               codeconv(the_score.how, TRUE);
 
                                /* Some people die outside of the dungeon */
                                if (!cdun)