diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2026-08-24 11:16:07 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2026-08-24 11:16:07 +0200 |
| commit | c068f22329d5cc722622a2183bbb22eef2093df7 (patch) | |
| tree | 12d56c1aede67988a55e241364606bfbb4dba933 /src/libparsec/net_wrap.cpp | |
| download | openparsec-c068f22329d5cc722622a2183bbb22eef2093df7.tar.xz openparsec-c068f22329d5cc722622a2183bbb22eef2093df7.zip | |
Diffstat (limited to 'src/libparsec/net_wrap.cpp')
| -rw-r--r-- | src/libparsec/net_wrap.cpp | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/src/libparsec/net_wrap.cpp b/src/libparsec/net_wrap.cpp new file mode 100644 index 0000000..8a11ed5 --- /dev/null +++ b/src/libparsec/net_wrap.cpp @@ -0,0 +1,132 @@ +/* + * PARSEC - libunp Wrapper + * + * $Author: uberlinuxguy $ - $Date: 2004/09/15 12:25:42 $ + * + * Orginally written by: + * Copyright (c) Markus Hadwiger <msh@parsec.org> 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 <stddef.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +// 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 + |
