From eb2077d782a7074a368dd0046aaf7efe4824b7a4 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Sat, 9 Feb 2008 22:25:00 +0000
Subject: [PATCH] Fix-up total_blocks calculation based on current block number
 + remaining blocks.

---
 src/sbbs3/sexyz.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/sbbs3/sexyz.c b/src/sbbs3/sexyz.c
index 36f372b126..17d8c4344e 100644
--- a/src/sbbs3/sexyz.c
+++ b/src/sbbs3/sexyz.c
@@ -637,14 +637,15 @@ BOOL data_waiting(void* unused, unsigned timeout)
 }
 
 /****************************************************************************/
-/* Returns the number of blocks required to send len bytes					*/
+/* Returns the total number of blocks required to send the file				*/
 /****************************************************************************/
-unsigned num_blocks(ulong len, unsigned block_size)
+unsigned num_blocks(unsigned block_num, ulong offset, ulong len, unsigned block_size)
 {
 	ulong blocks;
+	ulong remain = len - offset;
 
-	blocks=len/block_size;
-	if(len%block_size)
+	blocks=block_num + (remain/block_size);
+	if(remain%block_size)
 		blocks++;
 	return(blocks);
 }
@@ -681,7 +682,7 @@ void xmodem_progress(void* unused, unsigned block_num, ulong offset, ulong fsize
 		l-=t;				/* now, it's est time left */
 		if(l<0) l=0;
 		if(mode&SEND) {
-			total_blocks=num_blocks(fsize,xm.block_size);
+			total_blocks=num_blocks(block_num,offset,fsize,xm.block_size);
 			fprintf(statfp,"\rBlock (%lu%s): %lu/%lu  Byte: %lu  "
 				"Time: %lu:%02lu/%lu:%02lu  %u cps  %lu%% "
 				,xm.block_size%1024L ? xm.block_size: xm.block_size/1024L
-- 
GitLab