diff --git a/libexec/getty/gettytab.5 b/libexec/getty/gettytab.5 index db6b1cc641c4..834e979f1b51 100644 --- a/libexec/getty/gettytab.5 +++ b/libexec/getty/gettytab.5 @@ -220,10 +220,15 @@ and .Em \&lm may include the character sequence .Em \&%h -or +to include the hostname, .Em \&%t -to obtain -the hostname or tty name respectively. +to obtain the tty name, +.Em \&%s +to obtain the OS type (FreeBSD), +.Em \&%r +to obtain the OS release string or +.Em \&%m +to obtain the machine architecture type. .Pf ( Em %% obtains a single '%' character.) The hostname is normally obtained from the system, diff --git a/libexec/getty/main.c b/libexec/getty/main.c index a161ed54eb21..d0cf1b9dd162 100644 --- a/libexec/getty/main.c +++ b/libexec/getty/main.c @@ -56,6 +56,7 @@ static char sccsid[] = "@(#)main.c 5.16 (Berkeley) 3/27/91"; #include #include #include +#include #include "gettytab.h" #include "pathnames.h" @@ -454,6 +455,7 @@ putf(cp) break; case 'h': + case 'n': puts(editedhost); break; @@ -464,8 +466,32 @@ putf(cp) (void)time(&t); (void)strftime(db, sizeof(db), fmt, localtime(&t)); puts(db); - break; } + break; + + case 's': { + struct utsname name; + + if (uname(&name) != -1) + puts(name.sysname); + } + break; + + case 'r': { + struct utsname name; + + if (uname(&name) != -1) + puts(name.release); + } + break; + + case 'm': { + struct utsname name; + + if (uname(&name) != -1) + puts(name.machine); + } + break; case '%': putchr('%');