Regarding my run_with_timeout() patch, I forgot the following
patch to mswindows.h (which isnt included in util.c).
In my forthcoming patches for IPv6, we need to use the correct
Winsock headers. To avoid ifdef clutter throughout the .c-files, I've
put them in mswindows.h. So the .c-files should never include it,
but only need network headers like this:
#ifndef WINDOWS
# include sys/socket.h
# include netdb.h
...
#endif
#include wget.h
The above which includes sysdep.h which includes
mswindows.h.
--- CVS-latest/src/mswindows.h Tue Sep 30 23:24:36 2003
+++ src/mswindows.h Fri Oct 03 16:57:57 2003
@@ -30,6 +30,37 @@
#ifndef MSWINDOWS_H
#define MSWINDOWS_H
+#ifndef WGET_H
+#error Include mswindows.h inside or after wget.h
+#endif
+
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN /* Prevent inclusion of winsock*.h in windows.h */
+#endif
+
+#include windows.h
+
+/* Use the correct winsock header; ws2tcpip.h includes winsock2.h only on
+ * Watcom/MingW. We cannot use winsock.h for IPv6. Using getaddrinfo() requires
+ * ws2tcpip.h
+ */
+#if defined(ENABLE_IPV6) || defined(HAVE_GETADDRINFO)
+# include winsock2.h
+# include ws2tcpip.h
+#else
+# include winsock.h
+#endif
+
+#ifndef EAI_SYSTEM
+#define EAI_SYSTEM -1 /* value doesn't matter */
+#endif
+
+/* Must include sys/stat.h because of 'stat' define below. */
+#include sys/stat.h
+
+/* Missing in several .c files. Include here. */
+#include io.h
+
/* Apparently needed for alloca(). */
#include malloc.h
@@ -81,8 +112,6 @@
# define mkdir(a, b) mkdir(a)
#endif /* __BORLANDC__ */
-#include windows.h
-
/* Declarations of various socket errors: */
@@ -136,5 +164,21 @@
char *ws_mypath (void);
void ws_help (const char *);
void windows_main_junk (int *, char **, char **);
+
+/* Things needed for IPv6; missing in ws2tcpip.h. */
+#ifdef ENABLE_IPV6
+ #ifndef HAVE_NTOP
+ extern const char *inet_ntop (int af, const void *src, char *dst, size_t size);
+ #endif
+ #ifndef HAVE_PTON
+ extern int inet_pton (int af, const char *src, void *dst);
+ #endif
+#endif /* ENABLE_IPV6 */
-
Defining WIN32_LEAN_AND_MEAN also makes it compile much faster.
I think it would be handy to have 'opt.debug' in levels of verbosity.
I.e. '-dd' gives a more chatty wget. Or should it be '-vv'? I'm a bit
confused about the distinction between those options. I propose we
add this macro to wget.h:
# define DEBUGN(level,x) do { if (opt.debug = (level)) \
DEBUGP (x); } while (0)
And patch init.c:
@@ -85,6 +85,7 @@
CMD_DECLARE (cmd_boolean);
CMD_DECLARE (cmd_bytes);
CMD_DECLARE (cmd_directory_vector);
+CMD_DECLARE (cmd_increment);
CMD_DECLARE (cmd_lockable_boolean);
CMD_DECLARE (cmd_number);
CMD_DECLARE (cmd_number_inf);
@@ -129,7 +128,7 @@
{ cookies, opt.cookies, cmd_boolean },
{ cutdirs, opt.cut_dirs, cmd_number },
#ifdef DEBUG
- { debug, opt.debug, cmd_boolean },
+ { debug, opt.debug, cmd_increment },
#endif
{ deleteafter, opt.delete_after, cmd_boolean },
{ dirprefix, opt.dir_prefix,cmd_directory },
@@ -632,6 +631,17 @@
}
*(int *)closure = bool_value;
+ return 1;
+}
+
+/* Increment a value from VAL to CLOSURE. COM is ignored,
+ except for error messages. */
+static int
+cmd_increment (const char *com, const char *val, void *closure)
+{
+ int tmp;
+ if (cmd_boolean(com,val,tmp))
+ (*(int*)closure)++;
return 1;
}
Wadda you think? AFAIK only wget.texi should be updated.
Add this to @item -d:
To get increased verbosity turn up the debug-level
by repeating this option. E.g. @samp{-dd} or
@samp{--debug --debug}.
And one last patch (close - CLOSE):
--- CVS-latest/src/connect.c Mon Sep 22 15:55:22 2003
+++ src/connect.c Thu Oct 02 16:52:33 2003
@@ -37,9 +37,7 @@
#endif
#include assert.h
-#ifdef WINDOWS
-# include winsock.h
-#else
+#ifndef WINDOWS
# include sys/socket.h
# include netdb.h
# include netinet/in.h
@@ -201,7 +199,7 @@
wget_sockaddr_set_address (bsa, ip_default_family, 0, bind_address);
if (bind (sock, bsa.sa, sockaddr_len ()))
{
- close (sock);
+ CLOSE (sock);
sock = -1;
goto out;
}
@@ -211,7 +209,7 @@
if (connect_with_timeout (sock, sa.sa, sockaddr_len (),
opt.connect_timeout) 0)
{
- close (sock);
+ CLOSE (sock);
sock = -1;
goto out;
}
--
--gv