moved all socket constant queries from SocketHandle
authorClaus Gittinger <cg@exept.de>
Tue, 15 Jul 2003 14:19:45 +0200
changeset 7509 c8964822d8fd
parent 7508 e9783b22b7dc
child 7510 46a848d466b5
moved all socket constant queries from SocketHandle (which is OS-specific) to OS. (code is shared between Win32 and Unix, but SocketHandle is not.)
AbstractOperatingSystem.st
UnixOperatingSystem.st
--- a/AbstractOperatingSystem.st	Mon Jul 14 22:21:31 2003 +0200
+++ b/AbstractOperatingSystem.st	Tue Jul 15 14:19:45 2003 +0200
@@ -21,6 +21,14 @@
 	category:'System-Support'
 !
 
+!AbstractOperatingSystem primitiveDefinitions!
+%{
+
+#include "stxOSDefs.h"
+
+%}
+! !
+
 !AbstractOperatingSystem class methodsFor:'documentation'!
 
 copyright
@@ -3887,6 +3895,864 @@
     "Created: / 12.6.1998 / 16:30:29 / cg"
 ! !
 
+!AbstractOperatingSystem class methodsFor:'queries - sockets'!
+
+domainCodeOf:aSymbolOrInteger
+    "return the numeric AF_xxx code of a given symbolic domain name.
+     Return nil for invalid or unsupported domains.
+     For backward compatibility, the obsolete (non-AF-prefixed) names
+     are still supported for a while - this support will vanish."
+
+    |domainCode|
+
+%{  /*NOCONTEXT*/
+
+    if (__isSmallInteger(aSymbolOrInteger) || aSymbolOrInteger == nil) {
+        RETURN (aSymbolOrInteger);
+    }
+
+#ifdef AF_INET
+    else if ((aSymbolOrInteger == @symbol(inet)) || (aSymbolOrInteger == @symbol(AF_INET))) 
+       domainCode = __MKSMALLINT(AF_INET);
+#endif
+#ifdef AF_INET6
+    else if ((aSymbolOrInteger == @symbol(inet6)) || (aSymbolOrInteger == @symbol(AF_INET6)))
+       domainCode = __MKSMALLINT(AF_INET6);
+#endif
+#ifdef AF_UNIX
+    else if ((aSymbolOrInteger == @symbol(unix)) || (aSymbolOrInteger == @symbol(AF_UNIX)))
+       domainCode = __MKSMALLINT(AF_UNIX);
+#endif
+#ifdef AF_APPLETALK
+    else if ((aSymbolOrInteger == @symbol(appletalk)) || (aSymbolOrInteger == @symbol(AF_APPLETALK)))
+       domainCode = __MKSMALLINT(AF_APPLETALK);
+#endif
+#ifdef AF_DECnet
+    else if ((aSymbolOrInteger == @symbol(decnet)) || (aSymbolOrInteger == @symbol(AF_DECnet)))
+       domainCode = __MKSMALLINT(AF_DECnet);
+#endif
+#ifdef AF_NS
+    else if (aSymbolOrInteger == @symbol(AF_NS))
+       domainCode = __MKSMALLINT(AF_NS);
+#endif
+#ifdef AF_X25
+    else if (aSymbolOrInteger == @symbol(AF_X25))
+       domainCode = __MKSMALLINT(AF_X25);
+#endif
+#ifdef AF_SNA
+    else if (aSymbolOrInteger == @symbol(AF_SNA)) 
+       domainCode = __MKSMALLINT(AF_SNA);
+#endif
+#ifdef AF_RAW
+    else if ((aSymbolOrInteger == @symbol(raw)) || (aSymbolOrInteger == @symbol(AF_RAW)))
+       domainCode = __MKSMALLINT(AF_RAW);
+#endif
+#ifdef AF_ISO
+    else if ((aSymbolOrInteger == @symbol(iso)) || (aSymbolOrInteger == @symbol(AF_ISO)))
+       domainCode = __MKSMALLINT(AF_ISO);
+#endif
+#ifdef AF_NETBIOS
+    else if (aSymbolOrInteger == @symbol(AF_NETBIOS))
+       domainCode = __MKSMALLINT(AF_NETBIOS);
+#endif
+#ifdef AF_NETBEUI
+    else if (aSymbolOrInteger == @symbol(AF_NETBEUI))
+       domainCode = __MKSMALLINT(AF_NETBEUI);
+#endif
+#ifdef AF_IPX
+    else if (aSymbolOrInteger == @symbol(AF_IPX))
+       domainCode = __MKSMALLINT(AF_IPX);
+#endif
+#ifdef AF_AX25
+    else if (aSymbolOrInteger == @symbol(AF_AX25))
+       domainCode = __MKSMALLINT(AF_AX25);
+#endif
+#ifdef AF_NETROM
+    else if (aSymbolOrInteger == @symbol(AF_NETROM))
+       domainCode = __MKSMALLINT(AF_NETROM);
+#endif
+#ifdef AF_BRIDGE
+    else if (aSymbolOrInteger == @symbol(AF_BRIDGE))
+       domainCode = __MKSMALLINT(AF_BRIDGE);
+#endif
+#ifdef AF_BSC
+    else if (aSymbolOrInteger == @symbol(AF_BSC))
+       domainCode = __MKSMALLINT(AF_BSC);
+#endif
+#ifdef AF_ROSE
+    else if (aSymbolOrInteger == @symbol(AF_ROSE))
+       domainCode = __MKSMALLINT(AF_ROSE);
+#endif
+#ifdef AF_IRDA
+    else if ((aSymbolOrInteger == @symbol(irda)) || (aSymbolOrInteger == @symbol(AF_IRDA)))
+       domainCode = __MKSMALLINT(AF_IRDA);
+#endif
+#ifdef AF_BAN
+    else if (aSymbolOrInteger == @symbol(AF_BAN))
+       domainCode = __MKSMALLINT(AF_BAN);
+#endif
+#ifdef AF_VOICEVIEW
+    else if (aSymbolOrInteger == @symbol(AF_VOICEVIEW))
+       domainCode = __MKSMALLINT(AF_VOICEVIEW);
+#endif
+#ifdef AF_ATM
+    else if (aSymbolOrInteger == @symbol(AF_ATM))
+       domainCode = __MKSMALLINT(AF_ATM);
+#endif
+#ifdef AF_ATMPVC
+    else if ((aSymbolOrInteger == @symbol(atmpvc)) || (aSymbolOrInteger == @symbol(AF_ATMPVC)))
+       domainCode = __MKSMALLINT(AF_ATMPVC);
+#endif
+#ifdef AF_ATMSVC
+    else if (aSymbolOrInteger == @symbol(AF_ATMSVC))
+       domainCode = __MKSMALLINT(AF_ATMSVC);
+#endif
+#ifdef AF_SECURITY
+    else if (aSymbolOrInteger == @symbol(AF_SECURITY))
+       domainCode = __MKSMALLINT(AF_SECURITY);
+#endif
+#ifdef AF_KEY
+    else if (aSymbolOrInteger == @symbol(AF_KEY))
+       domainCode = __MKSMALLINT(AF_KEY);
+#endif
+#ifdef AF_NETLINK
+    else if (aSymbolOrInteger == @symbol(AF_NETLINK))
+       domainCode = __MKSMALLINT(AF_NETLINK);
+#endif
+#ifdef AF_PACKET
+    else if (aSymbolOrInteger == @symbol(AF_PACKET))
+       domainCode = __MKSMALLINT(AF_PACKET);
+#endif
+#ifdef AF_ASH
+    else if (aSymbolOrInteger == @symbol(AF_ASH))
+       domainCode = __MKSMALLINT(AF_ASH);
+#endif
+#ifdef AF_ECONET
+    else if (aSymbolOrInteger == @symbol(AF_ECONET))
+       domainCode = __MKSMALLINT(AF_ECONET);
+#endif
+%}.
+
+    ^ domainCode.
+
+    "
+     self domainCodeOf:#inet      
+     self domainCodeOf:#unix      
+     self domainCodeOf:#inet6     
+     self domainCodeOf:#appletalk  
+     self domainCodeOf:#decnet  
+     self domainCodeOf:#AF_INET    
+    "
+!
+
+domainSymbolOf:anInteger
+    "return the symbolic domainName of a given numeric AF_xxx code.
+     Return nil for invalid or unsupported domains."
+
+    |domainSymbol|
+
+%{ /*NOCONTEXT*/            
+
+    if (__isSmallInteger(anInteger)) {
+        switch(__intVal(anInteger)) {
+#ifdef AF_INET
+        case AF_INET:
+            domainSymbol = @symbol(AF_INET);
+            break;
+#endif
+#ifdef AF_INET6
+        case AF_INET6:
+            domainSymbol = @symbol(AF_INET6);
+            break;
+#endif
+#ifdef AF_UNIX
+        case AF_UNIX:
+            domainSymbol = @symbol(AF_UNIX);
+            break;
+#endif
+#ifdef AF_APPLETALK
+        case AF_APPLETALK:
+            domainSymbol = @symbol(AF_APPLETALK);
+            break;
+#endif
+#ifdef AF_DECnet
+        case AF_DECnet:
+            domainSymbol = @symbol(AF_DECnet);
+            break;
+#endif
+#ifdef AF_NS
+        case AF_NS:
+            domainSymbol = @symbol(AF_NS);
+            break;
+#endif
+#ifdef AF_X25
+        case AF_X25:
+            domainSymbol = @symbol(AF_X25);
+            break;
+#endif
+#ifdef AF_SNA
+        case AF_SNA:
+            domainSymbol = @symbol(AF_SNA);
+            break;
+#endif
+#ifdef AF_RAW
+        case AF_RAW:
+            domainSymbol = @symbol(AF_RAW);
+            break;
+#endif
+#ifdef AF_ISO
+        case AF_ISO:
+            domainSymbol = @symbol(AF_ISO);
+            break;
+#endif
+#ifdef AF_NETBIOS
+        case AF_NETBIOS:
+            domainSymbol = @symbol(AF_NETBIOS);
+            break;
+#endif
+#ifdef AF_IPX
+        case AF_IPX:
+            domainSymbol = @symbol(AF_IPX);
+            break;
+#endif
+#ifdef AF_AX25
+        case AF_AX25:
+            domainSymbol = @symbol(AF_AX25);
+            break;
+#endif
+#ifdef AF_NETROM
+        case AF_NETROM:
+            domainSymbol = @symbol(AF_NETROM);
+            break;
+#endif
+#ifdef AF_BRIDGE
+        case AF_BRIDGE:
+            domainSymbol = @symbol(AF_BRIDGE);
+            break;
+#endif
+#ifdef AF_BSC
+        case AF_BSC:
+            domainSymbol = @symbol(AF_BSC);
+            break;
+#endif
+#ifdef AF_ROSE
+        case AF_ROSE:
+            domainSymbol = @symbol(AF_ROSE);
+            break;
+#endif
+#ifdef AF_IRDA
+        case AF_IRDA:
+            domainSymbol = @symbol(AF_IRDA);
+            break;
+#endif
+#ifdef AF_BAN
+        case AF_BAN:
+            domainSymbol = @symbol(AF_BAN);
+            break;
+#endif
+#ifdef AF_VOICEVIEW
+        case AF_VOICEVIEW:
+            domainSymbol = @symbol(AF_VOICEVIEW);
+            break;
+#endif
+#ifdef AF_ATM
+        case AF_ATM:
+            domainSymbol = @symbol(AF_ATM);
+            break;
+#endif
+#ifdef AF_ATMPVC
+        case AF_ATMPVC:
+            domainSymbol = @symbol(AF_ATMPVC);
+            break;
+#endif
+#ifdef AF_ATMSVC
+        case AF_ATMSVC:
+            domainSymbol = @symbol(AF_ATMSVC);
+            break;
+#endif
+#ifdef AF_SECURITY
+        case AF_SECURITY:
+            domainSymbol = @symbol(AF_SECURITY);
+            break;
+#endif
+#ifdef AF_KEY
+        case AF_KEY:
+            domainSymbol = @symbol(AF_KEY);
+            break;
+#endif
+#ifdef AF_NETLINK
+        case AF_NETLINK:
+            domainSymbol = @symbol(AF_NETLINK);
+            break;
+#endif
+#ifdef AF_PACKET
+        case AF_PACKET:
+            domainSymbol = @symbol(AF_PACKET);
+            break;
+#endif
+#ifdef AF_ASH
+        case AF_ASH:
+            domainSymbol = @symbol(AF_ASH);
+            break;
+#endif
+#ifdef AF_ECONET
+        case AF_ECONET:
+            domainSymbol = @symbol(AF_ECONET);
+            break;
+#endif
+        }
+    }
+%}.
+
+    ^ domainSymbol.
+
+    "
+     self domainSymbolOf:(self domainCodeOf:#inet)  
+     self domainSymbolOf:(self domainCodeOf:#inet6) 
+     self domainSymbolOf:(self domainCodeOf:#unix)  
+     self domainSymbolOf:(self domainCodeOf:#appletalk) 
+     self domainSymbolOf:(self domainCodeOf:#decnet) 
+     self domainSymbolOf:(self domainCodeOf:#raw) 
+    "
+!
+
+socketAddressSizeOfDomain:aSymbolOrInteger
+    "Return the os-specific size of a socket address for a domain aSymbolOrInteger.
+     Return nil, if unknown or unsupported."
+
+    |socketSize domainCode|
+
+    domainCode := OperatingSystem domainCodeOf:aSymbolOrInteger.
+
+%{
+    if (__isSmallInteger(domainCode)) {
+        switch (__intVal(domainCode)) {
+#ifdef AF_INET
+            case AF_INET:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_in) );
+                break;
+#endif
+#ifdef AF_INET6
+            case AF_INET6:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_in6) );
+                break;
+#endif
+#ifdef AF_UNIX
+            case AF_UNIX:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_un) );
+                break;
+#endif
+#ifdef AF_APPLETALK
+            case AF_APPLETALK:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_at) );
+                break;
+#endif
+#ifdef AF_DECnet
+            case AF_DECnet:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_dn) );
+                break;
+#endif
+#ifdef AF_NS
+            case AF_NS:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_ns) );
+                break;
+#endif
+#ifdef AF_X25
+            case AF_X25:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_x25) );
+                break;
+#endif
+#ifdef AF_SNA
+            case AF_SNA:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_sna) );
+                break;
+#endif
+#ifdef AF_RAW
+            case AF_RAW:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_raw) );
+                break;
+#endif
+#ifdef AF_ISO
+            case AF_ISO:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_iso) );
+                break;
+#endif
+#ifdef AF_NETBIOS
+            case AF_NETBIOS:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_netbios) );
+                break;
+#endif
+#ifdef AF_NETBEUI
+            case AF_NETBEUI:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_netbeui) );
+                break;
+#endif
+#ifdef AF_IPX
+            case AF_IPX:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_ipx) );
+                break;
+#endif
+#ifdef AF_AX25
+            case AF_AX25:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_ax25) );
+                break;
+#endif
+#ifdef AF_NETROM
+            case AF_NETROM:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_netrom) );
+                break;
+#endif
+#ifdef AF_BRIDGE
+            case AF_BRIDGE:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_bridge) );
+                break;
+#endif
+#ifdef AF_BSC
+            case AF_BSC:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_bsc) );
+                break;
+#endif
+#ifdef AF_ROSE
+            case AF_ROSE:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_rose) );
+                break;
+#endif
+#ifdef AF_IRDA
+            case AF_IRDA:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_irda) );
+                break;
+#endif
+#ifdef AF_BAN
+            case AF_BAN:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_ban) );
+                break;
+#endif
+#ifdef AF_VOICEVIEW
+            case AF_VOICEVIEW:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_voiceview) );
+                break;
+#endif
+#ifdef AF_ATM
+            case AF_ATM:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_atm) );
+                break;
+#endif
+#ifdef AF_ATMPVC
+            case AF_ATMPVC:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_atmpvc) );
+                break;
+#endif
+#ifdef AF_ATMSVC
+            case AF_ATMSVC:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_atmsvc) );
+                break;
+#endif
+#ifdef AF_NETLINK
+            case AF_NETLINK:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_netlink) );
+                break;
+#endif
+#ifdef AF_PACKET
+            case AF_PACKET:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_packet) );
+                break;
+#endif
+#ifdef AF_ASH
+            case AF_ASH:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_ash) );
+                break;
+#endif
+#ifdef AF_ECONET
+            case AF_ECONET:        
+                socketSize = __MKSMALLINT( sizeof(struct sockaddr_eco) );
+                break;
+#endif
+        }
+    }
+%}.
+    ^ socketSize
+
+    "
+     self socketAddressSizeOfDomain:#'AF_INET' 
+     self socketAddressSizeOfDomain:#'AF_UNIX'  
+     self socketAddressSizeOfDomain:#'Foo' 
+    "
+!
+
+socketTypeCodeOf:aSymbolOrInteger
+    "return the numeric SOCK_xxx code of a given symbolic socket type name.
+     Return nil for invalid or unsupported socket types."
+
+    |typeCode|
+
+%{   /*NOCONTEXT*/
+
+     if (__isSmallInteger(aSymbolOrInteger) || aSymbolOrInteger == nil) {
+        typeCode = aSymbolOrInteger;
+     }
+
+#ifdef SOCK_STREAM
+     else if ((aSymbolOrInteger == @symbol(stream)) || (aSymbolOrInteger == @symbol(SOCK_STREAM)))
+        typeCode = __MKSMALLINT(SOCK_STREAM);
+#endif
+#ifdef SOCK_DGRAM
+     else if ((aSymbolOrInteger == @symbol(datagram)) || (aSymbolOrInteger == @symbol(SOCK_DGRAM)))
+        typeCode = __MKSMALLINT(SOCK_DGRAM);
+#endif
+#ifdef SOCK_RAW
+     else if ((aSymbolOrInteger == @symbol(raw)) || (aSymbolOrInteger == @symbol(SOCK_RAW))) 
+        typeCode = __MKSMALLINT(SOCK_RAW);
+#endif
+#ifdef SOCK_RDM
+     else if ((aSymbolOrInteger == @symbol(rdm)) || (aSymbolOrInteger == @symbol(SOCK_RDM))) 
+        typeCode = __MKSMALLINT(SOCK_RDM);
+#endif
+#ifdef SOCK_SEQPACKET
+     else if ((aSymbolOrInteger == @symbol(seqpacket)) || (aSymbolOrInteger == @symbol(SOCK_SEQPACKET))) 
+        typeCode = __MKSMALLINT(SOCK_SEQPACKET);
+#endif
+#ifdef SOCK_PACKET
+     else if ((aSymbolOrInteger == @symbol(packet)) || (aSymbolOrInteger == @symbol(SOCK_PACKET))) 
+        typeCode = __MKSMALLINT(SOCK_PACKET);
+#endif
+%}.
+
+    ^ typeCode.
+
+    "
+     self socketTypeCodeOf:#stream
+     self socketTypeCodeOf:#datagram
+     self socketTypeCodeOf:#raw
+    "
+!
+
+socketTypeSymbolOf:anInteger
+    "return the symbolic typeName of a given numeric SOCK_xxx socket type code.
+     Return nil for invalid or unsupported socket types."
+
+    |socketTypeSymbol|
+
+%{  /*NOCONTEXT*/            
+
+    if (__isSmallInteger(anInteger)) {
+        switch(__intVal(anInteger)) {
+#ifdef SOCK_STREAM
+        case SOCK_STREAM:
+            socketTypeSymbol = @symbol(SOCK_STREAM);
+            break;
+#endif
+#ifdef SOCK_DGRAM
+        case SOCK_DGRAM:
+            socketTypeSymbol = @symbol(SOCK_DGRAM);
+            break;
+#endif
+#ifdef SOCK_RAW
+        case SOCK_RAW:
+            socketTypeSymbol = @symbol(SOCK_RAW);
+            break;
+#endif
+#ifdef SOCK_RDM
+        case SOCK_RDM:
+            socketTypeSymbol = @symbol(SOCK_RDM);
+            break;
+#endif
+#ifdef SOCK_SEQPACKET
+        case SOCK_SEQPACKET:
+            socketTypeSymbol = @symbol(SOCK_SEQPACKET);
+            break;
+#endif
+#ifdef SOCK_PACKET
+        case SOCK_PACKET:
+            socketTypeSymbol = @symbol(SOCK_PACKET);
+            break;
+#endif
+        }
+    }
+%}.
+    ^ socketTypeSymbol.
+!
+
+supportedProtocolFamilies
+    "return a collection of supported protocol families.
+     This list specifies what the Socket class supports -
+     socket creation may still fail, if your system was built without it.
+     For backward compatibility, the returned list includes the old
+     (non-AF-prefixed) symbols; these will vanish."
+
+    |list|
+
+    list := OrderedCollection new.
+
+%{
+#ifdef AF_INET
+%}.
+    list add:#AF_INET.
+    list add:#inet.
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_UNIX
+%}.
+    list add:#AF_UNIX.
+    list add:#unix.
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_INET6
+%}.
+    list add:#AF_INET6.   "/ internet v6
+    list add:#inet6.   
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_APPLETALK
+%}.
+    list add:#AF_APPLETALK.  
+    list add:#appletalk.  
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_DECnet
+%}.
+    list add:#AF_DECnet.  
+    list add:#decnet.  
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_NS
+%}.
+    list add:#AF_NS.     "/ Xerox XNS
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_X25
+%}.
+    list add:#AF_X25.     
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_SNA
+%}.
+    list add:#AF_SNA.     "/ IBM SNA
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_RAW
+%}.
+    list add:#AF_RAW.     "/ RAW packets
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_ISO
+%}.
+    list add:#AF_ISO.    
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_NETBIOS
+%}.
+    list add:#AF_NETBIOS.
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_IPX
+%}.
+    list add:#AF_IPX.     "/ Novell IPX
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_AX25
+%}.
+    list add:#AF_AX25.    "/ Amateur Radio AX.25
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_NETROM
+%}.
+    list add:#AF_NETROM.  "/ Amateur Radio NET/ROM
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_BRIDGE
+%}.
+    list add:#AF_BRIDGE.  "/ multiprotocol bridge
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_BSC
+%}.
+    list add:#AF_BSC.     "/ BISYNC 2780/3780
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_ROSE
+%}.
+    list add:#AF_ROSE.    "/ Amateur Radio X.25 PLP
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_IRDA
+%}.
+    list add:#AF_IRDA.  "/ infrared
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_NETLINK
+%}.
+    list add:#AF_NETLINK.  
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_NETBEUI
+%}.
+    list add:#AF_NETBEUI.  
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_ATM
+%}.
+    list add:#AF_ATM.  "/ windose ATM
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_ATMPVC
+%}.
+    list add:#AF_ATMPVC.  "/ linux ATM
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_ATMSVC
+%}.
+    list add:#AF_ATMSVC.  "/ linux ATM
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_BAN
+%}.
+    list add:#AF_BAN.  "/ windose
+%{
+#endif
+%}.
+
+%{
+#ifdef AF_VOICEVIEW
+%}.
+    list add:#AF_VOICEVIEW.  "/ windose
+%{
+#endif
+%}.
+
+    ^ list
+
+    "
+     self supportedProtocolFamilies  
+    "
+!
+
+supportedSocketTypes
+    "return the symbolic typeName of a given numeric SOCK_xxx socket type code.
+     Return nil for invalid or unsupported socket types."
+
+    |list|
+
+    list := OrderedCollection new.
+
+%{
+#ifdef SOCK_STREAM
+%}.
+    list add:#SOCK_STREAM.
+%{
+#endif
+%}.
+%{
+#ifdef SOCK_DGRAM
+%}.
+    list add:#SOCK_DGRAM.
+%{
+#endif
+%}.
+%{
+#ifdef SOCK_RAW
+%}.
+    list add:#SOCK_RAW.
+%{
+#endif
+%}.
+%{
+#ifdef SOCK_RDM
+%}.
+    list add:#SOCK_RDM.
+%{
+#endif
+%}.
+%{
+#ifdef SOCK_SEQPACKET
+%}.
+    list add:#SOCK_SEQPACKET.
+%{
+#endif
+%}.
+%{
+#ifdef SOCK_PACKET
+%}.
+    list add:#SOCK_PACKET.
+%{
+#endif
+%}.
+
+    ^ list.
+
+    "
+     self supportedSocketTypes
+    "
+! !
+
 !AbstractOperatingSystem class methodsFor:'shared memory access'!
 
 shmAttach:id address:addr flags:flags
@@ -4517,7 +5383,7 @@
 !AbstractOperatingSystem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/AbstractOperatingSystem.st,v 1.102 2003-07-14 19:48:15 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/AbstractOperatingSystem.st,v 1.103 2003-07-15 12:19:28 cg Exp $'
 ! !
 
 AbstractOperatingSystem initialize!
--- a/UnixOperatingSystem.st	Mon Jul 14 22:21:31 2003 +0200
+++ b/UnixOperatingSystem.st	Tue Jul 15 14:19:45 2003 +0200
@@ -519,552 +519,7 @@
 /*
  * Socket defines
  */
-
-#if defined(transputer)
-# define NO_SOCKET
-#endif
-
-/*
- * which protocols can we support ?
- */
-#ifndef NO_SOCKET
-# define WANT__AF_INET
-#endif
-
-#define WANT__AF_UNIX
-
-#ifdef __VMS__
-# undef WANT__AF_UNIX
-# define WANT_AF_DECnet
-#endif
-
-
-#ifdef LINUX
-/* kludge to avoid some redefines ... */
-# define _ARPA_NAMESER_H
-# define _NETINET_TCP_H
-# define WANT__AF_INET6
-#endif
-
-#if !defined(NO_SOCKET)
-# if defined(IRIS) && !defined(IRIX5)
-   /* no socket.h on 4.0.5h ?!?!? */
-#  ifndef AF_UNIX
-#   define AF_UNIX 1
-#  endif
-#  ifndef AF_INET
-#   define AF_INET 2
-#  endif
-
-#  ifndef SOCK_STREAM
-#   define SOCK_STREAM 1
-#  endif
-#  ifndef SOCK_DGRAM
-#   define SOCK_DGRAM  2
-#  endif
-#  ifndef SOCK_RAW
-#   define SOCK_RAW    3
-#  endif
-# else
-#  include <sys/socket.h>
-# endif
-
-# ifdef NEXT3
-#  include <netinet/in_systm.h>
-# endif
-#endif
-
-
-/*
- * see what we want ...
- */
-#ifdef WANT__AF_UNIX
-# ifdef AF_UNIX
-#  ifndef PF_UNIX
-#   define PF_UNIX AF_UNIX
-#  endif
-# endif
-#else
-# undef AF_UNIX
-#endif
-
-#ifdef WANT__AF_INET
-# ifdef AF_INET
-#  ifndef PF_INET
-#   define PF_INET AF_INET
-#  endif
-# endif
-#else
-# undef AF_INET
-#endif
-
-#ifdef WANT__AF_INET6
-# ifdef AF_INET6
-#  ifndef PF_INET6
-#   define PF_INET6 AF_INET6
-#  endif
-# endif
-#else
-# undef AF_INET6
-#endif
-
-#ifdef WANT__AF_APPLETALK
-# ifdef AF_APPLETALK
-#  ifndef PF_APPLETALK
-#   define PF_APPLETALK AF_APPLETALK
-#  endif
-# endif
-#else
-# undef AF_APPLETALK
-#endif
-
-#ifdef WANT__AF_DECnet
-# ifdef AF_DECnet
-#  ifndef PF_DECnet
-#   define PF_DECnet AF_DECnet
-#  endif
-# endif
-#else
-# undef AF_DECnet
-#endif
-
-#ifdef WANT__AF_IRDA /* infrared */
-# ifdef AF_IRDA
-#  ifndef PF_IRDA
-#   define PF_IRDA AF_IRDA
-#  endif
-# endif
-#else
-# undef AF_IRDA
-#endif
-
-#ifdef WANT__AF_NETLINK 
-# ifdef AF_NETLINK
-#  ifndef PF_NETLINK
-#   define PF_NETLINK AF_NETLINK
-#  endif
-# endif
-#else
-# undef AF_NETLINK
-#endif
-
-#ifdef WANT__AF_PACKET 
-# ifdef AF_PACKET
-#  ifndef PF_PACKET
-#   define PF_PACKET AF_PACKET
-#  endif
-# endif
-#else
-# undef AF_PACKET
-#endif
-
-#ifdef WANT__AF_ASH 
-# ifdef AF_ASH
-#  ifndef PF_ASH
-#   define PF_ASH AF_ASH
-#  endif
-# endif
-#else
-# undef AF_ASH
-#endif
-
-#ifdef WANT__AF_ECONET 
-# ifdef AF_ECONET
-#  ifndef PF_ECONET
-#   define PF_ECONET AF_ECONET
-#  endif
-# endif
-#else
-# undef AF_ECONET
-#endif
-
-#ifdef WANT__AF_X25     /* X.25 */
-# ifdef AF_X25
-#  ifndef PF_X25
-#   define PF_X25 AF_X25
-#  endif
-# endif
-#else
-# undef AF_X25
-#endif
-
-#ifdef WANT__AF_NS      /* Xerox XNS */
-# ifdef AF_NS
-#  ifndef PF_NS
-#   define PF_NS AF_NS
-#  endif
-# endif
-#else
-# undef AF_NS
-#endif
-
-#ifdef WANT__AF_SNA     /* IBM SNA */
-# ifdef AF_SNA
-#  ifndef PF_SNA
-#   define PF_SNA AF_SNA
-#  endif
-# endif
-#else
-# undef AF_SNA
-#endif
-
-#ifdef WANT__AF_RAW     /* RAW packets */
-# ifdef AF_RAW
-#  ifndef PF_RAW
-#   define PF_RAW AF_RAW
-#  endif
-# endif
-#else
-# undef AF_RAW
-#endif
-
-#ifdef WANT__AF_ISO     /* ? */
-# ifdef AF_ISO
-#  ifndef PF_ISO
-#   define PF_ISO AF_ISO
-#  endif
-# endif
-#else
-# undef AF_ISO
-#endif
-
-#ifdef WANT__AF_NETBIOS /* NETBIOS */
-# ifdef AF_NETBIOS
-#  ifndef PF_NETBIOS
-#   define PF_NETBIOS AF_NETBIOS
-#  endif
-# endif
-#else
-# undef AF_NETBIOS
-#endif
-
-#ifdef WANT__AF_NETBEUI /* NETBIOS */
-# ifdef AF_NETBEUI
-#  ifndef PF_NETBEUI
-#   define PF_NETBEUI AF_NETBEUI
-#  endif
-# endif
-#else
-# undef AF_NETBEUI
-#endif
-
-#ifdef WANT__AF_CCITT /* ? */
-# if defined(AF_CCITT) && (AF_CCITT != AF_X25)
-#  ifndef PF_CCITT
-#   define PF_CCITT AF_CCITT
-#  endif
-# endif
-#else
-# undef AF_CCITT
-#endif
-
-#ifdef WANT__AF_IPX /* Novell IPX */
-# ifdef AF_IPX
-#  ifndef PF_IPX
-#   define PF_IPX AF_IPX
-#  endif
-# endif
-#else
-# undef AF_IPX
-#endif
-
-#ifdef WANT__AF_AX25 /* Amateur Radio AX.25 */
-# ifdef AF_AX25
-#  ifndef PF_AX25
-#   define PF_AX25 AF_AX25
-#  endif
-# endif
-#else
-# undef AF_AX25
-#endif
-
-#ifdef WANT__AF_NETROM /* Amateur Radio NET/ROM */
-# ifdef AF_NETROM
-#  ifndef PF_NETROM
-#   define PF_NETROM AF_NETROM
-#  endif
-# endif
-#else
-# undef AF_NETROM
-#endif
-
-#ifdef WANT__AF_BRIDGE /* multiprotocol bridge */
-# ifdef AF_BRIDGE
-#  ifndef PF_BRIDGE
-#   define PF_BRIDGE AF_BRIDGE
-#  endif
-# endif
-#else
-# undef AF_BRIDGE
-#endif
-
-#ifdef WANT__AF_BSC /* BISYNC 2780/3780 */
-# ifdef AF_BSC
-#  ifndef PF_BSC
-#   define PF_BSC AF_BSC
-#  endif
-# endif
-#else
-# undef AF_BSC
-#endif
-
-#ifdef WANT__AF_ROSE /* Amateur Radio X.25 PLP */
-# ifdef AF_ROSE
-#  ifndef PF_ROSE
-#   define PF_ROSE AF_ROSE
-#  endif
-# endif
-#else
-# undef AF_ROSE
-#endif
-
-#ifdef WANT__AF_ATM /* ATM Services */
-# ifdef AF_ATM
-#  ifndef PF_ATM
-#   define PF_ATM AF_ATM
-#  endif
-# endif
-#else
-# undef AF_ATM
-#endif
-
-#ifdef WANT__AF_ATMPVC /* ATM Services */
-# ifdef AF_ATMPVC
-#  ifndef PF_ATMPVC
-#   define PF_ATMPVC AF_ATMPVC
-#  endif
-# endif
-#else
-# undef AF_ATMPVC
-#endif
-
-#ifdef WANT__AF_ATMSVC /* ATM Services */
-# ifdef AF_ATMSVC
-#  ifndef PF_ATMSVC
-#   define PF_ATMSVC AF_ATMSVC
-#  endif
-# endif
-#else
-# undef AF_ATMSVC
-#endif
-
-#ifdef WANT__AF_BAN /* BAN / VINES IP Services */
-# ifdef AF_BAN
-#  ifndef PF_BAN
-#   define PF_BAN AF_BAN
-#  endif
-# endif
-#else
-# undef AF_BAN
-#endif
-
-#ifdef WANT__AF_VOICEVIEW /* VoiceView Services W95 only */
-# ifdef AF_VOICEVIEW
-#  ifndef PF_VOICEVIEW
-#   define PF_VOICEVIEW AF_VOICEVIEW
-#  endif
-# endif
-#else
-# undef AF_VOICEVIEW
-#endif
-
-#ifdef WANT__AF_SECURITY 
-# ifdef AF_SECURITY
-#  ifndef PF_SECURITY
-#   define PF_SECURITY AF_SECURITY
-#  endif
-# endif
-#else
-# undef AF_SECURITY
-#endif
-
-#ifdef WANT__AF_KEY 
-# ifdef AF_KEY
-#  ifndef PF_KEY
-#   define PF_KEY AF_KEY
-#  endif
-# endif
-#else
-# undef AF_KEY
-#endif
-
-#ifdef WANT__AF_NETLINK 
-# ifdef AF_NETLINK
-#  ifndef PF_NETLINK
-#   define PF_NETLINK AF_NETLINK
-#  endif
-# endif
-#else
-# undef AF_NETLINK
-#endif
-
-#ifdef WANT__AF_PACKET 
-# ifdef AF_PACKET
-#  ifndef PF_PACKET
-#   define PF_PACKET AF_PACKET
-#  endif
-# endif
-#else
-# undef AF_PACKET
-#endif
-
-#ifdef WANT__AF_ASH 
-# ifdef AF_ASH
-#  ifndef PF_ASH
-#   define PF_ASH AF_ASH
-#  endif
-# endif
-#else
-# undef AF_ASH
-#endif
-
-#ifdef WANT__AF_ECONET 
-# ifdef AF_ECONET
-#  ifndef PF_ECONET
-#   define PF_ECONET AF_ECONET
-#  endif
-# endif
-#else
-# undef AF_ECONET
-#endif
-
-
-/*
- * now, include what we have to ...
- * undef support, if no include file is present
- * (or I dont know yet, where to find it)
- */
-
-#ifdef AF_UNIX
-# ifdef UNIX
-#  include <sys/un.h>
-# else
-#  undef AF_UNIX
-# endif
-#endif
-
-#ifdef AF_INET
-# include <netdb.h>
-# if defined(PRE_SUSE_7_2)
-#  if defined(LINUX) && defined(AF_INET6)
-#   include <linux/in.h>
-#  else
-#   include <netinet/in.h>
-#  endif
-# else
-#  include <netinet/in.h>
-# endif
-# if !defined(LINUX)
-#  if ! (defined(SYSV3) && defined(mc88k))
-#   include <netinet/tcp.h>
-#  endif
-# endif
-#endif
-
-#ifdef AF_INET6
-# if defined(LINUX) && defined(__GLIBC__)
-#  if defined(PRE_SUSE_7_2)
-#   include <linux/in6.h>
-#  endif
-# else
-#  undef AF_INET6
-# endif
-#endif
-
-#ifdef AF_APPLETALK
-# ifdef LINUX
-#  include <asm/types.h>
-#  include <linux/atalk.h>
-# else
-#  undef AF_APPLETALK
-# endif
-#endif
-
-#ifdef AF_DECnet
-# ifdef solaris2_0
-#  include <X11/dni8.h>
-# else
-#  undef AF_DECnet
-# endif
-#endif
-
-#ifdef AF_X25
-# ifdef LINUX
-#  include <linux/x25.h>
-# else
-#  undef AF_X25
-# endif
-#endif
-
-#ifdef AF_AX25
-# ifdef LINUX
-#  include <linux/ax25.h>
-# else
-#  undef AF_AX25
-# endif
-#endif
-
-#ifdef AF_IPX
-# ifdef LINUX
-#  include <linux/ipx.h>
-# else
-#  ifdef WIN32
-#   include <wsipx.h>
-#  else
-#   undef AF_IPX
-#  endif
-# endif
-#endif
-
-#ifdef AF_NETBIOS
-# ifdef WIN32
-#  include <wsnetbs.h>
-# else
-#  undef AF_NETBIOS
-# endif
-#endif
-
-#ifdef AF_ATM
-# ifdef WIN32
-#  include <ws2atm.h>
-# else
-#  undef AF_ATM
-# endif
-#endif
-
-#if defined(AF_ATMPVC) || defined(AF_ATMSVC)
-# ifdef LINUX
-#  include <linux/atm.h>
-# else
-#  undef AF_ATMPVC
-#  undef AF_ATMSVC
-# endif
-#endif
-
-#ifdef AF_BAN
-# ifdef WIN32
-#  include <wsvns.h>
-# else
-#  undef AF_BAN
-# endif
-#endif
-
-#ifdef AF_VOICEVIEW
-# ifdef WIN32
-#  include <wsvv.h>
-# else
-#  undef AF_VOICEVIEW
-# endif
-#endif
-
-#ifdef AF_IRDA
-# ifdef LINUX
-#  include <linux/irda.h>
-# else
-#  undef AF_IRDA
-# endif
-#endif
-
+#include "stxOSDefs.h"
 
 #ifdef NET_IF_SUPPORT  /* for mac address of interfaces */
 
@@ -1080,57 +535,6 @@
 
 #endif /* NET_IF_SUPPORT */
 
-#undef AF_SNA     /* not yet implemented */
-#undef AF_RAW     /* not yet implemented */
-#undef AF_NETROM  /* not yet implemented */
-#undef AF_BRIDGE  /* not yet implemented */
-#undef AF_BSC     /* not yet implemented */
-
-
-/*
- * see what is leftOver
- */
-union sockaddr_u {
-#ifdef AF_UNIX
-	struct sockaddr_un un;
-#endif
-#ifdef AF_INET
-	struct sockaddr_in in;
-#endif
-#ifdef AF_INET6
-	struct sockaddr_in6 in6;
-#endif
-#ifdef AF_APPLETALK
-	struct sockaddr_at at;
-#endif
-#ifdef AF_DECnet
-	struct sockaddr_dn dn;
-#endif
-#ifdef AF_X25
-	struct sockaddr_x25 x25;
-#endif
-#ifdef AF_AX25
-	struct sockaddr_ax25 ax25;
-#endif
-#ifdef AF_IPX
-	struct sockaddr_ipx ipx;
-#endif
-#ifdef AF_NETBIOS
-	struct sockaddr_nb nb;
-#endif
-#ifdef AF_ATM
-	struct sockaddr_atm atm;
-#endif
-#ifdef AF_BAN
-	struct sockaddr_vns vns;
-#endif
-#ifdef AF_VOICEVIEW
-	struct sockaddr_vv vv;
-#endif
-#ifdef AF_IRDA
-	struct sockaddr_irda irda;
-#endif
-};
 
 
 #if defined(TRY_AGAIN) || defined(HOST_NOT_FOUND)
@@ -11262,322 +10666,6 @@
 
 !UnixOperatingSystem::SocketHandle class methodsFor:'constants'!
 
-domainCodeOf:aSymbolOrInteger
-    "return the numeric AF_xxx code of a domain.
-     Return nil for invalid or unsupported domains."
-
-    |domainCode|
-
-%{ /*NOCONTEXT*/
-     int code = -1;
-
-     if (__isSmallInteger(aSymbolOrInteger) || aSymbolOrInteger == nil) {
-	RETURN(aSymbolOrInteger);
-     }
-#ifdef AF_INET
-     else if ((aSymbolOrInteger == @symbol(inet)) || (aSymbolOrInteger == @symbol(AF_INET))) 
-	code = AF_INET;
-#endif
-#ifdef AF_INET6
-     else if ((aSymbolOrInteger == @symbol(inet6)) || (aSymbolOrInteger == @symbol(AF_INET6)))
-	code = AF_INET6;
-#endif
-#ifdef AF_UNIX
-     else if ((aSymbolOrInteger == @symbol(unix)) || (aSymbolOrInteger == @symbol(AF_UNIX)))
-	code = AF_UNIX;
-#endif
-#ifdef AF_APPLETALK
-     else if ((aSymbolOrInteger == @symbol(appletalk)) || (aSymbolOrInteger == @symbol(AF_APPLETALK)))
-	code = AF_APPLETALK;
-#endif
-#ifdef AF_DECnet
-     else if ((aSymbolOrInteger == @symbol(decnet)) || (aSymbolOrInteger == @symbol(AF_DECnet)))
-	code = AF_DECnet;
-#endif
-#ifdef AF_NS
-     else if (aSymbolOrInteger == @symbol(AF_NS))
-	code = AF_NS;
-#endif
-#ifdef AF_X25
-     else if (aSymbolOrInteger == @symbol(AF_X25))
-	code = AF_X25;
-#endif
-#ifdef AF_SNA
-     else if (aSymbolOrInteger == @symbol(AF_SNA)) 
-	code = AF_SNA;
-#endif
-#ifdef AF_RAW
-     else if ((aSymbolOrInteger == @symbol(raw)) || (aSymbolOrInteger == @symbol(AF_RAW)))
-	code = AF_RAW;
-#endif
-#ifdef AF_ISO
-     else if ((aSymbolOrInteger == @symbol(iso)) || (aSymbolOrInteger == @symbol(AF_ISO)))
-	code = AF_ISO;
-#endif
-#ifdef AF_NETBIOS
-     else if (aSymbolOrInteger == @symbol(AF_NETBIOS))
-	code = AF_NETBIOS;
-#endif
-#ifdef AF_NETBEUI
-     else if (aSymbolOrInteger == @symbol(AF_NETBEUI))
-	code = AF_NETBEUI;
-#endif
-#ifdef AF_IPX
-     else if (aSymbolOrInteger == @symbol(AF_IPX))
-	code = AF_IPX;
-#endif
-#ifdef AF_AX25
-     else if (aSymbolOrInteger == @symbol(AF_AX25))
-	code = AF_AX25;
-#endif
-#ifdef AF_NETROM
-     else if (aSymbolOrInteger == @symbol(AF_NETROM))
-	code = AF_NETROM;
-#endif
-#ifdef AF_BRIDGE
-     else if (aSymbolOrInteger == @symbol(AF_BRIDGE))
-	code = AF_BRIDGE;
-#endif
-#ifdef AF_BSC
-     else if (aSymbolOrInteger == @symbol(AF_BSC))
-	code = AF_BSC;
-#endif
-#ifdef AF_ROSE
-     else if (aSymbolOrInteger == @symbol(AF_ROSE))
-	code = AF_ROSE;
-#endif
-#ifdef AF_IRDA
-     else if ((aSymbolOrInteger == @symbol(atmpvc)) || (aSymbolOrInteger == @symbol(AF_IRDA)))
-	code = AF_IRDA;
-#endif
-#ifdef AF_BAN
-     else if (aSymbolOrInteger == @symbol(AF_BAN))
-	code = AF_BAN;
-#endif
-#ifdef AF_VOICEVIEW
-     else if (aSymbolOrInteger == @symbol(AF_VOICEVIEW))
-	code = AF_VOICEVIEW;
-#endif
-#ifdef AF_ATM
-     else if (aSymbolOrInteger == @symbol(AF_ATM))
-	code = AF_ATM;
-#endif
-#ifdef AF_ATMPVC
-     else if (aSymbolOrInteger == @symbol(AF_ATMPVC))
-	code = AF_ATMPVC;
-#endif
-#ifdef AF_ATMSVC
-     else if (aSymbolOrInteger == @symbol(AF_ATMSVC))
-	code = AF_ATMSVC;
-#endif
-#ifdef AF_SECURITY
-     else if (aSymbolOrInteger == @symbol(AF_SECURITY))
-	code = AF_SECURITY;
-#endif
-#ifdef AF_KEY
-     else if (aSymbolOrInteger == @symbol(AF_KEY))
-	code = AF_KEY;
-#endif
-#ifdef AF_NETLINK
-     else if (aSymbolOrInteger == @symbol(AF_NETLINK))
-	code = AF_NETLINK;
-#endif
-#ifdef AF_PACKET
-     else if (aSymbolOrInteger == @symbol(AF_PACKET))
-	code = AF_PACKET;
-#endif
-#ifdef AF_ASH
-     else if (aSymbolOrInteger == @symbol(AF_ASH))
-	code = AF_ASH;
-#endif
-#ifdef AF_ECONET
-     else if (aSymbolOrInteger == @symbol(AF_ECONET))
-	code = AF_ECONET;
-#endif
-
-     if (code > 0)
-	 domainCode = __MKSMALLINT(code);
-%}.
-
-    ^ domainCode.
-
-    "
-     self domainCodeOf:#inet      
-     self domainCodeOf:#unix      
-     self domainCodeOf:#inet6     
-     self domainCodeOf:#appletalk 
-     self domainCodeOf:#AF_INET 
-    "
-!
-
-domainSymbolOf:anInteger
-
-    |domainSymbol|
-
-%{ /*NOCONTEXT*/            
-
-    if (__isSmallInteger(anInteger)) {
-	switch(__intVal(anInteger)) {
-#ifdef AF_INET
-	case AF_INET:
-	    domainSymbol = @symbol(AF_INET);
-	    break;
-#endif
-#ifdef AF_INET6
-	case AF_INET6:
-	    domainSymbol = @symbol(AF_INET6);
-	    break;
-#endif
-#ifdef AF_UNIX
-	case AF_UNIX:
-	    domainSymbol = @symbol(AF_UNIX);
-	    break;
-#endif
-#ifdef AF_APPLETALK
-	case AF_APPLETALK:
-	    domainSymbol = @symbol(AF_APPLETALK);
-	    break;
-#endif
-#ifdef AF_DECnet
-	case AF_DECnet:
-	    domainSymbol = @symbol(AF_DECnet);
-	    break;
-#endif
-#ifdef AF_NS
-	case AF_NS:
-	    domainSymbol = @symbol(AF_NS);
-	    break;
-#endif
-#ifdef AF_X25
-	case AF_X25:
-	    domainSymbol = @symbol(AF_X25);
-	    break;
-#endif
-#ifdef AF_SNA
-	case AF_SNA:
-	    domainSymbol = @symbol(AF_SNA);
-	    break;
-#endif
-#ifdef AF_RAW
-	case AF_RAW:
-	    domainSymbol = @symbol(AF_RAW);
-	    break;
-#endif
-#ifdef AF_ISO
-	case AF_ISO:
-	    domainSymbol = @symbol(AF_ISO);
-	    break;
-#endif
-#ifdef AF_NETBIOS
-	case AF_NETBIOS:
-	    domainSymbol = @symbol(AF_NETBIOS);
-	    break;
-#endif
-#ifdef AF_IPX
-	case AF_IPX:
-	    domainSymbol = @symbol(AF_IPX);
-	    break;
-#endif
-#ifdef AF_AX25
-	case AF_AX25:
-	    domainSymbol = @symbol(AF_AX25);
-	    break;
-#endif
-#ifdef AF_NETROM
-	case AF_NETROM:
-	    domainSymbol = @symbol(AF_NETROM);
-	    break;
-#endif
-#ifdef AF_BRIDGE
-	case AF_BRIDGE:
-	    domainSymbol = @symbol(AF_BRIDGE);
-	    break;
-#endif
-#ifdef AF_BSC
-	case AF_BSC:
-	    domainSymbol = @symbol(AF_BSC);
-	    break;
-#endif
-#ifdef AF_ROSE
-	case AF_ROSE:
-	    domainSymbol = @symbol(AF_ROSE);
-	    break;
-#endif
-#ifdef AF_IRDA
-	case AF_IRDA:
-	    domainSymbol = @symbol(AF_IRDA);
-	    break;
-#endif
-#ifdef AF_BAN
-	case AF_BAN:
-	    domainSymbol = @symbol(AF_BAN);
-	    break;
-#endif
-#ifdef AF_VOICEVIEW
-	case AF_VOICEVIEW:
-	    domainSymbol = @symbol(AF_VOICEVIEW);
-	    break;
-#endif
-#ifdef AF_ATM
-	case AF_ATM:
-	    domainSymbol = @symbol(AF_ATM);
-	    break;
-#endif
-#ifdef AF_ATMPVC
-	case AF_ATMPVC:
-	    domainSymbol = @symbol(AF_ATMPVC);
-	    break;
-#endif
-#ifdef AF_ATMSVC
-	case AF_ATMSVC:
-	    domainSymbol = @symbol(AF_ATMSVC);
-	    break;
-#endif
-#ifdef AF_SECURITY
-	case AF_SECURITY:
-	    domainSymbol = @symbol(AF_SECURITY);
-	    break;
-#endif
-#ifdef AF_KEY
-	case AF_KEY:
-	    domainSymbol = @symbol(AF_KEY);
-	    break;
-#endif
-#ifdef AF_NETLINK
-	case AF_NETLINK:
-	    domainSymbol = @symbol(AF_NETLINK);
-	    break;
-#endif
-#ifdef AF_PACKET
-	case AF_PACKET:
-	    domainSymbol = @symbol(AF_PACKET);
-	    break;
-#endif
-#ifdef AF_ASH
-	case AF_ASH:
-	    domainSymbol = @symbol(AF_ASH);
-	    break;
-#endif
-#ifdef AF_ECONET
-	case AF_ECONET:
-	    domainSymbol = @symbol(AF_ECONET);
-	    break;
-#endif
-	}
-    }
-%}.
-
-    ^ domainSymbol.
-
-    "
-     self domainSymbolOf:(self domainCodeOf:#inet)  
-     self domainSymbolOf:(self domainCodeOf:#inet6) 
-     self domainSymbolOf:(self domainCodeOf:#unix)  
-     self domainSymbolOf:(self domainCodeOf:#appletalk) 
-     self domainSymbolOf:(self domainCodeOf:#decnet) 
-    "
-!
-
 protocolCodeOf:aNameOrNumber
     "convert a symbol to a numeric protocol code"
 
@@ -11665,482 +10753,6 @@
      self protocolSymbolOf:(self protocolCodeOf:#udp)
      self protocolSymbolOf:(self protocolCodeOf:#icmp)
     "
-!
-
-socketAddressSize:aSymbolOrInteger
-    "Return the os-specific size of a socket address for a domain aSymbolOrInteger.
-     Return nil, if unknown or unsupported."
-
-    |socketSize domainCode|
-
-    domainCode := self domainCodeOf:aSymbolOrInteger.
-
-%{ /*NOCONTEXT*/
-    int size = -1;
-        
-    if (__isSmallInteger(domainCode)) {
-	switch (__intVal(domainCode)) {
-#ifdef AF_INET
-	    case AF_INET:        
-		size = sizeof(struct sockaddr_in);
-		break;
-#endif
-#ifdef AF_INET6
-	    case AF_INET6:        
-		size = sizeof(struct sockaddr_in6);
-		break;
-#endif
-#ifdef AF_UNIX
-	    case AF_UNIX:        
-		size = sizeof(struct sockaddr_un);
-		break;
-#endif
-#ifdef AF_APPLETALK
-	    case AF_APPLETALK:        
-		size = sizeof(struct sockaddr_at);
-		break;
-#endif
-#ifdef AF_DECnet
-	    case AF_DECnet:        
-		size = sizeof(struct sockaddr_dn);
-		break;
-#endif
-#ifdef AF_NS
-	    case AF_NS:        
-		size = sizeof(struct sockaddr_ns);
-		break;
-#endif
-#ifdef AF_X25
-	    case AF_X25:        
-		size = sizeof(struct sockaddr_x25);
-		break;
-#endif
-#ifdef AF_SNA
-	    case AF_SNA:        
-		size = sizeof(struct sockaddr_sna);
-		break;
-#endif
-#ifdef AF_RAW
-	    case AF_RAW:        
-		size = sizeof(struct sockaddr_raw);
-		break;
-#endif
-#ifdef AF_ISO
-	    case AF_ISO:        
-		size = sizeof(struct sockaddr_iso);
-		break;
-#endif
-#ifdef AF_NETBIOS
-	    case AF_NETBIOS:        
-		size = sizeof(struct sockaddr_netbios);
-		break;
-#endif
-#ifdef AF_NETBEUI
-	    case AF_NETBEUI:        
-		size = sizeof(struct sockaddr_netbeui);
-		break;
-#endif
-#ifdef AF_IPX
-	    case AF_IPX:        
-		size = sizeof(struct sockaddr_ipx);
-		break;
-#endif
-#ifdef AF_AX25
-	    case AF_AX25:        
-		size = sizeof(struct sockaddr_ax25);
-		break;
-#endif
-#ifdef AF_NETROM
-	    case AF_NETROM:        
-		size = sizeof(struct sockaddr_netrom);
-		break;
-#endif
-#ifdef AF_BRIDGE
-	    case AF_BRIDGE:        
-		size = sizeof(struct sockaddr_bridge);
-		break;
-#endif
-#ifdef AF_BSC
-	    case AF_BSC:        
-		size = sizeof(struct sockaddr_bsc);
-		break;
-#endif
-#ifdef AF_ROSE
-	    case AF_ROSE:        
-		size = sizeof(struct sockaddr_rose);
-		break;
-#endif
-#ifdef AF_IRDA
-	    case AF_IRDA:        
-		size = sizeof(struct sockaddr_irda);
-		break;
-#endif
-#ifdef AF_BAN
-	    case AF_BAN:        
-		size = sizeof(struct sockaddr_ban);
-		break;
-#endif
-#ifdef AF_VOICEVIEW
-	    case AF_VOICEVIEW:        
-		size = sizeof(struct sockaddr_voiceview);
-		break;
-#endif
-#ifdef AF_ATM
-	    case AF_ATM:        
-		size = sizeof(struct sockaddr_atm);
-		break;
-#endif
-#ifdef AF_ATMPVC
-	    case AF_ATMPVC:        
-		size = sizeof(struct sockaddr_atmpvc);
-		break;
-#endif
-#ifdef AF_ATMSVC
-	    case AF_ATMSVC:        
-		size = sizeof(struct sockaddr_atmsvc);
-		break;
-#endif
-#ifdef AF_NETLINK
-	    case AF_NETLINK:        
-		size = sizeof(struct sockaddr_netlink);
-		break;
-#endif
-#ifdef AF_PACKET
-	    case AF_PACKET:        
-		size = sizeof(struct sockaddr_packet);
-		break;
-#endif
-#ifdef AF_ASH
-	    case AF_ASH:        
-		size = sizeof(struct sockaddr_ash);
-		break;
-#endif
-#ifdef AF_ECONET
-	    case AF_ECONET:        
-		size = sizeof(struct sockaddr_eco);
-		break;
-#endif
-	}
-    }
-    if (size > 0)
-	socketSize = __MKSMALLINT(size);
-%}.
-    ^ socketSize
-!
-
-socketTypeCodeOf:aSymbolOrInteger
-
-    |typeCode|
-
-%{ /*NOCONTEXT*/
-     int code = -1;
-
-     if (__isSmallInteger(aSymbolOrInteger) || aSymbolOrInteger == nil) {
-	RETURN(aSymbolOrInteger);
-     }
-#ifdef SOCK_STREAM
-     else if ((aSymbolOrInteger == @symbol(stream)) || (aSymbolOrInteger == @symbol(SOCK_STREAM)))
-	code = SOCK_STREAM;
-#endif
-#ifdef SOCK_DGRAM
-     else if ((aSymbolOrInteger == @symbol(datagram)) || (aSymbolOrInteger == @symbol(SOCK_DGRAM)))
-	code = SOCK_DGRAM;
-#endif
-#ifdef SOCK_RAW
-     else if ((aSymbolOrInteger == @symbol(raw)) || (aSymbolOrInteger == @symbol(SOCK_RAW))) 
-	code = SOCK_RAW;
-#endif
-#ifdef SOCK_RDM
-     else if ((aSymbolOrInteger == @symbol(rdm)) || (aSymbolOrInteger == @symbol(SOCK_RDM))) 
-	code = SOCK_RDM;
-#endif
-#ifdef SOCK_SEQPACKET
-     else if ((aSymbolOrInteger == @symbol(seqpacket)) || (aSymbolOrInteger == @symbol(SOCK_SEQPACKET))) 
-	code = SOCK_SEQPACKET;
-#endif
-#ifdef SOCK_PACKET
-     else if ((aSymbolOrInteger == @symbol(packet)) || (aSymbolOrInteger == @symbol(SOCK_PACKET))) 
-	code = SOCK_PACKET;
-#endif
-
-     if (code > 0)
-	 typeCode = __MKSMALLINT(code);
-%}.
-
-    ^ typeCode.
-
-    "
-     self socketTypeCodeOf:#stream
-     self socketTypeCodeOf:#datagram
-     self socketTypeCodeOf:#raw
-    "
-!
-
-socketTypeSymbolOf:anInteger
-
-    |socketTypeSymbol|
-
-%{ /*NOCONTEXT*/            
-
-    if (__isSmallInteger(anInteger)) {
-	switch(__intVal(anInteger)) {
-#ifdef SOCK_STREAM
-	case SOCK_STREAM:
-	    socketTypeSymbol = @symbol(SOCK_STREAM);
-	    break;
-#endif
-#ifdef SOCK_DGRAM
-	case SOCK_DGRAM:
-	    socketTypeSymbol = @symbol(SOCK_DGRAM);
-	    break;
-#endif
-#ifdef SOCK_RAW
-	case SOCK_RAW:
-	    socketTypeSymbol = @symbol(SOCK_RAW);
-	    break;
-#endif
-#ifdef SOCK_RDM
-	case SOCK_RDM:
-	    socketTypeSymbol = @symbol(SOCK_RDM);
-	    break;
-#endif
-#ifdef SOCK_SEQPACKET
-	case SOCK_SEQPACKET:
-	    socketTypeSymbol = @symbol(SOCK_SEQPACKET);
-	    break;
-#endif
-#ifdef SOCK_PACKET
-	case SOCK_PACKET:
-	    socketTypeSymbol = @symbol(SOCK_PACKET);
-	    break;
-#endif
-	}
-    }
-%}.
-    ^ socketTypeSymbol.
-!
-
-supportedProtocolFamilies
-    "return a collection of supported protocol families.
-     This list specifies what the Socket class supports -
-     socket creation may still fail, if your system was built without it.
-     For backward compatibility, the returned list includes the old
-     (non-AF-prefixed) symbols; these will vanish."
-
-    |list|
-
-    list := OrderedCollection new.
-
-%{
-#ifdef AF_INET
-%}.
-    list add:#AF_INET.
-    list add:#inet.
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_UNIX
-%}.
-    list add:#AF_UNIX.
-    list add:#unix.
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_INET6
-%}.
-    list add:#AF_INET6.   "/ internet v6
-    list add:#inet6.   
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_APPLETALK
-%}.
-    list add:#AF_APPLETALK.  
-    list add:#appletalk.  
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_DECnet
-%}.
-    list add:#AF_DECnet.  
-    list add:#decnet.  
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_NS
-%}.
-    list add:#AF_NS.     "/ Xerox XNS
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_X25
-%}.
-    list add:#AF_X25.     
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_SNA
-%}.
-    list add:#AF_SNA.     "/ IBM SNA
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_RAW
-%}.
-    list add:#AF_RAW.     "/ RAW packets
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_ISO
-%}.
-    list add:#AF_ISO.    
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_NETBIOS
-%}.
-    list add:#AF_NETBIOS.
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_IPX
-%}.
-    list add:#AF_IPX.     "/ Novell IPX
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_AX25
-%}.
-    list add:#AF_AX25.    "/ Amateur Radio AX.25
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_NETROM
-%}.
-    list add:#AF_NETROM.  "/ Amateur Radio NET/ROM
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_BRIDGE
-%}.
-    list add:#AF_BRIDGE.  "/ multiprotocol bridge
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_BSC
-%}.
-    list add:#AF_BSC.     "/ BISYNC 2780/3780
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_ROSE
-%}.
-    list add:#AF_ROSE.    "/ Amateur Radio X.25 PLP
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_IRDA
-%}.
-    list add:#AF_IRDA.  "/ infrared
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_NETLINK
-%}.
-    list add:#AF_NETLINK.  
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_NETBEUI
-%}.
-    list add:#AF_NETBEUI.  
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_ATM
-%}.
-    list add:#AF_ATM.  "/ windose ATM
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_ATMPVC
-%}.
-    list add:#AF_ATMPVC.  "/ linux ATM
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_ATMSVC
-%}.
-    list add:#AF_ATMSVC.  "/ linux ATM
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_BAN
-%}.
-    list add:#AF_BAN.  "/ windose
-%{
-#endif
-%}.
-
-%{
-#ifdef AF_VOICEVIEW
-%}.
-    list add:#AF_VOICEVIEW.  "/ windose
-%{
-#endif
-%}.
-
-    ^ list
-
-    "
-     self supportedProtocolFamilies  
-    "
 ! !
 
 !UnixOperatingSystem::SocketHandle class methodsFor:'initialization'!
@@ -12160,8 +10772,8 @@
 
     |error errorString result domain type proto|
 
-    domain := self domainCodeOf:domainArg.
-    type := self socketTypeCodeOf:typeArg.
+    domain := OperatingSystem domainCodeOf:domainArg.
+    type := OperatingSystem socketTypeCodeOf:typeArg.
     proto := self protocolCodeOf:protoArg.
 
 %{ /* STACK:32000 */
@@ -12173,24 +10785,24 @@
     int ret, cnt = 0;
 
     if (hostName == nil) {
-	__hostName = 0;
+        __hostName = 0;
     } else if (__isString(hostName) || __isSymbol(hostName)) {
-	__hostName = __stringVal(hostName);
+        __hostName = __stringVal(hostName);
     } else {
-	error = @symbol(badArgument1);
-	goto err;
+        error = @symbol(badArgument1);
+        goto err;
     }
     if (serviceName == nil) {
-	__serviceName = 0;
+        __serviceName = 0;
     } else if (__isString(serviceName) || __isSymbol(serviceName)) {
-	__serviceName = __stringVal(serviceName);
+        __serviceName = __stringVal(serviceName);
     } else {
-	error = @symbol(badArgument2);
-	goto err;
+        error = @symbol(badArgument2);
+        goto err;
     }
     if (__hostName == 0 && __serviceName == 0) {
-	error = @symbol(badArgument);
-	goto err;
+        error = @symbol(badArgument);
+        goto err;
     }
 
 {
@@ -12204,98 +10816,98 @@
 
     memset(&hints, 0, sizeof(hints));
     if (__isSmallInteger(domain))
-	hints.ai_family = __intVal(domain);
+        hints.ai_family = __intVal(domain);
     if (__isSmallInteger(type))
-	hints.ai_socktype = __intVal(type);
+        hints.ai_socktype = __intVal(type);
     if (__isSmallInteger(proto))
-	hints.ai_protocol = __intVal(proto);
+        hints.ai_protocol = __intVal(proto);
 
     do {
-	__BEGIN_INTERRUPTABLE__
-	ret = getaddrinfo(__hostName, __serviceName, &hints, &info);
-	__END_INTERRUPTABLE__
+        __BEGIN_INTERRUPTABLE__
+        ret = getaddrinfo(__hostName, __serviceName, &hints, &info);
+        __END_INTERRUPTABLE__
     } while (ret == EAI_SYSTEM && errno == EINTR);
     if (ret != 0) {
-	switch (ret) {
-	case EAI_FAMILY:
-	    error = @symbol(badProtocol);
-	    break;
-	case EAI_SOCKTYPE:
-	    error = @symbol(badSocketType);
-	    break;
-	case EAI_BADFLAGS:
-	    error = @symbol(badFlags);
-	    break;
-	case EAI_NONAME:
-	    error = @symbol(unknownHost);
-	    break;
-	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;
-	case EAI_FAIL:
-	    error = @symbol(permanentFailure);
-	    break;
-	case EAI_AGAIN:
-	    error = @symbol(tryAgain);
-	    break;
-	case EAI_SYSTEM:
-	    error = @symbol(systemError);
-	    break;
-	default:
-	    error = @symbol(unknownError);
-	}
-	errorString = __MKSTRING(gai_strerror(ret));
-	goto err;
+        switch (ret) {
+        case EAI_FAMILY:
+            error = @symbol(badProtocol);
+            break;
+        case EAI_SOCKTYPE:
+            error = @symbol(badSocketType);
+            break;
+        case EAI_BADFLAGS:
+            error = @symbol(badFlags);
+            break;
+        case EAI_NONAME:
+            error = @symbol(unknownHost);
+            break;
+        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;
+        case EAI_FAIL:
+            error = @symbol(permanentFailure);
+            break;
+        case EAI_AGAIN:
+            error = @symbol(tryAgain);
+            break;
+        case EAI_SYSTEM:
+            error = @symbol(systemError);
+            break;
+        default:
+            error = @symbol(unknownError);
+        }
+        errorString = __MKSTRING(gai_strerror(ret));
+        goto err;
     } 
     for (cnt=0, infop=info; infop; infop=infop->ai_next)
-	cnt++;
+        cnt++;
 
     result = __ARRAY_NEW_INT(cnt);
     if (result == nil) {
-	error = @symbol(allocationFailure);
-	goto err;
+        error = @symbol(allocationFailure);
+        goto err;
     }
     for (infop=info, cnt=0; infop; infop=infop->ai_next, cnt++) {
-	OBJ o, resp;
-
-	resp = __ARRAY_NEW_INT(6);
-	if (resp == nil) {
-	    error = @symbol(allocationFailure);
-	    goto err;
-	}
-
-	__ArrayInstPtr(result)->a_element[cnt] = resp;
-	__STORE(result, resp);
-	__ArrayInstPtr(resp)->a_element[0] = __MKSMALLINT(infop->ai_flags);
-	__ArrayInstPtr(resp)->a_element[1] = __MKSMALLINT(infop->ai_family);
-	__ArrayInstPtr(resp)->a_element[2] = __MKSMALLINT(infop->ai_socktype);
-	__ArrayInstPtr(resp)->a_element[3] = __MKSMALLINT(infop->ai_protocol);
-	o = __BYTEARRAY_NEW_INT(infop->ai_addrlen);        
-	if (o == nil) {
-	    error = @symbol(allocationFailure);
-	    goto err;
-	}
-	memcpy(__byteArrayVal(o), infop->ai_addr, infop->ai_addrlen);
+        OBJ o, resp;
+
+        resp = __ARRAY_NEW_INT(6);
+        if (resp == nil) {
+            error = @symbol(allocationFailure);
+            goto err;
+        }
+
+        __ArrayInstPtr(result)->a_element[cnt] = resp;
+        __STORE(result, resp);
+        __ArrayInstPtr(resp)->a_element[0] = __MKSMALLINT(infop->ai_flags);
+        __ArrayInstPtr(resp)->a_element[1] = __MKSMALLINT(infop->ai_family);
+        __ArrayInstPtr(resp)->a_element[2] = __MKSMALLINT(infop->ai_socktype);
+        __ArrayInstPtr(resp)->a_element[3] = __MKSMALLINT(infop->ai_protocol);
+        o = __BYTEARRAY_NEW_INT(infop->ai_addrlen);        
+        if (o == nil) {
+            error = @symbol(allocationFailure);
+            goto err;
+        }
+        memcpy(__byteArrayVal(o), infop->ai_addr, infop->ai_addrlen);
        __ArrayInstPtr(resp)->a_element[4] = o;
-	__STORE(resp, o);
-	if (infop->ai_canonname) {
-	    o = __MKSTRING(infop->ai_canonname);
-	    if (o == nil) {
-		error = @symbol(allocationFailure);
-		goto err;
-	    }
-	    __ArrayInstPtr(resp)->a_element[5] = o;
-	    __STORE(resp, o);
-	}
+        __STORE(resp, o);
+        if (infop->ai_canonname) {
+            o = __MKSTRING(infop->ai_canonname);
+            if (o == nil) {
+                error = @symbol(allocationFailure);
+                goto err;
+            }
+            __ArrayInstPtr(resp)->a_element[5] = o;
+            __STORE(resp, o);
+        }
     }
 
 err:
@@ -12312,130 +10924,130 @@
     int i;
 
     if (__serviceName) {
-	struct servent *sp;
-	char *__proto = 0;
-
-	if (__isString(protoArg) || __isSymbol(protoArg))
-	    __proto = __stringVal(protoArg);
-
-	sp = getservbyname(__serviceName, __proto);
-	if (sp == NULL) {
-	    errorString = @symbol(unknownService);
-	    error = __mkSmallInteger(-3);
-	    goto err;
-	}
-	port = sp->s_port;
+        struct servent *sp;
+        char *__proto = 0;
+
+        if (__isString(protoArg) || __isSymbol(protoArg))
+            __proto = __stringVal(protoArg);
+
+        sp = getservbyname(__serviceName, __proto);
+        if (sp == NULL) {
+            errorString = @symbol(unknownService);
+            error = __mkSmallInteger(-3);
+            goto err;
+        }
+        port = sp->s_port;
     }
 
     if (__hostName) {
 #  ifdef USE_H_ERRNO
-	do {
-	    /* __BEGIN_INTERRUPTABLE__ is dangerous, because gethostbyname
-	     * uses a static data area
-	     */
-	    __BEGIN_INTERRUPTABLE__            
-	    hp = gethostbyname(__hostName);
-	    __END_INTERRUPTABLE__            
-	} while ((hp == NULL) 
-		  && (
-			(h_errno == TRY_AGAIN)                      
-		      || errno == EINTR
+        do {
+            /* __BEGIN_INTERRUPTABLE__ is dangerous, because gethostbyname
+             * uses a static data area
+             */
+            __BEGIN_INTERRUPTABLE__            
+            hp = gethostbyname(__hostName);
+            __END_INTERRUPTABLE__            
+        } while ((hp == NULL) 
+                  && (
+                        (h_errno == TRY_AGAIN)                      
+                      || errno == EINTR
 #   ifdef IRIX5_3
-		      || (errno == ECONNREFUSED)
+                      || (errno == ECONNREFUSED)
 #   endif
-		     )
-	);
-	if (hp == 0) {
-	    switch (h_errno) {
-	    case HOST_NOT_FOUND:
-		errorString = @symbol(unknownHost);
-		break;
-	    case NO_ADDRESS:
-		errorString = @symbol(noAddress);
-		break;
-	    case NO_RECOVERY:
-		errorString = @symbol(permanentFailure);
-		break;
-	    case TRY_AGAIN:
-		errorString = @symbol(tryAgain);
-		break;
-	    default:
-		errorString = @symbol(unknownError);
-		break;
-	    }
-	    error = __mkSmallInteger(h_errno);
-	    goto err;
-	} 
+                     )
+        );
+        if (hp == 0) {
+            switch (h_errno) {
+            case HOST_NOT_FOUND:
+                errorString = @symbol(unknownHost);
+                break;
+            case NO_ADDRESS:
+                errorString = @symbol(noAddress);
+                break;
+            case NO_RECOVERY:
+                errorString = @symbol(permanentFailure);
+                break;
+            case TRY_AGAIN:
+                errorString = @symbol(tryAgain);
+                break;
+            default:
+                errorString = @symbol(unknownError);
+                break;
+            }
+            error = __mkSmallInteger(h_errno);
+            goto err;
+        } 
 #  else /* !USE_H_ERRNO */
-	hp = gethostbyname(__hostName);
-	if (hp == 0) {
-	    errorString = @symbol(unknownHost);
-	    error = __mkSmallInteger(-1);
-	    goto err;
-	}
+        hp = gethostbyname(__hostName);
+        if (hp == 0) {
+            errorString = @symbol(unknownHost);
+            error = __mkSmallInteger(-1);
+            goto err;
+        }
 #  endif /* !USE_H_ERRNO*/
 
-	if (__isSmallInteger(domain) && hp->h_addrtype != __smallIntegerVal(domain)) {
-	    errorString = @symbol(unknownHost);
-	    error = __mkSmallInteger(-2);
-	    goto err;
-	}
-
-	for (cnt = 0, addrpp = hp->h_addr_list; *addrpp; addrpp++) 
-	    cnt++;
-	addrpp = hp->h_addr_list;    
+        if (__isSmallInteger(domain) && hp->h_addrtype != __smallIntegerVal(domain)) {
+            errorString = @symbol(unknownHost);
+            error = __mkSmallInteger(-2);
+            goto err;
+        }
+
+        for (cnt = 0, addrpp = hp->h_addr_list; *addrpp; addrpp++) 
+            cnt++;
+        addrpp = hp->h_addr_list;    
     } else {
-	cnt = 1;
+        cnt = 1;
     }
 
     result = __ARRAY_NEW_INT(cnt);
     if (result == nil) {
-	error = @symbol(allocationFailure);
-	goto err;
+        error = @symbol(allocationFailure);
+        goto err;
     }
 
     for (i = 0; i < cnt; i++) {
-	OBJ o, resp;
-	struct sockaddr_in *sa;
-
-	resp = __ARRAY_NEW_INT(6);
-	if (resp == nil) {
-	    error = @symbol(allocationFailure);
-	    goto err;
-	}
-
-	__ArrayInstPtr(result)->a_element[i] = resp;
-	__STORE(result, resp);
-	__ArrayInstPtr(resp)->a_element[0] = __mkSmallInteger(0);
-	__ArrayInstPtr(resp)->a_element[2] = type;
-	__ArrayInstPtr(resp)->a_element[3] = proto;
-	o = __BYTEARRAY_NEW_INT(sizeof(*sa));        
-	if (o == nil) {
-	    error = @symbol(allocationFailure);
-	    goto err;
-	}
-	__ArrayInstPtr(resp)->a_element[4] = o;
-	__STORE(resp, o);
-	sa = (struct sockaddr_in *)__byteArrayVal(o);
-	sa->sin_port = port;
-
-	if (__hostName) {
-	    sa->sin_family = hp->h_addrtype;
-	    memcpy(&sa->sin_addr, *addrpp, hp->h_length);
-	    __ArrayInstPtr(resp)->a_element[1] = __mkSmallInteger(hp->h_addrtype);
-	    if (hp->h_name) {
-		o = __MKSTRING(hp->h_name);
-		if (o == nil) {
-		    error = @symbol(allocationFailure);
-		    goto err;
-		}
-		__ArrayInstPtr(resp)->a_element[5] = o;
-		__STORE(resp, o);
-	    }
-	    addrpp++;
-	} else{
-	    __ArrayInstPtr(resp)->a_element[1] = domain;
-	}
+        OBJ o, resp;
+        struct sockaddr_in *sa;
+
+        resp = __ARRAY_NEW_INT(6);
+        if (resp == nil) {
+            error = @symbol(allocationFailure);
+            goto err;
+        }
+
+        __ArrayInstPtr(result)->a_element[i] = resp;
+        __STORE(result, resp);
+        __ArrayInstPtr(resp)->a_element[0] = __mkSmallInteger(0);
+        __ArrayInstPtr(resp)->a_element[2] = type;
+        __ArrayInstPtr(resp)->a_element[3] = proto;
+        o = __BYTEARRAY_NEW_INT(sizeof(*sa));        
+        if (o == nil) {
+            error = @symbol(allocationFailure);
+            goto err;
+        }
+        __ArrayInstPtr(resp)->a_element[4] = o;
+        __STORE(resp, o);
+        sa = (struct sockaddr_in *)__byteArrayVal(o);
+        sa->sin_port = port;
+
+        if (__hostName) {
+            sa->sin_family = hp->h_addrtype;
+            memcpy(&sa->sin_addr, *addrpp, hp->h_length);
+            __ArrayInstPtr(resp)->a_element[1] = __mkSmallInteger(hp->h_addrtype);
+            if (hp->h_name) {
+                o = __MKSTRING(hp->h_name);
+                if (o == nil) {
+                    error = @symbol(allocationFailure);
+                    goto err;
+                }
+                __ArrayInstPtr(resp)->a_element[5] = o;
+                __STORE(resp, o);
+            }
+            addrpp++;
+        } else{
+            __ArrayInstPtr(resp)->a_element[1] = domain;
+        }
     }
 
 err:;
@@ -12446,44 +11058,44 @@
 #endif
 %}.
     error notNil ifTrue:[
-	NameLookupError raiseWith:error errorString:errorString.
+        NameLookupError raiseWith:error errorString:errorString.
     ].
     1 to:result size do:[:i | 
-	|entry dom info|
-
-	info := SocketAddressInfo new.
-	entry := result at:i.
-	info flags:(entry at:1).
-	info domain:(dom := self domainSymbolOf:(entry at:2)).
-	info type:(self socketTypeSymbolOf:(entry at:3)).
-	info protocol:(self protocolSymbolOf:(entry at:4)).
-	info socketAddress:((SocketAddress newDomain:dom) fromBytes:(entry at:5)).
-	info canonicalName:(entry at:6).
-	result at:i put:info
+        |entry dom info|
+
+        info := SocketAddressInfo new.
+        entry := result at:i.
+        info flags:(entry at:1).
+        info domain:(dom := OperatingSystem domainSymbolOf:(entry at:2)).
+        info type:(OperatingSystem socketTypeSymbolOf:(entry at:3)).
+        info protocol:(self protocolSymbolOf:(entry at:4)).
+        info socketAddress:((SocketAddress newDomain:dom) fromBytes:(entry at:5)).
+        info canonicalName:(entry at:6).
+        result at:i put:info
     ].
     ^ result
 
     "
      self getAddressInfo:'localhost' serviceName:nil 
-	    domain:nil type:nil protocol:nil flags:nil
+            domain:nil type:nil protocol:nil flags:nil
      self getAddressInfo:'localhost' serviceName:nil 
-	    domain:#inet type:#stream protocol:nil flags:nil
+            domain:#inet type:#stream protocol:nil flags:nil
      self getAddressInfo:'localhost' serviceName:nil 
-	    domain:#inet type:#stream protocol:#tcp flags:nil
+            domain:#inet type:#stream protocol:#tcp flags:nil
      self getAddressInfo:'blurb.exept.de' serviceName:nil 
-	    domain:#inet type:nil protocol:nil flags:nil
+            domain:#inet type:nil protocol:nil flags:nil
      self getAddressInfo:'1.2.3.4' serviceName:'bla' 
-	    domain:#inet type:nil protocol:nil flags:nil
+            domain:#inet type:nil protocol:nil flags:nil
      self getAddressInfo:'localhost' serviceName:'echo' 
-	    domain:#inet type:nil protocol:nil flags:nil
+            domain:#inet type:nil protocol:nil flags:nil
      self getAddressInfo:nil serviceName:'echo' 
-	    domain:#inet type:nil protocol:nil flags:nil
+            domain:#inet type:nil protocol:nil flags:nil
      self getAddressInfo:nil serviceName:nil 
-	    domain:#inet type:nil protocol:nil flags:nil
+            domain:#inet type:nil protocol:nil flags:nil
      self getAddressInfo:'www.google.de' serviceName:nil 
-	    domain:nil type:nil protocol:nil flags:nil
+            domain:nil type:nil protocol:nil flags:nil
      self getAddressInfo:'smc1' serviceName:nil 
-	    domain:nil type:nil protocol:nil flags:nil
+            domain:nil type:nil protocol:nil flags:nil
     "
 !
 
@@ -13188,15 +11800,19 @@
 
 domain:domainArg type:typeArg protocol:protocolArg 
     "set up socket with domain, type and protocol number.
-     This is a low level entry; no binding, listening or connect
-     is done. Both arguments must be symbols from one of
-     #inet,#unix, #appletalk, #x25 .. and #stream, #datagram, #raw resp."
-
-    |error domainCode protocolNumber|
-
-    domainCode := self class domainCodeOf:domainArg.
+     This is a low level entry; no binding, listening or connect is done. 
+     All arguments must be symbols from one of
+     domainArg: #AF_INET, #AF_UNIX, #AF_APPLETALK (#inet, #unix, #appletalk, #x25) .. 
+     type: #SOCK_STREAM, #SOCK_DGRAM (#stream, #datagram, #raw) .. 
+     protocol: #tcp, #udp, #raw .. 
+    "
+
+    |error domainCode typeCode protocolNumber|
+
+    domainCode := OperatingSystem domainCodeOf:domainArg.
+    typeCode := OperatingSystem socketTypeCodeOf:typeArg.
     protocolArg notNil ifTrue:[
-	protocolNumber := self class protocolCodeOf:protocolArg
+        protocolNumber := self class protocolCodeOf:protocolArg
     ].
 
 %{
@@ -13205,82 +11821,58 @@
     int on = 1;
 
     if (__INST(fd) != nil) {
-	error = @symbol(internalError);
-	goto err;
+        error = @symbol(internalError);
+        goto err;
     }
     if (! __isSmallInteger(domainCode)) { 
-	error = @symbol(badArgument1);
-	goto err;
-    }
-    if (! __isSymbol(typeArg)) { 
-	error = @symbol(badArgument2);
-	goto err;
+        error = @symbol(badArgument1);
+        goto err;
+    }
+    if (! __isSmallInteger(typeArg)) { 
+        error = @symbol(badArgument2);
+        goto err;
     }
     if (protocolNumber != nil) {
-	if (!__isSmallInteger(protocolNumber)) {
-	    error = @symbol(badArgument3);
-	    goto err;
-	}
-	proto = __smallIntegerVal(protocolNumber);
+        if (!__isSmallInteger(protocolNumber)) {
+            error = @symbol(badArgument3);
+            goto err;
+        }
+        proto = __smallIntegerVal(protocolNumber);
     }
     dom = __smallIntegerVal(domainCode);    
 
     /*
      * get socket-type and protocol-type
      */
-
-#ifdef SOCK_STREAM
-    if (typeArg == @symbol(stream)) {
-	typ = SOCK_STREAM;
-    } else
-#endif
-#ifdef SOCK_DGRAM
-    if (typeArg == @symbol(datagram)) {
-	typ = SOCK_DGRAM;
-    } else 
-#endif
-#ifdef SOCK_RAW
-    if (typeArg == @symbol(raw))
-	typ = SOCK_RAW;
-    else
-#endif
-#ifdef SOCK_SEQPACKET
-    if (typeArg == @symbol(seqPacket))
-	typ = SOCK_SEQPACKET;
-    else
-#endif
-    {
-	error = @symbol(badArgument2);
-	goto err;
-    }
+    typ = __intVal(typeArg);
 
 againSocket:
     sock = socket(dom, typ, proto);
     if (sock < 0) {
-	if (errno == EINTR) {
-	    __HANDLE_INTERRUPTS__;
-	    goto againSocket;
-	} else 
-#if defined(EPROTONOSUPPORT) /* for SGI */
-	if (errno == EPROTONOSUPPORT && proto != 0) {
-	    proto = 0;
-	    goto againSocket;
-	} else
-#endif
-	{
-	    error = __mkSmallInteger(errno);
-	    goto err;
-	}
+        if (errno == EINTR) {
+            __HANDLE_INTERRUPTS__;
+            goto againSocket;
+        } else 
+# if defined(EPROTONOSUPPORT) /* for SGI */
+        if (errno == EPROTONOSUPPORT && proto != 0) {
+            proto = 0;
+            goto againSocket;
+        } else
+# endif
+        {
+            error = __mkSmallInteger(errno);
+            goto err;
+        }
     }
     __INST(fd) = __mkSmallInteger(sock);
 
 err:;
-#else
+# else /* NOSOCKET */
     error := @symbol(notImplemented);
-#endif
+# endif /* NOSOCKET */
 %}.
     error notNil ifTrue:[
-	^ self error:error.
+        ^ self error:error.
     ].
     self register.
 
@@ -13560,7 +12152,7 @@
 !UnixOperatingSystem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.173 2003-07-12 17:27:15 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.174 2003-07-15 12:19:45 cg Exp $'
 ! !
 
 UnixOperatingSystem initialize!