diff options
author | Daniel Stenberg <daniel@haxx.se> | 2005-05-17 10:22:22 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2005-05-17 10:22:22 +0000 |
commit | 84fd4686e2fa9dfed265cdd7a941bc0df1ce4821 (patch) | |
tree | a972d893f0fb0d5b72f6a66f4bdd3f3da210a0cc /tests/server/util.c | |
parent | ede9fb4fcc600ae19d38a8b1b8833250e84801b7 (diff) |
Moved more generic functions to util.[ch]
Added resolve.c to simply resolve a given host name
Diffstat (limited to 'tests/server/util.c')
-rw-r--r-- | tests/server/util.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/tests/server/util.c b/tests/server/util.c index a3894cb44..d88f7ef1e 100644 --- a/tests/server/util.c +++ b/tests/server/util.c @@ -96,3 +96,52 @@ void logmsg(const char *msg, ...) if(logfp) fclose(logfp); } + +#if defined(WIN32) && !defined(__CYGWIN__) +/* use instead of perror() on generic windows */ +void win32_perror (const char *msg) +{ + char buf[256]; + DWORD err = WSAGetLastError(); + + if (!FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err, + LANG_NEUTRAL, buf, sizeof(buf), NULL)) + snprintf(buf, sizeof(buf), "Unknown error %lu (%#lx)", err, err); + if (msg) + fprintf(stderr, "%s: ", msg); + fprintf(stderr, "%s\n", buf); +} +#endif + +#if defined(WIN32) && !defined(__CYGWIN__) +void win32_init(void) +{ + WORD wVersionRequested; + WSADATA wsaData; + int err; + wVersionRequested = MAKEWORD(2, 0); + + err = WSAStartup(wVersionRequested, &wsaData); + + if (err != 0) { + perror("Winsock init failed"); + logmsg("Error initialising winsock -- aborting\n"); + exit(1); + } + + if ( LOBYTE( wsaData.wVersion ) != 2 || + HIBYTE( wsaData.wVersion ) != 0 ) { + + WSACleanup(); + perror("Winsock init failed"); + logmsg("No suitable winsock.dll found -- aborting\n"); + exit(1); + } +} + +void win32_cleanup(void) +{ + WSACleanup(); +} +#endif + |