X-Git-Url: http://sjero.net/git/?p=wget;a=blobdiff_plain;f=src%2Fmswindows.c;h=0b5242f15390760a8a777c4a6433c27fb37f2e4d;hp=6353cc280b48f18d2acad96c190aba9189554ccd;hb=700df4394ec8739943966d8860913cc9363741cf;hpb=9c1c7f27cdbccbf838648253144f394f94513655 diff --git a/src/mswindows.c b/src/mswindows.c index 6353cc28..0b5242f1 100644 --- a/src/mswindows.c +++ b/src/mswindows.c @@ -15,7 +15,17 @@ 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ +Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +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. */ /* #### Someone please document what these functions do! */ @@ -28,7 +38,19 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include +#ifdef HACK_BCC_UTIME_BUG +# include +# include +# ifdef HAVE_UTIME_H +# include +# endif +# ifdef HAVE_SYS_UTIME_H +# include +# endif +#endif + #include "wget.h" +#include "utils.h" #include "url.h" #ifndef errno @@ -36,11 +58,12 @@ extern int errno; #endif /* Defined in log.c. */ -void redirect_output (const char *); +void log_request_redirect_output PARAMS ((const char *)); static int windows_nt_p; +#ifndef HAVE_SLEEP /* Emulation of Unix sleep. */ unsigned int @@ -48,11 +71,14 @@ sleep (unsigned seconds) { return SleepEx (1000 * seconds, TRUE) ? 0U : 1000 * seconds; } +#endif +#ifndef HAVE_USLEEP /* Emulation of Unix usleep(). This has a granularity of milliseconds, but that's ok because: - a) Wget is only using it with milliseconds; + a) Wget is only using it with milliseconds [not anymore, but b) + still applies]; b) You can't rely on usleep's granularity anyway. If a caller expects usleep to respect every microsecond, he's in for a @@ -64,6 +90,7 @@ usleep (unsigned long usec) SleepEx (usec / 1000, TRUE); return 0; } +#endif /* HAVE_USLEEP */ static char * read_registry (HKEY hkey, char *subkey, char *valuename, char *buf, int *len) @@ -71,9 +98,9 @@ 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, NULL, KEY_READ, &result) != ERROR_SUCCESS) + if (RegOpenKeyEx (hkey, subkey, 0, KEY_READ, &result) != ERROR_SUCCESS) return NULL; - if (RegQueryValueEx (result, valuename, NULL, &type, buf, &size) != ERROR_SUCCESS) + if (RegQueryValueEx (result, valuename, NULL, &type, (LPBYTE)buf, &size) != ERROR_SUCCESS) buf = NULL; *len = size; RegCloseKey (result); @@ -103,10 +130,7 @@ ws_cleanup (void) static void ws_hangup (void) { - redirect_output (_("\n\ -CTRL+Break received, redirecting output to `%s'.\n\ -Execution continued in background.\n\ -You may stop Wget by pressing CTRL+ALT+DELETE.\n")); + log_request_redirect_output ("CTRL+Break"); } void @@ -117,7 +141,7 @@ fork_to_background (void) if (!opt.lfilename) { - opt.lfilename = unique_name (DEFAULT_LOGFILE); + opt.lfilename = unique_name (DEFAULT_LOGFILE, 0); changedp = 1; } printf (_("Continuing in background.\n")); @@ -244,3 +268,30 @@ ws_startup (void) atexit (ws_cleanup); SetConsoleCtrlHandler (ws_handler, TRUE); } + +/* Replacement utime function for buggy Borland C++Builder 5.5 compiler. + (The Borland utime function only works on Windows NT.) */ + +#ifdef HACK_BCC_UTIME_BUG +int borland_utime(const char *path, const struct utimbuf *times) +{ + int fd; + int res; + struct ftime ft; + struct tm *ptr_tm; + + if ((fd = open (path, O_RDWR)) < 0) + return -1; + + ptr_tm = localtime (×->modtime); + ft.ft_tsec = ptr_tm->tm_sec >> 1; + ft.ft_min = ptr_tm->tm_min; + ft.ft_hour = ptr_tm->tm_hour; + ft.ft_day = ptr_tm->tm_mday; + ft.ft_month = ptr_tm->tm_mon + 1; + ft.ft_year = ptr_tm->tm_year - 80; + res = setftime (fd, &ft); + close (fd); + return res; +} +#endif