/************************************************************************ * * HD6KER.H Global definitions and function * prototypes for both HD6KER.C and HD6PRI.C. * ***********************************************************************/ #define NULL 0 /* --- library includes files --- */ #include #include /* Standard UNIX definitions */ #include /* isascii definitions */ #include /* signal catcher definitions */ /* --- MOD400 wild card and file management stuff --- */ #include /* wild card filename routines */ #define MOD4_NAME 12 /* maximum size of Honeywell file name */ #define SVQ 1 /* sequential file; multi-volume set; ASCII */ #define SEQ 2 /* reqular sequential file; ASCII */ #define S_R 18 /* string_relative file; ASCII */ #define F_R 13 /* fixed_relative file; BINARY */ #define ASCII 0 /* MOD400 SEQ, S_R, and SVQ file types */ #define BINARY 2 /* MOD400 F_R file type */ #define FOREIGN 1 /* MOD400 SEQ (DATA_CODE=BINARY) file type */ /* --- symbol definitions --- */ #define MAXPACKSIZ 2000 /* Maximum packet size */ #define MAXTIM 60 /* Maximum timeout interval */ #define MAXTRY 10 /* Times to retry a packet */ #define MINTIM 2 /* Minumum timeout interval */ #define MYEOL 13 /* End-Of-Line character I need */ #define MYPAD 0 /* Number of padding characters I will need */ #define MYPCHAR 0 /* Padding character I need (NULL) */ #define MYQUOTE '#' /* Quote character I will use */ #define MYTIME 10 /* Seconds after which I should be timed out */ #define TRUE -1 #define FALSE 0 #define LF 10 #define CR 13 /* ASCII Carriage Return */ #define SUB 26 /* ASCII Sub character */ #define DEL 127 /* Delete (rubout) */ #define ESC 0x1b /* real escape char */ #define SOH 1 /* Start of header 'ack' */ #define SP 32 /* ASCII space */ #define _ioeof 0x20 #define TANDEM 0 /* --- Macro Definitions --- */ /* * tochar: converts a control character to a printable one by adding a space. * unchar: undoes tochar. * ctl: converts between control characters and printable characters by * toggling the control bit (ie. ^A becomes A and A becomes ^A). */ #define tochar(ch) ((ch) + ' ') #define unchar(ch) ((ch) - ' ') #define ctl(ch) ((ch) ^ 64 ) #define forever while(1) /************************************************************************ * * Definitions for HD6KER.C * ***********************************************************************/ #ifdef MAINDEF /* --- procedures passed as arguments etc. --- */ char cread(); /* recv procs */ extern char rinit(), rfile(), rdata(); /* send procs */ extern char sinit(), sfile(), sattru(), sdata(), seof(), sbreak(); int m4_errno, decfil(), syserr(); /* --- procedures in other source files --- */ char ascout(), ascedit(), filerr(), nextin(); int flushinput(), cooktty(), rawtty(); int get_time(), wildname(), timoset(), unbuffer(); /* --- forward declarations --- */ extern unsigned chk2(); extern unsigned fsize(); /* --- global variables --- */ int aflg, rflg, sflg, /* flags for AUTO, RECEIVE, SEND */ debug, /* indicates level of debug output (0=none) */ filnamcnv, /* -1 means do file name case conversions */ filecount, /* Number of files left to send */ image, oimage, /* 0 = 7-bit, 1 = 8-bit mode, 2 = prefixing */ fileimage, ofi, /* 0 = open text file; 2 = open binary file */ n, /* Packet number */ oldt, /* previous char in encode() */ numtry, /* Times this packet retried */ oldtry, /* Times previous packet retried */ pad, /* How much padding to send */ qu8, rpt, rptflg, sz, size, /* Size of present data */ spsiz, /* Maximum send packet size */ sattrib, /* Attribute packet indicator FRANK DREANO */ senda, /* Another attribute flag */ slongp, /* Extended packet indicators FRANK DREANO */ bctr = 3, /* CRC type block-check requested */ bctu = 1, /* block-check used */ sysint, addsub, timint = 10, /* Timeout for foreign host on sends */ lrsz_6 = 512, /* Fixed-relative, BU, record size */ cmdstat, /* Return status for system commands */ dlflag; /* Flag to overwrite incoming files */ char c, /* dummy char */ *dname, /* name of debug file DH+S */ *dt, /* data-block code/decode */ eol = '\015', /* End-Of-Line character to send */ **filelist, /* List of files to be sent */ *filenames[99], *filnam, /* Current file name */ getfiles[MAXPACKSIZ], iflg = 0, /* 8th-bit-mode set */ packet[MAXPACKSIZ], /* Packet buffer */ padchar, /* Padding character to send */ quote = '#', /* Quote character in incoming data */ recpkt[MAXPACKSIZ], /* Receive packet buffer */ state, /* Present state of the automaton */ timflag, /* timeout flag DH+S */ type, /* received-packet type */ fo_name[56], /* pathname for server commands */ cmdstg[80], /* String to hold system commands */ cmdstring[80], /* String to hold system commands */ attrib[80]; /* String to hold file attributes */ char amauto[] = "%sI am in server mode!"; char badpack[] = "%sYour Kermit sent invalid packet, type \"%c\"!"; char crlf[] = "\r\n"; char *eighths[] = {"7-bit character","binary-image-mode","8th-bit prefixed"}; char goodbye[] = "Returning to MOD400; goodbye."; char logout[] = "Logging off the host; goodbye."; char *logicval[]= {"OFF", "ON"}; char noname[] = "%sNo valid names in GET request"; char xnull[] = ""; /* xnull string */ char onlyg[] = "%sUnimplemented server command!"; char prompt[] = "Superkerm: "; /* The following MOD400 command causes the Superkermit server to log off the DPS-6 when done. It causes a 'C' siqquit trap that isn't very pretty and could be avoided if a deferred 'BYE' task could be spawned. However the -DFR argument to the spawn task command (ST) is illegal in swappools, so to keep it working in all environments the trap will be tolerated. */ char byenow[] = ">SYSLIB2>BYE -BF"; char buname[] = ">SYSLIB2>EC"; char hostok[] = "Kermit server command EXECUTED!"; char hostng[] = "ERROR: Kermit server command NOT EXECUTED!"; FILE *fp, /* current disk file */ *dfp; /* debug file DH+S */ struct sgttyb cookedmode, rawmode; /* --- Identification string --- */ char ident[] = "\033\140\nSuperKermit 09 Apr 91 (Ver 2.01) Frank Dreano.\n"; /* --- Old (and I mean OLD) setups for cooked and raw TTY...Dreano --- */ /* char tset[] = ">>SYSLIB2>STTY -DEV VIP7801 -DSW1 8800 -DSW2 0800 -TERM 04 -IN A -OUT N"; char tclr[] = ">>SYSLIB2>STTY -DEV VIP7301 -RESET"; */ /* --- These cooked and raw TTY settings are for 3.1/4.0 op. system --- */ char tset[] = ">SYSLIB2>STTY -DEV VIP7801 -LL 4096 -MODES ^CR,^EC,LF -IN A -OUT N"; char tclr[] = ">SYSLIB2>STTY -DEV VIP7808 -RESET"; #else /************************************************************************ * * Definitions for HD6PRI.C * ***********************************************************************/ /* --- procedures passed as arguments etc. --- */ extern char cread(); /* recv procs */ char rinit(), rfile(), rdata(); /* send procs */ char sinit(), sfile(), sattru(), sdata(), seof(), sbreak(); extern int m4_errno, decfil(); /* --- procedures in other source files --- */ extern char ascout(), ascedit(), filerr(), nextin(); extern int flushinput(), cooktty(), rawtty(); extern int get_time(), wildname(), timoset(), unbuffer(); /* --- forward declarations --- */ unsigned chk2(); unsigned fsize(); /* --- global variables --- */ extern int aflg, rflg, sflg, /* flags for AUTO, RECEIVE, SEND */ debug, /* level of debugging output (0=none) */ filnamcnv, /* -1 means do file name case conversions */ filecount, /* Number of files left to send */ image, oimage, /* 0 = 7-bit, 1 = 8-bit mode, 2 = prefixing */ fileimage, ofi, /* 0 = open text file; 1 = open binary file */ n, /* Packet number */ oldt, /* previous char in encode() */ numtry, /* Times this packet retried */ oldtry, /* Times previous packet retried */ pad, /* How much padding to send */ qu8, rpt, rptflg, sz, size, /* Size of present data */ spsiz, /* Maximum send packet size */ sattrib, /* Attribute packet indicator FRANK DREANO */ senda, /* Another attribute flag */ slongp, /* Extended packet indicators FRANK DREANO */ bctr, /* block-check requested */ bctu, /* block-check used */ sysint, addsub, timint, /* Timeout for foreign host on sends */ lrsz_6, /* Fixed-relative, BU, record size */ cmdstat, /* Return status for system commands */ dlflag; /* Flag to overwrite incoming files */ extern char c, /* dummy char */ *dname, /* name of debug file DH+S */ *dt, /* data-block code/decode */ eol, /* End-Of-Line character to send */ **filelist, /* List of files to be sent */ *filenames[], *filnam, /* Current file name */ getfiles[], iflg, /* 8th-bit-mode set */ packet[], /* Packet buffer */ padchar, /* Padding character to send */ quote, /* Quote character in incoming data */ recpkt[], /* Receive packet buffer */ state, /* Present state of the automaton */ timflag, /* timeout flag DH+S */ type, /* received-packet type */ fo_name[], /* pathname for server commands */ cmdstg[], /* String to hold system commands */ cmdstring[], /* String to hold system commands */ attrib[]; /* String to hold file attributes */ extern char amauto[], badpack[], crlf[], *eighths[], goodbye[], logout[], *logicval[], noname[], xnull[], onlyg[], prompt[], byenow[], buname[] ; extern FILE *fp, /* current disk file */ *dfp; /* debug file DH+S */ #endif /******************** End of File hd6ker.h *****************************/