diff --git a/src/sbbs3/jsexec.c b/src/sbbs3/jsexec.c index 56ebc151cf1e201dfab33fa2b125433f5ec5a75a..4b1be33115a74e534e67aa1cfa3f481140e958ca 100644 --- a/src/sbbs3/jsexec.c +++ b/src/sbbs3/jsexec.c @@ -45,6 +45,7 @@ #include "sbbs.h" #include "ciolib.h" +#include "ini_file.h" #include "js_rtpool.h" #include "js_request.h" @@ -117,7 +118,7 @@ void usage(FILE* fp) "\t-h[hostname] use local or specified host name (instead of SCFG value)\n" "\t-u<mask> set file creation permissions mask (in octal)\n" "\t-L<level> set log level (default=%u)\n" - "\t-E<level> set error log level threshold (default=%d)\n" + "\t-E<level> set error log level threshold (default=%u)\n" "\t-i<path_list> set load() comma-sep search path list (default=\"%s\")\n" "\t-f use non-buffered stream for console messages\n" "\t-a append instead of overwriting message output files\n" @@ -852,6 +853,28 @@ BOOL WINAPI ControlHandler(unsigned long CtrlType) } #endif +int parseLogLevel(const char* p) +{ + str_list_t logLevelStringList=iniLogLevelStringList(); + int i; + + if(isdigit(*p)) + return strtol(p,NULL,0); + + /* Exact match */ + for(i=0;logLevelStringList[i]!=NULL;i++) { + if(stricmp(logLevelStringList[i],p)==0) + return i; + } + /* Partial match */ + for(i=0;logLevelStringList[i]!=NULL;i++) { + if(strnicmp(logLevelStringList[i],p,strlen(p))==0) + return i; + } + return DEFAULT_LOG_LEVEL; +} + + /*********************/ /* Entry point (duh) */ /*********************/ @@ -940,11 +963,11 @@ int main(int argc, char **argv, char** environ) break; case 'L': if(*p==0) p=argv[++argn]; - log_level=strtol(p,NULL,0); + log_level=parseLogLevel(p); break; case 'E': if(*p==0) p=argv[++argn]; - err_level=strtol(p,NULL,0); + err_level=parseLogLevel(p); break; case 'e': if(*p==0) p=argv[++argn];