summaryrefslogtreecommitdiffstats
path: root/src/appl/libpty/sane_hostname.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/appl/libpty/sane_hostname.c')
-rw-r--r--src/appl/libpty/sane_hostname.c116
1 files changed, 0 insertions, 116 deletions
diff --git a/src/appl/libpty/sane_hostname.c b/src/appl/libpty/sane_hostname.c
deleted file mode 100644
index 46ac842ee9..0000000000
--- a/src/appl/libpty/sane_hostname.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * pty_make_sane_hostname: Make a sane hostname from an IP address.
- * This returns allocated memory!
- *
- * Copyright 1999, 2000, 2001 by the Massachusetts Institute of
- * Technology.
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby
- * granted, provided that the above copyright notice appear in all
- * copies and that both that copyright notice and this permission
- * notice appear in supporting documentation, and that the name of
- * M.I.T. not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Furthermore if you modify this software you must label
- * your software as modified software and not distribute it in such a
- * fashion that it might be confused with the original M.I.T. software.
- * M.I.T. makes no representations about the suitability
- * of this software for any purpose. It is provided "as is" without
- * express or implied warranty.
- *
- */
-#include "com_err.h"
-#include "pty-int.h"
-#include <sys/socket.h>
-#include "libpty.h"
-#include <arpa/inet.h>
-
-#include "socket-utils.h"
-#include "fake-addrinfo.h"
-
-static void
-downcase (char *s)
-{
- for (; *s != '\0'; s++)
- *s = tolower ((int) *s);
-}
-
-long
-pty_make_sane_hostname(const struct sockaddr *addr, int maxlen,
- int strip_ldomain, int always_ipaddr, char **out)
-{
- struct addrinfo *ai = 0;
- char addrbuf[NI_MAXHOST];
-#ifdef HAVE_STRUCT_UTMP_UT_HOST
- struct utmp ut;
-#else
- struct utmpx utx;
-#endif
- char *cp, *domain;
- char lhost[MAXHOSTNAMELEN];
- size_t ut_host_len;
-
- /* Note that on some systems (e.g., AIX 4.3.3), we may get an IPv6
- address such as ::FFFF:18.18.1.71 when an IPv4 connection comes
- in. That's okay; at least on AIX, getnameinfo will deal with
- that properly. */
-
- *out = NULL;
- if (maxlen && maxlen < 16)
- /* assume they meant 16, otherwise IPv4 addr won't fit */
- maxlen = 16;
-#ifdef HAVE_STRUCT_UTMP_UT_HOST
- ut_host_len = sizeof (ut.ut_host);
-#else
- ut_host_len = sizeof (utx.ut_host);
-#endif
- if (maxlen == 0)
- maxlen = ut_host_len;
- *out = malloc(ut_host_len);
- if (*out == NULL)
- return ENOMEM;
-
- if (always_ipaddr) {
- use_ipaddr:
- if (getnameinfo (addr, socklen (addr), addrbuf, sizeof (addrbuf),
- (char *)0, 0, NI_NUMERICHOST) == 0)
- strncpy(*out, addrbuf, ut_host_len);
- else
- strncpy(*out, "??", ut_host_len);
- (*out)[ut_host_len - 1] = '\0';
- return 0;
- }
-
- /* If we didn't want to chop off the local domain, this would be
- much simpler -- just a single getnameinfo call and a strncpy. */
- if (getnameinfo(addr, socklen (addr), addrbuf, sizeof (addrbuf),
- (char *) NULL, 0, NI_NAMEREQD) != 0)
- goto use_ipaddr;
- downcase (addrbuf);
- if (strip_ldomain) {
- struct addrinfo hints;
- (void) gethostname(lhost, sizeof (lhost));
- memset (&hints, 0, sizeof (hints));
- hints.ai_family = PF_UNSPEC;
- hints.ai_flags = AI_CANONNAME;
- if (getaddrinfo(lhost, (char *)NULL, &hints, &ai) == 0
- && ai != NULL) {
- if (ai->ai_canonname != NULL) {
- downcase (ai->ai_canonname);
- domain = strchr (ai->ai_canonname, '.');
- if (domain != NULL) {
- cp = strstr (addrbuf, domain);
- if (cp != NULL)
- *cp = '\0';
- }
- }
- freeaddrinfo (ai);
- }
- }
- strncpy(*out, addrbuf, ut_host_len);
- (*out)[ut_host_len - 1] = '\0';
- if (strlen(*out) >= maxlen)
- goto use_ipaddr;
- return 0;
-}