* getty -- adapt to terminal speed on dialup, and call login
#define CQUIT 034 /* FS, cntl shift L */
#define CINTR 0177 /* DEL */
#define CSTOP 023 /* Stop output: ctl-s */
#define CSTART 021 /* Start output: ctl-q */
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
+XTABS
+ECHO
+CRMOD
+CR2
,
ANYP
+RAW
+NL1
+CR1
, ANYP
+XTABS
+ECHO
+CRMOD
+FF1
,
ANYP
+RAW
+NL1
+CR1
, EVENP
+ECHO
+FF1
+CR2
+TAB1
+NL1
,
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
,
/* 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
,
ANYP
+RAW
, ANYP
+ECHO
+CRMOD
,
ANYP
+RAW
, ANYP
+ECHO
+CRMOD
,
/* table '8'-'9' - - 9600 - 300 */
ANYP
+RAW
+NL1
+CR1
, ANYP
+XTABS
+ECHO
+CRMOD
,
ANYP
+RAW
+NL1
+CR2
, ANYP
+XTABS
+ECHO
+CRMOD
+CR2
,
/* table 'i' -- Interdata Console */
RAW
+CRMOD
, CRMOD
+ECHO
+LCASE
,
/* table 'l' -- LSI Chess Terminal */
ANYP
+RAW
/*+HUPCL*/, ANYP
+ECHO
/*+HUPCL*/,
#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
;
for(tabp
= itab
; tabp
< &itab
[NITAB
]; tabp
++)
tmode
.sg_ispeed
= tabp
->ispeed
;
tmode
.sg_ospeed
= tabp
->ospeed
;
tmode
.sg_flags
= tabp
->iflags
;
tmode
.sg_ispeed
= tabp
->ispeed
;
tmode
.sg_ospeed
= tabp
->ospeed
;
if (tmode
.sg_ospeed
> B1200
)
puts("\n\r\r\r\r\r\n\r\r\r\r\r");
* Wait a while, then flush input to get rid
* of noise from open lines
if (upper
== 0 && lower
== 0)
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;