mirror of
https://github.com/moparisthebest/wget
synced 2024-07-03 16:38:41 -04:00
[svn] Windows fixes by Gisle Vanem.
This commit is contained in:
parent
700df4394e
commit
a95b801f61
@ -1,3 +1,9 @@
|
|||||||
|
2003-09-26 Gisle Vanem <giva@bgnett.no>
|
||||||
|
|
||||||
|
* mswindows.c (read_registry): Removed.
|
||||||
|
(set_sleep_mode): New function.
|
||||||
|
(windows_main_junk): Call it.
|
||||||
|
|
||||||
2003-09-26 Gisle Vanem <giva@bgnett.no>
|
2003-09-26 Gisle Vanem <giva@bgnett.no>
|
||||||
|
|
||||||
* mswindows.c (read_registry): Fix invocation of registry
|
* mswindows.c (read_registry): Fix invocation of registry
|
||||||
|
@ -57,13 +57,25 @@ so, delete this exception statement from your version. */
|
|||||||
extern int errno;
|
extern int errno;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef ES_SYSTEM_REQUIRED
|
||||||
|
#define ES_SYSTEM_REQUIRED 0x00000001
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef ES_CONTINUOUS
|
||||||
|
#define ES_CONTINUOUS 0x80000000
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Defined in log.c. */
|
/* Defined in log.c. */
|
||||||
void log_request_redirect_output PARAMS ((const char *));
|
void log_request_redirect_output PARAMS ((const char *));
|
||||||
|
|
||||||
|
static DWORD set_sleep_mode (DWORD mode);
|
||||||
|
|
||||||
|
static DWORD pwr_mode = 0;
|
||||||
static int windows_nt_p;
|
static int windows_nt_p;
|
||||||
|
|
||||||
|
|
||||||
#ifndef HAVE_SLEEP
|
#ifndef HAVE_SLEEP
|
||||||
|
|
||||||
/* Emulation of Unix sleep. */
|
/* Emulation of Unix sleep. */
|
||||||
|
|
||||||
unsigned int
|
unsigned int
|
||||||
@ -92,21 +104,6 @@ usleep (unsigned long usec)
|
|||||||
}
|
}
|
||||||
#endif /* HAVE_USLEEP */
|
#endif /* HAVE_USLEEP */
|
||||||
|
|
||||||
static char *
|
|
||||||
read_registry (HKEY hkey, char *subkey, char *valuename, char *buf, int *len)
|
|
||||||
{
|
|
||||||
HKEY result;
|
|
||||||
DWORD size = *len;
|
|
||||||
DWORD type = REG_SZ;
|
|
||||||
if (RegOpenKeyEx (hkey, subkey, 0, KEY_READ, &result) != ERROR_SUCCESS)
|
|
||||||
return NULL;
|
|
||||||
if (RegQueryValueEx (result, valuename, NULL, &type, (LPBYTE)buf, &size) != ERROR_SUCCESS)
|
|
||||||
buf = NULL;
|
|
||||||
*len = size;
|
|
||||||
RegCloseKey (result);
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
windows_main_junk (int *argc, char **argv, char **exec_name)
|
windows_main_junk (int *argc, char **argv, char **exec_name)
|
||||||
{
|
{
|
||||||
@ -125,6 +122,9 @@ static void
|
|||||||
ws_cleanup (void)
|
ws_cleanup (void)
|
||||||
{
|
{
|
||||||
WSACleanup ();
|
WSACleanup ();
|
||||||
|
if (pwr_mode)
|
||||||
|
set_sleep_mode (pwr_mode);
|
||||||
|
pwr_mode = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -170,7 +170,7 @@ ws_handler (DWORD dwEvent)
|
|||||||
case CTRL_CLOSE_EVENT:
|
case CTRL_CLOSE_EVENT:
|
||||||
case CTRL_LOGOFF_EVENT:
|
case CTRL_LOGOFF_EVENT:
|
||||||
default:
|
default:
|
||||||
WSACleanup ();
|
ws_cleanup ();
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -266,6 +266,7 @@ ws_startup (void)
|
|||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
atexit (ws_cleanup);
|
atexit (ws_cleanup);
|
||||||
|
pwr_mode = set_sleep_mode (0);
|
||||||
SetConsoleCtrlHandler (ws_handler, TRUE);
|
SetConsoleCtrlHandler (ws_handler, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -295,3 +296,31 @@ int borland_utime(const char *path, const struct utimbuf *times)
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Prevent Windows entering sleep/hibernation-mode while wget is doing a lengthy transfer.
|
||||||
|
* Windows does by default not consider network activity in console-programs as activity !
|
||||||
|
* Works on Win-98/ME/2K and up.
|
||||||
|
*/
|
||||||
|
static
|
||||||
|
DWORD set_sleep_mode (DWORD mode)
|
||||||
|
{
|
||||||
|
HMODULE mod = LoadLibrary ("kernel32.dll");
|
||||||
|
DWORD (*_SetThreadExecutionState) (DWORD) = NULL;
|
||||||
|
DWORD rc = (DWORD)-1;
|
||||||
|
|
||||||
|
if (mod)
|
||||||
|
(void*)_SetThreadExecutionState = GetProcAddress ((HINSTANCE)mod, "SetThreadExecutionState");
|
||||||
|
|
||||||
|
if (_SetThreadExecutionState)
|
||||||
|
{
|
||||||
|
if (mode == 0) /* first time */
|
||||||
|
mode = (ES_SYSTEM_REQUIRED | ES_CONTINUOUS);
|
||||||
|
rc = (*_SetThreadExecutionState) (mode);
|
||||||
|
}
|
||||||
|
if (mod)
|
||||||
|
FreeLibrary (mod);
|
||||||
|
DEBUGP (("set_sleep_mode(): mode 0x%08lX, rc 0x%08lX\n", mode, rc));
|
||||||
|
return (rc);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -125,11 +125,6 @@ so, delete this exception statement from your version. */
|
|||||||
#define ESTALE WSAESTALE
|
#define ESTALE WSAESTALE
|
||||||
#define EREMOTE WSAEREMOTE
|
#define EREMOTE WSAEREMOTE
|
||||||
|
|
||||||
#ifdef __DMC__
|
|
||||||
# define HAVE_SLEEP 1
|
|
||||||
# define HAVE_USLEEP 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Public functions. */
|
/* Public functions. */
|
||||||
|
|
||||||
#ifndef HAVE_SLEEP
|
#ifndef HAVE_SLEEP
|
||||||
|
@ -139,9 +139,10 @@ char *alloca ();
|
|||||||
#undef HAVE_UNISTD_H
|
#undef HAVE_UNISTD_H
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* None except Digital Mars have usleep function */
|
/* None except Digital Mars have sleep/usleep functions */
|
||||||
#if defined(__DMC__)
|
#if defined(__DMC__)
|
||||||
#define HAVE_USLEEP
|
#define HAVE_USLEEP
|
||||||
|
#define HAVE_SLEEP
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Define if you have the <utime.h> header file. */
|
/* Define if you have the <utime.h> header file. */
|
||||||
|
Loading…
Reference in New Issue
Block a user