Insert the nodename of the machine, also known as the hostname.
.TP
o
-Insert the domainname of the machine.
+Insert the NIS domainname of the machine.
+.TP
+O
+Insert the DNS domainname of the machine.
.TP
r
Insert the release number of the OS, eg. 1.1.9.
#include <getopt.h>
#include <time.h>
#include <sys/file.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
#include "xstrncpy.h"
#include "nls.h"
*/
#ifndef BUFSIZ
#define BUFSIZ 1024
+#endif
+
+/* set a maximum length for the hostname, */
+#ifdef HOST_NAME_MAX
+# define HOSTNAME_LENGTH HOST_NAME_MAX /* defined by POSIX.1 */
+#elif defined(MAXHOSTNAMELEN)
+# define HOSTNAME_LENGTH MAXHOSTNAMELEN /* implemented in current Unix-versions */
+#else
+# define HOSTNAME_LENGTH 255
#endif
/*
}
break;
+ case 'O':
+ {
+ char *dom = "unknown_domain";
+ char host[HOST_NAME_MAX + 1];
+ struct addrinfo hints, *info = NULL;
+
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_flags = AI_CANONNAME;
+
+ if (gethostname(host, sizeof(host)) ||
+ getaddrinfo(host, NULL, &hints, &info) ||
+ info == NULL)
+ fputs(dom, stdout);
+ else {
+ char *canon;
+
+ if (info->ai_canonname &&
+ (canon = strchr(info->ai_canonname, '.')))
+ dom = canon + 1;
+ fputs(dom, stdout);
+ freeaddrinfo(info);
+ }
+ }
+ break;
+
case 'd':
case 't':
{