--- a/AbstractOperatingSystem.st Fri Mar 11 13:50:04 2005 +0100
+++ b/AbstractOperatingSystem.st Mon Mar 14 15:27:17 2005 +0100
@@ -171,7 +171,7 @@
initResources
"/ allow for ResourcePack class to be missing (non-GUI smalltalks)
ResourcePack notNil ifTrue:[
- Resources := ResourcePack forPackage:(self package).
+ Resources := ResourcePack forPackage:(self package).
]
!
@@ -4014,6 +4014,10 @@
else if ((aSymbolOrInteger == @symbol(AF_ISO)) || (aSymbolOrInteger == @symbol(iso)))
domainCode = __MKSMALLINT(AF_ISO);
#endif
+#ifdef AF_ECMA
+ else if (aSymbolOrInteger == @symbol(AF_ECMA))
+ domainCode = __MKSMALLINT(AF_ECMA);
+#endif
#ifdef AF_NETBIOS
else if ((aSymbolOrInteger == @symbol(AF_NETBIOS)) || (aSymbolOrInteger == @symbol(netbios)))
domainCode = __MKSMALLINT(AF_NETBIOS);
@@ -4098,6 +4102,10 @@
else if (aSymbolOrInteger == @symbol(AF_IMPLINK))
domainCode = __MKSMALLINT(AF_IMPLINK);
#endif
+#ifdef AF_PUP
+ else if (aSymbolOrInteger == @symbol(AF_PUP))
+ domainCode = __MKSMALLINT(AF_PUP);
+#endif
#ifdef AF_CHAOS
else if (aSymbolOrInteger == @symbol(AF_CHAOS))
domainCode = __MKSMALLINT(AF_CHAOS);
@@ -4210,6 +4218,11 @@
domainSymbol = @symbol(AF_ISO);
break;
#endif
+#ifdef AF_ECMA
+ case AF_ECMA:
+ domainSymbol = @symbol(AF_ECMA);
+ break;
+#endif
#ifdef AF_NETBIOS
case AF_NETBIOS:
domainSymbol = @symbol(AF_NETBIOS);
@@ -4310,6 +4323,11 @@
domainSymbol = @symbol(AF_IMPLINK);
break;
#endif
+#ifdef AF_PUP
+ case AF_PUP:
+ domainSymbol = @symbol(AF_PUP);
+ break;
+#endif
#ifdef AF_CHAOS
case AF_CHAOS:
domainSymbol = @symbol(AF_CHAOS);
@@ -4366,6 +4384,153 @@
"
!
+protocolCodeOf:aSymbolOrInteger
+ "return the numeric IPPROTO_xxx code of a given symbolic protocol name.
+ Return nil for invalid or unsupported protocols.
+ For backward compatibility, the obsolete (non-IPPROTO-prefixed) names
+ are still supported for a while - this support will vanish."
+
+ |protocolCode|
+
+%{ /*NOCONTEXT*/
+
+ if (__isSmallInteger(aSymbolOrInteger) || aSymbolOrInteger == nil) {
+ RETURN (aSymbolOrInteger);
+ }
+
+#ifdef IPPROTO_IP
+ else if ((aSymbolOrInteger == @symbol(IPPROTO_IP)) || (aSymbolOrInteger == @symbol(ip)))
+ protocolCode = __MKSMALLINT(IPPROTO_IP);
+#endif
+#ifdef IPPROTO_ICMP
+ else if ((aSymbolOrInteger == @symbol(IPPROTO_ICMP)) || (aSymbolOrInteger == @symbol(icmp)))
+ protocolCode = __MKSMALLINT(IPPROTO_ICMP);
+#endif
+#ifdef IPPROTO_IGMP
+ else if ((aSymbolOrInteger == @symbol(IPPROTO_IGMP)) || (aSymbolOrInteger == @symbol(igmp)))
+ protocolCode = __MKSMALLINT(IPPROTO_IGMP);
+#endif
+#ifdef IPPROTO_GGP
+ else if ((aSymbolOrInteger == @symbol(IPPROTO_GGP)) || (aSymbolOrInteger == @symbol(ggp)))
+ protocolCode = __MKSMALLINT(IPPROTO_GGP);
+#endif
+#ifdef IPPROTO_TCP
+ else if ((aSymbolOrInteger == @symbol(IPPROTO_TCP)) || (aSymbolOrInteger == @symbol(tcp)))
+ protocolCode = __MKSMALLINT(IPPROTO_TCP);
+#endif
+#ifdef IPPROTO_UDP
+ else if ((aSymbolOrInteger == @symbol(IPPROTO_UDP)) || (aSymbolOrInteger == @symbol(udp)))
+ protocolCode = __MKSMALLINT(IPPROTO_UDP);
+#endif
+#ifdef IPPROTO_IDP
+ else if ((aSymbolOrInteger == @symbol(IPPROTO_IDP)) || (aSymbolOrInteger == @symbol(idp)))
+ protocolCode = __MKSMALLINT(IPPROTO_IDP);
+#endif
+#ifdef IPPROTO_ND
+ else if ((aSymbolOrInteger == @symbol(IPPROTO_ND)) || (aSymbolOrInteger == @symbol(nd)))
+ protocolCode = __MKSMALLINT(IPPROTO_ND);
+#endif
+#ifdef IPPROTO_RAW
+ else if ((aSymbolOrInteger == @symbol(IPPROTO_RAW)) || (aSymbolOrInteger == @symbol(raw)))
+ protocolCode = __MKSMALLINT(IPPROTO_RAW);
+#endif
+%}.
+
+ ^ protocolCode.
+
+ "
+ self protocolCodeOf:#IPPROTO_UDP
+ self protocolCodeOf:#IPPROTO_TCP
+ "
+ "for backward compatibility only:
+ self protocolCodeOf:#udp
+ self protocolCodeOf:#tcp
+ "
+!
+
+protocolSymbolOf:anInteger
+ "return the symbolic protocolName of a given numeric IPPROTO_xxx code.
+ Return nil for invalid or unsupported protocols."
+
+ |protocolSymbol|
+
+%{ /*NOCONTEXT*/
+
+ if (__isSmallInteger(anInteger)) {
+ switch(__intVal(anInteger)) {
+#ifdef IPPROTO_IP
+ case IPPROTO_IP:
+ // protocolSymbol = @symbol(IPPROTO_IP);
+ protocolSymbol = @symbol(ip);
+ break;
+#endif
+#ifdef IPPROTO_ICMP
+ case IPPROTO_ICMP:
+ // protocolSymbol = @symbol(IPPROTO_ICMP);
+ protocolSymbol = @symbol(icmp);
+ break;
+#endif
+#ifdef IPPROTO_IGMP
+ case IPPROTO_IGMP:
+ // protocolSymbol = @symbol(IPPROTO_IGMP);
+ protocolSymbol = @symbol(igmp);
+ break;
+#endif
+#ifdef IPPROTO_GGP
+ case IPPROTO_GGP:
+ // protocolSymbol = @symbol(IPPROTO_GGP);
+ protocolSymbol = @symbol(ggp);
+ break;
+#endif
+#ifdef IPPROTO_TCP
+ case IPPROTO_TCP:
+ // protocolSymbol = @symbol(IPPROTO_TCP);
+ protocolSymbol = @symbol(tcp);
+ break;
+#endif
+#ifdef IPPROTO_PUP
+ case IPPROTO_PUP:
+ // protocolSymbol = @symbol(IPPROTO_PUP);
+ protocolSymbol = @symbol(pup);
+ break;
+#endif
+#ifdef IPPROTO_UDP
+ case IPPROTO_UDP:
+ // protocolSymbol = @symbol(IPPROTO_UDP);
+ protocolSymbol = @symbol(udp);
+ break;
+#endif
+#ifdef IPPROTO_IDP
+ case IPPROTO_IDP:
+ // protocolSymbol = @symbol(IPPROTO_IDP);
+ protocolSymbol = @symbol(idp);
+ break;
+#endif
+#ifdef IPPROTO_ND
+ case IPPROTO_ND:
+ // protocolSymbol = @symbol(IPPROTO_ND);
+ protocolSymbol = @symbol(nd);
+ break;
+#endif
+#ifdef IPPROTO_RAW
+ case IPPROTO_RAW:
+ // protocolSymbol = @symbol(IPPROTO_RAW);
+ protocolSymbol = @symbol(raw);
+ break;
+#endif
+ }
+ }
+%}.
+
+ ^ protocolSymbol.
+
+ "
+ self protocolSymbolOf:(self protocolCodeOf:#tcp)
+ self protocolSymbolOf:(self protocolCodeOf:#udp)
+ self protocolSymbolOf:(self protocolCodeOf:#raw)
+ "
+!
+
socketAddressSizeOfDomain:aSymbolOrInteger
"Return the os-specific size of a socket address for a domain aSymbolOrInteger.
Return nil, if unknown or unsupported."
@@ -4427,6 +4592,13 @@
socketSize = __MKSMALLINT( sizeof(struct sockaddr_iso) );
break;
#endif
+#ifdef AF_ECMA
+# if 0
+ case AF_ECMA:
+ socketSize = __MKSMALLINT( sizeof(struct sockaddr_ecma) );
+ break;
+# endif
+#endif
#ifdef AF_NETBIOS
case AF_NETBIOS:
socketSize = __MKSMALLINT( sizeof(struct sockaddr_netbios) );
@@ -4522,6 +4694,13 @@
socketSize = __MKSMALLINT( sizeof(struct sockaddr_implink) );
break;
#endif
+#ifdef AF_PUP
+# if 0
+ case AF_PUP:
+ socketSize = __MKSMALLINT( sizeof(struct sockaddr_pup) );
+ break;
+# endif
+#endif
#ifdef AF_CHAOS
case AF_CHAOS:
socketSize = __MKSMALLINT( sizeof(struct sockaddr_chaos) );
@@ -4685,6 +4864,7 @@
#AF_SNA
#AF_RAW
#AF_ISO
+ #AF_ECMA
#AF_NETBIOS #netbios
#AF_IPX
#AF_AX25
@@ -4694,6 +4874,7 @@
#AF_ROSE
#AF_IRDA #irda
#AF_NETLINK
+ #AF_NETLINK
#AF_NETBEUI
#AF_ATM
#AF_ATMPVC
@@ -4702,6 +4883,7 @@
#AF_VOICEVIEW
#AF_ECONET
#AF_IMPLINK
+ #AF_PUP
#AF_CHAOS
#AF_DLI
#AF_LAT
@@ -5590,7 +5772,7 @@
!AbstractOperatingSystem class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/AbstractOperatingSystem.st,v 1.139 2005-01-26 17:40:49 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/AbstractOperatingSystem.st,v 1.140 2005-03-14 14:27:17 penk Exp $'
! !
AbstractOperatingSystem initialize!