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 (fdc@columbia.edu, FDCCU@CUVMA.BITNET),
  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 */

Defined functions

SIGTYP defined in line 789; never used

Defined struct's

filinfo defined in line 882; used 18 times
zattr defined in line 858; used 30 times
zstr defined in line 854; used 32 times

Defined typedef's

CHAR defined in line 427; used 835 times

Defined macros

AIX370 defined in line 58; used 4 times
BSD44ORPOSIX defined in line 290; used 20 times
CHAR defined in line 446; never used
CKCDEB_H defined in line 31; used 1 times
  • in line 30
CKTYP_H defined in line 918; used 4 times
CK_ANSIC defined in line 326; used 174 times
CK_ANSILIBS defined in line 1195; used 2 times
CK_LBRK defined in line 580; used 4 times
CK_XONXOFF defined in line 606; never used
F001 defined in line 524; never used
F010 defined in line 525; never used
F011 defined in line 526; never used
F100 defined in line 527; used 193 times
F101 defined in line 528; used 621 times
F110 defined in line 529; used 212 times
F111 defined in line 530; used 206 times
FLO_ETXA defined in line 837; never used
FLO_STRG defined in line 838; never used
FREAD defined in line 781; never used
FWRITE defined in line 782; never used
GID_T defined in line 993; used 14 times
IFDEBUG defined in line 492; used 4 times
KMSIZE defined in line 1167; used 5 times
KM_CTS defined in line 815; never used
KM_DCD defined in line 818; never used
KM_DSR defined in line 816; never used
KM_DTR defined in line 819; never used
KM_FG defined in line 811; never used
KM_RI defined in line 820; never used
KM_RTS defined in line 814; never used
KM_RXD defined in line 813; never used
KM_SG defined in line 817; never used
KM_TXD defined in line 812; never used
MDMHUP defined in line 599; used 4 times
M_VOID defined in line 349; never used
NLCHAR defined in line 684; used 12 times
NOANSI defined in line 299; used 2 times
NULL defined in line 1296; used 30 times
PWID_T defined in line 1004; used 2 times
SIGALRM defined in line 1210; never used
SIGARB defined in line 788; never used
SIGRETURN defined in line 421; used 4 times
SIG_I defined in line 392; used 2 times
SIG_V defined in line 389; used 2 times
SVR4ORPOSIX defined in line 273; used 3 times
S_IFMT defined in line 1199; never used
UID_T defined in line 990; used 17 times
WAIT_T defined in line 1013; never used
__32BIT__ defined in line 1205; used 3 times
debug defined in line 510; used 1194 times
getcwd defined in line 1308; used 4 times
jmp_buf defined in line 1307; never used
putchar defined in line 802; used 42 times
timezone defined in line 1200; used 14 times
tolower defined in line 742; used 2 times
toupper defined in line 743; never used
void defined in line 350; never used

Usage of this include

Last modified: 1992-11-24
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 9755
Valid CSS Valid XHTML 1.0 Strict