rfxswf cleanups: added prefixes and altered structure name conventions
[swftools.git] / lib / log.c
index 6c705ee..312a6dd 100644 (file)
--- a/lib/log.c
+++ b/lib/log.c
-/* log.c \r
-   Logging facilities for displaying information on screen, as well as\r
-   (optional) storing it to a file and transmitting it over the network.\r
-\r
-   Part of the swftools package.\r
-   \r
-   Copyright (c) 2001 Matthias Kramm <kramm@quiss.org> \r
-\r
-   This file is distributed under the GPL, see file COPYING for details */\r
-\r
-#ifdef __NT__\r
-#include "stdafx.h"\r
-#include <string.h>\r
-#include <winsock2.h>\r
-#include <stdlib.h>\r
-#include <malloc.h>\r
-#if _MSC_VER > 1000\r
-#pragma once\r
-#endif // _MSC_VER > 1000\r
-#else\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <stdarg.h>\r
-#include <string.h>\r
-#include <unistd.h>\r
-#endif\r
-\r
-#include "log.h"\r
-\r
-#define LOGLEVEL_FATAL 0\r
-#define LOGLEVEL_ERROR 1\r
-#define LOGLEVEL_WARNING 2\r
-#define LOGLEVEL_NOTICE 3\r
-#define LOGLEVEL_VERBOSE 4\r
-#define LOGLEVEL_DEBUG 5\r
-\r
-int screenloglevel;\r
-int fileloglevel;\r
-int socketloglevel;\r
-FILE *logFile = 0;\r
-#ifdef __NT__\r
-SOCKET logSocket;\r
-#else\r
-int logSocket = 0;\r
-#endif\r
-\r
-char bLogToSock = 0;\r
-\r
-void initlogSocket(char* servAddr, char* logPort);\r
-\r
-void initLog(char* pLogName, int fileloglevel, char* servAddr, char* logPort, int serverlevel, int screenlevel)\r
-{\r
-   screenloglevel = screenlevel;\r
-   fileloglevel = fileloglevel;\r
-   socketloglevel = screenlevel;\r
-   logFile = NULL;\r
-   bLogToSock = 0;\r
-\r
-   if (pLogName && fileloglevel>=0)\r
-   logFile = fopen(pLogName, "a+");\r
-   bLogToSock = (servAddr && logPort && (serverlevel>=0));\r
-   if(bLogToSock)\r
-       initlogSocket(servAddr, logPort);\r
-}\r
-\r
-void initlogSocket(char* servAddr, char* logPort)\r
-{\r
-#ifndef __NT__\r
-   bLogToSock = 0;\r
-#else\r
-   // init winsock\r
-   // check and prepare WinSock DLL\r
-   WORD wVersionRequested = MAKEWORD( 2, 2 );\r
-   WSADATA wsaData;\r
-   if ( WSAStartup(wVersionRequested, &wsaData) != 0 )\r
-   {\r
-      bLogToSock = false;\r
-      return;\r
-   }\r
-   // Confirm that the WinSock DLL supports 2.2.\r
-   // Note that if the DLL supports versions greater\r
-   // than 2.2 in addition to 2.2, it will still return\r
-   // 2.2 in wVersion since that is the version we\r
-   // requested.\r
-\r
-   if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 2 )\r
-   {\r
-      bLogToSock = false;\r
-      return;\r
-   }\r
-\r
-   struct hostent *hp;\r
-   hp = gethostbyname(servAddr);\r
-   if (hp == NULL) // we don't know who this host is\r
-   {\r
-      bLogToSock = false;\r
-      return;\r
-   }\r
-\r
-   // connect socket\r
-   sockaddr_in SocketAddress;\r
-\r
-   memset(&SocketAddress, 0, sizeof(SocketAddress));\r
-   memcpy((char*)&SocketAddress.sin_addr, hp->h_addr, hp->h_length); // set address\r
-   SocketAddress.sin_family = hp->h_addrtype;\r
-   SocketAddress.sin_port = htons((u_short)atoi(logPort));\r
-\r
-   logSocket = socket(hp->h_addrtype, SOCK_STREAM, 0);\r
-   if (logSocket == INVALID_SOCKET)\r
-   {\r
-      bLogToSock = false;\r
-      return;\r
-   }\r
-\r
-   // try to connect to the specified socket\r
-   if ( connect(logSocket, (struct sockaddr*)&SocketAddress, sizeof (SocketAddress)) == SOCKET_ERROR) {\r
-      bLogToSock = false;\r
-      return;\r
-   }\r
-   bLogToSock = true;\r
-#endif\r
-}\r
-\r
-void exitLog()\r
-{\r
-   // close socket communication\r
-   if(bLogToSock)\r
-#ifndef __NT__\r
-     close(logSocket);\r
-#else\r
-     closesocket(logSocket);\r
-#endif\r
-   // close file\r
-   if(logFile != NULL)\r
-     fclose(logFile);\r
-}\r
-\r
-\r
-static char * logimportance[]= {"Fatal","Error","Warning","Notice","Verbose","Debug"};\r
-static int loglevels=6;\r
-static char * logimportance2[]= {"       ","FATAL  ","ERROR  ","WARNING","NOTICE ","VERBOSE","DEBUG  "};\r
-void log(char* logString)\r
-{\r
-   char timebuffer[32];\r
-   char* logBuffer;\r
-   char dbuffer[9];\r
-   char tbuffer[9];\r
-   int level;\r
-   char*lt;\r
-   char*gt;\r
-   int l;\r
-\r
-   logBuffer = (char*)malloc (strlen(logString) + 24 + 15);\r
-#ifndef __NT__\r
-   {\r
-     /*time_t t = time(0);\r
-     tm*t2 = localtime(t);\r
-     strftime(dbuffer, 8, "%m %d", t2);\r
-     strftime(tbuffer, 8, "%m %d", t2);\r
-     dbuffer[0]=0; //FIXME\r
-     tbuffer[0]=0;*/\r
-     time_t t = time(0);\r
-     char* a = ctime(&t);\r
-     int l = strlen(a);\r
-     while(a[l-1] == 13 || a[l-1] == 10)\r
-       l--;\r
-     a[l]=0;\r
-     sprintf(timebuffer, "%s", a);\r
-   }\r
-#else\r
-   _strdate( dbuffer );\r
-   _strtime( tbuffer );\r
-   sprintf(timebuffer, "%s - %s",dbuffer,tbuffer);\r
-#endif\r
-\r
-   // search for <level> field\r
-   level = -1;\r
-   lt=strchr(logString, '<');\r
-   gt=strchr(logString, '>');\r
-   if(lt && gt && lt<gt)\r
-   {\r
-       int t;\r
-       for(t=0;t<loglevels;t++)\r
-       {\r
-#ifndef __NT__\r
-          if(!strncasecmp(lt+1,logimportance[t],strlen(logimportance[t])))\r
-#else\r
-          if(!strnicmp(lt+1,logimportance[t],strlen(logimportance[t])))\r
-#endif\r
-          {\r
-              logString = gt+1;\r
-              while(logString[0]==' ') logString ++;\r
-              level = t;\r
-              break;\r
-          }\r
-       }\r
-   }\r
-   \r
-//   sprintf(logBuffer, "%s: %s %s", timebuffer, logimportance2[level + 1],logString);\r
-   sprintf(logBuffer, "%s %s", logimportance2[level + 1],logString);\r
-\r
-   // we always do exactly one newline.\r
-   \r
-   l=strlen(logBuffer)-1;\r
-   while((logBuffer[l]==13 || logBuffer[l]==10) && l>=0)\r
-   {\r
-       logBuffer[l]=0;\r
-       l--;\r
-   }\r
-\r
-   if (level <= screenloglevel)\r
-   {\r
-       printf("%s\n", logBuffer); \r
-       fflush(stdout);\r
-   }\r
-\r
-   if (level <= fileloglevel)\r
-   {\r
-       if (logFile != NULL)\r
-       {\r
-         fprintf(logFile, "%s\n", logBuffer); \r
-         fflush(logFile);\r
-       }\r
-   }\r
-\r
-   if (level <= socketloglevel)\r
-   {\r
-       if (bLogToSock)\r
-       {\r
-         // send data\r
-#ifndef __NT__\r
-         write(logSocket, logBuffer, strlen(logBuffer));\r
-#else\r
-         send(logSocket, logBuffer, strlen(logBuffer), 0);\r
-#endif\r
-       }\r
-   }\r
-   free (logBuffer);\r
-}\r
-\r
-void logf(const char* pszFormat, ...)\r
-{\r
-    char buf[1024];\r
-       va_list arglist;\r
-       va_start(arglist, pszFormat);\r
-    buf[0] = 0;\r
-    vsprintf(&buf[strlen(buf)], pszFormat, arglist);\r
-       va_end(arglist);\r
-    strcat(buf, "\n");\r
-    log(buf);\r
-}\r
-\r
+/* log.c 
+   Logging facilities for displaying information on screen, as well as
+   (optional) storing it to a file and transmitting it over the network.
+
+   Part of the swftools package.
+   
+   Copyright (c) 2001 Matthias Kramm <kramm@quiss.org> 
+
+   This file is distributed under the GPL, see file COPYING for details */
+
+#ifdef __NT__
+#include "stdafx.h"
+#include <string.h>
+#include <winsock2.h>
+#include <stdlib.h>
+#include <malloc.h>
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+#else
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <unistd.h>
+#endif
+
+#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;
+#ifdef __NT__
+SOCKET logSocket;
+#else
+int logSocket = 0;
+#endif
+
+char bLogToSock = 0;
+
+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;
+   logFile = NULL;
+   bLogToSock = 0;
+
+   if (pLogName && fileloglevel>=0)
+   logFile = fopen(pLogName, "a+");
+   bLogToSock = (servAddr && logPort && (serverlevel>=0));
+   if(bLogToSock)
+       initlogSocket(servAddr, logPort);
+}
+
+void initlogSocket(char* servAddr, char* logPort)
+{
+#ifndef __NT__
+   bLogToSock = 0;
+#else
+   // init winsock
+   // check and prepare WinSock DLL
+   WORD wVersionRequested = MAKEWORD( 2, 2 );
+   WSADATA wsaData;
+   if ( WSAStartup(wVersionRequested, &wsaData) != 0 )
+   {
+      bLogToSock = false;
+      return;
+   }
+   // Confirm that the WinSock DLL supports 2.2.
+   // Note that if the DLL supports versions greater
+   // than 2.2 in addition to 2.2, it will still return
+   // 2.2 in wVersion since that is the version we
+   // requested.
+
+   if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 2 )
+   {
+      bLogToSock = false;
+      return;
+   }
+
+   struct hostent *hp;
+   hp = gethostbyname(servAddr);
+   if (hp == NULL) // we don't know who this host is
+   {
+      bLogToSock = false;
+      return;
+   }
+
+   // connect socket
+   sockaddr_in SocketAddress;
+
+   memset(&SocketAddress, 0, sizeof(SocketAddress));
+   memcpy((char*)&SocketAddress.sin_addr, hp->h_addr, hp->h_length); // set address
+   SocketAddress.sin_family = hp->h_addrtype;
+   SocketAddress.sin_port = htons((u_short)atoi(logPort));
+
+   logSocket = socket(hp->h_addrtype, SOCK_STREAM, 0);
+   if (logSocket == INVALID_SOCKET)
+   {
+      bLogToSock = false;
+      return;
+   }
+
+   // try to connect to the specified socket
+   if ( connect(logSocket, (struct sockaddr*)&SocketAddress, sizeof (SocketAddress)) == SOCKET_ERROR) {
+      bLogToSock = false;
+      return;
+   }
+   bLogToSock = true;
+#endif
+}
+
+void exitLog()
+{
+   // close socket communication
+   if(bLogToSock)
+#ifndef __NT__
+     close(logSocket);
+#else
+     closesocket(logSocket);
+#endif
+   // close file
+   if(logFile != NULL)
+     fclose(logFile);
+}
+
+
+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)
+{
+   char timebuffer[32];
+   char* logBuffer;
+   char dbuffer[9];
+   char tbuffer[9];
+   int level;
+   char*lt;
+   char*gt;
+   int l;
+
+   logBuffer = (char*)malloc (strlen(logString) + 24 + 15);
+#ifndef __NT__
+   {
+     /*time_t t = time(0);
+     tm*t2 = localtime(t);
+     strftime(dbuffer, 8, "%m %d", t2);
+     strftime(tbuffer, 8, "%m %d", t2);
+     dbuffer[0]=0; //FIXME
+     tbuffer[0]=0;*/
+     time_t t = time(0);
+     char* a = ctime(&t);
+     int l = strlen(a);
+     while(a[l-1] == 13 || a[l-1] == 10)
+       l--;
+     a[l]=0;
+     sprintf(timebuffer, "%s", a);
+   }
+#else
+   _strdate( dbuffer );
+   _strtime( tbuffer );
+   sprintf(timebuffer, "%s - %s",dbuffer,tbuffer);
+#endif
+
+   // search for <level> field
+   level = -1;
+   lt=strchr(logString, '<');
+   gt=strchr(logString, '>');
+   if(lt && gt && lt<gt)
+   {
+       int t;
+       for(t=0;t<loglevels;t++)
+       {
+#ifndef __NT__
+          if(!strncasecmp(lt+1,logimportance[t],strlen(logimportance[t])))
+#else
+          if(!strnicmp(lt+1,logimportance[t],strlen(logimportance[t])))
+#endif
+          {
+              logString = gt+1;
+              while(logString[0]==' ') logString ++;
+              level = t;
+              break;
+          }
+       }
+   }
+   
+//   sprintf(logBuffer, "%s: %s %s", timebuffer, logimportance2[level + 1],logString);
+   sprintf(logBuffer, "%s %s", logimportance2[level + 1],logString);
+
+   // we always do exactly one newline.
+   
+   l=strlen(logBuffer)-1;
+   while((logBuffer[l]==13 || logBuffer[l]==10) && l>=0)
+   {
+       logBuffer[l]=0;
+       l--;
+   }
+
+   if (level <= screenloglevel)
+   {
+       printf("%s\n", logBuffer); 
+       fflush(stdout);
+   }
+
+   if (level <= fileloglevel)
+   {
+       if (logFile != NULL)
+       {
+         fprintf(logFile, "%s\n", logBuffer); 
+         fflush(logFile);
+       }
+   }
+
+   if (level <= socketloglevel)
+   {
+       if (bLogToSock)
+       {
+         // send data
+#ifndef __NT__
+         write(logSocket, logBuffer, strlen(logBuffer));
+#else
+         send(logSocket, logBuffer, strlen(logBuffer), 0);
+#endif
+       }
+   }
+   free (logBuffer);
+}
+
+void logf(const char* pszFormat, ...)
+{
+    char buf[1024];
+       va_list arglist;
+       va_start(arglist, pszFormat);
+    buf[0] = 0;
+    vsprintf(&buf[strlen(buf)], pszFormat, arglist);
+       va_end(arglist);
+    strcat(buf, "\n");
+    log(buf);
+}
+