/* * Windows Kermit * * Written by William S. Hall * 3665 Benton Street, #66 * Santa Clara, CA 95051 * * protocol header file */ #if !defined(EXTERN) #define EXTERN extern #endif /* functions from protocol module */ void krmKermitDispatch(HWND, BYTE *, int); void FAR PASCAL krmDoTimeout(HWND hWnd,unsigned message,short event,DWORD time); void clsif(void); clsof(int); /* functions from extended function module */ void UpdateErrorString(HWND hWnd, char *str, int index); void tinit(HWND hWnd, int mode); BOOL krmInitMainDisplay(HWND hWnd, short cwidth, short cheight); void krmMainStringDisplay(HWND hWnd, BYTE *str, short len); /* functions from dialog box function */ BOOL FAR PASCAL krmXferDlgBox(HWND, unsigned, WORD, LONG); BOOL FAR PASCAL SendFileDlgProc(HWND, unsigned, WORD, LONG); BOOL FAR PASCAL GetFileList(HWND, unsigned, WORD, LONG); BOOL FAR PASCAL SetMiscParams(HWND, unsigned, WORD, LONG); BOOL FAR PASCAL krmRemoteChdir(HWND, unsigned, WORD, LONG); BOOL FAR PASCAL krmRemoteCmdDlgBox(HWND, unsigned, WORD, LONG); /* some protocol manifests */ #define KRM_WAITPACKET 1 #define KRM_WAITSEND 2 #define KRM_COMPLETE -1 #define KRM_ERROR_PKT -2 #define KRM_USERCNX -3 #define KRM_NO_SEND_FILE -4 #define KRM_FILE_OPEN_ERROR -5 #define KRM_TERM_OPEN_ERROR -6 #define KRM_FILE_WRITE_ERROR -7 #define KRM_FILE_CLOSE_ERROR -8 #define KRM_FILE_READ_ERROR -9 #define KRM_UNKNOWN_PACKET -10 #define KRM_RETRY_LIMIT -11 /* dialog boxes */ #define DT_KRM_GETFILE 10000 #define DT_KRM_SENDFILE 10001 #define DT_KRM_MXPARAMS 10002 #define DT_KRM_REMOTE2 10003 #define DT_KRM_XFER 10004 /* dialog box items */ #define IDD_GETNAME 10100 #define IDD_EDITSELECT 10100 #define IDD_LISTSELECT 10101 #define IDD_PATHDISPLAY 10102 #define IDD_PATHSELECT 10103 #define IDD_SEND 10104 #define IDD_TIMER 10100 #define IDD_FILEWARN 10101 #define IDD_FILEDISCARD 10102 #define IDD_KRM_BELL 10103 #define IDD_KRM_SAVE 10104 #define IDD_GETTEXT1 10100 #define IDD_GETTEXT2 10101 #define IDD_STATICTEXT1 10102 #define IDD_STATICTEXT2 10103 #define IDD_FILENAME 10000 #define IDD_SAVENAME 10001 #define IDD_BYTESMOVED 10002 #define IDD_PACKETS 10003 #define IDD_RETRIES 10004 #define IDD_PERCENTAGE 10005 #define IDD_OPERATION 10006 /* Menu items. Must be consecutive to end marker */ #define IDM_KRM_SEND 10200 #define IDM_KRM_RECEIVE 10201 #define IDM_KRM_GET 10202 #define IDM_KRM_FINISH 10203 #define IDM_KRM_LOGOUT 10204 #define IDM_KRM_BYE 10205 #define IDM_KRM_CWD 10206 #define IDM_KRM_REMOTEDIR 10207 #define IDM_KRM_REMOTETYPE 10208 #define IDM_KRM_REMOTEHELP 10209 #define IDM_KRM_REMOTEDEL 10210 #define IDM_KRM_REMOTEWHO 10211 #define IDM_KRM_REMOTESPACE 10212 #define IDM_KRM_REMOTEHOST 10213 /* end consecutive list */ /* these next menu items must be consecutive */ #define IDM_CANCELFILE 10220 #define IDM_CANCELBATCH 10221 #define IDM_ERRORCANCEL 10222 #define IDM_CANCELPROTOCOL 10223 #define IDM_RXPARAMS 10230 #define IDM_TXPARAMS 10231 #define IDM_MXPARAMS 10232 /* strings */ #define IDS_KRM_SENDING 10319 #define IDS_KRM_KERMIT 10320 #define IDS_KRM_ADDDEFAULTS 10321 #define IDS_KRM_GETFILES 10324 #define IDS_KRM_CWD 10325 #define IDS_KRM_PASSWORD 10326 #define IDS_KRM_REMOTEDIR 10329 #define IDS_KRM_REMOTETYPE 10332 #define IDS_KRM_REMOTEDEL 10335 #define IDS_KRM_REMOTEHELP 10338 #define IDS_KRM_REMOTEWHO 10341 #define IDS_KRM_REMOTESPACE 10344 #define IDS_KRM_REMOTEHOST 10347 #define IDS_KRM_TIMER 10400 #define IDS_KRM_FILEWARN 10401 #define IDS_KRM_DISCARD 10402 #define IDS_KRM_BELL 10403 /* states for getpacket */ #define PS_SYNCH 10000 #define PS_LEN 10001 #define PS_NUM 10002 #define PS_TYPE 10003 #define PS_DATA 10004 #define PS_CHK 10005 #define PS_DONE 10006 /* macros */ #define tochar(ch) ((ch) + ' ') #define unchar(ch) ((ch) - ' ') #define ctl(ch) ((ch) ^ 64) /* send init packet structure */ struct sendinit_rec { int maxpacketsize; int timeout; int padcount; char padchar; int eol; char quote; char binquote; int chksumtype; char rptprefix; }; /* general kermit variables */ struct Kermit_rec { int numtry; /* number of attempts */ int maxtry; int maxsenddatalen; /* maximum send packet length */ int chksumtype; /* check sum type */ unsigned retrycount; /* retry count */ int pktnum; /* my packet number */ unsigned pktcount; /* packet count for display on screen */ long bytesmoved; /* bytes transferred */ long filesize; /* file size in bytes */ int percentage; /* percentage moved */ unsigned waitsendtime; /* wait in ms before sending first send_init */ unsigned mstimeout; /* remote timeout in ms */ int errorcount; /* error count */ BOOL fileabort; /* abort file transfer */ BOOL batchabort; BOOL protocolabort; BOOL inpacket; BOOL newname_flag; BOOL waitsend; int displayfile; BOOL ebqflg; int rqf; char ebq; BOOL rptflg; BOOL timer; BOOL filewarning; BOOL filediscard; BOOL bell; short DispCharWidth, DispCharHeight; HANDLE hfilelist; char *pfilelist; char *pNextFile; char *filename; /* filename from pathname in ofstruct */ HANDLE hRemoteCommand; char *pRemoteCommand; HANDLE hInFile; HANDLE hOutFile; FARPROC fpTimer; WORD ids_title; char remotecmd; BOOL nullstrOK; int sstate; BOOL timeout; /* packet timed out */ }; EXTERN struct Kermit_rec Kermit; /* packet structure */ struct packet_rec { BYTE mark; int len; int num; BYTE type; BYTE rchksum; int state; BYTE cchksum; int data_count; BYTE data[100]; }; EXTERN struct packet_rec rcvpkt; /* send packet structure */ struct sndpkt_rec { BYTE mark; BYTE data[100]; BYTE pktbuf[110]; int len; }; EXTERN struct sndpkt_rec sndpkt; /* default manifests */ #define KRM_DEFMARK 1 #define KRM_DEFMAXTRY 5 #define KRM_MAXPACKETSIZE 94 #define KRM_DEFPACKETSIZE 80 #define KRM_MINPACKETSIZE 10 #define KRM_DEFTIMEOUT 5 #define KRM_DEFPADCOUNT 0 #define KRM_DEFPADCHAR '\000' #define KRM_DEFEOL 13 #define KRM_DEFQUOTE '#' #define KRM_DEFBINQUOTE 'Y' #define KRM_DEFCHKSUM 1 #define KRM_DEFRPTCHAR ' ' /* miscellaneous variables */ EXTERN int krmState; EXTERN OFSTRUCT myofstruct; EXTERN struct sendinit_rec remote; EXTERN struct sendinit_rec local; EXTERN HWND hWndXfer; EXTERN FARPROC fpXfer;