From e02a7efd1f2dd4c54032cafeba8e5379e206cf1e Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Fri, 10 Jun 2005 03:13:46 +0000
Subject: [PATCH] Use BOOLs for ZRINIT option flags. Don't set CANFC32 in
 ZRINIT if zm.want_fcs_16 is TRUE.

---
 src/sbbs3/zmodem.c | 17 ++++++++++-------
 src/sbbs3/zmodem.h | 14 +++++++-------
 2 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/src/sbbs3/zmodem.c b/src/sbbs3/zmodem.c
index f2275aef9b..cf06efbb23 100644
--- a/src/sbbs3/zmodem.c
+++ b/src/sbbs3/zmodem.c
@@ -1249,12 +1249,12 @@ BOOL zmodem_get_crc(zmodem_t* zm, long length, ulong* crc)
 
 void zmodem_parse_zrinit(zmodem_t* zm)
 {
-	zm->can_full_duplex					= (zm->rxd_header[ZF0] & ZF0_CANFDX)  != 0;
-	zm->can_overlap_io					= (zm->rxd_header[ZF0] & ZF0_CANOVIO) != 0;
-	zm->can_break						= (zm->rxd_header[ZF0] & ZF0_CANBRK)  != 0;
-	zm->can_fcs_32						= (zm->rxd_header[ZF0] & ZF0_CANFC32) != 0;
-	zm->escape_all_control_characters	= (zm->rxd_header[ZF0] & ZF0_ESCCTL)  != 0;
-	zm->escape_8th_bit					= (zm->rxd_header[ZF0] & ZF0_ESC8)    != 0;
+	zm->can_full_duplex					= INT_TO_BOOL(zm->rxd_header[ZF0] & ZF0_CANFDX);
+	zm->can_overlap_io					= INT_TO_BOOL(zm->rxd_header[ZF0] & ZF0_CANOVIO);
+	zm->can_break						= INT_TO_BOOL(zm->rxd_header[ZF0] & ZF0_CANBRK);
+	zm->can_fcs_32						= INT_TO_BOOL(zm->rxd_header[ZF0] & ZF0_CANFC32);
+	zm->escape_all_control_characters	= INT_TO_BOOL(zm->rxd_header[ZF0] & ZF0_ESCCTL);
+	zm->escape_8th_bit					= INT_TO_BOOL(zm->rxd_header[ZF0] & ZF0_ESC8);
 
 	lprintf(zm,LOG_INFO,"Receiver requested mode (0x%02X):\r\n"
 		"%s-duplex, %s overlap I/O, CRC-%u, Escape: %s"
@@ -1287,7 +1287,10 @@ int zmodem_send_zrinit(zmodem_t* zm)
 {
 	unsigned char zrinit_header[] = { ZRINIT, 0, 0, 0, 0 };
 	
-	zrinit_header[ZF0] = ZF0_CANBRK | ZF0_CANFDX | ZF0_CANOVIO | ZF0_CANFC32;
+	zrinit_header[ZF0] = ZF0_CANBRK | ZF0_CANFDX | ZF0_CANOVIO;
+
+	if(!zm->want_fcs_16)
+		zrinit_header[ZF0] |= ZF0_CANFC32;
 
 	if(zm->no_streaming) {
 		zrinit_header[ZP0] = sizeof(zm->rx_data_subpacket) & 0xff;
diff --git a/src/sbbs3/zmodem.h b/src/sbbs3/zmodem.h
index 30aff326a5..d0beca76cb 100644
--- a/src/sbbs3/zmodem.h
+++ b/src/sbbs3/zmodem.h
@@ -202,13 +202,13 @@ typedef struct {
 	 * extracted from the ZRINIT frame as received
 	 */
 
-	int can_full_duplex;
-	int can_overlap_io;
-	int can_break;
-	int can_fcs_32;
-	int want_fcs_16;
-	int escape_all_control_characters;						/* guess */
-	int escape_8th_bit;
+	BOOL can_full_duplex;
+	BOOL can_overlap_io;
+	BOOL can_break;
+	BOOL can_fcs_32;
+	BOOL want_fcs_16;
+	BOOL escape_all_control_characters;						/* guess */
+	BOOL escape_8th_bit;
 
 	/*
 	 * file management options.
-- 
GitLab