home *** CD-ROM | disk | FTP | other *** search
- /* Miscellaneous format conversion subroutines */
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <ctype.h>
- #include "global.h"
- #include "netdb.h"
- #include "netuser.h"
- #include "misc.h"
- #include "socket.h"
- #include "timer.h"
- #include "tcp.h"
-
- int net_error;
- extern int lookupnames;
-
- #define LINELEN 256
-
- /* Convert Internet address in ascii dotted-decimal format (44.0.0.1) to
- * binary IP address
- */
- int32 aton(register char *s)
- {
- int32 n;
- register int i;
-
- n = 0;
- for(i=24;i>=0;i -= 8){
- n |= (int32)atoi(s) << i;
- if((s = strchr(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 *ntoa(int32 a)
- {
- static char buf[256];
- sprintf(buf,"%u.%u.%u.%u",
- hibyte(hiword(a)),
- lobyte(hiword(a)),
- hibyte(loword(a)),
- lobyte(loword(a)) );
- return buf;
- }
-
-
- char *inet_ntoa(int32 a)
- {
- struct hostent *host;
-
- if (lookupnames && (a != 0) && ((host = gethostbyaddr(a, 4, AF_INET)) != NULL))
- return host->h_name;
- else
- return ntoa(a);
- return "";
- }
-
-
- /* Convert a socket (address + port) to an ascii string of the form
- * aaa.aaa.aaa.aaa:ppppp
- */
- char *psocket(struct socket *s)
- {
- static char buf[256];
-
- sprintf(buf,"%s:%s",inet_ntoa(s->address),tcp_port(s->port));
- return buf;
- }
- /* Convert hex-ascii string to long integer */
- long htol(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;
- }
-