h.263 is now compiled in this Makefile, not h.263/Makefile.
[swftools.git] / lib / log.c
index 312a6dd..9c7c228 100644 (file)
--- a/lib/log.c
+++ b/lib/log.c
@@ -6,7 +6,19 @@
    
    Copyright (c) 2001 Matthias Kramm <kramm@quiss.org> 
 
-   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"
 
 #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);