aboutsummaryrefslogtreecommitdiffstats
path: root/tests/common.h
diff options
context:
space:
mode:
Diffstat (limited to 'tests/common.h')
-rw-r--r--tests/common.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/common.h b/tests/common.h
index 4aca63a..c5ce811 100644
--- a/tests/common.h
+++ b/tests/common.h
@@ -34,9 +34,14 @@
#if HAVE_W32_SYSTEM
#define SOCKET2HANDLE(s) ((void *)(s))
#define HANDLE2SOCKET(h) ((unsigned int)(h))
+CRITICAL_SECTION _log_critsect;
+#define _log_enter() do { EnterCriticalSection (&_log_critsect); } while (0)
+#define _log_leave() do { LeaveCriticalSection (&_log_critsect); } while (0)
#else
#define SOCKET2HANDLE(s) (s)
#define HANDLE2SOCKET(h) (h)
+#define _log_enter() do { } while (0)
+#define _log_leave() do { } while (0)
#endif
#define DIM(v) (sizeof(v)/sizeof((v)[0]))
@@ -71,9 +76,11 @@ xcalloc (size_t n, size_t m)
char *p = calloc (n, m);
if (!p)
{
+ _log_enter ();
if (log_prefix)
fprintf (stderr, "%s[%u]: ", log_prefix, (unsigned int)getpid ());
fprintf (stderr, "out of core\n");
+ _log_leave ();
exit (1);
}
return p;
@@ -98,7 +105,12 @@ xstrdup (const char *string)
void
log_set_prefix (const char *s)
{
+#ifdef HAVE_W32_SYSTEM
+ InitializeCriticalSection (&_log_critsect);
+ log_prefix = strrchr (s, '\\');
+#else
log_prefix = strrchr (s, '/');
+#endif
if (log_prefix)
log_prefix++;
else
@@ -122,9 +134,11 @@ log_info (const char *format, ...)
return;
va_start (arg_ptr, format) ;
+ _log_enter ();
if (log_prefix)
fprintf (stderr, "%s[%u]: ", log_prefix, (unsigned int)getpid ());
vfprintf (stderr, format, arg_ptr );
+ _log_leave ();
va_end (arg_ptr);
}
@@ -135,9 +149,11 @@ log_error (const char *format, ...)
va_list arg_ptr ;
va_start (arg_ptr, format) ;
+ _log_enter ();
if (log_prefix)
fprintf (stderr, "%s[%u]: ", log_prefix, (unsigned int)getpid ());
vfprintf (stderr, format, arg_ptr );
+ _log_leave ();
va_end (arg_ptr);
errorcount++;
}
@@ -149,9 +165,11 @@ log_fatal (const char *format, ...)
va_list arg_ptr ;
va_start (arg_ptr, format) ;
+ _log_enter ();
if (log_prefix)
fprintf (stderr, "%s[%u]: ", log_prefix, (unsigned int)getpid ());
vfprintf (stderr, format, arg_ptr );
+ _log_leave ();
va_end (arg_ptr);
exit (2);
}
@@ -162,12 +180,14 @@ log_printhex (const char *text, const void *buffer, size_t length)
{
const unsigned char *s;
+ _log_enter ();
if (log_prefix)
fprintf (stderr, "%s[%u]: ", log_prefix, (unsigned int)getpid ());
fputs (text, stderr);
for (s=buffer; length; s++, length--)
fprintf (stderr, "%02X", *s);
putc ('\n', stderr);
+ _log_leave ();
}