From c8b1dce9e27386f52a223d51246863de1047ce84 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Wed, 17 Sep 2003 03:51:58 +0000 Subject: [PATCH] General code cleanup, more modularization, numeric constant replacement. --- src/sbbs3/xmodem.c | 11 +- src/sbbs3/zmodem.c | 364 +++++++++++++++++++-------------------------- src/sbbs3/zmodem.h | 9 +- 3 files changed, 165 insertions(+), 219 deletions(-) diff --git a/src/sbbs3/xmodem.c b/src/sbbs3/xmodem.c index af1cb7f39f..f542587957 100644 --- a/src/sbbs3/xmodem.c +++ b/src/sbbs3/xmodem.c @@ -45,7 +45,7 @@ void xmodem_put_nak(xmodem_t* xm) { - while(getcom(1)!=NOINP && (xm->mode&NO_LOCAL || kbhit()!=LOC_ABORT)) + while(getcom(1)!=NOINP) ; /* wait for any trailing data */ putcom(NAK); } @@ -263,6 +263,11 @@ int xmodem_get_ack(xmodem_t* xm, int tries) return(0); } +const char* xmodem_source(void) +{ + return(__FILE__); +} + char* xmodem_ver(char *buf) { sscanf("$Revision$", "%*s %s", buf); @@ -270,7 +275,3 @@ char* xmodem_ver(char *buf) return(buf); } -const char* xmodem_source(void) -{ - return(__FILE__); -} \ No newline at end of file diff --git a/src/sbbs3/zmodem.c b/src/sbbs3/zmodem.c index a55039476c..4456a683f7 100644 --- a/src/sbbs3/zmodem.c +++ b/src/sbbs3/zmodem.c @@ -25,16 +25,6 @@ /* Zmodem specific functions start here */ /****************************************/ -/**********************************************/ -/* Output single byte as two hex ASCII digits */ -/**********************************************/ -void putzhex(uchar val) -{ - char *digits="0123456789abcdef"; - - putcom(digits[(val&0xF0)>>4]); - putcom(digits[val&0xF]); -} /***********************/ /* Output a hex header */ @@ -81,48 +71,6 @@ void ltohdr(long l) Txhdr[ZP3] = l>>24; } -/****************************************************************************/ -/* Outputs single Zmodem character, escaping with ZDLE when appropriate */ -/****************************************************************************/ -void putzcom(uchar ch) -{ - static lastsent; - - if(ch&0x60) /* not a control char */ - putcom(lastsent=ch); - else - switch(ch) { - case DLE: - case DLE|0x80: /* even if high-bit set */ - case XON: - case XON|0x80: - case XOFF: - case XOFF|0x80: - case ZDLE: - putcom(ZDLE); - ch^=0x40; - putcom(lastsent=ch); - break; - case CR: - case CR|0x80: - if(!(zmode&CTRL_ESC) && (lastsent&0x7f)!='@') - putcom(lastsent=ch); - else { - putcom(ZDLE); - ch^=0x40; - putcom(lastsent=ch); - } - break; - default: - if(zmode&CTRL_ESC && !(ch&0x60)) { /* it's a ctrl char */ - putcom(ZDLE); - ch^=0x40; - } - putcom(lastsent=ch); - break; - } -} - /* * Read a byte, checking for ZMODEM escape encoding * including CAN*5 which represents a quick abort @@ -228,9 +176,6 @@ int getcom7() #include "crc16.h" #include "crc32.h" -#define UPDCRC16 ucrc16 -#define UPDCRC32 ucrc32 - #define ENDOFFRAME 2 #define FRAMEOK 1 #define TIMEOUT -1 /* rx routine did not receive a character within timeout */ @@ -251,7 +196,6 @@ int opt_d = TRUE; /* show debug output */ void zmodem_rx_purge(zmodem_t* zm) - { while(recv_byte(zm->sock,0,zm->mode)<=0xff); } @@ -267,12 +211,12 @@ zmodem_tx_raw(zmodem_t* zm, unsigned char ch) #ifdef _DEBUG if (zm->raw_trace) { - fprintf(stderr,"%02x ",ch); + fprintf(zm->statfp,"%02x ",ch); } #endif if(send_byte(zm->sock,ch,10,zm->mode)) - fprintf(stderr,"!Send error: %u\n",ERROR_VALUE); + fprintf(zm->errfp,"!Send error: %u\n",ERROR_VALUE); zm->last_sent = ch; } @@ -283,7 +227,6 @@ zmodem_tx_raw(zmodem_t* zm, unsigned char ch) void zmodem_tx_esc(zmodem_t* zm, unsigned char c) - { zmodem_tx_raw(zm, ZDLE); /* @@ -296,31 +239,72 @@ zmodem_tx_esc(zmodem_t* zm, unsigned char c) * transmit a character; ZDLE escaping if appropriate */ +#if 0 +/****************************************************************************/ +/* Outputs single Zmodem character, escaping with ZDLE when appropriate */ +/****************************************************************************/ +void putzcom(uchar ch) +{ + static lastsent; + + if(ch&0x60) /* not a control char */ + putcom(lastsent=ch); + else + switch(ch) { + case DLE: + case DLE|0x80: /* even if high-bit set */ + case XON: + case XON|0x80: + case XOFF: + case XOFF|0x80: + case ZDLE: + putcom(ZDLE); + ch^=0x40; + putcom(lastsent=ch); + break; + case CR: + case CR|0x80: + if(!(zmode&CTRL_ESC) && (lastsent&0x7f)!='@') + putcom(lastsent=ch); + else { + putcom(ZDLE); + ch^=0x40; + putcom(lastsent=ch); + } + break; + default: + if(zmode&CTRL_ESC && !(ch&0x60)) { /* it's a ctrl char */ + putcom(ZDLE); + ch^=0x40; + } + putcom(lastsent=ch); + break; + } +} +#endif + void zmodem_tx(zmodem_t* zm, unsigned char c) - { switch (c) { + case DLE: + case DLE|0x80: /* even if high-bit set */ + case XON: + case XON|0x80: + case XOFF: + case XOFF|0x80: case ZDLE: zmodem_tx_esc(zm, c); return; - case 0x8d: - case 0x0d: + case CR: + case CR|0x80: if (zm->escape_all_control_characters && (zm->last_sent&0x7f) == '@') { zmodem_tx_esc(zm, c); return; } break; - case 0x10: - case 0x90: - case 0x11: - case 0x91: - case 0x13: - case 0x93: - zmodem_tx_esc(zm, c); - return; default: - if (zm->escape_all_control_characters && (c & 0x60) == 0) { + if (zm->escape_all_control_characters && (c&0x60)==0) { zmodem_tx_esc(zm, c); return; } @@ -332,44 +316,31 @@ zmodem_tx(zmodem_t* zm, unsigned char c) zmodem_tx_raw(zm, c); } -/* - * transmit a hex header. - * these routines use tx_raw because we're sure that all the - * characters are not to be escaped. - */ - +/**********************************************/ +/* Output single byte as two hex ASCII digits */ +/**********************************************/ void -zmodem_tx_nibble(zmodem_t* zm, int n) - +zmodem_tx_hex(zmodem_t* zm, char val) { - n &= 0x0f; - if (n < 10) { - n += '0'; - } - else { - n += 'a' - 10; - } - - zmodem_tx_raw(zm, (uchar)n); -} - -void -zmodem_tx_hex(zmodem_t* zm, int h) + char* xdigit="0123456789abcdef"; -{ - zmodem_tx_nibble(zm, h >> 4); - zmodem_tx_nibble(zm, h); + zmodem_tx_raw(zm, xdigit[val>>4]); + zmodem_tx_raw(zm, xdigit[val&0xf]); } +/* + * transmit a hex header. + * these routines use tx_raw because we're sure that all the + * characters are not to be escaped. + */ void zmodem_tx_hex_header(zmodem_t* zm, unsigned char * p) - { int i; unsigned short int crc; #ifdef _DEBUG - fprintf(stderr,"tx_hheader : "); + fprintf(zm->statfp,"tx_hheader : "); #endif zmodem_tx_raw(zm, ZPAD); @@ -396,7 +367,7 @@ zmodem_tx_hex_header(zmodem_t* zm, unsigned char * p) for (i=0;i<HDRLEN;i++) { zmodem_tx_hex(zm, *p); - crc = UPDCRC16(*p, crc); + crc = ucrc16(*p, crc); p++; } @@ -404,15 +375,15 @@ zmodem_tx_hex_header(zmodem_t* zm, unsigned char * p) * update the crc as though it were zero */ -// crc = UPDCRC16(0,crc); -// crc = UPDCRC16(0,crc); +// crc = ucrc16(0,crc); +// crc = ucrc16(0,crc); /* * transmit the crc */ - zmodem_tx_hex(zm, crc >> 8); - zmodem_tx_hex(zm, crc&0xff); + zmodem_tx_hex(zm, (char)(crc>>8)); + zmodem_tx_hex(zm, (char)(crc&0xff)); /* * end of line sequence @@ -425,7 +396,7 @@ zmodem_tx_hex_header(zmodem_t* zm, unsigned char * p) #ifdef _DEBUG - fprintf(stderr,"\n"); + fprintf(zm->statfp,"\n"); #endif } @@ -435,13 +406,12 @@ zmodem_tx_hex_header(zmodem_t* zm, unsigned char * p) void zmodem_tx_bin32_header(zmodem_t* zm, unsigned char * p) - { int i; unsigned long crc; #ifdef _DEBUG - fprintf(stderr,"tx binary header 32 bits crc\n"); + fprintf(zm->statfp,"tx binary header 32 bits crc\n"); // zm->raw_trace = 1; #endif @@ -460,7 +430,7 @@ zmodem_tx_bin32_header(zmodem_t* zm, unsigned char * p) crc = 0xffffffffL; for (i=0;i<HDRLEN;i++) { - crc = UPDCRC32(*p,crc); + crc = ucrc32(*p,crc); zmodem_tx(zm, *p++); } @@ -474,13 +444,12 @@ zmodem_tx_bin32_header(zmodem_t* zm, unsigned char * p) void zmodem_tx_bin16_header(zmodem_t* zm, unsigned char * p) - { int i; unsigned int crc; #ifdef _DEBUG - fprintf(stderr,"tx binary header 16 bits crc\n"); + fprintf(zm->statfp,"tx binary header 16 bits crc\n"); #endif zmodem_tx_raw(zm, ZPAD); @@ -498,12 +467,12 @@ zmodem_tx_bin16_header(zmodem_t* zm, unsigned char * p) crc = 0; for (i=0;i<HDRLEN;i++) { - crc = UPDCRC16(*p,crc); + crc = ucrc16(*p,crc); zmodem_tx(zm, *p++); } -// crc = UPDCRC16(0,crc); -// crc = UPDCRC16(0,crc); +// crc = ucrc16(0,crc); +// crc = ucrc16(0,crc); zmodem_tx(zm, (uchar)(crc >> 8)); zmodem_tx(zm, (uchar)(crc&0xff)); @@ -519,7 +488,6 @@ zmodem_tx_bin16_header(zmodem_t* zm, unsigned char * p) void zmodem_tx_header(zmodem_t* zm, unsigned char * p) - { if (zm->can_fcs_32) { if (!zm->want_fcs_16) { @@ -540,23 +508,22 @@ zmodem_tx_header(zmodem_t* zm, unsigned char * p) void zmodem_tx_32_data(zmodem_t* zm, uchar sub_frame_type, unsigned char * p, int l) - { unsigned long crc; #ifdef _DEBUG - fprintf(stderr,"tx_32_data\n"); + fprintf(zm->statfp,"tx_32_data\n"); #endif crc = 0xffffffffl; while (l > 0) { - crc = UPDCRC32(*p,crc); + crc = ucrc32(*p,crc); zmodem_tx(zm, *p++); l--; } - crc = UPDCRC32(sub_frame_type, crc); + crc = ucrc32(sub_frame_type, crc); zmodem_tx_raw(zm, ZDLE); zmodem_tx_raw(zm, sub_frame_type); @@ -571,29 +538,28 @@ zmodem_tx_32_data(zmodem_t* zm, uchar sub_frame_type, unsigned char * p, int l) void zmodem_tx_16_data(zmodem_t* zm, uchar sub_frame_type,unsigned char * p,int l) - { unsigned short crc; #ifdef _DEBUG - fprintf(stderr,"tx_16_data\n"); + fprintf(zm->statfp,"tx_16_data\n"); #endif crc = 0; while (l > 0) { - crc = UPDCRC16(*p,crc); + crc = ucrc16(*p,crc); zmodem_tx(zm, *p++); l--; } - crc = UPDCRC16(sub_frame_type,crc); + crc = ucrc16(sub_frame_type,crc); zmodem_tx_raw(zm, ZDLE); zmodem_tx_raw(zm, sub_frame_type); -// crc = UPDCRC16(0,crc); -// crc = UPDCRC16(0,crc); +// crc = ucrc16(0,crc); +// crc = ucrc16(0,crc); zmodem_tx(zm, (uchar)(crc >> 8)); zmodem_tx(zm, (uchar)(crc&0xff)); @@ -605,7 +571,6 @@ zmodem_tx_16_data(zmodem_t* zm, uchar sub_frame_type,unsigned char * p,int l) void zmodem_tx_data(zmodem_t* zm, uchar sub_frame_type,unsigned char * p, int l) - { if (!zm->want_fcs_16 && zm->can_fcs_32) { zmodem_tx_32_data(zm, sub_frame_type,p,l); @@ -622,7 +587,6 @@ zmodem_tx_data(zmodem_t* zm, uchar sub_frame_type,unsigned char * p, int l) void zmodem_tx_pos_header(zmodem_t* zm, int type,long pos) - { char header[5]; @@ -637,16 +601,14 @@ zmodem_tx_pos_header(zmodem_t* zm, int type,long pos) void zmodem_tx_znak(zmodem_t* zm) - { - fprintf(stderr,"tx_znak\n"); + fprintf(zm->statfp,"tx_znak\n"); zmodem_tx_pos_header(zm, ZNAK, zm->ack_file_pos); } void zmodem_tx_zskip(zmodem_t* zm) - { zmodem_tx_pos_header(zm, ZSKIP, 0L); } @@ -676,19 +638,18 @@ zmodem_rx_poll(zmodem_t* zm) int zmodem_rx_raw(zmodem_t* zm, int to) - { int c; if((c=recv_byte(zm->sock,to,zm->mode)) > 0xff) return TIMEOUT; -// fprintf(stdout,"%02X ",c); +// fprintf(zm->statfp,"%02X ",c); if (c == CAN) { zm->n_cans++; if (zm->n_cans == 5) { - fprintf(stderr,"\nCancelled Remotely\n"); + fprintf(zm->statfp,"\nCancelled Remotely\n"); bail(CAN); } } @@ -710,7 +671,6 @@ zmodem_rx_raw(zmodem_t* zm, int to) int zmodem_rx(zmodem_t* zm, int to) - { int c; @@ -736,10 +696,10 @@ zmodem_rx(zmodem_t* zm, int to) switch (c) { case ZDLE: break; - case 0x11: - case 0x91: - case 0x13: - case 0x93: + case XON: + case XON|0x80: + case XOFF: + case XOFF|0x80: continue; default: /* @@ -764,7 +724,7 @@ zmodem_rx(zmodem_t* zm, int to) do { c = zmodem_rx_raw(zm, to); - if (c == 0x11 || c == 0x13 || c == 0x91 || c == 0x93 || c == ZDLE) { + if (c == XON || c == (XON|0x80) || c == XOFF || c == (XOFF|0x80) || c == ZDLE) { /* * these can be dropped. */ @@ -831,7 +791,6 @@ zmodem_rx(zmodem_t* zm, int to) int zmodem_rx_32_data(zmodem_t* zm, unsigned char * p,int * l) - { int c; unsigned long rxd_crc; @@ -839,7 +798,7 @@ zmodem_rx_32_data(zmodem_t* zm, unsigned char * p,int * l) int sub_frame_type; #ifdef _DEBUG - fprintf(stderr,"rx_32_data\n"); + fprintf(zm->statfp,"rx_32_data\n"); #endif crc = 0xffffffffl; @@ -851,7 +810,7 @@ zmodem_rx_32_data(zmodem_t* zm, unsigned char * p,int * l) return TIMEOUT; } if (c < 0x100) { - crc = UPDCRC32(c,crc); + crc = ucrc32(c,crc); *p++ = c; (*l)++; continue; @@ -860,7 +819,7 @@ zmodem_rx_32_data(zmodem_t* zm, unsigned char * p,int * l) sub_frame_type = c & 0xff; - crc = UPDCRC32(sub_frame_type, crc); + crc = ucrc32(sub_frame_type, crc); crc = ~crc; @@ -880,7 +839,6 @@ zmodem_rx_32_data(zmodem_t* zm, unsigned char * p,int * l) int zmodem_rx_16_data(zmodem_t* zm, register unsigned char * p,int * l) - { register int c; int sub_frame_type; @@ -888,7 +846,7 @@ zmodem_rx_16_data(zmodem_t* zm, register unsigned char * p,int * l) unsigned short rxd_crc; #ifdef _DEBUG - fprintf(stderr,"rx_16_data\n"); + fprintf(zm->statfp,"rx_16_data\n"); #endif crc = 0; @@ -900,7 +858,7 @@ zmodem_rx_16_data(zmodem_t* zm, register unsigned char * p,int * l) return TIMEOUT; } if (c < 0x100) { - crc = UPDCRC16(c,crc); + crc = ucrc16(c,crc); *p++ = c; (*l)++; } @@ -908,10 +866,10 @@ zmodem_rx_16_data(zmodem_t* zm, register unsigned char * p,int * l) sub_frame_type = c & 0xff; - crc = UPDCRC16(sub_frame_type,crc); + crc = ucrc16(sub_frame_type,crc); -// crc = UPDCRC16(0,crc); -// crc = UPDCRC16(0,crc); +// crc = ucrc16(0,crc); +// crc = ucrc16(0,crc); rxd_crc = zmodem_rx(zm, 1) << 8; rxd_crc |= zmodem_rx(zm, 1); @@ -927,7 +885,6 @@ zmodem_rx_16_data(zmodem_t* zm, register unsigned char * p,int * l) int zmodem_rx_data(zmodem_t* zm, unsigned char * p, int * l) - { unsigned char zack_header[] = { ZACK, 0, 0, 0, 0 }; int sub_frame_type; @@ -986,7 +943,6 @@ zmodem_rx_data(zmodem_t* zm, unsigned char * p, int * l) int zmodem_rx_nibble(zmodem_t* zm, int to) - { int c; @@ -1023,7 +979,6 @@ zmodem_rx_nibble(zmodem_t* zm, int to) int zmodem_rx_hex(zmodem_t* zm, int to) - { int n1; int n0; @@ -1051,7 +1006,6 @@ zmodem_rx_hex(zmodem_t* zm, int to) void zmodem_rx_bin16_header(zmodem_t* zm, int to) - { int c; int n; @@ -1059,7 +1013,7 @@ zmodem_rx_bin16_header(zmodem_t* zm, int to) unsigned short int rxd_crc; #ifdef _DEBUG - fprintf(stderr,"rx binary header 16 bits crc\n"); + fprintf(zm->statfp,"rx binary header 16 bits crc\n"); #endif crc = 0; @@ -1068,23 +1022,23 @@ zmodem_rx_bin16_header(zmodem_t* zm, int to) c = zmodem_rx(zm, to); if (c == TIMEOUT) { #ifdef _DEBUG - fprintf(stderr,"timeout\n"); + fprintf(zm->statfp,"timeout\n"); #endif return; } - crc = UPDCRC16(c,crc); + crc = ucrc16(c,crc); zm->rxd_header[n] = c; } -// crc = UPDCRC16(0,crc); -// crc = UPDCRC16(0,crc); +// crc = ucrc16(0,crc); +// crc = ucrc16(0,crc); rxd_crc = zmodem_rx(zm, 1) << 8; rxd_crc |= zmodem_rx(zm, 1); if (rxd_crc != crc) { #ifdef _DEBUG - fprintf(stderr,"bad crc %4.4x %4.4x\n",rxd_crc,crc); + fprintf(zm->statfp,"bad crc %4.4x %4.4x\n",rxd_crc,crc); #endif return; } @@ -1094,7 +1048,6 @@ zmodem_rx_bin16_header(zmodem_t* zm, int to) void zmodem_rx_hex_header(zmodem_t* zm, int to) - { int c; int i; @@ -1102,20 +1055,20 @@ zmodem_rx_hex_header(zmodem_t* zm, int to) unsigned short int rxd_crc; #ifdef _DEBUG - fprintf(stderr,"rx_hex_header : "); + fprintf(zm->statfp,"rx_hex_header : "); #endif for (i=0;i<5;i++) { c = zmodem_rx_hex(zm, to); if (c == TIMEOUT) { return; } - crc = UPDCRC16(c,crc); + crc = ucrc16(c,crc); zm->rxd_header[i] = c; } -// crc = UPDCRC16(0,crc); -// crc = UPDCRC16(0,crc); +// crc = ucrc16(0,crc); +// crc = ucrc16(0,crc); /* * receive the crc @@ -1142,7 +1095,7 @@ zmodem_rx_hex_header(zmodem_t* zm, int to) } #ifdef _DEBUG else { - fprintf(stderr,"\n!BAD CRC-16: 0x%hX, expected: 0x%hX\n", rxd_crc, crc); + fprintf(zm->errfp,"\n!BAD CRC-16: 0x%hX, expected: 0x%hX\n", rxd_crc, crc); } #endif @@ -1160,7 +1113,6 @@ zmodem_rx_hex_header(zmodem_t* zm, int to) void zmodem_rx_bin32_header(zmodem_t* zm, int to) - { int c; int n; @@ -1168,7 +1120,7 @@ zmodem_rx_bin32_header(zmodem_t* zm, int to) unsigned long rxd_crc; #ifdef _DEBUG - fprintf(stderr,"rx binary header 32 bits crc\n"); + fprintf(zm->statfp,"rx binary header 32 bits crc\n"); #endif crc = 0xffffffffL; @@ -1178,7 +1130,7 @@ zmodem_rx_bin32_header(zmodem_t* zm, int to) if (c == TIMEOUT) { return; } - crc = UPDCRC32(c,crc); + crc = ucrc32(c,crc); zm->rxd_header[n] = c; } @@ -1207,12 +1159,11 @@ zmodem_rx_bin32_header(zmodem_t* zm, int to) int zmodem_rx_header_raw(zmodem_t* zm, int to,int errors) - { int c; #ifdef _DEBUG - fprintf(stderr,"rx header : "); + fprintf(zm->statfp,"rx header : "); #endif zm->rxd_header_len = 0; @@ -1220,21 +1171,21 @@ zmodem_rx_header_raw(zmodem_t* zm, int to,int errors) do { c = zmodem_rx_raw(zm, to); if (c == TIMEOUT) { - fprintf(stderr,"\n%s %d\n",__FILE__,__LINE__); + fprintf(zm->statfp,"\n%s %d\n",__FILE__,__LINE__); return c; } } while (c != ZPAD); c = zmodem_rx_raw(zm, to); if (c == TIMEOUT) { - fprintf(stderr,"\n%s %d\n",__FILE__,__LINE__); + fprintf(zm->statfp,"\n%s %d\n",__FILE__,__LINE__); return c; } if (c == ZPAD) { c = zmodem_rx_raw(zm, to); if (c == TIMEOUT) { - fprintf(stderr,"\n%s %d\n",__FILE__,__LINE__); + fprintf(zm->statfp,"\n%s %d\n",__FILE__,__LINE__); return c; } } @@ -1245,7 +1196,7 @@ zmodem_rx_header_raw(zmodem_t* zm, int to,int errors) if (c != ZDLE) { #ifdef _DEBUG - fprintf(stderr,"expected ZDLE; got %c\n",c); + fprintf(zm->statfp,"expected ZDLE; got %c\n",c); #endif continue; } @@ -1257,12 +1208,12 @@ zmodem_rx_header_raw(zmodem_t* zm, int to,int errors) c = zmodem_rx(zm, to); if (c == TIMEOUT) { - fprintf(stderr,"\n%s %d\n",__FILE__,__LINE__); + fprintf(zm->statfp,"\n%s %d\n",__FILE__,__LINE__); return c; } #ifdef _DEBUG - fprintf(stderr,"\n"); + fprintf(zm->statfp,"\n"); #endif switch (c) { case ZBIN: @@ -1282,7 +1233,7 @@ zmodem_rx_header_raw(zmodem_t* zm, int to,int errors) * unrecognized header style */ #ifdef _DEBUG - fprintf(stderr,"unrecognized header style %c\n",c); + fprintf(zm->statfp,"unrecognized header style %c\n",c); #endif if (errors) { return INVHDR; @@ -1311,7 +1262,7 @@ zmodem_rx_header_raw(zmodem_t* zm, int to,int errors) } #ifdef _DEBUG - fprintf(stderr,"type %d\n",zm->rxd_header[0]); + fprintf(zm->statfp,"type %d\n",zm->rxd_header[0]); #endif return zm->rxd_header[0]; @@ -1319,14 +1270,12 @@ zmodem_rx_header_raw(zmodem_t* zm, int to,int errors) int zmodem_rx_header(zmodem_t* zm, int timeout) - { return zmodem_rx_header_raw(zm, timeout, FALSE); } int zmodem_rx_header_and_check(zmodem_t* zm, int timeout) - { int type; while (TRUE) { @@ -1397,7 +1346,6 @@ int zmodem_send_zfin(zmodem_t* zm) void show_progress(zmodem_t* zm, FILE * fp) - { time_t duration; int cps; @@ -1418,7 +1366,7 @@ show_progress(zmodem_t* zm, FILE * fp) cps = ftell(fp) / duration; - fprintf(stderr,"zmtx: %8ld bytes (%3d %%/%5d cps) \r", + fprintf(zm->statfp,"zmtx: %8ld bytes (%3d %%/%5d cps) \r", ftell(fp),percentage,cps); } @@ -1431,7 +1379,6 @@ show_progress(zmodem_t* zm, FILE * fp) int send_from(zmodem_t* zm, FILE * fp) - { int n; long pos; @@ -1490,7 +1437,7 @@ send_from(zmodem_t* zm, FILE * fp) if (ftell(fp) == zm->current_file_size) { if (opt_d) { - fprintf(stderr,"end of file\n"); + fprintf(zm->statfp,"end of file\n"); } return ZACK; } @@ -1529,7 +1476,6 @@ send_from(zmodem_t* zm, FILE * fp) int zmodem_send_file(zmodem_t* zm, char* name, FILE* fp) - { long pos; struct stat s; @@ -1559,21 +1505,21 @@ zmodem_send_file(zmodem_t* zm, char* name, FILE* fp) if (zm->management_protect) { zfile_frame[ZF1] = ZF1_ZMPROT; if (opt_d) { - fprintf(stderr,"zmtx: protecting destination\n"); + fprintf(zm->statfp,"zmtx: protecting destination\n"); } } if (zm->management_clobber) { zfile_frame[ZF1] = ZF1_ZMCLOB; if (opt_d) { - fprintf(stderr,"zmtx: overwriting destination\n"); + fprintf(zm->statfp,"zmtx: overwriting destination\n"); } } if (zm->management_newer) { zfile_frame[ZF1] = ZF1_ZMNEW; if (opt_d) { - fprintf(stderr,"zmtx: overwriting destination if newer\n"); + fprintf(zm->statfp,"zmtx: overwriting destination if newer\n"); } } @@ -1634,13 +1580,13 @@ zmodem_send_file(zmodem_t* zm, char* name, FILE* fp) } while (type == ZACK); if (opt_d) { - fprintf(stderr,"type : %d\n",type); + fprintf(zm->statfp,"type : %d\n",type); } if (type == ZSKIP) { fclose(fp); if (opt_v) { - fprintf(stderr,"zmtx: skipped file \"%s\" \n",name); + fprintf(zm->statfp,"zmtx: skipped file \"%s\" \n",name); } return -1; } @@ -1696,7 +1642,7 @@ zmodem_send_file(zmodem_t* zm, char* name, FILE* fp) */ if (opt_v) { - fprintf(stderr,"zmtx: sent file \"%s\" \n",name); + fprintf(zm->statfp,"zmtx: sent file \"%s\" \n",name); } fclose(fp); @@ -1727,7 +1673,7 @@ zmodem_send_files(char** fname, int total_files) */ if (opt_v) { - fprintf(stderr,"zmtx: establishing contact with receiver\n"); + fprintf(zm->statfp,"zmtx: establishing contact with receiver\n"); } i = 0; @@ -1735,7 +1681,7 @@ zmodem_send_files(char** fname, int total_files) unsigned char zrqinit_header[] = { ZRQINIT, 0, 0, 0, 0 }; i++; if (i > 10) { - fprintf(stderr,"zmtx: can't establish contact with receiver\n"); + fprintf(zm->statfp,"zmtx: can't establish contact with receiver\n"); bail(3); } @@ -1746,8 +1692,8 @@ zmodem_send_files(char** fname, int total_files) } while (zmodem_rx_header(7) != ZRINIT); if (opt_v) { - fprintf(stderr,"zmtx: contact established\n"); - fprintf(stderr,"zmtx: starting file transfer\n"); + fprintf(zm->statfp,"zmtx: contact established\n"); + fprintf(zm->statfp,"zmtx: starting file transfer\n"); } /* @@ -1765,13 +1711,13 @@ zmodem_send_files(char** fname, int total_files) zm->use_variable_headers = (zm->rxd_header[ZF1] & ZF1_CANVHDR) != 0; if (opt_d) { - fprintf(stderr,"receiver %s full duplex\n" ,zmodem_can_full_duplex ? "can" : "can't"); - fprintf(stderr,"receiver %s overlap io\n" ,zmodem_can_overlap_io ? "can" : "can't"); - fprintf(stderr,"receiver %s break\n" ,zmodem_can_break ? "can" : "can't"); - fprintf(stderr,"receiver %s fcs 32\n" ,zmodem_can_fcs_32 ? "can" : "can't"); - fprintf(stderr,"receiver %s escaped control chars\n",zmodem_escape_all_control_characters ? "requests" : "doesn't request"); - fprintf(stderr,"receiver %s escaped 8th bit\n" ,zmodem_escape_8th_bit ? "requests" : "doesn't request"); - fprintf(stderr,"receiver %s use variable headers\n" ,zm->use_variable_headers ? "can" : "can't"); + fprintf(zm->statfp,"receiver %s full duplex\n" ,zmodem_can_full_duplex ? "can" : "can't"); + fprintf(zm->statfp,"receiver %s overlap io\n" ,zmodem_can_overlap_io ? "can" : "can't"); + fprintf(zm->statfp,"receiver %s break\n" ,zmodem_can_break ? "can" : "can't"); + fprintf(zm->statfp,"receiver %s fcs 32\n" ,zmodem_can_fcs_32 ? "can" : "can't"); + fprintf(zm->statfp,"receiver %s escaped control chars\n",zmodem_escape_all_control_characters ? "requests" : "doesn't request"); + fprintf(zm->statfp,"receiver %s escaped 8th bit\n" ,zmodem_escape_8th_bit ? "requests" : "doesn't request"); + fprintf(zm->statfp,"receiver %s use variable headers\n" ,zm->use_variable_headers ? "can" : "can't"); } /* @@ -1783,7 +1729,7 @@ zmodem_send_files(char** fname, int total_files) for(fnum=0;fnum<total_files;fnum++) { if(send_file(fname[fnum])) { if (opt_v) { - fprintf(stderr,"zmtx: remote aborted.\n"); + fprintf(zm->statfp,"zmtx: remote aborted.\n"); } break; } @@ -1795,7 +1741,7 @@ zmodem_send_files(char** fname, int total_files) */ if (opt_v) { - fprintf(stderr,"zmtx: closing the session\n"); + fprintf(zm->statfp,"zmtx: closing the session\n"); } { @@ -1824,19 +1770,19 @@ zmodem_send_files(char** fname, int total_files) */ if (opt_d) { - fprintf(stderr,"zmtx: cleanup and exit\n"); + fprintf(zm->statfp,"zmtx: cleanup and exit\n"); } return 0; } - - - - - #endif +const char* zmodem_source(void) +{ + return(__FILE__); +} + char* zmodem_ver(char *buf) { sscanf("$Revision$", "%*s %s", buf); @@ -1844,7 +1790,3 @@ char* zmodem_ver(char *buf) return(buf); } -const char* zmodem_source(void) -{ - return(__FILE__); -} \ No newline at end of file diff --git a/src/sbbs3/zmodem.h b/src/sbbs3/zmodem.h index 34b61d4e89..6463bb183c 100644 --- a/src/sbbs3/zmodem.h +++ b/src/sbbs3/zmodem.h @@ -23,6 +23,7 @@ #define LF 0x0a #define CR 0x0d #endif +#define DLE 0x10 #define XON 0x11 #define XOFF 0x13 #define NAK 0x15 @@ -190,8 +191,6 @@ typedef struct { - SOCKET sock; /* socket descriptor */ - unsigned char rxd_header[ZMAXHLEN]; /* last received header */ int rxd_header_len; /* last received header size */ @@ -240,7 +239,11 @@ typedef struct { int n_cans; - long mode; + /* Stuff added by RRS */ + SOCKET sock; /* socket descriptor */ + long mode; + FILE* statfp; + FILE* errfp; } zmodem_t; -- GitLab