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