/* Miscellaneous format conversion subroutines */ #include "machdep.h" #include "netuser.h" int net_error; /* Convert Internet address in dotted-decimal format (44.0.0.1) to binary */ int32 aton(s) char *s; { int32 n; int atoi(),i; char *index(); n = 0; for(i=24;i>=0;i -= 8){ n |= (int32)atoi(s) << i; if((s = index(s,'.')) == NULLCHAR) break; s++; } return n; } /* Convert an internet address (in host byte order) to a dotted decimal ascii * string, e.g., 255.255.255.255\0 */ char * inet_ntoa(a) int32 a; { static char buf[16]; sprintf(buf,"%u.%u.%u.%u", hibyte(hiword(a)), lobyte(hiword(a)), hibyte(loword(a)), lobyte(loword(a)) ); return buf; } /* Convert a socket (address + port) to an ascii string of the form * aaa.aaa.aaa.aaa:ppppp */ char * psocket(s) struct socket *s; { static char buf[30]; sprintf(buf,"%s:%u",inet_ntoa(s->address),s->port); return buf; } /* Convert hex-ascii string to long integer */ long htol(s) char *s; { long ret; char c; ret = 0; while((c = *s++) != '\0'){ c &= 0x7f; if(c >= '0' && c <= '9') ret = ret*16 + (c - '0'); else if(c >= 'a' && c <= 'f') ret = ret*16 + (10 + c - 'a'); else if(c >= 'A' && c <= 'F') ret = ret*16 + (10 + c - 'A'); else break; } return ret; }