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
This commit is contained in:
David Bright 2017-09-07 00:20:17 +00:00
parent f526d86d75
commit ff48be37b5
4 changed files with 8 additions and 2 deletions

View File

@ -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"

View File

@ -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.

View File

@ -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 }
};

View File

@ -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)) {