From d79297fdf1f504fe88fce130f0c75f199e125674 Mon Sep 17 00:00:00 2001 From: deuce <> Date: Wed, 3 Mar 2010 08:23:11 +0000 Subject: [PATCH] Add a pointer to the log level to the [XZ]modem structs. This allows avoiding the vsnprintf() call in lprintf(). --- src/sbbs3/sexyz.c | 2 ++ src/sbbs3/xmodem.c | 3 +++ src/sbbs3/xmodem.h | 1 + src/sbbs3/zmodem.c | 3 +++ src/sbbs3/zmodem.h | 1 + 5 files changed, 10 insertions(+) diff --git a/src/sbbs3/sexyz.c b/src/sbbs3/sexyz.c index 11540941e3..40e6d93fdc 100644 --- a/src/sbbs3/sexyz.c +++ b/src/sbbs3/sexyz.c @@ -1467,6 +1467,8 @@ int main(int argc, char **argv) xmodem_init(&xm,NULL,&mode,lputs,xmodem_progress,send_byte,recv_byte,is_connected,NULL,flush); zmodem_init(&zm,NULL,lputs,zmodem_progress,send_byte,recv_byte,is_connected,NULL,data_waiting,flush); + xm->log_level=&log_level; + zm->log_level=&log_level; /* Generate path/sexyz[.host].ini from path/sexyz[.exe] */ SAFECOPY(str,argv[0]); diff --git a/src/sbbs3/xmodem.c b/src/sbbs3/xmodem.c index 3070597414..2c288d9ca3 100644 --- a/src/sbbs3/xmodem.c +++ b/src/sbbs3/xmodem.c @@ -60,6 +60,9 @@ static int lprintf(xmodem_t* xm, int level, const char *fmt, ...) if(xm->lputs==NULL) return(-1); + if(xm->log_level != NULL) + if(level > *xm->log_level) + return 0; va_start(argptr,fmt); vsnprintf(sbuf,sizeof(sbuf),fmt,argptr); diff --git a/src/sbbs3/xmodem.h b/src/sbbs3/xmodem.h index ca332f2775..7eefda7e0b 100644 --- a/src/sbbs3/xmodem.h +++ b/src/sbbs3/xmodem.h @@ -65,6 +65,7 @@ typedef struct { ulong total_bytes; unsigned sent_files; ulong sent_bytes; + int *log_level; int (*lputs)(void*, int level, const char* str); void (*progress)(void*, unsigned block_num, ulong offset, ulong fsize, time_t t); int (*send_byte)(void*, uchar ch, unsigned timeout); diff --git a/src/sbbs3/zmodem.c b/src/sbbs3/zmodem.c index 22ffae7c8a..07c6db4165 100644 --- a/src/sbbs3/zmodem.c +++ b/src/sbbs3/zmodem.c @@ -56,6 +56,9 @@ static int lprintf(zmodem_t* zm, int level, const char *fmt, ...) if(zm->lputs==NULL) return(-1); + if(zm->log_level != NULL) + if(level > *zm->log_level) + return 0; va_start(argptr,fmt); vsnprintf(sbuf,sizeof(sbuf),fmt,argptr); diff --git a/src/sbbs3/zmodem.h b/src/sbbs3/zmodem.h index a7d37b1058..6b51be65a7 100644 --- a/src/sbbs3/zmodem.h +++ b/src/sbbs3/zmodem.h @@ -272,6 +272,7 @@ typedef struct { unsigned block_size; unsigned max_block_size; uint32_t max_file_size; /* 0 = unlimited */ + int *log_level; /* Callbacks */ void* cbdata; -- GitLab