1 /* Declarations for windows
2 Copyright (C) 1995, 1997, 1997, 1998, 2004
3 Free Software Foundation, Inc.
5 This file is part of GNU Wget.
7 GNU Wget is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
12 GNU Wget is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with Wget; if not, write to the Free Software
19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 In addition, as a special exception, the Free Software Foundation
22 gives permission to link the code of its release of Wget with the
23 OpenSSL project's "OpenSSL" library (or with modified versions of it
24 that use the same license as the "OpenSSL" library), and distribute
25 the linked executables. You must obey the GNU General Public License
26 in all respects for all of the code used other than "OpenSSL". If you
27 modify this file, you may extend this exception to your version of the
28 file, but you are not obligated to do so. If you do not wish to do
29 so, delete this exception statement from your version. */
35 #error Include mswindows.h inside or after "wget.h"
38 /* Prevent inclusion of <winsock*.h> in <windows.h>. */
39 #ifndef WIN32_LEAN_AND_MEAN
40 #define WIN32_LEAN_AND_MEAN
45 /* Use the correct winsock header; <ws2tcpip.h> includes <winsock2.h> only
46 on Watcom/MingW. We cannot use <winsock.h> for IPv6. Using
47 getaddrinfo() requires <ws2tcpip.h>. */
48 #if defined(ENABLE_IPV6) || defined(HAVE_GETADDRINFO)
49 # include <winsock2.h>
50 # include <ws2tcpip.h>
56 # define EAI_SYSTEM -1 /* value doesn't matter */
59 /* Must include <sys/stat.h> because of 'stat' define below. */
62 /* Missing in several .c files. Include here. */
65 /* Apparently needed for alloca(). */
69 # define S_ISDIR(m) (((m) & (_S_IFMT)) == (_S_IFDIR))
75 /* We have strcasecmp and strncasecmp, just under a different name. */
76 #define strcasecmp stricmp
77 #define strncasecmp strnicmp
79 /* The same for snprintf() and vsnprintf(). */
80 #define snprintf _snprintf
81 #define vsnprintf _vsnprintf
83 /* No stat on Windows. */
86 #define PATH_SEPARATOR '\\'
88 /* Microsoft says stat is _stat, Borland doesn't. */
94 /* Microsoft VC supports _isatty; Borland? */
96 # define isatty _isatty
100 #define REALCLOSE(x) closesocket (x)
102 /* #### Do we need this? */
105 /* Windows compilers accept only one arg to mkdir. */
107 # define mkdir(a, b) _mkdir(a)
108 #else /* __BORLANDC__ */
109 # define mkdir(a, b) mkdir(a)
110 #endif /* __BORLANDC__ */
112 /* Declarations of various socket errors: */
114 #define EWOULDBLOCK WSAEWOULDBLOCK
115 #define EINPROGRESS WSAEINPROGRESS
116 #define EALREADY WSAEALREADY
117 #define ENOTSOCK WSAENOTSOCK
118 #define EDESTADDRREQ WSAEDESTADDRREQ
119 #define EMSGSIZE WSAEMSGSIZE
120 #define EPROTOTYPE WSAEPROTOTYPE
121 #define ENOPROTOOPT WSAENOPROTOOPT
122 #define EPROTONOSUPPORT WSAEPROTONOSUPPORT
123 #define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT
124 #define EOPNOTSUPP WSAEOPNOTSUPP
125 #define EPFNOSUPPORT WSAEPFNOSUPPORT
126 #define EAFNOSUPPORT WSAEAFNOSUPPORT
127 #define EADDRINUSE WSAEADDRINUSE
128 #define EADDRNOTAVAIL WSAEADDRNOTAVAIL
129 #define ENETDOWN WSAENETDOWN
130 #define ENETUNREACH WSAENETUNREACH
131 #define ENETRESET WSAENETRESET
132 #define ECONNABORTED WSAECONNABORTED
133 #define ECONNRESET WSAECONNRESET
134 #define ENOBUFS WSAENOBUFS
135 #define EISCONN WSAEISCONN
136 #define ENOTCONN WSAENOTCONN
137 #define ESHUTDOWN WSAESHUTDOWN
138 #define ETOOMANYREFS WSAETOOMANYREFS
139 #define ETIMEDOUT WSAETIMEDOUT
140 #define ECONNREFUSED WSAECONNREFUSED
141 #define ELOOP WSAELOOP
142 #define EHOSTDOWN WSAEHOSTDOWN
143 #define EHOSTUNREACH WSAEHOSTUNREACH
144 #define EPROCLIM WSAEPROCLIM
145 #define EUSERS WSAEUSERS
146 #define EDQUOT WSAEDQUOT
147 #define ESTALE WSAESTALE
148 #define EREMOTE WSAEREMOTE
150 /* Public functions. */
153 unsigned int sleep (unsigned);
156 int usleep (unsigned long);
159 void ws_startup (void);
160 void ws_changetitle (const char *);
161 void ws_percenttitle (double);
162 char *ws_mypath (void);
163 void windows_main_junk (int *, char **, char **);
165 /* Things needed for IPv6; missing in <ws2tcpip.h>. */
168 extern const char *inet_ntop (int af, const void *src, char *dst, size_t size);
171 extern int inet_pton (int af, const char *src, void *dst);
173 #endif /* ENABLE_IPV6 */
175 #endif /* MSWINDOWS_H */