msvc filehandle
authorClaus Gittinger <cg@exept.de>
Tue, 20 Mar 2007 20:29:47 +0100
changeset 10469 0411b84d6a6a
parent 10468 b96bf5eaa0ec
child 10470 2ac2ee2e9700
msvc filehandle
ExternalStream.st
--- a/ExternalStream.st	Tue Mar 20 14:14:03 2007 +0100
+++ b/ExternalStream.st	Tue Mar 20 20:29:47 2007 +0100
@@ -208,14 +208,11 @@
 #endif
 
 #ifdef WIN32
-//# define __HANDLEVal(o)         (HFILE)(__externalAddressVal(o))
-int _rtl_read();
-int _rtl_write();
-
-int _rtl_read();
-int _rtl_write();
 
 # ifdef __BORLANDC__
+   int _rtl_read();
+   int _rtl_write();
+
 #  define READ(ret,f, cp, n) \
       { int __res;\
 	HANDLE h; \
@@ -237,26 +234,38 @@
 # else /* MSC */
 #  define READ(ret,f, cp, n) \
       { int __res;\
+	int fd; \
 	HANDLE h; \
-	h = _get_osfhandle(fileno(f)); \
-	if (ioctlsocket((SOCKET)h,FIONREAD,&__res)==0) \
-	  (ret) = __STX_WSA_NOINT_CALL4("recv", recv, h, (cp), (n), 0);\
+	fd = fileno(f); \
+	if (ioctlsocket((SOCKET)fd,FIONREAD,&__res)==0) \
+	  (ret) = __STX_WSA_NOINT_CALL4("recv", recv, fd, (cp), (n), 0);\
 	else { \
-	  (ret) = __STX_API_NOINT_CALL5("ReadFile", ReadFile, h, (cp), (n), &__res, 0);\
-	  if (ret) \
-	    ret = __res; \
+	  h = _get_osfhandle(fd); \
+	  if (ioctlsocket((SOCKET)h,FIONREAD,&__res)==0) \
+	    (ret) = __STX_WSA_NOINT_CALL4("recv", recv, h, (cp), (n), 0);\
+	  else { \
+	    (ret) = __STX_API_NOINT_CALL5("ReadFile", ReadFile, h, (cp), (n), &__res, 0);\
+	    if (ret) \
+	      ret = __res; \
+	  } \
 	} \
       }
 #  define WRITE(ret,f, cp, n) \
       { int __res;\
+	int fd; \
 	HANDLE h; \
-	h = _get_osfhandle(fileno(f)); \
-	if (ioctlsocket((SOCKET)h,FIONREAD,&__res)==0) \
-	  (ret) = __STX_WSA_NOINT_CALL4("send", send, h, (cp), (n), 0);\
+	fd = fileno(f); \
+	if (ioctlsocket((SOCKET)fd,FIONREAD,&__res)==0) \
+	  (ret) = __STX_WSA_NOINT_CALL4("send", send, fd, (cp), (n), 0);\
 	else {\
-	  (ret) = __STX_API_NOINT_CALL5("WriteFile", WriteFile, h, (cp), (n), &__res, 0);\
-	  if (ret) \
-	    ret = __res; \
+	  h = _get_osfhandle(fd); \
+	  if (ioctlsocket((SOCKET)h,FIONREAD,&__res)==0) \
+	    (ret) = __STX_WSA_NOINT_CALL4("send", send, h, (cp), (n), 0);\
+	  else {\
+	    (ret) = __STX_API_NOINT_CALL5("WriteFile", WriteFile, h, (cp), (n), &__res, 0);\
+	    if (ret) \
+	      ret = __res; \
+	  } \
 	} \
       }
 # endif /* MSC */
@@ -5902,7 +5911,7 @@
 !ExternalStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.305 2007-03-15 17:34:28 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.306 2007-03-20 19:29:47 cg Exp $'
 ! !
 
 ExternalStream initialize!