diff --git a/src/syncterm/term.c b/src/syncterm/term.c index e597bac17e2a5dffcabd3d4e7b8fa614baa64f34..aa1633f4f958fce83ca4cd67a5c491399aa40d30 100644 --- a/src/syncterm/term.c +++ b/src/syncterm/term.c @@ -180,20 +180,33 @@ void dump(BYTE* buf, int len) /* Zmodem Stuff */ int log_level = LOG_INFO; +static void zmodem_check_abort(zmodem_t* zm) +{ + if(zm!=NULL && kbhit()) { + switch(getch()) { + case ESC: + case CTRL_C: + case CTRL_X: + zm->cancelled=TRUE; + zm->local_abort=TRUE; + break; + } + } +} + #if defined(__BORLANDC__) #pragma argsused #endif -static int lputs(void* unused, int level, const char* str) +static int lputs(void* cbdata, int level, const char* str) { char msg[512]; int chars; -#if defined(_WIN32) && defined(_DEBUG) && 0 - if(level==LOG_DEBUG) { - sprintf(msg,"SyncTerm: %s",str); - OutputDebugString(msg); - return 0; - } + zmodem_check_abort((zmodem_t*)cbdata); + +#if defined(_WIN32) && defined(_DEBUG) && TRUE + sprintf(msg,"SyncTerm: %s",str); + OutputDebugString(msg); #endif if(level > log_level) return 0; @@ -235,20 +248,6 @@ static int lprintf(int level, const char *fmt, ...) return(lputs(NULL,level,sbuf)); } -static void zmodem_check_abort(zmodem_t* zm) -{ - if(kbhit()) { - switch(getch()) { - case ESC: - case CTRL_C: - case CTRL_X: - zm->cancelled=TRUE; - zm->local_abort=TRUE; - break; - } - } -} - #if defined(__BORLANDC__) #pragma argsused #endif @@ -329,6 +328,9 @@ static int send_byte(void* unused, uchar ch, unsigned timeout) return conn_send(&ch,sizeof(char),timeout*1000); } +static ulong bufbot; +static ulong buftop; + #if defined(__BORLANDC__) #pragma argsused #endif @@ -338,8 +340,6 @@ static int recv_byte(void* unused, unsigned timeout) int i; time_t start=time(NULL); static BYTE buf[2048]; - static ulong bufbot; - static ulong buftop; if(bufbot==buftop) { if((i=conn_recv(buf,sizeof(buf),timeout*1000))<1) { @@ -493,6 +493,7 @@ void zmodem_receive(void) zmodem_t zm; char* download_dir="."; + bufbot=buftop=0; /* purge our receive buffer */ draw_recv_window(); zmodem_init(&zm