This is the first of some splitted native Windows patches grouped by functionality.
This patch add the native Windows support for the correct file and socket FD handling methods.
Regards
Guido
-
=======================================================
Serassio Guido
Via Albenga, 11/4 10134 - Torino - ITALY
E-mail: [EMAIL PROTECTED]
WWW: http://www.serassio.it
Index: fd.cc
===================================================================
RCS file: /cvsroot/squid/squid3/src/fd.cc,v
retrieving revision 1.4
diff -u -p -r1.4 fd.cc
--- fd.cc 23 Jan 2003 03:14:42 -0000 1.4
+++ fd.cc 1 Feb 2003 11:32:42 -0000
@@ -38,6 +38,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[] =
{
@@ -94,6 +100,32 @@ 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));
+}
+
+int
+file_write_method(int fd, const char *buf, int len)
+{
+ return (_write(fd, buf, len));
+}
+#else
int
default_read_method(int fd, char *buf, int len)
{
@@ -105,6 +137,7 @@ default_write_method(int fd, const char
{
return (write(fd, buf, len));
}
+#endif
void
fd_open(int fd, unsigned int type, const char *desc)
@@ -120,8 +153,25 @@ 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:
+ fatalf("fd_open(): unknown FD type - FD#: %i, type: %u, desc %s\n", fd, type,
+desc);
+ }
+#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);
