|
|
1.1 ! root 1: /* C K C D E B . H */ ! 2: ! 3: /* ! 4: This file is included by all C-Kermit modules, including the modules ! 5: that aren't specific to Kermit (like the command parser and the ck?tio and ! 6: ck?fio modules. It specifies format codes for debug(), tlog(), and similar ! 7: functions, and includes any necessary definitions to be used by all C-Kermit ! 8: modules, and also includes some feature selection compile-time switches, and ! 9: also system- or compiler-dependent definitions, plus #includes and prototypes ! 10: required by all C-Kermit modules. ! 11: */ ! 12: ! 13: /* ! 14: Author: Frank da Cruz ([email protected], [email protected]), ! 15: Columbia University Center for Computing Activities. ! 16: First released January 1985. ! 17: Copyright (C) 1985, 1992, Trustees of Columbia University in the City of New ! 18: York. Permission is granted to any individual or institution to use this ! 19: software as long as it is not sold for profit. This copyright notice must be ! 20: retained. This software may not be included in commercial products without ! 21: written permission of Columbia University. ! 22: */ ! 23: ! 24: /* ! 25: Etymology: The name of this file means "C-Kermit Common-C-Language Debugging ! 26: Header", because originally it contained only the formats (F000-F111) for ! 27: the debug() and tlog() functions. See how it has grown... ! 28: */ ! 29: ! 30: #ifndef CKCDEB_H /* Don't include me more than once. */ ! 31: #define CKCDEB_H ! 32: ! 33: #ifdef OS2 /* For OS/2 debugging */ ! 34: #include "ckoker.h" ! 35: #endif /* OS2 */ ! 36: ! 37: #include <stdio.h> /* Begin by including this. */ ! 38: #include <ctype.h> /* and this. */ ! 39: ! 40: #ifdef MAC ! 41: /* ! 42: * The MAC doesn't use standard stdio routines. ! 43: */ ! 44: #undef getchar ! 45: #undef putchar ! 46: #endif /* MAC */ ! 47: ! 48: /* System-type compilation switches */ ! 49: ! 50: #ifdef FT21 /* Fortune For:Pro 2.1 implies 1.8 */ ! 51: #ifndef FT18 ! 52: #define FT18 ! 53: #endif /* FT18 */ ! 54: #endif /* FT21 */ ! 55: ! 56: #ifdef AIXPS2 /* AIXPS2 implies AIX370 */ ! 57: #ifndef AIX370 ! 58: #define AIX370 ! 59: #endif /* AIX370 */ ! 60: #endif /* AIXPS2 */ ! 61: ! 62: #ifdef AIX370 /* AIX PS/2 or 370 implies BSD4 */ ! 63: #ifndef BSD4 ! 64: #define BSD4 ! 65: #endif /* BSD4 */ ! 66: #endif /* AIX370 */ ! 67: ! 68: #ifdef DGUX540 /* DG UX 5.40 implies Sys V R 4 */ ! 69: #ifndef SVR4 ! 70: #define SVR4 ! 71: #endif /* SVR4 */ ! 72: #endif /* DGUX540 */ ! 73: ! 74: #ifdef SUNOS41 /* SUNOS41 implies SUNOS4 */ ! 75: #ifndef SUNOS4 ! 76: #define SUNOS4 ! 77: #endif /* SUNOS4 */ ! 78: #endif /* SUNOS41 */ ! 79: ! 80: #ifdef SUN4S5 /* Sun-4 System V environment */ ! 81: #ifndef SVR3 /* implies System V R3 or later */ ! 82: #define SVR3 ! 83: #endif /* SVR3 */ ! 84: #endif /* SUN4S5 */ ! 85: ! 86: #ifdef MIPS /* MIPS System V environment */ ! 87: #ifndef SVR3 /* implies System V R3 or later */ ! 88: #define SVR3 ! 89: #endif /* SVR3 */ ! 90: #endif /* MIPS */ ! 91: ! 92: /* ! 93: 4.4BSD is a mixture of System V R4, POSIX, and 4.3BSD. ! 94: */ ! 95: #ifdef BSD44 /* 4.4 BSD */ ! 96: #ifndef SVR4 /* BSD44 implies SVR4 */ ! 97: #define SVR4 ! 98: #endif /* SVR4 */ ! 99: #ifndef NOSETBUF /* NOSETBUF is safe */ ! 100: #define NOSETBUF ! 101: #endif /* NOSETBUF */ ! 102: #ifndef DIRENT /* Uses <dirent.h> */ ! 103: #define DIRENT ! 104: #endif /* DIRENT */ ! 105: #endif /* BSD44 */ ! 106: ! 107: #ifdef SVR3 /* SVR3 implies ATTSV */ ! 108: #ifndef ATTSV ! 109: #define ATTSV ! 110: #endif /* ATTSV */ ! 111: #endif /* SVR3 */ ! 112: ! 113: #ifdef SVR4 /* SVR4 implies ATTSV */ ! 114: #ifndef ATTSV ! 115: #define ATTSV ! 116: #endif /* ATTSV */ ! 117: #ifndef SVR3 /* ...as well as SVR3 */ ! 118: #define SVR3 ! 119: #endif /* SVR3 */ ! 120: #endif /* SVR4 */ ! 121: ! 122: #ifdef UTSV /* UTSV implies ATTSV */ ! 123: #ifndef ATTSV ! 124: #define ATTSV ! 125: #endif /* ATTSV */ ! 126: #endif /* UTSV */ ! 127: ! 128: #ifdef XENIX /* XENIX implies ATTSV */ ! 129: #ifndef ATTSV ! 130: #define ATTSV ! 131: #endif /* ATTSV */ ! 132: #endif /* XENIX */ ! 133: ! 134: #ifdef AUX /* AUX implies ATTSV */ ! 135: #ifndef ATTSV ! 136: #define ATTSV ! 137: #endif /* ATTSV */ ! 138: #endif /* AUX */ ! 139: ! 140: #ifdef ATT7300 /* ATT7300 implies ATTSV */ ! 141: #ifndef ATTSV ! 142: #define ATTSV ! 143: #endif /* ATTSV */ ! 144: #endif /* ATT7300 */ ! 145: ! 146: #ifdef ATT6300 /* ATT6300 implies ATTSV */ ! 147: #ifndef ATTSV ! 148: #define ATTSV ! 149: #endif /* ATTSV */ ! 150: #endif /* ATT6300 */ ! 151: ! 152: #ifdef HPUX /* HPUX implies ATTSV */ ! 153: #ifndef ATTSV ! 154: #define ATTSV ! 155: #endif /* ATTSV */ ! 156: #endif /* HPUX */ ! 157: ! 158: #ifdef ISIII /* ISIII implies ATTSV */ ! 159: #ifndef ATTSV ! 160: #define ATTSV ! 161: #endif /* ATTSV */ ! 162: #endif /* ISIII */ ! 163: ! 164: #ifdef NEXT /* NEXT implies BSD4 */ ! 165: #ifndef BSD4 ! 166: #define BSD4 ! 167: #endif /* BSD4 */ ! 168: #endif /* NEXT */ ! 169: ! 170: #ifdef SUNOS4 /* SUNOS4 implies BSD4 */ ! 171: #ifndef BSD4 ! 172: #define BSD4 ! 173: #endif /* BSD4 */ ! 174: #endif /* SUNOS4 */ ! 175: ! 176: #ifdef BSD41 /* BSD41 implies BSD4 */ ! 177: #ifndef BSD4 ! 178: #define BSD4 ! 179: #endif /* BSD4 */ ! 180: #endif /* BSD41 */ ! 181: ! 182: #ifdef BSD43 /* BSD43 implies BSD4 */ ! 183: #ifndef BSD4 ! 184: #define BSD4 ! 185: #endif /* BSD4 */ ! 186: #endif /* BSD43 */ ! 187: ! 188: #ifdef BSD4 /* BSD4 implies ANYBSD */ ! 189: #ifndef ANYBSD ! 190: #define ANYBSD ! 191: #endif /* ANYBSD */ ! 192: #endif /* BSD4 */ ! 193: ! 194: #ifdef BSD29 /* BSD29 implies ANYBSD */ ! 195: #ifndef ANYBSD ! 196: #define ANYBSD ! 197: #endif /* ANYBSD */ ! 198: #endif /* BSD29 */ ! 199: ! 200: #ifdef ATTSV /* ATTSV implies UNIX */ ! 201: #ifndef UNIX ! 202: #define UNIX ! 203: #endif /* UNIX */ ! 204: #endif /* ATTSV */ ! 205: ! 206: #ifdef ANYBSD /* ANYBSD implies UNIX */ ! 207: #ifndef UNIX ! 208: #define UNIX ! 209: #endif /* UNIX */ ! 210: #endif /* ANYBSD */ ! 211: ! 212: #ifdef POSIX /* POSIX implies UNIX */ ! 213: #ifndef UNIX ! 214: #define UNIX ! 215: #endif /* UNIX */ ! 216: #ifndef DIRENT /* and DIRENT, i.e. <dirent.h> */ ! 217: #ifndef SDIRENT ! 218: #define DIRENT ! 219: #endif /* SDIRENT */ ! 220: #endif /* DIRENT */ ! 221: #ifndef NOFILEH /* POSIX doesn't use <sys/file.h> */ ! 222: #define NOFILEH ! 223: #endif /* NOFILEH */ ! 224: #endif /* POSIX */ ! 225: ! 226: #ifdef V7 ! 227: #ifndef UNIX ! 228: #define UNIX ! 229: #endif /* UNIX */ ! 230: #endif /* V7 */ ! 231: ! 232: #ifdef COHERENT ! 233: #ifndef UNIX ! 234: #define UNIX ! 235: #endif /* UNIX */ ! 236: #endif /* COHERENT */ ! 237: ! 238: #ifdef MINIX ! 239: #ifndef UNIX ! 240: #define UNIX ! 241: #endif /* UNIX */ ! 242: #endif /* MINIX */ ! 243: /* ! 244: The symbol SVORPOSIX is defined for both AT&T and POSIX compilations ! 245: to make it easier to select items that System V and POSIX have in common, ! 246: but which BSD, V7, etc, do not have. ! 247: */ ! 248: #ifdef ATTSV ! 249: #ifndef SVORPOSIX ! 250: #define SVORPOSIX ! 251: #endif /* SVORPOSIX */ ! 252: #endif /* ATTSV */ ! 253: ! 254: #ifdef POSIX ! 255: #ifndef SVORPOSIX ! 256: #define SVORPOSIX ! 257: #endif /* SVORPOSIX */ ! 258: #endif /* POSIX */ ! 259: ! 260: /* ! 261: The symbol SVR4ORPOSIX is defined for both AT&T System V R4 and POSIX ! 262: compilations to make it easier to select items that System V R4 and POSIX ! 263: have in common, but which BSD, V7, and System V R3 and earlier, etc, do ! 264: not have. ! 265: */ ! 266: #ifdef POSIX ! 267: #ifndef SVR4ORPOSIX ! 268: #define SVR4ORPOSIX ! 269: #endif /* SVR4ORPOSIX */ ! 270: #endif /* POSIX */ ! 271: #ifdef SVR4 ! 272: #ifndef SVR4ORPOSIX ! 273: #define SVR4ORPOSIX ! 274: #endif /* SVR4ORPOSIX */ ! 275: #endif /* SVR4 */ ! 276: ! 277: /* ! 278: The symbol BSD44ORPOSIX is defined for both 4.4BSD and POSIX compilations ! 279: to make it easier to select items that 4.4BSD and POSIX have in common, ! 280: but which System V, BSD, V7, etc, do not have. ! 281: */ ! 282: #ifdef BSD44 ! 283: #ifndef BSD44ORPOSIX ! 284: #define BSD44ORPOSIX ! 285: #endif /* BSD44ORPOSIX */ ! 286: #endif /* BSD44 */ ! 287: ! 288: #ifdef POSIX ! 289: #ifndef BSD44ORPOSIX ! 290: #define BSD44ORPOSIX ! 291: #endif /* BSD44ORPOSIX */ ! 292: #endif /* POSIX */ ! 293: ! 294: #ifdef apollo /* May be ANSI-C, check further */ ! 295: #ifdef __STDCPP__ ! 296: #define CK_ANSIC /* Yes, this is real ANSI-C */ ! 297: #define SIG_V ! 298: #else ! 299: #define NOANSI /* Nope, not ANSI */ ! 300: #undef __STDC__ /* Even though it say it is! */ ! 301: #define SIG_I ! 302: #endif /* __STDCPP__ */ ! 303: #endif /* apollo */ ! 304: ! 305: #ifdef POSIX /* -DPOSIX on cc command line */ ! 306: #ifndef _POSIX_SOURCE /* Implies _POSIX_SOURCE */ ! 307: #define _POSIX_SOURCE ! 308: #endif /* _POSIX_SOURCE */ ! 309: #endif /* POSIX */ ! 310: ! 311: /* ! 312: ANSI C? That is, do we have function prototypes, new-style ! 313: function declarations, and parameter type checking and coercion? ! 314: */ ! 315: #ifdef MAC /* MPW C is ANSI */ ! 316: #ifndef NOANSI ! 317: #ifndef CK_ANSIC ! 318: #define CK_ANSIC ! 319: #endif /* CK_ANSIC */ ! 320: #endif /* NOANSI */ ! 321: #endif /* MAC */ ! 322: ! 323: #ifndef NOANSI ! 324: #ifdef __STDC__ /* __STDC__ means ANSI C */ ! 325: #ifndef CK_ANSIC ! 326: #define CK_ANSIC ! 327: #endif /* CK_ANSIC */ ! 328: #endif /* __STDC__ */ ! 329: #endif /* NOANSI */ ! 330: /* ! 331: _PROTOTYP() is used for forward declarations of functions so we can have ! 332: parameter and return value type checking if the compiler offers it. ! 333: __STDC__ should be defined by the compiler only if function prototypes are ! 334: allowed. Otherwise, we get old-style forward declarations. Our own private ! 335: CK_ANSIC symbol tells whether we use ANSI C prototypes. To force use of ! 336: ANSI prototypes, include -DCK_ANSIC on the cc command line. To disable the ! 337: use of ANSI prototypes, include -DNOANSI. ! 338: */ ! 339: #ifdef CK_ANSIC ! 340: #define _PROTOTYP( func, parms ) func parms ! 341: #else /* Not ANSI C */ ! 342: #define _PROTOTYP( func, parms ) func() ! 343: #endif /* CK_ANSIC */ ! 344: ! 345: /* ! 346: Altos-specific items: 486, 586, 986 models... ! 347: */ ! 348: #ifdef A986 ! 349: #define M_VOID ! 350: #define void int ! 351: #define CHAR char ! 352: #define SIG_I ! 353: #endif /* A986 */ ! 354: ! 355: /* Void type */ ! 356: ! 357: #ifndef VOID /* Used throughout all C-Kermit */ ! 358: #ifdef CK_ANSIC /* modules... */ ! 359: #define VOID void ! 360: #else ! 361: #define VOID int ! 362: #endif /* CK_ANSIC */ ! 363: #endif /* VOID */ ! 364: ! 365: /* Signal type */ ! 366: ! 367: #ifndef SIG_V /* signal() type, if not def'd yet */ ! 368: #ifndef SIG_I ! 369: #ifdef OS2 ! 370: #define SIG_V ! 371: #else ! 372: #ifdef POSIX ! 373: #define SIG_V ! 374: #else ! 375: #ifdef SVR3 /* System V R3 and later */ ! 376: #define SIG_V ! 377: #else ! 378: #ifdef SUNOS4 /* SUNOS V 4.0 and later */ ! 379: #ifndef sun386 ! 380: #define SIG_V ! 381: #else ! 382: #define SIG_I ! 383: #endif /* sun386 */ ! 384: #else ! 385: #ifdef NEXT /* NeXT */ ! 386: #define SIG_V ! 387: #else ! 388: #ifdef AIX370 ! 389: #define SIG_V ! 390: #define SIGTYP __SIGVOID /* AIX370 */ ! 391: #else ! 392: #define SIG_I ! 393: #endif /* AIX370 */ ! 394: #endif /* NEXT */ ! 395: #endif /* SUNOS4 */ ! 396: #endif /* SVR3 */ ! 397: #endif /* POSIX */ ! 398: #endif /* OS2 */ ! 399: #endif /* SIG_I */ ! 400: #endif /* SIG_V */ ! 401: ! 402: #ifdef SIG_I ! 403: #define SIGRETURN return(0) ! 404: #ifndef SIGTYP ! 405: #define SIGTYP int ! 406: #endif /* SIGTYP */ ! 407: #endif /* SIG_I */ ! 408: ! 409: #ifdef SIG_V ! 410: #define SIGRETURN return ! 411: #ifndef SIGTYP ! 412: #define SIGTYP void ! 413: #endif /* SIGTYP */ ! 414: #endif /* SIG_V */ ! 415: ! 416: #ifndef SIGTYP ! 417: #define SIGTYP int ! 418: #endif /* SIGTYP */ ! 419: ! 420: #ifndef SIGRETURN ! 421: #define SIGRETURN return(0) ! 422: #endif /* SIGRETURN */ ! 423: ! 424: /* We want all characters to be unsigned if the compiler supports it */ ! 425: ! 426: #ifdef PROVX1 ! 427: typedef char CHAR; ! 428: /* typedef long LONG; */ ! 429: typedef int void; ! 430: #else ! 431: #ifdef MINIX ! 432: typedef unsigned char CHAR; ! 433: #else ! 434: #ifdef V7 ! 435: typedef char CHAR; ! 436: #else ! 437: #ifdef C70 ! 438: typedef char CHAR; ! 439: /* typedef long LONG; */ ! 440: #else ! 441: #ifdef BSD29 ! 442: typedef char CHAR; ! 443: /* typedef long LONG; */ ! 444: #else ! 445: #ifdef datageneral ! 446: #define CHAR unsigned char /* 3.22 compiler */ ! 447: #else ! 448: #ifdef CHAR ! 449: #undef CHAR ! 450: #endif /* CHAR */ ! 451: typedef unsigned char CHAR; ! 452: #endif /* datageneral */ ! 453: #endif /* BSD29 */ ! 454: #endif /* C70 */ ! 455: #endif /* V7 */ ! 456: #endif /* MINIX */ ! 457: #endif /* PROVX1 */ ! 458: ! 459: /* ! 460: Debug and transaction logging is included automatically unless you define ! 461: NODEBUG or NOTLOG. Do this if you want to save the space and overhead. ! 462: (Note, in version 4F these definitions changed from "{}" to the null string ! 463: to avoid problems with semicolons after braces, as in: "if (x) tlog(this); ! 464: else tlog(that);" ! 465: */ ! 466: #ifndef NODEBUG ! 467: #ifndef DEBUG ! 468: #define DEBUG ! 469: #endif /* DEBUG */ ! 470: #else ! 471: #ifdef DEBUG ! 472: #undef DEBUG ! 473: #endif /* DEBUG */ ! 474: #endif /* NODEBUG */ ! 475: ! 476: #ifndef NOTLOG ! 477: #ifndef TLOG ! 478: #define TLOG ! 479: #endif /* TLOG */ ! 480: #endif /* NOTLOG */ ! 481: ! 482: /* debug() macro style selection. */ ! 483: ! 484: #ifdef MAC ! 485: #ifndef IFDEBUG ! 486: #define IFDEBUG ! 487: #endif /* IFDEBUG */ ! 488: #endif /* MAC */ ! 489: ! 490: #ifdef OS2 ! 491: #ifndef IFDEBUG ! 492: #define IFDEBUG ! 493: #endif /* IFDEBUG */ ! 494: #endif /* OS2 */ ! 495: ! 496: #ifndef DEBUG ! 497: /* Compile all the debug() statements away. Saves a lot of space and time. */ ! 498: #define debug(a,b,c,d) ! 499: #else ! 500: #ifndef CKCMAI ! 501: /* Debugging included. Declare debug log flag in main program only. */ ! 502: extern int deblog; ! 503: #endif /* CKCMAI */ ! 504: /* Now define the debug() macro. */ ! 505: #ifdef IFDEBUG ! 506: /* Use this form to avoid function calls: */ ! 507: #define debug(a,b,c,d) if (deblog) dodebug(a,b,(char *)c,(long)d) ! 508: #else ! 509: /* Use this form to save space: */ ! 510: #define debug(a,b,c,d) dodebug(a,b,(char *)c,(long)d) ! 511: #endif /* MAC */ ! 512: _PROTOTYP(int dodebug,(int, char *, char *, long)); ! 513: #endif /* DEBUG */ ! 514: ! 515: #ifndef TLOG ! 516: #define tlog(a,b,c,d) ! 517: #else ! 518: _PROTOTYP(VOID tlog,(int, char *, char *, long)); ! 519: #endif /* TLOG */ ! 520: ! 521: /* Formats for debug() and tlog() */ ! 522: ! 523: #define F000 0 ! 524: #define F001 1 ! 525: #define F010 2 ! 526: #define F011 3 ! 527: #define F100 4 ! 528: #define F101 5 ! 529: #define F110 6 ! 530: #define F111 7 ! 531: ! 532: /* Kermit feature selection */ ! 533: ! 534: #ifdef MAC /* For Macintosh, no escape */ ! 535: #define NOPUSH /* to operating system */ ! 536: #endif /* MAC */ ! 537: ! 538: #ifdef UNIX ! 539: #ifndef NOPARSEN ! 540: #define PARSENSE /* Automatic parity detection */ ! 541: #endif /* NOPARSEN */ ! 542: #endif /* UNIX */ /* for Unix */ ! 543: ! 544: #ifdef VMS /* ... and VMS */ ! 545: #ifndef NOPARSEN ! 546: #define PARSENSE ! 547: #endif /* NOPARSEN */ ! 548: #endif /* VMS */ ! 549: ! 550: #ifdef MAC /* and Macintosh */ ! 551: #ifndef NOPARSEN ! 552: #define PARSENSE ! 553: #endif /* NOPARSEN */ ! 554: #endif /* MAC */ ! 555: ! 556: #ifdef VMS /* Use dynamic memory allocation */ ! 557: #ifndef DYNAMIC ! 558: #define DYNAMIC /* in VMS version. */ ! 559: #endif /* DYNAMIC */ ! 560: #endif /* VMS */ ! 561: ! 562: #ifndef CK_LBRK /* Can send Long BREAK */ ! 563: ! 564: #ifdef UNIX /* (everybody but OS-9) */ ! 565: #define CK_LBRK ! 566: #endif /* UNIX */ ! 567: #ifdef VMS ! 568: #define CK_LBRK ! 569: #endif /* VMS */ ! 570: #ifdef datageneral ! 571: #define CK_LBRK ! 572: #endif /* datageneral */ ! 573: #ifdef GEMDOS ! 574: #define CK_LBRK ! 575: #endif /* GEMDOS */ ! 576: #ifdef OS2 ! 577: #define CK_LBRK ! 578: #endif /* OS2 */ ! 579: #ifdef AMIGA ! 580: #define CK_LBRK ! 581: #endif /* AMIGA */ ! 582: ! 583: #endif /* CK_LBRK */ ! 584: ! 585: /* Carrier treatment */ ! 586: /* These are defined here because they are shared by the system dependent */ ! 587: /* and the system independent modules. */ ! 588: ! 589: #define CAR_OFF 0 /* On: heed carrier always, except during DIAL. */ ! 590: #define CAR_ON 1 /* Off: ignore carrier always. */ ! 591: #define CAR_AUT 2 /* Auto: heed carrier, but only if line is declared */ ! 592: /* to be a modem line, and only during CONNECT. */ ! 593: ! 594: /* Hangup by modem command supported by default */ ! 595: ! 596: #ifndef NODIAL ! 597: #ifndef NOMDMHUP ! 598: #ifndef MDMHUP ! 599: #define MDMHUP ! 600: #endif /* MDMHUP */ ! 601: #endif /* NOMDMHUP */ ! 602: #endif /* NODIAL */ ! 603: ! 604: /* Types of flow control available */ ! 605: ! 606: #define CK_XONXOFF /* Everybody can do this, right? */ ! 607: ! 608: #ifdef AMIGA /* Commodore Amiga */ ! 609: #define CK_RTSCTS /* has RTS/CTS */ ! 610: #endif /* AMIGA */ ! 611: ! 612: #ifdef SUN4S5 /* SunOS in System V environment */ ! 613: #define CK_RTSCTS ! 614: #else /* SunOS 4.0/4.1 in BSD environment */ ! 615: #ifdef SUNOS4 /* SunOS 4.0+later supports RTS/CTS */ ! 616: #ifdef SUNOS41 /* Easy in 4.1 and later */ ! 617: #define CK_RTSCTS ! 618: #else /* Harder in 4.0 */ ! 619: #ifndef __GNUC__ /* (see tthflow() in ckutio.c) */ ! 620: #ifndef GNUC ! 621: #define CK_RTSCTS /* Only if not using GNU gcc */ ! 622: #endif /* __GNUC__ */ ! 623: #endif /* GNUC */ ! 624: #endif /* SUNOS41 */ ! 625: #endif /* SUNOS4 */ ! 626: #endif /* SUN4S5 */ ! 627: ! 628: #ifdef BSD44 /* And in 4.4 BSD */ ! 629: #define CK_RTSCTS ! 630: #endif /* BSD44 */ ! 631: ! 632: #ifdef TERMIOX /* Sys V R4 <termiox.h> */ ! 633: #define CK_RTSCTS /* has RTS/CTS */ ! 634: #define CK_DTRCD /* and DTR/CD */ ! 635: #endif /* TERMIOX */ ! 636: #ifdef STERMIOX /* Sys V R4 <sys/termiox.h> */ ! 637: #define CK_RTSCTS /* Ditto. */ ! 638: #define CK_DTRCD ! 639: #endif /* STERMIOX */ ! 640: ! 641: /* ! 642: Systems where we can expand tilde at the beginning of file or directory names ! 643: */ ! 644: #ifdef POSIX ! 645: #ifndef DTILDE ! 646: #define DTILDE ! 647: #endif /* DTILDE */ ! 648: #endif /* POSIX */ ! 649: #ifdef BSD4 ! 650: #ifndef DTILDE ! 651: #define DTILDE ! 652: #endif /* DTILDE */ ! 653: #endif /* BSD4 */ ! 654: #ifdef ATTSV ! 655: #ifndef DTILDE ! 656: #define DTILDE ! 657: #endif /* DTILDE */ ! 658: #endif /* ATTSV */ ! 659: #ifdef OSK ! 660: #ifndef DTILDE ! 661: #define DTILDE ! 662: #endif /* DTILDE */ ! 663: #endif /* OSK */ ! 664: #ifdef HPUX /* I don't know why this is */ ! 665: #ifndef DTILDE /* necessary, since -DHPUX */ ! 666: #define DTILDE /* automatically defines ATTSV */ ! 667: #endif /* DTILDE */ /* (see above) ... */ ! 668: #endif /* HPUX */ ! 669: ! 670: /* Line delimiter for text files */ ! 671: ! 672: /* ! 673: If the system uses a single character for text file line delimitation, ! 674: define NLCHAR to the value of that character. For text files, that ! 675: character will be converted to CRLF upon output, and CRLF will be converted ! 676: to that character on input during text-mode (default) packet operations. ! 677: */ ! 678: #ifdef MAC /* Macintosh */ ! 679: #define NLCHAR 015 ! 680: #else ! 681: #ifdef OSK /* OS-9/68K */ ! 682: #define NLCHAR 015 ! 683: #else /* All Unix-like systems */ ! 684: #define NLCHAR 012 ! 685: #endif /* OSK */ ! 686: #endif /* MAC */ ! 687: ! 688: /* ! 689: At this point, if there's a system that uses ordinary CRLF line ! 690: delimitation AND the C compiler actually returns both the CR and ! 691: the LF when doing input from a file, then #undef NLCHAR. ! 692: */ ! 693: #ifdef OS2 /* OS/2 */ ! 694: #undef NLCHAR ! 695: #endif /* OS2 */ ! 696: ! 697: #ifdef GEMDOS /* Atari ST */ ! 698: #undef NLCHAR ! 699: #endif /* GEMDOS */ ! 700: ! 701: /* ! 702: VMS file formats are so complicated we need to do all the conversion ! 703: work in the CKVFIO module, so we tell the rest of C-Kermit not to fiddle ! 704: with the bytes. ! 705: */ ! 706: ! 707: #ifdef vms ! 708: #undef NLCHAR ! 709: #endif /* vms */ ! 710: ! 711: /* The device name of a job's controlling terminal */ ! 712: /* Special for VMS, same for all Unixes (?), not used by Macintosh */ ! 713: ! 714: #ifdef vms ! 715: #define CTTNAM "TT:" ! 716: #else ! 717: #ifdef datageneral ! 718: #define CTTNAM "@output" ! 719: #else ! 720: #ifdef OSK ! 721: extern char myttystr[]; ! 722: #define CTTNAM myttystr ! 723: #else ! 724: #ifdef OS2 ! 725: #define CTTNAM "con" ! 726: #else ! 727: #ifdef UNIX ! 728: #define CTTNAM "/dev/tty" ! 729: #else ! 730: #ifdef GEMDOS ! 731: #define CTTNAM "aux:" ! 732: #else /* Anyone else... */ ! 733: #define CTTNAM "stdout" /* This is a kludge used by Mac */ ! 734: #endif /* GEMDOS */ ! 735: #endif /* UNIX */ ! 736: #endif /* OS2 */ ! 737: #endif /* OSK */ ! 738: #endif /* datageneral */ ! 739: #endif /* vms */ ! 740: ! 741: #ifdef SUNS4S5 ! 742: #define tolower _tolower ! 743: #define toupper _toupper ! 744: #endif /* SUNS4S5 */ ! 745: ! 746: /* Error number */ ! 747: ! 748: #ifndef VMS ! 749: #ifndef OS2 ! 750: /* ! 751: The following declaration causes problems for VMS and OS/2, in which ! 752: errno is an "extern volatile int noshare"... ! 753: */ ! 754: extern int errno; /* Needed by most modules. */ ! 755: #endif /* OS2 */ ! 756: #endif /* VMS */ ! 757: ! 758: /* File System Defaults */ ! 759: ! 760: #ifdef VMS ! 761: #define DBLKSIZ 512 ! 762: #define DLRECL 512 ! 763: #else ! 764: #define DBLKSIZ 0 ! 765: #define DLRECL 0 ! 766: #endif ! 767: ! 768: /* Program return codes for DECUS C and UNIX (VMS uses UNIX codes) */ ! 769: ! 770: #ifdef decus ! 771: #define GOOD_EXIT IO_NORMAL ! 772: #define BAD_EXIT IO_ERROR ! 773: #else ! 774: #define GOOD_EXIT 0 ! 775: #define BAD_EXIT 1 ! 776: #endif /* decus */ ! 777: ! 778: /* Special hack for Fortune, which doesn't have <sys/file.h>... */ ! 779: ! 780: #ifdef FT18 ! 781: #define FREAD 0x01 ! 782: #define FWRITE 0x10 ! 783: #endif /* FT18 */ ! 784: ! 785: /* Special hack for OS-9/68k */ ! 786: #ifdef OSK ! 787: #define SIGALRM 30 /* May always cancel I/O */ ! 788: #define SIGARB 1234 /* Arbitrary for I/O */ ! 789: SIGTYP (*signal())(); ! 790: #endif /* OSK */ ! 791: ! 792: #ifdef OS2 ! 793: #ifdef putchar /* MSC 5.1 simply uses a macro which causes */ ! 794: #undef putchar /* no problems. */ ! 795: #endif /* putchar */ ! 796: #endif /* OS2 */ ! 797: ! 798: #ifdef MINIX ! 799: #ifdef putchar ! 800: #undef putchar ! 801: #endif /* putchar */ ! 802: #define putchar(c) {putc(c,stdout);fflush(stdout);} ! 803: #endif /* MINIX */ ! 804: ! 805: /* Escape/quote character used by the command parser */ ! 806: ! 807: #define CMDQ '\\' ! 808: ! 809: /* Symbols for RS-232 modem signals */ ! 810: ! 811: #define KM_FG 1 /* Frame ground */ ! 812: #define KM_TXD 2 /* Transmit */ ! 813: #define KM_RXD 3 /* Receive */ ! 814: #define KM_RTS 4 /* Request to Send */ ! 815: #define KM_CTS 5 /* Clear to Send */ ! 816: #define KM_DSR 6 /* Data Set Ready */ ! 817: #define KM_SG 7 /* Signal ground */ ! 818: #define KM_DCD 8 /* Carrier Detect */ ! 819: #define KM_DTR 20 /* Data Terminal Ready */ ! 820: #define KM_RI 22 /* Ring Indication */ ! 821: ! 822: /* Bit mask values for modem signals */ ! 823: ! 824: #define BM_CTS 0001 /* Clear to send (From DCE) */ ! 825: #define BM_DSR 0002 /* Dataset ready (From DCE) */ ! 826: #define BM_DCD 0004 /* Carrier (From DCE) */ ! 827: #define BM_RNG 0010 /* Ring Indicator (From DCE) */ ! 828: #define BM_DTR 0020 /* Data Terminal Ready (From DTE) */ ! 829: #define BM_RTS 0040 /* Request to Send (From DTE) */ ! 830: ! 831: /* Codes for full duplex flow control */ ! 832: ! 833: #define FLO_NONE 0 /* None */ ! 834: #define FLO_XONX 1 /* Xon/Xoff (soft) */ ! 835: #define FLO_RTSC 2 /* RTS/CTS (hard) */ ! 836: #define FLO_DTRC 3 /* DTR/CD (hard) */ ! 837: #define FLO_ETXA 4 /* ETX/ACK (soft) */ ! 838: #define FLO_STRG 5 /* String-based (soft) */ ! 839: #define FLO_DIAL 6 /* DIALing kludge */ ! 840: #define FLO_DIAX 7 /* Cancel dialing kludge */ ! 841: #define FLO_DTRT 8 /* DTR/CTS (hard) */ ! 842: #define FLO_KEEP 9 /* Keep, i.e. don't touch or change */ ! 843: ! 844: /* And finally... */ ! 845: ! 846: #ifdef COMMENT /* Make sure this is NOT defined! */ ! 847: #undef COMMENT ! 848: #endif /* COMMENT */ ! 849: ! 850: /* Structure definitions for Kermit file attributes */ ! 851: /* All strings come as pointer and length combinations */ ! 852: /* Empty string (or for numeric variables, -1) = unused attribute. */ ! 853: ! 854: struct zstr { /* string format */ ! 855: int len; /* length */ ! 856: char *val; /* value */ ! 857: }; ! 858: struct zattr { /* Kermit File Attribute structure */ ! 859: long lengthk; /* (!) file length in K */ ! 860: struct zstr type; /* (") file type (text or binary) */ ! 861: struct zstr date; /* (#) file creation date yyyymmdd[ hh:mm[:ss]] */ ! 862: struct zstr creator; /* ($) file creator id */ ! 863: struct zstr account; /* (%) file account */ ! 864: struct zstr area; /* (&) area (e.g. directory) for file */ ! 865: struct zstr passwd; /* (') password for area */ ! 866: long blksize; /* (() file blocksize */ ! 867: struct zstr access; /* ()) file access: new, supersede, append, warn */ ! 868: struct zstr encoding; /* (*) encoding (transfer syntax) */ ! 869: struct zstr disp; /* (+) disposition (mail, message, print, etc) */ ! 870: struct zstr lprotect; /* (,) protection (local syntax) */ ! 871: struct zstr gprotect; /* (-) protection (generic syntax) */ ! 872: struct zstr systemid; /* (.) ID for system of origin */ ! 873: struct zstr recfm; /* (/) record format */ ! 874: struct zstr sysparam; /* (0) system-dependent parameter string */ ! 875: long length; /* (1) exact length on system of origin */ ! 876: struct zstr charset; /* (2) transfer syntax character set */ ! 877: struct zstr reply; /* This goes last, used for attribute reply */ ! 878: }; ! 879: ! 880: /* Kermit file information structure */ ! 881: ! 882: struct filinfo { ! 883: int bs; /* Blocksize */ ! 884: int cs; /* Character set */ ! 885: long rl; /* Record length */ ! 886: int org; /* Organization */ ! 887: int fmt; /* Record format */ ! 888: int cc; /* Carriage control */ ! 889: int typ; /* Type (text/binary) */ ! 890: int dsp; /* Disposition */ ! 891: char *os_specific; /* OS-specific attributes */ ! 892: unsigned int lblopts; /* LABELED FILE options bitmask */ ! 893: }; ! 894: ! 895: /* VMS values for LABELED FILE options bitmask */ ! 896: ! 897: #ifdef VMS ! 898: #define LBL_NAM 1 /* Ignore incoming name if set */ ! 899: #define LBL_PTH 2 /* Use complete path if set */ ! 900: #define LBL_ACL 4 /* Preserve ACLs if set */ ! 901: #define LBL_BCK 8 /* Preserve backup date if set */ ! 902: #define LBL_OWN 16 /* Preserve ownership if set */ ! 903: #endif /* VMS */ ! 904: ! 905: /* ! 906: Data types. First the header file for data types so we can pick up the ! 907: types used for pids, uids, and gids. Override this section by putting ! 908: -DCKTYP_H=xxx on the command line to specify the header file where your ! 909: system defines these types. ! 910: */ ! 911: #ifdef OSK /* OS-9 */ ! 912: #include <types.h> ! 913: #else /* General case, not OS-9 */ ! 914: #ifndef CKTYP_H ! 915: #ifndef VMS ! 916: #ifndef MAC ! 917: #ifndef AMIGA ! 918: #define CKTYP_H <sys/types.h> ! 919: #endif /* AMIGA */ ! 920: #endif /* MAC */ ! 921: #endif /* VMS */ ! 922: #endif /* CKTYP_H */ ! 923: ! 924: #ifdef GEMDOS ! 925: #undef CKTYP_H ! 926: #include <types.h> ! 927: #endif /* GEMDOS */ ! 928: ! 929: #ifdef CKTYP_H /* Include it. */ ! 930: #ifdef COHERENT /* Except for COHERENT */ ! 931: #include <sys/types.h> ! 932: #else ! 933: #ifdef datageneral ! 934: #include <sys/types.h> /* Compiler didn't like other */ ! 935: #else ! 936: #include CKTYP_H ! 937: #endif /* datageneral */ ! 938: #endif /* COHERENT */ ! 939: #endif /* CKTYP_H */ ! 940: ! 941: #endif /* OSK */ /* End of types.h section */ ! 942: ! 943: /* ! 944: Data type for pids. If your system uses a different type, put something ! 945: like -DPID_T=pid_t on command line, or override here. ! 946: */ ! 947: #ifndef PID_T ! 948: #define PID_T int ! 949: #endif /* PID_T */ ! 950: /* ! 951: Data types for uids and gids. Same deal as for pids. ! 952: Wouldn't be nice if there was a preprocessor test to find out if a ! 953: typedef existed? ! 954: */ ! 955: #ifdef VMS ! 956: /* Not used in VMS so who cares */ ! 957: #define UID_T int ! 958: #define GID_T int ! 959: #endif /* VMS */ ! 960: ! 961: #ifdef POSIX ! 962: /* Or would it be better (or worse?) to use _POSIX_SOURCE here? */ ! 963: #ifndef UID_T ! 964: #define UID_T uid_t ! 965: #endif /* UID_T */ ! 966: #ifndef GID_T ! 967: #define GID_T gid_t ! 968: #endif /* GID_T */ ! 969: #else /* Not POSIX */ ! 970: #ifdef SVR4 ! 971: /* SVR4 and later have uid_t and gid_t. */ ! 972: /* SVR3 and earlier use int, or unsigned short, or.... */ ! 973: #ifndef UID_T ! 974: #define UID_T uid_t ! 975: #endif /* UID_T */ ! 976: #ifndef GID_T ! 977: #define GID_T gid_t ! 978: #endif /* GID_T */ ! 979: #else /* Not SVR4 */ ! 980: #ifdef BSD43 ! 981: #ifndef UID_T ! 982: #define UID_T uid_t ! 983: #endif /* UID_T */ ! 984: #ifndef GID_T ! 985: #define GID_T gid_t ! 986: #endif /* GID_T */ ! 987: #else /* Not BSD43 */ ! 988: /* Default these to int for older UNIX versions */ ! 989: #ifndef UID_T ! 990: #define UID_T int ! 991: #endif /* UID_T */ ! 992: #ifndef GID_T ! 993: #define GID_T int ! 994: #endif /* GID_T */ ! 995: #endif /* BSD43 */ ! 996: #endif /* SVR4 */ ! 997: #endif /* POSIX */ ! 998: ! 999: /* ! 1000: getpwuid() arg type, which is not necessarily the same as UID_T, ! 1001: e.g. in SCO UNIX SVR3, it's int. ! 1002: */ ! 1003: #ifndef PWID_T ! 1004: #define PWID_T UID_T ! 1005: #endif /* PWID_T */ ! 1006: ! 1007: #ifdef NEXT /* Argument for wait() */ ! 1008: #include <sys/wait.h> ! 1009: typedef union wait WAIT_T; ! 1010: #else ! 1011: #ifdef POSIX ! 1012: #include <sys/wait.h> ! 1013: #define WAIT_T pid_t ! 1014: #else ! 1015: typedef int WAIT_T; ! 1016: #endif /* POSIX */ ! 1017: #endif /* NEXT */ ! 1018: ! 1019: /* Forward declarations of system-dependent functions callable from all */ ! 1020: /* C-Kermit modules. */ ! 1021: ! 1022: /* File-related functions from system-dependent file i/o module */ ! 1023: ! 1024: _PROTOTYP( int zkself, (void) ); ! 1025: _PROTOTYP( int zopeni, (int, char *) ); ! 1026: _PROTOTYP( int zopeno, (int, char *, struct zattr *, struct filinfo *) ); ! 1027: _PROTOTYP( int zclose, (int) ); ! 1028: #ifndef MAC ! 1029: _PROTOTYP( int zchin, (int, int *) ); ! 1030: #endif /* MAC */ ! 1031: _PROTOTYP( int zsinl, (int, char *, int) ); ! 1032: _PROTOTYP( int zinfill, (void) ); ! 1033: _PROTOTYP( int zsout, (int, char*) ); ! 1034: _PROTOTYP( int zsoutl, (int, char*) ); ! 1035: _PROTOTYP( int zsoutx, (int, char*, int) ); ! 1036: _PROTOTYP( int zchout, (int, char) ); ! 1037: _PROTOTYP( int zoutdump, (void) ); ! 1038: _PROTOTYP( int zsyscmd, (char *) ); ! 1039: _PROTOTYP( int zshcmd, (char *) ); ! 1040: _PROTOTYP( int chkfn, (int) ); ! 1041: _PROTOTYP( long zchki, (char *) ); ! 1042: _PROTOTYP( int iswild, (char *) ); ! 1043: _PROTOTYP( int zchko, (char *) ); ! 1044: _PROTOTYP( int zdelet, (char *) ); ! 1045: _PROTOTYP( VOID zrtol, (char *,char *) ); ! 1046: _PROTOTYP( VOID zltor, (char *,char *) ); ! 1047: _PROTOTYP( VOID zstrip, (char *,char **) ); ! 1048: _PROTOTYP( int zchdir, (char *) ); ! 1049: _PROTOTYP( char * zhome, (void) ); ! 1050: _PROTOTYP( char * zgtdir, (void) ); ! 1051: _PROTOTYP( int zxcmd, (int, char *) ); ! 1052: #ifndef MAC ! 1053: _PROTOTYP( int zclosf, (int) ); ! 1054: #endif /* MAC */ ! 1055: _PROTOTYP( int zxpand, (char *) ); ! 1056: _PROTOTYP( int znext, (char *) ); ! 1057: _PROTOTYP( int zchkspa, (char *, long) ); ! 1058: _PROTOTYP( VOID znewn, (char *, char **) ); ! 1059: _PROTOTYP( int zrename, (char *, char *) ); ! 1060: _PROTOTYP( int zsattr, (struct zattr *) ); ! 1061: _PROTOTYP( int zfree, (char *) ); ! 1062: _PROTOTYP( char * zfcdat, (char *) ); ! 1063: _PROTOTYP( int zstime, (char *, struct zattr *, int) ); ! 1064: _PROTOTYP( int zmail, (char *, char *) ); ! 1065: _PROTOTYP( int zprint, (char *, char *) ); ! 1066: _PROTOTYP( char * tilde_expand, (char *) ); ! 1067: ! 1068: /* Functions from system-dependent terminal i/o module */ ! 1069: ! 1070: _PROTOTYP( int ttopen, (char *, int *, int, int) ); /* tty functions */ ! 1071: #ifndef MAC ! 1072: _PROTOTYP( int ttclos, (int) ); ! 1073: #endif /* MAC */ ! 1074: _PROTOTYP( int tthang, (void) ); ! 1075: _PROTOTYP( int ttres, (void) ); ! 1076: _PROTOTYP( int ttpkt, (long, int, int) ); ! 1077: #ifndef MAC ! 1078: _PROTOTYP( int ttvt, (long, int) ); ! 1079: #endif /* MAC */ ! 1080: _PROTOTYP( int ttsspd, (int) ); ! 1081: _PROTOTYP( long ttgspd, (void) ); ! 1082: _PROTOTYP( int ttflui, (void) ); ! 1083: _PROTOTYP( int ttfluo, (void) ); ! 1084: _PROTOTYP( int ttchk, (void) ); ! 1085: _PROTOTYP( int ttxin, (int, CHAR *) ); ! 1086: _PROTOTYP( int ttol, (CHAR *, int) ); ! 1087: _PROTOTYP( int ttoc, (char) ); ! 1088: _PROTOTYP( int ttinc, (int) ); ! 1089: _PROTOTYP( int ttscarr, (int) ); ! 1090: _PROTOTYP( int ttgmdm, (void) ); ! 1091: _PROTOTYP( int ttsndb, (void) ); ! 1092: _PROTOTYP( int ttsndlb, (void) ); ! 1093: #ifdef PARSENSE ! 1094: #ifdef UNIX ! 1095: _PROTOTYP( int ttinl, (CHAR *, int, int, CHAR, CHAR, int) ); ! 1096: #else ! 1097: #ifdef VMS ! 1098: _PROTOTYP( int ttinl, (CHAR *, int, int, CHAR, CHAR, int) ); ! 1099: #else ! 1100: _PROTOTYP( int ttinl, (CHAR *, int, int, CHAR, CHAR) ); ! 1101: #endif /* VMS */ ! 1102: #endif /* UNIX */ ! 1103: #else ! 1104: _PROTOTYP( int ttinl, (CHAR *, int, int, CHAR) ); ! 1105: #endif /* PARSENSE */ ! 1106: ! 1107: /* Console functions */ ! 1108: ! 1109: _PROTOTYP( int congm, (void) ); ! 1110: #ifdef COMMENT ! 1111: _PROTOTYP( VOID conint, (SIGTYP (*)(int, int), SIGTYP (*)(int, int)) ); ! 1112: #else ! 1113: _PROTOTYP( VOID conint, (SIGTYP (*)(int), SIGTYP (*)(int)) ); ! 1114: #endif ! 1115: _PROTOTYP( VOID connoi, (void) ); ! 1116: _PROTOTYP( int concb, (char) ); ! 1117: _PROTOTYP( int conbin, (char) ); ! 1118: _PROTOTYP( int conres, (void) ); ! 1119: _PROTOTYP( int conoc, (char) ); ! 1120: _PROTOTYP( int conxo, (int, char *) ); ! 1121: _PROTOTYP( int conol, (char *) ); ! 1122: _PROTOTYP( int conola, (char *[]) ); ! 1123: _PROTOTYP( int conoll, (char *) ); ! 1124: _PROTOTYP( int conchk, (void) ); ! 1125: _PROTOTYP( int coninc, (int) ); ! 1126: _PROTOTYP( int psuspend, (int) ); ! 1127: _PROTOTYP( int priv_ini, (void) ); ! 1128: _PROTOTYP( int priv_on, (void) ); ! 1129: _PROTOTYP( int priv_off, (void) ); ! 1130: _PROTOTYP( int priv_can, (void) ); ! 1131: _PROTOTYP( int priv_chk, (void) ); ! 1132: _PROTOTYP( int priv_opn, (char *, int) ); ! 1133: ! 1134: _PROTOTYP( int sysinit, (void) ); /* Misc Kermit functions */ ! 1135: _PROTOTYP( int syscleanup, (void) ); ! 1136: _PROTOTYP( int msleep, (int) ); ! 1137: _PROTOTYP( VOID rtimer, (void) ); ! 1138: _PROTOTYP( int gtimer, (void) ); ! 1139: _PROTOTYP( VOID ttimoff, (void) ); ! 1140: _PROTOTYP( VOID ztime, (char **) ); ! 1141: _PROTOTYP( int parchk, (CHAR *, CHAR, int) ); ! 1142: _PROTOTYP( VOID doexit, (int, int) ); ! 1143: _PROTOTYP( int askmore, (void) ); ! 1144: _PROTOTYP( VOID fatal, (char *) ); ! 1145: ! 1146: /* Key mapping support */ ! 1147: ! 1148: #ifdef NOICP ! 1149: #ifndef NOSETKEY ! 1150: #define NOSETKEY ! 1151: #endif /* NOSETKEY */ ! 1152: #endif /* NOICP */ ! 1153: ! 1154: _PROTOTYP( int congks, (int) ); ! 1155: #ifndef NOSETKEY ! 1156: #ifdef OS2 ! 1157: #define KMSIZE 768 ! 1158: typedef int KEY; ! 1159: typedef CHAR *MACRO; ! 1160: extern int wideresult; ! 1161: _PROTOTYP( VOID keymapinit, (void) ); ! 1162: #else /* Not OS2 */ ! 1163: /* ! 1164: Catch-all for systems where we don't know how to read keyboard scan ! 1165: codes > 255. Note: CHAR (i.e. unsigned char) is very important here. ! 1166: */ ! 1167: #define KMSIZE 256 ! 1168: typedef CHAR KEY; ! 1169: typedef CHAR * MACRO; ! 1170: #define congks coninc ! 1171: #endif /* OS2 */ ! 1172: #endif /* NOSETKEY */ ! 1173: ! 1174: /* ! 1175: Function prototypes for system and library functions. ! 1176: */ ! 1177: #ifdef _POSIX_SOURCE ! 1178: #ifndef VMS ! 1179: #ifndef MAC ! 1180: #define CK_ANSILIBS ! 1181: #endif /* MAC */ ! 1182: #endif /* VMS */ ! 1183: #endif /* _POSIX_SOURCE */ ! 1184: ! 1185: #ifdef NEXT ! 1186: #define CK_ANSILIBS ! 1187: #endif /* NEXT */ ! 1188: ! 1189: #ifdef SVR4 ! 1190: #define CK_ANSILIBS ! 1191: #endif /* SVR4 */ ! 1192: ! 1193: #ifdef OS2 ! 1194: #define KANJI ! 1195: #define CK_ANSILIBS ! 1196: #define MYCURSES ! 1197: #define CK_RTSCTS ! 1198: #ifdef __IBMC__ ! 1199: #define S_IFMT 0xF000 ! 1200: #define timezone _timezone ! 1201: #endif /* __IBMC__ */ ! 1202: #include <io.h> ! 1203: #ifdef __EMX__ ! 1204: #ifndef __32BIT__ ! 1205: #define __32BIT__ ! 1206: #endif /* __32BIT__ */ ! 1207: #include <sys/timeb.h> ! 1208: #else ! 1209: #include <direct.h> ! 1210: #define SIGALRM SIGUSR1 ! 1211: _PROTOTYP( unsigned alarm, (unsigned) ); ! 1212: _PROTOTYP( unsigned sleep, (unsigned) ); ! 1213: #endif /* __EMX__ */ ! 1214: _PROTOTYP( long zdskspace, (int) ); ! 1215: _PROTOTYP( int zchdsk, (int) ); ! 1216: _PROTOTYP( int conincraw, (int) ); ! 1217: _PROTOTYP( int ttiscom, (int f) ); ! 1218: _PROTOTYP( int IsFileNameValid, (char *) ); ! 1219: _PROTOTYP( void ChangeNameForFAT, (char *) ); ! 1220: _PROTOTYP( char *GetLoadPath, (void) ); ! 1221: #endif /* OS2 */ ! 1222: ! 1223: #ifdef MYCURSES /* MYCURSES implies CK_CURSES */ ! 1224: #ifndef CK_CURSES ! 1225: #define CK_CURSES ! 1226: #endif /* CK_CURSES */ ! 1227: #endif /* MYCURSES */ ! 1228: ! 1229: #ifdef CK_ANSILIBS ! 1230: /* ! 1231: String library functions. ! 1232: For ANSI C, get prototypes from <string.h>. ! 1233: Otherwise, skip the prototypes. ! 1234: */ ! 1235: #include <string.h> ! 1236: ! 1237: /* ! 1238: Prototypes for other commonly used library functions, such as ! 1239: malloc, free, getenv, atol, atoi, and exit. Otherwise, no prototypes. ! 1240: */ ! 1241: #include <stdlib.h> ! 1242: #ifdef DIAB /* DIAB DS90 */ ! 1243: /* #include <commonC.h> */ ! 1244: #include <sys/wait.h> ! 1245: #ifdef COMMENT ! 1246: extern void exit(int status); ! 1247: extern void _exit(int status); ! 1248: extern int uname(struct utsname *name); ! 1249: #endif /* COMMENT */ ! 1250: extern int chmod(char *path, int mode); ! 1251: extern int ioctl(int fildes, int request, ...); ! 1252: extern int rdchk(int ttyfd); ! 1253: extern int nap(int m); ! 1254: #ifdef COMMENT ! 1255: extern int getppid(void); ! 1256: #endif /* COMMENT */ ! 1257: extern int _filbuf(FILE *stream); ! 1258: extern int _flsbuf(char c,FILE *stream); ! 1259: #endif /* DIAB */ ! 1260: ! 1261: /* ! 1262: Prototypes for UNIX functions like access, alarm, chdir, sleep, fork, ! 1263: and pause. Otherwise, no prototypes. ! 1264: */ ! 1265: #ifdef NEXT ! 1266: #include <libc.h> ! 1267: #else ! 1268: #ifndef AMIGA ! 1269: #ifndef OS2 ! 1270: #include <unistd.h> ! 1271: #endif /* OS2 */ ! 1272: #endif /* AMIGA */ ! 1273: #endif /* NEXT */ ! 1274: ! 1275: #else /* Not ANSI libs... */ ! 1276: ! 1277: #ifdef MAC ! 1278: #include <String.h> ! 1279: #include <StdLib.h> ! 1280: #endif /* MAC */ ! 1281: ! 1282: #ifdef SUNOS41 ! 1283: #include <unistd.h> ! 1284: #include <stdlib.h> ! 1285: #else ! 1286: /* ! 1287: It is essential that these are declared correctly! ! 1288: */ ! 1289: _PROTOTYP( char * malloc, (unsigned int) ); ! 1290: _PROTOTYP( char * getenv, (char *) ); ! 1291: _PROTOTYP( long atol, (char *) ); ! 1292: #endif /* SUNOS4 */ ! 1293: #endif /* CK_ANSILIBS */ ! 1294: ! 1295: #ifndef NULL /* In case NULL is still not defined */ ! 1296: #define NULL 0L ! 1297: /* or #define NULL 0 */ ! 1298: /* or #define NULL ((char *) 0) */ ! 1299: /* or #define NULL ((void *) 0) */ ! 1300: #endif /* NULL */ ! 1301: ! 1302: /* Funny names for library functions department... */ ! 1303: ! 1304: #ifdef ZILOG ! 1305: #define setjmp setret ! 1306: #define longjmp longret ! 1307: #define jmp_buf ret_buf ! 1308: #define getcwd curdir ! 1309: #endif /* ZILOG */ ! 1310: ! 1311: #endif /* CKCDEB_H */ ! 1312: ! 1313: /* End of ckcdeb.h */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.