]> sjero.net Git - wget/commitdiff
[svn] Fix for Borland's broken (on Win9X) `utime' function.
authorabbotti <devnull@localhost>
Tue, 9 Apr 2002 18:29:54 +0000 (11:29 -0700)
committerabbotti <devnull@localhost>
Tue, 9 Apr 2002 18:29:54 +0000 (11:29 -0700)
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>.)

ChangeLog
src/ChangeLog
src/mswindows.c
windows/config.h.bor

index f541d0299fba76af527364c8150cc8f84e21551c..6c00d87dc767436e56c45a00f9a7187349e7b8af 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+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.
index cbaf8c44acb7ff12ab305fc8f4bd7356f35f8d08..f68fe96463ab7fc8d3ddbe0d98104543ac51282e 100644 (file)
@@ -1,3 +1,10 @@
+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.
index 95d89102dd1033e0602d1e87f22b8ca0264514fb..b907b72e2057a05b1d5a15bcdc94f232470e9be7 100644 (file)
@@ -28,6 +28,17 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #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"
@@ -242,3 +253,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 (&times->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
index 60a629e0839709ed666dd81973cddd629608ea89..18ade4c8a66b9506cd511b86972776e265bd7093 100644 (file)
 #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