1 /* xtr.h */ 2 /***************************************************************************** 3 �ԣ�������У�������أԣ� 4 5 �ζ��̥إå��ե������ 6 *****************************************************************************/ 7 8 #ifdef MSDOS /* DOS �� XTR ��Ĥ���Ȥ��������� */ 9 #undef MSDOS 10 #define MSDOS 1 11 #else 12 #ifdef __MSDOS__ 13 #define MSDOS 1 14 #else 15 #ifdef _DOS 16 #define MSDOS 1 17 #endif 18 #endif 19 #endif 20 21 #ifdef WINNT /* NT �� XTR ��Ĥ���Ȥ��������� */ 22 #undef WINNT 23 #define WINNT 1 24 #else 25 #ifdef __WIN32__ 26 #define WINNT 1 27 #else 28 #ifdef WIN32 29 #define WINNT 1 30 #endif 31 #endif 32 #endif 33 34 #if WINNT && MSDOS 35 #undef MSDOS 36 #endif 37 38 #ifdef WINNT /* NT �ǤǤ���ư�����������ѥС������Ȥ��� */ 39 #ifndef FLOATEXPR /* DOS �ǤǤ���ư���������Ǥˤ���ˤ� FLOATEXPR �����*/ 40 #define FLOATEXPR 1 41 #endif 42 #endif 43 44 #if MSDOS || WINNT 45 #else 46 #define UNIX 1 47 #define FLOATEXPR 1 48 #endif 49 50 #ifdef UNIX 51 #define DIRECT_SH 1 /* DOS���ޥ�ɤμ¹Ԥ�system()��Ȥ�ʤ� */ 52 #define RE3_REGEXP 1 /* re3 �Ǥϸ����ѥ����������ɽ����Ȥ���褦�ˤ��� */ 53 #endif 54 55 /* XTR �ΥС������ */ 56 #ifdef UNIX 57 #define XTR_VER "1.50e/UN*X" /* UN*X�С������ */ 58 #else 59 #ifdef WINNT 60 #define XTR_VER "1.50e/NT" /* WindowsNT�С������ */ 61 #else 62 #ifdef FLOATEXPR 63 #define XTR_VER "1.50e/F" /* DOS��ư�������С������ */ 64 #else 65 #define XTR_VER "1.50e" /* DOS�����С������ */ 66 #endif /* !FLOATEXPR */ 67 #endif /* !WINNT */ 68 #endif /* !UNIX */ 69 #ifdef __human68k__ 70 #undef XTR_VER 71 #define XTR_VER "1.50e/HUMAN68K" 72 #endif 73 74 /**************************************************************************/ 75 76 #ifdef HAVE_CONFIG_H 77 #include <config.h> 78 #else /* !HAVE_CONFIG_H */ 79 #if MSDOS || WINNT 80 #include <config.dos> 81 #endif /* MSDOS || WINNT */ 82 #endif /* !HAVE_CONFIG_H */ 83 84 #ifdef PROTOTYPES 85 #define ARGS(args) args 86 #else 87 #define ARGS(args) () 88 #endif 89 90 #ifdef __STDC__ 91 #define voidstar void * 92 #else 93 #define voidstar char * 94 #endif 95 96 #include <assert.h> 97 #include <setjmp.h> 98 #include <signal.h> 99 #include <sys/types.h> 100 #include <sys/stat.h> 101 102 #include <ctype.h> 103 #ifndef HAVE_ISASCII 104 #define isascii(c) (((unsigned)(c)) < 128) 105 #endif 106 int TOLOWER ARGS((int)); 107 int TOUPPER ARGS((int)); 108 #define TOLOWER(c) (isupper((c)) ? tolower((c)) : (c)) 109 #define TOUPPER(c) (islower((c)) ? toupper((c)) : (c)) 110 111 #ifdef STDC_HEADERS 112 #include <stdarg.h> 113 #define VA_START(a,b) va_start((a),(b)) 114 #else 115 #include <varargs.h> 116 #define VA_START(a,b) va_start((a)) 117 #endif 118 119 #include <stdio.h> 120 #ifndef HAVE_VPRINTF 121 int vfprintf ARGS((FILE *, const char *, va_list)); 122 #endif 123 #ifndef HAVE_FLUSHALL 124 int flushall ARGS(()); 125 #endif 126 #ifndef FDOPEN_DECLARED 127 FILE *fdopen ARGS((int, const char *)); 128 #endif 129 130 #ifdef STDC_HEADERS 131 #include <stdlib.h> 132 #else 133 voidstar malloc ARGS((size_t)); 134 voidstar realloc ARGS((voidstar, size_t)); 135 #endif 136 #ifndef HAVE_STRTOD 137 double strtod ARGS((const char *, char **)); 138 #endif 139 #ifndef HAVE_STRTOL 140 long strtol ARGS((const char *, char **, int)); 141 #endif 142 #ifndef HAVE_STRTOUL 143 unsigned long strtoul ARGS((const char *, char **, int)); 144 #endif 145 #ifndef EXIT_SUCCESS 146 #define EXIT_SUCCESS 0 147 #define EXIT_FAILURE 1 148 #endif 149 150 #if HAVE_STRING_H || STDC_HEADERS 151 #include <string.h> 152 #else 153 #include <strings.h> 154 #define strchr index 155 #define strrchr rindex 156 #endif 157 #ifndef HAVE_MEMCMP 158 int memcmp ARGS((const char *, const char *, int)); 159 #endif 160 #ifndef HAVE_MEMCPY 161 #define memcpy(d,s,n) memmove((d),(s),(n)) 162 #endif 163 #ifndef HAVE_STRCSPN 164 int strcspn ARGS((const char *, const char *)); 165 #endif 166 #ifndef HAVE_STRSPN 167 int strspn ARGS((const char *, const char *)); 168 #endif 169 #ifndef HAVE_STRSTR 170 char *strstr ARGS((const char *, const char *)); 171 #endif 172 #ifndef HAVE_STRUPR 173 char *strupr ARGS((char *)); 174 #endif 175 #ifndef HAVE_MEMMOVE 176 char *memmove ARGS((char *, const char *, int)); 177 #endif 178 #ifndef HAVE_MEMSET 179 char *memset ARGS((char *, int, int)); 180 #endif 181 #ifndef HAVE_STRICMP 182 #ifdef HAVE_STRCMPI 183 #define stricmp strcmpi 184 #else /* !HAVE_STRCMPI */ 185 #ifdef HAVE_STRCASECMP 186 #define stricmp strcasecmp 187 #else /* !HAVE_STRCASECMP */ 188 int stricmp ARGS((const char *, const char *)); 189 #endif /* !HAVE_STRCASECMP */ 190 #endif /* !HAVE_STRCMPI */ 191 #endif /* !HAVE_STRICMP */ 192 #ifndef HAVE_STRNICMP 193 #ifdef HAVE_STRNCASECMP 194 #define strnicmp strncasecmp 195 #else /* !HAVE_STRNCASECMP */ 196 int strnicmp ARGS((const char *, const char *, int)); 197 #endif /* !HAVE_STRNCASECMP */ 198 #endif /* !HAVE_STRNICMP */ 199 #ifdef __human68k__ 200 extern int (*STRCMP)(); 201 #endif 202 203 #if HAVE_FCNTL_H 204 #include <fcntl.h> 205 #endif 206 207 #ifdef UNIX 208 #if HAVE_UNISTD_H 209 #include <unistd.h> 210 #endif 211 #else 212 #include <io.h> 213 #endif 214 215 #if HAVE_LIMITS_H || STDC_HEADERS 216 #include <limits.h> 217 #endif 218 219 #if TIME_WITH_SYS_TIME 220 #include <sys/time.h> 221 #include <time.h> 222 #else 223 #if HAVE_SYS_TIME_H 224 #include <sys/time.h> 225 #else 226 #include <time.h> 227 #endif 228 #endif 229 230 #ifndef HAVE_MKTIME 231 time_t mktime ARGS((struct tm *)); 232 #endif 233 #ifndef HAVE_STRFTIME 234 int strftime ARGS((char *, int, const char *, const struct tm *)); 235 #endif 236 237 #ifndef alloca 238 #ifdef __GNUC__ 239 #define alloca __builtin_alloca 240 #else /* !__GNUC__ */ 241 #if HAVE_ALLOCA_H 242 #include <alloca.h> 243 #else 244 #ifdef _AIX 245 #pragma alloca 246 #else 247 voidstar alloca ARGS((size_t)); 248 #endif /* !_AIX */ 249 #endif /* !HAVE_ALLOCA_H */ 250 #endif /* !__GNUC__ */ 251 #endif /* !alloca */ 252 253 #ifdef FLOATEXPR 254 #include <math.h> 255 #include <float.h> 256 #endif 257 258 #if MSDOS || WINNT || __human68k__ 259 #include <conio.h> 260 #else 261 #ifdef UNIX 262 int getch ARGS(()); 263 int kbhit ARGS(()); 264 #endif 265 #endif 266 267 #ifdef MSDOS 268 #include <dos.h> 269 #endif 270 271 #ifdef __TURBOC__ 272 #include <dir.h> 273 #include <alloc.h> 274 #endif 275 276 #ifdef UNIX 277 #include "mbc.h" 278 #endif 279 #include "xjctype.h" 280 #include "xjstring.h" 281 282 #if __TURBOC__ || _MSC_VER 283 /* Turbo(Borland)C++ �� MSC(VC) �γ�ĥ������� */ 284 #define CDECL cdecl 285 #ifdef MSDOS 286 #define FAR far 287 #define NEAR near 288 #else /* !MSDOS */ 289 #define FAR 290 #define NEAR 291 #endif /* !MSDOS */ 292 #else /* !(__TURBOC__ || _MSC_VER) */ 293 #define CDECL 294 #define FAR 295 #define NEAR 296 #endif /* !(__TURBOC__ || _MSC_VER) */ 297 298 299 /********************** ������� ******************************************/ 300 301 typedef unsigned char uchar; 302 #if 0 303 typedef unsigned short ushort; 304 typedef unsigned long ulong; 305 #endif 306 typedef unsigned char boolean; 307 typedef unsigned short moji; 308 309 typedef struct strdesc { 310 uchar *s; 311 short len; 312 } strdesc_t; 313 314 typedef enum matype { 315 MA_NOARG, 316 MA_VERBATIM, 317 MA_FSTRING, 318 MA_QSTRING, 319 MA_EXPR, 320 MA_VBLOCK, 321 MA_FBLOCK, 322 MA_AUTO, 323 } matype_t; 324 325 /* �ޥ�������η� */ 326 typedef struct marg { 327 uchar *s; 328 short len; 329 matype_t typ; 330 } marg_t; 331 332 333 /* �ޥ�������Τ���� */ 334 typedef struct macro { 335 uchar *name; /* �ޥ���̾ */ 336 marg_t body; /* ���� */ 337 matype_t matyp; /* �������� */ 338 short maxargc; /* �����ο��κ����� */ 339 uchar *pvars; /* �ѥ����ѿ��ꥹ�� */ 340 struct macro *prev; 341 } macro_t; 342 343 344 /* �ѿ��ꥹ�ȹ�¤����� */ 345 typedef struct var { 346 uchar *name; /* �ѿ�̾ */ 347 uchar *val; /* �� */ 348 short len; /* Ĺ�� */ 349 struct var *prev; 350 } var_t; 351 352 353 354 355 /* �ִ��ꥹ�ȹ�¤����� */ 356 typedef struct rpl { 357 uchar pref; /* ����ʸ�������Ƭʸ���ʱѻ�����ʸ������Ͽ�� */ 358 uchar gmode; /* GetStr�ؤΥѥ��� */ 359 short maxlen; /* ���ι��� slist �Υꥹ����Ǥ�fnd�κ����Ĺ�� */ 360 struct def *slist; 361 struct rpl *prev; 362 } rpl_t; 363 364 typedef struct def { 365 uchar *fnd; /* ����ʸ���� */ 366 short fndlen; /* ����ʸ�����Ĺ�� */ 367 uchar *rpl; /* �ִ�ʸ���� */ 368 short rpllen; /* �ִ�ʸ�����Ĺ�� */ 369 ushort mode; /* �⡼�ɡʹ�Ƭ����������Ƭ����������ʤɡ�*/ 370 uchar cmode; /* ����⡼�ɡ����楳���ɡ��ޥ�����ǽ����ʤɡ�*/ 371 uchar grp; /* ���롼�ס����楳��������ξ���*/ 372 struct def *prev; 373 } def_t; 374 375 376 377 /* �����ѥ�����¸�ѥ����å��ꥹ�� */ 378 typedef struct params { 379 uchar e_ ; 380 uchar w_ ; 381 uchar f_ ; 382 uchar a_ ; 383 uchar aj_; 384 uchar ac_; 385 uchar ar_; 386 uchar ab_; 387 uchar as_; 388 uchar ss_; 389 uchar sj_; 390 uchar al_; 391 uchar ai_; 392 uchar af_; 393 uchar i_ ; 394 uchar h_ ; 395 uchar ip_; 396 uchar ii_; 397 uchar il_; 398 uchar l_ ; 399 uchar q_ ; 400 uchar t_ ; 401 uchar s_ ; 402 uchar sz_; 403 uchar sh_; 404 uchar sk_; 405 uchar sn_; 406 uchar pj_; 407 uchar pm_; 408 uchar r_ ; 409 uchar ko_; 410 uchar kn_; 411 uchar kh_; 412 uchar kc_; 413 uchar kz_; 414 uchar kk_; 415 uchar ke_; 416 uchar kx_; 417 uchar kf_; 418 uchar kj_; 419 uchar nk_; 420 uchar z_ ; 421 422 uchar w; 423 uchar a; 424 uchar i; 425 uchar h; 426 uchar ip; 427 uchar l; 428 uchar t; 429 uchar s; 430 uchar sk; 431 432 short count; 433 struct params *prev; 434 } params_t; 435 436 #if UNIX 437 struct reg_match_t { 438 const char *beg; 439 int len; 440 }; 441 #endif 442 443 444 /* ���ο��ͷ������ */ 445 /* 446 * �⤷���ޥ��� FLOATEXPR ���������Ƥ����顢 447 * ���ο��ͷ��ϡ���ư�������� (double)�� 448 * �����Ǥʤ���С������� (long)�� 449 */ 450 451 #ifdef FLOATEXPR 452 typedef double exprval_t; 453 #define EXPRVAL_MIN (-DBL_MAX) 454 #define EXPRVAL_MAX DBL_MAX 455 #ifdef __STDC__ 456 #define EXPRVAL_PRINTF_FMT "%." _Quote(DBL_DIG) "g" 457 #else 458 #define EXPRVAL_PRINTF_FMT "%g" 459 #endif 460 #else 461 typedef long exprval_t; /* ���ο��ͷ� */ 462 #define EXPRVAL_MIN LONG_MIN 463 #define EXPRVAL_MAX LONG_MAX 464 #define EXPRVAL_PRINTF_FMT "%ld" 465 #endif 466 typedef long exprintval_t; 467 468 /* EvalExpr �� evlevel ������Ϳ����⡼�� 469 * �ɤ��ޤǼ����ɤफ����� 470 */ 471 typedef enum EVLEV { 472 EXPR_MAX, /* ����Ǥ������Ĺ���ɤ� */ 473 EXPR_SEMIMAX, /* ����ޤ˽вФ����ޤ� */ 474 EXPR_MIN, /* ñ�༰�����ɤޤʤ� */ 475 EXPR_PRIM, /* �켡���Τ��ɤ� */ 476 } evlev_t; 477 478 /* SkipExpr �� skipmode ������Ϳ����⡼�� 479 * ���Ȥ����������ɤ�ʤ��ä��Ȥ��ɤ����뤫����� 480 */ 481 typedef enum SKIPMODE { 482 SKIP_NORMAL, /* ɸ��ʥ��顼���Ф���� */ 483 SKIP_NOERR, /* ���顼��̵�뤹�� */ 484 SKIP_ELSE0, /* �������ɤ�ʤ���Ф�ȤΥݥ����֤� */ 485 SKIP_ELSE1, /* �������ɤ�ʤ���У�ʸ�����������å� */ 486 } skipmode_t; 487 488 /* �Ȥ߹��ߴؿ��ν��� */ 489 490 #ifndef const 491 #ifndef __STDC__ 492 #define const 493 #endif 494 #endif 495 496 #ifndef __P 497 #ifdef __STDC__ 498 #define __P(args) args 499 #else 500 #define __P(args) () 501 #endif 502 #endif 503 504 typedef int (*sffnp_t) __P((uchar *d)); 505 506 typedef int (*sf00fnp_t) __P((uchar *d)); 507 typedef int (*sf01fnp_t) __P((uchar *d, exprval_t n)); 508 typedef int (*sf02fnp_t) __P((uchar *d, exprval_t n1, exprval_t n2)); 509 typedef int (*sfs0fnp_t) __P((uchar *d, const uchar *s)); 510 typedef int (*sf10fnp_t) __P((uchar *d, const uchar *s, int len)); 511 typedef int (*sf11fnp_t) __P((uchar *d, const uchar *s, int len, int n)); 512 typedef int (*sf12fnp_t) __P((uchar *d, const uchar *s, int len, int n1, int n2)); 513 typedef int (*sf20fnp_t) __P((uchar *d, const uchar *s1, int len1, const uchar *s2, int len2)); 514 typedef int (*sf21fnp_t) __P((uchar *d, const uchar *s1, int len1, const uchar *s2, int len2, int n)); 515 typedef int (*sf22fnp_t) __P((uchar *d, const uchar *s1, int len1, const uchar *s2, int len2, int n1, int n2)); 516 517 typedef exprval_t (CDECL *sfx1fnp_t) __P((exprval_t a)); 518 typedef exprval_t (CDECL *sfx2fnp_t) __P((exprval_t a, exprval_t b)); 519 520 typedef enum sftype { 521 SF_UNKNOWN, 522 SF_0, 523 SF_X, 524 SF_X_X, 525 SX_X, 526 SX_X_X, 527 SF_S, 528 SF_Sn, 529 SF_Sn_N, 530 SF_Sn_N_N, 531 SF_Sn_Sn, 532 SF_Sn_Sn_N, 533 SF_Sn_Sn_N_N, 534 } sftype_t; 535 536 /* �����ƥ��ѿ��η� */ 537 538 #define V_UNKNOWN 0x0000 539 #define V_INT 0x0010 540 #define V_UINT 0x0011 541 #define V_RONLY 0x8000 542 543 544 /********************** ��� ************************************************/ 545 #define MAXWIDTH 250 /* ���Ԥκ����� */ 546 #define LBVSIZE (MAXWIDTH + 10) /* lbv[] �Υ����� */ 547 #define LBUFSIZE 1024 /* �饤��Хåե����礭�� */ 548 #define CBUFSIZE 1024 /* ���楳���ɽ����Τ���ΥХåե��Υ����� */ 549 #define SBUFSIZE 4096 /* �������ƥ����ȥХåե��Υ����� */ 550 #define IBUFSIZE 2048 /* ����ʸ����Хåե��Υ����� */ 551 #define CPOSVSIZE 128 /* ���������楳���ɰ��ֵ����٥����Υ����� */ 552 #define MAXMARGC 100 /* �ޥ����ޥ�ɰ����ο��κ����� */ 553 #define EVALBUFSIZE 1024 /* ����ɾ������ΥХåե����礭���ν���� */ 554 #define XTR_ENV "XTR" /* ��������⡼�ɻ���δĶ��ѿ� */ 555 #define XTRPATH_ENV "XTRPATH" /* ����ե����븡���ѥ��δĶ��ѿ� */ 556 #ifdef UNIX 557 #define XTR_EXT "xtr" 558 #define BAK_EXT "bak" 559 #define TMPPATH_ENV "TMPDIR" 560 #else 561 #define XTR_EXT "XTR" /* ����ե������ɸ���ĥ�� */ 562 #define BAK_EXT "BAK" /* �Хå����åץե�����γ�ĥ�� */ 563 #define TMPPATH_ENV "TMP" /* �ƥ�ݥ��ե�����ѥ��δĶ��ѿ� */ 564 #endif 565 566 #define ON 1 567 #define OFF 0 568 #define OK 0 569 #define NG (-1) 570 #define ERR (-1) 571 #define TRUE 1 572 #define FALSE 0 573 #define EOF2 0xffff 574 #define SP ' ' 575 #define ZENSP 0x8140 576 #define HWSP 0x8640 577 #define ZENSPS "\201\100" 578 #define HWSPS "\206\100" 579 580 #define SSPACES " \f\n\r\t\v" /* Single byte space chars */ 581 582 583 /* �ƥ����ȥե�����ν�����ʸ�� */ 584 /* -1 �ʤ�ʪ��Ū�ʥե����뽪ü�Τߤ�ե�����ν����Ȥ��� */ 585 #if MSDOS || WINNT 586 #define EOFCHAR 0x1a /* ^Z */ 587 #else 588 #define EOFCHAR (-1) 589 #endif 590 591 /* �ƥ����ȥե�����β��ԥޡ����� CR/LF �� */ 592 #if MSDOS || WINNT || __human68k__ 593 #define NL_IS_CRLF 1 /* CR/LF */ 594 #else 595 #define NL_IS_CRLF 0 /* LF �Τ� */ 596 #endif 597 598 /* ���ޥ�ɥ饤�ץ����Ƴ��ʸ�� */ 599 #define SWITCHAR '-' 600 601 /* �ǥ��쥯�ȥ�ζ��ڤ�ʸ�� */ 602 #if MSDOS || WINNT 603 #define DIRSLASH '\\' /* ɸ��ǥ��쥯�ȥ���ڤ�� '\\' */ 604 #define DIRSLASHS "\\" 605 #define ALTDIRSLASH '/' 606 #define ALTDIRSLASHS "/" 607 #else 608 #define DIRSLASH '/' /* '/' ��ɸ�� */ 609 #define DIRSLASHS "/" 610 #define ALTDIRSLASH '\\' 611 #define ALTDIRSLASHS "\\" 612 #endif 613 614 /* fopen() open mode */ 615 #if MSDOS || WINNT || __human68k__ 616 #define READ_TEXT "rt" 617 #define WRITE_TEXT "wt" 618 #define APPEND_TEXT "at" 619 #define READ_BINARY "rb" 620 #define WRITE_BINARY "wb" 621 #define APPEND_BINARY "ab" 622 #else 623 #define READ_TEXT "r" 624 #define WRITE_TEXT "w" 625 #define APPEND_TEXT "a" 626 #define READ_BINARY "r" 627 #define WRITE_BINARY "w" 628 #define APPEND_BINARY "a" 629 #endif 630 631 /* ��¤�� def �� mode �Υӥå���� */ 632 #define R_EOW1 0x0001 /* ���������� } (�����DZ�����ѿ����ʤ��) */ 633 #define R_SOW1 0x0002 /* ��Ƭ������ { (��Ƭ�Ǻ�����ѿ����ʤ��) */ 634 #define R_EOW2 0x0004 /* ���������� }} (�����DZ��϶���Τ߲�) */ 635 #define R_SOW2 0x0008 /* ��Ƭ������ {{ (��Ƭ�Ǻ��϶���Τ߲�) */ 636 #define R_EOL2 0x0010 /* ���������� $$ (�����Ǹ�˶����) */ 637 #define R_SOL2 0x0020 /* ��Ƭ������ ^^ (��Ƭ�����˶����) */ 638 #define R_EOL 0x0040 /* �������� $ (�����˹���) */ 639 #define R_SOL 0x0080 /* ��Ƭ���� ^ (�����˹�Ƭ) */ 640 #define R_SPECIAL 0x0100 /* �ƥ����Ⱦ夫��ϻ��ȤǤ��ʤ� (special) */ 641 #define R_CMPMASK 0x01ff /* �⡼�ɤ���Ӥ��뤿��Υޥ��� */ 642 #define R_ICASE 0x0200 /* �硿��ʸ�����̤ʤ��� (ignore case) */ 643 #define R_MACRO 0x0400 /* ���ִ����� (macro rpl) */ 644 #define R_EVAL 0x0800 /* �ִ����ʸ����� %-�Ѵ���Ԥ� (eval) */ 645 #define R_WILD 0x1000 /* �磻��ɥ�����ͭ�� (wild card) */ 646 #define R_SAMELEN 0x2000 /* �ִ������Ĺ�����Ѥ��ʤ� (same length) */ 647 #define R_IZENHAN 0x4000 /* ����Ⱦ�Ѷ��̤ʤ� (ignore zen/han) */ 648 #define R_REMOVE 0x8000 /* ������ä��ؼ� */ 649 650 /* ��¤�� def ������⡼�� cmode ��� */ 651 enum cmod { 652 C_NOCNTRL, /* �������̵�� */ 653 C_NIL, /* ñ�˷���� 0 �Ȥʤ������������̵�� */ 654 C_ATTR, /* ɽ��°�����åȤ����楳���ɡ����Ի��˲��ɬ�� */ 655 C_ARESET, /* ɽ��°����������楳���� */ 656 C_WIDE, /* �ܳѻ�������楳���ɡ����Ի��˲����ɬ�� */ 657 C_WRESET, /* �ܳѲ�������楳���� */ 658 C_VEXPAND, /* ���ܳѻ�������楳���� */ 659 C_VRESET, /* ���ܳѲ�������楳���� */ 660 C_QEXPAND, /* ���ܳѻ�������楳���� */ 661 C_QRESET, /* ���ܳѲ�������楳���� */ 662 C_HALF, /* ����Ⱦ�ѻ�������楳���ɡ����Ի��˲����ɬ�� */ 663 C_HRESET, /* ����Ⱦ�Ѳ�������楳���� */ 664 C_FONT, /* �ե���Ȼ������楳���ɡ����ڡ������˲��ɬ�� */ 665 C_FRESET, /* �ե���Ȳ�������楳���� */ 666 C_TERMINATE, /* ��λ���������楳���� */ 667 C_NEWLINE, /* */ 668 C_NEWPAGE, /* */ 669 C_RESET, /* ����������楳���� */ 670 C_RESET2, /* ʸ���������� */ 671 C_KICODE, /* �ˣɥ�������� */ 672 C_KOCODE, /* �ˣϥ�������� */ 673 C_HICODE, /* Ⱦ��in��������� */ 674 C_HOCODE, /* Ⱦ��out��������� */ 675 C_DOTCMD, /* �����ߥ��ޥ�ɤ�Ƴ���ʽ���� "~."��*/ 676 C_INDSET, /* ����ǥ�ȥޡ����ʽ���� "~/"��*/ 677 C_LEXPAND, /* ����ĥ�ʽ���� "~>"��*/ 678 C_REXPAND, /* ����ĥ�ʽ���� "~<"��*/ 679 C_ESCAPE, /* ʸ�����������סʽ���� "~\"��*/ 680 C_PCFORM, /* %-form �ʽ���� "~%"��*/ 681 C_LBREAK, /* �������ԡʽ���� "~|"��*/ 682 C_VBEGIN, /* ���������ϡʽ���� "~{"��*/ 683 C_VEND, /* ��������λ�ʽ���� "~}"��*/ 684 }; 685 686 /* ��¤�� rpl �� gmode ��GetStr�ؤΥѥ�������� */ 687 #define G_OVERNL 0x01 /* ���ԥޡ������ִ��оݤ� */ 688 #define G_WILD 0x02 /* �磻��ɥ����ɤ��� */ 689 690 /* �ִ��о�ʸ������Υ磻��ɥ����ɤ�����ɽ�� */ 691 #define WILD_PREF 0x00 /* ���Х����� */ 692 #define WILD_XMULTI 0xa1 /* "**" */ 693 #define WILD_MULTI 0xa2 /* "*" */ 694 #define WILD_SINGLE 0xa3 /* "?" */ 695 #define WILD_OPTSPACE 0xa4 /* " " */ 696 #define WILD_SPACE 0xa5 /* " " */ 697 698 699 /* ʸ�����Ф��⡼�ɡ�~<, ~>�� */ 700 701 #define CHREXP_NEXTCHR 1 /* ~< */ 702 #define CHREXP_PREVCHR 2 /* ~> */ 703 #define CHREXP_SPADJ 4 /* ��·���ζ���Ĵ�� */ 704 705 706 /************************ Macros ********************************************/ 707 708 /* ʸ�����åȤˤ��뤫Ĵ�٤� */ 709 #define Member(c, cset) (jstrchr((char *)(cset),(c)) != NULL) 710 711 /* ʸ�����̤�Ĵ�٤�ޥ��� */ 712 713 #define Isspace(c) (isascii(c) && isspace(c)) 714 #define Isalnum(c) (isascii(c) && isalnum(c)) 715 #define Isalpha(c) (isascii(c) && isalpha(c)) 716 #define Isdigit(c) (isascii(c) && isdigit(c)) 717 #define Iscntrl(c) (isascii(c) && iscntrl(c)) 718 #define Isprint(c) (isascii(c) && isprint(c)) 719 #define Isgraph(c) (isascii(c) && isgraph(c)) 720 #define Islower(c) (isascii(c) && islower(c)) 721 #define Isupper(c) (isascii(c) && isupper(c)) 722 #define Ispunct(c) (isascii(c) && ispunct(c)) 723 #define Isxdigit(c) (isascii(c) && isxdigit(c)) 724 725 726 /* ���Х���ʸ���� */ 727 #define Is1B(c) ((unsigned)(c) < 0x100) 728 729 /* �ƥ����Ȳ����� */ 730 #if UNIX 731 #define ISHWSP(c) 0 732 #else 733 #define ISHWSP(c) ((c) == HWSP) 734 #endif 735 736 #define IsHanSp(c) ((c) == SP || ISHWSP(c)) 737 #define IsXSpace(c) (Isspace(c) || (c) == ZENSP || ISHWSP(c)) 738 #define IsHSpace(c) (IsHanSp(c) || (c)=='\t'|| (c)==ZENSP) 739 #define IsVSpace(c) ((c) == '\n'||(c) == '\r'||(c) == '\f'||(c) == '\v') 740 #define IsXAlnum(c) (Is1B(c) && !kcmode && isalnum(c) ||\ 741 !knmode && (jisalpha(c)||jisdigit(c) ||\ 742 (unsigned)(c)>= 0x839f && (unsigned)(c)<= 0x849e) ||\ 743 Member(c, alnum2)) 744 745 /* ��ʸ�Ѥ�ʸ���� */ 746 #if UNIX 747 #define IsWabunmoji(c) ((unsigned)(c) >= 0x829f && (unsigned)(c) <= 0x839e \ 748 || (unsigned)(c) >= 0x889f \ 749 || (unsigned)(c) >= 0x8152 && (unsigned)(c) <= 0x815b ) 750 #else /* !UNIX */ 751 #define IsWabunmoji(c) ((unsigned)(c) >= 0x829f && (unsigned)(c) <= 0x839e \ 752 || (unsigned)(c) >= 0x889f && (unsigned)(c) <= 0xeafc \ 753 || (unsigned)(c) >= 0x8152 && (unsigned)(c) <= 0x815b ) 754 #endif /* !UNIX */ 755 756 /* jiskigou�ܦ� */ 757 #if UNIX 758 #define Jiskigou(c) ((c) >= 0x8141 && (c) < 0x824f) 759 #else 760 #define Jiskigou(c) ((c) >= 0x8141 && ((c) < 0x824f || (c) > 0xea9e)) /* 78JIS */ 761 #endif 762 763 /* �б�����Ⱦ��(ANK)ʸ�������ꤦ������ʸ���� */ 764 #if UNIX 765 #define IsANKZen(c) ((c) >= 0x8140 && ((c) < 0x829e || (c) >= 0x8340 && (c) < 0x839f)) 766 #else 767 #define IsANKZen(c) ((c) >= 0x8140 && ((c) < 0x829e || \ 768 (c) >= 0x8340 && ((c) < 0x839f || (c) > 0xea9e))) 769 #endif 770 771 /* ���Х���Ⱦ�Ѥ� */ 772 #if UNIX 773 #define IsHW(c) 0 774 #else 775 #define IsHW(c) ((unsigned)(c) >= 0x8540 && (unsigned)(c) <= 0x869e) 776 #endif 777 /* ���Х��Ȥ����Х���Ⱦ�Ѥ� */ 778 #define IsHan(c) (Is1B(c) || IsHW(c)) 779 780 /* ���������Τ���Υޥ��� */ 781 #if UNIX 782 #define MkMoji(c1,c2) ((((c1) & 0377) << 8 ) | ((c2) & 0377)) 783 #else /* !UNIX */ 784 #define MkMoji(c1,c2) (((unsigned)(c1) << 8) | (uchar)(c2)) 785 #endif /* !UNIX */ 786 #define MojiK(s) MkMoji(*(s), *((s) + 1)) 787 #define IsKanji1(c) (iskanji(c) && !nokanjimode) 788 #define IsKanji12(c1,c2) (IsKanji1(c1) && iskanji2(c2)) 789 #define IsKanjiMoji(c) (iskanji(Moji_1(c)) && iskanji2(Moji_2(c))) 790 #define IsKanjiStr(s) IsKanji12(*(s), *((s)+1)) 791 #define Moji(s) (IsKanjiStr(s) ? MojiK(s) : *(s)) 792 #if UNIX 793 #define Moji_1(c) (((c) >> 8) & 0xff) 794 #define Moji_2(c) ((c) & 0xff) 795 #else /* !UNIX */ 796 #define Moji_1(c) ((unsigned)(c) >> 8) 797 #define Moji_2(c) ((unsigned)(uchar)(c)) 798 #endif /* !UNIX */ 799 800 /* n �Х����ܤ������Σ��Х����ܤ������å� */ 801 #define NthIsKanji2(s, n) (!nokanjimode && nthctype((char *)(s), (n)) == CT_KJ2) 802 803 /* ʸ����ʸ����˥��åȤ�������ʸ���ΥХ��ȿ����֤��ޥ��� */ 804 #define SetMoji(c, str) (Is1B(c) ? (*(str)=(c), 1) : SetKanji((c), (str))) 805 #define SetMoji_(c, str) (void)(SetMoji(c, str)) 806 807 /* ���Х���ʸ����ʸ����˥��åȤ��������֤��ޥ��� */ 808 #define SetKanji(c, str) (*(str) = Moji_1(c), *((str)+1) = Moji_2(c), 2) 809 #define SetKanji_(c, str) (void)(SetKanji(c, str)) 810 811 /* �ݥ���ʸ���ʤᡢ�Ϥ��ʸ�����֤��ޥ��� */ 812 #define RdMoji(s) (IsKanjiStr(s) ? ((s)+= 2, MojiK((s)- 2)) : *(s)++) 813 814 /* �ݥ���ʸ���ʤ�Ȥ�����֤� */ 815 #define SkipMoji(s) (IsKanjiStr(s) ? (s) + 2 : (s) + 1) 816 817 /* ��ʸ�����ԡ����ơ����줾��Υݥ���ʬ�ʤ�� */ 818 #define MoveMojiAdv(dst, src) do { \ 819 if (IsKanjiStr(src)) \ 820 *(dst)++ = *(src)++; \ 821 *(dst)++ = *(src)++; \ 822 } while (0) 823 824 /* ʸ����κǸ��ʸ����ؤ��ݥ����֤� */ 825 #define StrLast(s) (!*(s) ? (s) : \ 826 nokanjimode ? (s) + strlen((char *)(s)) - 1 : \ 827 (uchar *)jstradv((char *)(s), jstrlen((char *)(s)) - 1)) 828 829 #define StrLastN(s, n) ((n) <= 0 ? (s) : nokanjimode ? (s) + (n) - 1 : \ 830 (uchar *)jstradv((char *)(s), btom((char *)(s), (n)) - 1)) 831 832 #define StrEnd(s) ((s) + strlen((char *)s)) 833 834 835 /* ����ܥ�̾������ */ 836 #define IsSym1(c) (isascii(c) && IsSym1_(c)) 837 #define IsSym2(c) (isascii(c) && IsSym2_(c)) 838 839 #define IsSym1_(c) (isalpha(c) || (c)=='_' || (c)=='$') 840 #define IsSym2_(c) (IsSym1_(c) || isdigit(c)) 841 842 #define IsKSym1(c) (!isascii(c) || IsSym1_(c)) 843 #define IsKSym2(c) (!isascii(c) || IsSym2_(c)) 844 845 #define IsKSym1Str(s) IsKSym1(*(s)) 846 #define IsKSym2Str(s) IsKSym2(*(s)) 847 848 849 /* ʸ������������ */ 850 #define equ(s1, s2) (*(s1) == *(s2) && !strcmp((char *)(s1), (char *)(s2))) 851 #define equ1(s, c) (*(s) == (c) && !*((s)+1)) 852 #define equ2(s, c1, c2) (*(s) == (c1) && *((s)+1) == (c2) && !*((s)+2)) 853 854 #define CutSpace(v) ((v) = SkipSpace(v)) 855 856 857 /*********************** misc util macros *****************************/ 858 859 860 /* ���ĤΥȡ�����äĤ���ޥ��� */ 861 #define _Paste2(z, y) _Paste2_x(z, y) 862 #ifdef __STDC__ 863 #define _Paste2_x(z, y) z##y 864 #else 865 #define _Paste2_x(z, y) z/**/y 866 #endif 867 868 /* �ȡ��������֥륯�����ȤǰϤ�ޥ��� */ 869 #define _Quote(y) _Quote_x(y) 870 #ifdef __STDC__ 871 #define _Quote_x(y) #y 872 #else 873 #define _Quote_x(y) "y" 874 #endif 875 876 877 /* ��ʸ�������ʸ������פǾ��ʬ���� switch */ 878 879 #define switch2(s) switch (strlen(s) >= 2 ? *(s) * 0x100 + *((s)+1) : *(s)) 880 #define case2(c1,c2) case (c1)*0x100+(c2) 881 882 /********* ����¾�Υޥ��� *******/ 883 884 #define SBUFBTM sbufbtm 885 886 #define mada_start_of_line (!lineoverflag && lbv[x] <= bindentp) 887 888 #define VFree(v) do { XFree((voidstar)(v)); v = NULL; } while (0) 889 890 #define ClearRetValue() do { VFree(retvalue.s); retvalue.len = 0; } while (0) 891 #define SetRetValue(p, n) do { \ 892 XFree((voidstar)retvalue.s); \ 893 retvalue.s = (p); \ 894 retvalue.len = (n); \ 895 } while (0) 896 897 /* ʸ�����ѿ��ν������ѿ�̾�� "_s" ���դ���Ƚ���ͤ�����̾�ˤʤ�� 898 * SFree(pfcenter) : pfcenter != pfcenter_s �ΤȤ� XFree(pfcenter) ���롣 899 * SReset(pfcenter) : pfcenter �����ͤ� pfcenter_s �ˤ��롣 900 */ 901 #define SFree(v) do { if ((v) != _Paste2(v, _s)) XFree((voidstar)(v)); } while (0) 902 #define SReset(v) do { \ 903 if ((v) != _Paste2(v, _s)) { \ 904 XFree((voidstar)(v)); \ 905 v = _Paste2(v, _s); \ 906 } \ 907 } while (0) 908 #define Abs(x) ((x) < 0 ? -(x) : (x)) 909 910 #ifndef min 911 #define min(a,b) ((a) <= (b) ? (a) : (b)) 912 #endif 913 #ifndef max 914 #define max(a,b) ((a) >= (b) ? (a) : (b)) 915 #endif 916 917 918 /*************************** Prototypes *************************************/ 919 920 void Terminate ARGS((int exit_status)); 921 void SimpleCommand ARGS((const uchar *cmd)); 922 void PushParam ARGS((int count)); 923 void PopParam ARGS((int countmode)); 924 void SetOFile ARGS((const uchar *name)); 925 void Include ARGS((const uchar *fname, int abs_fname_flg)); 926 927 voidstar XMalloc ARGS((size_t len)); 928 void XFree ARGS((voidstar p)); 929 voidstar XRealloc ARGS((voidstar p, size_t len)); 930 void AllocEnd ARGS((void)); 931 932 void Command ARGS((const uchar *cmds)); 933 int IsSpecialCmd ARGS((const uchar *s)); 934 void EvalReturnExpr ARGS((const uchar *expr, evlev_t evlevel)); 935 uchar *SkipCommandArg ARGS((const uchar *s)); 936 int CheckBlockEnd ARGS((const uchar *src, int n, int contlnflag, const uchar **endp)); 937 uchar *CommandLineEnd ARGS((const uchar *s, int continuedflag)); 938 uchar *GetCommandLine ARGS((int *lenp)); 939 940 void DefineRplStr ARGS((const uchar *str)); 941 void ResetRplList ARGS((rpl_t **rlistpp)); 942 943 void ResetCntrl ARGS((def_t **cntrlp)); 944 def_t *DupCntrl1 ARGS((def_t *org)); 945 def_t *DupCntrl ARGS((def_t *org)); 946 def_t *AddCntrl ARGS((def_t *org, def_t *add)); 947 def_t *RemCntrl ARGS((def_t *org, def_t *rem)); 948 int RemFCntrl ARGS((def_t **cntrlp, def_t *rem)); 949 int ExtractCntrl ARGS((def_t *cntrls, int grp)); 950 int ExtractResetCntrl ARGS((def_t *cntrls, def_t *rescntrls)); 951 int ExtractReputCntrl ARGS((def_t *rescntrl)); 952 void ResetCntrlLists ARGS((void)); 953 void CntrlWrapBefor ARGS((void)); 954 void CntrlWrapAfter ARGS((void)); 955 void ResCntrlPosVects ARGS((void)); 956 void SetCntrlPosVects ARGS((void)); 957 958 void Trans ARGS((void)); 959 void Trans1 ARGS((void)); 960 void MkIndentEnd ARGS((void)); 961 void NewParag ARGS((void)); 962 void NewLine ARGS((void)); 963 void FreshLine ARGS((void)); 964 int IsSpLine ARGS((void)); 965 void InitParag ARGS((void)); 966 void MkIndent ARGS((void)); 967 int IsParagEnd ARGS((void)); 968 void Fill ARGS((void)); 969 int IsNewSentence ARGS((unsigned c)); 970 971 int Replace ARGS((void)); 972 uchar *RplStr ARGS((const uchar *str, int mask)); 973 974 unsigned GetChr ARGS((void)); 975 void UngetChr ARGS((unsigned c)); 976 void UngetN ARGS((const uchar *str, int n)); 977 unsigned LookChr ARGS((void)); 978 void UnlookChrs ARGS((void)); 979 int GetStr ARGS((int n, int gmode)); 980 void UngetStrN ARGS((int n)); 981 void GetSkipSpace ARGS((void)); 982 int GetLine ARGS((void)); 983 void ILineNoCount ARGS((void)); 984 985 void WriteLine ARGS((void)); 986 void Write1 ARGS((int c)); 987 void WriteLineNCol ARGS((int n)); 988 void WriteIndent ARGS((int i)); 989 void WriteNC ARGS((const uchar *p, int n)); 990 void WriteN ARGS((const uchar *p, int n)); 991 void WriteNN ARGS((const uchar *p, int n)); 992 void WriteChr ARGS((unsigned c)); 993 void WriteCntrl ARGS((def_t *cntrl)); 994 void WriteResetCntrl ARGS((def_t *cntrl, def_t *rescntrl)); 995 void WriteNHW ARGS((const uchar *p, int n, int hwmode)); 996 void WriteChrN ARGS((unsigned c, int n)); 997 void WriteTerminate ARGS((void)); 998 void WriteNewLine ARGS((void)); 999 void WritePage ARGS((void)); 1000 void PageSetting ARGS((void)); 1001 void WritePageHeader ARGS((void)); 1002 void WritePageFooter ARGS((void)); 1003 void WriteLineAdj ARGS((void)); 1004 void SetSpAdjPos ARGS((int pos)); 1005 void SetChrExpPos ARGS((int pos, int mode)); 1006 void ResChrExp ARGS((void)); 1007 1008 void PutChr ARGS((unsigned c)); 1009 void PutChr1 ARGS((unsigned c)); 1010 void InitLine ARGS((void)); 1011 void AdjKIKO ARGS((const uchar *s, int n)); 1012 void PutChrN ARGS((unsigned c, int n)); 1013 void DelSpaces ARGS((void)); 1014 void PutStr ARGS((const uchar *str)); 1015 void PutStrN ARGS((const uchar *str, int n)); 1016 void PutCntrl ARGS((def_t *cntrl)); 1017 void PutCntrl1 ARGS((const uchar *p, int len)); 1018 void ReputCntrl ARGS((def_t *cntrl)); 1019 void PutResetCntrl ARGS((def_t *cntrl, def_t *rescntrl)); 1020 int PrevCol ARGS((int col)); 1021 int NextCol ARGS((int col)); 1022 int IsAttribCol ARGS((int col)); 1023 1024 void Wrap ARGS((int wrappos)); 1025 1026 unsigned ANKtoHW ARGS((unsigned ank)); 1027 unsigned HWtoANK ARGS((unsigned hw)); 1028 unsigned HWtoZen ARGS((unsigned hw)); 1029 unsigned ANKtoZen ARGS((unsigned ank)); 1030 unsigned ANKtoZen2 ARGS((unsigned ank, unsigned ank2, unsigned *dakuten)); 1031 unsigned ASCtoZen ARGS((unsigned asc)); 1032 unsigned ZentoASC ARGS((unsigned zen)); 1033 unsigned ZentoANK ARGS((unsigned zen)); 1034 unsigned ZentoANK2 ARGS((unsigned zen, unsigned *dakuten)); 1035 unsigned ChangeANKtoZen ARGS((unsigned ank, unsigned zen)); 1036 1037 int MkRomNum ARGS((uchar *dst, int n, int upperflag)); 1038 int MkNthNum ARGS((uchar *dst, long n)); 1039 int RTrimSpace ARGS((uchar *str)); 1040 int RTrimSpaceN ARGS((uchar *str, int len)); 1041 uchar *SkipSpace ARGS((const uchar *p)); 1042 uchar *BackSkipSpace ARGS((const uchar *s, const uchar *p)); 1043 uchar *SkipSym2 ARGS((const uchar *p)); 1044 uchar *SkipKSym2 ARGS((const uchar *p)); 1045 uchar *SkipAlpha ARGS((const uchar *p)); 1046 uchar *SkipAlnum ARGS((const uchar *p)); 1047 uchar *SkipDigit ARGS((const uchar *p)); 1048 uchar *SkipXDigit ARGS((const uchar *p)); 1049 int StrSpn ARGS((const uchar *src, const uchar *chrs)); 1050 int StrCSpn ARGS((const uchar *src, const uchar *chrs)); 1051 int StrRSpn ARGS((const uchar *src, int len, const uchar *chrs)); 1052 int StrRCSpn ARGS((const uchar *src, int len, const uchar *chrs)); 1053 int CopyStr ARGS((uchar *dst, const uchar *src)); 1054 int CopyStrDiff ARGS((uchar *dst, const uchar *src_s, const uchar *src_e)); 1055 int CopyStrN ARGS((uchar *dst, const uchar *src, int len)); 1056 uchar *DupStr ARGS((const uchar *src)); 1057 uchar *DupStrDiff ARGS((const uchar *src_s, const uchar *src_e)); 1058 uchar *DupStrN ARGS((const uchar *src, int len)); 1059 int StrUpper ARGS((uchar *dst, const uchar *src)); 1060 int StrLower ARGS((uchar *dst, const uchar *src)); 1061 int StrCapitalize ARGS((uchar *dst, const uchar *src)); 1062 int StrCapitalize1 ARGS((uchar *dst, const uchar *src)); 1063 int StrZen ARGS((uchar *dst, const uchar *src)); 1064 int StrZen2 ARGS((uchar *dst, const uchar *src)); 1065 int StrZen3 ARGS((uchar *dst, const uchar *src)); 1066 int StrHan ARGS((uchar *dst, const uchar *src)); 1067 int StrHan2 ARGS((uchar *dst, const uchar *src)); 1068 int StrHan3 ARGS((uchar *dst, const uchar *src)); 1069 int StrJis ARGS((uchar *dst, const uchar *src)); 1070 int StrQuote ARGS((uchar *dst, const uchar *src, int n)); 1071 int StrQuote2 ARGS((uchar *dst, const uchar *src, int n)); 1072 int StrBrace ARGS((uchar *dst, const uchar *src, int n)); 1073 int ReadEscSequence ARGS((uchar *dst, const uchar *src, const uchar **endp)); 1074 int ReadString ARGS((uchar *dst, const uchar *src)); 1075 uchar *SkipStringB ARGS((const uchar *p, int brkchr)); 1076 int ReadStringB ARGS((uchar *dst, const uchar *src, const uchar **endp, int brkchr)); 1077 int ReadStringN ARGS((uchar *dst, const uchar *src, int n)); 1078 unsigned StrNthE ARGS((const uchar *str, int n)); 1079 uchar *PairSearch ARGS((const uchar *p, int lpar, int rpar)); 1080 int SubStr ARGS((uchar *dst, const uchar *src, int len, int start, int n)); 1081 int BSubStr ARGS((uchar *dst, const uchar *src, int len, int start, int n)); 1082 int BIndex ARGS((const uchar *str1, int len1, const uchar *str2, int len2)); 1083 int StrRep ARGS((uchar *dst, const uchar *src, int len, int n)); 1084 int StrFil ARGS((uchar *dst, const uchar *src, int len, int n)); 1085 int StrCommaNum ARGS((uchar *dst, const uchar *src, int len, const uchar *comma, int commalen, int n)); 1086 int StrKanjiNum ARGS((uchar *dst, const uchar *src, int len)); 1087 1088 int IsFuncArgStr ARGS((const uchar *p)); 1089 int EvalExpr ARGS((uchar *dst, const uchar *src, const uchar **endp, evlev_t evlevel)); 1090 int RdNum ARGS((const uchar *src, const uchar **endp)); 1091 exprval_t RdNumber ARGS((const uchar *src, const uchar **endp)); 1092 int WtNum ARGS((uchar *dst, int num)); 1093 int WtNumber ARGS((uchar *dst, exprval_t num)); 1094 int PFormat ARGS((uchar *dst, const uchar *f_fmt, const uchar *valstr, int len)); 1095 int CopyEnvVal ARGS((uchar *dst, const uchar *name)); 1096 int EvalPcForm ARGS((uchar *dst, const uchar *src, const uchar **endp)); 1097 int EvalString ARGS((uchar *dst, const uchar *src)); 1098 int EvalStringB ARGS((uchar *dst, const uchar *src, const uchar **endp, int bflag)); 1099 int EvalStringN ARGS((uchar *dst, const uchar *src, int n)); 1100 int EvalExprStr ARGS((uchar *dst, const uchar *src)); 1101 exprval_t EvalExprVal ARGS((const uchar *src, const uchar **endp, evlev_t evlevel)); 1102 uchar *SkipExpr ARGS((const uchar *src, evlev_t evlevel, skipmode_t skipmode)); 1103 uchar *AEvalExpr ARGS((int *lenp, const uchar *src, const uchar **endp, evlev_t evlevel)); 1104 uchar *AEvalPcForm ARGS((int *lenp, const uchar *src, const uchar **endp)); 1105 uchar *AEvalString ARGS((int *lenp, const uchar *src)); 1106 uchar *AEvalStringB ARGS((int *lenp, const uchar *src, const uchar **endp,int bflag)); 1107 uchar *AEvalStringN ARGS((int *lenp, const uchar *src, int n)); 1108 uchar *AEvalExprStr ARGS((int *lenp, const uchar *src)); 1109 uchar *AReadString ARGS((int *lenp, const uchar *src)); 1110 uchar *AReadStringB ARGS((int *lenp, const uchar *src,const uchar **endp,int brkchr)); 1111 1112 uchar *GetSFVar ARGS((int *lenp, const uchar *name)); 1113 sftype_t GetSFunc ARGS((sffnp_t *fnpp, const uchar *name)); 1114 unsigned GetSysVar ARGS((voidstar *varpp, const uchar *name)); 1115 1116 uchar *GetVar ARGS((const uchar *name, int *lenp)); 1117 void PutVar ARGS((const uchar *name, const uchar *val, int len)); 1118 int CopyArg ARGS((uchar *dst, int n)); 1119 macro_t *GetMacro ARGS((const uchar *name)); 1120 void FreeMargv ARGS((int argc, marg_t *argv)); 1121 int MacroCommand ARGS((const uchar *cmd)); 1122 int FuncMacroCall ARGS((uchar *dst, macro_t *macp, const uchar *args)); 1123 void DefineCommand ARGS((const uchar *src)); 1124 void DoText ARGS((const uchar *src, int len)); 1125 1126 void ExecDosCommand ARGS((const uchar *src)); 1127 1128 void Disp ARGS((int endflag)); 1129 void More ARGS((void)); 1130 void Error ARGS((const uchar *fmt, ...)); 1131 void FError ARGS((const uchar *fmt, ...)); 1132 void Message ARGS((const uchar *fmt, ...)); 1133 1134 void InitCBreak ARGS((void)); 1135 void TermCBreak ARGS((void)); 1136 void ChgStdin ARGS((void)); 1137 void SetModeB ARGS((FILE *fp, int binflag)); 1138 void SetFModeB ARGS((int binflag)); 1139 void SetInMode ARGS((FILE *fp)); 1140 void SetOutMode ARGS((FILE *fp)); 1141 int RawMode ARGS((int flag)); 1142 int IsFileName ARGS((const uchar *s)); 1143 int FileExists ARGS((const uchar *fname)); 1144 uchar *FNameExt ARGS((const uchar *fname)); 1145 uchar *FNameName ARGS((const uchar *fname)); 1146 int FNameHasPath ARGS((const uchar *fname)); 1147 uchar *PathCat ARGS((uchar *path, const uchar *fname)); 1148 uchar *PathFName ARGS((const uchar *path, const uchar *fname)); 1149 uchar *ChgExt ARGS((const uchar *fnam, const uchar *fext)); 1150 int SameFile ARGS((const uchar *fnam1, const uchar *fnam2)); 1151 1152 #if UNIX 1153 int reg_compile ARGS((const char *, int, unsigned int)); 1154 int reg_match ARGS((const char *, int, unsigned int, const char *, int *, struct reg_match_t **)); 1155 int reg_free ARGS((const char *, int, unsigned int)); 1156 #endif 1157 1158 1159 /************************ Global Variables **********************************/ 1160 1161 /* ʸ���� */ 1162 extern uchar nullstr_s[]; 1163 extern uchar esetcmd_s[], *esetcmd, eclrcmd_s[], *eclrcmd; 1164 extern uchar gtkinsoku_s[], *gtkinsoku, gtkinsoku2_s[], *gtkinsoku2; 1165 extern uchar gmkinsoku_s[], *gmkinsoku; 1166 extern uchar prespadjchrs_s[], *prespadjchrs; 1167 extern uchar postspadjchrs_s[], *postspadjchrs; 1168 extern uchar alnum2_s[], *alnum2, itemmark_s[], *itemmark; 1169 extern uchar quotestr_s[], *quotestr; 1170 extern uchar phleft_s[], *phleft, phcenter_s[], *phcenter; 1171 extern uchar phright_s[], *phright; 1172 extern uchar pfleft_s[], *pfleft, pfcenter_s[], *pfcenter; 1173 extern uchar pfright_s[], *pfright; 1174 1175 /* �ѥ��� */ 1176 extern uchar *newpfleft, *newpfcenter, *newpfright; 1177 extern uchar *pagebegin, *pageend; 1178 extern int cmddot_char, cmddot_mchar; 1179 extern uchar *ifilename, *ifilename1, *ofilename, *bakfilename; 1180 extern FILE *ifp, *ofp; 1181 extern uchar *clrcmd1, *clrcmd2; 1182 extern int emode, wrapmode, width, wlmode, wlimit, wkmode, kikosize, fillmode; 1183 extern int spadjlimit; 1184 extern int normadjmode, sjmode, centeradjmode, rightadjmode, bothadjmode; 1185 extern int ajmode; 1186 extern int asmode, almode, aimode, afmode, bindentmode, indent; 1187 extern int ignorelinespmode; 1188 extern int ignoreindentmode, hindentmode, hindent, pindentmode, pindent; 1189 extern int linespmode, splines, quotemode, tabtospmode, itabstop; 1190 extern int sptotabmode, otabstop, szmode, shmode, skmode, snmode, rplmode; 1191 extern int remodeno; 1192 extern int alttabsp; 1193 extern int pagemode, pagelines, phlines, pflines, pagetopsp; 1194 extern int pagebtmmode, pagebtmsp; 1195 extern int pageoffset; 1196 extern int pagestep, absppmode, anktohwmode, vexpmodeno, pmmode, nocntrlmode; 1197 extern int noffmode, nocrmode; 1198 extern int wexpmodeno, sgr98mode, prkikomodeno, prhihomodeno; 1199 extern int oidasimode, kkmode, khmode, kzmode, knmode, kcmode, kemode; 1200 extern int kxmode, kfmode, jtexmode; 1201 extern int binarymode, moremode, moresize, mkbakmode, ofilemode, chgextmode; 1202 extern int debug, delaymode, delaytime; 1203 extern int stdinmode, stdoutmode; 1204 extern int noctrlzmode, plaintextmode, zerolinefeedmode, ssmode; 1205 extern int silentmode, nokanjimode, nountermlinemode, noerrmode; 1206 extern int hanzenconv, zenhanconv; 1207 extern unsigned evalbufsize; 1208 1209 /* ���֥ե饰 */ 1210 extern int solflag, sol2flag, newlineflag, madaindentflag, inindentflag; 1211 extern int linebreak, lineoverflag, nonewlineflag, firstphmadaflag; 1212 extern int pageendflag, pagecutflag, wlimitflag, indentsetflag; 1213 extern int chrexpflag; 1214 extern int nobreakpos, textescapeflag; 1215 extern int intextflag, includeflag; 1216 extern int tmpincludeflag, inmtextflag; 1217 extern int coninmode, conoutmode, prnoutmode, eotflag, resetmadaflag; 1218 extern int vexpflag, wexpflag; 1219 extern int printpagemadaflag, printpageflag; 1220 extern int first_indent; 1221 extern int nevflag; 1222 extern int errorflag; 1223 extern int spacelines, linespaced; 1224 1225 /* ʸ�����ִ����ޥ����ѿ������� */ 1226 extern rpl_t *rlist_top; 1227 extern rpl_t *srlist_top; 1228 extern marg_t *margv; 1229 extern int margc, fargc; 1230 extern strdesc_t retvalue; 1231 extern var_t *varlist, *localvarlist; 1232 extern macro_t *macrolist; 1233 1234 extern uchar *sbuf, *sbufbtm, *sbufp, *ibuf, *ibufp, *lbuf; 1235 extern uchar *lbv[LBVSIZE]; 1236 extern uchar *cbuf, *cbufp; 1237 extern int clength, x; 1238 extern params_t *params; 1239 extern int aindent, bindent, wlrem, morecnt; 1240 extern uchar *bindentp; 1241 extern int pageno, abspageno, pagestepcnt, newpageno, phpfchgflag; 1242 extern unsigned ilineno, nlcount, lineno; 1243 extern unsigned cc, prevc, indentchar; 1244 1245 extern int pagewidth, pagehwmode; 1246 extern def_t *c_terminate, *c_newline, *c_newpage; 1247 extern def_t *c_reset, *c_reset2, *c_areset, *c_vreset, *c_qreset, *c_wreset; 1248 extern def_t *c_hreset, *c_freset, *c_kicode, *c_kocode, *c_hicode, *c_hocode; 1249 extern def_t *c_attr, *c_wide, *c_vexpand, *c_qexpand, *c_half, *c_font; 1250 extern def_t *c_pagefont, *c_pagekicode, *c_pagekocode; 1251 1252 extern jmp_buf errorjb; 1253 1254 extern uchar *xtrenv, *xtrpath, *tmppath, *xtrprog, *xtrver; 1255 1256 /* 1257 * Local variables: 1258 * mode: c 1259 * c-indent-level: 4 1260 * c-continued-statement-offset: 4 1261 * c-brace-offset: -4 1262 * c-argdecl-indent: 4 1263 * c-label-offset: -4 1264 * tab-width: 4 1265 * tab-stop-list: (4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80) 1266 * End: 1267 */ 1268 /***************************** end of xtr.h *********************************/ 1269