- (void) sprintf(tbuf, "%s.%s", host, _res.defdname);
+ static char *domain = NULL;
+
+ if (domain == NULL) {
+#ifdef POSIX
+ (void) uname(&name);
+ strncpy(tbuf, name.nodename, sizeof(tbuf));
+#else
+ gethostname(tbuf, sizeof(tbuf));
+#endif
+ hp = gethostbyname(tbuf);
+ cp = strchr(hp->h_name, '.');
+ if (cp)
+ domain = strsave(++cp);
+ else
+ domain = "";
+ }
+ (void) sprintf(tbuf, "%s.%s", host, domain);