-const char errlog_rcs[] = "$Id: errlog.c,v 1.28 2002/03/04 17:59:59 oes Exp $";
+const char errlog_rcs[] = "$Id: errlog.c,v 1.39 2002/04/03 17:15:27 gliptak Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/errlog.c,v $
* printf-like fashion.
*
* Copyright : Written by and Copyright (C) 2001 the SourceForge
- * IJBSWA team. http://ijbswa.sourceforge.net
+ * Privoxy team. http://www.privoxy.org/
*
* Based on the Internet Junkbuster originally written
* by and Copyright (C) 1997 Anonymous Coders and
*
* Revisions :
* $Log: errlog.c,v $
+ * Revision 1.39 2002/04/03 17:15:27 gliptak
+ * zero padding thread ids in log
+ *
+ * Revision 1.38 2002/03/31 17:18:59 jongfoster
+ * Win32 only: Enabling STRICT to fix a VC++ compile warning.
+ *
+ * Revision 1.37 2002/03/27 14:32:43 david__schmidt
+ * More compiler warning message maintenance
+ *
+ * Revision 1.36 2002/03/26 22:29:54 swa
+ * we have a new homepage!
+ *
+ * Revision 1.35 2002/03/24 15:23:33 jongfoster
+ * Name changes
+ *
+ * Revision 1.34 2002/03/24 13:25:43 swa
+ * name change related issues
+ *
+ * Revision 1.33 2002/03/13 00:27:04 jongfoster
+ * Killing warnings
+ *
+ * Revision 1.32 2002/03/07 03:46:17 oes
+ * Fixed compiler warnings
+ *
+ * Revision 1.31 2002/03/06 23:02:57 jongfoster
+ * Removing tabs
+ *
+ * Revision 1.30 2002/03/05 22:43:45 david__schmidt
+ * - Better error reporting on OS/2
+ * - Fix double-slash comment (oops)
+ *
+ * Revision 1.29 2002/03/04 23:45:13 jongfoster
+ * Printing thread ID if using Win32 native threads
+ *
* Revision 1.28 2002/03/04 17:59:59 oes
* Deleted deletePidFile(), cosmetics
*
#endif /* def FEATURE_PTHREAD */
#ifdef _WIN32
+#ifndef STRICT
+#define STRICT
+#endif
#include <windows.h>
#ifndef _WIN_CONSOLE
#include "w32log.h"
#endif /* def _WIN32 */
#ifdef __OS2__
+#include <sys/socket.h> /* For sock_errno */
#define INCL_DOS
#include <os2.h>
#endif
#ifdef _WIN32
static char *w32_socket_strerr(int errcode, char *tmp_buf);
#endif
+#ifdef __OS2__
+static char *os2_socket_strerr(int errcode, char *tmp_buf);
+#endif
/*********************************************************************
*
static void fatal_error(const char * error_message)
{
#if defined(_WIN32) && !defined(_WIN_CONSOLE)
- MessageBox(g_hwndLogFrame, error_message, "Internet JunkBuster Error",
+ MessageBox(g_hwndLogFrame, error_message, "Privoxy Error",
MB_OK | MB_ICONERROR | MB_TASKMODAL | MB_SETFOREGROUND | MB_TOPMOST);
/* Cleanup - remove taskbar icon etc. */
/* set the designated log file */
if( logfname )
{
- if( !(fp = fopen(logfname, "a")) )
+ if( NULL == (fp = fopen(logfname, "a")) )
{
log_error(LOG_LEVEL_FATAL, "init_error_log(): can't open logfile: %s", logfname);
}
logfp = fp;
}
- log_error(LOG_LEVEL_INFO, "Internet JunkBuster version " VERSION);
+ log_error(LOG_LEVEL_INFO, "Privoxy version " VERSION);
if (prog_name != NULL)
{
log_error(LOG_LEVEL_INFO, "Program name: %s", prog_name);
{
/*
- * Write timestamp into tempbuf.
- *
- * Complex because not all OSs have tm_gmtoff or
- * the %z field in strftime()
- */
+ * Write timestamp into tempbuf.
+ *
+ * Complex because not all OSs have tm_gmtoff or
+ * the %z field in strftime()
+ */
time_t now;
struct tm tm_now;
time (&now);
switch (loglevel)
{
case LOG_LEVEL_ERROR:
- outc = sprintf(outbuf, "IJB(%ld) Error: ", this_thread);
+ outc = sprintf(outbuf, "Privoxy(%05ld) Error: ", this_thread);
break;
case LOG_LEVEL_FATAL:
- outc = sprintf(outbuf, "IJB(%ld) Fatal error: ", this_thread);
+ outc = sprintf(outbuf, "Privoxy(%05ld) Fatal error: ", this_thread);
break;
case LOG_LEVEL_GPC:
- outc = sprintf(outbuf, "IJB(%ld) Request: ", this_thread);
+ outc = sprintf(outbuf, "Privoxy(%05ld) Request: ", this_thread);
break;
case LOG_LEVEL_CONNECT:
- outc = sprintf(outbuf, "IJB(%ld) Connect: ", this_thread);
+ outc = sprintf(outbuf, "Privoxy(%05ld) Connect: ", this_thread);
break;
case LOG_LEVEL_LOG:
- outc = sprintf(outbuf, "IJB(%ld) Writing: ", this_thread);
+ outc = sprintf(outbuf, "Privoxy(%05ld) Writing: ", this_thread);
break;
case LOG_LEVEL_HEADER:
- outc = sprintf(outbuf, "IJB(%ld) Header: ", this_thread);
+ outc = sprintf(outbuf, "Privoxy(%05ld) Header: ", this_thread);
break;
case LOG_LEVEL_INFO:
- outc = sprintf(outbuf, "IJB(%ld) Info: ", this_thread);
+ outc = sprintf(outbuf, "Privoxy(%05ld) Info: ", this_thread);
break;
case LOG_LEVEL_RE_FILTER:
- outc = sprintf(outbuf, "IJB(%ld) Re-Filter: ", this_thread);
+ outc = sprintf(outbuf, "Privoxy(%05ld) Re-Filter: ", this_thread);
break;
#ifdef FEATURE_FORCE_LOAD
case LOG_LEVEL_FORCE:
- outc = sprintf(outbuf, "IJB(%ld) Force: ", this_thread);
+ outc = sprintf(outbuf, "Privoxy(%05ld) Force: ", this_thread);
break;
#endif /* def FEATURE_FORCE_LOAD */
#ifdef FEATURE_FAST_REDIRECTS
case LOG_LEVEL_REDIRECTS:
- outc = sprintf(outbuf, "IJB(%ld) Redirect: ", this_thread);
+ outc = sprintf(outbuf, "Privoxy(%05ld) Redirect: ", this_thread);
break;
#endif /* def FEATURE_FAST_REDIRECTS */
case LOG_LEVEL_DEANIMATE:
- outc = sprintf(outbuf, "IJB(%ld) Gif-Deanimate: ", this_thread);
+ outc = sprintf(outbuf, "Privoxy(%05ld) Gif-Deanimate: ", this_thread);
break;
case LOG_LEVEL_CLF:
- outbuf = outbuf_save;
+ outbuf = outbuf_save;
outc = 0;
outbuf[0] = '\0';
break;
#ifdef FEATURE_KILL_POPUPS
case LOG_LEVEL_POPUPS:
- outc = sprintf(outbuf, "IJB(%ld) Kill-Popups: ", this_thread);
+ outc = sprintf(outbuf, "Privoxy(%05ld) Kill-Popups: ", this_thread);
break;
#endif /* def FEATURE_KILL_POPUPS */
case LOG_LEVEL_CGI:
- outc = sprintf(outbuf, "IJB(%ld) CGI: ", this_thread);
+ outc = sprintf(outbuf, "Privoxy(%05ld) CGI: ", this_thread);
break;
default:
- outc = sprintf(outbuf, "IJB(%ld) UNKNOWN LOG TYPE(%d): ", this_thread, loglevel);
+ outc = sprintf(outbuf, "Privoxy(%05ld) UNKNOWN LOG TYPE(%d): ", this_thread, loglevel);
break;
}
while ((*src) && (outc < BUFFER_SIZE-2))
{
char tempbuf[BUFFER_SIZE];
- char *sval;
+ char *sval = NULL;
int ival;
unsigned uval;
long lval;
else
{
/* Error */
- sprintf(outbuf, "IJB(%ld) Error: log_error(): Bad format string:\n"
+ sprintf(outbuf, "Privoxy(%ld) Error: log_error(): Bad format string:\n"
"Format = \"%s\"\n"
"Exiting.", this_thread, fmt);
/* FIXME RACE HAZARD: should start critical section error_log_use here */
outc += ival;
if (outc < BUFFER_SIZE-1)
{
- memcpy(outbuf + oldoutc, sval, ival);
+ memcpy(outbuf + oldoutc, sval, (size_t) ival);
}
else
{
sval = w32_socket_strerr(ival, tempbuf);
#elif __OS2__
ival = sock_errno();
+ if (ival != 0)
+ sval = os2_socket_strerr(ival, tempbuf);
+ else
+ {
+ ival = errno;
+ sval = strerror(ival);
+ }
#else /* ifndef _WIN32 */
ival = errno;
#ifdef HAVE_STRERROR
}
break;
default:
- sprintf(outbuf, "IJB(%ld) Error: log_error(): Bad format string:\n"
+ sprintf(outbuf, "Privoxy(%ld) Error: log_error(): Bad format string:\n"
"Format = \"%s\"\n"
"Exiting.", this_thread, fmt);
/* FIXME RACE HAZARD: should start critical section error_log_use here */
#endif /* def _WIN32 */
+#ifdef __OS2__
+/*********************************************************************
+ *
+ * Function : os2_socket_strerr
+ *
+ * Description : Translate the return value from sock_errno()
+ * into a string.
+ *
+ * Parameters :
+ * 1 : errcode = The return value from sock_errno().
+ * 2 : tmp_buf = A temporary buffer that might be used to
+ * store the string.
+ *
+ * Returns : String representing the error code. This may be
+ * a global string constant or a string stored in
+ * tmp_buf.
+ *
+ *********************************************************************/
+static char *os2_socket_strerr(int errcode, char *tmp_buf)
+{
+#define TEXT_FOR_ERROR(code,text) \
+ if (errcode == code) \
+ { \
+ return #code " - " text; \
+ }
+
+ TEXT_FOR_ERROR(SOCEPERM , "Not owner.")
+ TEXT_FOR_ERROR(SOCESRCH , "No such process.")
+ TEXT_FOR_ERROR(SOCEINTR , "Interrupted system call.")
+ TEXT_FOR_ERROR(SOCENXIO , "No such device or address.")
+ TEXT_FOR_ERROR(SOCEBADF , "Bad file number.")
+ TEXT_FOR_ERROR(SOCEACCES , "Permission denied.")
+ TEXT_FOR_ERROR(SOCEFAULT , "Bad address.")
+ TEXT_FOR_ERROR(SOCEINVAL , "Invalid argument.")
+ TEXT_FOR_ERROR(SOCEMFILE , "Too many open files.")
+ TEXT_FOR_ERROR(SOCEPIPE , "Broken pipe.")
+ TEXT_FOR_ERROR(SOCEWOULDBLOCK , "Operation would block.")
+ TEXT_FOR_ERROR(SOCEINPROGRESS , "Operation now in progress.")
+ TEXT_FOR_ERROR(SOCEALREADY , "Operation already in progress.")
+ TEXT_FOR_ERROR(SOCENOTSOCK , "Socket operation on non-socket.")
+ TEXT_FOR_ERROR(SOCEDESTADDRREQ , "Destination address required.")
+ TEXT_FOR_ERROR(SOCEMSGSIZE , "Message too long.")
+ TEXT_FOR_ERROR(SOCEPROTOTYPE , "Protocol wrong type for socket.")
+ TEXT_FOR_ERROR(SOCENOPROTOOPT , "Protocol not available.")
+ TEXT_FOR_ERROR(SOCEPROTONOSUPPORT, "Protocol not supported.")
+ TEXT_FOR_ERROR(SOCESOCKTNOSUPPORT, "Socket type not supported.")
+ TEXT_FOR_ERROR(SOCEOPNOTSUPP , "Operation not supported.")
+ TEXT_FOR_ERROR(SOCEPFNOSUPPORT , "Protocol family not supported.")
+ TEXT_FOR_ERROR(SOCEAFNOSUPPORT , "Address family not supported by protocol family.")
+ TEXT_FOR_ERROR(SOCEADDRINUSE , "Address already in use.")
+ TEXT_FOR_ERROR(SOCEADDRNOTAVAIL , "Can't assign requested address.")
+ TEXT_FOR_ERROR(SOCENETDOWN , "Network is down.")
+ TEXT_FOR_ERROR(SOCENETUNREACH , "Network is unreachable.")
+ TEXT_FOR_ERROR(SOCENETRESET , "Network dropped connection on reset.")
+ TEXT_FOR_ERROR(SOCECONNABORTED , "Software caused connection abort.")
+ TEXT_FOR_ERROR(SOCECONNRESET , "Connection reset by peer.")
+ TEXT_FOR_ERROR(SOCENOBUFS , "No buffer space available.")
+ TEXT_FOR_ERROR(SOCEISCONN , "Socket is already connected.")
+ TEXT_FOR_ERROR(SOCENOTCONN , "Socket is not connected.")
+ TEXT_FOR_ERROR(SOCESHUTDOWN , "Can't send after socket shutdown.")
+ TEXT_FOR_ERROR(SOCETOOMANYREFS , "Too many references: can't splice.")
+ TEXT_FOR_ERROR(SOCETIMEDOUT , "Operation timed out.")
+ TEXT_FOR_ERROR(SOCECONNREFUSED , "Connection refused.")
+ TEXT_FOR_ERROR(SOCELOOP , "Too many levels of symbolic links.")
+ TEXT_FOR_ERROR(SOCENAMETOOLONG , "File name too long.")
+ TEXT_FOR_ERROR(SOCEHOSTDOWN , "Host is down.")
+ TEXT_FOR_ERROR(SOCEHOSTUNREACH , "No route to host.")
+ TEXT_FOR_ERROR(SOCENOTEMPTY , "Directory not empty.")
+ TEXT_FOR_ERROR(SOCEOS2ERR , "OS/2 Error.")
+
+ sprintf(tmp_buf, "(error number %d)", errcode);
+ return tmp_buf;
+}
+#endif /* def __OS2__ */
+
+
/*
Local Variables:
tab-width: 3