1/*	$NetBSD$	*/
2
3/*++
4/* NAME
5/*	get_domainname 3
6/* SUMMARY
7/*	network domain name lookup
8/* SYNOPSIS
9/*	#include <get_domainname.h>
10/*
11/*	const char *get_domainname()
12/* DESCRIPTION
13/*	get_domainname() returns the local domain name as obtained
14/*	by stripping the hostname component from the result from
15/*	get_hostname().  The result is the hostname when get_hostname()
16/*	does not return a FQDN form ("foo"), or its result has only two
17/*	components ("foo.com").
18/* DIAGNOSTICS
19/*	Fatal errors: no hostname, invalid hostname.
20/* SEE ALSO
21/*	get_hostname(3)
22/* LICENSE
23/* .ad
24/* .fi
25/*	The Secure Mailer license must be distributed with this software.
26/* AUTHOR(S)
27/*	Wietse Venema
28/*	IBM T.J. Watson Research
29/*	P.O. Box 704
30/*	Yorktown Heights, NY 10598, USA
31/*--*/
32
33/* System library. */
34
35#include <sys_defs.h>
36#include <string.h>
37
38/* Utility library. */
39
40#include "mymalloc.h"
41#include "get_hostname.h"
42#include "get_domainname.h"
43
44/* Local stuff. */
45
46static char *my_domain_name;
47
48/* get_domainname - look up my domain name */
49
50const char *get_domainname(void)
51{
52    const char *host;
53    const char *dot;
54
55    /*
56     * Use the hostname when it is not a FQDN ("foo"), or when the hostname
57     * actually is a domain name ("foo.com").
58     */
59    if (my_domain_name == 0) {
60	host = get_hostname();
61	if ((dot = strchr(host, '.')) == 0 || strchr(dot + 1, '.') == 0) {
62	    my_domain_name = mystrdup(host);
63	} else {
64	    my_domain_name = mystrdup(dot + 1);
65	}
66    }
67    return (my_domain_name);
68}
69