]> git.ipfire.org Git - thirdparty/squid.git/blob - lib/getfullhostname.c
Source Format Enforcement (#763)
[thirdparty/squid.git] / lib / getfullhostname.c
1 /*
2 * Copyright (C) 1996-2021 The Squid Software Foundation and contributors
3 *
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
7 */
8
9 #include "squid.h"
10 #include "getfullhostname.h"
11
12 #if HAVE_UNISTD_H
13 /* for gethostname() function */
14 #include <unistd.h>
15 #endif
16 #if HAVE_NETDB_H
17 /* for gethostbyname() */
18 #include <netdb.h>
19 #endif
20
21 /* for RFC 2181 constants */
22 #include "rfc2181.h"
23
24 /* for xstrncpy() - may need breaking out of there. */
25 #include "util.h"
26
27 /**
28 * \retval nullptr An error occurred.
29 * \retval * The fully qualified name (FQDN) of the current host.
30 * Pointer is only valid until the next call to the
31 * gethost*() functions.
32 */
33 const char *
34 getfullhostname(void)
35 {
36 const struct hostent *hp = NULL;
37 // TODO: make this dynamic so the duration limit is flexible
38 static char buf[RFC2181_MAXHOSTNAMELEN + 1];
39
40 if (gethostname(buf, RFC2181_MAXHOSTNAMELEN) < 0)
41 return NULL;
42 // TODO: convert this to a getaddrinfo() call
43 if ((hp = gethostbyname(buf)) != NULL)
44 xstrncpy(buf, hp->h_name, RFC2181_MAXHOSTNAMELEN);
45 return buf;
46 }
47