aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/programs/nxauth/gethost.c
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/programs/nxauth/gethost.c')
-rw-r--r--nx-X11/programs/nxauth/gethost.c287
1 files changed, 0 insertions, 287 deletions
diff --git a/nx-X11/programs/nxauth/gethost.c b/nx-X11/programs/nxauth/gethost.c
deleted file mode 100644
index fa889f29b..000000000
--- a/nx-X11/programs/nxauth/gethost.c
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- * $Xorg: gethost.c,v 1.5 2001/02/09 02:05:38 xorgcvs Exp $
- *
- *
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- * *
- * Author: Jim Fulton, MIT X Consortium
- */
-
-/* $XFree86: xc/programs/xauth/gethost.c,v 3.16 2001/12/14 20:01:14 dawes Exp $ */
-
-/* sorry, streams support does not really work yet */
-#if defined(STREAMSCONN) && defined(SVR4)
-#undef STREAMSCONN
-#define TCPCONN
-#endif
-
-#ifdef WIN32
-#include <nx-X11/Xwinsock.h>
-#define EPROTOTYPE WSAEPROTOTYPE
-#endif
-#include <nx-X11/X.h>
-#include <signal.h>
-#include <setjmp.h>
-#include <ctype.h>
-#ifndef __TYPES__
-#include <sys/types.h>
-#define __TYPES__
-#endif
-#ifndef WIN32
-#ifndef STREAMSCONN
-#ifndef Lynx
-#include <sys/socket.h>
-#else
-#include <socket.h>
-#endif
-#include <netdb.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#ifdef SYSV
-#ifdef i386
-#ifndef sco
-#include <net/errno.h>
-#endif /* !sco */
-#endif /* i386 */
-#endif /* SYSV */
-#endif /* !STREAMSCONN */
-#endif /* !WIN32 */
-#include <errno.h>
-#include "xauth.h"
-
-#ifdef DNETCONN
-#include <netdnet/dn.h>
-#include <netdnet/dnetdb.h>
-#endif
-
-#ifdef SIGALRM
-Bool nameserver_timedout = False;
-
-
-/*
- * get_hostname - Given an internet address, return a name (CHARON.MIT.EDU)
- * or a string representing the address (18.58.0.13) if the name cannot
- * be found. Stolen from xhost.
- */
-
-static jmp_buf env;
-static
-#ifdef SIGNALRETURNSINT
-int
-#else
-void
-#endif
-nameserver_lost(int sig)
-{
- nameserver_timedout = True;
- longjmp (env, -1);
- /* NOTREACHED */
-#ifdef SIGNALRETURNSINT
- return -1; /* for picky compilers */
-#endif
-}
-#endif
-
-char *
-get_hostname (auth)
- Xauth *auth;
-{
- static struct hostent *hp = NULL;
-#ifdef DNETCONN
- struct nodeent *np;
- static char nodeaddr[4 + 2 * DN_MAXADDL];
-#endif /* DNETCONN */
-
- if (auth->address_length == 0)
- return "Illegal Address";
-#ifdef TCPCONN
- if (auth->family == FamilyInternet) {
-#ifdef SIGALRM
- /* gethostbyaddr can take a LONG time if the host does not exist.
- Assume that if it does not respond in NAMESERVER_TIMEOUT seconds
- that something is wrong and do not make the user wait.
- gethostbyaddr will continue after a signal, so we have to
- jump out of it.
- */
- nameserver_timedout = False;
- signal (SIGALRM, nameserver_lost);
- alarm (4);
- if (setjmp(env) == 0) {
-#endif
- hp = gethostbyaddr (auth->address, auth->address_length, AF_INET);
-#ifdef SIGALRM
- }
- alarm (0);
-#endif
- if (hp)
- return (hp->h_name);
- else
- return (inet_ntoa(*((struct in_addr *)(auth->address))));
- }
-#endif
-#ifdef DNETCONN
- if (auth->family == FamilyDECnet) {
- struct dn_naddr *addr_ptr = (struct dn_naddr *) auth->address;
-
- if (np = getnodebyaddr(addr_ptr->a_addr, addr_ptr->a_len, AF_DECnet)) {
- sprintf(nodeaddr, "%s:", np->n_name);
- } else {
- sprintf(nodeaddr, "%s:", dnet_htoa(auth->address));
- }
- return(nodeaddr);
- }
-#endif
-
- return (NULL);
-}
-
-#ifdef TCPCONN
-/*
- * cribbed from lib/X/XConnDis.c
- */
-static Bool
-get_inet_address(char *name, unsigned int *resultp)
-{
- unsigned int hostinetaddr = inet_addr (name);
- struct hostent *host_ptr;
- struct sockaddr_in inaddr; /* dummy variable for size calcs */
-
-#ifndef INADDR_NONE
-#define INADDR_NONE -1
-#endif
-
- if (hostinetaddr == INADDR_NONE) {
- if ((host_ptr = gethostbyname (name)) == NULL) {
- /* No such host! */
- errno = EINVAL;
- return False;
- }
- /* Check the address type for an internet host. */
- if (host_ptr->h_addrtype != AF_INET) {
- /* Not an Internet host! */
- errno = EPROTOTYPE;
- return False;
- }
-
- memmove( (char *)&hostinetaddr, (char *)host_ptr->h_addr,
- sizeof(inaddr.sin_addr));
- }
- *resultp = hostinetaddr;
- return True;
-}
-#endif
-
-#ifdef DNETCONN
-static Bool get_dnet_address (name, resultp)
- char *name;
- struct dn_naddr *resultp;
-{
- struct dn_naddr *dnaddrp, dnaddr;
- struct nodeent *np;
-
- if (dnaddrp = dnet_addr (name)) { /* stolen from xhost */
- dnaddr = *dnaddrp;
- } else {
- if ((np = getnodebyname (name)) == NULL) return False;
- dnaddr.a_len = np->n_length;
- memmove( dnaddr.a_addr, np->n_addr, np->n_length);
- }
- *resultp = dnaddr;
- return True;
-}
-#endif
-
-char *get_address_info (family, fulldpyname, prefix, host, lenp)
- int family;
- char *fulldpyname;
- int prefix;
- char *host;
- int *lenp;
-{
- char *retval = NULL;
- int len = 0;
- char *src = NULL;
-#ifdef TCPCONN
- unsigned int hostinetaddr;
-#endif
-#ifdef DNETCONN
- struct dn_naddr dnaddr;
-#endif
- char buf[255];
-
- /*
- * based on the family, set the pointer src to the start of the address
- * information to be copied and set len to the number of bytes.
- */
- switch (family) {
- case FamilyLocal: /* hostname/unix:0 */
- /* handle unix:0 and :0 specially */
- if (prefix == 0 && (strncmp (fulldpyname, "unix:", 5) == 0 ||
- fulldpyname[0] == ':')) {
-
- if (!get_local_hostname (buf, sizeof buf)) {
- len = 0;
- } else {
- src = buf;
- len = strlen (buf);
- }
- } else {
- src = fulldpyname;
- len = prefix;
- }
- break;
- case FamilyInternet: /* host:0 */
-#ifdef TCPCONN
- if (!get_inet_address (host, &hostinetaddr)) return NULL;
- src = (char *) &hostinetaddr;
- len = 4; /* sizeof inaddr.sin_addr, would fail on Cray */
- break;
-#else
- return NULL;
-#endif
- case FamilyDECnet: /* host::0 */
-#ifdef DNETCONN
- if (!get_dnet_address (host, &dnaddr)) return NULL;
- src = (char *) &dnaddr;
- len = (sizeof dnaddr);
- break;
-#else
- /* fall through since we don't have code for it */
-#endif
- default:
- src = NULL;
- len = 0;
- }
-
- /*
- * if source was provided, allocate space and copy it
- */
- if (len == 0 || !src) return NULL;
-
- retval = malloc (len);
- if (retval) {
- memmove( retval, src, len);
- *lenp = len;
- }
- return retval;
-}