/* Declarations for windows
- Copyright (C) 1996-2005 Free Software Foundation, Inc.
+ Copyright (C) 1996-2006 Free Software Foundation, Inc.
This file is part of GNU Wget.
GNU Wget is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
+the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
GNU Wget is distributed in the hope that it will be useful,
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with Wget; if not, write to the Free Software Foundation, Inc.,
-51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+along with Wget. If not, see <http://www.gnu.org/licenses/>.
In addition, as a special exception, the Free Software Foundation
gives permission to link the code of its release of Wget with the
chmod. Unix declares these in unistd.h and fcntl.h. */
#include <io.h>
+/* Declares getpid(). */
+#include <process.h>
+
#ifndef S_ISDIR
# define S_ISDIR(m) (((m) & (_S_IFMT)) == (_S_IFDIR))
#endif
/* Define a wgint type under Windows. */
typedef __int64 wgint;
#define SIZEOF_WGINT 8
-#define WGINT_MAX LL (9223372036854775807)
-/* str_to_wgint is a function with the semantics of strtol, but which
- works on wgint. Since wgint is unconditionally 64-bit on Windows,
- we #define it to str_to_int64, which either calls _strtoi64 or
- implements the conversion manually. */
-#define str_to_wgint str_to_int64
-__int64 str_to_int64 (const char *, char **, int);
+/* str_to_wgint is a function with the semantics of strtol[l], but
+ which works on wgint. */
+#if defined HAVE_STRTOLL
+# define str_to_wgint strtoll
+#elif defined HAVE__STRTOI64
+# define str_to_wgint _strtoi64
+#else
+# define str_to_wgint strtoll
+# define NEED_STRTOLL
+# define strtoll_type __int64
+#endif
/* Windows has no symlink, therefore no lstat. Without symlinks lstat
is equivalent to stat anyway. */
#define lstat stat
+/* Define LFS aliases for stat and fstat. */
+#ifdef stat_alias
+# define stat(f, b) stat_alias (f, b)
+#endif
+#ifdef fstat_alias
+# define fstat(f, b) fstat_alias (f, b)
+#endif
+
#define PATH_SEPARATOR '\\'
/* Win32 doesn't support the MODE argument to mkdir. */
const char *inet_ntop (int, const void *, char *, socklen_t);
#endif
+#ifdef NEED_GAI_STRERROR
+# undef gai_strerror
+# define gai_strerror windows_strerror
+#endif
+
#ifndef INHIBIT_WRAP
/* Winsock functions don't set errno, so we provide wrappers that do. */