* Sebastian Hammer, Adam Dickmeiss
*
* $Log: log.c,v $
- * Revision 1.24 2000-09-04 08:58:15 adam
+ * Revision 1.26 2002-01-03 10:23:33 adam
+ * Using _vsnprintf on WIN32.
+ *
+ * Revision 1.25 2001/08/23 09:02:46 adam
+ * WIN32 fixes: Socket not re-used for bind. yaz_log logs WIN32 error
+ * message.
+ *
+ * Revision 1.24 2000/09/04 08:58:15 adam
* Added prefix yaz_ for most logging utility functions.
*
* Revision 1.23 2000/03/14 09:06:11 adam
#include <config.h>
#endif
+#ifdef WIN32
+#include <windows.h>
+#endif
+
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
level -= mask_names[i].mask;
}
va_start(ap, fmt);
+#ifdef WIN32
+ _vsnprintf(buf, sizeof(buf)-1, fmt, ap);
+#else
+/* !WIN32 */
#if HAVE_VSNPRINTF
vsnprintf(buf, sizeof(buf), fmt, ap);
#else
vsprintf(buf, fmt, ap);
#endif
+#endif
+/* WIN32 */
if (o_level & LOG_ERRNO)
- sprintf(buf + strlen(buf), " [%s]", strerror(errno));
+ {
+#ifdef WIN32
+ DWORD err = GetLastError();
+ if (err)
+ {
+ strcat(buf, " [");
+ FormatMessage(
+ FORMAT_MESSAGE_FROM_SYSTEM,
+ NULL,
+ err,
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
+ (LPTSTR) buf + strlen(buf),
+ 2048,
+ NULL);
+ strcat(buf, "]");
+ }
+#else
+ sprintf(buf + strlen(buf), " [%s]", strerror(errno));
+#endif
+ }
if (start_hook_func)
(*start_hook_func)(o_level, buf, start_hook_info);
ti = time(0);