|
|
/* File: C:\WACKER\xfer\krm.hh (Created: 28-Jan-1994)
* created from HAWIN source file * krm.hh -- Internal definitions for KERMIT file transfer * protocol routines. * * Copyright 1989,1994 by Hilgraeve Inc. -- Monroe, MI * All rights reserved * * $Revision: 2 $ * $Date: 4/24/02 3:36p $ */
#define Dbg(a,b)
#define DbgW(a,b,c)
#define DbgWW(a,b,c,d)
#define DbgWWW(a,b,c,d,e)
#define DbgL(a,b,c)
#if defined(ERROR)
#undef ERROR
#endif
#define ERROR (-1)
#if !defined(MAXLINE)
#define MAXLINE 130
#endif
#if !defined(DEL)
#define DEL 0177
#endif
#define MAXPCKT 100 /* maximum length for packet data */
#define K_QCTL '#'
#define K_QBIN '&'
#define K_REPT '~'
#define K_CHK1 1
#define K_CHK2 2
#define K_CHK3 3
#define CAPMASK_ATTR 0x08
#define tochar(ch) ((ch) + ' ')
#define unchar(ch) ((ch) - ' ')
#define ctl(ch) ((ch) ^ 0x40)
/* valid packet types include 'Y', 'N', 'S, 'I', 'F', 'A', 'D', 'Z',
* 'B', 'E', 'R', 'C', 'K', 'T', 'G' * plus special types returned by rec_packet(): */ #define BAD_PACKET '\030'
/* Kermit receive states */ #define KREC_INIT 0
#define KREC_FILE 1
#define KREC_DATA 2
#define KREC_COMPLETE 3
#define KREC_ABORT 4
/* Kermit packet error codes */ #define KE_NOERROR 0
#define KE_TIMEOUT 1
#define KE_NAK 2
#define KE_BAD_PACKET 3
#define KE_RMTERR 4
#define KE_WRONG 5
#define KE_REPEAT 6
#define KE_SEQUENCE 7
#define KE_FATAL 8
/* Kermit abort codes */ #define KA_OK 0
#define KA_LABORT1 1
#define KA_RABORT1 2
#define KA_LABORTALL 3
#define KA_RABORTALL 4
#define KA_IMMEDIATE 5
#define KA_RMTERR 6
#define KA_LOST_CARRIER 7
#define KA_ERRLIMIT 8
#define KA_OUT_OF_SEQ 9
#define KA_BAD_FORMAT 10
#define KA_TOO_MANY 11
#define KA_CANT_OPEN 12
#define KA_DISK_FULL 13
#define KA_DISK_ERROR 14
#define KA_OLDER_FILE 15
#define KA_NO_FILETIME 16
#define KA_WONT_CANCEL 17
#define KA_VIRUS_DETECT 18
#define KA_USER_REFUSED 19
/* progress display codes */ #define FILE_DONE 1
#define TRANSFER_DONE 2
#define KPCKT struct _kpckt
KPCKT { unsigned char pmark; unsigned char plen; unsigned char pseq; unsigned char ptype; unsigned char pdata[MAXPCKT]; int datalen; };
struct s_krm_rcv_control { int files_received; int files_aborted; int oldtries; int dsptries; int total_tries; long bytes_expected; int size_known; int lasterr; unsigned char uabort_code; int data_packet_rcvd; int store_later;
// struct s_filetime compare_time;
unsigned long ul_compare_time; // struct s_filetime filetime;
unsigned long ul_filetime; int next_rtype; int next_plen; int next_rseq; unsigned char next_packet[MAXPCKT]; KPCKT resp_pckt; };
typedef struct s_krm_rcv_control ST_R_KRM;
typedef struct s_krm_control ST_KRM;
struct s_krm_control { HSESSION hSession; HCOM hCom; ST_IOBUF *fhdl; long basesize; int ksequence; int packetnum; int tries; int abort_code; void * flagkey_hdl; long xfertime; char xtra_err[MAXLINE]; char their_fname[MAXPCKT]; TCHAR our_fname[FNAME_LEN]; long total_dsp; long total_thru; long nbytes; int file_cnt; int files_done; int its_maxl; int its_timeout; int its_npad; unsigned char its_padc; unsigned char its_eol; unsigned char its_chkt; unsigned char its_qctl; unsigned char its_qbin; unsigned char its_rept; int its_capat; int fname_width;
/* These used to be globals */ int k_useattr; /* send 'normalized' file names ? */ int k_maxl; /* maximum packet length we'll take */ int k_timeout; /* time they should wait for us */ unsigned char k_chkt; /* check type we want to use */ int k_retries; /* no. of retries */ unsigned char k_markchar; /* first char of each packet */ unsigned char k_eol; /* end of line character for packets */ int k_npad; /* no. of pad chars. to send us */ unsigned char k_padc; /* pad char. we want */ unsigned total_retries; long displayed_time;
ST_R_KRM kr; /* receive control structure */
/* variables for sending and receiving */ KPCKT *this_kpckt; KPCKT *next_kpckt; long kbytes_sent; int (*p_kputc)(ST_KRM *p, int c); long kbytes_received; int (*p_kgetc)(ST_KRM *p); void (*KrmProgress)(ST_KRM *p, int n); };
// extern int krm_dbg; /* used for real-time debugging using dbg.c */
// extern struct s_krm_control FAR *kc;
// extern void (NEARF *KrmProgress)(HSESSION, bits);
// variables for receiving
// extern struct s_krm_rcv_control FAR *krc;
// extern metachar (NEAR *p_kputc)(metachar);
// extern long kbytes_received;
// variables for sending
// extern metachar (NEAR *p_kgetc)(void);
// extern long kbytes_sent;
extern unsigned ke_msg[]; /* packet error messages */ extern int kresult_code[]; /* result codes */
/* function prototypes: */ extern void krm_box(int p_toprow, int p_leftcol, int p_botmrow, int p_rightcol);
extern void krm_box_remove(void);
extern void krmGetParameters(ST_KRM *kc);
extern void ksend_packet(ST_KRM *hK, unsigned char type, unsigned dlength, int seq, KPCKT FAR *pckt);
extern int krec_packet(ST_KRM *hK, int *len, int *seq, unsigned char *data);
extern int buildparams(ST_KRM *hK, int initiating, unsigned char *bufr);
extern void getparams(ST_KRM *hK, int initiating, unsigned char *bufr);
extern void ks_progress(ST_KRM *hK, int status); extern int krec_init(ST_KRM *hK); extern int krec_file(ST_KRM *hK); extern int krec_data(ST_KRM *hK); extern void kr_progress(ST_KRM *hK, int status);
extern int kunload_packet(ST_KRM *hK, int len, unsigned char *bufr);
extern int kr_putc(ST_KRM *kc, int c);
extern void krm_rcheck(ST_KRM *hK, int before); extern void krm_check_input(int suspend);
extern void kunload_attributes(ST_KRM *hK, unsigned char *data, KPCKT FAR *rsp_pckt);
extern void krm_settime(unsigned char *data, unsigned long *pl);
extern int kload_packet(ST_KRM *hK, unsigned char *bufr);
extern int ks_getc(ST_KRM *kc);
/************************** end of krm.hh *****************************/
|