From e61e66bd95e20d1a9a101c5a2efb4c638ca732f1 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Fri, 29 Jun 2007 01:50:50 +0200 Subject: 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 --- login-utils/agetty.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'login-utils/agetty.c') diff --git a/login-utils/agetty.c b/login-utils/agetty.c index eb9fab560..c82710394 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': { -- cgit v1.2.3-55-g7522