* added a simulate write() syscall which uses send() to work on sockets
authorBernd Petrovitsch <bernd@firmix.at>
Wed, 9 May 2007 00:30:04 +0000 (00:30 +0000)
committerBernd Petrovitsch <bernd@firmix.at>
Wed, 9 May 2007 00:30:04 +0000 (00:30 +0000)
src/win32/compat.c
src/win32/unistd.h

index 4f99120..be208da 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: compat.c,v 1.14 2007/05/08 23:18:55 bernd67 Exp $
+ * $Id: compat.c,v 1.15 2007/05/09 00:30:04 bernd67 Exp $
  */
 
 /*
@@ -522,3 +522,19 @@ int isatty(int fd)
   return 0;
 #endif
 }
+
+#define CHUNK_SIZE 512
+
+/* and we emulate a real write(2) syscall using send() */
+ssize_t write(int fd, const void *buf, size_t count)
+{
+  size_t written = 0;
+  while (written < count) {
+    ssize_t rc = send(fd, buf+written, min(count-written, CHUNK_SIZE), 0);
+    if (rc <= 0) {
+      break;
+    }
+    written += rc;
+  }
+  return written;
+}
index 2ea00f0..25bea63 100644 (file)
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: unistd.h,v 1.5 2004/11/21 01:21:10 tlopatic Exp $
+ * $Id: unistd.h,v 1.6 2007/05/09 00:30:04 bernd67 Exp $
  */
 
 #if !defined TL_UNISTD_H_INCLUDED
 
+#include <stddef.h>
+
 #define TL_UNISTD_H_INCLUDED
 
 void sleep(unsigned int Sec);
@@ -52,9 +54,12 @@ char *StrError(unsigned int ErrNo);
 
 int getpid(void);
 
-#define IPTOS_TOS(x) (x & 0x1e)
-#define IPTOS_PREC(x) (x & 0xe0)
+#define IPTOS_TOS(x) ((x) & 0x1e)
+#define IPTOS_PREC(x) ((x) & 0xe0)
 
 int isatty(int fd);
 
+typedef long ssize_t;
+ssize_t write(int fd, const void *buf, size_t count);
+
 #endif