/* * PARSEC - libunp Wrapper * * $Author: uberlinuxguy $ - $Date: 2004/09/15 12:25:42 $ * * Orginally written by: * Copyright (c) Markus Hadwiger 1998 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ // C library #include #include #include #include // compilation flags/debug support #include "config.h" #include "debug.h" // general definitions #include "general.h" #include "objstruc.h" // global externals #include "globals.h" // network code config #include "net_conf.h" // local module header #include "net_wrap.h" #ifdef SYSTEM_TARGET_WINDOWS int inet_aton(const char *cp, struct in_addr *ap) { int dots = 0; register dword acc = 0, addr = 0; do { register char cc = *cp; switch (cc) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': acc = acc * 10 + (cc - '0'); break; case '.': if (++dots > 3) { return 0; } /* Fall through */ case '\0': if (acc > 255) { return 0; } addr = addr << 8 | acc; acc = 0; break; default: return 0; } } while (*cp++) ; /* Normalize the address */ if (dots < 3) { addr <<= 8 * (3 - dots) ; } /* Store it if requested */ if (ap) { ap->s_addr = htonl(addr); } return 1; } const char* inet_ntop( int family, const void* addrptr, char* strptr, size_t len) { strncpy( strptr, inet_ntoa( *((in_addr*)addrptr) ) , len - 1 ); strptr[ len - 1 ] = 0; return strptr; } const char* hstrerror(int err) { if (err == 0) return("no error"); if (err == HOST_NOT_FOUND) return("Unknown host"); if (err == TRY_AGAIN) return("Hostname lookup failure"); if (err == NO_RECOVERY) return("Unknown server error"); if (err == NO_DATA) return("No address associated with name"); return("unknown error"); } #endif // SYSTEM_TARGET_WINDOWS