diff -r 19558aa463e0 -r e8eac6f03c77 UnixOperatingSystem.st --- a/UnixOperatingSystem.st Thu Apr 03 14:48:50 2003 +0200 +++ b/UnixOperatingSystem.st Fri Apr 04 14:20:58 2003 +0200 @@ -599,6 +599,16 @@ # 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 @@ -609,14 +619,14 @@ # undef AF_DECnet #endif -#ifdef WANT__AF_APPLETALK -# ifdef AF_APPLETALK -# ifndef PF_APPLETALK -# define PF_APPLETALK AF_APPLETALK +#ifdef WANT__AF_IRDA /* infrared */ +# ifdef AF_IRDA +# ifndef PF_IRDA +# define PF_IRDA AF_IRDA # endif # endif #else -# undef AF_APPLETALK +# undef AF_IRDA #endif #ifdef WANT__AF_X25 /* X.25 */ @@ -779,15 +789,6 @@ # undef AF_VOICEVIEW #endif -#ifdef WANT__AF_IRDA /* infrared */ -# ifdef AF_IRDA -# ifndef PF_IRDA -# define PF_IRDA AF_IRDA -# endif -# endif -#else -# undef AF_IRDA -#endif /* @@ -841,11 +842,11 @@ # endif #endif -#ifdef AF_DECNET +#ifdef AF_DECnet # ifdef solaris2_0 # include # else -# undef AF_DECNET +# undef AF_DECnet # endif #endif @@ -954,7 +955,7 @@ #ifdef AF_APPLETALK struct sockaddr_at at; #endif -#ifdef AF_DECNET +#ifdef AF_DECnet struct sockaddr_dn dn; #endif #ifdef AF_X25 @@ -10946,6 +10947,10 @@ else if (aSymbolOrInteger == @symbol(appletalk)) code = AF_APPLETALK; #endif +#ifdef AF_DECnet + else if (aSymbolOrInteger == @symbol(decnet)) + code = AF_DECnet; +#endif if (code > 0) domainCode = __MKSMALLINT(code); @@ -10989,6 +10994,11 @@ domainSymbol = @symbol(appletalk); break; #endif +#ifdef AF_DECnet + case AF_DECnet: + domainSymbol = @symbol(decnet); + break; +#endif } } %}. @@ -11118,6 +11128,10 @@ else if (aSymbol == @symbol(appletalk)) size = sizeof(struct sockaddr_at); #endif +#ifdef AF_DECnet + else if (aSymbol == @symbol(decnet)) + size = sizeof(struct sockaddr_dn); +#endif if (size > 0) socketSize = __MKSMALLINT(size); @@ -11555,21 +11569,22 @@ if (hp == 0) { switch (h_errno) { case HOST_NOT_FOUND: - error = @symbol(unknownHost); + errorString = @symbol(unknownHost); break; case NO_ADDRESS: - error = @symbol(noAddress); + errorString = @symbol(noAddress); break; case NO_RECOVERY: - error = @symbol(permanentFailure); + errorString = @symbol(permanentFailure); break; case TRY_AGAIN: - error = @symbol(tryAgain); + errorString = @symbol(tryAgain); break; default: - error = @symbol(unknownError); + errorString = @symbol(unknownError); + break; } - errorString = __MKSTRING(hstrerror(h_errno)); + error = __mkSmallInteger(h_errno); goto err; } # else /* !USE_H_ERRNO */ @@ -11789,73 +11804,76 @@ goto err; } # else /* ! NI_NUMERICHOST */ - /* - * Do it using gethostbyaddr() - */ - - struct sockaddr_in *sa; - if (__byteArraySize(socketAddress) < sizeof(*sa)) { - error = @symbol(badArgument1); - goto err; - } - sa = (struct sockaddr_in *)__byteArrayVal(socketAddress); - - if (sp) { - struct servent *servp; - char *__proto = 0; - - __proto = (useDatagram == true ? "udp" : "tcp"); - - servp = getservbyport(sa->sin_port, __proto); - if (servp) { - sp = servp->s_name; - } - } - if (hp) { - struct hostent *hostp; -# ifdef USE_H_ERRNO - do { - /* __BEGIN_INTERRUPTABLE__ is dangerous, because gethostbyname - * uses a static data area - */ - hostp = gethostbyaddr((char *)&sa->sin_addr, sizeof(sa->sin_addr), AF_INET); - } while ((hp == NULL) - && ((h_errno == TRY_AGAIN) - || errno == EINTR -# ifdef IRIX5_3 - || (errno == ECONNREFUSED) -# endif - ) - ); - if (hp == 0) { - switch (h_errno) { - case HOST_NOT_FOUND: - error = @symbol(unknownHost); - break; - case NO_ADDRESS: - error = @symbol(noAddress); - break; - case NO_RECOVERY: - error = @symbol(permanentFailure); - break; - case TRY_AGAIN: - error = @symbol(tryAgain); - break; - default: - error = @symbol(unknownError); - } - errorString = __MKSTRING(hstrerror(h_errno)); - goto err; - } -# else /* !USE_H_ERRNO */ - hostp = gethostbyaddr(sa->sin_addr, sizeof(sa->sin_addr), AF_INET); - if (hostp == 0) { - errorString = @symbol(unknownHost); - error = __mkSmallInteger(-1); + { + /* + * Do it using gethostbyaddr() + */ + struct sockaddr_in *sa; + + if (__byteArraySize(socketAddress) < sizeof(*sa)) { + error = @symbol(badArgument1); goto err; } + sa = (struct sockaddr_in *)__byteArrayVal(socketAddress); + + if (sp) { + struct servent *servp; + char *__proto = 0; + + __proto = (useDatagram == true ? "udp" : "tcp"); + + servp = getservbyport(sa->sin_port, __proto); + if (servp) { + sp = servp->s_name; + } + } + if (hp) { + struct hostent *hostp; +# ifdef USE_H_ERRNO + do { + /* __BEGIN_INTERRUPTABLE__ is dangerous, because gethostbyname + * uses a static data area + */ + hostp = gethostbyaddr((char *)&sa->sin_addr, sizeof(sa->sin_addr), AF_INET); + } while ((hp == NULL) + && ((h_errno == TRY_AGAIN) + || errno == EINTR +# ifdef IRIX5_3 + || (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; + } +# else /* !USE_H_ERRNO */ + hostp = gethostbyaddr(sa->sin_addr, sizeof(sa->sin_addr), AF_INET); + if (hostp == 0) { + errorString = @symbol(unknownHost); + error = __mkSmallInteger(-1); + goto err; + } # endif /* !USE_H_ERRNO*/ - hp = hostp->h_name; + hp = hostp->h_name; + } } # endif /* ! NI_NUMERICHOST */ @@ -12744,7 +12762,7 @@ !UnixOperatingSystem class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.153 2003-04-03 12:48:50 stefan Exp $' + ^ '$Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.154 2003-04-04 12:20:58 cg Exp $' ! ! UnixOperatingSystem initialize!