comparison Wnn/romkan/rk_modread.c @ 28:a7ccf412ba02

more warning suppression
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Sat, 06 Mar 2010 23:24:53 +0900
parents bbc77ca4def5
children
comparison
equal deleted inserted replaced
27:6bfa7ea3b75b 28:a7ccf412ba02
73 scan1tm (), modsrc_tourk (), chk_get_int (), pathsrc_tourk (), modnamchk (), ctov (), look_cond (), evlcond (), chkchar_getc (); 73 scan1tm (), modsrc_tourk (), chk_get_int (), pathsrc_tourk (), modnamchk (), ctov (), look_cond (), evlcond (), chkchar_getc ();
74 static char codeeval (); 74 static char codeeval ();
75 extern void ERRMOD (), ERMOPN (), BUGreport (); 75 extern void ERRMOD (), ERMOPN (), BUGreport ();
76 extern int filnamchk (); 76 extern int filnamchk ();
77 77
78 struct kwdpair 78 struct kwdpair {
79 {
80 /* キーワードとその内部表現の対応を与える構造体。内部表現を 79 /* キーワードとその内部表現の対応を与える構造体。内部表現を
81 持たないものに対しては0が与えられている。 */ 80 持たないものに対しては0が与えられている。 */
82 char *name; 81 char *name;
83 int code; 82 int code;
84 } 83 };
85 modfn[] = 84
86 { 85 struct kwdpair modfn[] = {
87 "defmode", 0, 86 {"defmode", 0},
88 "if", XY2INT (2, 0), "when", XY2INT (2, 1), "path", 0, "search", 0, "on_dispmode", XY2INT (5, 0), "off_dispmode", XY2INT (5, 1), "on_unchg", XY2INT (6, 0), "off_unchg", XY2INT (6, 1), NULL}; /* 下を見よ キーワード定義表はまだあと二つあるのだ */ 87 {"if", XY2INT (2, 0)},
88 {"when", XY2INT (2, 1)},
89 {"path", 0},
90 {"search", 0},
91 {"on_dispmode", XY2INT (5, 0)},
92 {"off_dispmode", XY2INT (5, 1)},
93 {"on_unchg", XY2INT (6, 0)},
94 {"off_unchg", XY2INT (6, 1)},
95 {NULL, 0},
96 }; /* 下を見よ キーワード定義表はまだあと二つあるのだ */
89 97
90 struct kwdpair modcond[] = { 98 struct kwdpair modcond[] = {
91 "not", XY2INT (3, 0), 99 {"not", XY2INT (3, 0)},
92 "and", XY2INT (3, 1), 100 {"and", XY2INT (3, 1)},
93 "or", XY2INT (3, 2), 101 {"or", XY2INT (3, 2)},
94 "true", XY2INT (3, 3), 102 {"true", XY2INT (3, 3)},
95 "false", XY2INT (3, 4), 103 {"false", XY2INT (3, 4)},
96 "=", XY2INT (3, 5), 104 {"=", XY2INT (3, 5)},
97 "!=", XY2INT (3, 6), 105 {"!=", XY2INT (3, 6)},
98 "<", XY2INT (3, 7), 106 {"<", XY2INT (3, 7)},
99 ">", XY2INT (3, 8), 107 {">", XY2INT (3, 8)},
100 NULL 108 {NULL, 0}
101 }; 109 };
110
102 int condarg[] = { 1, 2, 2, 0, 0, 2, 2, 2, 2 }; /* 条件判断関数の引数個数 */ 111 int condarg[] = { 1, 2, 2, 0, 0, 2, 2, 2, 2 }; /* 条件判断関数の引数個数 */
103 112
104 struct kwdpair swstat[] = { 113 struct kwdpair swstat[] = {
105 "on", 0, 114 {"on", 0},
106 "off", 0, 115 {"off", 0},
107 NULL 116 {NULL, 0}
108 }; 117 };
109 /* 1×2^24代はモード名、4×2^24代はモード表示文字列、7×2^24代はモード状態定 118 /* 1×2^24代はモード名、4×2^24代はモード表示文字列、7×2^24代はモード状態定
110 数の内部表現に使っている */ 119 数の内部表現に使っている */
111 120
112 /** キーワード(if, andなど)が正当なものかチェックし、その番号を返す */ 121 /** キーワード(if, andなど)が正当なものかチェックし、その番号を返す */
119 128
120 for (i = 0; hyo[i].name != NULL; i++) 129 for (i = 0; hyo[i].name != NULL; i++)
121 if (!mystrcmp (hyo[i].name, wd)) 130 if (!mystrcmp (hyo[i].name, wd))
122 return (i); 131 return (i);
123 ERRMOD (9); 132 ERRMOD (9);
124 /*NOTREACHED*/ 133 /*NOTREACHED*/
134 return -1; /* dummy */
125 } 135 }
126 136
127 /** モード表の読み込み */ 137 /** モード表の読み込み */
128 void 138 void
129 readmode (modfname) 139 readmode (modfname)
1278 /** strcpyと同等 但し'\(8進);'も解釈する。s1 <= s2なら正常動作するはず */ 1288 /** strcpyと同等 但し'\(8進);'も解釈する。s1 <= s2なら正常動作するはず */
1279 static void 1289 static void
1280 mystrcpy (s1, s2) 1290 mystrcpy (s1, s2)
1281 char *s1, *s2; 1291 char *s1, *s2;
1282 { 1292 {
1283 while (*s1++ = codeeval (&s2)); 1293 while ((*s1++ = codeeval(&s2)));
1284 } 1294 }
1285 1295
1286 /** 一文字の解釈を行う。普通の文字はそのまま、'\(8進);'は実際のコードに 1296 /** 一文字の解釈を行う。普通の文字はそのまま、'\(8進);'は実際のコードに
1287 直す。その後、文字列へのポインタを一文字分進めておく(少なくとも 1297 直す。その後、文字列へのポインタを一文字分進めておく(少なくとも
1288 1バイト分進むことが保証されるはず)。*/ 1298 1バイト分進むことが保証されるはず)。*/