diff --git a/src/sbbs3/sexyz.c b/src/sbbs3/sexyz.c index b5e8f044e4134f684c7e43fb3b709a371ef70ffe..ae49cc125c9d55d2e66f44715ca8a08471ff38b2 100644 --- a/src/sbbs3/sexyz.c +++ b/src/sbbs3/sexyz.c @@ -124,22 +124,38 @@ static BOOL winsock_startup(void) #endif -/********/ -/* Code */ -/********/ void newline(void) { fprintf(statfp,"\n"); } +int lprintf(int level, char *fmt, ...) +{ + va_list argptr; + int retval; + FILE* fp=statfp; + + if(level<LOG_NOTICE) + fp=errfp; + + va_start(argptr,fmt); + retval = vfprintf(fp,fmt,argptr); + va_end(argptr); + return(retval); +} + /**************/ /* Exit Point */ /**************/ void bail(int code) { - fprintf(statfp,"Terminating\n"); - YIELD(); +#if !SINGLE_THREADED + lprintf(LOG_DEBUG,"Waiting for output buffer to empty..."); + WaitForSingleObject(outbuf_empty,5000); + lprintf(LOG_DEBUG,"\n"); +#endif + terminate=TRUE; // sem_post(outbuf.sem); // sem_post(outbuf.highwater_sem); @@ -1279,7 +1295,7 @@ int main(int argc, char **argv) RingBufInit(&inbuf, IO_THREAD_BUF_SIZE); RingBufInit(&outbuf, IO_THREAD_BUF_SIZE); - outbuf.highwater_mark=1024; + outbuf.highwater_mark=1100; outbuf_empty=CreateEvent(NULL,FALSE,TRUE,NULL); #if 0 @@ -1480,8 +1496,6 @@ int main(int argc, char **argv) xm.sock=sock; xm.mode=&mode; - xm.errfp=errfp; - xm.statfp=statfp; zm.sock=sock; zm.mode=&mode; diff --git a/src/sbbs3/xmodem.c b/src/sbbs3/xmodem.c index b1e08826b9bdf239246d6b02d71b441d877b4615..11ac1e53dfc9a2568c6db1c3ae1c88d47e368ce8 100644 --- a/src/sbbs3/xmodem.c +++ b/src/sbbs3/xmodem.c @@ -41,7 +41,7 @@ #define getcom(t) recv_byte(xm->sock,t,*xm->mode) #define putcom(ch) send_byte(xm->sock,ch,10,*xm->mode) -#define newline() fprintf(xm->statfp,"\n"); +#define newline() void xmodem_put_nak(xmodem_t* xm) { @@ -97,15 +97,15 @@ int xmodem_get_block(xmodem_t* xm, uchar* block, BOOL hdrblock) newline(); if(!can) { /* must get two CANs in a row */ can=1; - fprintf(xm->statfp,"Received CAN Expected SOH, STX, or EOT\n"); + xm->lprintf(LOG_WARNING,"Received CAN Expected SOH, STX, or EOT\n"); continue; } - fprintf(xm->statfp,"Cancelled remotely\n"); + xm->lprintf(LOG_WARNING,"Cancelled remotely\n"); bail(-1); break; default: newline(); - fprintf(xm->statfp,"Received %s Expected SOH, STX, or EOT\n",chr((uchar)i)); + xm->lprintf(LOG_WARNING,"Received %s Expected SOH, STX, or EOT\n",chr((uchar)i)); case NOINP: /* Nothing came in */ if(hdrblock || (*xm->mode)&GMODE) return(-1); @@ -129,7 +129,7 @@ int xmodem_get_block(xmodem_t* xm, uchar* block, BOOL hdrblock) } if(block_num!=(uchar)~i) { newline(); - fprintf(xm->statfp,"Block number error\n"); + xm->lprintf(LOG_ERR,"Block number error\n"); if(hdrblock || (*xm->mode)&GMODE) return(-1); xmodem_put_nak(xm); @@ -165,14 +165,14 @@ int xmodem_get_block(xmodem_t* xm, uchar* block, BOOL hdrblock) if(crc==calc_crc) break; newline(); - fprintf(xm->statfp,"CRC error\n"); + xm->lprintf(LOG_ERR,"CRC error\n"); } else /* CHKSUM */ { if(chksum==calc_chksum) break; newline(); - fprintf(xm->statfp,"Checksum error\n"); + xm->lprintf(LOG_ERR,"Checksum error\n"); } if((*xm->mode)&GMODE) /* Don't bother sending a NAK. He's not listening */ @@ -183,7 +183,7 @@ int xmodem_get_block(xmodem_t* xm, uchar* block, BOOL hdrblock) if(errors>=MAXERRORS) { newline(); - fprintf(xm->statfp,"Too many errors\n"); + xm->lprintf(LOG_ERR,"Too many errors\n"); return(-1); } return(block_num); @@ -238,7 +238,7 @@ int xmodem_get_ack(xmodem_t* xm, int tries) YIELD(); if(getcom(0)==CAN) { newline(); - fprintf(xm->statfp,"Cancelled remotely\n"); + xm->lprintf(LOG_WARNING,"Cancelled remotely\n"); xmodem_cancel(xm); bail(1); } @@ -253,7 +253,7 @@ int xmodem_get_ack(xmodem_t* xm, int tries) if(i==CAN) { if(can) { newline(); - fprintf(xm->statfp,"Cancelled remotely\n"); + xm->lprintf(LOG_WARNING,"Cancelled remotely\n"); xmodem_cancel(xm); bail(1); } @@ -261,7 +261,7 @@ int xmodem_get_ack(xmodem_t* xm, int tries) } if(i!=NOINP) { newline(); - fprintf(xm->statfp,"Received %s Expected ACK\n",chr((uchar)i)); + xm->lprintf(LOG_WARNING,"Received %s Expected ACK\n",chr((uchar)i)); if(i!=CAN) return(0); } diff --git a/src/sbbs3/xmodem.h b/src/sbbs3/xmodem.h index 116d78c55f8d8a446de946cbe6021070cb956368..146672862f19f9e2410673a9f41dabca1e582e58 100644 --- a/src/sbbs3/xmodem.h +++ b/src/sbbs3/xmodem.h @@ -46,11 +46,10 @@ typedef struct { SOCKET sock; /* socket descriptor */ long* mode; - FILE* statfp; - FILE* errfp; unsigned block_size; unsigned ack_timeout; unsigned byte_timeout; + int (*lprintf)(int level, char *fmt, ...); } xmodem_t;