Fix getnameinfo() and getaddrinfo() #ifdefed code
authorStefan Vogel <sv@exept.de>
Mon, 11 Mar 2013 14:47:26 +0100
changeset 14852 f8cf16374fd5
parent 14851 7be11ef3d914
child 14853 63ffca691137
Fix getnameinfo() and getaddrinfo() #ifdefed code
Win32OperatingSystem.st
--- a/Win32OperatingSystem.st	Mon Mar 11 13:47:59 2013 +0100
+++ b/Win32OperatingSystem.st	Mon Mar 11 14:47:26 2013 +0100
@@ -177,7 +177,7 @@
 
 #include "stxOSDefs.h"
 #include <Ws2TcpIp.h>   // needed for getNameInfo() et al
- 
+
 # ifdef COMPILE_FOR_WIN95
 /*
  * ensure that ST/X runs on NT, 95 and 98
@@ -6804,9 +6804,9 @@
     list size == 0 ifTrue:[^ self ].
 
     processGroupHandleOrPid isInteger ifTrue:[
-        pid := processGroupHandleOrPid
+	pid := processGroupHandleOrPid
     ] ifFalse:[
-        pid := processGroupHandleOrPid pid.
+	pid := processGroupHandleOrPid pid.
     ].
     groupsToTerminate := Set with:pid.
     list := list asSet.
@@ -6814,19 +6814,19 @@
     "/ Transcript show:'terminate group '; showCR:pid.
     anyMore := true.
     [anyMore] whileTrue:[
-        anyMore := false.
-        list do:[:anOSProcess |
-            |pid|
-
-            (groupsToTerminate includes:anOSProcess parentPid) ifTrue:[
-                pid := anOSProcess pid.
-                groupsToTerminate add:pid.
-                "/ Transcript show:'terminate '; showCR:pid.
-                self terminateProcess:( pid ).
-                list remove:anOSProcess.        
-                anyMore := true.
-            ].
-        ].
+	anyMore := false.
+	list do:[:anOSProcess |
+	    |pid|
+
+	    (groupsToTerminate includes:anOSProcess parentPid) ifTrue:[
+		pid := anOSProcess pid.
+		groupsToTerminate add:pid.
+		"/ Transcript show:'terminate '; showCR:pid.
+		self terminateProcess:( pid ).
+		list remove:anOSProcess.
+		anyMore := true.
+	    ].
+	].
     ].
 ! !
 
@@ -15929,14 +15929,14 @@
 # ifdef DO_WRAP_CALLS
 	do {
 	    __threadErrno = 0;
-	    res = STX_WSA_NOINT_CALL4( "getaddrinfo", getaddrinfo, __hostName, __serviceName, &hints, &info);
-	} while ((res < 0) && (__threadErrno == EINTR));
+	    ret = STX_WSA_NOINT_CALL4( "getaddrinfo", getaddrinfo, __hostName, __serviceName, &hints, &info);
+	} while ((ret < 0) && (__threadErrno == EINTR));
 # else
 	__BEGIN_INTERRUPTABLE__
 	ret = getaddrinfo(__hostName, __serviceName, &hints, &info);
 	__END_INTERRUPTABLE__
 # endif
-    } while (ret == EAI_SYSTEM && errno == EINTR);
+    } while (ret != 0 && __threadErrno == EINTR);
     if (ret != 0) {
 	switch (ret) {
 	case EAI_FAMILY:
@@ -15954,12 +15954,6 @@
 	case EAI_SERVICE:
 	    error = @symbol(unknownService);
 	    break;
-	case EAI_ADDRFAMILY :
-	    error = @symbol(unknownHostForProtocol);
-	    break;
-	case EAI_NODATA:
-	    error = @symbol(noAddress);
-	    break;
 	case EAI_MEMORY:
 	    error = @symbol(allocationFailure);
 	    break;
@@ -15969,9 +15963,6 @@
 	case EAI_AGAIN:
 	    error = @symbol(tryAgain);
 	    break;
-	case EAI_SYSTEM:
-	    error = @symbol(systemError);
-	    break;
 	default:
 	    error = @symbol(unknownError);
 	}
@@ -16306,11 +16297,19 @@
     {
 	bp = (char *)(__byteArrayVal(socketAddress));
 	bp += nInstBytes;
+# ifdef DO_WRAP_CALLS
+	do {
+	    __threadErrno = 0;
+	    ret = STX_WSA_NOINT_CALL7( "getnameinfo", getnameinfo, (struct sockaddr *)bp, sockAddrSize, hp, hsz, sp, ssz, __flags);
+	} while ((ret < 0) && (__threadErrno == EINTR));
+# else
 	__BEGIN_INTERRUPTABLE__
 	ret = getnameinfo((struct sockaddr *)bp, sockAddrSize,
 			  hp, hsz, sp, ssz, __flags);
 	__END_INTERRUPTABLE__
-    } while (ret == EAI_SYSTEM && errno == EINTR);
+# endif
+    } while (ret != 0 && __threadErrno == EINTR);
+
     if (ret != 0) {
 	switch (ret) {
 	case EAI_FAMILY:
@@ -16328,12 +16327,6 @@
 	case EAI_SERVICE:
 	    error = @symbol(unknownService);
 	    break;
-	case EAI_ADDRFAMILY :
-	    error = @symbol(unknownHostForProtocol);
-	    break;
-	case EAI_NODATA:
-	    error = @symbol(noAddress);
-	    break;
 	case EAI_MEMORY:
 	    error = @symbol(allocationFailure);
 	    break;
@@ -16343,9 +16336,6 @@
 	case EAI_AGAIN:
 	    error = @symbol(tryAgain);
 	    break;
-	case EAI_SYSTEM:
-	    error = @symbol(systemError);
-	    break;
 	default:
 	    error = @symbol(unknownError);
 	}
@@ -16531,11 +16521,11 @@
 !Win32OperatingSystem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.454 2013-03-11 10:18:23 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.455 2013-03-11 13:47:26 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.454 2013-03-11 10:18:23 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.455 2013-03-11 13:47:26 stefan Exp $'
 !
 
 version_SVN