* getty -- adapt to terminal speed on dialup, and call login
struct tchars tchars
= { '\177', '\034', '\021', '\023', '\004', '\377' };
char tname
; /* this table name */
char nname
; /* successor table name */
int iflags
; /* initial flags */
int fflags
; /* final flags */
int ispeed
; /* input speed */
int ospeed
; /* output speed */
char *message
; /* login message */
/* table '0'-1-2-3 300,1200,150,110 */
ANYP
+RAW
+NL1
+CR1
, ANYP
+ECHO
+CR1
,
ANYP
+RAW
+NL1
+CR1
, ANYP
+XTABS
+ECHO
+CRMOD
+FF1
,
ANYP
+RAW
+NL1
+CR1
, EVENP
+ECHO
+FF1
+CR2
+TAB1
+NL1
,
"\n\r\033:\006\006\017login: ",
ANYP
+RAW
+NL1
+CR1
, ANYP
+ECHO
+CRMOD
+XTABS
+LCASE
+CR1
,
/* table '-' -- Console TTY 110 */
ANYP
+RAW
+NL1
+CR1
, ANYP
+ECHO
+CRMOD
+XTABS
+LCASE
+CR1
,
ANYP
+RAW
+NL1
+CR1
, EVENP
+ECHO
+FF1
+CR2
+TAB1
+NL1
,
"\n\r\033:\006\006\017login: ",
ANYP
+RAW
+NL1
+CR1
, ANYP
+XTABS
+ECHO
+CRMOD
+FF1
,
/* table '3'-'5' -- 1200,300 */
ANYP
+RAW
+NL1
+CR1
, ANYP
+XTABS
+ECHO
+CRMOD
+FF1
,
/* table '5'-'3' -- 300,1200 */
ANYP
+RAW
+NL1
+CR1
, ANYP
+ECHO
+CR1
,
/* table '4' -- Console Decwriter */
ANYP
+RAW
, ANYP
+ECHO
+CRMOD
+XTABS
,
/* table 'i' -- Interdata Console */
RAW
+CRMOD
, CRMOD
+ECHO
+LCASE
,
/* table 'l' -- LSI Chess Terminal */
ANYP
+RAW
/*+HUPCL*/, ANYP
+ECHO
/*+HUPCL*/,
/* table '6' -- 2400 11/23 line */
ANYP
+RAW
+NL1
+CR1
, ANYP
+ECHO
,
#define NITAB sizeof itab/sizeof itab[0]
#define EOT 04 /* EOT char */
0001,0201,0201,0001,0201,0001,0001,0201,
0202,0004,0003,0205,0005,0206,0201,0001,
0201,0001,0001,0201,0001,0201,0201,0001,
0001,0201,0201,0001,0201,0001,0001,0201,
0200,0000,0000,0200,0000,0200,0200,0000,
0000,0200,0200,0000,0200,0000,0000,0200,
0000,0200,0200,0000,0200,0000,0000,0200,
0200,0000,0000,0200,0000,0200,0200,0000,
0200,0000,0000,0200,0000,0200,0200,0000,
0000,0200,0200,0000,0200,0000,0000,0200,
0000,0200,0200,0000,0200,0000,0000,0200,
0200,0000,0000,0200,0000,0200,0200,0000,
0000,0200,0200,0000,0200,0000,0000,0200,
0200,0000,0000,0200,0000,0200,0200,0000,
0200,0000,0000,0200,0000,0200,0200,0000,
0000,0200,0200,0000,0200,0000,0000,0201
register struct tab
*tabp
;
case '3': /* adapt to connect speed (212) */
ioctl(0, TIOCGETP
, &tmode
);
if (tmode
.sg_ispeed
==B300
)
for(tabp
= itab
; tabp
< &itab
[NITAB
]; tabp
++)
tmode
.sg_flags
= tabp
->iflags
;
tmode
.sg_ispeed
= tabp
->ispeed
;
tmode
.sg_ospeed
= tabp
->ospeed
;
ioctl(0, TIOCSETP
, &tmode
);
ioctl(0, TIOCSETC
, &tchars
);
tmode
.sg_flags
= tabp
->fflags
;
tmode
.sg_flags
&= ~LCASE
;
execl("/bin/login", "login", name
, 0);
if (read(0, &cs
, 1) <= 0)
if (c
=='\r' || c
=='\n' || np
>= &name
[16])
else if (c
>='A' && c
<='Z') {
c
|= partab
[c
&0177] & 0200;