mirror of
https://github.com/GnoConsortium/gno.git
synced 2024-06-20 07:29:28 +00:00
Various changes to get getty compiling under GNO v2.0.6. In general
they are: - changed the makefile - prototyped functions - eliminated pathnames.h since all it does is #include <paths.h> - used gettytab.h for various function declarations - verified stack usage at 712 bytes - eliminated dummy gethostname() function. Instead, get it from libc. This exposes a problem with gethostname. See PR#59 for details. - eliminated a dependancy on strftime for the moment by calling ctime() instead. - Added GNO-formatted versions of the man pages.
This commit is contained in:
parent
ddb82cb2e0
commit
7d184b3391
|
@ -1,17 +1,28 @@
|
||||||
main.a: main.c pathnames.h
|
#
|
||||||
compile -i main.c keep=main
|
# $Id: Makefile,v 1.2 1998/04/10 16:17:33 gdr-ftp Exp $
|
||||||
|
#
|
||||||
|
|
||||||
init.a: init.c pathnames.h
|
PROG = getty
|
||||||
compile -i init.c keep=init
|
MAIN = main
|
||||||
|
SRCS = main.c gettytab.c init.c subr.c ttydeflts.c
|
||||||
|
LDADD = -lutil
|
||||||
|
CFLAGS += -DNO_STRFTIME
|
||||||
|
STACK = 1024 # 712 observed
|
||||||
|
BINDIR = /usr/sbin
|
||||||
|
|
||||||
subr.a: subr.c
|
CUSTOM_RELEASE = true
|
||||||
compile -i subr.c keep=subr
|
|
||||||
|
|
||||||
gettytab.a: gettytab.c pathnames.h
|
.INCLUDE: /src/gno/prog.mk
|
||||||
compile -i +w gettytab.c keep=gettytab
|
|
||||||
|
|
||||||
ttydflts.a: ttydefaults.c
|
release: $(OBJ_DIR)$(PROG) gettytab.5G getty.8G $(DESC)
|
||||||
compile -i ttydefaults.c keep=ttydflts
|
$(INSTALL) -d $(RELBIN) $(RELMAN)/man5 $(RELMAN)/man8 $(DESC_DIR)
|
||||||
|
$(INSTALL) $(OBJ_DIR)$(PROG) $(RELBIN)
|
||||||
|
$(INSTALL) gettytab.5G $(RELMAN)/man5/gettytab.5
|
||||||
|
$(INSTALL) getty.8G $(RELMAN)/man8/getty.8
|
||||||
|
$(DESCU) -o $(DESC_SRC) $(DESC_SRC) $(DESC)
|
||||||
|
|
||||||
getty: main.c init.c subr.c gettytab.c ttydefaults.c
|
install: $(OBJ_DIR)$(PROG) gettytab.5G getty.8G
|
||||||
compile linkfile
|
$(INSTALL) -d $(BINDIR) $(MANDIR)/man5 $(MANDIR)/man8 $(DESC_DIR)
|
||||||
|
$(INSTALL) $(OBJ_DIR)$(PROG) $(BINDIR)
|
||||||
|
$(INSTALL) gettytab.5G $(MANDIR)/man5/gettytab.5
|
||||||
|
$(INSTALL) getty.8G $(MANDIR)/man8/getty.8
|
||||||
|
|
122
usr.sbin/getty/getty.8G
Normal file
122
usr.sbin/getty/getty.8G
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
.\" Copyright (c) 1980, 1991 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 6.6 (Berkeley) 4/25/91
|
||||||
|
.\"
|
||||||
|
.TH GETTY 8 "8 April 1998" GNO "System Administration"
|
||||||
|
.SH NAME
|
||||||
|
.BR getty
|
||||||
|
\- set terminal mode
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.BR getty
|
||||||
|
[
|
||||||
|
.I type
|
||||||
|
[
|
||||||
|
.I tty
|
||||||
|
] ]
|
||||||
|
.SH DESCRIPTION
|
||||||
|
The
|
||||||
|
.BR getty
|
||||||
|
program
|
||||||
|
is called by
|
||||||
|
.BR init (8)
|
||||||
|
to open and initialize the tty line, read a login name, and invoke
|
||||||
|
.BR login (1).
|
||||||
|
.LP
|
||||||
|
The argument
|
||||||
|
.BR tty
|
||||||
|
is the special device
|
||||||
|
to open for the terminal (for example, ``.ttyco'').
|
||||||
|
If there is no argument or the argument is
|
||||||
|
.IR \- ,
|
||||||
|
the tty line is assumed to be open as file descriptor 0.
|
||||||
|
.LP
|
||||||
|
The
|
||||||
|
.BR type
|
||||||
|
argument can be used to make
|
||||||
|
.BR getty
|
||||||
|
treat the terminal line specially.
|
||||||
|
This argument is used as an index into the
|
||||||
|
.BR gettytab 5
|
||||||
|
database, to determine the characteristics of the line.
|
||||||
|
If there is no argument, or there is no such table, the
|
||||||
|
.IR default
|
||||||
|
table is used.
|
||||||
|
If there is no
|
||||||
|
/etc/gettytab ,
|
||||||
|
a set of system defaults is used.
|
||||||
|
If indicated by the table located,
|
||||||
|
.BR 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.
|
||||||
|
.LP
|
||||||
|
Most of the default actions of
|
||||||
|
.BR getty
|
||||||
|
can be circumvented, or modified, by a suitable
|
||||||
|
.BR gettytab
|
||||||
|
table.
|
||||||
|
.LP
|
||||||
|
The
|
||||||
|
.BR 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
|
||||||
|
.I "ttyxx: No such device or address."
|
||||||
|
.br
|
||||||
|
.I "ttyxx: No such file or address."
|
||||||
|
.RS
|
||||||
|
A terminal which is turned
|
||||||
|
on in the
|
||||||
|
.BR 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 device
|
||||||
|
does not exist.
|
||||||
|
.RE
|
||||||
|
.SH FILES
|
||||||
|
/etc/gettytab
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR gettytab (5),
|
||||||
|
.BR init (8),
|
||||||
|
.BR login (1),
|
||||||
|
.BR ioctl (2),
|
||||||
|
.BR tty (4),
|
||||||
|
.BR ttys (5)
|
||||||
|
.SH HISTORY
|
||||||
|
A
|
||||||
|
.BR getty
|
||||||
|
program appeared in Version 6 AT&T UNIX.
|
10
usr.sbin/getty/getty.desc
Normal file
10
usr.sbin/getty/getty.desc
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
Name: getty
|
||||||
|
Version: 2.1
|
||||||
|
Author: Maintained by Devin Reade
|
||||||
|
Contact: gdr@trenco.gno.org
|
||||||
|
Where: /usr/sbin
|
||||||
|
FTP: ftp.gno.org
|
||||||
|
|
||||||
|
Getty monitors serial lines and waits for users to log in, subsequently
|
||||||
|
passing control to login(1). It is not intended to be called by the
|
||||||
|
user.
|
18
usr.sbin/getty/getty.rez
Normal file
18
usr.sbin/getty/getty.rez
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* $Id: getty.rez,v 1.1 1998/04/10 16:17:41 gdr-ftp Exp $
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "Types.Rez"
|
||||||
|
#include "/src/gno/build.tools/builddate.rez"
|
||||||
|
|
||||||
|
resource rVersion (0x1, purgeable3, nocrossbank) {
|
||||||
|
|
||||||
|
{ 2, 1, 0, /* version */
|
||||||
|
release, /* development|alpha|beta|final|release */
|
||||||
|
0 /* non-final release number */
|
||||||
|
},
|
||||||
|
verUS,
|
||||||
|
"getty",
|
||||||
|
"monitor ttys and wait for logins\n"
|
||||||
|
BUILD_DATE
|
||||||
|
};
|
287
usr.sbin/getty/gettytab.5G
Normal file
287
usr.sbin/getty/gettytab.5G
Normal file
|
@ -0,0 +1,287 @@
|
||||||
|
.\" Copyright (c) 1983, 1991 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 6.7 (Berkeley) 5/10/91
|
||||||
|
.\"
|
||||||
|
.TH GETTYTAB 5 "8 April 1998" GNO "File Formats"
|
||||||
|
.SH NAME
|
||||||
|
.BR gettytab
|
||||||
|
\- terminal configuration data base
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.BR gettytab
|
||||||
|
.SH DESCRIPTION
|
||||||
|
The
|
||||||
|
.BR gettytab
|
||||||
|
file
|
||||||
|
is a simplified version of the
|
||||||
|
.BR termcap (5)
|
||||||
|
data base
|
||||||
|
used to describe terminal lines.
|
||||||
|
The initial terminal login process
|
||||||
|
.BR getty (8)
|
||||||
|
accesses the
|
||||||
|
.BR 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.
|
||||||
|
.LP
|
||||||
|
There is a default terminal class,
|
||||||
|
.IR default ,
|
||||||
|
that is used to set global defaults for all other classes.
|
||||||
|
(That is, the
|
||||||
|
.IR default
|
||||||
|
entry is read, then the entry for the class required
|
||||||
|
is used to override particular settings.)
|
||||||
|
.SH CAPABILITIES
|
||||||
|
Refer to
|
||||||
|
.BR termcap (5)
|
||||||
|
for a description of the file layout.
|
||||||
|
The
|
||||||
|
.IR default
|
||||||
|
column below lists defaults obtained if there is
|
||||||
|
no entry in the table obtained, nor one in the special
|
||||||
|
.IR default
|
||||||
|
table.
|
||||||
|
.nf
|
||||||
|
|
||||||
|
\fBName Type Default Description\fR
|
||||||
|
|
||||||
|
ap bool false terminal uses any parity
|
||||||
|
bd num 0 backspace delay
|
||||||
|
bk str 0377 alternate end of line character (input break)
|
||||||
|
cb bool false use crt backspace mode
|
||||||
|
cd num 0 carriage-return delay
|
||||||
|
ce bool false use crt erase algorithm
|
||||||
|
ck bool false use crt kill algorithm
|
||||||
|
cl str NULL screen clear sequence
|
||||||
|
co bool false console - add '\en' after login prompt
|
||||||
|
ds str \`^Y\' delayed suspend character
|
||||||
|
dx bool false set DECCTLQ
|
||||||
|
ec bool false leave echo OFF
|
||||||
|
ep bool false terminal uses even parity
|
||||||
|
er str \`^?\' erase character
|
||||||
|
et str \`^D\' end of text (EOF character)
|
||||||
|
ev str NULL initial enviroment
|
||||||
|
f0 num unused tty mode flags to write messages
|
||||||
|
f1 num unused tty mode flags to read login name
|
||||||
|
f2 num unused tty mode flags to leave terminal as
|
||||||
|
fd num 0 form-feed (vertical motion) delay
|
||||||
|
fl str \`^O\' output flush character
|
||||||
|
hc bool false do NOT hangup line on last close
|
||||||
|
he str NULL hostname editing string
|
||||||
|
hn str hostname hostname
|
||||||
|
ht bool false terminal has real tabs
|
||||||
|
ig bool false ignore garbage characters in login name
|
||||||
|
im str NULL initial (banner) message
|
||||||
|
in str \`^C\' interrupt character
|
||||||
|
is num unused input speed
|
||||||
|
kl str \`^U\' kill character
|
||||||
|
lc bool false terminal has lower case
|
||||||
|
lm str login: login prompt
|
||||||
|
ln str \`^V\' ``literal next'' character
|
||||||
|
lo str /usr/bin/login program to exec when name obtained
|
||||||
|
nd num 0 newline (line-feed) delay
|
||||||
|
nl bool false terminal has (or might have) a newline character
|
||||||
|
nx str default next table (for auto speed selection)
|
||||||
|
op bool false terminal uses odd parity
|
||||||
|
os num unused output speed
|
||||||
|
pc str \`\e0\' pad character
|
||||||
|
pe bool false use printer (hard copy) erase algorithm
|
||||||
|
pf num 0 delay between first prompt and following flush (seconds)
|
||||||
|
ps bool false line connected to a MICOM port selector
|
||||||
|
qu str \`\&^\e\' quit character
|
||||||
|
rp str \`^R\' line retype character
|
||||||
|
rw bool false do NOT use raw for input, use cbreak
|
||||||
|
sp num unused line speed (input and output)
|
||||||
|
su str \`^Z\' suspend character
|
||||||
|
tc str none table continuation
|
||||||
|
to num 0 timeout (seconds)
|
||||||
|
tt str NULL terminal type (for environment)
|
||||||
|
ub bool false do unbuffered output (of prompts etc)
|
||||||
|
uc bool false terminal is known upper case only
|
||||||
|
we str \`^W\' word erase character
|
||||||
|
xc bool false do NOT echo control chars as \`^X\'
|
||||||
|
xf str \`^S\' XOFF (stop output) character
|
||||||
|
xn str \`^Q\' XON (start output) character
|
||||||
|
.fi
|
||||||
|
.LP
|
||||||
|
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.
|
||||||
|
.LP
|
||||||
|
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 overriden
|
||||||
|
with one of the
|
||||||
|
.IR \&f0 ,
|
||||||
|
.IR \&f1 ,
|
||||||
|
or
|
||||||
|
.IR \&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.
|
||||||
|
.LP
|
||||||
|
Should
|
||||||
|
.BR getty
|
||||||
|
receive a null character
|
||||||
|
(presumed to indicate a line break)
|
||||||
|
it will restart using the table indicated by the
|
||||||
|
.IR nx
|
||||||
|
entry. If there is none, it will re-use its original table.
|
||||||
|
.LP
|
||||||
|
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.
|
||||||
|
.LP
|
||||||
|
The
|
||||||
|
.IR \&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
|
||||||
|
.IR \&pc .
|
||||||
|
.LP
|
||||||
|
The initial message, and login message,
|
||||||
|
.IR \&im
|
||||||
|
and
|
||||||
|
.IR \&lm
|
||||||
|
may include the character sequence
|
||||||
|
.IR \&%h
|
||||||
|
or
|
||||||
|
.IR \&%t
|
||||||
|
to obtain
|
||||||
|
the hostname or tty name respectively.
|
||||||
|
.RI ( %%
|
||||||
|
obtains a single '%' character.)
|
||||||
|
The hostname is normally obtained from the system,
|
||||||
|
but may be set by the
|
||||||
|
.IR \&hn
|
||||||
|
table entry.
|
||||||
|
In either case it may be edited with
|
||||||
|
.IR \&he .
|
||||||
|
The
|
||||||
|
.IR \&he
|
||||||
|
string is a sequence of characters, each character that
|
||||||
|
is neither '@' nor '#' is copied into the final hostname.
|
||||||
|
A '@' in the
|
||||||
|
.IR \&he
|
||||||
|
string, causes one character from the real hostname to
|
||||||
|
be copied to the final hostname.
|
||||||
|
A '#' in the
|
||||||
|
.IR \&he
|
||||||
|
string, causes the next character of the real hostname
|
||||||
|
to be skipped.
|
||||||
|
Surplus '@' and '#' characters are ignored.
|
||||||
|
.LP
|
||||||
|
When getty execs the login process, given
|
||||||
|
in the
|
||||||
|
.IR \&lo
|
||||||
|
string (usually
|
||||||
|
.BR /usr/bin/login ),
|
||||||
|
it will have set
|
||||||
|
the enviroment to include the terminal type, as indicated
|
||||||
|
by the
|
||||||
|
.IR \&tt
|
||||||
|
string (if it exists).
|
||||||
|
The
|
||||||
|
.IR \&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
|
||||||
|
.IR name=value .
|
||||||
|
.LP
|
||||||
|
If a non-zero timeout is specified, with
|
||||||
|
.IR \&to ,
|
||||||
|
then getty will exit within the indicated
|
||||||
|
number of seconds, either having
|
||||||
|
received a login name and passed control
|
||||||
|
to
|
||||||
|
.BR login ,
|
||||||
|
or having received an alarm signal, and exited.
|
||||||
|
This may be useful to hangup dial in lines.
|
||||||
|
.LP
|
||||||
|
Output from
|
||||||
|
.BR getty
|
||||||
|
is even parity unless
|
||||||
|
.IR \&op
|
||||||
|
is specified.
|
||||||
|
The
|
||||||
|
.IR \&op
|
||||||
|
string
|
||||||
|
may be specified with
|
||||||
|
.IR \&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.
|
||||||
|
.BR Getty
|
||||||
|
does not check parity of input characters in
|
||||||
|
.BR RAW
|
||||||
|
mode.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR login (1),
|
||||||
|
.BR termcap (5),
|
||||||
|
.BR getty (8).
|
||||||
|
.SH BUGS
|
||||||
|
The special characters (erase, kill, etc.) are reset to system defaults
|
||||||
|
by
|
||||||
|
.BR login (1).
|
||||||
|
In
|
||||||
|
.IR all
|
||||||
|
cases, '#' or '^H' typed in a login name will be treated as
|
||||||
|
an erase character, and '@' will be treated as a kill character.
|
||||||
|
.LP
|
||||||
|
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.
|
||||||
|
.LP
|
||||||
|
The
|
||||||
|
.IR \&he
|
||||||
|
capability is stupid.
|
||||||
|
.LP
|
||||||
|
The
|
||||||
|
.BR termcap
|
||||||
|
format is horrid, something more rational should
|
||||||
|
have been chosen.
|
||||||
|
.SH HISTORY
|
||||||
|
The
|
||||||
|
.BR gettytab
|
||||||
|
file format appeared in 4.2BSD.
|
|
@ -1,8 +1,3 @@
|
||||||
/*#pragma debug 25*/
|
|
||||||
/*#define BUG(__s) {fprintf(stderr,"%s\n",__s);}*/
|
|
||||||
#define BUG(__s)
|
|
||||||
#pragma optimize 31
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1983 The Regents of the University of California.
|
* Copyright (c) 1983 The Regents of the University of California.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
|
@ -36,9 +31,11 @@
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef __GNO__
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
static char sccsid[] = "@(#)gettytab.c 5.5 (Berkeley) 2/25/91";
|
static char sccsid[] = "@(#)gettytab.c 5.5 (Berkeley) 2/25/91";
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
@ -46,23 +43,28 @@ static char sccsid[] = "@(#)gettytab.c 5.5 (Berkeley) 2/25/91";
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include "pathnames.h"
|
#include <paths.h>
|
||||||
|
#include "gettytab.h"
|
||||||
|
|
||||||
|
#ifndef _PATH_GETTYTAB
|
||||||
|
#define _PATH_GETTYTAB "/etc/gettytab"
|
||||||
|
#endif
|
||||||
|
|
||||||
#define TABBUFSIZ 512
|
#define TABBUFSIZ 512
|
||||||
|
|
||||||
static char *tbuf;
|
static char *tbuf;
|
||||||
int hopcount; /* detect infinite loops in termcap, init 0 */
|
int hopcount; /* detect infinite loops in termcap, init 0 */
|
||||||
char *skip();
|
|
||||||
char *getstr();
|
static char * skip (register char *bp);
|
||||||
char *decode();
|
static char * decode (register char *str, char **area);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get an entry for terminal name in buffer bp,
|
* Get an entry for terminal name in buffer bp,
|
||||||
* from the termcap file. Parse is very rudimentary;
|
* from the termcap file. Parse is very rudimentary;
|
||||||
* we just notice escaped newlines.
|
* we just notice escaped newlines.
|
||||||
*/
|
*/
|
||||||
getent(bp, name)
|
int
|
||||||
char *bp, *name;
|
getent(char *bp, char *name)
|
||||||
{
|
{
|
||||||
register char *cp;
|
register char *cp;
|
||||||
register int c;
|
register int c;
|
||||||
|
@ -120,7 +122,8 @@ getent(bp, name)
|
||||||
* Note that this works because of the left to right scan.
|
* Note that this works because of the left to right scan.
|
||||||
*/
|
*/
|
||||||
#define MAXHOP 32
|
#define MAXHOP 32
|
||||||
nchktc()
|
int
|
||||||
|
nchktc(void)
|
||||||
{
|
{
|
||||||
register char *p, *q;
|
register char *p, *q;
|
||||||
char tcname[16]; /* name of similar terminal */
|
char tcname[16]; /* name of similar terminal */
|
||||||
|
@ -176,6 +179,7 @@ nchktc()
|
||||||
* against each such name. The normal : terminator after the last
|
* against each such name. The normal : terminator after the last
|
||||||
* name (before the first field) stops us.
|
* name (before the first field) stops us.
|
||||||
*/
|
*/
|
||||||
|
int
|
||||||
namatch(char *np)
|
namatch(char *np)
|
||||||
{
|
{
|
||||||
register char *Np, *Bp;
|
register char *Np, *Bp;
|
||||||
|
@ -202,8 +206,7 @@ namatch(char *np)
|
||||||
* into the termcap file in octal.
|
* into the termcap file in octal.
|
||||||
*/
|
*/
|
||||||
static char *
|
static char *
|
||||||
skip(bp)
|
skip(register char *bp)
|
||||||
register char *bp;
|
|
||||||
{
|
{
|
||||||
|
|
||||||
while (*bp && *bp != ':')
|
while (*bp && *bp != ':')
|
||||||
|
@ -222,8 +225,7 @@ skip(bp)
|
||||||
* Note that we handle octal numbers beginning with 0.
|
* Note that we handle octal numbers beginning with 0.
|
||||||
*/
|
*/
|
||||||
long
|
long
|
||||||
getnum(id)
|
getnum(char *id)
|
||||||
char *id;
|
|
||||||
{
|
{
|
||||||
register long i, base;
|
register long i, base;
|
||||||
register char *bp = tbuf;
|
register char *bp = tbuf;
|
||||||
|
@ -255,8 +257,8 @@ getnum(id)
|
||||||
* of the buffer. Return 1 if we find the option, or 0 if it is
|
* of the buffer. Return 1 if we find the option, or 0 if it is
|
||||||
* not given.
|
* not given.
|
||||||
*/
|
*/
|
||||||
getflag(id)
|
int
|
||||||
char *id;
|
getflag (char *id)
|
||||||
{
|
{
|
||||||
register char *bp = tbuf;
|
register char *bp = tbuf;
|
||||||
|
|
||||||
|
@ -284,8 +286,7 @@ getflag(id)
|
||||||
* No checking on area overflow.
|
* No checking on area overflow.
|
||||||
*/
|
*/
|
||||||
char *
|
char *
|
||||||
getstr(id, area)
|
getstr(char *id, char **area)
|
||||||
char *id, **area;
|
|
||||||
{
|
{
|
||||||
register char *bp = tbuf;
|
register char *bp = tbuf;
|
||||||
|
|
||||||
|
@ -309,9 +310,7 @@ getstr(id, area)
|
||||||
* string capability escapes.
|
* string capability escapes.
|
||||||
*/
|
*/
|
||||||
static char *
|
static char *
|
||||||
decode(str, area)
|
decode(register char *str, char **area)
|
||||||
register char *str;
|
|
||||||
char **area;
|
|
||||||
{
|
{
|
||||||
register char *cp;
|
register char *cp;
|
||||||
register int c;
|
register int c;
|
||||||
|
|
|
@ -136,12 +136,41 @@ struct gettyflags {
|
||||||
#define DX gettyflags[20].value
|
#define DX gettyflags[20].value
|
||||||
#define NP gettyflags[21].value
|
#define NP gettyflags[21].value
|
||||||
|
|
||||||
int getent();
|
struct delayval;
|
||||||
long getnum();
|
|
||||||
int getflag();
|
void addenv (char *vdef);
|
||||||
char *getstr();
|
int adelay (long ms, struct delayval *dp);
|
||||||
|
int delaybits (void);
|
||||||
|
void edithost (char *pat);
|
||||||
|
void gendefaults (void);
|
||||||
|
void gettable (char *name, char *buf, char *area);
|
||||||
|
void makeenv (void);
|
||||||
|
void setchars (void);
|
||||||
|
void setdefaults (void);
|
||||||
|
long setflags (int n);
|
||||||
|
int speed (long val);
|
||||||
|
|
||||||
|
|
||||||
|
char * portselector (void);
|
||||||
|
char * autobaud (void);
|
||||||
|
void set_ttydefaults (int fd);
|
||||||
|
int getent (char *bp, char *name);
|
||||||
|
int nchktc (void);
|
||||||
|
int namatch (char *np);
|
||||||
|
long getnum (char *id);
|
||||||
|
int getflag (char *id);
|
||||||
|
char * getstr (char *id, char **area);
|
||||||
|
|
||||||
extern struct gettyflags gettyflags[];
|
extern struct gettyflags gettyflags[];
|
||||||
extern struct gettynums gettynums[];
|
extern struct gettynums gettynums[];
|
||||||
extern struct gettystrs gettystrs[];
|
extern struct gettystrs gettystrs[];
|
||||||
extern int hopcount;
|
extern int hopcount;
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
#define BUG(__s) {fprintf(stderr,"%s\n",__s);}
|
||||||
|
#else
|
||||||
|
#define BUG(__s)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define rindex strrchr
|
||||||
|
|
||||||
|
|
|
@ -31,9 +31,11 @@
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef __GNO__
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
static char sccsid[] = "@(#)init.c 5.6 (Berkeley) 3/27/91";
|
static char sccsid[] = "@(#)init.c 5.6 (Berkeley) 3/27/91";
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Getty table initializations.
|
* Getty table initializations.
|
||||||
|
@ -41,8 +43,12 @@ static char sccsid[] = "@(#)init.c 5.6 (Berkeley) 3/27/91";
|
||||||
* Melbourne getty.
|
* Melbourne getty.
|
||||||
*/
|
*/
|
||||||
#include <sgtty.h>
|
#include <sgtty.h>
|
||||||
|
#include <paths.h>
|
||||||
#include "gettytab.h"
|
#include "gettytab.h"
|
||||||
#include "pathnames.h"
|
|
||||||
|
#ifndef _PATH_LOGIN
|
||||||
|
#define _PATH_LOGIN "/usr/sbin/login"
|
||||||
|
#endif
|
||||||
|
|
||||||
extern struct sgttyb tmode;
|
extern struct sgttyb tmode;
|
||||||
extern struct tchars tc;
|
extern struct tchars tc;
|
||||||
|
|
|
@ -1,192 +0,0 @@
|
||||||
DumpOBJ 2.0
|
|
||||||
|
|
||||||
Byte count : $00000382 898
|
|
||||||
Reserved space: $00000000 0
|
|
||||||
Length : $00000165 357
|
|
||||||
Label length : $00 0
|
|
||||||
Number length : $04 4
|
|
||||||
Version : $02 2
|
|
||||||
Bank size : $00010000 65536
|
|
||||||
Kind : $0000 0 (code,static)
|
|
||||||
Org : $00000000 0
|
|
||||||
Alignment : $00000000 0
|
|
||||||
Number sex : $00 0
|
|
||||||
Segment number: $0000 0
|
|
||||||
Segment entry : $00000000 0
|
|
||||||
Disp to names : $0030 48
|
|
||||||
Disp to body : $0044 68
|
|
||||||
Load name :
|
|
||||||
Segment name : login_tty
|
|
||||||
|
|
||||||
000044 000000 | LONGA ON
|
|
||||||
000044 000000 | LONGI ON
|
|
||||||
000044 000000 | login_tty START
|
|
||||||
000044 000000 | TSC
|
|
||||||
000046 000001 | SEC
|
|
||||||
000047 000002 | SBC #$0008
|
|
||||||
00004A 000005 | TCS
|
|
||||||
00004B 000006 | PHD
|
|
||||||
00004C 000007 | TCD
|
|
||||||
00004D 000008 | TSC
|
|
||||||
00004E 000009 | STA $07
|
|
||||||
000050 00000B | LDA $07
|
|
||||||
000052 00000D | PHA
|
|
||||||
000053 00000E | PEA ((login_tty+$0000010A)|$FFFFFFF0)
|
|
||||||
000062 000011 | PEA (login_tty+$0000010A)
|
|
||||||
00006C 000014 | JSL printf
|
|
||||||
000079 000018 | BRK $00
|
|
||||||
00007C 00001A | LDA $0C
|
|
||||||
00007E 00001C | PHA
|
|
||||||
00007F 00001D | JSL tcnewpgrp
|
|
||||||
00008E 000021 | LDX #$0000
|
|
||||||
000092 000024 | CMP #$FFFF
|
|
||||||
000095 000027 | BNE (login_tty+$0000002A)
|
|
||||||
0000A2 000029 | INX
|
|
||||||
0000A4 00002A | TXA
|
|
||||||
0000A6 00002B | BNE (login_tty+$00000030)
|
|
||||||
0000B3 00002D | BRL (login_tty+$0000003A)
|
|
||||||
0000C1 000030 | PEA (((login_tty+$0000010A)+$00000010)|$FFFFFFF0)
|
|
||||||
0000D7 000033 | PEA ((login_tty+$0000010A)+$00000010)
|
|
||||||
0000E7 000036 | JSL printf
|
|
||||||
0000F4 00003A | LDA $0C
|
|
||||||
0000F7 00003C | PHA
|
|
||||||
0000F8 00003D | JSL settpgrp
|
|
||||||
000106 000041 | LDA #$FFFF
|
|
||||||
00010A 000044 | LDX #$0000
|
|
||||||
00010D 000047 | TAY
|
|
||||||
00010E 000048 | BPL (login_tty+$0000004B)
|
|
||||||
00011B 00004A | DEX
|
|
||||||
00011D 00004B | LDY #$0001
|
|
||||||
000121 00004E | CMP $01,S
|
|
||||||
000123 000050 | BEQ (login_tty+$00000053)
|
|
||||||
000130 000052 | DEY
|
|
||||||
000132 000053 | TXA
|
|
||||||
000134 000054 | CMP $03,S
|
|
||||||
000136 000056 | BEQ (login_tty+$0000005B)
|
|
||||||
000143 000058 | LDY #$0000
|
|
||||||
000147 00005B | PLA
|
|
||||||
000149 00005C | PLA
|
|
||||||
00014A 00005D | TYA
|
|
||||||
00014B 00005E | BNE (login_tty+$00000063)
|
|
||||||
000158 000060 | BRL (login_tty+$0000006D)
|
|
||||||
000166 000063 | PEA (((login_tty+$0000010A)+$00000022)|$FFFFFFF0)
|
|
||||||
00017C 000066 | PEA ((login_tty+$0000010A)+$00000022)
|
|
||||||
00018C 000069 | JSL printf
|
|
||||||
000199 00006D | PEA $0000
|
|
||||||
00019D 000070 | PEA $0000
|
|
||||||
0001A0 000073 | PEA $2000
|
|
||||||
0001A3 000076 | PEA $7461
|
|
||||||
0001A6 000079 | LDA $0C
|
|
||||||
0001A8 00007B | PHA
|
|
||||||
0001A9 00007C | JSL ioctl
|
|
||||||
0001B4 000080 | LDX #$0000
|
|
||||||
0001B8 000083 | CMP #$FFFF
|
|
||||||
0001BB 000086 | BNE (login_tty+$00000089)
|
|
||||||
0001C8 000088 | INX
|
|
||||||
0001CA 000089 | TXA
|
|
||||||
0001CC 00008A | BNE (login_tty+$0000008F)
|
|
||||||
0001D9 00008C | BRL (login_tty+$000000A1)
|
|
||||||
0001E7 00008F | PEA (((login_tty+$0000010A)+$00000033)|$FFFFFFF0)
|
|
||||||
0001FD 000092 | PEA ((login_tty+$0000010A)+$00000033)
|
|
||||||
00020D 000095 | JSL printf
|
|
||||||
00021A 000099 | LDA #$FFFF
|
|
||||||
00021E 00009C | STA $01
|
|
||||||
000220 00009E | BRL (login_tty+$000000F7)
|
|
||||||
00022D 0000A1 | LDA #$0001
|
|
||||||
000231 0000A4 | PHA
|
|
||||||
000232 0000A5 | LDA $0C
|
|
||||||
000234 0000A7 | PHA
|
|
||||||
000235 0000A8 | JSL dup2
|
|
||||||
00023F 0000AC | LDA #$0002
|
|
||||||
000243 0000AF | PHA
|
|
||||||
000244 0000B0 | LDA $0C
|
|
||||||
000246 0000B2 | PHA
|
|
||||||
000247 0000B3 | JSL dup2
|
|
||||||
000251 0000B7 | LDA #$0003
|
|
||||||
000255 0000BA | PHA
|
|
||||||
000256 0000BB | LDA $0C
|
|
||||||
000258 0000BD | PHA
|
|
||||||
000259 0000BE | JSL dup2
|
|
||||||
000263 0000C2 | LDA $0C
|
|
||||||
000266 0000C4 | LDX #$0001
|
|
||||||
000269 0000C7 | SEC
|
|
||||||
00026A 0000C8 | SBC #$0003
|
|
||||||
00026D 0000CB | BEQ (login_tty+$000000D4)
|
|
||||||
00027A 0000CD | BVS (login_tty+$000000D2)
|
|
||||||
000288 0000CF | EOR #$8000
|
|
||||||
00028C 0000D2 | BMI (login_tty+$000000D5)
|
|
||||||
00029A 0000D4 | DEX
|
|
||||||
00029C 0000D5 | TXA
|
|
||||||
00029E 0000D6 | BNE (login_tty+$000000DB)
|
|
||||||
0002AB 0000D8 | BRL (login_tty+$000000E2)
|
|
||||||
0002B9 0000DB | LDA $0C
|
|
||||||
0002BC 0000DD | PHA
|
|
||||||
0002BD 0000DE | JSL close
|
|
||||||
0002C8 0000E2 | TSC
|
|
||||||
0002CA 0000E3 | STA $07
|
|
||||||
0002CC 0000E5 | LDA $07
|
|
||||||
0002CE 0000E7 | PHA
|
|
||||||
0002CF 0000E8 | PEA (((login_tty+$0000010A)+$0000004B)|$FFFFFFF0)
|
|
||||||
0002E4 0000EB | PEA ((login_tty+$0000010A)+$0000004B)
|
|
||||||
0002F4 0000EE | JSL printf
|
|
||||||
000301 0000F2 | STZ $01
|
|
||||||
000304 0000F4 | BRL (login_tty+$000000F7)
|
|
||||||
000311 0000F7 | LDA $0A
|
|
||||||
000314 0000F9 | STA $0C
|
|
||||||
000316 0000FB | LDA $09
|
|
||||||
000318 0000FD | STA $0B
|
|
||||||
00031A 0000FF | LDY $01
|
|
||||||
00031C 000101 | PLD
|
|
||||||
00031D 000102 | TSC
|
|
||||||
00031E 000103 | CLC
|
|
||||||
00031F 000104 | ADC #$000A
|
|
||||||
000322 000107 | TCS
|
|
||||||
000323 000108 | TYA
|
|
||||||
000324 000109 | RTL
|
|
||||||
000325 00010A | ADC ($74,S),Y
|
|
||||||
000328 00010C | ADC ($63,X)
|
|
||||||
00032A 00010E | RTL
|
|
||||||
00032B 00010F | JSR $7369
|
|
||||||
00032E 000112 | DEC A
|
|
||||||
00032F 000113 | JSR $3025
|
|
||||||
000332 000116 | BIT $58,X
|
|
||||||
000334 000118 | ASL A
|
|
||||||
000335 000119 | BRK $74
|
|
||||||
000337 00011B | ADC $6E,S
|
|
||||||
000339 00011D | ADC $77
|
|
||||||
00033B 00011F | BVS *+$69
|
|
||||||
00033D 000121 | ADC ($70)
|
|
||||||
00033F 000123 | JSR $6166
|
|
||||||
000342 000126 | ADC #$656C
|
|
||||||
000345 000129 | STZ $0A
|
|
||||||
000347 00012B | BRK $73
|
|
||||||
000349 00012D | ADC $74
|
|
||||||
00034B 00012F | STZ $70,X
|
|
||||||
00034D 000131 | ADC [$72]
|
|
||||||
00034F 000133 | BVS *+$22
|
|
||||||
000351 000135 | ROR $61
|
|
||||||
000353 000137 | ADC #$656C
|
|
||||||
000356 00013A | STZ $0A
|
|
||||||
000358 00013C | BRK $69
|
|
||||||
00035A 00013E | ADC >$6C7463
|
|
||||||
00035E 000142 | AND >$4F4954
|
|
||||||
000362 000146 | EOR $53,S
|
|
||||||
000364 000148 | EOR $54,S
|
|
||||||
000366 00014A | MVN $59,$20
|
|
||||||
000369 00014D | ROR $61
|
|
||||||
00036B 00014F | ADC #$656C
|
|
||||||
00036E 000152 | STZ $0A
|
|
||||||
000370 000154 | BRK $73
|
|
||||||
000372 000156 | STZ $61,X
|
|
||||||
000374 000158 | ADC $6B,S
|
|
||||||
000376 00015A | JSR $7369
|
|
||||||
000379 00015D | DEC A
|
|
||||||
00037A 00015E | JSR $3025
|
|
||||||
00037D 000161 | BIT $58,X
|
|
||||||
00037F 000163 | ASL A
|
|
||||||
000380 000164 | BRK ???
|
|
||||||
000382 000166 |
|
|
||||||
000383 000166 | END
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
main
|
|
||||||
init
|
|
||||||
subr
|
|
||||||
gettytab
|
|
||||||
ttydflts
|
|
||||||
../strftime/strftime
|
|
||||||
2/libgno
|
|
||||||
keep=getty
|
|
|
@ -1,9 +1,3 @@
|
||||||
/*#define BUG(__s) {fprintf(stderr,"%s\n",__s);}*/
|
|
||||||
#pragma optimize 31
|
|
||||||
#pragma stacksize 1024
|
|
||||||
#define BUG(__s)
|
|
||||||
#define rindex strrchr
|
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1980 The Regents of the University of California.
|
* Copyright (c) 1980 The Regents of the University of California.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
|
@ -37,6 +31,7 @@
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef __GNO__
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
char copyright[] =
|
char copyright[] =
|
||||||
"@(#) Copyright (c) 1980 The Regents of the University of California.\n\
|
"@(#) Copyright (c) 1980 The Regents of the University of California.\n\
|
||||||
|
@ -46,11 +41,11 @@ char copyright[] =
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
static char sccsid[] = "@(#)main.c 5.16 (Berkeley) 3/27/91";
|
static char sccsid[] = "@(#)main.c 5.16 (Berkeley) 3/27/91";
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
|
#endif
|
||||||
|
|
||||||
#define USE_OLD_TTY
|
#define USE_OLD_TTY
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <gno/gno.h>
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
@ -64,17 +59,19 @@ static char sccsid[] = "@(#)main.c 5.16 (Berkeley) 3/27/91";
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <paths.h>
|
||||||
|
#include <libutil.h>
|
||||||
|
#include <err.h>
|
||||||
|
#include <gno/gno.h>
|
||||||
#include "gettytab.h"
|
#include "gettytab.h"
|
||||||
#include "pathnames.h"
|
|
||||||
|
|
||||||
#ifndef HOSTNAME
|
static int getname (void);
|
||||||
#define MAXHOSTNAMELEN 10
|
static void putpad (char *s);
|
||||||
gethostname(char *name, int namelen)
|
static int puts (char *s);
|
||||||
{
|
static void putchr (int cc);
|
||||||
strncpy(name,"apple",namelen);
|
static void oflush (void);
|
||||||
return 0;
|
static void prompt (void);
|
||||||
}
|
static void putf (char *cp);
|
||||||
#endif
|
|
||||||
|
|
||||||
struct sgttyb tmode = {
|
struct sgttyb tmode = {
|
||||||
0, 0, CERASE, CKILL, 0
|
0, 0, CERASE, CKILL, 0
|
||||||
|
@ -94,7 +91,6 @@ char hostname[MAXHOSTNAMELEN];
|
||||||
char name[16];
|
char name[16];
|
||||||
char dev[] = _PATH_DEV;
|
char dev[] = _PATH_DEV;
|
||||||
char ttyn[32];
|
char ttyn[32];
|
||||||
char *portselector();
|
|
||||||
|
|
||||||
#ifdef __ORCAC__
|
#ifdef __ORCAC__
|
||||||
char *ttyname(int fino);
|
char *ttyname(int fino);
|
||||||
|
@ -158,9 +154,8 @@ interrupt(int sig, int code)
|
||||||
longjmp(intrupt, 1);
|
longjmp(intrupt, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
main(argc, argv)
|
int
|
||||||
int argc;
|
main(int argc, char **argv)
|
||||||
char **argv;
|
|
||||||
{
|
{
|
||||||
#ifndef __ORCAC__
|
#ifndef __ORCAC__
|
||||||
extern char **environ;
|
extern char **environ;
|
||||||
|
@ -170,6 +165,9 @@ main(argc, argv)
|
||||||
int repcnt = 0;
|
int repcnt = 0;
|
||||||
int tmp;
|
int tmp;
|
||||||
|
|
||||||
|
__REPORT_STACK();
|
||||||
|
|
||||||
|
|
||||||
signal(SIGINT, SIG_IGN);
|
signal(SIGINT, SIG_IGN);
|
||||||
/*
|
/*
|
||||||
signal(SIGQUIT, SIG_DFL);
|
signal(SIGQUIT, SIG_DFL);
|
||||||
|
@ -178,6 +176,7 @@ main(argc, argv)
|
||||||
gethostname(hostname, sizeof(hostname));
|
gethostname(hostname, sizeof(hostname));
|
||||||
if (hostname[0] == '\0')
|
if (hostname[0] == '\0')
|
||||||
strcpy(hostname, "Amnesiac");
|
strcpy(hostname, "Amnesiac");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The following is a work around for vhangup interactions
|
* The following is a work around for vhangup interactions
|
||||||
* which cause great problems getting window systems started.
|
* which cause great problems getting window systems started.
|
||||||
|
@ -249,8 +248,6 @@ main(argc, argv)
|
||||||
if (HC)
|
if (HC)
|
||||||
ioctl(STDIN_FILENO, TIOCHPCL, 0);
|
ioctl(STDIN_FILENO, TIOCHPCL, 0);
|
||||||
if (AB) {
|
if (AB) {
|
||||||
extern char *autobaud();
|
|
||||||
|
|
||||||
tname = autobaud();
|
tname = autobaud();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -323,7 +320,14 @@ main(argc, argv)
|
||||||
{
|
{
|
||||||
static char temp[256];
|
static char temp[256];
|
||||||
sprintf(temp,"login -p %s",name);
|
sprintf(temp,"login -p %s",name);
|
||||||
execve(LO,temp);
|
#ifdef __STACK_CHECK__
|
||||||
|
/*
|
||||||
|
* Because we're doing the _execve, we won't get it from
|
||||||
|
* the atexit(3) registered function.
|
||||||
|
*/
|
||||||
|
warnx("stack usage: %d bytes", _endStackCheck());
|
||||||
|
#endif
|
||||||
|
_execve(LO,temp);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
execle(LO, "login", "-p", name, (char *) 0, env);
|
execle(LO, "login", "-p", name, (char *) 0, env);
|
||||||
|
@ -339,7 +343,8 @@ main(argc, argv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getname()
|
static int
|
||||||
|
getname(void)
|
||||||
{
|
{
|
||||||
register int c;
|
register int c;
|
||||||
register char *np;
|
register char *np;
|
||||||
|
@ -425,6 +430,7 @@ short tmspc10[] = {
|
||||||
0, 2000, 1333, 909, 743, 666, 500, 333, 166, 83, 55, 41, 20, 10, 5, 15
|
0, 2000, 1333, 909, 743, 666, 500, 333, 166, 83, 55, 41, 20, 10, 5, 15
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void
|
||||||
putpad(char *s)
|
putpad(char *s)
|
||||||
{
|
{
|
||||||
register pad = 0;
|
register pad = 0;
|
||||||
|
@ -466,17 +472,20 @@ putpad(char *s)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* odd, another prototyping bug */
|
/* odd, another prototyping bug */
|
||||||
|
int
|
||||||
puts(char *s)
|
puts(char *s)
|
||||||
/*register char *s;*/
|
/*register char *s;*/
|
||||||
{
|
{
|
||||||
while (*s)
|
while (*s)
|
||||||
putchr(*s++);
|
putchr(*s++);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
char outbuf[OBUFSIZ];
|
char outbuf[OBUFSIZ];
|
||||||
int obufcnt = 0;
|
int obufcnt = 0;
|
||||||
|
|
||||||
putchr(cc)
|
static void
|
||||||
|
putchr(int cc)
|
||||||
{
|
{
|
||||||
char c;
|
char c;
|
||||||
|
|
||||||
|
@ -494,14 +503,16 @@ putchr(cc)
|
||||||
write(STDOUT_FILENO, &c, 1);
|
write(STDOUT_FILENO, &c, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
oflush()
|
static void
|
||||||
|
oflush(void)
|
||||||
{
|
{
|
||||||
if (obufcnt)
|
if (obufcnt)
|
||||||
write(STDOUT_FILENO, outbuf, obufcnt);
|
write(STDOUT_FILENO, outbuf, obufcnt);
|
||||||
obufcnt = 0;
|
obufcnt = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
prompt()
|
static void
|
||||||
|
prompt(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
putf(LM);
|
putf(LM);
|
||||||
|
@ -509,6 +520,7 @@ prompt()
|
||||||
putchr('\n');
|
putchr('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
putf(char *cp)
|
putf(char *cp)
|
||||||
{
|
{
|
||||||
extern char editedhost[];
|
extern char editedhost[];
|
||||||
|
@ -536,12 +548,26 @@ putf(char *cp)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'd': {
|
case 'd': {
|
||||||
|
#ifdef NO_STRFTIME
|
||||||
|
(void)time(&t);
|
||||||
|
puts(ctime(&t));
|
||||||
|
#else /* NO_STRFTIME */
|
||||||
|
#ifdef __GNO__
|
||||||
|
/*
|
||||||
|
* We don't use SCCS for the GNO sources, so we don't have
|
||||||
|
* to worry about a 'M' after a '%' character. As far as
|
||||||
|
* %P is concerned, it looks like it was just plain wrong.
|
||||||
|
*/
|
||||||
|
static char fmt[] = "%l:%M%p on %A, %d %B %Y";
|
||||||
|
#else /* __GNO__ */
|
||||||
static char fmt[] = "%l:% %P on %A, %d %B %Y";
|
static char fmt[] = "%l:% %P on %A, %d %B %Y";
|
||||||
|
|
||||||
fmt[4] = 'M'; /* I *hate* SCCS... */
|
fmt[4] = 'M'; /* I *hate* SCCS... */
|
||||||
|
#endif /* __GNO__ */
|
||||||
(void)time(&t);
|
(void)time(&t);
|
||||||
(void)strftime(db, sizeof(db), fmt, localtime(&t));
|
(void)strftime(db, sizeof(db), fmt, localtime(&t));
|
||||||
puts(db);
|
puts(db);
|
||||||
|
#endif /* NO_STRFTIME */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,37 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 1989 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 5.3 (Berkeley) 6/1/90
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <paths.h>
|
|
||||||
|
|
|
@ -1,9 +1,3 @@
|
||||||
/*#pragma debug 25 */
|
|
||||||
/*#define BUG(__s) {fprintf(stderr,"%s\n",__s);} */
|
|
||||||
#define BUG(__s)
|
|
||||||
#pragma optimize 31
|
|
||||||
#define index strchr
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1983 The Regents of the University of California.
|
* Copyright (c) 1983 The Regents of the University of California.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
|
@ -46,12 +40,12 @@ static char sccsid[] = "@(#)subr.c 5.10 (Berkeley) 2/26/91";
|
||||||
*/
|
*/
|
||||||
#define USE_OLD_TTY
|
#define USE_OLD_TTY
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <gno/gno.h> /* sleep... */
|
|
||||||
#include <sgtty.h>
|
#include <sgtty.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <shell.h>
|
#include <shell.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
#include <stdlib.h>
|
||||||
#include "gettytab.h"
|
#include "gettytab.h"
|
||||||
|
|
||||||
extern struct sgttyb tmode;
|
extern struct sgttyb tmode;
|
||||||
|
@ -61,8 +55,8 @@ extern struct ltchars ltc;
|
||||||
/*
|
/*
|
||||||
* Get a table entry.
|
* Get a table entry.
|
||||||
*/
|
*/
|
||||||
gettable(name, buf, area)
|
void
|
||||||
char *name, *buf, *area;
|
gettable(char *name, char *buf, char *area)
|
||||||
{
|
{
|
||||||
register struct gettystrs *sp;
|
register struct gettystrs *sp;
|
||||||
register struct gettynums *np;
|
register struct gettynums *np;
|
||||||
|
@ -95,7 +89,8 @@ gettable(name, buf, area)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gendefaults()
|
void
|
||||||
|
gendefaults(void)
|
||||||
{
|
{
|
||||||
register struct gettystrs *sp;
|
register struct gettystrs *sp;
|
||||||
register struct gettynums *np;
|
register struct gettynums *np;
|
||||||
|
@ -114,7 +109,8 @@ gendefaults()
|
||||||
fp->defalt = fp->invrt;
|
fp->defalt = fp->invrt;
|
||||||
}
|
}
|
||||||
|
|
||||||
setdefaults()
|
void
|
||||||
|
setdefaults(void)
|
||||||
{
|
{
|
||||||
register struct gettystrs *sp;
|
register struct gettystrs *sp;
|
||||||
register struct gettynums *np;
|
register struct gettynums *np;
|
||||||
|
@ -146,7 +142,8 @@ charvars[] = {
|
||||||
<c.t_werasc, <c.t_lnextc, 0
|
<c.t_werasc, <c.t_lnextc, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
setchars()
|
void
|
||||||
|
setchars(void)
|
||||||
{
|
{
|
||||||
register int i;
|
register int i;
|
||||||
register char *p;
|
register char *p;
|
||||||
|
@ -161,7 +158,7 @@ setchars()
|
||||||
}
|
}
|
||||||
|
|
||||||
long
|
long
|
||||||
setflags(n)
|
setflags(int n)
|
||||||
{
|
{
|
||||||
register long f;
|
register long f;
|
||||||
|
|
||||||
|
@ -280,7 +277,8 @@ struct delayval tbdelay[] = {
|
||||||
0, TAB2,
|
0, TAB2,
|
||||||
};
|
};
|
||||||
|
|
||||||
delaybits()
|
int
|
||||||
|
delaybits (void)
|
||||||
{
|
{
|
||||||
register f;
|
register f;
|
||||||
|
|
||||||
|
@ -292,6 +290,7 @@ delaybits()
|
||||||
return (f);
|
return (f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
adelay(long ms, struct delayval *dp)
|
adelay(long ms, struct delayval *dp)
|
||||||
{
|
{
|
||||||
if (ms == 0)
|
if (ms == 0)
|
||||||
|
@ -303,6 +302,7 @@ adelay(long ms, struct delayval *dp)
|
||||||
|
|
||||||
char editedhost[32];
|
char editedhost[32];
|
||||||
|
|
||||||
|
void
|
||||||
edithost(char *pat)
|
edithost(char *pat)
|
||||||
{
|
{
|
||||||
register char *host = HN;
|
register char *host = HN;
|
||||||
|
@ -366,6 +366,7 @@ struct speedtab {
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
int
|
||||||
speed(long val)
|
speed(long val)
|
||||||
{
|
{
|
||||||
register struct speedtab *sp;
|
register struct speedtab *sp;
|
||||||
|
@ -382,7 +383,9 @@ speed(long val)
|
||||||
|
|
||||||
#ifdef __ORCAC__
|
#ifdef __ORCAC__
|
||||||
|
|
||||||
void addenv(char *vdef)
|
#if 0
|
||||||
|
void
|
||||||
|
addenv(char *vdef)
|
||||||
{
|
{
|
||||||
char *q,*vdef2;
|
char *q,*vdef2;
|
||||||
static Set_VarPB setp;
|
static Set_VarPB setp;
|
||||||
|
@ -404,15 +407,36 @@ static ExportPB exp;
|
||||||
}
|
}
|
||||||
setp.var_name = vdef;
|
setp.var_name = vdef;
|
||||||
setp.value = vdef2;
|
setp.value = vdef2;
|
||||||
SET_VAR(setp);
|
SET_VAR(&setp);
|
||||||
exp.name = vdef;
|
exp.name = vdef;
|
||||||
exp.flags = 1;
|
exp.flags = 1;
|
||||||
EXPORT(&exp);
|
EXPORT(&exp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif /* 0 */
|
||||||
|
|
||||||
void makeenv(void)
|
void makeenv(void)
|
||||||
{
|
{
|
||||||
|
#if 1
|
||||||
|
char *p, *q;
|
||||||
|
|
||||||
|
environPush();
|
||||||
|
if (TT && *TT) {
|
||||||
|
setenv("TERM", TT, 1);
|
||||||
|
}
|
||||||
|
if ((p = EV) != NULL) {
|
||||||
|
q = p;
|
||||||
|
while (q = strchr(q, ',')) {
|
||||||
|
*q++ = '\0';
|
||||||
|
putenv(p);
|
||||||
|
p = q;
|
||||||
|
}
|
||||||
|
if (*p) {
|
||||||
|
putenv(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* 1 */
|
||||||
#ifdef __ORCAC__
|
#ifdef __ORCAC__
|
||||||
static char termbuf[128] = "TERM";
|
static char termbuf[128] = "TERM";
|
||||||
#else
|
#else
|
||||||
|
@ -435,6 +459,7 @@ char *p, *q;
|
||||||
if (*p)
|
if (*p)
|
||||||
addenv(p);
|
addenv(p);
|
||||||
}
|
}
|
||||||
|
#endif /* 0 */
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
@ -491,7 +516,7 @@ struct portselect {
|
||||||
};
|
};
|
||||||
|
|
||||||
char *
|
char *
|
||||||
portselector()
|
portselector(void)
|
||||||
{
|
{
|
||||||
char c, baud[20], *type = "default";
|
char c, baud[20], *type = "default";
|
||||||
register struct portselect *ps;
|
register struct portselect *ps;
|
||||||
|
@ -528,7 +553,7 @@ portselector()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
char *
|
char *
|
||||||
autobaud()
|
autobaud(void)
|
||||||
{
|
{
|
||||||
char c, *type = "9600-baud";
|
char c, *type = "9600-baud";
|
||||||
#ifdef SYS_TIME
|
#ifdef SYS_TIME
|
||||||
|
|
|
@ -41,8 +41,10 @@ static char sccsid[] = "@(#)ttydefaults.c 5.1 (Berkeley) 1/19/91";
|
||||||
#include <sgtty.h>
|
#include <sgtty.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
set_ttydefaults(fd)
|
#include "gettytab.h"
|
||||||
int fd;
|
|
||||||
|
void
|
||||||
|
set_ttydefaults(int fd)
|
||||||
{
|
{
|
||||||
#ifdef TERMIOS
|
#ifdef TERMIOS
|
||||||
struct termios term;
|
struct termios term;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user