From 115041d41421c262942dd2d97d3828a1e3281ad1 Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Thu, 23 Aug 2001 09:02:46 +0000 Subject: [PATCH] WIN32 fixes: Socket not re-used for bind. yaz_log logs WIN32 error message. --- comstack/tcpip.c | 10 ++++++++-- util/log.c | 31 +++++++++++++++++++++++++++++-- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/comstack/tcpip.c b/comstack/tcpip.c index 9feb455..4c9b481 100644 --- a/comstack/tcpip.c +++ b/comstack/tcpip.c @@ -3,7 +3,11 @@ * See the file LICENSE for details. * * $Log: tcpip.c,v $ - * Revision 1.39 2001-07-19 19:49:40 adam + * Revision 1.40 2001-08-23 09:02:46 adam + * WIN32 fixes: Socket not re-used for bind. yaz_log logs WIN32 error + * message. + * + * Revision 1.39 2001/07/19 19:49:40 adam * Fixed bug in tcpip_set_blocking. * * Revision 1.38 2001/03/21 12:43:36 adam @@ -603,13 +607,15 @@ int tcpip_bind(COMSTACK h, void *address, int mode) #else TRC (fprintf (stderr, "tcpip_bind\n")); #endif +#ifndef WIN32 if (setsockopt(h->iofile, SOL_SOCKET, SO_REUSEADDR, (char*) &one, sizeof(one)) < 0) { h->cerrno = CSYSERR; return -1; } - if (bind(h->iofile, addr, sizeof(struct sockaddr_in)) < 0) +#endif + if (bind(h->iofile, addr, sizeof(struct sockaddr_in))) { h->cerrno = CSYSERR; return -1; diff --git a/util/log.c b/util/log.c index e4f9ac1..66d4cc2 100644 --- a/util/log.c +++ b/util/log.c @@ -4,7 +4,11 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: log.c,v $ - * Revision 1.24 2000-09-04 08:58:15 adam + * 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 @@ -112,6 +116,10 @@ #include #endif +#ifdef WIN32 +#include +#endif + #include #include #include @@ -241,7 +249,26 @@ void yaz_log(int level, const char *fmt, ...) vsprintf(buf, fmt, ap); #endif 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); -- 1.7.10.4