]> git.lizzy.rs Git - dragonnet.git/blob - dragonnet/error.c
extra -> user
[dragonnet.git] / dragonnet / error.c
1 #include <errno.h>
2 #include <stdio.h>
3 #include "error.h"
4 #include "sock.h"
5
6 void dragonnet_perror(const char *str)
7 {
8 #ifdef _WIN32
9         wchar_t *msg = NULL;
10         FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
11                 NULL, WSAGetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPWSTR) &msg, 0, NULL);
12         fprintf(stderr, "%s: %S\n", str, msg);
13         LocalFree(msg);
14 #else // _WIN32
15         perror(str);
16 #endif // _WIN32
17 }
18
19 bool dragonnet_isconnerr()
20 {
21 #ifdef _WIN32
22         int err = WSAGetLastError();
23         return err == WSAECONNRESET || err == WSAETIMEDOUT || err == WSAEDISCON;
24 #else // _WIN32
25         return errno == ECONNRESET || errno == EPIPE || errno == ETIMEDOUT;
26 #endif // _WIN32
27 }
28
29
30 bool dragonnet_isintrerr()
31 {
32 #ifdef _WIN32
33         return WSAGetLastError() == WSAEINTR; 
34 #else // _WIN32
35         return errno == EINTR;
36 #endif // _WIN32
37 }