OSDN Git Service

update year to 2022
[jnethack/source.git] / japanese / jconj.c
index 621985e..fb12cd9 100644 (file)
@@ -1,41 +1,38 @@
-/*
-**
-**     $Id: jconj.c,v 1.11 2005-06-10 22:02:04 argrath Exp $
-**
-*/
-
-/* Copyright (c) Issei Numata 1994-2000 */
+/* JNetHack Copyright */
+/* (c) Issei Numata 1994-2000                                      */
+/* For 3.4-, Copyright (c) SHIRAKATA Kentaro, 2002-2022            */
 /* JNetHack may be freely redistributed.  See license for details. */
 
 #include <stdio.h>
 #include <ctype.h>
 #include <string.h>
+#include "hack.h"
 
-#define EUC    0
-#define SJIS   1
-#define JIS    2
+#define EUC     0
+#define SJIS    1
+#define JIS     2
 
 /* internal kcode */
 /* IC=0 EUC */
 /* IC=1 SJIS */
 #define IC ((unsigned char)("\8a¿"[0])==0x8a)
 
-#define J_A    0
-#define J_KA   (1*5)
-#define J_SA   (2*5)
-#define J_TA   (3*5)
-#define J_NA   (4*5)
-#define J_HA   (5*5)
-#define J_MA   (6*5)
-#define J_YA   (7*5)
-#define J_RA   (8*5)
-#define J_WA   (9*5)
-
-#define J_GA   (10*5)
-#define J_ZA   (11*5)
-#define J_DA   (12*5)
-#define J_BA   (13*5)
-#define J_PA   (14*5)
+#define J_A     0
+#define J_KA    (1*5)
+#define J_SA    (2*5)
+#define J_TA    (3*5)
+#define J_NA    (4*5)
+#define J_HA    (5*5)
+#define J_MA    (6*5)
+#define J_YA    (7*5)
+#define J_RA    (8*5)
+#define J_WA    (9*5)
+
+#define J_GA    (10*5)
+#define J_ZA    (11*5)
+#define J_DA    (12*5)
+#define J_BA    (13*5)
+#define J_PA    (14*5)
 
 static unsigned char hira_tab[][2]={
     {0xa4, 0xa2}, {0xa4, 0xa4}, {0xa4, 0xa6}, {0xa4, 0xa8}, {0xa4, 0xaa}, 
@@ -55,16 +52,16 @@ static unsigned char hira_tab[][2]={
     {0xa4, 0xd1}, {0xa4, 0xd4}, {0xa4, 0xd7}, {0xa4, 0xda}, {0xa4, 0xdd},
 };
 
-#define FIFTH  0 /* \8cÜ\92i */
-#define UPPER  1 /* \8fã\88ê\92i */
-#define LOWER  2 /* \89º\88ê\92i */
-#define SAHEN  3 /* \83T\95Ï */
-#define KAHEN  4 /* \83J\95Ï */
+#define FIFTH   0 /* \8cÜ\92i */
+#define UPPER   1 /* \8fã\88ê\92i */
+#define LOWER   2 /* \89º\88ê\92i */
+#define SAHEN   3 /* \83T\95Ï */
+#define KAHEN   4 /* \83J\95Ï */
 
-#define NORMAL 0 /* \82 \82¯\82é\81¨\81`\82½ */
-#define SOKUON 1 /* \8d\8f\82Þ\81¨\81`\82ñ\82¾ */
-#define HATSUON        2 /* \91Å\82Â\81¨\81`\82Á\82½ */
-#define ION    3 /* \95\82\82­\81¨\81`\82¢\82½ */
+#define NORMAL  0 /* \82 \82¯\82é\81¨\81`\82½ */
+#define SOKUON  1 /* \8d\8f\82Þ\81¨\81`\82ñ\82¾ */
+#define HATSUON 2 /* \91Å\82Â\81¨\81`\82Á\82½ */
+#define ION     3 /* \95\82\82­\81¨\81`\82¢\82½ */
 
 struct _jconj_tab {
     const char *main;
@@ -85,7 +82,9 @@ struct _jconj_tab {
     {"\94[\82ß\82é", J_MA, LOWER, NORMAL},
     {"\97\8e\82¿\82é", J_TA, UPPER, NORMAL},
     {"\97\8e\82·", J_SA, FIFTH, NORMAL},
+    {"\82¨\82Ì\82Ì\82­", J_KA, FIFTH, ION},
 /* \82© */
+    {"\8bP\82­", J_KA, FIFTH, ION},
     {"\8f\91\82­", J_KA, FIFTH, ION},
     {"\82©\82¯\82é", J_KA, UPPER, NORMAL},
     {"\82©\82Ô\82é", J_RA, FIFTH, HATSUON},
@@ -108,6 +107,7 @@ struct _jconj_tab {
     {"\8a\8a\82é", J_RA, FIFTH, HATSUON},
     {"\82·\82é", J_SA, SAHEN, NORMAL}, 
 /* \82½ */
+    {"\82½\82\82ë\82®", J_GA, FIFTH, ION},
     {"\8fo\82·", J_SA, FIFTH, NORMAL},
     {"\90H\82×\82é", J_HA, LOWER, NORMAL}, 
     {"\8eg\82¤", J_WA, FIFTH, HATSUON},
@@ -134,14 +134,17 @@ struct _jconj_tab {
     {"\82Í\82¸\82·", J_SA, FIFTH, NORMAL},
     {"\8aO\82·", J_SA, FIFTH, NORMAL},
     {"\82Í\82ß\82é", J_MA, UPPER, NORMAL},
+    {"\8cõ\82é", J_RA, FIFTH, HATSUON},
     {"\90Z\82·", J_SA, FIFTH, NORMAL},
     {"\82Ð\82Á\82©\82¯\82é", J_KA, LOWER, NORMAL},
     {"\8fE\82¤", J_WA, FIFTH, HATSUON},
     {"\93¥\82Þ", J_MA, FIFTH, SOKUON},
     {"\90U\82è\82©\82´\82·", J_SA, FIFTH, NORMAL},
+    {"\90k\82¦\82é", J_A, LOWER, NORMAL},
     {"\8c@\82é", J_RA, FIFTH, HATSUON},
 /* \82Ü */
     {"\8aª\82­", J_KA, FIFTH, ION},
+    {"\82Ü\82½\82½\82­", J_KA, FIFTH, ION},
     {"\8eç\82é", J_RA, FIFTH, HATSUON},
     {"\89ñ\82·", J_SA, FIFTH, NORMAL},
     {"\90g\82É\82Â\82¯\82é", J_KA, LOWER, NORMAL},
@@ -150,6 +153,7 @@ struct _jconj_tab {
     {"\8fÄ\82­", J_KA, FIFTH, ION},
     {"\8cÄ\82Ô", J_BA, FIFTH, SOKUON},
     {"\93Ç\82Þ", J_MA, FIFTH, SOKUON},
+    {"\82æ\82ë\82ß\82­", J_KA, FIFTH, ION},
 /* \82ç */
 /* \82í */
     {(void*)0, 0, 0, 0},
@@ -159,12 +163,12 @@ extern unsigned char *e2sj(unsigned char *s);
 extern unsigned char *sj2e(unsigned char *s);
 
 /*
-**     conjection verb word
+**      conjection verb word
 **
-**     Example
-**     arg1    arg2    result
-**     \92E\82®    \82È\82¢    \92E\82ª\82È\82¢
-**     \92E\82®    \82½      \92E\82¢\82¾
+**      Example
+**      arg1    arg2    result
+**      \92E\82®    \82È\82¢    \92E\82ª\82È\82¢
+**      \92E\82®    \82½      \92E\82¢\82¾
 **
 */
 static char *
@@ -180,132 +184,132 @@ jconjsub( tab, jverb, sfx )
     len = strlen(jverb);
     strcpy((char *)tmp, jverb );
 
-    if(!strncmp(sfx, "\82Æ", 2)){
-       strcat((char *)tmp, sfx);
-       return (char *)tmp;
+    if(!STRNCMP2(sfx, "\82Æ")){
+        strcat((char *)tmp, sfx);
+        return (char *)tmp;
     }
 
     switch( tab->katsuyo_type ){
       case FIFTH:
-       p = tmp + (len - 2);
-       if(!strncmp(sfx, "\82È", 2)){
-           if(!IC){
-               p[0] = 0xa4;
-               p[1] = hira_tab[tab->column][1];
-           } else {
-             memcpy(p, e2sj(hira_tab[tab->column]), 2);
-           }
-
-           strcpy((char *)p + 2, sfx);
-           break;
-       }
-       else if(!strncmp(sfx, "\82½", 2) || !strncmp(sfx, "\82Ä", 2)){
-           switch( tab->onbin_type ){
-             case NORMAL:
-               if(!IC){
-                   p[1] = hira_tab[tab->column + 1][1];
-               } else {
-                   memcpy(p, e2sj(hira_tab[tab->column + 1]), 2);
-               }
-               break;
-             case SOKUON:
-               if(!IC){
-                   p[1] = 0xf3;
-               } else {
-                   memcpy(p, "\82ñ", 2);
-               }
-               break;
-             case HATSUON:
-               if(!IC){
-                   p[1] = 0xc3;
-               } else {
-                   memcpy(p, "\82Á", 2);
-               }
-               break;
-             case ION:
-               if(!IC){
-                   p[1] = 0xa4;
-               } else {
-                   memcpy(p, "\82¢", 2);
-               }
-               break;
-           }
-           strcpy((char *)p + 2, sfx);
-           if(tab->onbin_type == SOKUON ||
-              (tab->onbin_type == ION && tab->column >= J_GA)){
-               if(!IC){
-                 ++p[3];
-               } else {
-                 ++p[3];
-               }
-/*       memcpy(p+2, e2sj(sj2e(p+2)+1), 2);*//* sj2e() returns ptr to char* */
-           }
-           break;
-       }
-       else if(!strncmp(sfx, "\82Î", 2)){
-           if(!IC){
-               p[1] = hira_tab[tab->column + 3][1];
-           } else {
-               memcpy(p, e2sj(hira_tab[tab->column + 3]), 2);
-           }
-           strcpy((char *)p + 2, sfx);
-       }
-       else if(!strncmp(sfx, "\82ê", 2)){
-           if(!IC){
-               p[1]=hira_tab[tab->column + 3][1];
-           } else {
-               memcpy(p, e2sj(hira_tab[tab->column + 3]), 2);
-           }
-           strcpy((char *)p + 2, sfx + 2);
-       }
-       else if(!strncmp(sfx, "\82Ü", 2)) {
-           if(!IC){
-               p[1] = hira_tab[tab->column + 1][1];
-           } else {
-               memcpy(p, e2sj(hira_tab[tab->column + 1]), 2);
-           }
-           strcpy((char *)p + 2, sfx);
-           break;
-       }
-       else if(!strncmp(sfx, "\82æ", 2)) {
-           if(!IC){
-               p[1] = hira_tab[tab->column + 4][1];
-           } else {
-               memcpy(p, e2sj(hira_tab[tab->column + 4]), 2);
-           }
-           strcpy((char *)p + 2, sfx + 2);
-           break;
-       }
-       break;
+        p = tmp + (len - 2);
+        if(!STRNCMP2(sfx, "\82È")){
+            if(!IC){
+                p[0] = 0xa4;
+                p[1] = hira_tab[tab->column][1];
+            } else {
+              memcpy(p, e2sj(hira_tab[tab->column]), 2);
+            }
+
+            strcpy((char *)p + 2, sfx);
+            break;
+        }
+        else if(!STRNCMP2(sfx, "\82½") || !STRNCMP2(sfx, "\82Ä")){
+            switch( tab->onbin_type ){
+              case NORMAL:
+                if(!IC){
+                    p[1] = hira_tab[tab->column + 1][1];
+                } else {
+                    memcpy(p, e2sj(hira_tab[tab->column + 1]), 2);
+                }
+                break;
+              case SOKUON:
+                if(!IC){
+                    p[1] = 0xf3;
+                } else {
+                    memcpy(p, "\82ñ", 2);
+                }
+                break;
+              case HATSUON:
+                if(!IC){
+                    p[1] = 0xc3;
+                } else {
+                    memcpy(p, "\82Á", 2);
+                }
+                break;
+              case ION:
+                if(!IC){
+                    p[1] = 0xa4;
+                } else {
+                    memcpy(p, "\82¢", 2);
+                }
+                break;
+            }
+            strcpy((char *)p + 2, sfx);
+            if(tab->onbin_type == SOKUON ||
+               (tab->onbin_type == ION && tab->column >= J_GA)){
+                if(!IC){
+                  ++p[3];
+                } else {
+                  ++p[3];
+                }
+/*        memcpy(p+2, e2sj(sj2e(p+2)+1), 2);*//* sj2e() returns ptr to char* */
+            }
+            break;
+        }
+        else if(!STRNCMP2(sfx, "\82Î")){
+            if(!IC){
+                p[1] = hira_tab[tab->column + 3][1];
+            } else {
+                memcpy(p, e2sj(hira_tab[tab->column + 3]), 2);
+            }
+            strcpy((char *)p + 2, sfx);
+        }
+        else if(!STRNCMP2(sfx, "\82ê")){
+            if(!IC){
+                p[1]=hira_tab[tab->column + 3][1];
+            } else {
+                memcpy(p, e2sj(hira_tab[tab->column + 3]), 2);
+            }
+            strcpy((char *)p + 2, sfx + 2);
+        }
+        else if(!STRNCMP2(sfx, "\82Ü")) {
+            if(!IC){
+                p[1] = hira_tab[tab->column + 1][1];
+            } else {
+                memcpy(p, e2sj(hira_tab[tab->column + 1]), 2);
+            }
+            strcpy((char *)p + 2, sfx);
+            break;
+        }
+        else if(!STRNCMP2(sfx, "\82æ")) {
+            if(!IC){
+                p[1] = hira_tab[tab->column + 4][1];
+            } else {
+                memcpy(p, e2sj(hira_tab[tab->column + 4]), 2);
+            }
+            strcpy((char *)p + 2, sfx + 2);
+            break;
+        }
+        break;
       case LOWER:
       case UPPER:
       case KAHEN:
-       p = tmp + (len - 2);
-       if(!strncmp(sfx, "\82Î", 2)){
-           strcpy((char *)p, "\82ê");
-           strcpy((char *)p + 2, sfx);
-       }
-       else if(!strncmp(sfx, "\82ê", 2) && tab->katsuyo_type == LOWER){
-           strcpy((char *)p, "\82ç");
-           strcpy((char *)p + 2, sfx);
-       }
-       else
-         strcpy((char *)p, sfx);
-       break;
+        p = tmp + (len - 2);
+        if(!STRNCMP2(sfx, "\82Î")){
+            strcpy((char *)p, "\82ê");
+            strcpy((char *)p + 2, sfx);
+        }
+        else if(!STRNCMP2(sfx, "\82ê") && tab->katsuyo_type == LOWER){
+            strcpy((char *)p, "\82ç");
+            strcpy((char *)p + 2, sfx);
+        }
+        else
+          strcpy((char *)p, sfx);
+        break;
       case SAHEN:
-       p = tmp + (len - 4);
-       if(!strncmp(sfx, "\82È", 2) ||
-          !strncmp(sfx, "\82Ü", 2) ||
-          !strncmp(sfx, "\82½", 2) ||
-          !strncmp(sfx, "\82Ä", 2) ||
-          !strncmp(sfx, "\82æ", 2)){
-           strcpy((char *)p, "\82µ");
-           strcpy((char *)p + 2, sfx);
-       }
-       else if(!strncmp(sfx, "\82Î", 2) || !strncmp(sfx, "\82ê\82Î", 4)){
-           strcpy((char *)p, "\82·\82ê\82Î");
-       }
-       break;
+        p = tmp + (len - 4);
+        if(!STRNCMP2(sfx, "\82È") ||
+           !STRNCMP2(sfx, "\82Ü") ||
+           !STRNCMP2(sfx, "\82½") ||
+           !STRNCMP2(sfx, "\82Ä") ||
+           !STRNCMP2(sfx, "\82æ")){
+            strcpy((char *)p, "\82µ");
+            strcpy((char *)p + 2, sfx);
+        }
+        else if(!STRNCMP2(sfx, "\82Î") || !STRNCMP2(sfx, "\82ê\82Î")){
+            strcpy((char *)p, "\82·\82ê\82Î");
+        }
+        break;
     }
     return (char *)tmp;
 }
@@ -321,16 +325,16 @@ jconj( jverb, sfx )
 
     len = strlen(jverb);
     for( tab = jconj_tab; tab->main != (void*)0; ++tab){
-       if(!strcmp(jverb, tab->main)){
-           return jconjsub(tab, jverb, sfx);
-       }
+        if(!strcmp(jverb, tab->main)){
+            return jconjsub(tab, jverb, sfx);
+        }
     }
 
     for( tab = jconj_tab; tab->main != (void*)0; ++tab){
-       if(len - strlen(tab->main) > 0 &&
-          !strcmp(jverb + (len - strlen(tab->main)), tab->main)){
-           return jconjsub(tab, jverb, sfx);
-       }
+        if(len - strlen(tab->main) > 0 &&
+           !strcmp(jverb + (len - strlen(tab->main)), tab->main)){
+            return jconjsub(tab, jverb, sfx);
+        }
     }
 
 #ifdef JAPANESETEST
@@ -345,16 +349,16 @@ jcan(jverb)
      const char *jverb;
 {
     const char *ret;
-    static unsigned char tmp[1024];
+    static char tmp[1024];
 
     int len = strlen(jverb);
     if(!strcmp(jverb + len - 4, "\82·\82é")){
-       strncpy(tmp, jverb, len - 4);
-       strcpy(tmp + len - 4, "\82Å\82«\82é");
-       return tmp;
+        strncpy(tmp, jverb, len - 4);
+        strcpy(tmp + len - 4, "\82Å\82«\82é");
+        return tmp;
     } else {
-       ret = jconj(jverb, "\82ê\82é");
-       return ret;
+        ret = jconj(jverb, "\82ê\82é");
+        return ret;
     }
 }
 
@@ -363,15 +367,15 @@ const char *
 jcannot(jverb)
      const char *jverb;
 {
-    static unsigned char tmp[1024];
+    static char tmp[1024];
 
     int len = strlen(jverb);
     if(!strcmp(jverb + len - 4, "\82·\82é")){
-       strncpy(tmp, jverb, len-4);
-       strcpy(tmp +len-4, "\82Å\82«\82È\82¢");
-       return tmp;
+        strncpy(tmp, jverb, len-4);
+        strcpy(tmp +len-4, "\82Å\82«\82È\82¢");
+        return tmp;
     } else {
-       return jconj(jverb, "\82ê\82È\82¢");
+        return jconj(jverb, "\82ê\82È\82¢");
     }
 }
 
@@ -393,15 +397,15 @@ jpolite(jverb)
 
 
 /*
-**     conjection of adjective word
+**      conjection of adjective word
 **
-**     Example:
+**      Example:
 **
-**     \8c`\97e\8e\8c\93I\97p\96@       \95\9b\8e\8c\93I\97p\96@
+**      \8c`\97e\8e\8c\93I\97p\96@       \95\9b\8e\8c\93I\97p\96@
 **
-**     \90Ô\82¢            -> \90Ô\82­         (\8c`\97e\8e\8c)
-**     ãY\97í\82È          -> ãY\97í\82É       (\8c`\97e\93®\8e\8c)
-**     ãY\97í\82¾          -> ãY\97í\82É       (\8c`\97e\93®\8e\8c)
+**      \90Ô\82¢            -> \90Ô\82­         (\8c`\97e\8e\8c)
+**      ãY\97í\82È          -> ãY\97í\82É       (\8c`\97e\93®\8e\8c)
+**      ãY\97í\82¾          -> ãY\97í\82É       (\8c`\97e\93®\8e\8c)
 */
 const char *
 jconj_adj( jadj )
@@ -414,11 +418,11 @@ jconj_adj( jadj )
     len = strlen((char *)tmp);
 
     if(!strcmp((char *)tmp + len - 2, "\82¢")){
-       strcpy((char *)tmp + len - 2, "\82­");
+        strcpy((char *)tmp + len - 2, "\82­");
     } else if(!strcmp((char *)tmp + len - 2, "\82¾") ||
-             !strcmp((char *)tmp + len - 2, "\82È") ||
-             !strcmp((char *)tmp + len - 2, "\82Ì")){
-       strcpy((char *)tmp + len - 2, "\82É");
+              !strcmp((char *)tmp + len - 2, "\82È") ||
+              !strcmp((char *)tmp + len - 2, "\82Ì")){
+        strcpy((char *)tmp + len - 2, "\82É");
     }
 
     return (char *)tmp;
@@ -444,14 +448,14 @@ main()
     struct _jconj_tab *tab;
 
     for(tab = jconj_tab; tab->main != (void*)0; ++tab){
-       printf("%-10s \82È\82¢ %s\n", tab->main, jconj(tab->main, "\82È\82¢"));
-       printf("%-10s \82Ü\82· %s\n", tab->main, jconj(tab->main, "\82Ü\82·"));
-       printf("%-10s \82½   %s\n", tab->main, jconj(tab->main, "\82½"));
-       printf("%-10s \82ê\82Π%s\n", tab->main, jconj(tab->main, "\82ê\82Î"));
-       printf("%-10s \82Æ\82« %s\n", tab->main, jconj(tab->main, "\82Æ\82«"));
-       printf("%-10s \82æ\82¤ %s\n", tab->main, jconj(tab->main, "\82æ\82¤"));
-       printf("%-10s %s\n", tab->main, jcan(tab->main));
-       printf("%-10s %s\n", tab->main, jcannot(tab->main));
+        printf("%-10s \82È\82¢ %s\n", tab->main, jconj(tab->main, "\82È\82¢"));
+        printf("%-10s \82Ü\82· %s\n", tab->main, jconj(tab->main, "\82Ü\82·"));
+        printf("%-10s \82½   %s\n", tab->main, jconj(tab->main, "\82½"));
+        printf("%-10s \82ê\82Π%s\n", tab->main, jconj(tab->main, "\82ê\82Î"));
+        printf("%-10s \82Æ\82« %s\n", tab->main, jconj(tab->main, "\82Æ\82«"));
+        printf("%-10s \82æ\82¤ %s\n", tab->main, jconj(tab->main, "\82æ\82¤"));
+        printf("%-10s %s\n", tab->main, jcan(tab->main));
+        printf("%-10s %s\n", tab->main, jcannot(tab->main));
     }
     printf("%s\n", jconj("\93O\96é\82Ånethack\82Ì\96|\96ó\82ð\82·\82é", "\82È\82¢"));
     printf("%s\n", jconj("\93O\96é\82Ånethack\82Ì\96|\96ó\82ð\82·\82é", "\82Ü\82·"));