From 8ecd9729cb7da906470a88decb77620ed3d7ffdf Mon Sep 17 00:00:00 2001 From: skotlex Date: Thu, 22 Jun 2006 01:12:52 +0000 Subject: - Tested and fixed resolve_hostbyname. - Applied said function around most of the code where needed. Removed includes for the OS/network system pretty much from every file (our socket.c file should handle this) - Added clif_getip_long, which returns the ip as a long. Prevents having to include the files to define the int_addr structure in all files that include clif.h - Made the GM mute request bypass the manner_system setting. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@7285 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/common/socket.c | 7 +++++-- src/common/socket.h | 6 +++++- 2 files changed, 10 insertions(+), 3 deletions(-) (limited to 'src/common') diff --git a/src/common/socket.c b/src/common/socket.c index a9a9c628b..dc8162ee1 100644 --- a/src/common/socket.c +++ b/src/common/socket.c @@ -1392,14 +1392,17 @@ bool session_isActive(int fd) return ( session_isValid(fd) && !session[fd]->eof ); } -in_addr_t resolve_hostbyname(char* hostname, char *ip) { +in_addr_t resolve_hostbyname(char* hostname, unsigned char *ip, char *ip_str) { struct hostent *h = gethostbyname(hostname); - char ip_str[16]; + unsigned char ip_buf[16]; + char ip2[4]; if (!h) return 0; + if (ip == NULL) ip = ip2; ip[0] = (unsigned char) h->h_addr[0]; ip[1] = (unsigned char) h->h_addr[1]; ip[2] = (unsigned char) h->h_addr[2]; ip[3] = (unsigned char) h->h_addr[3]; + if (ip_str == NULL) ip_str = ip_buf; sprintf(ip_str, "%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]); return inet_addr(ip_str); } diff --git a/src/common/socket.h b/src/common/socket.h index 4d8d36807..158759f9e 100644 --- a/src/common/socket.h +++ b/src/common/socket.h @@ -9,6 +9,7 @@ #ifdef __WIN32 #define __USE_W32_SOCKETS #include +typedef long in_addr_t; #else #include #include @@ -157,7 +158,10 @@ void set_defaultconsoleparse(int (*defaultparse)(char*)); //Resolves the hostname and stores the string representation of the string in ip. //Meant to simplify calls to gethostbyname without the need of all the //required network includes. -in_addr_t resolve_hostbyname(char* hostname, char *ip); +//hostname is the name to resolve. +//ip is an array of char[4] where the individual parts of the ip are stored (optional) +//ip_str is a char[16] where the whole ip is stored in string notation (optional) +in_addr_t resolve_hostbyname(char* hostname, unsigned char *ip, char *ip_str); extern unsigned int addr_[16]; // ip addresses of local host (host byte order) extern unsigned int naddr_; // # of ip addresses -- cgit v1.2.3-70-g09d2