X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Flog.c;h=9c7c22826945d21975a55b78ccd6b0a05115c06b;hb=413aa3c98390b016ea1f8eaeaee0d9a99fe75e28;hp=312a6dd0b9b92863fe3aa4be8b4a3187dd22aeba;hpb=e448c7a56df8e289c9dbd5b8d87753addd541091;p=swftools.git diff --git a/lib/log.c b/lib/log.c index 312a6dd..9c7c228 100644 --- a/lib/log.c +++ b/lib/log.c @@ -6,7 +6,19 @@ Copyright (c) 2001 Matthias Kramm - This file is distributed under the GPL, see file COPYING for details */ + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifdef __NT__ #include "stdafx.h" @@ -27,32 +39,38 @@ #include "log.h" -#define LOGLEVEL_FATAL 0 -#define LOGLEVEL_ERROR 1 -#define LOGLEVEL_WARNING 2 -#define LOGLEVEL_NOTICE 3 -#define LOGLEVEL_VERBOSE 4 -#define LOGLEVEL_DEBUG 5 - -int screenloglevel; -int fileloglevel; -int socketloglevel; -FILE *logFile = 0; +int screenloglevel = 1; +static int fileloglevel = -1; +static int socketloglevel = -1; +static int maxloglevel = 1; +static FILE *logFile = 0; #ifdef __NT__ -SOCKET logSocket; +static SOCKET logSocket; #else -int logSocket = 0; +static int logSocket = 0; #endif -char bLogToSock = 0; +static char bLogToSock = 0; -void initlogSocket(char* servAddr, char* logPort); +static void initlogSocket(char* servAddr, char* logPort); void initLog(char* pLogName, int fileloglevel, char* servAddr, char* logPort, int serverlevel, int screenlevel) { screenloglevel = screenlevel; fileloglevel = fileloglevel; socketloglevel = screenlevel; + + maxloglevel=screenloglevel; + if(fileloglevel>maxloglevel && pLogName) + maxloglevel=fileloglevel; + if(serverlevel>maxloglevel && servAddr) + maxloglevel=serverlevel; + + if(!servAddr) + serverlevel = -1; + if(!pLogName) + fileloglevel = -1; + logFile = NULL; bLogToSock = 0; @@ -63,7 +81,7 @@ void initLog(char* pLogName, int fileloglevel, char* servAddr, char* logPort, in initlogSocket(servAddr, logPort); } -void initlogSocket(char* servAddr, char* logPort) +static void initlogSocket(char* servAddr, char* logPort) { #ifndef __NT__ bLogToSock = 0; @@ -139,7 +157,7 @@ void exitLog() static char * logimportance[]= {"Fatal","Error","Warning","Notice","Verbose","Debug"}; static int loglevels=6; static char * logimportance2[]= {" ","FATAL ","ERROR ","WARNING","NOTICE ","VERBOSE","DEBUG "}; -void log(char* logString) +static inline void log(char* logString) { char timebuffer[32]; char* logBuffer; @@ -238,13 +256,21 @@ void log(char* logString) free (logBuffer); } -void logf(const char* pszFormat, ...) +void msg(const char* format, ...) { char buf[1024]; va_list arglist; - va_start(arglist, pszFormat); - buf[0] = 0; - vsprintf(&buf[strlen(buf)], pszFormat, arglist); + va_start(arglist, format); + + /* speed up hack */ + if(format[0]=='<') { + char*z = "fewnvd"; + char*x = strchr(z,format[1]); + if(x && (x-z)>maxloglevel) + return; + } + + vsprintf(buf, format, arglist); va_end(arglist); strcat(buf, "\n"); log(buf);