From ff48be37b5e0fe277eaf8a46c732ea5e484bab9c Mon Sep 17 00:00:00 2001 From: David Bright Date: Thu, 7 Sep 2017 00:20:17 +0000 Subject: [PATCH] Add a new getty/gettytab capability to generate an initial message dynamically. This modification adds a new gettytab(5) option (iM) to specify a program to run that will generate the initial (banner) message that is displayed before the login prompt. Such a capability is useful when dynamic information is needed in the banner message that cannot be supplied by the set of % substitution sequences available in the "im" option. Reviewed by: vangyzen, wblock, manpages Approved by: vangyzen (mentor) MFC after: 1 week Relnotes: yes Sponsored by: Dell EMC Differential Revision: https://reviews.freebsd.org/D12108 --- libexec/getty/gettytab.5 | 6 ++++-- libexec/getty/gettytab.h | 1 + libexec/getty/init.c | 1 + libexec/getty/main.c | 2 ++ 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/libexec/getty/gettytab.5 b/libexec/getty/gettytab.5 index 0011f3ac65ad..b1ddda2dd5c3 100644 --- a/libexec/getty/gettytab.5 +++ b/libexec/getty/gettytab.5 @@ -28,7 +28,7 @@ .\" from: @(#)gettytab.5 8.4 (Berkeley) 4/19/94 .\" $FreeBSD$ .\" " -.Dd February 2, 2017 +.Dd August 23, 2017 .Dt GETTYTAB 5 .Os .Sh NAME @@ -130,6 +130,8 @@ hangup line on last close .It "ig bool false ignore garbage characters in login name" .It "im str" Ta Dv NULL .Ta No "initial (banner) message" +.It "iM str" Ta Dv NULL +.Ta No "execute named file to generate initial (banner) message" .It "in str" Ta So Li ^C .Sc Ta No "interrupt character" .It "is num unused input speed" @@ -146,7 +148,7 @@ hangup line on last close .It "mb bool false do flow control based on carrier" .It "nc bool false terminal does not supply carrier (set clocal)" .It "nl bool false terminal has (or might have) a newline character" -.It "np bool false terminal uses no parity (i.e. 8-bit characters)" +.It "np bool false terminal uses no parity (i.e., 8-bit characters)" .It "nx str default next table (for auto speed selection)" .It "o0 num unused tty output flags to write messages" .It "o1 num unused tty output flags to read login name" diff --git a/libexec/getty/gettytab.h b/libexec/getty/gettytab.h index 67ad95fa1768..83b17f013740 100644 --- a/libexec/getty/gettytab.h +++ b/libexec/getty/gettytab.h @@ -88,6 +88,7 @@ struct gettyflags { #define AC gettystrs[28].value #define AL gettystrs[29].value #define DF gettystrs[30].value +#define IMP gettystrs[31].value /* * Numeric definitions. diff --git a/libexec/getty/init.c b/libexec/getty/init.c index 6959e8d56235..a7077a332665 100644 --- a/libexec/getty/init.c +++ b/libexec/getty/init.c @@ -82,6 +82,7 @@ struct gettystrs gettystrs[] = { { "ac" }, /* modem answer-chat */ { "al" }, /* user to auto-login */ { "df", datefmt}, /* format for strftime() */ + { "iM" }, /* initial message program */ { 0 } }; diff --git a/libexec/getty/main.c b/libexec/getty/main.c index 94ecb0779cec..9b2c964873bf 100644 --- a/libexec/getty/main.c +++ b/libexec/getty/main.c @@ -324,6 +324,8 @@ main(int argc, char *argv[]) } first_time = 0; + if (IMP && *IMP && !(PL && PP)) + system(IMP); if (IM && *IM && !(PL && PP)) putf(IM); if (setjmp(timeout)) {