From be06c7722fe019f167fd69fbfca2fdf4c0119108 Mon Sep 17 00:00:00 2001 From: dab Date: Mon, 25 Sep 2017 20:04:14 +0000 Subject: MFC r323252: 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. Sponsored by: Dell EMC --- 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 0011f3a..b1ddda2 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 67ad95f..83b17f0 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 6959e8d..a7077a3 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 94ecb07..9b2c964 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)) { -- cgit v1.1