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>
|
||||
|
||||
* mswindows.c (read_registry): Fix invocation of registry
|
||||
|
@ -57,13 +57,25 @@ so, delete this exception statement from your version. */
|
||||
extern int errno;
|
||||
#endif
|
||||
|
||||
#ifndef ES_SYSTEM_REQUIRED
|
||||
#define ES_SYSTEM_REQUIRED 0x00000001
|
||||
#endif
|
||||
|
||||
#ifndef ES_CONTINUOUS
|
||||
#define ES_CONTINUOUS 0x80000000
|
||||
#endif
|
||||
|
||||
|
||||
/* Defined in log.c. */
|
||||
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;
|
||||
|
||||
|
||||
#ifndef HAVE_SLEEP
|
||||
|
||||
/* Emulation of Unix sleep. */
|
||||
|
||||
unsigned int
|
||||
@ -92,21 +104,6 @@ usleep (unsigned long usec)
|
||||
}
|
||||
#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
|
||||
windows_main_junk (int *argc, char **argv, char **exec_name)
|
||||
{
|
||||
@ -125,6 +122,9 @@ static void
|
||||
ws_cleanup (void)
|
||||
{
|
||||
WSACleanup ();
|
||||
if (pwr_mode)
|
||||
set_sleep_mode (pwr_mode);
|
||||
pwr_mode = 0;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -170,7 +170,7 @@ ws_handler (DWORD dwEvent)
|
||||
case CTRL_CLOSE_EVENT:
|
||||
case CTRL_LOGOFF_EVENT:
|
||||
default:
|
||||
WSACleanup ();
|
||||
ws_cleanup ();
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
@ -266,6 +266,7 @@ ws_startup (void)
|
||||
exit (1);
|
||||
}
|
||||
atexit (ws_cleanup);
|
||||
pwr_mode = set_sleep_mode (0);
|
||||
SetConsoleCtrlHandler (ws_handler, TRUE);
|
||||
}
|
||||
|
||||
@ -295,3 +296,31 @@ int borland_utime(const char *path, const struct utimbuf *times)
|
||||
return res;
|
||||
}
|
||||
#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 EREMOTE WSAEREMOTE
|
||||
|
||||
#ifdef __DMC__
|
||||
# define HAVE_SLEEP 1
|
||||
# define HAVE_USLEEP 1
|
||||
#endif
|
||||
|
||||
/* Public functions. */
|
||||
|
||||
#ifndef HAVE_SLEEP
|
||||
|
@ -139,9 +139,10 @@ char *alloca ();
|
||||
#undef HAVE_UNISTD_H
|
||||
#endif
|
||||
|
||||
/* None except Digital Mars have usleep function */
|
||||
/* None except Digital Mars have sleep/usleep functions */
|
||||
#if defined(__DMC__)
|
||||
#define HAVE_USLEEP
|
||||
#define HAVE_SLEEP
|
||||
#endif
|
||||
|
||||
/* Define if you have the <utime.h> header file. */
|
||||
|
Loading…
Reference in New Issue
Block a user