Annotation of coherent/e/bin/ckermit/ckcdeb.h, revision 1.1

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 */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.