1: /* ckcker.h -- Symbol and macro definitions for C-Kermit */ 2: 3: /* 4: Author: Frank da Cruz (fdc@columbia.edu, FDCCU@CUVMA.BITNET), 5: Columbia University Center for Computing Activities. 6: First released January 1985. 7: Copyright (C) 1985, 1992, Trustees of Columbia University in the City of New 8: York. Permission is granted to any individual or institution to use this 9: software as long as it is not sold for profit. This copyright notice must be 10: retained. This software may not be included in commercial products without 11: written permission of Columbia University. 12: */ 13: 14: #ifndef CKCKER_H 15: #define CKCKER_H 16: 17: #ifdef NOICP /* No Interactive Command Parser */ 18: #ifndef NOSPL /* implies... */ 19: #define NOSPL /* No Script Programming Language */ 20: #endif /* NOSPL */ 21: #endif /* NOICP */ 22: 23: /* Codes for what we are doing now */ 24: 25: #define W_NOTHING 0 /* Nothing */ 26: #define W_SEND 2 /* SENDing or MAILing */ 27: #define W_RECV 4 /* RECEIVEing or GETting */ 28: #define W_REMO 8 /* Doing a REMOTE command */ 29: #define W_CONNECT 16 /* CONNECT mode */ 30: #define W_COMMAND 32 /* Command mode */ 31: 32: /* Terminal types */ 33: #define VT100 0 /* Also for VT52 mode */ 34: #define TEKTRONIX 1 35: 36: /* Normal packet and window size */ 37: 38: #define MAXPACK 94 /* Maximum unextended packet size */ 39: /* Can't be more than 94! */ 40: #define MAXWS 31 /* Maximum window size */ 41: /* Can't be more than 31! */ 42: 43: /* Maximum long packet size for sending packets */ 44: /* Override these from cc command line via -DMAXSP=nnn */ 45: 46: #ifdef DYNAMIC 47: #ifndef MAXSP 48: #define MAXSP 9024 49: #endif /* MAXSP */ 50: #else /* not DYNAMIC */ 51: #ifndef MAXSP 52: #define MAXSP 2048 53: #endif /* MAXSP */ 54: #endif /* DYNAMIC */ 55: 56: /* Maximum long packet size for receiving packets */ 57: /* Override these from cc command line via -DMAXRP=nnn */ 58: 59: #ifdef DYNAMIC 60: #ifndef MAXRP 61: #define MAXRP 9024 62: #endif /* MAXRP */ 63: #else /* not DYNAMIC */ 64: #ifndef MAXRP 65: #define MAXRP 2048 66: #endif /* MAXRP */ 67: #endif /* DYNAMIC */ 68: 69: #ifdef COMMENT /* Restriction removed in edit 185 */ 70: #ifdef VMS /* Dynamic or not, */ 71: #undef MAXSP /* VMS seems to have an intrinsic */ 72: #define MAXSP 1920 /* limit of about 1920. */ 73: #undef MAXRP 74: #define MAXRP 1920 75: #endif /* VMS */ 76: #endif /* COMMENT */ 77: 78: /* Default sizes for windowed packet buffers */ 79: /* Override these from cc command line via -DSBSIZ=nnn, -DRBSIZ=nnn */ 80: 81: #ifdef DYNAMIC 82: #ifndef SBSIZ 83: #define SBSIZ 9050 84: #endif /* SBSIZ */ 85: #ifndef RBSIZ 86: #define RBSIZ 9050 87: #endif /* RBSIZ */ 88: #else /* not DYNAMIC */ 89: #ifndef SBSIZ 90: #define SBSIZ (MAXPACK * (MAXWS + 1)) 91: #endif /* SBSIZ */ 92: #ifndef RBSIZ 93: #define RBSIZ (MAXPACK * (MAXWS + 1)) 94: #endif /* RBSIZ */ 95: #endif /* DYNAMIC */ 96: 97: #ifdef COMMENT /* Restriction removed in edit 185 */ 98: #ifdef VMS /* VMS again... */ 99: #undef SBSIZ 100: #define SBSIZ 1930 101: #undef RBSIZ 102: #define RBSIZ 1930 103: #endif /* VMS */ 104: #endif /* COMMENT */ 105: 106: /* Kermit parameters and defaults */ 107: 108: #define CTLQ '#' /* Control char prefix I will use */ 109: #define MYEBQ '&' /* 8th-Bit prefix char I will use */ 110: #define MYRPTQ '~' /* Repeat count prefix I will use */ 111: 112: #define MAXTRY 10 /* Times to retry a packet */ 113: #define MYPADN 0 /* How many padding chars I need */ 114: #define MYPADC '\0' /* Which padding character I need */ 115: 116: #define DMYTIM 7 /* Default timeout interval to use. */ 117: #define URTIME 10 /* Timeout interval to use on me. */ 118: #define DSRVTIM 0 /* Default server cmd wait timeout. */ 119: 120: #define DEFTRN 0 /* Default line turnaround handshake */ 121: #define DEFPAR 0 /* Default parity */ 122: #define MYEOL CR /* Incoming packet terminator. */ 123: 124: #define DRPSIZ 90 /* Default incoming packet size. */ 125: #define DSPSIZ 90 /* Default outbound packet size. */ 126: 127: #define DDELAY 5 /* Default delay. */ 128: #define DSPEED 9600 /* Default line speed. */ 129: 130: #ifdef OS2 /* Default CONNECT-mode */ 131: #define DFESC 29 /* escape character */ 132: #else 133: #ifdef NEXT /* Ctrl-] for PC and NeXT */ 134: #define DFESC 29 135: #else 136: #ifdef GEMDOS /* And Atari ST */ 137: #define DFESC 29 138: #else 139: #define DFESC 28 /* Ctrl-backslash for others */ 140: #endif /* GEMDOS */ 141: #endif /* NEXT */ 142: #endif /* OS2 */ 143: 144: #ifdef NOPUSH /* NOPUSH implies NOJC */ 145: #ifndef NOJC /* (no job control) */ 146: #define NOJC 147: #endif /* NOJC */ 148: #endif /* NOPUSH */ 149: 150: #ifdef UNIX /* Default for SET SUSPEND */ 151: #ifdef NOJC /* UNIX but job control disabled */ 152: #define DFSUSP 0 153: #else /* UNIX, job control enabled. */ 154: #define DFSUSP 1 155: #endif /* NOJC */ 156: #else 157: #define DFSUSP 0 158: #endif /* UNIX */ 159: 160: /* Files */ 161: 162: #define ZCTERM 0 /* Console terminal */ 163: #define ZSTDIO 1 /* Standard input/output */ 164: #define ZIFILE 2 /* Current input file (SEND, etc) (in) */ 165: #define ZOFILE 3 /* Current output file (RECEIVE, GET) (out) */ 166: #define ZDFILE 4 /* Current debugging log file (out) */ 167: #define ZTFILE 5 /* Current transaction log file (out) */ 168: #define ZPFILE 6 /* Current packet log file (out) */ 169: #define ZSFILE 7 /* Current session log file (out) */ 170: #define ZSYSFN 8 /* Input/Output from a system function */ 171: #define ZRFILE 9 /* Local file for READ (in) */ 172: #define ZWFILE 10 /* Local file for WRITE (out) */ 173: #define ZNFILS 11 /* How many defined file numbers */ 174: 175: /* 176: Buffered file i/o is used to avoid gratuitous function calls while encoding a 177: packet. The previous way involved 2 nested function calls for EACH character 178: of the file. This way, we only do 2 calls per K of data. This reduces 179: packet encoding time to 1% of its former cost. Originally added by Paul 180: Placeway. 181: */ 182: #ifdef VMS /* In VMS, allow for longest possible RMS record */ 183: #ifdef DYNAMIC 184: #define INBUFSIZE 32768 /* File input buffer size */ 185: #define OBUFSIZE 32768 /* File output buffer size */ 186: #else 187: #define INBUFSIZE 4096 /* File input buffer size */ 188: #define OBUFSIZE 4096 /* File output buffer size */ 189: #endif /* DYNAMIC */ 190: #else /* Not VMS */ /* For all others, just use a 1K buffer */ 191: #define INBUFSIZE 1024 192: #define OBUFSIZE 1024 193: #endif /* VMS */ 194: 195: /* get the next char; sorta like a getc() macro */ 196: #define zminchar() (((--zincnt)>=0) ? ((int)(*zinptr++) & 0377) : zinfill()) 197: 198: /* stuff a character into the input buffer */ 199: #define zmstuff(c) zinptr--, *zinptr = c, zincnt++ 200: 201: /* put a character to a file, like putchar() macro */ 202: #define zmchout(c) \ 203: ((*zoutptr++=(char)(c)),(((++zoutcnt)>=OBUFSIZE)?zoutdump():0)) 204: 205: /* Screen functions */ 206: 207: #define SCR_FN 1 /* filename */ 208: #define SCR_AN 2 /* as-name */ 209: #define SCR_FS 3 /* file-size */ 210: #define SCR_XD 4 /* x-packet data */ 211: #define SCR_ST 5 /* File status: */ 212: #define ST_OK 0 /* Transferred OK */ 213: #define ST_DISC 1 /* Discarded */ 214: #define ST_INT 2 /* Interrupted */ 215: #define ST_SKIP 3 /* Skipped */ 216: #define ST_ERR 4 /* Fatal Error */ 217: #define ST_REFU 5 /* Refused (use Attribute codes for reason) */ 218: #define ST_INC 6 /* Incompletely received */ 219: #define SCR_PN 6 /* packet number */ 220: #define SCR_PT 7 /* packet type or pseudotype */ 221: #define SCR_TC 8 /* transaction complete */ 222: #define SCR_EM 9 /* error message */ 223: #define SCR_WM 10 /* warning message */ 224: #define SCR_TU 11 /* arbitrary undelimited text */ 225: #define SCR_TN 12 /* arbitrary new text, delimited at beginning */ 226: #define SCR_TZ 13 /* arbitrary text, delimited at end */ 227: #define SCR_QE 14 /* quantity equals (e.g. "foo: 7") */ 228: #define SCR_CW 15 /* close screen window */ 229: 230: /* Macros */ 231: 232: #define tochar(ch) (((ch) + SP ) & 0xFF ) /* Number to character */ 233: #define xunchar(ch) (((ch) - SP ) & 0xFF ) /* Character to number */ 234: #define ctl(ch) (((ch) ^ 64 ) & 0xFF ) /* Controllify/Uncontrollify */ 235: #define unpar(ch) (((ch) & 127) & 0xFF ) /* Clear parity bit */ 236: 237: /* Symbols for File Attributes */ 238: 239: #define AT_XALL 0 /* All of them */ 240: #define AT_ALLY 1 /* All of them on (Yes) */ 241: #define AT_ALLN 2 /* All of them off (no) */ 242: #define AT_LENK 3 /* Length in K */ 243: #define AT_FTYP 4 /* File Type */ 244: #define AT_DATE 5 /* Creation date */ 245: #define AT_CREA 6 /* Creator */ 246: #define AT_ACCT 7 /* Account */ 247: #define AT_AREA 8 /* Area */ 248: #define AT_PSWD 9 /* Password for area */ 249: #define AT_BLKS 10 /* Blocksize */ 250: #define AT_ACCE 11 /* Access */ 251: #define AT_ENCO 12 /* Encoding */ 252: #define AT_DISP 13 /* Disposition */ 253: #define AT_LPRO 14 /* Local Protection */ 254: #define AT_GPRO 15 /* Generic Protection */ 255: #define AT_SYSI 16 /* System ID */ 256: #define AT_RECF 17 /* Record Format */ 257: #define AT_SYSP 18 /* System-Dependent Parameters */ 258: #define AT_LENB 19 /* Length in Bytes */ 259: 260: /* Kermit packet information structure */ 261: 262: struct pktinfo { /* Packet information structure */ 263: CHAR *bf_adr; /* buffer address */ 264: int bf_len; /* buffer length */ 265: CHAR *pk_adr; /* Packet address within buffer */ 266: int pk_len; /* length of data within buffer */ 267: int pk_typ; /* packet type */ 268: int pk_seq; /* packet sequence number */ 269: int pk_flg; /* ack'd bit */ 270: int pk_rtr; /* retransmission count */ 271: }; 272: 273: /* File-related symbols and structures */ 274: 275: #define XYFILN 0 /* Naming */ 276: #define XYFILT 1 /* Type */ 277: #define XYFT_T 0 /* Text */ 278: #define XYFT_B 1 /* Binary */ 279: #define XYFT_I 2 /* Image or Block (VMS) */ 280: #define XYFT_L 3 /* Labeled (tagged binary) (VMS) */ 281: #define XYFT_U 4 /* Binary Undefined (VMS) */ 282: #define XYFILW 2 /* Warning */ 283: #define XYFILD 3 /* Display */ 284: #define XYFD_N 0 /* None, Off */ 285: #define XYFD_R 1 /* Regular, Dots */ 286: #define XYFD_C 2 /* Cursor-positioning (e.g. with curses) */ 287: #define XYFD_S 3 /* Simple counter */ 288: #define XYFILC 4 /* Character set */ 289: #define XYFILF 5 /* Record Format */ 290: #define XYFF_S 0 /* Stream */ 291: #define XYFF_V 1 /* Variable */ 292: #define XYFF_VB 2 /* Variable with RCW's */ 293: #define XYFF_F 3 /* Fixed length */ 294: #define XYFF_U 4 /* Undefined */ 295: #define XYFILR 6 /* Record length */ 296: #define XYFILO 7 /* Organization */ 297: #define XYFO_S 0 /* Sequential */ 298: #define XYFO_I 1 /* Indexed */ 299: #define XYFO_R 2 /* Relative */ 300: #define XYFILP 8 /* Printer carriage control */ 301: #define XYFP_N 0 /* Newline (imbedded control characters) */ 302: #define XYFP_F 1 /* FORTRAN (space, 1, +, etc, in column 1 */ 303: #define XYFP_P 2 /* Special printer carriage controls */ 304: #define XYFP_X 4 /* None */ 305: #define XYFILX 9 /* Collision Action */ 306: #define XYFX_A 3 /* Append */ 307: #define XYFX_Q 5 /* Ask */ 308: #define XYFX_B 2 /* Backup */ 309: #define XYFX_D 4 /* Discard */ 310: #define XYFX_R 0 /* Rename */ 311: #define XYFX_X 1 /* Replace */ 312: #define XYFX_U 6 /* Update */ 313: #define XYFILB 10 /* Blocksize */ 314: #define XYFILZ 11 /* Disposition */ 315: #define XYFZ_N 0 /* New, Create */ 316: #define XYFZ_A 1 /* New, append if file exists, else create */ 317: #define XYFZ_O 2 /* Old, file must exist */ 318: #define XYFZ_X 3 /* Output to pipe/process */ 319: #define XYFZ_Y 4 /* Input from pipe/process */ 320: #define XYFILS 12 /* File Byte Size */ 321: #define XYFILL 13 /* File Label (VMS) */ 322: #define XYFILI 14 /* File Incomplete */ 323: 324: /* ANSI-style forward declarations for protocol-related functions. */ 325: 326: _PROTOTYP( int input, (void) ); 327: _PROTOTYP( int inibufs, (int, int) ); 328: _PROTOTYP( int makebuf, (int, int, CHAR [], struct pktinfo *) ); 329: _PROTOTYP( int mksbuf, (int) ); 330: _PROTOTYP( int mkrbuf, (int) ); 331: _PROTOTYP( int spack, (char, int, int, CHAR *) ); 332: _PROTOTYP( VOID proto, (void) ); 333: _PROTOTYP( int rpack, (void) ); 334: _PROTOTYP( int ack1, (CHAR *) ); 335: _PROTOTYP( int ackn, (int) ); 336: _PROTOTYP( int ackns, (int, CHAR *) ); 337: _PROTOTYP( int nack, (int) ); 338: _PROTOTYP( int resend, (int) ); 339: _PROTOTYP( int errpkt, (CHAR *) ); 340: _PROTOTYP( VOID logpkt, (char, int, CHAR *) ); 341: _PROTOTYP( CHAR dopar, (CHAR) ); 342: _PROTOTYP( int chk1, (CHAR *) ); 343: _PROTOTYP( unsigned int chk2, (CHAR *) ); 344: _PROTOTYP( unsigned int chk3, (CHAR *) ); 345: _PROTOTYP( int sipkt, (char) ); 346: _PROTOTYP( int sinit, (void) ); 347: _PROTOTYP( VOID rinit, (CHAR *) ); 348: _PROTOTYP( int spar, (CHAR *) ); 349: _PROTOTYP( int rcvfil, (char *) ); 350: _PROTOTYP( CHAR * rpar, (void) ); 351: _PROTOTYP( CHAR * rpar, (void) ); 352: _PROTOTYP( int gnfile, (void) ); 353: _PROTOTYP( int getsbuf, (int) ); 354: _PROTOTYP( int getrbuf, (void) ); 355: _PROTOTYP( int freesbuf, (int) ); 356: _PROTOTYP( int freerbuf, (int) ); 357: _PROTOTYP( int dumpsbuf, (void) ); 358: _PROTOTYP( int dumprbuf, (void) ); 359: _PROTOTYP( VOID freerpkt, (int) ); 360: _PROTOTYP( int chkwin, (int, int, int) ); 361: _PROTOTYP( int rsattr, (CHAR *) ); 362: _PROTOTYP( char *getreason, (char *) ); 363: _PROTOTYP( int scmd, (char, CHAR *) ); 364: _PROTOTYP( int encstr, (CHAR *) ); 365: _PROTOTYP( int decode, (CHAR *, int (*)(char), int) ); 366: _PROTOTYP( int fnparse, (char *) ); 367: _PROTOTYP( int syscmd, (char *, char *) ); 368: _PROTOTYP( int cwd, (char *) ); 369: _PROTOTYP( VOID screen, (int, char, long, char *) ); 370: _PROTOTYP( int remset, (char *) ); 371: _PROTOTYP( int initattr, (struct zattr *) ); 372: _PROTOTYP( int gattr, (CHAR *, struct zattr *) ); 373: _PROTOTYP( int adebu, (char *, struct zattr *) ); 374: _PROTOTYP( int canned, (CHAR *) ); 375: _PROTOTYP( int opent, (struct zattr *) ); 376: _PROTOTYP( int opena, (char *, struct zattr *) ); 377: _PROTOTYP( int openi, (char *) ); 378: _PROTOTYP( int openo, (char *, struct zattr *, struct filinfo *) ); 379: _PROTOTYP( int reof, (char *, struct zattr *) ); 380: _PROTOTYP( VOID reot, (void) ); 381: _PROTOTYP( int sfile, (int) ); 382: _PROTOTYP( int sattr, (int) ); 383: _PROTOTYP( int sdata, (void) ); 384: _PROTOTYP( int seof, (CHAR *) ); 385: _PROTOTYP( int sxeof, (CHAR *) ); 386: _PROTOTYP( int seot, (void) ); 387: _PROTOTYP( int window, (int) ); 388: _PROTOTYP( int errmsg, (char *) ); 389: _PROTOTYP( int clsif, (void) ); 390: _PROTOTYP( int clsof, (int) ); 391: _PROTOTYP( CHAR setgen, (char, char *, char *, char *) ); 392: _PROTOTYP( int getpkt, (int, int) ); 393: _PROTOTYP( int putsrv, (char) ); 394: _PROTOTYP( int puttrm, (char) ); 395: _PROTOTYP( int putfil, (char) ); 396: _PROTOTYP( VOID zdstuff, (CHAR) ); 397: _PROTOTYP( int tinit, (void) ); 398: _PROTOTYP( VOID pktinit, (void) ); 399: _PROTOTYP( VOID rinit, (CHAR *) ); 400: _PROTOTYP( VOID resetc, (void) ); 401: _PROTOTYP( VOID xsinit, (void) ); 402: _PROTOTYP( int adjpkl, (int,int,int) ); 403: _PROTOTYP( int chktimo, (int,int) ); 404: _PROTOTYP( int nxtpkt, (void) ); 405: _PROTOTYP( int ack, (void) ); 406: _PROTOTYP( int ackns, (int, CHAR *) ); 407: _PROTOTYP( int ackn, (int) ); 408: _PROTOTYP( int ack1, (CHAR *) ); 409: _PROTOTYP( int nack, (int) ); 410: _PROTOTYP( VOID rcalcpsz, (void) ); 411: _PROTOTYP( int resend, (int) ); 412: _PROTOTYP( int errpkt, (CHAR *) ); 413: _PROTOTYP( VOID srinit, (void) ); 414: _PROTOTYP( VOID tstats, (void) ); 415: _PROTOTYP( VOID fstats, (void) ); 416: _PROTOTYP( VOID intmsg, (long) ); 417: _PROTOTYP( VOID ermsg, (char *) ); 418: _PROTOTYP( int chkint, (void) ); 419: _PROTOTYP( VOID sdebu, (int) ); 420: _PROTOTYP( VOID rdebu, (CHAR *, int) ); 421: _PROTOTYP( char * dbchr, ( int ) ); 422: #ifdef COMMENT 423: _PROTOTYP( SIGTYP stptrap, (int, int) ); 424: _PROTOTYP( SIGTYP trap, (int, int) ); 425: #else 426: _PROTOTYP( SIGTYP stptrap, (int) ); 427: _PROTOTYP( SIGTYP trap, (int) ); 428: #endif /* COMMENT */ 429: 430: /* User interface functions needed by main program, etc. */ 431: 432: _PROTOTYP( VOID prescan, (void) ); 433: _PROTOTYP( VOID setint, (void) ); 434: _PROTOTYP( VOID cmdini, (void) ); 435: _PROTOTYP( int dotake, (char *) ); 436: _PROTOTYP( int cmdlin, (void) ); 437: _PROTOTYP( int conect, (void) ); 438: _PROTOTYP( int ckcgetc, (int) ); 439: _PROTOTYP( int ckcputc, (int) ); 440: _PROTOTYP (int mdmhup, (void) ); 441: _PROTOTYP( VOID herald, (void) ); 442: _PROTOTYP( VOID fixcmd, (void) ); 443: _PROTOTYP( int doarg, (char) ); 444: _PROTOTYP( VOID usage, (void) ); 445: _PROTOTYP( VOID doclean, (void) ); 446: _PROTOTYP( int sndhlp, (void) ); 447: _PROTOTYP( VOID ckhost, (char *, int) ); 448: _PROTOTYP( int gettcs, (int, int) ); 449: 450: #ifdef KANJI 451: _PROTOTYP( int zkanji, (int (*)(void)) ); /* Kanji function prototypes */ 452: _PROTOTYP( int zkanjf, (void) ); 453: _PROTOTYP( int zkanjz, (void) ); 454: _PROTOTYP( int xkanjz, (int (*)(char) ) ); 455: _PROTOTYP( int xkanji, (int, int (*)(char) ) ); 456: #endif /* KANJI */ 457: 458: #endif /* CKCKER_H */ 459: 460: /* End of ckcker.h */