+
+RCSID("$Header$");
+
+static struct hostent *local_gethostbyname(void)
+{
+#ifdef HAVE_UNAME
+ struct utsname name;
+ uname(&name);
+ return gethostbyname(name.nodename);
+#else
+ char hostname[128];
+ gethostname(hostname, sizeof(hostname));
+ hostname[sizeof(hostname)-1] = 0;
+ return gethostbyname(hostname);
+#endif
+}
+
+static char *local_domain(void)
+{
+ static char *domain = NULL;
+ char *cp;
+ struct hostent *hp;
+
+ if (domain == NULL)
+ {
+ char hostbuf[256];
+
+ if (mr_host(hostbuf, sizeof(hostbuf)) == MR_SUCCESS)
+ {
+ cp = strchr(hostbuf, '.');
+ if (cp)
+ domain = strdup(++cp);
+ }
+ else
+ {
+ hp = local_gethostbyname();
+ if (hp)
+ {
+ cp = strchr(hp->h_name, '.');
+ if (cp)
+ domain = strdup(++cp);
+ }
+ }
+ if (!domain)
+ domain = "";
+ }
+
+ return domain;
+}