X-Git-Url: http://sjero.net/git/?a=blobdiff_plain;f=src%2Fmswindows.c;h=cdfea2d263390012a1a3ced53d7e47f6aa4e2064;hb=766df9d4e9392045a4e5c730ed81e599b509557a;hp=986f1ba49ee6b8dd1c29fcacaa0a89e8bcb32d86;hpb=f25d593c16d10ae1ef6d519eb0268fead356b014;p=wget
diff --git a/src/mswindows.c b/src/mswindows.c
index 986f1ba4..cdfea2d2 100644
--- a/src/mswindows.c
+++ b/src/mswindows.c
@@ -1,11 +1,12 @@
/* mswindows.c -- Windows-specific support
- Copyright (C) 1996-2005 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+ 2004, 2005, 2006, 2007, 2008 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,
@@ -14,20 +15,22 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
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 .
-In addition, as a special exception, the Free Software Foundation
-gives permission to link the code of its release of Wget with the
-OpenSSL project's "OpenSSL" library (or with modified versions of it
-that use the same license as the "OpenSSL" library), and distribute
-the linked executables. You must obey the GNU General Public License
-in all respects for all of the code used other than "OpenSSL". If you
-modify this file, you may extend this exception to your version of the
-file, but you are not obligated to do so. If you do not wish to do
-so, delete this exception statement from your version. */
+Additional permission under GNU GPL version 3 section 7
-#include
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work. */
+
+#define INHIBIT_WRAP /* avoid wrapping of socket, bind, ... */
+
+#include "wget.h"
#include
#include
@@ -36,9 +39,7 @@ so, delete this exception statement from your version. */
#include
#include
-#define INHIBIT_WRAP /* avoid wrapping of socket, bind, ... */
-#include "wget.h"
#include "utils.h"
#include "url.h"
@@ -73,7 +74,7 @@ xsleep (double seconds)
}
void
-windows_main (int *argc, char **argv, char **exec_name)
+windows_main (char **exec_name)
{
char *p;
@@ -87,9 +88,11 @@ windows_main (int *argc, char **argv, char **exec_name)
static void
ws_cleanup (void)
{
+ xfree ((char*)exec_name);
WSACleanup ();
}
+#if defined(CTRLBREAK_BACKGND) || defined(CTRLC_BACKGND)
static void
ws_hangup (const char *reason)
{
@@ -103,6 +106,7 @@ ws_hangup (const char *reason)
gesture as the parent will wait for us to terminate before resuming. */
FreeConsole ();
}
+#endif
/* Construct the name for a named section (a.k.a. `file mapping') object.
The returned string is dynamically allocated and needs to be xfree()'d. */
@@ -153,17 +157,17 @@ fake_fork_child (void)
event = info->event;
info->logfile_changed = false;
- if (!opt.lfilename)
+ if (!opt.lfilename && (!opt.quiet || opt.server_response))
{
/* See utils:fork_to_background for explanation. */
FILE *new_log_fp = unique_create (DEFAULT_LOGFILE, false, &opt.lfilename);
if (new_log_fp)
- {
- info->logfile_changed = true;
- strncpy (info->lfilename, opt.lfilename, sizeof (info->lfilename));
- info->lfilename[sizeof (info->lfilename) - 1] = '\0';
- fclose (new_log_fp);
- }
+ {
+ info->logfile_changed = true;
+ strncpy (info->lfilename, opt.lfilename, sizeof (info->lfilename));
+ info->lfilename[sizeof (info->lfilename) - 1] = '\0';
+ fclose (new_log_fp);
+ }
}
UnmapViewOfFile (info);
@@ -287,7 +291,7 @@ fake_fork (void)
printf (_("Continuing in background, pid %lu.\n"), pi.dwProcessId);
if (info->logfile_changed)
- printf (_("Output will be written to `%s'.\n"), info->lfilename);
+ printf (_("Output will be written to %s.\n"), quote (info->lfilename));
UnmapViewOfFile (info);
@@ -456,14 +460,14 @@ ws_startup (void)
if (err != 0)
{
fprintf (stderr, _("%s: Couldn't find usable socket driver.\n"),
- exec_name);
+ exec_name);
exit (1);
}
if (data.wVersion < requested)
{
fprintf (stderr, _("%s: Couldn't find usable socket driver.\n"),
- exec_name);
+ exec_name);
WSACleanup ();
exit (1);
}
@@ -523,7 +527,7 @@ thread_helper (void *arg)
bool
run_with_timeout (double seconds, void (*fun) (void *), void *arg)
{
- static HANDLE thread_hnd = NULL;
+ HANDLE thread_hnd;
struct thread_data thread_arg;
DWORD thread_id;
bool rc;
@@ -537,17 +541,15 @@ run_with_timeout (double seconds, void (*fun) (void *), void *arg)
return false;
}
- /* Should never happen, but test for recursivety anyway. */
- assert (thread_hnd == NULL);
-
thread_arg.fun = fun;
thread_arg.arg = arg;
thread_arg.ws_error = WSAGetLastError ();
thread_hnd = CreateThread (NULL, THREAD_STACK_SIZE, thread_helper,
- &thread_arg, 0, &thread_id);
+ &thread_arg, 0, &thread_id);
if (!thread_hnd)
{
- DEBUGP (("CreateThread() failed; [0x%x]\n", GetLastError ()));
+ DEBUGP (("CreateThread() failed; [%#lx]\n",
+ (unsigned long) GetLastError ()));
goto blocking_fallback;
}
@@ -555,7 +557,7 @@ run_with_timeout (double seconds, void (*fun) (void *), void *arg)
== WAIT_OBJECT_0)
{
/* Propagate error state (which is per-thread) to this thread,
- so the caller can inspect it. */
+ so the caller can inspect it. */
WSASetLastError (thread_arg.ws_error);
DEBUGP (("Winsock error: %d\n", WSAGetLastError ()));
rc = false;
@@ -566,7 +568,7 @@ run_with_timeout (double seconds, void (*fun) (void *), void *arg)
rc = true;
}
- CloseHandle (thread_hnd); /* Clear-up after TerminateThread(). */
+ CloseHandle (thread_hnd); /* Clear-up after TerminateThread(). */
thread_hnd = NULL;
return rc;
}
@@ -580,11 +582,11 @@ run_with_timeout (double seconds, void (*fun) (void *), void *arg)
/* Define a macro that creates a function definition that wraps FUN into
a function that sets errno the way the rest of the code expects. */
-#define WRAP(fun, decl, call) int wrapped_##fun decl { \
- int retval = fun call; \
- if (retval < 0) \
- errno = WSAGetLastError (); \
- return retval; \
+#define WRAP(fun, decl, call) int wrapped_##fun decl { \
+ int retval = fun call; \
+ if (retval < 0) \
+ errno = WSAGetLastError (); \
+ return retval; \
}
WRAP (socket, (int domain, int type, int protocol), (domain, type, protocol))