diff options
Diffstat (limited to 'libexec/getty')
-rw-r--r-- | libexec/getty/Makefile | 10 | ||||
-rw-r--r-- | libexec/getty/extern.h | 56 | ||||
-rw-r--r-- | libexec/getty/getty.8 | 127 | ||||
-rw-r--r-- | libexec/getty/gettytab.5 | 325 | ||||
-rw-r--r-- | libexec/getty/gettytab.h | 145 | ||||
-rw-r--r-- | libexec/getty/init.c | 121 | ||||
-rw-r--r-- | libexec/getty/main.c | 549 | ||||
-rw-r--r-- | libexec/getty/pathnames.h | 39 | ||||
-rw-r--r-- | libexec/getty/subr.c | 531 | ||||
-rw-r--r-- | libexec/getty/ttys.5 | 139 |
10 files changed, 0 insertions, 2042 deletions
diff --git a/libexec/getty/Makefile b/libexec/getty/Makefile deleted file mode 100644 index 7f2eabe6f0d7..000000000000 --- a/libexec/getty/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -# @(#)Makefile 8.1 (Berkeley) 6/4/93 - -PROG= getty -SRCS= main.c init.c subr.c ttydefaults.c -DPADD= ${LIBUTIL} -LDADD= -lutil -MAN5= gettytab.0 ttys.0 -MAN8= getty.0 - -.include <bsd.prog.mk> diff --git a/libexec/getty/extern.h b/libexec/getty/extern.h deleted file mode 100644 index 644f93f10747..000000000000 --- a/libexec/getty/extern.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)extern.h 8.1 (Berkeley) 6/4/93 - */ - -struct delayval; - -int adelay __P((int, struct delayval *)); -char *autobaud __P((void)); -int delaybits __P((void)); -void edithost __P((char *)); -void gendefaults __P((void)); -int getent __P((char *, char *)); -int getflag __P((char *)); -long getnum __P((char *)); -char *getstr __P((char *, char **)); -void gettable __P((char *, char *)); -void makeenv __P((char *[])); -char *portselector __P((void)); -void set_ttydefaults __P((int)); -void setchars __P((void)); -void setdefaults __P((void)); -long setflags __P((int)); -int speed __P((int)); - -int login_tty __P((int)); /* From libutil. */ diff --git a/libexec/getty/getty.8 b/libexec/getty/getty.8 deleted file mode 100644 index ffd506064046..000000000000 --- a/libexec/getty/getty.8 +++ /dev/null @@ -1,127 +0,0 @@ -.\" Copyright (c) 1980, 1991, 1993 -.\" The Regents of the University of California. All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. All advertising materials mentioning features or use of this software -.\" must display the following acknowledgement: -.\" This product includes software developed by the University of -.\" California, Berkeley and its contributors. -.\" 4. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" @(#)getty.8 8.1 (Berkeley) 6/4/93 -.\" -.Dd June 4, 1993 -.Dt GETTY 8 -.Os BSD 4 -.Sh NAME -.Nm getty -.Nd set terminal mode -.Sh SYNOPSIS -.Nm getty -.Oo -.Ar type -.Op Ar tty -.Oc -.Sh DESCRIPTION -The -.Nm getty -program -is called by -.Xr init 8 -to open and initialize the tty line, read a login name, and invoke -.Xr login 1 . -.Pp -The argument -.Ar tty -is the special device file in -.Pa /dev -to open for the terminal (for example, ``ttyh0''). -If there is no argument or the argument is -.Ql Fl , -the tty line is assumed to be open as file descriptor 0. -.Pp -The -.Ar type -argument can be used to make -.Nm getty -treat the terminal line specially. -This argument is used as an index into the -.Nm gettytab 5 -database, to determine the characteristics of the line. -If there is no argument, or there is no such table, the -.Em default -table is used. -If there is no -.Pa /etc/gettytab -a set of system defaults is used. -If indicated by the table located, -.Nm getty -will clear the terminal screen, -print a banner heading, -and prompt for a login name. -Usually either the banner or the login prompt will include -the system hostname. -.Pp -Most of the default actions of -.Nm getty -can be circumvented, or modified, by a suitable -.Nm gettytab -table. -.Pp -The -.Nm getty -program -can be set to timeout after some interval, -which will cause dial up lines to hang up -if the login name is not entered reasonably quickly. -.Sh DIAGNOSTICS -.Bl -diag -.It "ttyxx: No such device or address." -.It "ttyxx: No such file or address." -A terminal which is turned -on in the -.Xr ttys -file cannot be opened, likely because the requisite -lines are either not configured into the system, the associated device -was not attached during boot-time system configuration, -or the special file in -.Pa /dev -does not exist. -.El -.Sh FILES -.Bl -tag -width /etc/gettytab -compact -.It Pa /etc/gettytab -.El -.Sh SEE ALSO -.Xr gettytab 5 , -.Xr init 8 , -.Xr login 1 , -.Xr ioctl 2 , -.Xr tty 4 , -.Xr ttys 5 -.Sh HISTORY -A -.Nm getty -program appeared in -.At v6 . diff --git a/libexec/getty/gettytab.5 b/libexec/getty/gettytab.5 deleted file mode 100644 index e5de06bd976b..000000000000 --- a/libexec/getty/gettytab.5 +++ /dev/null @@ -1,325 +0,0 @@ -.\" Copyright (c) 1983, 1991, 1993 -.\" The Regents of the University of California. All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. All advertising materials mentioning features or use of this software -.\" must display the following acknowledgement: -.\" This product includes software developed by the University of -.\" California, Berkeley and its contributors. -.\" 4. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" @(#)gettytab.5 8.5 (Berkeley) 6/1/94 -.\" -.Dd June 1, 1994 -.Dt GETTYTAB 5 -.Os BSD 4.2 -.Sh NAME -.Nm gettytab -.Nd terminal configuration data base -.Sh SYNOPSIS -.Nm gettytab -.Sh DESCRIPTION -The -.Nm gettytab -file -is a simplified version of the -.Xr termcap 5 -data base -used to describe terminal lines. -The initial terminal login process -.Xr getty 8 -accesses the -.Nm gettytab -file each time it starts, allowing simpler -reconfiguration of terminal characteristics. -Each entry in the data base -is used to describe one class of terminals. -.Pp -There is a default terminal class, -.Em default , -that is used to set global defaults for all other classes. -(That is, the -.Em default -entry is read, then the entry for the class required -is used to override particular settings.) -.Sh CAPABILITIES -Refer to -.Xr termcap 5 -for a description of the file layout. -The -.Em default -column below lists defaults obtained if there is -no entry in the table obtained, nor one in the special -.Em default -table. -.Bl -column Namexx /usr/bin/login Default -.It Sy Name Type Default Description -.It "ap bool false terminal uses any parity" -.It "bd num 0 backspace delay" -.It "bk str 0377 alternate end of line character (input break)" -.It "cb bool false use crt backspace mode" -.It "cd num 0 carriage-return delay" -.It "ce bool false use crt erase algorithm" -.It "ck bool false use crt kill algorithm" -.It "cl str" Ta Dv NULL Ta -.No "screen clear sequence" -.It "co bool false console - add" -.Ql \en -after login prompt -.It "ds str" Ta So Li ^Y Sc Ta -.No "delayed suspend character" -.It "dx bool false set" -.Dv DECCTLQ -.It "ec bool false leave echo" -.Tn OFF -.It "ep bool false terminal uses even parity" -.It "er str" Ta So Li ^? Sc Ta -.No "erase character" -.It "et str" Ta So Li ^D Sc Ta -.No "end of text" -.Pq Dv EOF -character -.It "ev str" Ta Dv NULL Ta -.No "initial environment" -.It "f0 num unused tty mode flags to write messages" -.It "f1 num unused tty mode flags to read login name" -.It "f2 num unused tty mode flags to leave terminal as" -.It "fd num 0 form-feed (vertical motion) delay" -.It "fl str" Ta So Li ^O Sc Ta -.No "output flush character" -.It "hc bool false do" -.Tn NOT -hangup line on last close -.It "he str" Ta Dv NULL Ta -.No "hostname editing string" -.It "hn str hostname hostname" -.It "ht bool false terminal has real tabs" -.It "ig bool false ignore garbage characters in login name" -.It "im str" Ta Dv NULL Ta -.No "initial (banner) message" -.It "in str" Ta So Li ^C Sc Ta -.No "interrupt character" -.It "is num unused input speed" -.It "kl str" Ta So Li ^U Sc Ta -.No "kill character" -.It "lc bool false terminal has lower case" -.It "lm str login: login prompt" -.It "ln str" Ta So Li ^V Sc Ta -.No "``literal next'' character" -.It "lo str" Ta Pa /usr/bin/login Ta -.No "program to exec when name obtained" -.It "nd num 0 newline (line-feed) delay" -.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 "nx str default next table (for auto speed selection)" -.It "op bool false terminal uses odd parity" -.It "os num unused output speed" -.It "pc str" Ta So Li \e0 Sc Ta -.No "pad character" -.It "pe bool false use printer (hard copy) erase algorithm" -.It "pf num 0 delay" -between first prompt and following flush (seconds) -.It "ps bool false line connected to a" -.Tn MICOM -port selector -.It "qu str" Ta So Li \&^\e Sc Ta -.No "quit character" -.It "rp str" Ta So Li ^R Sc Ta -.No "line retype character" -.It "rw bool false do" -.Tn NOT -use raw for input, use cbreak -.It "sp num unused line speed (input and output)" -.It "su str" Ta So Li ^Z Sc Ta -.No "suspend character" -.It "tc str none table continuation" -.It "to num 0 timeout (seconds)" -.It "tt str" Ta Dv NULL Ta -.No "terminal type (for environment)" -.It "ub bool false do unbuffered output (of prompts etc)" -.It "uc bool false terminal is known upper case only" -.It "we str" Ta So Li ^W Sc Ta -.No "word erase character" -.It "xc bool false do -.Tn NOT -echo control chars as -.Ql ^X -.It "xf str" Ta So Li ^S Sc Ta Dv XOFF -(stop output) character -.It "xn str" Ta So Li ^Q Sc Ta Dv XON -(start output) character -.El -.Pp -If no line speed is specified, speed will not be altered -from that which prevails when getty is entered. -Specifying an input or output speed will override -line speed for stated direction only. -.Pp -Terminal modes to be used for the output of the message, -for input of the login name, -and to leave the terminal set as upon completion, -are derived from the boolean flags specified. -If the derivation should prove inadequate, -any (or all) of these three may be overridden -with one of the -.Em \&f0 , -.Em \&f1 , -or -.Em \&f2 -numeric specifications, which can be used to specify -(usually in octal, with a leading '0') -the exact values of the flags. -Local (new tty) flags are set in the top 16 bits -of this (32 bit) value. -.Pp -Should -.Xr getty -receive a null character -(presumed to indicate a line break) -it will restart using the table indicated by the -.Em nx -entry. If there is none, it will re-use its original table. -.Pp -Delays are specified in milliseconds, the nearest possible -delay available in the tty driver will be used. -Should greater certainty be desired, delays -with values 0, 1, 2, and 3 are interpreted as -choosing that particular delay algorithm from the driver. -.Pp -The -.Em \&cl -screen clear string may be preceded by a (decimal) number -of milliseconds of delay required (a la termcap). -This delay is simulated by repeated use of the pad character -.Em \&pc . -.pl -1 -.Pp -The initial message, and login message, -.Em \&im -and -.Em \&lm -may include the character sequence -.Em \&%h -or -.Em \&%t -to obtain -the hostname or tty name respectively. -.Pf ( Em %% -obtains a single '%' character.) -The hostname is normally obtained from the system, -but may be set by the -.Em \&hn -table entry. -In either case it may be edited with -.Em \&he . -The -.Em \&he -string is a sequence of characters, each character that -is neither '@' nor '#' is copied into the final hostname. -A '@' in the -.Em \&he -string, causes one character from the real hostname to -be copied to the final hostname. -A '#' in the -.Em \&he -string, causes the next character of the real hostname -to be skipped. -Surplus '@' and '#' characters are ignored. -.Pp -When getty execs the login process, given -in the -.Em \&lo -string (usually -.Dq Pa /usr/bin/login ) , -it will have set -the environment to include the terminal type, as indicated -by the -.Em \&tt -string (if it exists). -The -.Em \&ev -string, can be used to enter additional data into -the environment. -It is a list of comma separated strings, each of which -will presumably be of the form -.Em name=value . -.Pp -If a non-zero timeout is specified, with -.Em \&to , -then getty will exit within the indicated -number of seconds, either having -received a login name and passed control -to -.Xr login , -or having received an alarm signal, and exited. -This may be useful to hangup dial in lines. -.Pp -Output from -.Xr getty -is even parity unless -.Em \&op -is specified. -The -.Em \&op -string -may be specified with -.Em \&ap -to allow any parity on input, but generate odd parity output. -Note: this only applies while getty is being run, -terminal driver limitations prevent a more complete -implementation. -.Xr Getty -does not check parity of input characters in -.Dv RAW -mode. -.Sh SEE ALSO -.Xr login 1 , -.Xr termcap 5 , -.Xr getty 8 . -.Sh BUGS -The special characters (erase, kill, etc.) are reset to system defaults -by -.Xr login 1 . -In -.Em all -cases, '#' or '^H' typed in a login name will be treated as -an erase character, and '@' will be treated as a kill character. -.Pp -The delay stuff is a real crock. -Apart form its general lack of flexibility, some -of the delay algorithms are not implemented. -The terminal driver should support sane delay settings. -.Pp -The -.Em \&he -capability is stupid. -.Pp -The -.Xr termcap -format is horrid, something more rational should -have been chosen. -.Sh HISTORY -The -.Nm gettytab -file format appeared in 4.2BSD. diff --git a/libexec/getty/gettytab.h b/libexec/getty/gettytab.h deleted file mode 100644 index fb2b14f280d6..000000000000 --- a/libexec/getty/gettytab.h +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright (c) 1983, 1993, 1994 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)gettytab.h 8.2 (Berkeley) 3/30/94 - */ - -/* - * Getty description definitions. - */ -struct gettystrs { - char *field; /* name to lookup in gettytab */ - char *defalt; /* value we find by looking in defaults */ - char *value; /* value that we find there */ -}; - -struct gettynums { - char *field; /* name to lookup */ - long defalt; /* number we find in defaults */ - long value; /* number we find there */ - int set; /* we actually got this one */ -}; - -struct gettyflags { - char *field; /* name to lookup */ - char invrt; /* name existing in gettytab --> false */ - char defalt; /* true/false in defaults */ - char value; /* true/false flag */ - char set; /* we found it */ -}; - -/* - * String values. - */ -#define NX gettystrs[0].value -#define CL gettystrs[1].value -#define IM gettystrs[2].value -#define LM gettystrs[3].value -#define ER gettystrs[4].value -#define KL gettystrs[5].value -#define ET gettystrs[6].value -#define PC gettystrs[7].value -#define TT gettystrs[8].value -#define EV gettystrs[9].value -#define LO gettystrs[10].value -#define HN gettystrs[11].value -#define HE gettystrs[12].value -#define IN gettystrs[13].value -#define QU gettystrs[14].value -#define XN gettystrs[15].value -#define XF gettystrs[16].value -#define BK gettystrs[17].value -#define SU gettystrs[18].value -#define DS gettystrs[19].value -#define RP gettystrs[20].value -#define FL gettystrs[21].value -#define WE gettystrs[22].value -#define LN gettystrs[23].value - -/* - * Numeric definitions. - */ -#define IS gettynums[0].value -#define OS gettynums[1].value -#define SP gettynums[2].value -#define ND gettynums[3].value -#define CD gettynums[4].value -#define TD gettynums[5].value -#define FD gettynums[6].value -#define BD gettynums[7].value -#define TO gettynums[8].value -#define F0 gettynums[9].value -#define F0set gettynums[9].set -#define F1 gettynums[10].value -#define F1set gettynums[10].set -#define F2 gettynums[11].value -#define F2set gettynums[11].set -#define PF gettynums[12].value - -/* - * Boolean values. - */ -#define HT gettyflags[0].value -#define NL gettyflags[1].value -#define EP gettyflags[2].value -#define EPset gettyflags[2].set -#define OP gettyflags[3].value -#define OPset gettyflags[3].set -#define AP gettyflags[4].value -#define APset gettyflags[4].set -#define EC gettyflags[5].value -#define CO gettyflags[6].value -#define CB gettyflags[7].value -#define CK gettyflags[8].value -#define CE gettyflags[9].value -#define PE gettyflags[10].value -#define RW gettyflags[11].value -#define XC gettyflags[12].value -#define LC gettyflags[13].value -#define UC gettyflags[14].value -#define IG gettyflags[15].value -#define PS gettyflags[16].value -#define HC gettyflags[17].value -#define UB gettyflags[18].value -#define AB gettyflags[19].value -#define DX gettyflags[20].value -#define NP gettyflags[21].value - -int getent __P((char *, char *)); -long getnum __P((char *)); -int getflag __P((char *)); -char *getstr __P((char *, char **)); - -extern struct gettyflags gettyflags[]; -extern struct gettynums gettynums[]; -extern struct gettystrs gettystrs[]; -extern int hopcount; diff --git a/libexec/getty/init.c b/libexec/getty/init.c deleted file mode 100644 index 835acd753b43..000000000000 --- a/libexec/getty/init.c +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (c) 1983, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char sccsid[] = "@(#)init.c 8.1 (Berkeley) 6/4/93"; -#endif /* not lint */ - -/* - * Getty table initializations. - * - * Melbourne getty. - */ -#include <sgtty.h> -#include "gettytab.h" -#include "pathnames.h" - -extern struct sgttyb tmode; -extern struct tchars tc; -extern struct ltchars ltc; -extern char hostname[]; - -struct gettystrs gettystrs[] = { - { "nx" }, /* next table */ - { "cl" }, /* screen clear characters */ - { "im" }, /* initial message */ - { "lm", "login: " }, /* login message */ - { "er", &tmode.sg_erase }, /* erase character */ - { "kl", &tmode.sg_kill }, /* kill character */ - { "et", &tc.t_eofc }, /* eof chatacter (eot) */ - { "pc", "" }, /* pad character */ - { "tt" }, /* terminal type */ - { "ev" }, /* enviroment */ - { "lo", _PATH_LOGIN }, /* login program */ - { "hn", hostname }, /* host name */ - { "he" }, /* host name edit */ - { "in", &tc.t_intrc }, /* interrupt char */ - { "qu", &tc.t_quitc }, /* quit char */ - { "xn", &tc.t_startc }, /* XON (start) char */ - { "xf", &tc.t_stopc }, /* XOFF (stop) char */ - { "bk", &tc.t_brkc }, /* brk char (alt \n) */ - { "su", <c.t_suspc }, /* suspend char */ - { "ds", <c.t_dsuspc }, /* delayed suspend */ - { "rp", <c.t_rprntc }, /* reprint char */ - { "fl", <c.t_flushc }, /* flush output */ - { "we", <c.t_werasc }, /* word erase */ - { "ln", <c.t_lnextc }, /* literal next */ - { 0 } -}; - -struct gettynums gettynums[] = { - { "is" }, /* input speed */ - { "os" }, /* output speed */ - { "sp" }, /* both speeds */ - { "nd" }, /* newline delay */ - { "cd" }, /* carriage-return delay */ - { "td" }, /* tab delay */ - { "fd" }, /* form-feed delay */ - { "bd" }, /* backspace delay */ - { "to" }, /* timeout */ - { "f0" }, /* output flags */ - { "f1" }, /* input flags */ - { "f2" }, /* user mode flags */ - { "pf" }, /* delay before flush at 1st prompt */ - { 0 } -}; - -struct gettyflags gettyflags[] = { - { "ht", 0 }, /* has tabs */ - { "nl", 1 }, /* has newline char */ - { "ep", 0 }, /* even parity */ - { "op", 0 }, /* odd parity */ - { "ap", 0 }, /* any parity */ - { "ec", 1 }, /* no echo */ - { "co", 0 }, /* console special */ - { "cb", 0 }, /* crt backspace */ - { "ck", 0 }, /* crt kill */ - { "ce", 0 }, /* crt erase */ - { "pe", 0 }, /* printer erase */ - { "rw", 1 }, /* don't use raw */ - { "xc", 1 }, /* don't ^X ctl chars */ - { "lc", 0 }, /* terminal las lower case */ - { "uc", 0 }, /* terminal has no lower case */ - { "ig", 0 }, /* ignore garbage */ - { "ps", 0 }, /* do port selector speed select */ - { "hc", 1 }, /* don't set hangup on close */ - { "ub", 0 }, /* unbuffered output */ - { "ab", 0 }, /* auto-baud detect with '\r' */ - { "dx", 0 }, /* set decctlq */ - { "np", 0 }, /* no parity at all (8bit chars) */ - { 0 } -}; diff --git a/libexec/getty/main.c b/libexec/getty/main.c deleted file mode 100644 index c27ddf40a480..000000000000 --- a/libexec/getty/main.c +++ /dev/null @@ -1,549 +0,0 @@ -/*- - * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char copyright[] = -"@(#) Copyright (c) 1980, 1993\n\ - The Regents of the University of California. All rights reserved.\n"; -#endif /* not lint */ - -#ifndef lint -static char sccsid[] = "@(#)main.c 8.1 (Berkeley) 6/20/93"; -#endif /* not lint */ - -#define USE_OLD_TTY - -#include <sys/param.h> -#include <sys/stat.h> -#include <sys/resource.h> - -#include <ctype.h> -#include <ctype.h> -#include <fcntl.h> -#include <setjmp.h> -#include <sgtty.h> -#include <signal.h> -#include <stdlib.h> -#include <string.h> -#include <syslog.h> -#include <time.h> -#include <unistd.h> - -#include "gettytab.h" -#include "pathnames.h" -#include "extern.h" - -/* - * Set the amount of running time that getty should accumulate - * before deciding that something is wrong and exit. - */ -#define GETTY_TIMEOUT 60 /* seconds */ - -struct sgttyb tmode = { - 0, 0, CERASE, CKILL, 0 -}; -struct tchars tc = { - CINTR, CQUIT, CSTART, - CSTOP, CEOF, CBRK, -}; -struct ltchars ltc = { - CSUSP, CDSUSP, CRPRNT, - CFLUSH, CWERASE, CLNEXT -}; - -int crmod, digit, lower, upper; - -char hostname[MAXHOSTNAMELEN]; -char name[16]; -char dev[] = _PATH_DEV; -char ttyn[32]; -char *portselector(); -char *ttyname(); - -#define OBUFSIZ 128 -#define TABBUFSIZ 512 - -char defent[TABBUFSIZ]; -char tabent[TABBUFSIZ]; - -char *env[128]; - -char partab[] = { - 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 -}; - -#define ERASE tmode.sg_erase -#define KILL tmode.sg_kill -#define EOT tc.t_eofc - -jmp_buf timeout; - -static void -dingdong() -{ - - alarm(0); - signal(SIGALRM, SIG_DFL); - longjmp(timeout, 1); -} - -jmp_buf intrupt; - -static void -interrupt() -{ - - signal(SIGINT, interrupt); - longjmp(intrupt, 1); -} - -/* - * Action to take when getty is running too long. - */ -void -timeoverrun(signo) - int signo; -{ - - syslog(LOG_ERR, "getty exiting due to excessive running time\n"); - exit(1); -} - -static int getname __P((void)); -static void oflush __P((void)); -static void prompt __P((void)); -static void putchr __P((int)); -static void putf __P((char *)); -static void putpad __P((char *)); -static void puts __P((char *)); - -int -main(argc, argv) - int argc; - char *argv[]; -{ - extern char **environ; - char *tname; - long allflags; - int repcnt = 0; - struct rlimit limit; - - signal(SIGINT, SIG_IGN); -/* - signal(SIGQUIT, SIG_DFL); -*/ - openlog("getty", LOG_ODELAY|LOG_CONS, LOG_AUTH); - gethostname(hostname, sizeof(hostname)); - if (hostname[0] == '\0') - strcpy(hostname, "Amnesiac"); - - /* - * Limit running time to deal with broken or dead lines. - */ - (void)signal(SIGXCPU, timeoverrun); - limit.rlim_max = RLIM_INFINITY; - limit.rlim_cur = GETTY_TIMEOUT; - (void)setrlimit(RLIMIT_CPU, &limit); - - /* - * The following is a work around for vhangup interactions - * which cause great problems getting window systems started. - * If the tty line is "-", we do the old style getty presuming - * that the file descriptors are already set up for us. - * J. Gettys - MIT Project Athena. - */ - if (argc <= 2 || strcmp(argv[2], "-") == 0) - strcpy(ttyn, ttyname(0)); - else { - int i; - - strcpy(ttyn, dev); - strncat(ttyn, argv[2], sizeof(ttyn)-sizeof(dev)); - if (strcmp(argv[0], "+") != 0) { - chown(ttyn, 0, 0); - chmod(ttyn, 0600); - revoke(ttyn); - /* - * Delay the open so DTR stays down long enough to be detected. - */ - sleep(2); - while ((i = open(ttyn, O_RDWR)) == -1) { - if (repcnt % 10 == 0) { - syslog(LOG_ERR, "%s: %m", ttyn); - closelog(); - } - repcnt++; - sleep(60); - } - login_tty(i); - } - } - - gettable("default", defent); - gendefaults(); - tname = "default"; - if (argc > 1) - tname = argv[1]; - for (;;) { - int off; - - gettable(tname, tabent); - if (OPset || EPset || APset) - APset++, OPset++, EPset++; - setdefaults(); - off = 0; - ioctl(0, TIOCFLUSH, &off); /* clear out the crap */ - ioctl(0, FIONBIO, &off); /* turn off non-blocking mode */ - ioctl(0, FIOASYNC, &off); /* ditto for async mode */ - if (IS) - tmode.sg_ispeed = speed(IS); - else if (SP) - tmode.sg_ispeed = speed(SP); - if (OS) - tmode.sg_ospeed = speed(OS); - else if (SP) - tmode.sg_ospeed = speed(SP); - tmode.sg_flags = setflags(0); - ioctl(0, TIOCSETP, &tmode); - setchars(); - ioctl(0, TIOCSETC, &tc); - if (HC) - ioctl(0, TIOCHPCL, 0); - if (AB) { - extern char *autobaud(); - - tname = autobaud(); - continue; - } - if (PS) { - tname = portselector(); - continue; - } - if (CL && *CL) - putpad(CL); - edithost(HE); - if (IM && *IM) - putf(IM); - if (setjmp(timeout)) { - tmode.sg_ispeed = tmode.sg_ospeed = 0; - ioctl(0, TIOCSETP, &tmode); - exit(1); - } - if (TO) { - signal(SIGALRM, dingdong); - alarm(TO); - } - if (getname()) { - register int i; - - oflush(); - alarm(0); - signal(SIGALRM, SIG_DFL); - if (name[0] == '-') { - puts("user names may not start with '-'."); - continue; - } - if (!(upper || lower || digit)) - continue; - allflags = setflags(2); - tmode.sg_flags = allflags & 0xffff; - allflags >>= 16; - if (crmod || NL) - tmode.sg_flags |= CRMOD; - if (upper || UC) - tmode.sg_flags |= LCASE; - if (lower || LC) - tmode.sg_flags &= ~LCASE; - ioctl(0, TIOCSETP, &tmode); - ioctl(0, TIOCSLTC, <c); - ioctl(0, TIOCLSET, &allflags); - signal(SIGINT, SIG_DFL); - for (i = 0; environ[i] != (char *)0; i++) - env[i] = environ[i]; - makeenv(&env[i]); - - /* - * this is what login was doing anyway. - * soon we rewrite getty completely. - */ - set_ttydefaults(0); - limit.rlim_max = RLIM_INFINITY; - limit.rlim_cur = RLIM_INFINITY; - (void)setrlimit(RLIMIT_CPU, &limit); - execle(LO, "login", "-p", name, (char *) 0, env); - syslog(LOG_ERR, "%s: %m", LO); - exit(1); - } - alarm(0); - signal(SIGALRM, SIG_DFL); - signal(SIGINT, SIG_IGN); - if (NX && *NX) - tname = NX; - } -} - -static int -getname() -{ - register int c; - register char *np; - char cs; - - /* - * Interrupt may happen if we use CBREAK mode - */ - if (setjmp(intrupt)) { - signal(SIGINT, SIG_IGN); - return (0); - } - signal(SIGINT, interrupt); - tmode.sg_flags = setflags(0); - ioctl(0, TIOCSETP, &tmode); - tmode.sg_flags = setflags(1); - prompt(); - if (PF > 0) { - oflush(); - sleep(PF); - PF = 0; - } - ioctl(0, TIOCSETP, &tmode); - crmod = digit = lower = upper = 0; - np = name; - for (;;) { - oflush(); - if (read(STDIN_FILENO, &cs, 1) <= 0) - exit(0); - if ((c = cs&0177) == 0) - return (0); - if (c == EOT) - exit(1); - if (c == '\r' || c == '\n' || np >= &name[sizeof name]) { - putf("\r\n"); - break; - } - if (islower(c)) - lower = 1; - else if (isupper(c)) - upper = 1; - else if (c == ERASE || c == '#' || c == '\b') { - if (np > name) { - np--; - if (tmode.sg_ospeed >= B1200) - puts("\b \b"); - else - putchr(cs); - } - continue; - } else if (c == KILL || c == '@') { - putchr(cs); - putchr('\r'); - if (tmode.sg_ospeed < B1200) - putchr('\n'); - /* this is the way they do it down under ... */ - else if (np > name) - puts(" \r"); - prompt(); - np = name; - continue; - } else if (isdigit(c)) - digit++; - if (IG && (c <= ' ' || c > 0176)) - continue; - *np++ = c; - putchr(cs); - } - signal(SIGINT, SIG_IGN); - *np = 0; - if (c == '\r') - crmod = 1; - if (upper && !lower && !LC || UC) - for (np = name; *np; np++) - if (isupper(*np)) - *np = tolower(*np); - return (1); -} - -static -short tmspc10[] = { - 0, 2000, 1333, 909, 743, 666, 500, 333, 166, 83, 55, 41, 20, 10, 5, 15 -}; - -static void -putpad(s) - register char *s; -{ - register pad = 0; - register mspc10; - - if (isdigit(*s)) { - while (isdigit(*s)) { - pad *= 10; - pad += *s++ - '0'; - } - pad *= 10; - if (*s == '.' && isdigit(s[1])) { - pad += s[1] - '0'; - s += 2; - } - } - - puts(s); - /* - * If no delay needed, or output speed is - * not comprehensible, then don't try to delay. - */ - if (pad == 0) - return; - if (tmode.sg_ospeed <= 0 || - tmode.sg_ospeed >= (sizeof tmspc10 / sizeof tmspc10[0])) - return; - - /* - * Round up by a half a character frame, and then do the delay. - * Too bad there are no user program accessible programmed delays. - * Transmitting pad characters slows many terminals down and also - * loads the system. - */ - mspc10 = tmspc10[tmode.sg_ospeed]; - pad += mspc10 / 2; - for (pad /= mspc10; pad > 0; pad--) - putchr(*PC); -} - -static void -puts(s) - register char *s; -{ - while (*s) - putchr(*s++); -} - -char outbuf[OBUFSIZ]; -int obufcnt = 0; - -static void -putchr(cc) - int cc; -{ - char c; - - c = cc; - if (!NP) { - c |= partab[c&0177] & 0200; - if (OP) - c ^= 0200; - } - if (!UB) { - outbuf[obufcnt++] = c; - if (obufcnt >= OBUFSIZ) - oflush(); - } else - write(STDOUT_FILENO, &c, 1); -} - -static void -oflush() -{ - if (obufcnt) - write(STDOUT_FILENO, outbuf, obufcnt); - obufcnt = 0; -} - -static void -prompt() -{ - - putf(LM); - if (CO) - putchr('\n'); -} - -static void -putf(cp) - register char *cp; -{ - extern char editedhost[]; - time_t t; - char *slash, db[100]; - - while (*cp) { - if (*cp != '%') { - putchr(*cp++); - continue; - } - switch (*++cp) { - - case 't': - slash = strrchr(ttyn, '/'); - if (slash == (char *) 0) - puts(ttyn); - else - puts(&slash[1]); - break; - - case 'h': - puts(editedhost); - break; - - case 'd': { - static char fmt[] = "%l:% %P on %A, %d %B %Y"; - - fmt[4] = 'M'; /* I *hate* SCCS... */ - (void)time(&t); - (void)strftime(db, sizeof(db), fmt, localtime(&t)); - puts(db); - break; - } - - case '%': - putchr('%'); - break; - } - cp++; - } -} diff --git a/libexec/getty/pathnames.h b/libexec/getty/pathnames.h deleted file mode 100644 index 714a9ccc35bf..000000000000 --- a/libexec/getty/pathnames.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 1989, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)pathnames.h 8.1 (Berkeley) 6/4/93 - */ - -#include <paths.h> - -#define _PATH_GETTYTAB "/etc/gettytab" -#define _PATH_LOGIN "/usr/bin/login" diff --git a/libexec/getty/subr.c b/libexec/getty/subr.c deleted file mode 100644 index 4a2abb3ded41..000000000000 --- a/libexec/getty/subr.c +++ /dev/null @@ -1,531 +0,0 @@ -/* - * Copyright (c) 1983, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef lint -static char sccsid[] = "@(#)subr.c 8.1 (Berkeley) 6/4/93"; -#endif /* not lint */ - -/* - * Melbourne getty. - */ -#define USE_OLD_TTY -#include <stdlib.h> -#include <sgtty.h> -#include <string.h> -#include <unistd.h> - -#include "gettytab.h" -#include "extern.h" -#include "pathnames.h" - -extern struct sgttyb tmode; -extern struct tchars tc; -extern struct ltchars ltc; - -/* - * Get a table entry. - */ -void -gettable(name, buf) - char *name, *buf; -{ - register struct gettystrs *sp; - register struct gettynums *np; - register struct gettyflags *fp; - long n; - char *dba[2]; - dba[0] = _PATH_GETTYTAB; - dba[1] = 0; - - if (cgetent(&buf, dba, name) != 0) - return; - - for (sp = gettystrs; sp->field; sp++) - cgetstr(buf, sp->field, &sp->value); - for (np = gettynums; np->field; np++) { - if (cgetnum(buf, np->field, &n) == -1) - np->set = 0; - else { - np->set = 1; - np->value = n; - } - } - for (fp = gettyflags; fp->field; fp++) { - if (cgetcap(buf, fp->field, ':') == NULL) - fp->set = 0; - else { - fp->set = 1; - fp->value = 1 ^ fp->invrt; - } - } -#ifdef DEBUG - printf("name=\"%s\", buf=\"%s\"\n", name, buf); - for (sp = gettystrs; sp->field; sp++) - printf("cgetstr: %s=%s\n", sp->field, sp->value); - for (np = gettynums; np->field; np++) - printf("cgetnum: %s=%d\n", np->field, np->value); - for (fp = gettyflags; fp->field; fp++) - printf("cgetflags: %s='%c' set='%c'\n", fp->field, - fp->value + '0', fp->set + '0'); - exit(1); -#endif /* DEBUG */ -} - -void -gendefaults() -{ - register struct gettystrs *sp; - register struct gettynums *np; - register struct gettyflags *fp; - - for (sp = gettystrs; sp->field; sp++) - if (sp->value) - sp->defalt = sp->value; - for (np = gettynums; np->field; np++) - if (np->set) - np->defalt = np->value; - for (fp = gettyflags; fp->field; fp++) - if (fp->set) - fp->defalt = fp->value; - else - fp->defalt = fp->invrt; -} - -void -setdefaults() -{ - register struct gettystrs *sp; - register struct gettynums *np; - register struct gettyflags *fp; - - for (sp = gettystrs; sp->field; sp++) - if (!sp->value) - sp->value = sp->defalt; - for (np = gettynums; np->field; np++) - if (!np->set) - np->value = np->defalt; - for (fp = gettyflags; fp->field; fp++) - if (!fp->set) - fp->value = fp->defalt; -} - -static char ** -charnames[] = { - &ER, &KL, &IN, &QU, &XN, &XF, &ET, &BK, - &SU, &DS, &RP, &FL, &WE, &LN, 0 -}; - -static char * -charvars[] = { - &tmode.sg_erase, &tmode.sg_kill, &tc.t_intrc, - &tc.t_quitc, &tc.t_startc, &tc.t_stopc, - &tc.t_eofc, &tc.t_brkc, <c.t_suspc, - <c.t_dsuspc, <c.t_rprntc, <c.t_flushc, - <c.t_werasc, <c.t_lnextc, 0 -}; - -void -setchars() -{ - register int i; - register char *p; - - for (i = 0; charnames[i]; i++) { - p = *charnames[i]; - if (p && *p) - *charvars[i] = *p; - else - *charvars[i] = '\377'; - } -} - -long -setflags(n) - int n; -{ - register long f; - - switch (n) { - case 0: - if (F0set) - return(F0); - break; - case 1: - if (F1set) - return(F1); - break; - default: - if (F2set) - return(F2); - break; - } - - f = 0; - - if (AP) - f |= ANYP; - else if (OP) - f |= ODDP; - else if (EP) - f |= EVENP; - - if (UC) - f |= LCASE; - - if (NL) - f |= CRMOD; - - f |= delaybits(); - - if (n == 1) { /* read mode flags */ - if (RW) - f |= RAW; - else - f |= CBREAK; - return (f); - } - - if (!HT) - f |= XTABS; - - if (n == 0) - return (f); - - if (CB) - f |= CRTBS; - - if (CE) - f |= CRTERA; - - if (CK) - f |= CRTKIL; - - if (PE) - f |= PRTERA; - - if (EC) - f |= ECHO; - - if (XC) - f |= CTLECH; - - if (DX) - f |= DECCTQ; - - return (f); -} - -struct delayval { - unsigned delay; /* delay in ms */ - int bits; -}; - -/* - * below are random guesses, I can't be bothered checking - */ - -struct delayval crdelay[] = { - { 1, CR1 }, - { 2, CR2 }, - { 3, CR3 }, - { 83, CR1 }, - { 166, CR2 }, - { 0, CR3 }, -}; - -struct delayval nldelay[] = { - { 1, NL1 }, /* special, calculated */ - { 2, NL2 }, - { 3, NL3 }, - { 100, NL2 }, - { 0, NL3 }, -}; - -struct delayval bsdelay[] = { - { 1, BS1 }, - { 0, 0 }, -}; - -struct delayval ffdelay[] = { - { 1, FF1 }, - { 1750, FF1 }, - { 0, FF1 }, -}; - -struct delayval tbdelay[] = { - { 1, TAB1 }, - { 2, TAB2 }, - { 3, XTABS }, /* this is expand tabs */ - { 100, TAB1 }, - { 0, TAB2 }, -}; - -int -delaybits() -{ - register int f; - - f = adelay(CD, crdelay); - f |= adelay(ND, nldelay); - f |= adelay(FD, ffdelay); - f |= adelay(TD, tbdelay); - f |= adelay(BD, bsdelay); - return (f); -} - -int -adelay(ms, dp) - register ms; - register struct delayval *dp; -{ - if (ms == 0) - return (0); - while (dp->delay && ms > dp->delay) - dp++; - return (dp->bits); -} - -char editedhost[32]; - -void -edithost(pat) - register char *pat; -{ - register char *host = HN; - register char *res = editedhost; - - if (!pat) - pat = ""; - while (*pat) { - switch (*pat) { - - case '#': - if (*host) - host++; - break; - - case '@': - if (*host) - *res++ = *host++; - break; - - default: - *res++ = *pat; - break; - - } - if (res == &editedhost[sizeof editedhost - 1]) { - *res = '\0'; - return; - } - pat++; - } - if (*host) - strncpy(res, host, sizeof editedhost - (res - editedhost) - 1); - else - *res = '\0'; - editedhost[sizeof editedhost - 1] = '\0'; -} - -struct speedtab { - int speed; - int uxname; -} speedtab[] = { - { 50, B50 }, - { 75, B75 }, - { 110, B110 }, - { 134, B134 }, - { 150, B150 }, - { 200, B200 }, - { 300, B300 }, - { 600, B600 }, - { 1200, B1200 }, - { 1800, B1800 }, - { 2400, B2400 }, - { 4800, B4800 }, - { 9600, B9600 }, - { 19200, EXTA }, - { 19, EXTA }, /* for people who say 19.2K */ - { 38400, EXTB }, - { 38, EXTB }, - { 7200, EXTB }, /* alternative */ - { 0 } -}; - -int -speed(val) - int val; -{ - register struct speedtab *sp; - - if (val <= 15) - return (val); - - for (sp = speedtab; sp->speed; sp++) - if (sp->speed == val) - return (sp->uxname); - - return (B300); /* default in impossible cases */ -} - -void -makeenv(env) - char *env[]; -{ - static char termbuf[128] = "TERM="; - register char *p, *q; - register char **ep; - - ep = env; - if (TT && *TT) { - strcat(termbuf, TT); - *ep++ = termbuf; - } - if (p = EV) { - q = p; - while (q = strchr(q, ',')) { - *q++ = '\0'; - *ep++ = p; - p = q; - } - if (*p) - *ep++ = p; - } - *ep = (char *)0; -} - -/* - * This speed select mechanism is written for the Develcon DATASWITCH. - * The Develcon sends a string of the form "B{speed}\n" at a predefined - * baud rate. This string indicates the user's actual speed. - * The routine below returns the terminal type mapped from derived speed. - */ -struct portselect { - char *ps_baud; - char *ps_type; -} portspeeds[] = { - { "B110", "std.110" }, - { "B134", "std.134" }, - { "B150", "std.150" }, - { "B300", "std.300" }, - { "B600", "std.600" }, - { "B1200", "std.1200" }, - { "B2400", "std.2400" }, - { "B4800", "std.4800" }, - { "B9600", "std.9600" }, - { "B19200", "std.19200" }, - { 0 } -}; - -char * -portselector() -{ - char c, baud[20], *type = "default"; - register struct portselect *ps; - int len; - - alarm(5*60); - for (len = 0; len < sizeof (baud) - 1; len++) { - if (read(STDIN_FILENO, &c, 1) <= 0) - break; - c &= 0177; - if (c == '\n' || c == '\r') - break; - if (c == 'B') - len = 0; /* in case of leading garbage */ - baud[len] = c; - } - baud[len] = '\0'; - for (ps = portspeeds; ps->ps_baud; ps++) - if (strcmp(ps->ps_baud, baud) == 0) { - type = ps->ps_type; - break; - } - sleep(2); /* wait for connection to complete */ - return (type); -} - -/* - * This auto-baud speed select mechanism is written for the Micom 600 - * portselector. Selection is done by looking at how the character '\r' - * is garbled at the different speeds. - */ -#include <sys/time.h> - -char * -autobaud() -{ - int rfds; - struct timeval timeout; - char c, *type = "9600-baud"; - int null = 0; - - ioctl(0, TIOCFLUSH, &null); - rfds = 1 << 0; - timeout.tv_sec = 5; - timeout.tv_usec = 0; - if (select(32, (fd_set *)&rfds, (fd_set *)NULL, - (fd_set *)NULL, &timeout) <= 0) - return (type); - if (read(STDIN_FILENO, &c, sizeof(char)) != sizeof(char)) - return (type); - timeout.tv_sec = 0; - timeout.tv_usec = 20; - (void) select(32, (fd_set *)NULL, (fd_set *)NULL, - (fd_set *)NULL, &timeout); - ioctl(0, TIOCFLUSH, &null); - switch (c & 0377) { - - case 0200: /* 300-baud */ - type = "300-baud"; - break; - - case 0346: /* 1200-baud */ - type = "1200-baud"; - break; - - case 015: /* 2400-baud */ - case 0215: - type = "2400-baud"; - break; - - default: /* 4800-baud */ - type = "4800-baud"; - break; - - case 0377: /* 9600-baud */ - type = "9600-baud"; - break; - } - return (type); -} diff --git a/libexec/getty/ttys.5 b/libexec/getty/ttys.5 deleted file mode 100644 index cbbdbb67253c..000000000000 --- a/libexec/getty/ttys.5 +++ /dev/null @@ -1,139 +0,0 @@ -.\" Copyright (c) 1985, 1991, 1993 -.\" The Regents of the University of California. All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. All advertising materials mentioning features or use of this software -.\" must display the following acknowledgement: -.\" This product includes software developed by the University of -.\" California, Berkeley and its contributors. -.\" 4. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" @(#)ttys.5 8.1 (Berkeley) 6/4/93 -.\" -.Dd June 4, 1993 -.Dt TTYS 5 -.Os -.Sh NAME -.Nm ttys -.Nd terminal initialization information -.Sh DESCRIPTION -The file -.Nm ttys -contains information that is used by various routines to initialize -and control the use of terminal special files. -This information is read with the -.Xr getttyent 3 -library routines. -There is one line in the -.Nm ttys -file per special device file. -Fields are separated by tabs and/or spaces. -Fields comprised of more than one word should be enclosed in double -quotes (``"''). -Blank lines and comments may appear anywhere in the file; comments -are delimited by hash marks (``#'') and new lines. -Any unspecified fields will default to null. -.Pp -The first field is the -name of the terminal special file as it is found in -.Pa /dev . -.Pp -The second field of the file is the command to execute for the line, -usually -.Xr getty 8 , -which initializes and opens the line, setting the speed, waiting for -a user name and executing the -.Xr login 1 -program. -It can be, however, any desired command, for example -the start up for a window system terminal emulator or some other -daemon process, and can contain multiple words if quoted. -.Pp -The third field is the type of terminal usually connected to that -tty line, normally the one found in the -.Xr termcap 5 -data base file. -The environment variable -.Dv TERM -is initialized with the value by -either -.Xr getty 8 -or -.Xr login 1 . -.Pp -The remaining fields set flags in the -.Fa ty_status -entry (see -.Xr getttyent 3 ) -or specify a window system process that -.Xr init 8 -will maintain for the terminal line. -.Pp -As flag values, the strings ``on'' and ``off'' specify that -.Xr init -should (should not) execute the command given in the second field, -while ``secure'' (if ``on'' is also specified) allows users with a -uid of 0 to login on -this line. -These flag fields should not be quoted. -.Pp -The string ``window='' may be followed by a quoted command -string which -.Xr init -will execute -.Em before -starting the command specified by the second field. -.Sh EXAMPLES -.Bd -literal -# root login on console at 1200 baud -console "/usr/libexec/getty std.1200" vt100 on secure -# dialup at 1200 baud, no root logins -ttyd0 "/usr/libexec/getty d1200" dialup on # 555-1234 -# Mike's terminal: hp2621 -ttyh0 "/usr/libexec/getty std.9600" hp2621-nl on # 457 Evans -# John's terminal: vt100 -ttyh1 "/usr/libexec/getty std.9600" vt100 on # 459 Evans -# terminal emulate/window system -ttyv0 "/usr/new/xterm -L :0" vs100 on window="/usr/new/Xvs100 0" -# Network pseudo ttys -- don't enable getty -ttyp0 none network -ttyp1 none network off -.Ed -.Sh FILES -.Bl -tag -width /etc/ttys -compact -.It Pa /etc/ttys -.El -.Sh SEE ALSO -.Xr login 1 , -.Xr getttyent 3 , -.Xr ttyslot 3 , -.Xr gettytab 5 , -.Xr termcap 5 , -.Xr getty 8 , -.Xr init 8 -.Sh HISTORY -A -.Nm -file appeared in -.At v6 . |