| /* C K C D E B . H */ |
| |
| /* |
| Tue Apr 6 14:00:16 2004 |
| |
| NOTE TO CONTRIBUTORS: This file, and all the other C-Kermit files, must be |
| compatible with C preprocessors that support only #ifdef, #else, #endif, |
| #define, and #undef. Please do not use #if, logical operators, or other |
| later-model preprocessor features in any of the portable C-Kermit modules. |
| You can, of course, use these constructions in platform-specific modules |
| when you know they are supported. |
| */ |
| |
| /* |
| This file is included by all C-Kermit modules, including the modules |
| that aren't specific to Kermit (like the command parser and the ck?tio and |
| ck?fio modules). It should be included BEFORE any other C-Kermit header |
| files. It specifies format codes for debug(), tlog(), and similar |
| functions, and includes any necessary definitions to be used by all C-Kermit |
| modules, and also includes some feature selection compile-time switches, and |
| also system- or compiler-dependent definitions, plus #includes and prototypes |
| required by all C-Kermit modules. |
| */ |
| |
| /* |
| Author: Frank da Cruz <fdc@columbia.edu>, |
| Columbia University Academic Information Systems, New York City. |
| |
| Copyright (C) 1985, 2004, |
| Trustees of Columbia University in the City of New York. |
| All rights reserved. See the C-Kermit COPYING.TXT file or the |
| copyright text in the ckcmai.c module for disclaimer and permissions. |
| */ |
| |
| /* |
| Etymology: The name of this file means "C-Kermit Common-C-Language Debugging |
| Header", because originally it contained only the formats (F000-F111) for |
| the debug() and tlog() functions. Since then it has grown to inlcude all |
| material required by all other C-Kermit modules, including the non-Kermit |
| specific ones. |
| */ |
| |
| #ifndef CKCDEB_H /* Don't include me more than once. */ |
| #define CKCDEB_H |
| |
| #ifdef OS2 |
| #include "ckoker.h" |
| #else /* OS2 */ |
| /* Unsigned numbers */ |
| |
| #ifndef USHORT |
| #define USHORT unsigned short |
| #endif /* USHORT */ |
| |
| #ifndef UINT |
| #define UINT unsigned int |
| #endif /* UINT */ |
| |
| #ifndef ULONG |
| #define ULONG unsigned long |
| #endif /* ULONG */ |
| #endif /* OS2 */ |
| |
| /* Structure definitions for Kermit file attributes */ |
| /* All strings come as pointer and length combinations */ |
| /* Empty string (or for numeric variables, -1) = unused attribute. */ |
| |
| struct zstr { /* string format */ |
| int len; /* length */ |
| char *val; /* value */ |
| }; |
| struct zattr { /* Kermit File Attribute structure */ |
| long lengthk; /* (!) file length in K */ |
| struct zstr type; /* (") file type (text or binary) */ |
| struct zstr date; /* (#) file creation date yyyymmdd[ hh:mm[:ss]] */ |
| struct zstr creator; /* ($) file creator id */ |
| struct zstr account; /* (%) file account */ |
| struct zstr area; /* (&) area (e.g. directory) for file */ |
| struct zstr password; /* (') password for area */ |
| long blksize; /* (() file blocksize */ |
| struct zstr xaccess; /* ()) file access: new, supersede, append, warn */ |
| struct zstr encoding; /* (*) encoding (transfer syntax) */ |
| struct zstr disp; /* (+) disposition (mail, message, print, etc) */ |
| struct zstr lprotect; /* (,) protection (local syntax) */ |
| struct zstr gprotect; /* (-) protection (generic syntax) */ |
| struct zstr systemid; /* (.) ID for system of origin */ |
| struct zstr recfm; /* (/) record format */ |
| struct zstr sysparam; /* (0) system-dependent parameter string */ |
| long length; /* (1) exact length on system of origin */ |
| struct zstr charset; /* (2) transfer syntax character set */ |
| #ifdef OS2 |
| struct zstr longname; /* OS/2 longname if applicable */ |
| #endif /* OS2 */ |
| struct zstr reply; /* This goes last, used for attribute reply */ |
| }; |
| |
| /* Kermit file information structure */ |
| |
| struct filinfo { |
| int bs; /* Blocksize */ |
| int cs; /* Character set */ |
| long rl; /* Record length */ |
| int org; /* Organization */ |
| int fmt; /* Record format */ |
| int cc; /* Carriage control */ |
| int typ; /* Type (text/binary) */ |
| int dsp; /* Disposition */ |
| char *os_specific; /* OS-specific attributes */ |
| #ifdef OS2 |
| unsigned long int lblopts; /* LABELED FILE options bitmask */ |
| #else |
| int lblopts; |
| #endif /* OS2 */ |
| }; |
| |
| #ifdef MACOSX10 /* Mac OS X 1.0 */ |
| #ifndef MACOSX /* implies Mac OS X */ |
| #define MACOSX |
| #endif /* MACOSX */ |
| #endif /* MACOSX10 */ |
| |
| #ifdef MACOSX /* Mac OS X */ |
| #ifndef BSD44 /* implies 4.4 BSD */ |
| #define BSD44 |
| #endif /* BSD44 */ |
| #endif /* MACOSX */ |
| |
| #ifdef SCO_OSR505 /* SCO 3.2v5.0.5 */ |
| #ifndef SCO_OSR504 /* implies SCO 3.2v5.0.4 */ |
| #define SCO_OSR504 |
| #endif /* SCO_OSR504 */ |
| #endif /* SCO_OSR505 */ |
| |
| #ifdef SCO_OSR504 /* SCO 3.2v5.0.4 */ |
| #ifndef CK_SCOV5 /* implies SCO 3.2v5.0 */ |
| #define CK_SCOV5 |
| #endif /* CK_SCOV5 */ |
| #include <sys/types.h> /* To sidestep header-file mess */ |
| #endif /* SCO_OSR504 */ |
| |
| #ifdef CK_SCOV5 |
| #ifndef ANYSCO |
| #define ANYSCO |
| #endif /* ANYSCO */ |
| #endif /* CK_SCOV5 */ |
| |
| #ifdef UNIXWARE |
| #ifndef ANYSCO |
| #define ANYSCO |
| #endif /* ANYSCO */ |
| #endif /* UNIXWARE */ |
| |
| #ifdef CK_SCO32V4 /* SCO 3.2v4 */ |
| #ifndef ANYSCO |
| #define ANYSCO |
| #endif /* ANYSCO */ |
| #ifndef XENIX |
| #define XENIX |
| #endif /* XENIX */ |
| #ifndef SVR3 |
| #define SVR3 |
| #endif /* SVR3 */ |
| #ifndef DIRENT |
| #define DIRENT |
| #endif /* DIRENT */ |
| #ifndef RENAME |
| #define RENAME |
| #endif /* RENAME */ |
| #ifndef SVR3JC |
| #define SVR3JC |
| #endif /* SVR3JC */ |
| #ifndef CK_RTSCTS |
| #define CK_RTSCTS |
| #endif /* CK_RTSCTS */ |
| #ifndef PID_T |
| #define PID_T pid_t |
| #endif /* PID_T */ |
| #ifndef PWID_T |
| #define PWID_T int |
| #endif /* PWID_T */ |
| #endif /* CK_SCO32V4 */ |
| |
| #ifdef NOICP /* If no command parser */ |
| #ifndef NOSPL /* Then no script language either */ |
| #define NOSPL |
| #endif /* NOSPL */ |
| #ifndef NOCSETS /* Or characer sets */ |
| #define NOCSETS |
| #endif /* NOCSETS */ |
| #ifndef NOFTP /* Or FTP client */ |
| #define NOFTP |
| #endif /* NOFTP */ |
| #endif /* NOICP */ |
| |
| /* Built-in makefile entries */ |
| |
| #ifdef SOLARIS9 /* Solaris 9 implies 8 */ |
| #ifndef SOLARIS8 |
| #define SOLARIS8 |
| #endif /* SOLARIS8 */ |
| #endif /* SOLARIS9 */ |
| |
| #ifdef SOLARIS8 /* Solaris 8 implies 7 */ |
| #ifndef SOLARIS7 |
| #define SOLARIS7 |
| #endif /* SOLARIS7 */ |
| #endif /* SOLARIS8 */ |
| |
| #ifdef SOLARIS7 /* Solaris 7 implies 2.6 */ |
| #ifndef SOLARIS26 |
| #define SOLARIS26 |
| #endif /* SOLARIS26 */ |
| #endif /* SOLARIS7 */ |
| |
| #ifdef SOLARIS26 /* Solaris 2.6 implies 2.5 */ |
| #ifndef SOLARIS25 |
| #define SOLARIS25 |
| #endif /* SOLARIS25 */ |
| #endif /* SOLARIS26 */ |
| |
| #ifdef SOLARIS25 /* Solaris 2.5 implies Solaris */ |
| #ifndef SOLARIS |
| #define SOLARIS |
| #endif /* SOLARIS */ |
| #ifndef POSIX /* And POSIX */ |
| #define POSIX |
| #endif /* POSIX */ |
| #ifndef CK_WREFRESH /* And this (curses) */ |
| #define CK_WREFRESH |
| #endif /* CK_WREFRESH */ |
| #endif /* SOLARIS25 */ |
| |
| #ifdef SOLARIS24 /* Solaris 2.4 implies Solaris */ |
| #ifndef SOLARIS |
| #define SOLARIS |
| #endif /* SOLARIS */ |
| #endif /* SOLARIS24 */ |
| |
| #ifdef SOLARIS /* Solaris gets "POSIX" RTS/CTS API */ |
| #ifdef POSIX |
| #ifndef POSIX_CRTSCTS |
| #define POSIX_CRTSCTS |
| #endif /* POSIX_CRTSCTS */ |
| #endif /* POSIX */ |
| #endif /* SOLARIS */ |
| |
| #ifdef SUN4S5 /* Sun-4 System V environment */ |
| #ifndef SVR3 /* implies System V R3 or later */ |
| #define SVR3 |
| #endif /* SVR3 */ |
| #endif /* SUN4S5 */ |
| #ifdef SUNOS41 /* SUNOS41 implies SUNOS4 */ |
| #ifndef SUNOS4 |
| #define SUNOS4 |
| #endif /* SUNOS4 */ |
| #endif /* SUNOS41 */ |
| |
| #ifdef SUN4S5 /* Sun-4 System V environment */ |
| #ifndef SVR3 /* implies System V R3 or later */ |
| #define SVR3 |
| #endif /* SVR3 */ |
| #endif /* SUN4S5 */ |
| |
| #ifdef SUNOS41 /* SUNOS41 implies SUNOS4 */ |
| #ifndef SUNOS4 |
| #define SUNOS4 |
| #endif /* SUNOS4 */ |
| #endif /* SUNOS41 */ |
| |
| #ifdef SUNOS4 /* Built-in SUNOS4 makefile entry */ |
| #ifndef UNIX |
| #define UNIX |
| #endif /* UNIX */ |
| #ifndef BSD4 |
| #define BSD4 |
| #endif /* BSD4 */ |
| #ifndef NOSETBUF |
| #define NOSETBUF |
| #endif /* NOSETBUF */ |
| #ifndef DIRENT |
| #define DIRENT |
| #endif /* DIRENT */ |
| #ifndef NONET |
| #ifndef TCPSOCKET |
| #define TCPSOCKET |
| #endif /* TCPSOCKET */ |
| #endif /* NONET */ |
| #ifndef SAVEDUID |
| #define SAVEDUID |
| #endif /* SAVEDUID */ |
| #ifndef DYNAMIC |
| #define DYNAMIC |
| #endif /* DYNAMIC */ |
| #endif /* SUNOS4 */ |
| |
| #ifdef SOLARIS /* Built in makefile entry */ |
| #ifndef NOSETBUF /* for Solaris 2.x */ |
| #define NOSETBUF |
| #endif /* NOSETBUF */ |
| #ifndef NOCURSES |
| #ifndef CK_CURSES |
| #define CK_CURSES |
| #endif /* CK_CURSES */ |
| #endif /* NOCURSES */ |
| #ifndef CK_NEWTERM |
| #define CK_NEWTERM |
| #endif /* CK_NEWTERM */ |
| #ifndef DIRENT |
| #define DIRENT |
| #endif /* DIRENT */ |
| #ifndef NONET |
| #ifndef TCPSOCKET |
| #define TCPSOCKET |
| #endif /* TCPSOCKET */ |
| #endif /* NONET */ |
| #ifndef UNIX |
| #define UNIX |
| #endif /* UNIX */ |
| #ifndef SVR4 |
| #define SVR4 |
| #endif /* SVR4 */ |
| #ifndef HADDRLIST |
| #define HADDRLIST |
| #endif /* HADDRLIST */ |
| #ifndef STERMIOX |
| #define STERMIOX |
| #endif /* STERMIOX */ |
| #ifndef SELECT |
| #define SELECT |
| #endif /* SELECT */ |
| #ifndef DYNAMIC |
| #define DYNAMIC |
| #endif /* DYNAMIC */ |
| #ifndef NOUUCP |
| #ifndef HDBUUCP |
| #define HDBUUCP |
| #endif /* HDBUUCP */ |
| #endif /* NOUUCP */ |
| #endif /* SOLARIS */ |
| |
| /* Features that can be eliminated from a no-file-transfer version */ |
| |
| #ifdef NOXFER |
| #ifndef NOFTP |
| #define NOFTP |
| #endif /* NOFTP */ |
| #ifndef OS2 |
| #ifndef NOCURSES /* Fullscreen file-transfer display */ |
| #define NOCURSES |
| #endif /* NOCURSES */ |
| #endif /* OS2 */ |
| #ifndef NOCKXYZ /* XYZMODEM support */ |
| #define NOCKXYZ |
| #endif /* NOCKXYZ */ |
| #ifndef NOCKSPEED /* Ctrl-char unprefixing */ |
| #define NOCKSPEED |
| #endif /* NOCKSPEED */ |
| #ifndef NOSERVER /* Server mode */ |
| #define NOSERVER |
| #endif /* NOSERVER */ |
| #ifndef NOCKTIMERS /* Dynamic packet timers */ |
| #define NOCKTIMERS |
| #endif /* NOCKTIMERS */ |
| #ifndef NOPATTERNS /* File-type patterns */ |
| #define NOPATTERNS |
| #endif /* NOPATTERNS */ |
| #ifndef NOSTREAMING /* Streaming */ |
| #define NOSTREAMING |
| #endif /* NOSTREAMING */ |
| #ifndef NOIKSD /* Internet Kermit Service */ |
| #define NOIKSD |
| #endif /* NOIKSD */ |
| #ifndef NOPIPESEND /* Sending from pipes */ |
| #define NOPIPESEND |
| #endif /* NOPIPESEND */ |
| #ifndef NOAUTODL /* Autodownload */ |
| #define NOAUTODL |
| #endif /* NOAUTODL */ |
| #ifndef NOMSEND /* MSEND */ |
| #define NOMSEND |
| #endif /* NOMSEND */ |
| #ifndef NOTLOG /* Transaction logging */ |
| #define NOTLOG |
| #endif /* NOTLOG */ |
| #ifndef NOCKXXCHAR /* Packet character doubling */ |
| #define NOCKXXCHAR |
| #endif /* NOCKXXCHAR */ |
| #endif /* NOXFER */ |
| |
| #ifdef NOICP /* No Interactive Command Parser */ |
| #ifndef NODIAL /* Implies No DIAL command */ |
| #define NODIAL |
| #endif /* NODIAL */ |
| #ifndef NOCKXYZ /* and no external protocols */ |
| #define NOCKXYZ |
| #endif /* NOCKXYZ */ |
| #endif /* NOICP */ |
| |
| #ifndef NOIKSD |
| #ifdef IKSDONLY |
| #ifndef IKSD |
| #define IKSD |
| #endif /* IKSD */ |
| #ifndef NOLOCAL |
| #define NOLOCAL |
| #endif /* NOLOCAL */ |
| #ifndef NOPUSH |
| #define NOPUSH |
| #endif /* NOPUSH */ |
| #ifndef TNCODE |
| #define TNCODE |
| #endif /* TNCODE */ |
| #ifndef TCPSOCKET |
| #define TCPSOCKET |
| #endif /* TCPSOCKET */ |
| #ifndef NETCONN |
| #define NETCONN |
| #endif /* NETCONN */ |
| #ifdef SUNX25 |
| #undef SUNX25 |
| #endif /* SUNX25 */ |
| #ifdef IBMX25 |
| #undef IBMX25 |
| #endif /* IBMX25 */ |
| #ifdef STRATUSX25 |
| #undef STRATUSX25 |
| #endif /* STRATUSX25 */ |
| #ifdef CK_NETBIOS |
| #undef CK_NETBIOS |
| #endif /* CK_NETBIOS */ |
| #ifdef SUPERLAT |
| #undef SUPERLAT |
| #endif /* SUPERLAT */ |
| #ifdef NPIPE |
| #undef NPIPE |
| #endif /* NPIPE */ |
| #ifdef NETFILE |
| #undef NETFILE |
| #endif /* NETFILE */ |
| #ifdef NETCMD |
| #undef NETCMD |
| #endif /* NETCMD */ |
| #ifdef NETPTY |
| #undef NETPTY |
| #endif /* NETPTY */ |
| #ifdef RLOGCODE |
| #undef RLOGCODE |
| #endif /* RLOGCODE */ |
| #ifdef NETDLL |
| #undef NETDLL |
| #endif /* NETDLL */ |
| #ifndef NOSSH |
| #undef NOSSH |
| #endif /* NOSSH */ |
| #ifndef NOFORWARDX |
| #define NOFORWARDX |
| #endif /* NOFORWARDX */ |
| #ifndef NOBROWSER |
| #define NOBROWSER |
| #endif /* NOBROWSER */ |
| #ifndef NOHTTP |
| #define NOHTTP |
| #endif /* NOHTTP */ |
| #ifndef NOFTP |
| #define NOFTP |
| #endif /* NOFTP */ |
| #ifndef NO_COMPORT |
| #define NO_COMPORT |
| #endif /* NO_COMPORT */ |
| #endif /* IKSDONLY */ |
| #endif /* NOIKSD */ |
| |
| /* Features that can be eliminated from a remote-only version */ |
| |
| #ifdef NOLOCAL |
| #ifndef NOFTP |
| #define NOFTP |
| #endif /* NOFTP */ |
| #ifndef NOHTTP |
| #define NOHTTP |
| #endif /* NOHTTP */ |
| #ifndef NOSSH |
| #define NOSSH |
| #endif /* NOSSH */ |
| #ifndef NOTERM |
| #define NOTERM |
| #endif /* NOTERM */ |
| #ifndef NOCURSES /* Fullscreen file-transfer display */ |
| #define NOCURSES |
| #endif /* NOCURSES */ |
| #ifndef NODIAL |
| #define NODIAL |
| #endif /* NODIAL */ |
| #ifndef NOSCRIPT |
| #define NOSCRIPT |
| #endif /* NOSCRIPT */ |
| #ifndef NOSETKEY |
| #define NOSETKEY |
| #endif /* NOSETKEY */ |
| #ifndef NOKVERBS |
| #define NOKVERBS |
| #endif /* NOKVERBS */ |
| #ifndef NOXMIT |
| #define NOXMIT |
| #endif /* NOXMIT */ |
| #ifdef CK_CURSES |
| #undef CK_CURSES |
| #endif /* CK_CURSES */ |
| #ifndef IKSDONLY |
| #ifndef NOAPC |
| #define NOAPC |
| #endif /* NOAPC */ |
| #ifndef NONET |
| #define NONET |
| #endif /* NONET */ |
| #endif /* IKSDONLY */ |
| #endif /* NOLOCAL */ |
| |
| #ifdef NONET |
| #ifdef NETCONN |
| #undef NETCONN |
| #endif /* NETCONN */ |
| #ifdef TCPSOCKET |
| #undef TCPSOCKET |
| #endif /* TCPSOCKET */ |
| #ifndef NOTCPOPTS |
| #define NOTCPOPTS |
| #endif /* NOTCPOPTS */ |
| #ifdef SUNX25 |
| #undef SUNX25 |
| #endif /* SUNX25 */ |
| #ifdef IBMX25 |
| #undef IBMX25 |
| #endif /* IBMX25 */ |
| #ifdef STRATUSX25 |
| #undef STRATUSX25 |
| #endif /* STRATUSX25 */ |
| #ifdef CK_NETBIOS |
| #undef CK_NETBIOS |
| #endif /* CK_NETBIOS */ |
| #ifdef SUPERLAT |
| #undef SUPERLAT |
| #endif /* SUPERLAT */ |
| #ifdef NPIPE |
| #undef NPIPE |
| #endif /* NPIPE */ |
| #ifdef NETFILE |
| #undef NETFILE |
| #endif /* NETFILE */ |
| #ifdef NETCMD |
| #undef NETCMD |
| #endif /* NETCMD */ |
| #ifdef NETPTY |
| #undef NETPTY |
| #endif /* NETPTY */ |
| #ifdef RLOGCODE |
| #undef RLOGCODE |
| #endif /* RLOGCODE */ |
| #ifdef NETDLL |
| #undef NETDLL |
| #endif /* NETDLL */ |
| #ifndef NOSSH |
| #define NOSSH |
| #endif /* NOSSH */ |
| #ifndef NOFTP |
| #define NOFTP |
| #endif /* NOFTP */ |
| #ifndef NOHTTP |
| #define NOHTTP |
| #endif /* NOHTTP */ |
| #ifndef NOBROWSER |
| #define NOBROWSER |
| #endif /* NOBROWSER */ |
| #ifndef NOFORWARDX |
| #define NOFORWARDX |
| #endif /* NOFORWARDX */ |
| #endif /* NONET */ |
| |
| #ifdef IKSDONLY |
| #ifdef SUNX25 |
| #undef SUNX25 |
| #endif /* SUNX25 */ |
| #ifdef IBMX25 |
| #undef IBMX25 |
| #endif /* IBMX25 */ |
| #ifdef STRATUSX25 |
| #undef STRATUSX25 |
| #endif /* STRATUSX25 */ |
| #ifdef CK_NETBIOS |
| #undef CK_NETBIOS |
| #endif /* CK_NETBIOS */ |
| #ifdef SUPERLAT |
| #undef SUPERLAT |
| #endif /* SUPERLAT */ |
| #ifdef NPIPE |
| #undef NPIPE |
| #endif /* NPIPE */ |
| #ifdef NETFILE |
| #undef NETFILE |
| #endif /* NETFILE */ |
| #ifdef NETCMD |
| #undef NETCMD |
| #endif /* NETCMD */ |
| #ifdef NETPTY |
| #undef NETPTY |
| #endif /* NETPTY */ |
| #ifdef RLOGCODE |
| #undef RLOGCODE |
| #endif /* RLOGCODE */ |
| #ifdef NETDLL |
| #undef NETDLL |
| #endif /* NETDLL */ |
| #ifndef NOSSH |
| #define NOSSH |
| #endif /* NOSSH */ |
| #ifndef NOHTTP |
| #define NOHTTP |
| #endif /* NOHTTP */ |
| #ifndef NOBROWSER |
| #define NOBROWSER |
| #endif /* NOBROWSER */ |
| #endif /* IKSDONLY */ |
| /* |
| Note that none of the above precludes TNCODE, which can be defined in |
| the absence of TCPSOCKET, etc, to enable server-side Telnet negotation. |
| */ |
| #ifndef TNCODE /* This is for the benefit of */ |
| #ifdef TCPSOCKET /* modules that might need TNCODE */ |
| #define TNCODE /* not all of ckcnet.h... */ |
| #endif /* TCPSOCKET */ |
| #endif /* TNCODE */ |
| |
| #ifndef NETCONN |
| #ifdef TCPSOCKET |
| #define NETCONN |
| #endif /* TCPSOCKET */ |
| #endif /* NETCONN */ |
| |
| #ifndef DEFPAR /* Default parity */ |
| #define DEFPAR 0 /* Must be here because it is used */ |
| #endif /* DEFPAR */ /* by all classes of modules */ |
| |
| #ifdef NT |
| #ifndef OS2ORWIN32 |
| #define OS2ORWIN32 |
| #endif /* OS2ORWIN32 */ |
| #ifndef OS2 |
| #define WIN32ONLY |
| #endif /* OS2 */ |
| #endif /* NT */ |
| |
| #ifdef OS2 /* For OS/2 debugging */ |
| #ifndef OS2ORWIN32 |
| #define OS2ORWIN32 |
| #endif /* OS2ORWIN32 */ |
| #ifdef NT |
| #define NOCRYPT |
| #include <windows.h> |
| #define NTSIG |
| #else /* NT */ |
| #define OS2ONLY |
| #include <os2def.h> |
| #endif /* NT */ |
| #ifndef OS2ORUNIX |
| #define OS2ORUNIX |
| #endif /* OS2ORUNIX */ |
| #ifndef OS2ORVMS |
| #define OS2ORVMS |
| #endif /* OS2ORVMS */ |
| #endif /* OS2 */ |
| |
| #include <stdio.h> /* Begin by including this. */ |
| #include <ctype.h> /* and this. */ |
| |
| /* System-type compilation switches */ |
| |
| #ifdef FT21 /* Fortune For:Pro 2.1 implies 1.8 */ |
| #ifndef FT18 |
| #define FT18 |
| #endif /* FT18 */ |
| #endif /* FT21 */ |
| |
| #ifdef __bsdi__ |
| #ifndef BSDI |
| #define BSDI |
| #endif /* BSDI */ |
| #endif /* __bsdi__ */ |
| |
| #ifdef AIXPS2 /* AIXPS2 implies AIX370 */ |
| #ifndef AIX370 |
| #define AIX370 |
| #endif /* AIX370 */ |
| #endif /* AIXPS2 */ |
| |
| #ifdef AIX370 /* AIX PS/2 or 370 implies BSD4 */ |
| #ifndef BSD4 |
| #define BSD4 |
| #endif /* BSD4 */ |
| #endif /* AIX370 */ |
| |
| #ifdef AIXESA /* AIX/ESA implies BSD4.4 */ |
| #ifndef BSD44 |
| #define BSD44 |
| #endif /* BSD44 */ |
| #endif /* AIXESA */ |
| |
| #ifdef AIX53 /* AIX53 implies AIX52 */ |
| #ifndef AIX52 |
| #define AIX52 |
| #endif /* AIX52 */ |
| #endif /* AIX53 */ |
| |
| #ifdef AIX52 /* AIX52 implies AIX51 */ |
| #ifndef AIX51 |
| #define AIX51 |
| #endif /* AIX51 */ |
| #endif /* AIX52 */ |
| |
| #ifdef AIX51 /* AIX51 implies AIX50 */ |
| #ifndef AIX50 |
| #define AIX50 |
| #endif /* AIX50 */ |
| #endif /* AIX51 */ |
| |
| #ifdef AIX50 /* AIX50 implies AIX45 */ |
| #ifndef AIX45 |
| #define AIX45 |
| #endif /* AIX45 */ |
| #endif /* AIX50 */ |
| |
| #ifdef AIX45 /* AIX45 implies AIX44 */ |
| #ifndef AIX44 |
| #define AIX44 |
| #endif /* AIX44 */ |
| #endif /* AIX45 */ |
| |
| #ifdef AIX44 /* AIX44 implies AIX43 */ |
| #ifndef AIX43 |
| #define AIX43 |
| #endif /* AIX43 */ |
| #endif /* AIX44 */ |
| |
| #ifdef AIX43 /* AIX43 implies AIX42 */ |
| #ifndef AIX42 |
| #define AIX42 |
| #endif /* AIX42 */ |
| #endif /* AIX43 */ |
| |
| #ifdef AIX42 /* AIX42 implies AIX41 */ |
| #ifndef AIX41 |
| #define AIX41 |
| #endif /* AIX41 */ |
| #endif /* AIX42 */ |
| |
| #ifdef SV68R3V6 /* System V/68 R32V6 implies SVR3 */ |
| #ifndef SVR3 |
| #define SVR3 |
| #endif /* SVR3 */ |
| #endif /* SV68R3V6 */ |
| |
| #ifdef SV88R32 /* System V/88 R32 implies SVR3 */ |
| #ifndef SVR3 |
| #define SVR3 |
| #endif /* SVR3 */ |
| #endif /* SV88R32 */ |
| |
| #ifdef DGUX540 /* DG UX 5.40 implies Sys V R 4 */ |
| #ifndef SVR4 |
| #define SVR4 |
| #endif /* SVR4 */ |
| #endif /* DGUX540 */ |
| |
| #ifndef DGUX |
| #ifdef DGUX540 /* DG/UX 5.40 implies DGUX */ |
| #define DGUX |
| #else |
| #ifdef DGUX430 /* So does DG/UX 4.30 */ |
| #define DGUX |
| #endif /* DGUX430 */ |
| #endif /* DGUX540 */ |
| #endif /* DGUX */ |
| |
| #ifdef IRIX65 /* IRIX 6.5 implies IRIX 6.4 */ |
| #ifndef IRIX64 |
| #define IRIX64 |
| #endif /* IRIX64 */ |
| #endif /* IRIX65 */ |
| |
| #ifdef IRIX64 /* IRIX 6.4 implies IRIX 6.2 */ |
| #ifndef BSD44ORPOSIX |
| #define BSD44ORPOSIX /* for ckutio's benefit */ |
| #endif /* BSD44ORPOSIX */ |
| #ifndef IRIX62 |
| #define IRIX62 |
| #endif /* IRIX62 */ |
| #endif /* IRIX64 */ |
| |
| #ifdef IRIX62 /* IRIX 6.2 implies IRIX 6.0 */ |
| #ifndef IRIX60 |
| #define IRIX60 |
| #endif /* IRIX60 */ |
| #endif /* IRIX62 */ |
| |
| #ifdef IRIX60 /* IRIX 6.0 implies IRIX 5.1 */ |
| #ifndef IRIX51 |
| #define IRIX51 |
| #endif /* IRIX51 */ |
| #ifndef IRIX52 /* And IRIX 5.2 (for hwfc) */ |
| #define IRIX52 |
| #endif /* IRIX52 */ |
| #endif /* IRIX60 */ |
| |
| #ifndef IRIX /* IRIX 4.0 or greater implies IRIX */ |
| #ifdef IRIX64 |
| #define IRIX |
| #else |
| #ifdef IRIX62 |
| #define IRIX |
| #else |
| #ifdef IRIX60 |
| #define IRIX |
| #else |
| #ifdef IRIX51 |
| #define IRIX |
| #else |
| #ifdef IRIX40 |
| #define IRIX |
| #endif /* IRIX40 */ |
| #endif /* IRIX51 */ |
| #endif /* IRIX60 */ |
| #endif /* IRIX62 */ |
| #endif /* IRIX64 */ |
| #endif /* IRIX */ |
| |
| #ifdef MIPS /* MIPS System V environment */ |
| #ifndef SVR3 /* implies System V R3 or later */ |
| #define SVR3 |
| #endif /* SVR3 */ |
| #endif /* MIPS */ |
| |
| #ifdef HPUX9 /* HP-UX 9.x */ |
| #ifndef SVR3 |
| #define SVR3 |
| #endif /* SVR3 */ |
| #ifndef HPUX |
| #define HPUX |
| #endif /* HPUX */ |
| #ifndef HPUX9PLUS |
| #define HPUX9PLUS |
| #endif /* HPUX9PLUS */ |
| #endif /* HPUX9 */ |
| |
| #ifdef HPUX10 /* HP-UX 10.x */ |
| #ifndef HPUX1010 /* If anything higher is defined */ |
| #ifdef HPUX1020 /* define HPUX1010 too. */ |
| #define HPUX1010 |
| #endif /* HPUX1020 */ |
| #ifdef HPUX1030 |
| #define HPUX1010 |
| #endif /* HPUX1030 */ |
| #endif /* HPUX1010 */ |
| |
| #ifdef HPUX1100 /* HP-UX 11.00 implies 10.10 */ |
| #ifndef HPUX1010 |
| #define HPUX1010 |
| #endif /* HPUX1010 */ |
| #endif /* HPUX1100 */ |
| |
| #ifndef SVR4 |
| #define SVR4 |
| #endif /* SVR4 */ |
| #ifndef HPUX |
| #define HPUX |
| #endif /* HPUX */ |
| #ifndef HPUX9PLUS |
| #define HPUX9PLUS |
| #endif /* HPUX9PLUS */ |
| #endif /* HPUX10 */ |
| |
| #ifdef QNX /* QNX Software Systems Inc */ |
| #ifndef POSIX /* QNX 4.0 or later is POSIX */ |
| #define POSIX |
| #endif /* POSIX */ |
| #ifndef __386__ /* Comes in 16-bit and 32-bit */ |
| #define __16BIT__ |
| #define CK_QNX16 |
| #else |
| #define __32BIT__ |
| #define CK_QNX32 |
| #endif /* __386__ */ |
| #endif /* QNX */ |
| |
| /* |
| 4.4BSD is a mixture of System V R4, POSIX, and 4.3BSD. |
| */ |
| #ifdef BSD44 /* 4.4 BSD */ |
| #ifndef SVR4 /* BSD44 implies SVR4 */ |
| #define SVR4 |
| #endif /* SVR4 */ |
| #ifndef NOSETBUF /* NOSETBUF is safe */ |
| #define NOSETBUF |
| #endif /* NOSETBUF */ |
| #ifndef DIRENT /* Uses <dirent.h> */ |
| #define DIRENT |
| #endif /* DIRENT */ |
| #endif /* BSD44 */ |
| |
| #ifdef OPENBSD /* OpenBSD might or might not */ |
| #ifndef __OpenBSD__ /* have this defined... */ |
| #define __OpenBSD__ |
| #endif /* __OpenBSD__ */ |
| #endif /* OPENBSD */ |
| |
| #ifdef SVR3 /* SVR3 implies ATTSV */ |
| #ifndef ATTSV |
| #define ATTSV |
| #endif /* ATTSV */ |
| #endif /* SVR3 */ |
| |
| #ifdef SVR4 /* SVR4 implies ATTSV */ |
| #ifndef ATTSV |
| #define ATTSV |
| #endif /* ATTSV */ |
| #ifndef SVR3 /* ...as well as SVR3 */ |
| #define SVR3 |
| #endif /* SVR3 */ |
| #endif /* SVR4 */ |
| |
| #ifdef OXOS |
| #ifndef ATTSV |
| #define ATTSV /* OXOS implies ATTSV */ |
| #endif /* ! ATTSV */ |
| #define SW_ACC_ID /* access() wants privs on */ |
| #define kill priv_kill /* kill() wants privs on */ |
| #ifndef NOSETBUF |
| #define NOSETBUF /* NOSETBUF is safe */ |
| #endif /* ! NOSETBUF */ |
| #endif /* OXOS */ |
| |
| #ifdef UTSV /* UTSV implies ATTSV */ |
| #ifndef ATTSV |
| #define ATTSV |
| #endif /* ATTSV */ |
| #endif /* UTSV */ |
| |
| #ifdef XENIX /* XENIX implies ATTSV */ |
| #ifndef ATTSV |
| #define ATTSV |
| #endif /* ATTSV */ |
| #endif /* XENIX */ |
| |
| #ifdef AUX /* AUX implies ATTSV */ |
| #ifndef ATTSV |
| #define ATTSV |
| #endif /* ATTSV */ |
| #endif /* AUX */ |
| |
| #ifdef ATT7300 /* ATT7300 implies ATTSV */ |
| #ifndef ATTSV |
| #define ATTSV |
| #endif /* ATTSV */ |
| #endif /* ATT7300 */ |
| |
| #ifdef ATT6300 /* ATT6300 implies ATTSV */ |
| #ifndef ATTSV |
| #define ATTSV |
| #endif /* ATTSV */ |
| #endif /* ATT6300 */ |
| |
| #ifdef HPUX /* HPUX implies ATTSV */ |
| #ifndef ATTSV |
| #define ATTSV |
| #endif /* ATTSV */ |
| #endif /* HPUX */ |
| |
| #ifdef ISIII /* ISIII implies ATTSV */ |
| #ifndef ATTSV |
| #define ATTSV |
| #endif /* ATTSV */ |
| #endif /* ISIII */ |
| |
| #ifdef NEXT33 /* NEXT33 implies NEXT */ |
| #ifndef NEXT |
| #define NEXT |
| #endif /* NEXT */ |
| #endif /* NEXT33 */ |
| |
| #ifdef NEXT /* NEXT implies BSD4 */ |
| #ifndef BSD4 |
| #define BSD4 |
| #endif /* BSD4 */ |
| #endif /* NEXT */ |
| |
| #ifdef BSD41 /* BSD41 implies BSD4 */ |
| #ifndef BSD4 |
| #define BSD4 |
| #endif /* BSD4 */ |
| #endif /* BSD41 */ |
| |
| #ifdef BSD43 /* BSD43 implies BSD4 */ |
| #ifndef BSD4 |
| #define BSD4 |
| #endif /* BSD4 */ |
| #endif /* BSD43 */ |
| |
| #ifdef BSD4 /* BSD4 implies ANYBSD */ |
| #ifndef ANYBSD |
| #define ANYBSD |
| #endif /* ANYBSD */ |
| #endif /* BSD4 */ |
| |
| #ifdef BSD29 /* BSD29 implies ANYBSD */ |
| #ifndef ANYBSD |
| #define ANYBSD |
| #endif /* ANYBSD */ |
| #endif /* BSD29 */ |
| |
| #ifdef ATTSV /* ATTSV implies UNIX */ |
| #ifndef UNIX |
| #define UNIX |
| #endif /* UNIX */ |
| #endif /* ATTSV */ |
| |
| #ifdef ANYBSD /* ANYBSD implies UNIX */ |
| #ifndef UNIX |
| #define UNIX |
| #endif /* UNIX */ |
| #endif /* ANYBSD */ |
| |
| #ifdef POSIX /* POSIX implies UNIX */ |
| #ifndef UNIX |
| #define UNIX |
| #endif /* UNIX */ |
| #ifndef DIRENT /* and DIRENT, i.e. <dirent.h> */ |
| #ifndef SDIRENT |
| #define DIRENT |
| #endif /* SDIRENT */ |
| #endif /* DIRENT */ |
| #ifndef NOFILEH /* POSIX doesn't use <sys/file.h> */ |
| #define NOFILEH |
| #endif /* NOFILEH */ |
| #endif /* POSIX */ |
| |
| #ifdef V7 |
| #ifndef UNIX |
| #define UNIX |
| #endif /* UNIX */ |
| #endif /* V7 */ |
| |
| #ifdef COHERENT |
| #ifndef UNIX |
| #define UNIX |
| #endif /* UNIX */ |
| #ifdef COMMENT |
| #ifndef NOCURSES |
| #define NOCURSES |
| #endif /* NOCURSES */ |
| #endif /* COMMENT */ |
| #endif /* COHERENT */ |
| |
| #ifdef MINIX |
| #ifndef UNIX |
| #define UNIX |
| #endif /* UNIX */ |
| #endif /* MINIX */ |
| /* |
| The symbol SVORPOSIX is defined for both AT&T and POSIX compilations |
| to make it easier to select items that System V and POSIX have in common, |
| but which BSD, V7, etc, do not have. |
| */ |
| #ifdef ATTSV |
| #ifndef SVORPOSIX |
| #define SVORPOSIX |
| #endif /* SVORPOSIX */ |
| #endif /* ATTSV */ |
| |
| #ifdef POSIX |
| #ifndef SVORPOSIX |
| #define SVORPOSIX |
| #endif /* SVORPOSIX */ |
| #endif /* POSIX */ |
| |
| /* |
| The symbol SVR4ORPOSIX is defined for both AT&T System V R4 and POSIX |
| compilations to make it easier to select items that System V R4 and POSIX |
| have in common, but which BSD, V7, and System V R3 and earlier, etc, do |
| not have. |
| */ |
| #ifdef POSIX |
| #ifndef SVR4ORPOSIX |
| #define SVR4ORPOSIX |
| #endif /* SVR4ORPOSIX */ |
| #endif /* POSIX */ |
| #ifdef SVR4 |
| #ifndef SVR4ORPOSIX |
| #define SVR4ORPOSIX |
| #endif /* SVR4ORPOSIX */ |
| #endif /* SVR4 */ |
| |
| /* |
| The symbol BSD44ORPOSIX is defined for both 4.4BSD and POSIX compilations |
| to make it easier to select items that 4.4BSD and POSIX have in common, |
| but which System V, BSD, V7, etc, do not have. |
| */ |
| #ifdef BSD44 |
| #ifndef BSD44ORPOSIX |
| #define BSD44ORPOSIX |
| #endif /* BSD44ORPOSIX */ |
| #endif /* BSD44 */ |
| |
| #ifdef POSIX |
| #ifndef BSD44ORPOSIX |
| #define BSD44ORPOSIX |
| #endif /* BSD44ORPOSIX */ |
| #endif /* POSIX */ |
| |
| #ifdef UNIX /* For items common to OS/2 and UNIX */ |
| #ifndef OS2ORUNIX |
| #define OS2ORUNIX |
| #endif /* OS2ORUNIX */ |
| #endif /* UNIX */ |
| |
| #ifdef UNIX /* For items common to VMS and UNIX */ |
| #define VMSORUNIX |
| #else |
| #ifdef VMS |
| #define VMSORUNIX |
| #ifndef OS2ORVMS |
| #define OS2ORVMS |
| #endif /* OS2ORVMS */ |
| #endif /* VMS */ |
| #endif /* UNIX */ |
| |
| #ifndef UNIXOROSK /* UNIX or OS-9 (or OS-9000) */ |
| #ifdef UNIX |
| #define UNIXOROSK |
| #else |
| #ifdef OSK |
| #define UNIXOROSK |
| #endif /* OSK */ |
| #endif /* UNIX */ |
| #endif /* UNIXOROSK */ |
| |
| #ifndef OSKORUNIX |
| #ifdef UNIXOROSK |
| #define OSKORUNIX |
| #endif /* UNIXOROSK */ |
| #endif /* OSKORUNIX */ |
| |
| #ifdef OS2 |
| #define CK_ANSIC /* OS/2 supports ANSIC and more extensions */ |
| #endif /* OS2 */ |
| |
| #ifdef OSF50 /* Newer OSF/1 versions imply older ones */ |
| #ifndef OSF40 |
| #define OSF40 |
| #endif /* OSF40 */ |
| #endif /* OSF50 */ |
| |
| #ifdef OSF40 |
| #ifndef OSF32 |
| #define OSF32 |
| #endif /* OSF32 */ |
| #endif /* OSF40 */ |
| |
| #ifdef OSF32 |
| #ifndef OSF30 |
| #define OSF30 |
| #endif /* OSF30 */ |
| #endif /* OSF32 */ |
| |
| #ifdef OSF30 |
| #ifndef OSF20 |
| #define OSF20 |
| #endif /* OSF20 */ |
| #endif /* OSF30 */ |
| |
| #ifdef OSF20 |
| #ifndef OSF10 |
| #define OSF10 |
| #endif /* OSF10 */ |
| #endif /* OSF20 */ |
| |
| #ifdef __DECC /* For DEC Alpha VMS or OSF/1 */ |
| #ifndef CK_ANSIC |
| #define CK_ANSIC /* Even with /stand=vaxc, need ansi */ |
| #endif /* CKANSIC */ |
| #ifndef SIG_V |
| #define SIG_V /* and signal type is VOID */ |
| #endif /* SIG_V */ |
| #ifndef CK_ANSILIBS |
| #define CK_ANSILIBS /* (Martin Zinser, Feb 1995) */ |
| #endif /* CK_ANSILIBS */ |
| #ifndef _POSIX_C_SOURCE |
| #define _POSIX_C_SOURCE 1 |
| #endif /* _POSIX_C_SOURCE */ |
| #endif /* __DECC */ |
| |
| #ifdef VMS |
| #ifdef __ia64 /* VMS on Itanium */ |
| #ifndef VMSI64 |
| #define VMSI64 |
| #endif /* VMSI64 */ |
| #endif /* __ia64 */ |
| #ifndef VMS64BIT /* 64-bit VMS on Itanium or Alpha */ |
| #ifdef __ia64 |
| #define VMS64BIT |
| #else |
| #ifdef __ALPHA |
| #define VMS64BIT |
| #endif /* __ia64 */ |
| #endif /* __ALPHA */ |
| #endif /* VMS64BIT */ |
| #endif /* VMS */ |
| |
| #ifdef apollo /* May be ANSI-C, check further */ |
| #ifdef __STDCPP__ |
| #define CK_ANSIC /* Yes, this is real ANSI-C */ |
| #define SIG_V |
| #else |
| #define NOANSI /* Nope, not ANSI */ |
| #undef __STDC__ /* Even though it say it is! */ |
| #define SIG_I |
| #endif /* __STDCPP__ */ |
| #endif /* apollo */ |
| |
| #ifdef POSIX /* -DPOSIX on cc command line */ |
| #ifndef _POSIX_SOURCE /* Implies _POSIX_SOURCE */ |
| #define _POSIX_SOURCE |
| #endif /* _POSIX_SOURCE */ |
| #endif /* POSIX */ |
| |
| /* |
| ANSI C? That is, do we have function prototypes, new-style |
| function declarations, and parameter type checking and coercion? |
| */ |
| #ifdef MAC /* MPW C is ANSI */ |
| #ifndef NOANSI |
| #ifndef CK_ANSIC |
| #define CK_ANSIC |
| #endif /* CK_ANSIC */ |
| #endif /* NOANSI */ |
| #endif /* MAC */ |
| |
| #ifdef STRATUS /* Stratus VOS */ |
| #ifndef CK_ANSIC |
| #define CK_ANSIC |
| #endif /* CK_ANSIC */ |
| #ifndef NOSTAT |
| #define NOSTAT |
| #endif /* NOSTAT */ |
| #endif /* STRATUS */ |
| |
| #ifndef NOANSI |
| #ifdef __STDC__ /* __STDC__ means ANSI C */ |
| #ifndef CK_ANSIC |
| #define CK_ANSIC |
| #endif /* CK_ANSIC */ |
| #endif /* __STDC__ */ |
| #endif /* NOANSI */ |
| /* |
| _PROTOTYP() is used for forward declarations of functions so we can have |
| parameter and return value type checking if the compiler offers it. |
| __STDC__ should be defined by the compiler only if function prototypes are |
| allowed. Otherwise, we get old-style forward declarations. Our own private |
| CK_ANSIC symbol tells whether we use ANSI C prototypes. To force use of |
| ANSI prototypes, include -DCK_ANSIC on the cc command line. To disable the |
| use of ANSI prototypes, include -DNOANSI. |
| */ |
| #ifdef CK_ANSIC |
| #define _PROTOTYP( func, parms ) func parms |
| #else /* Not ANSI C */ |
| #define _PROTOTYP( func, parms ) func() |
| #endif /* CK_ANSIC */ |
| |
| #ifndef OS2 |
| #ifdef NOLOGIN /* NOLOGIN implies NOIKSD */ |
| #ifndef NOIKSD |
| #define NOIKSD |
| #endif /* NOIKSD */ |
| #endif /* NOLOGIN */ |
| #endif /* OS2 */ |
| |
| #ifdef NOIKSD /* Internet Kermit Service Daemon */ |
| #ifndef OS2 |
| #ifndef NOPRINTFSUBST |
| #define NOPRINTFSUBST |
| #endif /* NOPRINTFSUBST */ |
| #endif /* OS2 */ |
| #ifndef NOLOGIN |
| #define NOLOGIN |
| #endif /* NOLOGIN */ |
| #ifndef NOSYSLOG |
| #define NOSYSLOG |
| #endif /* NOSYSLOG */ |
| #ifndef NOWTMP |
| #define NOWTMP |
| #endif /* NOWTMP */ |
| #else |
| #ifndef IKSD |
| #ifdef OS2ORUNIX /* Platforms where IKSD is supported */ |
| #define IKSD |
| #endif /* OS2ORUNIX */ |
| #endif /* IKSD */ |
| #endif /* NOIKSD */ |
| |
| #ifdef IKSD /* IKSD options... */ |
| #ifndef IKSDCONF /* IKSD configuration file */ |
| #ifdef UNIX |
| #define IKSDCONF "/etc/iksd.conf" |
| #else |
| #ifdef OS2 |
| #define IKSDCONF "iksd.ksc" |
| #endif /* OS2 */ |
| #endif /* UNIX */ |
| #endif /* IKSDCONF */ |
| #ifndef NOIKSDB |
| #ifndef IKSDB /* IKSD database */ |
| #ifdef UNIX |
| #define IKSDB |
| #define IK_LCKTRIES 16 /* How many times to try to get lock */ |
| #define IK_LCKSLEEP 1 /* How long to sleep between tries */ |
| #define IK_LOCKFILE "iksd.lck" /* Database lockfilename */ |
| #define IK_DBASEDIR "/var/log/" /* Database directory */ |
| #define IK_DBASEFIL "iksd.db" /* Database filename */ |
| #else /* UNIX */ |
| #ifdef OS2 |
| #define IKSDB |
| #ifndef NOFTRUNCATE /* ftruncate() not available */ |
| #define NOFTRUNCATE |
| #endif /* NOFTRUNCATE */ |
| #define IK_LCKTRIES 16 /* How many times to try to get lock */ |
| #define IK_LCKSLEEP 1 /* How long to sleep between tries */ |
| #define IK_LOCKFILE "iksd.lck" /* DB lockfilename (in systemroot) */ |
| #define IK_DBASEFIL "iksd.db" /* Database filename */ |
| #endif /* OS2 */ |
| #endif /* UNIX */ |
| #endif /* IKSDB */ |
| #endif /* NOIKSDB */ |
| #endif /* IKSD */ |
| /* |
| Substitutes for printf() and friends used in IKS to compensate for |
| lack of a terminal driver, mainly to supply CR after LF. |
| */ |
| #ifndef NOPRINTFSUBST |
| #ifdef MAC |
| /* |
| * The MAC doesn't use standard stdio routines. |
| */ |
| #undef getchar |
| #define getchar() mac_getchar() |
| #undef putchar |
| #define putchar(c) mac_putchar(c) |
| #define printf mac_printf |
| #define perror mac_perror |
| #define puts mac_puts |
| extern int mac_putchar (int c); |
| extern int mac_puts (const char *string); |
| extern int mac_printf(const char *, ...); |
| extern int mac_getchar (void); |
| #endif /* MAC */ |
| |
| #ifdef OS2 |
| #define printf Vscrnprintf |
| #define fprintf Vscrnfprintf |
| extern int Vscrnprintf(const char *, ...); |
| extern int Vscrnprintw(const char *, ...); |
| extern int Vscrnfprintf(FILE *, const char *, ...); |
| #ifdef putchar |
| #undef putchar |
| #endif /* putchar */ |
| #define putchar(x) Vscrnprintf("%c",x) |
| #define perror(x) Vscrnperror(x) |
| #endif /* OS2 */ |
| |
| #ifndef CKWART_C |
| #ifdef UNIX |
| #ifndef pdp11 |
| #ifndef CKXPRINTF |
| #define CKXPRINTF |
| #endif /* CKXPRINTF */ |
| #endif /* pdp11 */ |
| #endif /* UNIX */ |
| #endif /* CKWART_C */ |
| #endif /* NOPRINTFSUBST */ |
| |
| #ifdef CKXPRINTF |
| #define printf ckxprintf |
| #define fprintf ckxfprintf |
| #ifdef CK_ANSIC |
| _PROTOTYP(int ckxprintf,(const char *, ...)); |
| #ifdef NEXT |
| _PROTOTYP(void ckxperror,(const char *)); |
| #else |
| #ifdef CK_SCOV5 |
| _PROTOTYP(void ckxperror,(const char *)); |
| #else |
| _PROTOTYP(int ckxperror,(const char *)); |
| #endif /* CK_SCOV5 */ |
| #endif /* NEXT */ |
| _PROTOTYP(int ckxfprintf,(FILE *, const char *, ...)); |
| #endif /* CK_ANSIC */ |
| #ifdef putchar |
| #undef putchar |
| #endif /* putchar */ |
| #define putchar(x) ckxprintf("%c",x) |
| #ifdef putc |
| #undef putc |
| #endif /* putc */ |
| #define putc(a,b) ckxfprintf(b,"%c",a) |
| #define perror(x) ckxperror(x) |
| #endif /* CKXPRINTF */ |
| |
| /* |
| Altos-specific items: 486, 586, 986 models... |
| */ |
| #ifdef A986 |
| #define M_VOID |
| #define void int |
| #define CHAR char |
| #define SIG_I |
| #endif /* A986 */ |
| |
| /* Signal handling */ |
| |
| #ifdef QNX |
| #ifndef CK_POSIX_SIG |
| #define CK_POSIX_SIG |
| #endif /* CK_POSIX_SIG */ |
| #endif /* QNX */ |
| |
| /* Void type */ |
| |
| #ifndef VOID /* Used throughout all C-Kermit */ |
| #ifdef CK_ANSIC /* modules... */ |
| #define VOID void |
| #else |
| #define VOID int |
| #endif /* CK_ANSIC */ |
| #endif /* VOID */ |
| |
| /* Const type */ |
| |
| #ifndef CONST |
| #ifdef OSK |
| #ifdef _UCC |
| #define CONST const |
| #else |
| #define CONST |
| #endif /* _UCC */ |
| #else /* !OSK */ |
| #ifdef CK_SCO32V4 |
| #define CONST |
| #else |
| #ifdef CK_ANSIC |
| #define CONST const |
| #else |
| #define CONST |
| #endif /* CK_ANSIC */ |
| #endif /* CK_SCO32V4 */ |
| #endif /* OSK */ |
| #endif /* CONST */ |
| |
| /* Signal type */ |
| |
| #ifndef SIG_V /* signal() type, if not def'd yet */ |
| #ifndef SIG_I |
| #ifdef OS2 |
| #define SIG_V |
| #else |
| #ifdef POSIX |
| #define SIG_V |
| #else |
| #ifdef SVR3 /* System V R3 and later */ |
| #define SIG_V |
| #else |
| #ifdef SUNOS4 /* SUNOS V 4.0 and later */ |
| #ifndef sun386 |
| #define SIG_V |
| #else |
| #define SIG_I |
| #endif /* sun386 */ |
| #else |
| #ifdef NEXT /* NeXT */ |
| #define SIG_V |
| #else |
| #ifdef AIX370 |
| #include <signal.h> |
| #define SIG_V |
| #define SIGTYP __SIGVOID /* AIX370 */ |
| #else |
| #ifdef STRATUS /* Stratus VOS */ |
| #define SIG_V |
| #else |
| #ifdef MAC |
| #define SIGTYP long |
| #define SIG_I |
| #ifndef MPW33 |
| #define SIG_IGN 0 |
| #endif /* MPW33 */ |
| #define SIGALRM 1 |
| #ifndef MPW33 |
| #define SIGINT 2 |
| #endif /* MPW33 */ |
| #else /* Everything else */ |
| #define SIG_I |
| #endif /* MAC */ |
| #endif /* STRATUS */ |
| #endif /* AIX370 */ |
| #endif /* NEXT */ |
| #endif /* SUNOS4 */ |
| #endif /* SVR3 */ |
| #endif /* POSIX */ |
| #endif /* OS2 */ |
| #endif /* SIG_I */ |
| #endif /* SIG_V */ |
| |
| #ifdef SIG_I |
| #define SIGRETURN return(0) |
| #ifndef SIGTYP |
| #define SIGTYP int |
| #endif /* SIGTYP */ |
| #endif /* SIG_I */ |
| |
| #ifdef SIG_V |
| #define SIGRETURN return |
| #ifndef SIGTYP |
| #define SIGTYP void |
| #endif /* SIGTYP */ |
| #endif /* SIG_V */ |
| |
| #ifdef NT |
| #ifndef SIGTYP |
| #define SIGTYP void |
| #endif /* SIGTYP */ |
| #endif /* NT */ |
| |
| #ifndef SIGTYP |
| #define SIGTYP int |
| #endif /* SIGTYP */ |
| |
| #ifndef SIGRETURN |
| #define SIGRETURN return(0) |
| #endif /* SIGRETURN */ |
| |
| #ifdef CKNTSIG |
| /* This does not work, so don't use it. */ |
| #define signal ckntsignal |
| SIGTYP (*ckntsignal(int type, SIGTYP (*)(int)))(int); |
| #endif /* CKNTSIG */ |
| |
| /* We want all characters to be unsigned if the compiler supports it */ |
| |
| #ifdef KUI |
| #ifdef CHAR |
| #undef CHAR |
| #endif /* CHAR */ |
| #define CHAR unsigned char |
| #else |
| #ifdef PROVX1 |
| typedef char CHAR; |
| /* typedef long LONG; */ |
| typedef int void; |
| #else |
| #ifdef MINIX |
| typedef unsigned char CHAR; |
| #else |
| #ifdef V7 |
| typedef char CHAR; |
| #else |
| #ifdef C70 |
| typedef char CHAR; |
| /* typedef long LONG; */ |
| #else |
| #ifdef BSD29 |
| typedef char CHAR; |
| /* typedef long LONG; */ |
| #else |
| #ifdef datageneral |
| #define CHAR unsigned char /* 3.22 compiler */ |
| #else |
| #ifdef HPUX |
| #define CHAR unsigned char |
| #else |
| #ifdef OS2 |
| #ifdef NT |
| #define CHAR unsigned char |
| #else /* NT */ |
| #ifdef CHAR |
| #undef CHAR |
| #endif /* CHAR */ |
| typedef unsigned char CHAR; |
| #endif /* NT */ |
| #else /* OS2 */ |
| #ifdef VMS |
| typedef unsigned char CHAR; |
| #else |
| #ifdef CHAR |
| #undef CHAR |
| #endif /* CHAR */ |
| typedef unsigned char CHAR; |
| #endif /* VMS */ |
| #endif /* OS2 */ |
| #endif /* HPUX */ |
| #endif /* datageneral */ |
| #endif /* BSD29 */ |
| #endif /* C70 */ |
| #endif /* V7 */ |
| #endif /* MINIX */ |
| #endif /* PROVX1 */ |
| #endif /* KUI */ |
| |
| union ck_short { /* Mainly for Unicode */ |
| USHORT x_short; |
| CHAR x_char[2]; |
| }; |
| |
| #ifdef MAC /* Macintosh file routines */ |
| #ifndef CKWART_C /* But not in "wart"... */ |
| #ifdef feof |
| #undef feof |
| #endif /* feof */ |
| #define feof mac_feof |
| #define rewind mac_rewind |
| #define fgets mac_fgets |
| #define fopen mac_fopen |
| #define fclose mac_fclose |
| int mac_feof(); |
| void mac_rewind(); |
| char *mac_fgets(); |
| FILE *mac_fopen(); |
| int mac_fclose(); |
| #endif /* CKCPRO_W */ |
| #endif /* MAC */ |
| /* |
| Systems whose mainline modules have access to the communication-line |
| file descriptor, ttyfd. |
| */ |
| #ifndef CK_TTYFD |
| #ifdef UNIX |
| #define CK_TTYFD |
| #else |
| #ifdef OS2 |
| #define CK_TTYFD |
| #else |
| #ifdef VMS |
| #define CK_TTYFD |
| #endif /* VMS */ |
| #endif /* OS2 */ |
| #endif /* UNIX */ |
| #endif /* CK_TTYFD */ |
| |
| /* Systems where we can get our own process ID */ |
| |
| #ifndef CK_PID |
| #ifdef UNIX |
| #define CK_PID |
| #endif /* UNIX */ |
| #ifdef OS2 |
| #define CK_PID |
| #endif /* OS2 */ |
| #ifdef VMS |
| #define CK_PID |
| #endif /* VMS */ |
| #endif /* CK_PID */ |
| |
| /* Systems that support the Microsoft Telephony API (TAPI) */ |
| |
| #ifndef NODIAL |
| #ifndef CK_TAPI |
| #ifdef NT |
| #define CK_TAPI |
| #endif /* NT */ |
| #endif /* CK_TAPI */ |
| #endif /* NODIAL */ |
| |
| #ifndef NONZXPAND |
| #ifndef NZXPAND |
| #ifdef OS2ORUNIX |
| #define NZXPAND |
| #else |
| #ifdef VMS |
| #define NZXPAND |
| #else |
| #ifdef datageneral |
| #define NZXPAND |
| #else |
| #ifdef OSK |
| #define NZXPAND |
| #endif /* OSK */ |
| #endif /* datageneral */ |
| #endif /* VMS */ |
| #endif /* OS2ORUNIX */ |
| #endif /* NZXPAND */ |
| #else |
| #ifdef NZXPAND |
| #undef NZXPAND |
| #endif /* NZXPAND */ |
| #endif /* NONZXPAND */ |
| |
| /* nzxpand() option flags */ |
| |
| #define ZX_FILONLY 1 /* Match only regular files */ |
| #define ZX_DIRONLY 2 /* Match only directories */ |
| #define ZX_RECURSE 4 /* Descend through directory tree */ |
| #define ZX_MATCHDOT 8 /* Match "dot files" */ |
| #define ZX_NOBACKUP 16 /* Don't match "backup files" */ |
| #define ZX_NOLINKS 32 /* Don't follow symlinks */ |
| |
| #ifndef NZXPAND |
| #define nzxpand(a,b) zxpand(a) |
| #endif /* NZXPAND */ |
| |
| #ifndef NOZXREWIND |
| #ifndef ZXREWIND /* Platforms that have zxrewind() */ |
| #ifdef OS2ORUNIX |
| #define ZXREWIND |
| #else |
| #ifdef VMS |
| #define ZXREWIND |
| #else |
| #ifdef datageneral |
| #define ZXREWIND |
| #else |
| #ifdef OSK |
| #define ZXREWIND |
| #else |
| #ifdef STRATUS |
| #define ZXREWIND |
| #endif /* STRATUS */ |
| #endif /* OSK */ |
| #endif /* datageneral */ |
| #endif /* VMS */ |
| #endif /* OS2ORUNIX */ |
| #endif /* ZXREWIND */ |
| #else |
| #ifdef ZXREWIND |
| #undef ZXREWIND |
| #endif /* ZXREWIND */ |
| #endif /* NOZXREWIND */ |
| |
| /* Temporary-directory-for-RECEIVE feature ... */ |
| /* This says whether we have the isdir() function defined. */ |
| |
| #ifdef UNIX /* UNIX has it */ |
| #ifndef CK_TMPDIR |
| #ifndef pdp11 |
| #define CK_TMPDIR |
| #define TMPDIRLEN 256 |
| #endif /* pdp11 */ |
| #endif /* CK_TMPDIR */ |
| #endif /* UNIX */ |
| |
| #ifdef VMS /* VMS too */ |
| #ifndef CK_TMPDIR |
| #define CK_TMPDIR |
| #define TMPDIRLEN 256 |
| #endif /* CK_TMPDIR */ |
| #endif /* VMS */ |
| |
| #ifdef OS2 /* OS two too */ |
| #ifndef CK_TMPDIR |
| #define CK_TMPDIR |
| #define TMPDIRLEN 129 |
| #endif /* CK_TMPDIR */ |
| #endif /* OS2 */ |
| |
| #ifdef STRATUS /* Stratus VOS too. */ |
| #ifndef CK_TMPDIR |
| #define CK_TMPDIR |
| #define TMPDIRLEN 256 |
| #endif /* CK_TMPDIR */ |
| #endif /* STRATUS */ |
| |
| #ifdef OSK /* OS-9 too */ |
| #ifndef CK_TMPDIR |
| #define CK_TMPDIR |
| #define TMPDIRLEN 256 |
| #endif /* CK_TMPDIR */ |
| #endif /* OSK */ |
| |
| #ifdef datageneral /* AOS/VS too */ |
| #ifndef CK_TMPDIR |
| #define CK_TMPDIR |
| #define TMPDIRLEN 256 |
| #endif /* CK_TMPDIR */ |
| #endif /* datageneral */ |
| |
| #ifdef CK_TMPDIR /* Needs command parser */ |
| #ifdef NOICP |
| #undef CK_TMPDIR |
| #endif /* NOICP */ |
| #endif /* CK_TMPDIR */ |
| |
| /* Whether to include <sys/time.h> */ |
| |
| #ifndef NOTIMEH /* <time.h> */ |
| #ifndef TIMEH |
| #define TIMEH |
| #endif /* TIMEH */ |
| #endif /* NOTIMEH */ |
| |
| #ifndef NOSYSTIMEH /* <sys/time.h> */ |
| #ifndef SYSTIMEH |
| #ifdef UNIX /* UNIX */ |
| #ifdef SVORPOSIX /* System V or POSIX... */ |
| #ifdef M_UNIX |
| #define SYSTIMEH |
| #else |
| #ifdef SCO_32V4 |
| #define SYSTIMEH |
| #else |
| #ifdef OXOS |
| #define SYSTIMEH |
| #else |
| #ifdef BSD44 |
| #define SYSTIMEH |
| #else |
| #ifdef __linux__ |
| #define SYSTIMEH |
| #else |
| #ifdef AIXRS |
| #ifndef AIX41 |
| #define SYSTIMEH |
| #endif /* AIX41 */ |
| #else |
| #ifdef IRIX60 |
| #define SYSTIMEH |
| #else |
| #ifdef I386IX |
| #define SYSTIMEH |
| #else |
| #ifdef SV68R3V6 |
| #define SYSTIMEH |
| #endif /* SV68R3V6 */ |
| #endif /* I386IX */ |
| #endif /* IRIX60 */ |
| #endif /* AIXRS */ |
| #endif /* __linux__ */ |
| #endif /* BSD44 */ |
| #endif /* OXOS */ |
| #endif /* SCO_32V4 */ |
| #endif /* M_UNIX */ |
| |
| #else /* Not SVORPOSIX */ |
| |
| #ifndef BELLV10 /* All but these... */ |
| #ifndef PROVX1 |
| #ifndef V7 |
| #ifndef BSD41 |
| #ifndef COHERENT |
| #define SYSTIMEH |
| #endif /* COHERENT */ |
| #endif /* BSD41 */ |
| #endif /* V7 */ |
| #endif /* PROVX1 */ |
| #endif /* BELLV10 */ |
| #endif /* SVORPOSIX */ |
| #endif /* UNIX */ |
| #endif /* SYSTIMEH */ |
| #endif /* NOSYSTIMEH */ |
| |
| #ifndef NOSYSTIMEBH /* <sys/timeb.h> */ |
| #ifndef SYSTIMEBH |
| #ifdef OSF |
| #define SYSTIMEBH |
| #else |
| #ifdef COHERENT |
| #define SYSTIMEBH |
| #else |
| #ifdef BSD41 |
| #define SYSTIMEBH |
| #else |
| #ifdef BSD29 |
| #define SYSTIMEBH |
| #else |
| #ifdef TOWER1 |
| #define SYSTIMEBH |
| #else |
| #ifdef FT21 |
| #define SYSTIMEBH |
| #else |
| #ifdef BELLV10 |
| #define SYSTIMEBH |
| #endif /* BELLV10 */ |
| #endif /* FT21 */ |
| #endif /* TOWER1 */ |
| #endif /* BSD29 */ |
| #endif /* BSD41 */ |
| #endif /* COHERENT */ |
| #endif /* OSF */ |
| #endif /* SYSTIMEBH */ |
| #endif /* NOSYSTIMEBH */ |
| |
| /* |
| Debug and transaction logging is included automatically unless you define |
| NODEBUG or NOTLOG. Do this if you want to save the space and overhead. |
| (Note, in version 4F these definitions changed from "{}" to the null string |
| to avoid problems with semicolons after braces, as in: "if (x) tlog(this); |
| else tlog(that);" |
| */ |
| #ifndef NODEBUG |
| #ifndef DEBUG |
| #define DEBUG |
| #endif /* DEBUG */ |
| #else |
| #ifdef DEBUG |
| #undef DEBUG |
| #endif /* DEBUG */ |
| #endif /* NODEBUG */ |
| |
| #ifdef NOTLOG |
| #ifdef TLOG |
| #undef TLOG |
| #endif /* TLOG */ |
| #else /* NOTLOG */ |
| #ifndef TLOG |
| #define TLOG |
| #endif /* TLOG */ |
| #endif /* NOTLOG */ |
| |
| /* debug() macro style selection. */ |
| |
| #ifdef VMS |
| #ifndef IFDEBUG |
| #define IFDEBUG |
| #endif /* IFDEBUG */ |
| #endif /* VMS */ |
| |
| #ifdef MAC |
| #ifndef IFDEBUG |
| #define IFDEBUG |
| #endif /* IFDEBUG */ |
| #endif /* MAC */ |
| |
| #ifdef OS2 |
| #ifndef IFDEBUG |
| #define IFDEBUG |
| #endif /* IFDEBUG */ |
| #endif /* OS2 */ |
| |
| #ifdef OXOS /* tst is faster than jsr */ |
| #ifndef IFDEBUG |
| #define IFDEBUG |
| #endif /* IFDEBUG */ |
| #endif /* OXOS */ |
| |
| #ifndef CKCMAI |
| extern int deblog; |
| extern int debok; |
| extern int debxlen; |
| extern int matchdot; |
| extern int tt_bell; |
| #endif /* CKCMAI */ |
| |
| #ifdef OS2 |
| _PROTOTYP( void bleep, (short) ); |
| #else /* OS2 */ |
| #define bleep(x) if(tt_bell)putchar('\07') |
| #endif /* OS2 */ |
| |
| #ifndef BEOSORBEBOX |
| #ifdef BEBOX /* This was used only for DR7 */ |
| #define BEOSORBEBOX |
| #else |
| #ifdef BEOS /* This is used for BeOS 4.x */ |
| #define BEOSORBEBOX |
| #endif /* BEOS */ |
| #endif /* BEBOX */ |
| #endif /* BEOSORBEBOX */ |
| |
| #ifdef NOICP |
| #ifdef TLOG |
| #undef TLOG |
| #endif /* TLOG */ |
| #endif /* NOICP */ |
| |
| #ifndef TLOG |
| #define tlog(a,b,c,d) |
| #else |
| #ifndef CKCMAI |
| /* Debugging included. Declare debug log flag in main program only. */ |
| extern int tralog, tlogfmt; |
| #endif /* CKCMAI */ |
| _PROTOTYP(VOID dotlog,(int, char *, char *, long)); |
| #define tlog(a,b,c,d) if (tralog && tlogfmt) dotlog(a,b,c,d) |
| _PROTOTYP(VOID doxlog,(int, char *, long, int, int, char *)); |
| #endif /* TLOG */ |
| |
| /* Formats for debug() and tlog() */ |
| |
| #define F000 0 |
| #define F001 1 |
| #define F010 2 |
| #define F011 3 |
| #define F100 4 |
| #define F101 5 |
| #define F110 6 |
| #define F111 7 |
| |
| #ifdef __linux__ |
| #ifndef LINUX |
| #define LINUX |
| #endif /* LINUX */ |
| #endif /* __linux__ */ |
| |
| /* Platforms where small size is needed */ |
| |
| #ifdef pdp11 |
| #define CK_SMALL |
| #endif /* pdp11 */ |
| |
| /* Can we use realpath()? */ |
| |
| #ifndef NOREALPATH |
| #ifdef pdp11 |
| #define NOREALPATH |
| #endif /* pdp11 */ |
| #endif /* NOREALPATH */ |
| |
| #ifndef NOREALPATH |
| #ifdef UNIX |
| #ifdef HPUX5 |
| #define NOREALPATH |
| #else |
| #ifdef HPUX6 |
| #define NOREALPATH |
| #else |
| #ifdef HPUX7 |
| #define NOREALPATH |
| #else |
| #ifdef HPUX8 |
| #define NOREALPATH |
| #else |
| #ifdef SV68R3V6 |
| #define NOREALPATH |
| #else |
| #ifdef XENIX |
| #define NOREALPATH |
| #else |
| #ifdef CK_SCO32V4 |
| #define NOREALPATH |
| #else |
| #ifdef CK_SCOV5 |
| #define NOREALPATH |
| #else |
| #ifdef OSF32 |
| #define NOREALPATH |
| #else |
| #ifdef OSF30 |
| #define NOREALPATH |
| #else |
| #ifdef ultrix |
| #define NOREALPATH |
| #else |
| #ifdef COHERENT |
| #define NOREALPATH |
| #endif /* COHERENT */ |
| #endif /* ultrix */ |
| #endif /* OSF30 */ |
| #endif /* OSF32 */ |
| #endif /* CK_SCOV5 */ |
| #endif /* CK_SCO32V4 */ |
| #endif /* XENIX */ |
| #endif /* SV68R3V6 */ |
| #endif /* HPUX8 */ |
| #endif /* HPUX7 */ |
| #endif /* HPUX6 */ |
| #endif /* HPUX5 */ |
| #endif /* NOREALPATH */ |
| |
| #ifndef NOREALPATH |
| #ifndef CKREALPATH |
| #define CKREALPATH |
| #endif /* NOREALPATH */ |
| #endif /* CKREALPATH */ |
| #endif /* UNIX */ |
| |
| #ifdef CKREALPATH |
| #ifdef OS2ORUNIX |
| #ifndef CKROOT |
| #define CKROOT |
| #endif /* CKROOT */ |
| #endif /* OS2ORUNIX */ |
| #endif /* CKREALPATH */ |
| |
| /* CKSYMLINK should be set only if we can use readlink() */ |
| |
| #ifdef UNIX |
| #ifndef NOSYMLINK |
| #ifndef CKSYMLINK |
| #define CKSYMLINK |
| #endif /* NOSYMLINK */ |
| #endif /* CKSYMLINK */ |
| #endif /* UNIX */ |
| |
| /* Platforms where we can use lstat() instead of stat() (for symlinks) */ |
| /* This should be set only if both lstat() and readlink() are available */ |
| |
| #ifndef NOLSTAT |
| #ifndef NOSYMLINK |
| #ifndef USE_LSTAT |
| #ifdef UNIX |
| #ifdef CKSYMLINK |
| #ifdef SVR4 /* SVR4 has lstat() */ |
| #define USE_LSTAT |
| #else |
| #ifdef BSD42 /* 4.2BSD and 4.3BSD have it */ |
| #define USE_LSTAT /* This should include old HPUXs */ |
| #else |
| #ifdef BSD44 /* 4.4BSD has it */ |
| #define USE_LSTAT |
| #else |
| #ifdef LINUX /* LINUX has it */ |
| #define USE_LSTAT |
| #else |
| #ifdef SUNOS4 /* SunOS has it */ |
| #define USE_LSTAT |
| #endif /* SUNOS4 */ |
| #endif /* LINUX */ |
| #endif /* BSD44 */ |
| #endif /* BSD42 */ |
| #endif /* SVR4 */ |
| #endif /* CKSYMLINK */ |
| #endif /* UNIX */ |
| #endif /* USE_LSTAT */ |
| #endif /* NOSYMLINK */ |
| #endif /* NOLSTAT */ |
| |
| #ifdef NOLSTAT |
| #ifdef USE_LSTAT |
| #undef USE_LSTAT |
| #endif /* USE_LSTAT */ |
| #endif /* NOLSTAT */ |
| |
| #ifndef NOTTYLOCK /* UNIX systems that have ttylock() */ |
| #ifndef USETTYLOCK |
| #ifdef AIXRS /* AIX 3.1 and later */ |
| #define USETTYLOCK |
| #else |
| #ifdef USE_UU_LOCK /* FreeBSD or other with uu_lock() */ |
| #define USETTYLOCK |
| #else |
| #ifdef HAVE_BAUDBOY /* Red Hat Linux >= 7.2 */ |
| #define USETTYLOCK |
| #endif /* HAVE_BAUDBOY */ |
| #endif /* USE_UU_LOCK */ |
| #endif /* AIXRS */ |
| #endif /* USETTYLOCK */ |
| #endif /* NOTTYLOCK */ |
| |
| /* Kermit feature selection */ |
| |
| #ifndef NOSPL |
| #ifndef NOCHANNELIO /* Channel-based file i/o package */ |
| #ifndef CKCHANNELIO |
| #ifdef UNIX |
| #define CKCHANNELIO |
| #else |
| #ifdef OS2 |
| #define CKCHANNELIO |
| #else |
| #ifdef VMS |
| #define CKCHANNELIO |
| #else |
| #ifdef STRATUS |
| #define CKCHANNELIO |
| #endif /* STRATUS */ |
| #endif /* VMS */ |
| #endif /* OS2 */ |
| #endif /* UNIX */ |
| #endif /* CKCHANNELIO */ |
| #endif /* NOCHANNELIO */ |
| #endif /* NOSPL */ |
| |
| #ifndef NOCKEXEC /* EXEC command */ |
| #ifndef NOPUSH |
| #ifndef CKEXEC |
| #ifdef UNIX /* UNIX can do it */ |
| #define CKEXEC |
| #endif /* UNIX */ |
| #endif /* CKEXEC */ |
| #endif /* NOPUSH */ |
| #endif /* NOCKEXEC */ |
| |
| #ifndef NOFAST /* Fast Kermit protocol by default */ |
| #ifndef CK_FAST |
| #ifdef UNIX |
| #define CK_FAST |
| #else |
| #ifdef VMS |
| #define CK_FAST |
| #else |
| #ifdef OS2 |
| #define CK_FAST |
| #endif /* OS2 */ |
| #endif /* VMS */ |
| #endif /* UNIX */ |
| #endif /* CK_FAST */ |
| #endif /* NOFAST */ |
| |
| #ifdef UNIX /* Transparent print */ |
| #ifndef NOXPRINT |
| #ifndef XPRINT |
| #define XPRINT |
| #endif /* XPRINT */ |
| #endif /* NOXPRINT */ |
| #endif /* UNIX */ |
| |
| #ifndef NOHWPARITY /* Hardware parity */ |
| #ifndef HWPARITY |
| #ifdef SVORPOSIX /* System V or POSIX can have it */ |
| #define HWPARITY |
| #else |
| #ifdef SUNOS41 /* SunOS 4.1 can have it */ |
| #define HWPARITY |
| #else |
| #ifdef OS2 /* K95 can have it */ |
| #define HWPARITY |
| #endif /* OS2 */ |
| #endif /* SUNOS41 */ |
| #endif /* SVORPOSIX */ |
| #endif /* HWPARITY */ |
| #endif /* NOHWPARITY */ |
| |
| #ifndef NOSTOPBITS /* Stop-bit selection */ |
| #ifndef STOPBITS |
| #ifdef OS2ORUNIX |
| /* In Unix really this should only be if CSTOPB is defined. */ |
| /* But we don't know that yet. */ |
| #define STOPBITS |
| #else |
| #ifdef TN_COMPORT |
| #define STOPBITS |
| #endif /* TN_COMPORT */ |
| #endif /* OS2ORUNIX */ |
| #endif /* STOPBITS */ |
| #endif /* NOSTOPBITS */ |
| |
| #ifdef UNIX |
| #ifndef NETCMD /* Can SET NETWORK TYPE COMMAND */ |
| #define NETCMD |
| #endif /* NETCMD */ |
| #endif /* UNIX */ |
| |
| /* Pty support, nonportable, available on a case-by-case basis */ |
| |
| #ifndef NOPTY |
| #ifdef NEXT /* NeXTSTEP (tested on 3.1)*/ |
| #define NETPTY |
| #else |
| #ifdef CK_SCOV5 /* SCO OSR5 (tested on 5.0.5)*/ |
| #define NETPTY |
| #else |
| #ifdef QNX /* QNX (tested on 4.25) */ |
| #define NETPTY |
| #else |
| #ifdef SINIX /* Sinix (tested on 5.42) */ |
| #define NETPTY |
| #else |
| #ifdef DGUX540 /* DG/UX 5.4++ (tested on 5.4R4.11) */ |
| #define NETPTY |
| #else |
| #ifdef OSF32 /* Digital Unix 3.2 */ |
| #define NETPTY |
| #else |
| #ifdef OSF40 /* Digital Unix 4.0 / Tru64 */ |
| #define NETPTY |
| #else |
| #ifdef IRIX60 /* IRIX 6.0 (not earlier) */ |
| #define NETPTY |
| #else |
| #ifdef HPUX10 /* HPUX 10.00 or later */ |
| #define NETPTY |
| #ifndef HAVE_PTYTRAP |
| #define HAVE_PTYTRAP |
| #endif /* HAVE_PTYTRAP */ |
| #else |
| #ifdef HPUX9 /* HPUX 9.00 (not earlier) */ |
| #define NETPTY |
| #ifndef HAVE_PTYTRAP |
| #define HAVE_PTYTRAP |
| #endif /* HAVE_PTYTRAP */ |
| #else |
| #ifdef BSD44 /* BSD44, {Net,Free,Open}BSD */ |
| #define NETPTY |
| #else |
| #ifdef BSDI /* BSDI/OS (tested in 4) */ |
| #define NETPTY |
| #else |
| #ifdef SOLARIS /* Solaris (tested in 2.5) */ |
| #define NETPTY |
| #else |
| #ifdef UW7 /* Unixware 7 */ |
| #define NETPTY |
| #else |
| #ifdef SUNOS41 /* SunOS (tested in 4.1.3) */ |
| #define NETPTY |
| #else |
| #ifdef AIX41 /* AIX 4.1 and later */ |
| #define NETPTY |
| #else |
| #ifdef LINUX /* Linux */ |
| #define NETPTY |
| #endif /* LINUX */ |
| #endif /* AIX41 */ |
| #endif /* SUNOS41 */ |
| #endif /* UW7 */ |
| #endif /* SOLARIS */ |
| #endif /* BSDI */ |
| #endif /* BSD44 */ |
| #endif /* HPUX9 */ |
| #endif /* HPUX10 */ |
| #endif /* IRIX60 */ |
| #endif /* OSF40 */ |
| #endif /* OSF32 */ |
| #endif /* DGUX540 */ |
| #endif /* SINIX */ |
| #endif /* QNX */ |
| #endif /* CK_SCOV5 */ |
| #endif /* NEXT */ |
| |
| #else /* NOPTY */ |
| |
| #ifdef NETPTY |
| #undef NETPTY |
| #endif /* NETPTY */ |
| #endif /* NOPTY */ |
| |
| #ifdef NETPTY /* NETCMD required for NETPTY */ |
| #ifndef NETCMD |
| #define NETCMD |
| #endif /* NETCMD */ |
| #endif /* NETPTY */ |
| |
| #ifndef CK_UTSNAME /* Can we call uname()? */ |
| #ifdef VMS |
| #define CK_UTSNAME |
| #else |
| #ifdef OS2 |
| #define CK_UTSNAME |
| #else |
| #ifdef POSIX /* It's in POSIX.1 */ |
| #define CK_UTSNAME |
| #else |
| #ifdef SUNOS41 /* It's in SunOS 4.1 */ |
| #define CK_UTSNAME |
| #else |
| #ifdef AIXRS /* It's in AIX */ |
| #define CK_UTSNAME |
| #else |
| #ifdef SVR4 /* It's in SVR4 (but not SVR3) */ |
| #define CK_UTSNAME |
| #else |
| #ifdef HPUX /* It's in HP-UX 5.00 and later */ |
| #define CK_UTSNAME |
| #else |
| #ifdef OSF /* It's in OSF/1 / Digital UNIX */ |
| #define CK_UTSNAME |
| #else |
| #ifdef CK_SCOV5 |
| #define CK_UTSNAME |
| #endif /* CK_SCOV5 */ |
| #endif /* OSF */ |
| #endif /* HPUX */ |
| #endif /* SVR4 */ |
| #endif /* AIXRS */ |
| #endif /* SUNOS41 */ |
| #endif /* POSIX */ |
| #endif /* OS2 */ |
| #endif /* VMS */ |
| #endif /* CK_UTSNAME */ |
| |
| /* This section for anything that might use floating-point */ |
| |
| /* If the following causes trouble use -DFLOAT=float on the command line */ |
| |
| #ifdef NOSPL |
| #ifdef FNFLOAT |
| #undef FNFLOAT |
| #endif /* FNFLOAT */ |
| #ifdef CKFLOAT |
| #undef CKFLOAT |
| #endif /* CKFLOAT */ |
| #endif /* NOSPL */ |
| |
| #ifndef NOFLOAT |
| |
| #ifndef CKFLOAT |
| #ifdef __alpha |
| /* Don't use double on 64-bit platforms -- bad things happen */ |
| #define CKFLOAT float |
| #define CKFLOAT_S "float" |
| #else |
| #define CKFLOAT double |
| #define CKFLOAT_S "double" |
| #endif /* __alpha */ |
| #endif /* CKFLOAT */ |
| |
| #ifndef NOGFTIMER /* Floating-point timers */ |
| #ifndef GFTIMER |
| #ifdef UNIX /* For UNIX */ |
| #define GFTIMER |
| #endif /* UNIX */ |
| #ifdef VMS /* VMS */ |
| #ifndef OLD_VMS /* 5.0 and later */ |
| #define GFTIMER |
| #endif /* OLD_VMS */ |
| #endif /* VMS */ |
| #ifdef OS2 /* And K95 */ |
| #define GFTIMER |
| #endif /* OS2 */ |
| #ifdef STRATUS /* And Stratus VOS */ |
| #define GFTIMER |
| #endif /* STRATUS */ |
| #endif /* GFTIMER */ |
| #endif /* NOGFTIMER */ |
| |
| #ifndef NOSPL |
| #ifndef FNFLOAT /* Floating-point math functions */ |
| #ifdef VMS /* defined by default in VMS */ |
| #define FNFLOAT |
| #else |
| #ifdef OS2 /* and K95 */ |
| #define FNFLOAT |
| #endif /* OS2 */ |
| #endif /* VMS */ |
| #endif /* FNFLOAT */ |
| #endif /* NOSPL */ |
| |
| #else /* NOFLOAT is defined */ |
| |
| #ifdef CKFLOAT |
| #undef CKFLOAT |
| #endif /* CKFLOAT */ |
| |
| #ifdef GFTIMER |
| #undef GFTIMER |
| #endif /* GFTIMER */ |
| |
| #ifdef FNFLOAT |
| #undef FNFLOAT |
| #endif /* FNFLOAT */ |
| |
| #endif /* NOFLOAT */ |
| |
| #ifdef GFTIMER /* Fraction of second to use when */ |
| #ifndef GFMINTIME /* elapsed time is <= 0 */ |
| #define GFMINTIME 0.005 |
| #endif /* GFMINTIME */ |
| #endif /* GFTIMER */ |
| |
| #ifndef CKCMAI |
| extern long ztmsec, ztusec; /* Fraction of sec of current time */ |
| #endif /* CKCMAI */ |
| |
| #ifndef NOUNPREFIXZERO /* Allow unprefixing of NUL (0) */ |
| #ifndef UNPREFIXZERO /* in file-transfer packets */ |
| #define UNPREFIXZERO |
| #endif /* UNPREFIXZERO */ |
| #endif /* NOUNPREFIXZERO */ |
| |
| #ifdef CK_SMALL |
| #define NOCAL /* Calibrate */ |
| #endif /* CK_SMALL */ |
| |
| #ifndef NOPATTERNS /* Filetype matching patterns */ |
| #ifndef PATTERNS |
| #ifndef VMS |
| #ifndef CK_SMALL |
| #define PATTERNS |
| #endif /* CK_SMALL */ |
| #endif /* VMS */ |
| #endif /* PATTERNS */ |
| #endif /* NOPATTERNS */ |
| |
| #ifndef NOCAL |
| #ifndef CALIBRATE |
| #define CALIBRATE |
| #endif /* CALIBRATE */ |
| #else |
| #ifdef CALIBRATE |
| #undef CALIBRATE |
| #endif /* CALIBRATE */ |
| #endif /* NOCAL */ |
| |
| #ifndef NORECURSE /* Recursive directory traversal */ |
| #ifndef RECURSIVE |
| #ifdef VMS |
| #define RECURSIVE |
| #else |
| #ifdef OS2ORUNIX |
| #ifndef CK_SMALL |
| #define RECURSIVE |
| #endif /* CK_SMALL */ |
| #else |
| #ifdef STRATUS |
| #define RECURSIVE |
| #else |
| #ifdef OSK |
| #define RECURSIVE |
| #endif /* OSK */ |
| #endif /* STRATUS */ |
| #endif /* OS2ORUNIX */ |
| #endif /* VMS */ |
| #endif /* RECURSIVE */ |
| #endif /* NORECURSE */ |
| |
| #ifndef CK_SMALL /* Enable file-transfer tuning code */ |
| #ifndef CKTUNING /* in which more code is added */ |
| #ifndef NOTUNING /* to avoid function calls, etc */ |
| #define CKTUNING |
| #endif /* NOTUNING */ |
| #endif /* CKTUNING */ |
| #endif /* CK_SMALL */ |
| |
| #ifndef NOURL /* Parse URLs in SET HOST, etc */ |
| #define CK_URL |
| #define NO_FTP_AUTH /* No auth "ftp" / "anonymous" */ |
| #endif /* NOURL */ |
| |
| #ifndef NOTRIGGER |
| #ifndef CK_TRIGGER /* Trigger string to exit CONNECT */ |
| #ifdef OS2ORUNIX /* OK for UNIX and K95 */ |
| #define CK_TRIGGER |
| #else |
| #ifdef VMS /* and VMS */ |
| #define CK_TRIGGER |
| #else |
| #ifdef datageneral /* and AOS/VS */ |
| #define CK_TRIGGER |
| #endif /* datageneral */ |
| #endif /* OS2ORUNIX */ |
| #endif /* VMS */ |
| #endif /* CK_TRIGGER */ |
| #endif /* NOTRIGGER */ |
| |
| #ifdef CK_TRIGGER |
| #define TRIGGERS 8 /* How many triggers allowed */ |
| #endif /* CK_TRIGGER */ |
| |
| #ifndef XLIMITS /* CONNECT limits */ |
| #ifdef OS2 |
| #define XLIMITS |
| #endif /* OS2 */ |
| #endif /* XLIMITS */ |
| |
| #ifdef NOFRILLS |
| #ifndef NOBROWSER |
| #define NOBROWSER |
| #endif /* NOBROWSER */ |
| #ifndef NOFTP |
| #define NOFTP |
| #endif /* NOFTP */ |
| #endif /* NOFRILLS */ |
| |
| #ifndef NOHTTP /* HTTP features need... */ |
| #ifdef NOICP /* an interactive command parser */ |
| #define NOHTTP |
| #endif /* NOICP */ |
| #ifndef VMS |
| #ifndef OS2ORUNIX /* K95 or UNIX (because of */ |
| #define NOHTTP /* time functions, time_t, etc) */ |
| #endif /* OS2ORUNIX */ |
| #endif /* VMS */ |
| #endif /* NOHTTP */ |
| |
| |
| #ifndef NONET |
| #ifdef TCPSOCKET |
| |
| /* The HTTP code is not very portable, so it must be asked for with -DCKHTTP */ |
| |
| #ifndef NOHTTP |
| #ifndef CKHTTP |
| #ifdef SUNOS4 /* We can use it in SunOS */ |
| #define CKHTTP |
| #endif /* SUNOS4 */ |
| #ifdef SOLARIS /* And in Solaris */ |
| #define CKHTTP |
| #endif /* SOLARIS */ |
| #ifdef LINUX /* And Linux */ |
| #define CKHTTP |
| #endif /* LINUX */ |
| #ifdef HPUX10 /* And HP-UX 10 and above */ |
| #define CKHTTP |
| #endif /* HPUX10 */ |
| #ifdef OS2 /* And in K-95 */ |
| #define CKHTTP |
| #endif /* OS2 */ |
| #ifdef AIX41 /* In AIX 4.1 and higher */ |
| #define CKHTTP |
| #endif /* AIX41 */ |
| #ifdef UNIXWARE /* In Unixware 2.1 and higher */ |
| #define CKHTTP /* and probably also in 1.x and 2.0 */ |
| #endif /* UNIXWARE */ |
| #ifdef CK_SCOV5 |
| #define CKHTTP |
| #endif /* CK_SCOV5 */ |
| #ifdef OSF /* And in OSF Digital UNIX/True 64 */ |
| #define CKHTTP |
| #endif /* OSF */ |
| #ifdef ultrix /* And in Ultrix Mips */ |
| #ifdef mips |
| #define CKHTTP |
| #endif /* mips */ |
| #endif /* ultrix */ |
| /* Add more here... */ |
| #endif /* CKHTTP */ |
| #ifndef CKHTTP /* If CKHTTP not defined yet */ |
| #define NOHTTP /* then define HOHTTP */ |
| #endif /* CKHTTP */ |
| #endif /* NOHTTP */ |
| |
| #ifdef NETCONN /* Special "network" types... */ |
| #ifndef NOLOCAL |
| #ifdef OS2 |
| #ifndef NETFILE |
| #define NETFILE |
| #endif /* NETFILE */ |
| #ifndef NOPUSH |
| #ifndef NETCMD |
| #define NETCMD |
| #endif /* NETCMD */ |
| #endif /* NOPUSH */ |
| #ifdef NT |
| #ifndef NETDLL |
| #define NETDLL |
| #endif /* NETDLL */ |
| #endif /* NT */ |
| #endif /* OS2 */ |
| #endif /* NOLOCAL */ |
| #endif /* NETCONN */ |
| |
| #ifndef NOFTP |
| #ifndef SYSFTP |
| #ifndef NEWFTP |
| #ifdef OS2ORUNIX |
| #define NEWFTP |
| #endif /* OS2ORUNIX */ |
| #endif /* NEWFTP */ |
| #endif /* SYSFTP */ |
| #endif /* NOFTP */ |
| |
| #ifndef NOFTP |
| #ifdef NEWFTP |
| #ifdef SYSFTP |
| #undef SYSFTP |
| #endif /* SYSFTP */ |
| #else /* NEWFTP */ |
| #ifndef SYSFTP |
| #define SYSFTP |
| #endif /* SYSFTP */ |
| #endif /* NEWFTP */ |
| #else /* NOFTP */ |
| #ifdef NEWFTP |
| #undef NEWFTP |
| #endif /* NEWFTP */ |
| #ifdef SYSFTP |
| #undef SYSFTP |
| #endif /* SYSFTP */ |
| #endif /* NOFTP */ |
| |
| #ifndef NOBROWSER |
| #ifdef UNIX |
| #ifndef BROWSER |
| #ifndef NOPUSH |
| #define BROWSER |
| #endif /* NOPUSH */ |
| #endif /* BROWSER */ |
| #endif /* UNIX */ |
| #ifdef OS2 |
| #ifndef BROWSER |
| #ifndef NOPUSH |
| #define BROWSER |
| #endif /* NOPUSH */ |
| #endif /* BROWSER */ |
| #endif /* OS2 */ |
| #else |
| #ifdef BROWSER |
| #undef BROWSER |
| #endif /* BROWSER */ |
| #endif /* NOBROWSER */ |
| |
| #else /* TCPSOCKET */ |
| #ifndef NOHTTP /* HTTP requires TCPSOCKET */ |
| #define NOHTTP |
| #endif /* NOHTTP */ |
| #endif /* TCPSOCKET */ |
| #endif /* NONET */ |
| |
| #ifdef TCPSOCKET |
| #ifndef NOCKGETFQHOST |
| #ifdef __ia64__ |
| #define NOCKGETFQHOST |
| #else /* __ia64__ */ |
| #ifdef SV68 |
| #define NOCKGETFQHOST |
| #else |
| #ifdef HPUXPRE65 |
| #define NOCKGETFQHOST |
| #endif /* HPUXPRE65 */ |
| #endif /* SV68 */ |
| #endif /* __ia64 */ |
| #endif /* NOCKGETFQHOST */ |
| /* |
| Regarding System V/68 (SV68) (from Gerry Belanger, Oct 2002): |
| |
| 1) The gethostbyname() appears to return the actual host IP |
| address in the hostent struct, instead of the expected pointer |
| to the address. Hence the bogus address in the bcopy/memcopy. |
| This is despite the header agreeing with our expectations. |
| |
| 2) the expected argument swap between bcopy and memcopy |
| did not happen. What grief this might cause, I know not. |
| */ |
| #endif /* TCPSOCKET */ |
| |
| #ifdef TCPSOCKET |
| #ifdef OS2ONLY |
| #ifndef NOSOCKS |
| #define NOSOCKS |
| #endif /* NOSOCKS */ |
| #endif /* OS2ONLY */ |
| #ifdef NOSOCKS |
| #ifdef CK_SOCKS |
| #undef CK_SOCKS |
| #endif /* CK_SOCKS */ |
| #ifdef CK_SOCKS5 |
| #undef CK_SOCKS5 |
| #endif /* CK_SOCKS5 */ |
| #else /* NOSOCKS */ |
| #ifdef NT |
| #ifndef CK_SOCKS |
| #define CK_SOCKS |
| #endif /* CK_SOCKS */ |
| #endif /* NT */ |
| #ifdef CK_SOCKS5 /* CK_SOCKS5 implies CK_SOCKS */ |
| #ifndef CK_SOCKS |
| #define CK_SOCKS |
| #endif /* CK_SOCKS */ |
| #endif /* CK_SOCKS5 */ |
| #endif /* NOSOCKS */ |
| #endif /* TCPSOCKET */ |
| |
| #ifdef TNCODE |
| #ifndef CK_AUTHENTICATION |
| #ifdef OS2 |
| #ifdef _M_PPC |
| #define NO_KERBEROS |
| #define NO_SRP |
| #else /* _M_PPC */ |
| #ifndef NO_SSL |
| #define CK_SSL |
| #define SSLDLL |
| #endif /* NO_SSL */ |
| #endif /* _M_PPC */ |
| #ifndef NO_KERBEROS |
| #define CK_KERBEROS |
| #define KRB4 |
| #define KRB5 |
| #define KRB524 |
| #define KRB524_CONV |
| #ifdef NT |
| #ifndef _M_PPC |
| #ifndef _M_ALPHA |
| #ifndef NO_SSL_KRB5 |
| #define SSL_KRB5 |
| #endif /* NO_SSL_KRB5 */ |
| #endif /* _M_ALPHA */ |
| #endif /* _M_PPC */ |
| #endif /* NT */ |
| #endif /* NO_KERBEROS */ |
| #ifndef NO_SRP |
| #define CK_SRP |
| #endif /* NO_SRP */ |
| #define CK_AUTHENTICATION |
| #endif /* OS2 */ |
| #endif /* CK_AUTHENTICATION */ |
| |
| #ifdef CK_AUTHENTICATION /* Encryption must have Auth */ |
| #ifndef CK_ENCRYPTION |
| #ifndef NO_ENCRYPTION |
| #ifdef OS2 |
| #define CK_ENCRYPTION |
| #define CK_DES |
| #define CK_CAST |
| #endif /* OS2 */ |
| #endif /* NO_ENCRYPTION */ |
| #endif /* CK_ENCRYPTION */ |
| #endif /* CK_AUTHENTICATION */ |
| |
| #ifdef NO_AUTHENTICATION /* Allow authentication to be */ |
| #ifdef CK_AUTHENTICATION /* disabled in NT and OS/2 */ |
| #undef CK_AUTHENTICATION |
| #endif /* CK_AUTHENTICATION */ |
| #ifdef CK_KERBEROS |
| #undef CK_KERBEROS |
| #endif /* CK_KERBEROS */ |
| #ifdef CK_SRP |
| #undef CK_SRP |
| #endif /* CK_SRP */ |
| #ifdef CK_ENCRYPTION |
| #undef CK_ENCRYPTION |
| #endif /* CK_ENCRYPTION */ |
| #endif /* NO_AUTHENTICATION */ |
| |
| #ifdef NO_ENCRYPTION /* Allow encryption to be */ |
| #ifdef CK_ENCRYPTION /* disabled in NT and OS/2 */ |
| #undef CK_ENCRYPTION |
| #endif /* CK_ENCRYPTION */ |
| #endif /* NO_ENCRYPTION */ |
| |
| #ifdef CK_KERBEROS /* Disable funcs not yet supported with Heimdal */ |
| #ifdef KRB5 |
| #ifndef HEIMDAL |
| #define KRB5_U2U |
| #endif /* HEIMDAL */ |
| #endif /* KRB5 */ |
| #endif /* CK_KERBEROS */ |
| |
| /* |
| SSH section. NOSSH disables any form of SSH support. |
| If NOSSH is not defined (or implied by NONET, NOLOCAL, etc) |
| then SSHBUILTIN is defined for K95 and SSHCMD is defined for UNIX. |
| Then, if either SSHBUILTIN or SSHCMD is defined, ANYSSH is also defined. |
| */ |
| |
| #ifndef NOSSH |
| #ifndef NO_SSL |
| #ifdef OS2ONLY |
| #define NOSSH |
| #endif /* OS2ONLY */ |
| #ifdef NT |
| #ifndef CK_SSL |
| #define NOSSH |
| #endif /* CK_SSL */ |
| #endif /* NT */ |
| #else /* NO_SSL */ |
| #define NOSSH |
| #endif /* NO_SSL */ |
| #endif /* NOSSH */ |
| |
| #ifdef NOSSH /* NOSSH */ |
| #ifdef SSHBUILTIN /* undefines any SSH selctors */ |
| #undef SSHBUILTIN |
| #endif /* SSHBUILTIN */ |
| #ifdef SFTP_BUILTIN |
| #undef SFTP_BUILTIN |
| #endif /* SFTP_BUILTIN */ |
| #ifdef SSHCMD |
| #undef SSHCMD |
| #endif /* SSHCMD */ |
| #ifdef ANYSSH |
| #undef ANYSSH |
| #endif /* ANYSSH */ |
| #else /* Not NOSSH */ |
| #ifndef NOLOCAL |
| #ifdef OS2 |
| #ifndef SSHBUILTIN |
| #define SSHBUILTIN |
| #endif /* SSHBUILTIN */ |
| #else /* Not OS2 */ |
| #ifdef UNIX |
| #ifndef SSHCMD |
| #ifdef NETPTY |
| #ifndef NOPUSH |
| #define SSHCMD |
| #endif /* NOPUSH */ |
| #endif /* NETPTY */ |
| #endif /* SSHCMD */ |
| #endif /* UNIX */ |
| #endif /* OS2 */ |
| #ifndef ANYSSH |
| #ifdef SSHBUILTIN |
| #define ANYSSH |
| #ifdef SSHCMD |
| #undef SSHCMD |
| #endif /* SSHCMD */ |
| #else /* SSHBUILTIN */ |
| #ifdef SSHCMD |
| #define ANYSSH |
| #endif /* SSHCMD */ |
| #endif /* SSHBUILTIN */ |
| #endif /* ANYSSH */ |
| #endif /* NOLOCAL */ |
| #endif /* NOSSH */ |
| |
| /* This is in case #ifdef SSH is used anywhere in the K95 modules */ |
| |
| #ifdef OS2 |
| #ifdef SSHBUILTIN |
| #ifndef SSH |
| #define SSH |
| #endif /* SSH */ |
| #endif /* SSHBUILTIN */ |
| #endif /* OS2 */ |
| |
| #ifdef CK_AUTHENTICATION |
| #define CK_SECURITY |
| #else |
| #ifdef CK_SSL |
| #define CK_AUTHENTICATION |
| #define CK_SECURITY |
| #endif /* CK_SSL */ |
| #endif /* CK_AUTHENTICATION */ |
| |
| /* Environment stuff */ |
| |
| #ifndef OS2ORUNIX |
| #ifndef NOPUTENV |
| #define NOPUTENV |
| #endif /* NOPUTENV */ |
| #endif /* OS2ORUNIX */ |
| |
| #ifndef CK_ENVIRONMENT |
| #ifdef OS2 |
| #define CK_ENVIRONMENT |
| #else |
| #ifdef UNIX |
| #define CK_ENVIRONMENT |
| #else |
| #ifdef STRATUS |
| #define CK_ENVIRONMENT |
| #else |
| #ifdef VMS |
| #define CK_ENVIRONMENT |
| #endif /* VMS */ |
| #endif /* STRATUS */ |
| #endif /* UNIX */ |
| #endif /* OS2 */ |
| #endif /* CK_ENVIRONMENT */ |
| #ifndef NOSNDLOC /* RFC 779 SEND LOCATION */ |
| #ifndef CK_SNDLOC |
| #define CK_SNDLOC |
| #endif /* CK_SNDLOC */ |
| #endif /* NOSNDLOC */ |
| #ifndef NOXDISPLOC /* RFC 1096 XDISPLOC */ |
| #ifndef CK_XDISPLOC |
| #define CK_XDISPLOC |
| #endif /* CK_XDISPLOC */ |
| #endif /* NOXDISPLOC */ |
| #ifndef NOFORWARDX |
| #ifndef NOPUTENV |
| #ifndef NOSELECT |
| #ifndef CK_FORWARD_X |
| #ifdef CK_AUTHENTICATION |
| #ifndef OS2ONLY |
| #define CK_FORWARD_X |
| #endif /* OS2ONLY */ |
| #endif /* CK_AUTHENTICATION */ |
| #endif /* CK_FORWARD_X */ |
| #endif /* NOSELECT */ |
| #endif /* NOPUTENV */ |
| #endif /* NOFORWARDX */ |
| #ifndef NO_COMPORT |
| #ifdef TCPSOCKET |
| #ifndef TN_COMPORT |
| #define TN_COMPORT |
| #endif /* TN_COMPORT */ |
| #endif /* TCPSOCKET */ |
| #endif /* NO_COMPORT */ |
| #endif /* TNCODE */ |
| |
| #ifndef NOXFER |
| #ifndef NOCTRLZ /* Allow SET FILE EOF CTRL-Z */ |
| #ifndef CK_CTRLZ |
| #ifdef OS2ORUNIX |
| #define CK_CTRLZ |
| #endif /* OS2ORUNIX */ |
| #endif /* CK_CTRLZ */ |
| #endif /* NOCTRLZ */ |
| #endif /* NOXFER */ |
| |
| #ifndef NOPERMS /* File permissions in A packets */ |
| #ifndef CK_PERMS |
| #ifdef UNIX |
| #define CK_PERMS |
| #else |
| #ifdef VMS |
| #define CK_PERMS |
| #endif /* VMS */ |
| #endif /* UNIX */ |
| #endif /* CK_PERMS */ |
| #endif /* NOPERMS */ |
| #ifdef CK_PERMS |
| #define CK_PERMLEN 24 /* Max length of sys-dependent perms */ |
| #endif /* CK_PERMS */ |
| |
| #ifdef UNIX /* NOSETBUF for everybody */ |
| #ifndef NOSETBUF |
| #ifndef USE_SETBUF /* This is the escape clause */ |
| #define NOSETBUF |
| #endif /* USE_SETBUF */ |
| #endif /* NOSETBUF */ |
| #endif /* UNIX */ |
| |
| #ifndef USE_STRERROR /* Whether to use strerror() */ |
| #ifdef pdp11 |
| #define USE_STRERROR |
| #endif /* pdp11 */ |
| #endif /* USE_STRERROR */ |
| |
| #ifdef VMS /* Features for all VMS builds */ |
| #ifndef NOJC |
| #define NOJC |
| #endif /* NOJC */ |
| #ifndef NOSETBUF |
| #define NOSETBUF |
| #endif /* NOSETBUF */ |
| #ifndef DYNAMIC |
| #define DYNAMIC |
| #endif /* DYNAMIC */ |
| #ifndef NOCURSES |
| #ifndef CK_CURSES |
| #define CK_CURSES |
| #endif /* CK_CURSES */ |
| #endif /* NOCURSES */ |
| #endif /* VMS */ |
| |
| #ifndef NOCKTIMERS /* Dynamic timeouts */ |
| #ifndef CK_TIMERS |
| #define CK_TIMERS |
| #endif /* CK_TIMERS */ |
| #endif /* NOCKTIMERS */ |
| |
| #define CK_SPEED /* Control-prefix removal */ |
| #ifdef NOCKSPEED |
| #undef CK_SPEED |
| #endif /* NOCKSPEED */ |
| |
| #ifndef NOCKXXCHAR |
| #ifndef CKXXCHAR |
| #ifdef UNIX |
| #define CKXXCHAR |
| #else |
| #ifdef OS2 |
| #define CKXXCHAR |
| #endif /* OS2 */ |
| #endif /* UNIX */ |
| #endif /* CKXXCHAR */ |
| #endif /* NOCKXXCHAR */ |
| |
| #ifdef MAC /* For Macintosh, no escape */ |
| #define NOPUSH /* to operating system */ |
| #endif /* MAC */ |
| |
| /* Systems where we can call zmkdir() to create directories. */ |
| |
| #ifndef CK_MKDIR |
| #ifndef NOMKDIR |
| |
| #ifdef UNIX |
| #ifndef pdp11 |
| #define CK_MKDIR |
| #endif /* pdp11 */ |
| #endif /* UNIX */ |
| |
| #ifdef OS2 |
| #define CK_MKDIR |
| #endif /* OS2 */ |
| |
| #ifdef VMS |
| #define CK_MKDIR |
| #endif /* VMS */ |
| |
| #ifdef STRATUS |
| #define CK_MKDIR |
| #endif /* STRATUS */ |
| |
| #ifdef OSK |
| #define CK_MKDIR |
| #endif /* OSK */ |
| |
| #ifdef datageneral |
| #define CK_MKDIR |
| #endif /* datageneral */ |
| |
| #endif /* CK_MKDIR */ |
| #endif /* NOMKDIR */ |
| |
| #ifdef NOMKDIR /* Allow for command-line override */ |
| #ifdef CK_MKDIR |
| #undef CK_MKDIR |
| #endif /* CK_MKDIR */ |
| #endif /* NOMKDIR */ |
| |
| /* Systems for which we can enable the REDIRECT command automatically */ |
| /* As of 6.0.193, it should work for all UNIX... */ |
| |
| #ifndef NOREDIRECT |
| #ifndef CK_REDIR |
| #ifdef UNIX |
| #define CK_REDIR |
| #endif /* UNIX */ |
| #ifdef OS2 /* As well as OS/2 and friends... */ |
| #define CK_REDIR |
| #endif /* OS2 */ |
| #endif /* CK_REDIR */ |
| #endif /* NOREDIRECT */ |
| |
| #ifdef NOPUSH /* But... REDIRECT command is not */ |
| #ifdef CK_REDIR /* allowed if NOPUSH is defined. */ |
| #undef CK_REDIR |
| #endif /* CK_REDIR */ |
| #ifdef NETCMD /* Nor is SET NET COMMAND */ |
| #undef NETCMD |
| #endif /* NETCMD */ |
| #ifdef NETPTY |
| #undef NETPTY |
| #endif /* NETPTY */ |
| #endif /* NOPUSH */ |
| |
| #ifndef PEXITSTAT /* \v(pexitstat) variable defined */ |
| #ifdef OS2ORUNIX |
| #define PEXITSTAT |
| #else |
| #ifdef VMS |
| #define PEXITSTAT |
| #endif /* VMS */ |
| #endif /* OS2ORUNIX */ |
| #endif /* PEXITSTAT */ |
| |
| /* The following allows automatic enabling of REDIRECT to be overridden... */ |
| |
| #ifdef NOREDIRECT |
| #ifdef NETCMD |
| #undef NETCMD |
| #endif /* NETCMD */ |
| #ifdef NETPTY |
| #undef NETPTY |
| #endif /* NETPTY */ |
| #ifdef CK_REDIR |
| #undef CK_REDIR |
| #endif /* CK_REDIR */ |
| #endif /* NOREDIRECT */ |
| |
| #ifdef NONETCMD |
| #ifdef NETCMD |
| #undef NETCMD |
| #endif /* NETCMD */ |
| #ifdef NETPTY |
| #undef NETPTY |
| #endif /* NETPTY */ |
| #endif /* NONETCMD */ |
| |
| #ifdef CK_REDIR |
| _PROTOTYP( int ttruncmd, (char *) ); |
| #endif /* CK_REDIR */ |
| |
| /* Use built-in DIRECTORY command */ |
| |
| #ifndef NOMYDIR |
| #ifndef DOMYDIR |
| #ifdef UNIXOROSK |
| #define DOMYDIR |
| #else |
| #ifdef OS2 |
| #define DOMYDIR |
| #else |
| #ifdef VMS |
| #define DOMYDIR |
| #endif /* VMS */ |
| #endif /* OS2 */ |
| #endif /* UNIXOROSK */ |
| #endif /* DOMYDIR */ |
| #endif /* NOMYDIR */ |
| |
| /* Sending from and receiving to commands/pipes */ |
| |
| #ifndef PIPESEND |
| #ifdef UNIX |
| #define PIPESEND |
| #endif /* UNIX */ |
| #ifdef OS2 |
| #define PIPESEND |
| #endif /* OS2 */ |
| #endif /* PIPESEND */ |
| |
| #ifdef PIPESEND |
| #ifdef NOPIPESEND |
| #undef PIPESEND |
| #endif /* NOPIPESEND */ |
| #ifdef NOPUSH |
| #undef PIPESEND |
| #endif /* NOPUSH */ |
| #endif /* PIPESEND */ |
| |
| #ifdef NOPUSH |
| #ifdef BROWSER |
| #undef BROWSER |
| #endif /* BROWSER */ |
| #endif /* NOPUSH */ |
| |
| /* Versions where we support the RESEND command */ |
| |
| #ifndef NOXFER |
| #ifndef NORESEND |
| #ifndef CK_RESEND |
| #ifdef UNIX |
| #ifndef pdp11 |
| #define CK_RESEND |
| #endif /* pdp11 */ |
| #endif /* UNIX */ |
| |
| #ifdef VMS |
| #define CK_RESEND |
| #endif /* VMS */ |
| |
| #ifdef OS2 |
| #define CK_RESEND |
| #endif /* OS2 */ |
| |
| #ifdef AMIGA |
| #define CK_RESEND |
| #endif /* AMIGA */ |
| |
| #ifdef datageneral |
| #define CK_RESEND |
| #endif /* datageneral */ |
| |
| #ifdef STRATUS |
| #define CK_RESEND |
| #endif /* STRATUS */ |
| |
| #ifdef OSK |
| #define CK_RESEND |
| #endif /* OSK */ |
| |
| #endif /* CK_RESEND */ |
| #endif /* NORESEND */ |
| #endif /* NOXFER */ |
| |
| /* Systems implementing "Doomsday Kermit" protocol ... */ |
| |
| #ifndef DOOMSDAY |
| #ifdef UNIX |
| #define DOOMSDAY |
| #else |
| #ifdef VMS |
| #define DOOMSDAY |
| #else |
| #ifdef OS2 |
| #define DOOMSDAY |
| #else |
| #ifdef STRATUS |
| #define DOOMSDAY |
| #endif /* STRATUS */ |
| #endif /* OS2 */ |
| #endif /* VMS */ |
| #endif /* UNIX */ |
| #endif /* DOOMSDAY */ |
| |
| /* Systems where we want the Thermometer to be used for fullscreen */ |
| |
| #ifdef OS2 |
| #ifndef CK_PCT_BAR |
| #define CK_PCT_BAR |
| #endif /* CK_PCT_BAR */ |
| #endif /* OS2 */ |
| |
| /* Systems where we have a REXX command */ |
| |
| #ifdef OS2 |
| #ifdef __32BIT__ |
| #ifndef NOREXX |
| #define CK_REXX |
| #endif /* NOREXX */ |
| #endif /* __32BIT__ */ |
| #endif /* OS2 */ |
| |
| /* Platforms that have a ZCHKPID function */ |
| |
| #ifdef OS2ORUNIX |
| #define ZCHKPID |
| #endif /* OS2ORUNIX */ |
| |
| #ifndef ZCHKPID |
| /* If we can't check pids then we have treat all pids as active & valid. */ |
| #define zchkpid(x) 1 |
| #endif /* ZCHKPID */ |
| |
| /* Systems that have a ZRENAME function */ |
| |
| #define ZRENAME /* They all do */ |
| |
| /* Systems that have a ZCOPY function */ |
| |
| #ifndef ZCOPY |
| #ifdef VMS |
| #define ZCOPY |
| #else |
| #ifdef OS2 |
| #define ZCOPY |
| #else |
| #ifdef UNIX |
| #define ZCOPY |
| #else |
| #ifdef STRATUS |
| #define ZCOPY |
| #endif /* STRATUS */ |
| #endif /* UNIX */ |
| #endif /* OS2 */ |
| #endif /* VMS */ |
| #endif /* ZCOPY */ |
| |
| /* Systems that have ttgwsiz() (they all should but they don't) */ |
| |
| #ifndef NOTTGWSIZ |
| #ifndef CK_TTGWSIZ |
| #ifdef UNIX |
| #define CK_TTGWSIZ |
| #else |
| #ifdef VMS |
| #define CK_TTGWSIZ |
| #else |
| #ifdef OS2 |
| #define CK_TTGWSIZ |
| #else |
| #ifdef OSK |
| #define CK_TTGWSIZ |
| #endif /* OSK */ |
| #endif /* OS2 */ |
| #endif /* VMS */ |
| #endif /* UNIX */ |
| #endif /* CK_TTGWSIZ */ |
| #endif /* NOTTGWSIZ */ |
| |
| #ifdef NOTTGWSIZ |
| #ifdef CK_TTGWSIZ |
| #undef CK_TTGWSIZ |
| #endif /* CK_TTGWSIZ */ |
| #endif /* NOTTGWSIZ */ |
| |
| /* OS/2 C-Kermit features not available in 16-bit version... */ |
| |
| #ifdef OS2ONLY |
| #ifndef __32BIT__ |
| #ifndef NOLOCAL |
| #ifdef PCFONTS /* PC Font support */ |
| #undef PCFONTS |
| #endif /* PCFONTS */ |
| #ifdef NPIPE /* Named Pipes communication */ |
| #undef NPIPE |
| #endif /* NPIPE */ |
| #ifdef CK_NETBIOS /* NETBIOS communication */ |
| #undef CK_NETBIOS |
| #endif /* CK_NETBIOS */ |
| #ifdef OS2MOUSE /* Mouse */ |
| #undef OS2MOUSE |
| #endif /* OS2MOUSE */ |
| #ifdef OS2PM /* Presentation Manager */ |
| #undef OS2PM |
| #endif /* OS2PM */ |
| #endif /* NOLOCAL */ |
| #ifdef CK_REXX /* Rexx */ |
| #undef CK_REXX |
| #endif /* CK_REXX */ |
| #endif /* __32BIT__ */ |
| #endif /* OS2ONLY */ |
| |
| /* OS/2 C-Kermit features not available in Windows NT version... */ |
| |
| #ifdef OS2 |
| #ifdef NT |
| #ifdef PCFONTS /* PC Font support */ |
| #undef PCFONTS |
| #endif /* PCFONTS */ |
| #ifdef NPIPE /* Named Pipes communication */ |
| #undef NPIPE |
| #endif /* NPIPE */ |
| #ifdef OS2PM /* Presentation Manager */ |
| #undef OS2PM |
| #endif /* OS2PM */ |
| #ifdef CK_REXX /* Rexx */ |
| #undef CK_REXX |
| #endif /* CK_REXX */ |
| #endif /* NT */ |
| #endif /* OS2 */ |
| |
| /* |
| Systems that have select(). |
| This is used for both msleep() and for read-buffer checking in in_chk(). |
| */ |
| #define CK_SLEEPINT 250 /* milliseconds - set this to something that |
| divides evenly into 1000 */ |
| #ifndef SELECT |
| #ifndef NOSELECT |
| #ifdef __linux__ |
| #define SELECT |
| #else |
| #ifdef SUNOS4 |
| #define SELECT |
| #else |
| #ifdef NEXT |
| #define SELECT |
| #else |
| #ifdef RTAIX |
| #define SELECT |
| #else |
| #ifdef HPUX |
| /* |
| Not really. I think it's only in HP-UX 7.0 and later, except it's also |
| in earlier versions that have TCP/IP installed. Override this default |
| in particular HP-UX makefile entries by adding -DNOSELECT, as in (e.g.) |
| the HP-UX 6.5 ones. |
| */ |
| #define SELECT |
| #else |
| #ifdef AIXRS |
| #define SELECT |
| #else |
| #ifdef BSD44 |
| #define SELECT |
| #else |
| #ifdef BSD4 |
| #define SELECT |
| #else |
| #ifdef OXOS |
| #define SELECT |
| #else |
| #ifdef OS2 |
| #define SELECT |
| #else |
| #ifdef BEBOX |
| #define SELECT |
| #endif /* BEBOX */ |
| #endif /* OS2 */ |
| #endif /* OXOS */ |
| #endif /* BSD4 */ |
| #endif /* BSD44 */ |
| #endif /* AIXRS */ |
| #endif /* HPUX */ |
| #endif /* RTAIX */ |
| #endif /* NEXT */ |
| #endif /* __linux__ */ |
| #endif /* SUNOS4 */ |
| #endif /* NOSELECT */ |
| #endif /* SELECT */ |
| |
| /* |
| The following section moved here from ckcnet.h in 6.1 because select() |
| is now used for non-networking purposes. |
| */ |
| |
| /* On HP-9000/500 HP-UX 5.21 this stuff is not defined in any header file */ |
| |
| #ifdef hp9000s500 |
| #ifndef NEEDSELECTDEFS |
| #define NEEDSELECTDEFS |
| #endif /* NEEDSELECTDEFS */ |
| #endif /* hp9000s500 */ |
| |
| #ifdef NEEDSELECTDEFS |
| typedef long fd_mask; |
| #ifndef NBBY |
| #define NBBY 8 |
| #endif /* NBBY */ |
| #ifndef FD_SETSIZE |
| #define FD_SETSIZE 32 |
| #endif /* FD_SETSIZE */ |
| #ifndef NFDBITS |
| #define NFDBITS (sizeof(fd_mask) * NBBY) |
| #endif /* NFDBITS */ |
| #ifndef howmany |
| #define howmany(x,y) (((x)+((y)-1))/(y)) |
| #endif /* howmany */ |
| typedef struct fd_set { |
| fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)]; |
| } fd_set; |
| #ifndef FD_SET |
| #define FD_SET(n,p) ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS))) |
| #endif /* FD_SET */ |
| #ifndef FD_CLR |
| #define FD_CLR(n,p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS))) |
| #endif /* FD_CLR */ |
| #ifndef FD_ISSET |
| #define FD_ISSET(n,p) ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS))) |
| #endif /* FD_ISSET */ |
| #ifndef FD_COPY |
| #define FD_COPY(f,t) (bcopy(f,t,sizeof(*(f))) |
| #endif /* FD_COPY */ |
| #ifndef FD_ZERO |
| #define FD_ZERO(p) bzero((char *)(p),sizeof(*(p))) |
| #endif /* FD_ZERO */ |
| #endif /* NEEDSELECTDEFS */ |
| |
| /* |
| CK_NEED_SIG is defined if the system cannot check the console to |
| to see if characters are waiting. This is used during local-mode file |
| transfer to interrupt the transfer, refresh the screen display, etc. |
| If CK_NEED_SIG is defined, then file-transfer interruption characters |
| have to be preceded a special character, e.g. the SIGQUIT character. |
| CK_NEED_SIG should be defined if the conchk() function is not operational. |
| */ |
| #ifdef NOPOLL /* For overriding CK_POLL definition */ |
| #ifdef CK_POLL |
| #undef CK_POLL |
| #endif /* CK_POLL */ |
| #endif /* NOPOLL */ |
| |
| #ifndef CK_POLL /* If we don't have poll() */ |
| #ifndef RDCHK /* And we don't have rdchk() */ |
| #ifndef SELECT /* And we don't have select() */ |
| #ifdef ATTSV |
| #ifndef aegis |
| #ifndef datageneral |
| #ifndef OXOS |
| #define CK_NEED_SIG |
| #endif /* OXOS */ |
| #endif /* datageneral */ |
| #endif /* aegis */ |
| #endif /* ATTSV */ |
| #ifdef POSIX |
| #ifndef CK_NEED_SIG |
| #define CK_NEED_SIG |
| #endif /* CK_NEED_SIG */ |
| #endif /* POSIX */ |
| #endif /* SELECT */ |
| #endif /* RDCHK */ |
| #endif /* CK_POLL */ |
| |
| #ifdef HPUX /* HP-UX has select() */ |
| #ifdef CK_NEED_SIG |
| #undef CK_NEED_SIG |
| #endif /* CK_NEED_SIG */ |
| #endif /* HPUX */ |
| |
| #ifdef AIXRS /* AIX has select() */ |
| #ifdef CK_NEED_SIG |
| #undef CK_NEED_SIG |
| #endif /* CK_NEED_SIG */ |
| #endif /* AIXRS */ |
| |
| #ifdef BSD44 /* 4.4BSD has FIONREAD */ |
| #ifdef CK_NEED_SIG |
| #undef CK_NEED_SIG |
| #endif /* CK_NEED_SIG */ |
| #endif /* BSD44 */ |
| |
| #ifdef QNX /* QNX has FIONREAD and select() */ |
| #ifdef CK_NEED_SIG |
| #undef CK_NEED_SIG |
| #endif /* CK_NEED_SIG */ |
| #endif /* QNX */ |
| |
| #ifdef COHERENT |
| #ifndef NOTIMEZONE |
| #define NOTIMEZONE |
| #endif /* NOTIMEZONE */ |
| #endif /* COHERENT */ |
| |
| #ifdef UNIX |
| #ifndef HAVE_TZ /* Can we use struct timezone? */ |
| #ifndef NOTIMEZONE |
| #ifdef PTX |
| #define NOTIMEZONE |
| #else |
| #ifndef SELECT |
| #ifdef COHERENT |
| #define NOTIMEZONE |
| #else |
| #ifdef BELLV10 |
| #define NOTIMEZONE |
| #endif /* BELLV10 */ |
| #endif /* COHERENT */ |
| #endif /* SELECT */ |
| #endif /* PTX */ |
| #endif /* NOTIMEZONE */ |
| #endif /* HAVE_TZ */ |
| #ifndef NOTIMEVAL /* Can we use struct timeval? */ |
| #ifndef HAVE_TV |
| #define HAVE_TV |
| #endif /* HAVE_TV */ |
| #endif /* NOTIMEVAL */ |
| #ifndef NOTIMEZONE |
| #ifndef HAVE_TZ |
| #define HAVE_TZ |
| #endif /* HAVE_TZ */ |
| #endif /* NOTIMEZONE */ |
| #endif /* UNIX */ |
| |
| #ifdef SCO32 |
| #ifdef HAVE_TV |
| #undef HAVE_TV |
| #endif /* HAVE_TV */ |
| #ifdef HAVE_TZ |
| #undef HAVE_TZ |
| #endif /* HAVE_TZ */ |
| #ifndef NOTIMEVAL |
| #define NOTIMEVAL |
| #endif /* NOTIMEVAL */ |
| #ifndef NOTIMEZONE |
| #define NOTIMEZONE |
| #endif /* NOTIMEZONE */ |
| #endif /* SCO32 */ |
| |
| #ifdef ATT7300 |
| #ifdef HAVE_TV |
| #undef HAVE_TV |
| #endif /* HAVE_TV */ |
| #ifdef HAVE_TZ |
| #undef HAVE_TZ |
| #endif /* HAVE_TZ */ |
| #ifndef NOTIMEVAL |
| #define NOTIMEVAL |
| #endif /* NOTIMEVAL */ |
| #ifndef NOTIMEZONE |
| #define NOTIMEZONE |
| #endif /* NOTIMEZONE */ |
| #endif /* ATT7300 */ |
| |
| /* |
| Automatic parity detection. |
| This actually implies a lot more now: length-driven packet reading, |
| "Doomsday Kermit" IBM Mainframe file transfer through 3270 data streams, etc. |
| */ |
| #ifdef UNIX /* For Unix */ |
| #ifndef NOPARSEN |
| #define PARSENSE |
| #endif /* NOPARSEN */ |
| #endif /* UNIX */ |
| |
| #ifdef VMS /* ... and VMS */ |
| #ifndef NOPARSEN |
| #define PARSENSE |
| #endif /* NOPARSEN */ |
| #ifdef __GNUC__ |
| #define VMSGCC |
| #endif /* __GNUC__ */ |
| #endif /* VMS */ |
| |
| #ifdef MAC /* and Macintosh */ |
| #ifndef NOPARSEN |
| #define PARSENSE |
| #endif /* NOPARSEN */ |
| #endif /* MAC */ |
| |
| #ifdef STRATUS /* and Stratus VOS */ |
| #ifndef NOPARSEN |
| #define PARSENSE |
| #endif /* NOPARSEN */ |
| #endif /* STRATUS */ |
| |
| #ifdef OS2 /* and OS/2, finally */ |
| #ifndef NOPARSEN |
| #define PARSENSE |
| #endif /* NOPARSEN */ |
| #endif /* OS2 */ |
| |
| #ifndef NODYNAMIC /* DYNAMIC is default for UNIX */ |
| #ifndef DYNAMIC /* as of C-Kermit 7.0 */ |
| #ifdef UNIX |
| #define DYNAMIC |
| #endif /* UNIX */ |
| #endif /* DYNAMIC */ |
| #endif /* NODYNAMIC */ |
| |
| #ifdef DYNAMIC /* If DYNAMIC is defined */ |
| #define DCMDBUF /* then also define this. */ |
| #endif /* DYNAMIC */ |
| |
| #ifndef CK_LBRK /* Can send Long BREAK */ |
| |
| #ifdef UNIX /* (everybody but OS-9) */ |
| #define CK_LBRK |
| #endif /* UNIX */ |
| #ifdef VMS |
| #define CK_LBRK |
| #endif /* VMS */ |
| #ifdef datageneral |
| #define CK_LBRK |
| #endif /* datageneral */ |
| #ifdef GEMDOS |
| #define CK_LBRK |
| #endif /* GEMDOS */ |
| #ifdef OS2 |
| #define CK_LBRK |
| #endif /* OS2 */ |
| #ifdef AMIGA |
| #define CK_LBRK |
| #endif /* AMIGA */ |
| #ifdef STRATUS |
| #define CK_LBRK |
| #endif /* STRATUS */ |
| |
| #endif /* CK_LBRK */ |
| |
| /* Carrier treatment */ |
| /* These are defined here because they are shared by the system dependent */ |
| /* and the system independent modules. */ |
| |
| #define CAR_OFF 0 /* Off: ignore carrier always. */ |
| #define CAR_ON 1 /* On: heed carrier always, except during DIAL. */ |
| #define CAR_AUT 2 /* Auto: heed carrier, but only if line is declared */ |
| /* to be a modem line, and only during CONNECT. */ |
| |
| /* And more generically (for use with any ON/OFF/AUTO feature) */ |
| #define CK_OFF 0 |
| #define CK_ON 1 |
| #define CK_AUTO 2 |
| |
| #ifndef NOLOCAL |
| /* |
| Serial interface speeds available. |
| |
| As of C-Kermit 6.1 there is a new method to get the supported |
| speeds, which obviates the need for all the craziness below. At runtime, |
| just call the new ttspdlist() routine to get a list of supported speeds. |
| Then the user interface module can build a keyword table or menu from it. |
| */ |
| #ifndef TTSPDLIST |
| #ifdef UNIX /* For now, only for UNIX */ |
| #ifndef OLINUXHISPEED /* But not systems with hacks for */ |
| #ifndef MINIX /* high speeds, like 110 = 115200 */ |
| #define TTSPDLIST |
| #endif /* MINIX */ |
| #endif /* OLINUXHISPEED */ |
| #else |
| #ifdef VMS |
| #define TTSPDLIST /* VMS gets it too */ |
| #endif /* VMS */ |
| #endif /* UNIX */ |
| #endif /* TTSPDLIST */ |
| |
| #ifndef NODIAL /* Hangup by modem command */ |
| #ifndef NOMDMHUP |
| #ifndef MDMHUP |
| #define MDMHUP |
| #endif /* MDMHUP */ |
| #endif /* NOMDMHUP */ |
| #endif /* NODIAL */ |
| |
| #ifdef NOSPL |
| #ifndef NOLOGDIAL /* Connection log needs mjd(), etc. */ |
| #define NOLOGDIAL |
| #endif /* NOLOGDIAL */ |
| #endif /* NOSPL */ |
| |
| #ifdef pdp11 |
| #define NOLOGDIAL |
| #endif /* pdp11 */ |
| |
| #ifndef NOLOGDIAL /* Connection log */ |
| #ifndef CXLOGFILE |
| #define CXLOGFILE "CX.LOG" /* Default connection log file name */ |
| #endif /* CXLOGFILE */ |
| #ifndef CKLOGDIAL |
| #ifndef CK_SMALL |
| #define CKLOGDIAL |
| #define CXLOGBUFL 1024 /* Connection log record buffer size */ |
| #endif /* CK_SMALL */ |
| #endif /* NOLOGDIAL */ |
| #endif /* CKLOGDIAL */ |
| |
| #endif /* NOLOCAL */ |
| |
| #ifdef NOTTSPDLIST /* Except if NOTTSPDLIST is defined */ |
| #ifdef TTSPDLIST |
| #undef TTSPDLIST |
| #endif /* TTSPDLIST */ |
| #endif /* NOTTSPDLIST */ |
| |
| #ifdef TTSPDLIST |
| |
| _PROTOTYP( long * ttspdlist, (void) ); |
| |
| #else /* TTSPDLIST not defined */ |
| /* |
| We must use a long and convoluted series of #ifdefs that have to be kept in |
| sync with the code in the ck?tio.c module. |
| |
| We assume that everybody supports: 0, 110, 300, 600, 1200, 2400, 4800, and |
| 9600 bps. Symbols for other speeds are defined here. You can also add |
| definitions on the CC command lines. These definitions affect the SET SPEED |
| keyword table, and are not necessarily usable in the system-dependent |
| speed-setting code in the ck?tio.c modules, which depends on system-specific |
| symbols like (in UNIX) B19200. In other words, just defining it doesn't |
| mean it'll work -- you also have to supply the supporting code in ttsspd() |
| and ttgspd() in ck?tio.c. |
| |
| The symbols have the form BPS_xxxx, where xxxx is the speed in bits per |
| second, or (for bps values larger than 9999) thousands of bps followed by K. |
| The total symbol length should be 8 characters or less. Some values are |
| enabled automatically below. You can disable a particular value by defining |
| NOB_xxxx on the CC command line. |
| |
| */ |
| |
| #ifndef NOB_50 |
| #define BPS_50 /* 50 bps */ |
| #endif |
| |
| #ifndef NOB_75 |
| #define BPS_75 /* 75 bps */ |
| #endif |
| |
| #ifndef NOB7512 |
| #ifdef ANYBSD |
| #define BPS_7512 /* 75/1200 Split Speed */ |
| #endif /* ANYBSD */ |
| #endif /* NOB7512 */ |
| |
| #ifndef NOB134 |
| #ifdef SOLARIS25 |
| #define BPS_134 |
| #else |
| #undef BPS_134 /* 134.5 bps (IBM 2741) */ |
| #endif /* BPS_134 */ |
| #endif /* NOB134 */ |
| |
| #ifndef NOB_150 |
| #define BPS_150 /* 150 bps */ |
| #endif |
| |
| #ifndef NOB_200 |
| #define BPS_200 /* 200 bps */ |
| #endif |
| |
| #ifndef NOB_1800 |
| #ifdef MAC |
| #define BPS_1800 /* 1800 bps */ |
| #else |
| #ifdef SOLARIS25 |
| #define BPS_1800 |
| #endif |
| #endif |
| #endif |
| |
| #ifndef NOB_3600 |
| #ifndef SOLARIS25 |
| #define BPS_3600 /* 3600 bps */ |
| #endif |
| #endif |
| |
| #ifndef NOB_7200 |
| #ifndef SOLARIS25 |
| #define BPS_7200 /* 7200 bps */ |
| #endif /* SOLARIS25 */ |
| #endif |
| |
| #ifndef NOB_14K |
| #ifdef BSD44 |
| #define BPS_14K /* 14400 bps */ |
| #else |
| #ifdef OS2 |
| #define BPS_14K |
| #else |
| #ifdef NEXT |
| #define BPS_14K |
| #else |
| #ifdef MAC |
| #define BPS_14K |
| #else |
| #ifdef AMIGA |
| #define BPS_14K |
| #endif /* AMIGA */ |
| #endif /* MAC */ |
| #endif /* NEXT */ |
| #endif /* OS2 */ |
| #endif /* BSD44 */ |
| #endif /* NOB_14K */ |
| |
| #ifndef NOB_19K |
| #define BPS_19K /* 19200 bps */ |
| #endif |
| |
| #ifndef NOB_28K |
| #ifdef BSD44 |
| #define BPS_28K |
| #else |
| #ifdef OS2 |
| #define BPS_28K |
| #else |
| #ifdef NEXT |
| #define BPS_28K /* 28800 bps */ |
| #else |
| #ifdef MAC |
| #define BPS_28K /* 28800 bps */ |
| #endif /* MAC */ |
| #endif /* NEXT */ |
| #endif /* OS2 */ |
| #endif /* BSD44 */ |
| #endif /* NOB_28K */ |
| |
| #ifndef NOB_38K |
| #define BPS_38K /* 38400 bps */ |
| #endif |
| |
| #ifndef NOB_57K |
| #ifdef Plan9 |
| #define BPS_57K |
| #else |
| #ifdef SOLARIS25 |
| #define BPS_57K |
| #else |
| #ifdef VMS |
| #define BPS_57K /* 57600 bps */ |
| #else |
| #ifdef OS2 |
| #define BPS_57K |
| #else |
| #ifdef __linux__ |
| #define BPS_57K |
| #else |
| #ifdef HPUX |
| #define BPS_57K |
| #else |
| #ifdef NEXT |
| #define BPS_57K |
| #else |
| #ifdef __386BSD__ |
| #define BPS_57K |
| #else |
| #ifdef __FreeBSD__ |
| #define BPS_57K |
| #else |
| #ifdef __NetBSD__ |
| #define BPS_57K |
| #else |
| #ifdef MAC |
| #define BPS_57K |
| #else |
| #ifdef QNX |
| #define BPS_57K |
| #else |
| #ifdef BEOSORBEBOX |
| #define BPS_57K |
| #else |
| #ifdef IRIX62 |
| #define BPS_57K |
| #else |
| #ifdef SCO_OSR504 |
| #define BPS_57K |
| #else |
| #ifdef BSDI2 |
| #define BPS_57K |
| #endif /* BSDI2 */ |
| #endif /* SCO_OSR504 */ |
| #endif /* IRIX62 */ |
| #endif |