Index: debug.c
===================================================================
RCS file: /cvsroot/squid/squid/src/debug.c,v
retrieving revision 1.10
diff -u -p -r1.10 debug.c
--- debug.c	1 Sep 2002 16:30:42 -0000	1.10
+++ debug.c	1 Sep 2002 18:48:05 -0000
@@ -235,6 +235,9 @@ _db_rotate_log(void)
 	i--;
 	snprintf(from, MAXPATHLEN, "%s.%d", debug_log_file, i - 1);
 	snprintf(to, MAXPATHLEN, "%s.%d", debug_log_file, i);
+#ifdef _SQUID_MSWIN_
+	remove(to);
+#endif
 	rename(from, to);
     }
 /*
@@ -248,6 +251,9 @@ _db_rotate_log(void)
     /* Rotate the current log to .0 */
     if (Config.Log.rotateNumber > 0) {
 	snprintf(to, MAXPATHLEN, "%s.%d", debug_log_file, 0);
+#ifdef _SQUID_MSWIN_
+	remove(to);
+#endif
 	rename(debug_log_file, to);
     }
     /* Close and reopen the log.  It may have been renamed "manually"
Index: disk.c
===================================================================
RCS file: /cvsroot/squid/squid/src/disk.c,v
retrieving revision 1.11
diff -u -p -r1.11 disk.c
--- disk.c	1 Sep 2002 16:30:42 -0000	1.11
+++ disk.c	1 Sep 2002 18:48:06 -0000
@@ -62,6 +62,9 @@ file_open(const char *path, int mode)
     int fd;
     if (FILE_MODE(mode) == O_WRONLY)
 	mode |= O_APPEND;
+#ifdef _SQUID_MSWIN_ 
+    mode |= _O_BINARY;
+#endif
     mode |= SQUID_NONBLOCK;
     errno = 0;
     fd = open(path, mode, 0644);
Index: fd.c
===================================================================
RCS file: /cvsroot/squid/squid/src/fd.c,v
retrieving revision 1.8
diff -u -p -r1.8 fd.c
--- fd.c	25 Dec 2001 12:38:51 -0000	1.8
+++ fd.c	1 Sep 2002 18:48:06 -0000
@@ -37,6 +37,12 @@
 
 int default_read_method(int, char *, int);
 int default_write_method(int, const char *, int);
+#ifdef _SQUID_MSWIN_
+int socket_read_method(int, char *, int);
+int socket_write_method(int, const char *, int);
+int file_read_method(int, char *, int);
+int file_write_method(int, const char *, int);
+#endif
 
 const char *fdTypeStr[] =
 {
@@ -93,6 +99,31 @@ fd_close(int fd)
     F->timeout = 0;
 }
 
+#ifdef _SQUID_MSWIN_
+int
+socket_read_method(int fd, char *buf, int len)
+{
+    return (recv(fd, buf, len, 0));
+}
+
+int
+file_read_method(int fd, char *buf, int len)
+{
+    return (_read(fd, buf, len));
+}
+
+int
+socket_write_method(int fd, const char *buf, int len)
+{
+    return (send(fd, buf, len, 0));
+}
+
+file_write_method(int fd, const char *buf, int len)
+{
+    return (_write(fd, buf, len));
+}
+#endif
+
 int
 default_read_method(int fd, char *buf, int len)
 {
@@ -119,8 +150,26 @@ fd_open(int fd, unsigned int type, const
     debug(51, 3) ("fd_open FD %d %s\n", fd, desc);
     F->type = type;
     F->flags.open = 1;
+#ifdef _SQUID_MSWIN_
+    switch (type) {
+    case FD_SOCKET:
+    case FD_PIPE:
+	F->read_method = &socket_read_method;
+	F->write_method = &socket_write_method;
+	break;
+    case FD_FILE:
+    case FD_LOG:
+	F->read_method = &file_read_method;
+	F->write_method = &file_write_method;
+	break;
+    default:
+	F->read_method = &default_read_method;
+	F->write_method = &default_write_method;
+    }
+#else
     F->read_method = &default_read_method;
     F->write_method = &default_write_method;
+#endif
     fdUpdateBiggest(fd, 1);
     if (desc)
 	xstrncpy(F->desc, desc, FD_DESC_SZ);

