/*===========================================================================*/ /* Copyright (c) 1987 - 1988, Future Soft Engineering, Inc. */ /* Houston, Texas */ /*===========================================================================*/ BOOL bKermitTaskRemote; /* slc nova 110 */ INT gKermitTaskCMD; /* slc nova 110 */ LPSTR glpKermitTaskParm1; /* slc nova 110 */ LPSTR glpKermitTaskParm2; /* slc nova 110 */ /* basic file transfer packet types */ #define KER_ACK 'Y' #define KER_NACK 'N' #define KER_SEND 'S' #define KER_INIT 'I' #define KER_FILE 'F' #define KER_TEXT 'X' #define KER_ATTRIB 'A' #define KER_DATA 'D' #define KER_EOF 'Z' #define KER_BREAK 'B' #define KER_ERROR 'E' #define KER_RCV 'R' #define KER_COMMAND 'C' #define KER_KERMIT 'K' #define KER_TIMEOUT 'T' #define KER_ERRCHK 'Q' #define KER_CMPLT 'C' #define KER_ABORT 'A' #define KER_GENERIC 'G' /* generic packet types */ #define KER_LOGIN 'I' #define KER_CHDIR 'C' #define KER_LOGOUT 'L' #define KER_FINISH 'F' #define KER_DIR 'D' #define KER_FREE 'U' #define KER_DEL 'E' #define KER_TYPE 'T' #define KER_REN 'R' #define KER_COPY 'K' #define KER_WHO 'W' #define KER_MESSAGE 'M' #define KER_HELP 'H' #define KER_STATUS 'Q' #define KER_PROGRAM 'P' #define KER_JOURNAL 'J' #define KER_VAR 'V' #define KER_NOPARITY '\0' #define KER_ODDPARITY 'o' #define KER_EVENPARITY 'e' #define KER_MARKPARITY 'm' #define KER_SPACEPARITY 's' /* initialization packet subscripts and values */ #define KER_INIT_MAXL 0 #define KER_INIT_TIME 1 #define KER_INIT_NPAD 2 #define KER_INIT_PADC 3 #define KER_INIT_EOL 4 #define KER_INIT_QCTL 5 #define KER_INIT_QBIN 6 #define KER_INIT_CHKT 7 #define KER_INIT_REPT 8 #define KER_MAXPACKSIZE 94 /* Maximum packet size */ #define KER_RCVTIMEOUT 13 /* Seconds for receive time out */ #define KER_SNDTIMEOUT 8 /* Seconds for send time out */ #define KER_MAXTIMEOUT 60 /* Maximum timeout interval */ #define KER_MINTIMEOUT 2 /* Minumum timeout interval */ #define KER_NPAD 0 /* Number of padding characters I will need */ #define KER_PADCHAR 0 /* Padding character I need (NULL) */ #define KER_EOL 0x0D /* End-Of-Packet character */ #define KER_QUOTE '#' /* Control prefix character */ #define KER_8BITPREFIX '&' /* Eighth bit prefix character */ #define KER_BLOCKCHK1 '1' /* Block check type (1 byte) */ #define KER_BLOCKCHK2 '2' /* Block check type (2 byte) */ #define KER_BLOCKCHK3 '3' /* Block check type (3 byte) */ /* other kermit session constants */ #define KER_MAXRETRY 5 /* Times to retry a packet */ /* myh swat: set the buffer size for the number of bytes read in from file at a time */ #define BUFFSIZE 512 INT KER_bytetran; /* myh swat: number of bytes transfered from the buffer */ INT KER_buffsiz; /* myh swat: the buffer size read from the file; usually is */ /* BUFFSIZE, but the last buffer size can be smaller */ BYTE KER_buffer[BUFFSIZE]; /* myh swat: the buffer storing read in chars from file */ INT KER_debug; BYTE KER_rem8bit; typedef struct { INT KER_spsiz; /* Maximum send packet size */ INT KER_timint; /* Timeout for foreign host on sends */ INT KER_pad; /* How much padding to send */ BYTE KER_padchar; /* Padding character to send */ BYTE KER_eol; /* End-Of-Line character to send */ BYTE KER_quote; /* Quote character in incoming data */ BYTE KER_select8; /* 8th bit quote character to send either 'Y' or '&'*/ } KERPACKETSTRUCT; typedef struct { INT KER_size; /* Size of present data */ INT KER_rpsiz; /* Maximum receive packet size */ INT KER_spsiz; /* Maximum send packet size */ INT KER_pad; /* How much padding to send */ INT KER_timint; /* Timeout for foreign host on sends */ INT KER_n; /* Packet number */ INT KER_numtry; /* Times this packet retried */ INT KER_oldtry; /* Times previous packet retried */ INT ttyfd; /* File descriptor of tty for I/O, 0 if remote */ INT KER_remote; /* -1 means we're a remote kermit */ INT KER_image; /* -1 means 8-bit mode */ INT KER_parflg; /* TRUE means use parity specified */ INT KER_turn; /* TRUE means look for turnaround char (XON) */ INT KER_lecho; /* TRUE for locally echo chars in connect mode */ INT KER_8flag; /* TRUE means 8th bit quoting is done */ INT KER_pktdeb; /* TRUE means log all packet to a file */ INT KER_filnamcnv; /* -1 means do file name case conversions */ INT KER_filecount; /* Number of files left to send */ INT KER_timeout; /* TRUE means a timeout has occurred. */ BYTE KER_state; /* Present state of the automaton */ BYTE KER_cchksum; /* Our (computed) checksum */ BYTE KER_padchar; /* Padding character to send */ BYTE KER_eol; /* End-Of-Line character to send */ BYTE KER_escchr; /* Connect command escape character */ BYTE KER_quote; /* Quote character in incoming data */ BYTE KER_select8; /* 8th bit quote character to send either 'Y' or '&'*/ BYTE KER_firstfile; BYTE KER_getflag; BYTE **KER_filelist; /* List of files to be sent */ BYTE *KER_filnam; /* Current file name */ BYTE recpkt[KER_MAXPACKSIZE]; /* Receive packet buffer */ BYTE packet[KER_MAXPACKSIZE]; /* Packet buffer */ BYTE KER_buff[KER_MAXPACKSIZE]; /* buffer for translations */ BYTE outstr[80]; /*output string for debugging and translations */ BYTE KERRCVFLAG; /* direct recieved buffers to screen, file or buffer*/ LONG KER_bytes; /* number of bytes received */ } KERMITSTRUCT; BOOL FAR KER_Receive(BOOL); BYTE NEAR KER_ReceiveInit(); BYTE NEAR KER_ReceiveFile(); BYTE NEAR KER_ReceiveData(); BOOL FAR KER_Send(); BYTE NEAR KER_SendInit(); BYTE NEAR KER_SendFile(); BYTE NEAR KER_SendData(); BYTE NEAR KER_SendGeneric(BYTE lKER_state); VOID NEAR KER_Init(BYTE state); INT NEAR KER_GetParity(); INT NEAR KER_GetTurnAroundTime(); INT NEAR KER_GetLocalEcho(); BYTE NEAR KER_Abort(WORD msgID); BYTE NEAR KER_DoParity (BYTE ch); VOID NEAR KER_SndPacket(BYTE type, INT num, INT len, BYTE *data); BYTE NEAR KER_RcvPacket(INT*, INT*, BYTE*); BYTE NEAR KER_CInChar(); BYTE NEAR KER_InChar(); INT NEAR KER_ModemWait(); INT NEAR KER_BufferFill(BYTE*); VOID NEAR KER_BufferEmpty(BYTE buffer[],INT len,BYTE flag); BOOL NEAR KER_GetNextFile(); BYTE NEAR KER_PrintErrPacket(BYTE*); VOID NEAR KER_RcvPacketInit(BYTE*); VOID NEAR KER_SndPacketInit(BYTE*); VOID FAR KER_Answer(); VOID FAR KER_Server(BYTE, INT, INT); VOID NEAR KER_DoGenericPack(BYTE*, INT, INT); BOOL NEAR KER_DoDir(BYTE*); INT_PTR APIENTRY dbKerRemote(HWND, UINT, WPARAM, LPARAM); BOOL NEAR KER_RemoteParamsOK(HWND, INT); VOID NEAR KER_DoRemoteShow(HWND, INT); VOID NEAR KER_Remote(HWND, INT); BYTE NEAR KER_Tinit(); INT NEAR KER_Encode(BYTE*, BYTE*, INT); VOID NEAR KER_Pack(HWND, BYTE, INT, INT); VOID NEAR KER_HandleTrans(); VOID NEAR KER_PutScreenStr(BYTE*); VOID NEAR KER_bSetUp(BYTE state); BYTE NEAR KER_AutoPar(); /* tge gold 01 */ VOID NEAR KER_ResetFromRemote(); /* tge gold 01 */