From: Karel Zak Date: Thu, 28 Jun 2007 23:50:50 +0000 (+0200) Subject: agetty: add 'O' escape code to display domain name X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e61e66bd95e20d1a9a101c5a2efb4c638ca732f1;p=util-linux agetty: add 'O' escape code to display domain name This patch add a new 'O' escape code to display domain name by issue-file (/etc/issue) output. (Based on an Gentoo patch.) Signed-off-by: Karel Zak --- diff --git a/login-utils/agetty.8 b/login-utils/agetty.8 index 69be5f2b..dc18691f 100644 --- a/login-utils/agetty.8 +++ b/login-utils/agetty.8 @@ -217,7 +217,10 @@ n 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. diff --git a/login-utils/agetty.c b/login-utils/agetty.c index eb9fab56..c8271039 100644 --- a/login-utils/agetty.c +++ b/login-utils/agetty.c @@ -30,6 +30,9 @@ #include #include #include +#include +#include +#include #include "xstrncpy.h" #include "nls.h" @@ -120,6 +123,15 @@ */ #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 /* @@ -879,6 +891,31 @@ do_prompt(op, tp) } 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': {