Submitted by Ian Abbott in <
3CB33A8E.15259.1E52AF@localhost>.
(Based on original patch by Chin-yuan Kuo in
<
20020321015049.16722.qmail@web16202.mail.tpe.yahoo.com>.)
+2002-04-09 Ian Abbott <abbotti@mev.co.uk>
+
+ * windows/config.h.bor: define `HACK_BCC_UTIME_BUG'. Define `utime'
+ as `borland_utime' if `HACK_BCC_UTIME_BUG' is defined.
+
2002-03-26 Ian Abbott <abbotti@mev.co.uk>
* windows/wget.dep: Updated several dependencies for object files.
+2002-04-09 Ian Abbott <abbotti@mev.co.uk>
+
+ * mswindows.c (borland_utime): New function conditionally defined
+ when `HACK_BCC_UTIME_BUG' is defined. A reimplementation of
+ `utime()' as Borland's `utime()' function is broken on Windows 9x
+ systems. (Original patch by Chin-yuan Kuo <sr1111111@yahoo.com.tw>.)
+
2002-04-08 Hrvoje Niksic <hniksic@arsdigita.com>
* ftp.c (ftp_loop): Propagate the result of ftp_retrieve_glob.
#include <assert.h>
#include <errno.h>
+#ifdef HACK_BCC_UTIME_BUG
+# include <io.h>
+# include <fcntl.h>
+# ifdef HAVE_UTIME_H
+# include <utime.h>
+# endif
+# ifdef HAVE_SYS_UTIME_H
+# include <sys/utime.h>
+# endif
+#endif
+
#include "wget.h"
#include "utils.h"
#include "url.h"
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
#define ftruncate chsize
#define inline __inline
+/* Define if the free Borland C++Builder 5.5 command-line compiler is used,
+ because its utime() has a bug. */
+#define HACK_BCC_UTIME_BUG
+
+#ifdef HACK_BCC_UTIME_BUG
+#define utime borland_utime
+#endif
+
/* Define if you have the <alloca.h> header file. */
#undef HAVE_ALLOCA_H