v09i039: colxterm -- Color xterm, Part09/14
Tom Weinstein
tomw at orac.esd.sgi.com
Fri Sep 14 13:50:23 AEST 1990
Submitted-by: Tom Weinstein <tomw at orac.esd.sgi.com>
Posting-number: Volume 9, Issue 39
Archive-name: colxterm/part09
#! /bin/sh
# This is a shell archive. Remove anything before this line, then feed it
# into a shell via "sh file" or similar. To overwrite existing files,
# type "sh file -c".
# The tool that generated this appeared in the comp.sources.unix newsgroup;
# send mail to comp-sources-unix at uunet.uu.net if you want that tool.
# If this archive is complete, you will see the following message at the end:
# "End of archive 9 (of 14)."
# Contents: xterm/Makefile xterm/main.c.ab xterm/termcap.vi
# Wrapped by argv at turnpike on Thu Sep 13 20:42:29 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'xterm/Makefile' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'xterm/Makefile'\"
else
echo shar: Extracting \"'xterm/Makefile'\" \(25588 characters\)
sed "s/^X//" >'xterm/Makefile' <<'END_OF_FILE'
X# Makefile generated by imake - do not edit!
X# $XConsortium: imake.c,v 1.51 89/12/12 12:37:30 jim Exp $
X
X###########################################################################
X# Makefile generated from "Imake.tmpl" and <Imakefile>
X# $XConsortium: Imake.tmpl,v 1.77 89/12/18 17:01:37 jim Exp $
X#
X# Platform-specific parameters may be set in the appropriate .cf
X# configuration files. Site-wide parameters may be set in the file
X# site.def. Full rebuilds are recommended if any parameters are changed.
X#
X# If your C preprocessor doesn't define any unique symbols, you'll need
X# to set BOOTSTRAPCFLAGS when rebuilding imake (usually when doing
X# "make Makefile", "make Makefiles", or "make World").
X#
X# If you absolutely can't get imake to work, you'll need to set the
X# variables at the top of each Makefile as well as the dependencies at the
X# bottom (makedepend will do this automatically).
X#
X
X###########################################################################
X# platform-specific configuration parameters - edit sgi.cf to change
X
X###########################################################################
X# site-specific configuration parameters - edit site.def to change
X
X# site: $XConsortium: site.def,v 1.21 89/12/06 11:46:50 jim Exp $
X
XINSTMANDEVFLAGS = -m 0444 -i "x.man.dev"
X
X OPTIMIZER = -O2
X
X SHELL = /bin/sh
X
X TOP = ../../.
X CURRENT_DIR = ./clients/xterm
X
X AR = ar scq
X BOOTSTRAPCFLAGS = "$(OPTIMIZER)"
X CC = cc
X
X COMPRESS = compress
X CPP = /lib/cpp $(STD_CPP_DEFINES)
X PREPROCESSCMD = cc -E $(STD_CPP_DEFINES)
X INSTALL = $(SCRIPTSRC)/sgiinst.sh -I$(TOOLROOT)/etc/install
X LD = ld -L -L$(ROOT)/usr/lib
X LINT = lint
X LINTLIBFLAG = -o
X LINTOPTS = -ax
X LN = ln -s
X
X MV = mv
X CP = cp
X RANLIB = /bin/true
X RANLIBINSTFLAGS =
X RM = rm -f
X VENDOR_INCLUDES = -I -I$(ROOT)/usr/include
X STD_INCLUDES =
X STD_CPP_DEFINES = -DSYSV
X STD_DEFINES = -DSYSV -DMALLOC_0_RETURNS_NULL
X EXTRA_LOAD_FLAGS =
X EXTRA_LIBRARIES = -L -L$(ROOT)/usr/lib -lsun -lmalloc -lc_s
X TAGS = ctags
X
X SHAREDCODEDEF = -DSHAREDCODE
X SHLIBDEF = -DATTSHAREDLIB
X
X PROTO_DEFINES = -DFUNCPROTO -DNARROWPROTO
X
X INSTPGMFLAGS = -s
X
X INSTBINFLAGS = -m 0755
X INSTUIDFLAGS = -m 4755 -u root -i "x.sw.eoe"
X INSTLIBFLAGS = -m 0664 -i "x.sw.dev"
X INSTINCFLAGS = -m 0444 -i "x.sw.dev"
X INSTMANFLAGS = -m 0444 -i "x.man.eoe"
X INSTDATFLAGS = -m 0444
X INSTKMEMFLAGS = -m 2755 -g sys -i "x.sw.eoe"
X
X DESTDIR =
X
X TOP_INCLUDES = -I$(TOP)
X
X CDEBUGFLAGS = $(OPTIMIZER)
X CCOPTIONS = -prototypes -float
X COMPATFLAGS =
X
X ALLINCLUDES = $(STD_INCLUDES) $(TOP_INCLUDES) $(INCLUDES) $(EXTRA_INCLUDES) $(VENDOR_INCLUDES)
X ALLDEFINES = $(ALLINCLUDES) $(STD_DEFINES) $(PROTO_DEFINES) $(DEFINES) $(COMPATFLAGS)
X CFLAGS = $(CDEBUGFLAGS) $(CCOPTIONS) $(ALLDEFINES)
X LINTFLAGS = $(LINTOPTS) -DLINT $(ALLDEFINES)
X LDLIBS = $(SYS_LIBRARIES) $(EXTRA_LIBRARIES)
X LDOPTIONS = $(CDEBUGFLAGS) $(CCOPTIONS)
X LDCOMBINEFLAGS = -r
X
X MACROFILE = sgi.cf
X RM_CMD = $(RM) *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a .emacs_* tags TAGS make.log MakeOut
X
X IMAKE_DEFINES =
X
X IRULESRC = $(CONFIGSRC)
X IMAKE_CMD = $(NEWTOP)$(IMAKE) -I$(NEWTOP)$(IRULESRC) $(IMAKE_DEFINES)
X
X ICONFIGFILES = $(IRULESRC)/Imake.tmpl $(IRULESRC)/Imake.rules \
X $(IRULESRC)/Project.tmpl $(IRULESRC)/site.def \
X $(IRULESRC)/$(MACROFILE) $(EXTRA_ICONFIGFILES)
X
X###########################################################################
X# X Window System Build Parameters
X# $XConsortium: Project.tmpl,v 1.68 90/07/03 12:14:47 rws Exp $
X
X###########################################################################
X# X Window System make variables; this need to be coordinated with rules
X# $XConsortium: Project.tmpl,v 1.68 90/07/03 12:14:47 rws Exp $
X
X PATHSEP = /
X USRLIBDIR = $(DESTDIR)/usr/lib
X BINDIR = $(DESTDIR)/usr/bin/X11
X INCROOT = $(DESTDIR)/usr/include
X BUILDINCROOT = $(TOP)
X BUILDINCDIR = $(BUILDINCROOT)/X11
X BUILDINCTOP = ..
X INCDIR = $(INCROOT)/X11
X ADMDIR = $(DESTDIR)/usr/adm
X LIBDIR = $(USRLIBDIR)/X11
X CONFIGDIR = $(LIBDIR)/config
X LINTLIBDIR = $(USRLIBDIR)/lint
X
X FONTDIR = $(LIBDIR)/fonts
X XINITDIR = $(LIBDIR)/xinit
X XDMDIR = $(LIBDIR)/xdm
X AWMDIR = $(LIBDIR)/awm
X TWMDIR = $(LIBDIR)/twm
X GWMDIR = $(LIBDIR)/gwm
X MANPATH = $(DESTDIR)/usr/man
X MANSOURCEPATH = $(MANPATH)/man
X MANDIR = $(DESTDIR)/usr/catman/u_man/cat1/X11
X LIBMANDIR = $(DESTDIR)/usr/catman/p_man/cat3
X XAPPLOADDIR = $(LIBDIR)/app-defaults
X
X FONTCFLAGS = -t
X
X INSTAPPFLAGS = $(INSTDATFLAGS)
X
X IMAKE = $(IMAKESRC)/imake
X DEPEND = $(DEPENDSRC)/makedepend
X RGB = $(RGBSRC)/rgb
X FONTC = $(BDFTOSNFSRC)/bdftosnf
X MKFONTDIR = $(MKFONTDIRSRC)/mkfontdir
X MKDIRHIER = /bin/sh $(SCRIPTSRC)/mkdirhier.sh
X
X CONFIGSRC = $(TOP)/config
X CLIENTSRC = $(TOP)/clients
X DEMOSRC = $(TOP)/demos
X LIBSRC = $(TOP)/lib
X FONTSRC = $(TOP)/fonts
X INCLUDESRC = $(TOP)/X11
X SERVERSRC = $(TOP)/server
X UTILSRC = $(TOP)/util
X SCRIPTSRC = $(UTILSRC)/scripts
X EXAMPLESRC = $(TOP)/examples
X CONTRIBSRC = $(TOP)/../contrib
X DOCSRC = $(TOP)/doc
X RGBSRC = $(TOP)/rgb
X DEPENDSRC = $(UTILSRC)/makedepend
X IMAKESRC = $(CONFIGSRC)
X XAUTHSRC = $(LIBSRC)/Xau
X XLIBSRC = $(LIBSRC)/X
X XMUSRC = $(LIBSRC)/Xmu
X TOOLKITSRC = $(LIBSRC)/Xt
X AWIDGETSRC = $(LIBSRC)/Xaw
X OLDXLIBSRC = $(LIBSRC)/oldX
X XDMCPLIBSRC = $(LIBSRC)/Xdmcp
X BDFTOSNFSRC = $(FONTSRC)/bdftosnf
X MKFONTDIRSRC = $(FONTSRC)/mkfontdir
X EXTENSIONSRC = $(TOP)/extensions
X
X DEPEXTENSIONLIB = $(EXTENSIONSRC)/lib/libXext.a
X EXTENSIONLIB = $(DEPEXTENSIONLIB)
X
X DEPXLIB = $(DEPEXTENSIONLIB)
X# XLIB = $(EXTENSIONLIB) -L$(XLIBSRC) -lX11_s
X XLIB = $(EXTENSIONLIB) -L$(XLIBSRC) -lX11
X
X DEPXAUTHLIB = $(XAUTHSRC)/libXau.a
X XAUTHLIB = $(DEPXAUTHLIB)
X
X DEPXMULIB = $(XMUSRC)/libXmu.a
X XMULIB = $(DEPXMULIB)
X
X DEPOLDXLIB = $(OLDXLIBSRC)/liboldX.a
X OLDXLIB = $(DEPOLDXLIB)
X
X DEPXTOOLLIB = $(TOOLKITSRC)/libXt.a
X XTOOLLIB = $(DEPXTOOLLIB)
X
X DEPXAWLIB = $(AWIDGETSRC)/libXaw.a
X XAWLIB = $(DEPXAWLIB)
X
X LINTEXTENSIONLIB = $(EXTENSIONSRC)/lib/llib-lXext.ln
X LINTXLIB = $(XLIBSRC)/llib-lX11.ln
X LINTXMU = $(XMUSRC)/llib-lXmu.ln
X LINTXTOOL = $(TOOLKITSRC)/llib-lXt.ln
X LINTXAW = $(AWIDGETSRC)/llib-lXaw.ln
X
X DEPLIBS = $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB)
X
X DEPLIBS1 = $(DEPLIBS)
X DEPLIBS2 = $(DEPLIBS)
X DEPLIBS3 = $(DEPLIBS)
X
X###########################################################################
X# Imake rules for building libraries, programs, scripts, and data files
X# rules: $XConsortium: Imake.rules,v 1.70 90/05/04 16:57:30 keith Exp $
X
X###########################################################################
X# start of Imakefile
X
X###########################################################################
X# #
X# Attention xterm porters #
X# #
X# #
X# Xterm assumes that bcopy can handle overlapping arguments. If your #
X# bcopy (or memcpy) can't, write a routine called bcopy and link it in #
X# or add -Dbcopy=mybcopy to the DEFINES list below. #
X# #
X###########################################################################
X
X TTYGROUPDEF = -DUSE_TTY_GROUP
X
X MAIN_DEFINES = -DUTMP $(TTYGROUPDEF) $(PUCCPTYDDEF) -DWTMP -DLASTLOG
X MISC_DEFINES =
X
X SRCS1 = button.c charproc.c cursor.c data.c input.c \
X main.c menu.c misc.c screen.c scrollbar.c tabs.c \
X TekPrsTbl.c Tekproc.c util.c VTPrsTbl.c
X OBJS1 = main.o input.o charproc.o cursor.o util.o tabs.o \
X screen.o scrollbar.o button.o Tekproc.o misc.o \
X VTPrsTbl.o TekPrsTbl.o data.o menu.o
X SRCS2 = resize.c
X OBJS2 = resize.o
X SRCS = $(SRCS1) $(SRCS2)
X OBJS = $(OBJS1) $(OBJS2)
X PROGRAMS = resize xterm
X DEPLIBS1 = $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB)
X DEPLIBS2 =
X PROGRAMS = xterm resize
X
X TERMCAPLIB = -ltermlib
X
Xall:: $(PROGRAMS)
X
Xmain.o:
X $(RM) $@ $*.os \
X && $(CC) -c $(CFLAGS) $(MAIN_DEFINES) $*.c \
X && $(LD) -x -r $@ -o $*.os \
X && $(MV) $*.os $@
X
Xmisc.o:
X $(RM) $@ $*.os \
X && $(CC) -c $(CFLAGS) $(MISC_DEFINES) $*.c \
X && $(LD) -x -r $@ -o $*.os \
X && $(MV) $*.os $@
X
Xcharproc.o:
X $(RM) $@ $*.os \
X && $(CC) -c $(CFLAGS) $(MISC_DEFINES) $*.c \
X && $(LD) -x -r $@ -o $*.os \
X && $(MV) $*.os $@
X
Xxterm: $(OBJS1) $(DEPLIBS1)
X $(RM) $@
X $(CC) -o $@ $(OBJS1) $(LDOPTIONS) $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB) $(LDLIBS) $(TERMCAPLIB) $(PTYLIB) $(EXTRA_LOAD_FLAGS)
X
Xclean::
X $(RM) xterm
X
Xinstall:: xterm
X $(INSTALL) -c $(INSTPGMFLAGS) $(INSTUIDFLAGS) xterm $(BINDIR)
X
Xresize: $(OBJS2) $(DEPLIBS2)
X $(RM) $@
X $(CC) -o $@ $(OBJS2) $(LDOPTIONS) $(LDLIBS) $(TERMCAPLIB) $(EXTRA_LOAD_FLAGS)
X
Xclean::
X $(RM) resize
X
Xinstall:: resize
X $(INSTALL) -c $(INSTPGMFLAGS) resize $(BINDIR)
X
Xinstall:: XTerm.ad
X $(INSTALL) -c $(INSTAPPFLAGS) XTerm.ad $(XAPPLOADDIR)/XTerm
X
Xall:: xterm.nr.z
X
Xxterm.nr.z : xterm.man
X if [ -f xterm.man ]; then \
X $(RM) xterm.nr xterm.nr.z; \
X tbl xterm.man | eqn | nroff -man - > xterm.nr; \
X pack -f xterm.nr; \
X else \
X exit 0 ; \
X fi
X
Xinstall.man:: xterm.nr.z
X if [ -f xterm.man ]; then \
X $(INSTALL) -c $(INSTMANFLAGS) xterm.nr.z $(MANDIR)/xterm.z;\
X else \
X exit 0 ; \
X fi
X
Xclean::
X $(RM) xterm.nr xterm.nr.z
X
Xall:: resize.nr.z
X
Xresize.nr.z : resize.man
X if [ -f resize.man ]; then \
X $(RM) resize.nr resize.nr.z; \
X tbl resize.man | eqn | nroff -man - > resize.nr; \
X pack -f resize.nr; \
X else \
X exit 0 ; \
X fi
X
Xinstall.man:: resize.nr.z
X if [ -f resize.man ]; then \
X $(INSTALL) -c $(INSTMANFLAGS) resize.nr.z $(MANDIR)/resize.z;\
X else \
X exit 0 ; \
X fi
X
Xclean::
X $(RM) resize.nr resize.nr.z
X
Xdepend:: $(DEPEND)
X
X$(DEPEND):
X @echo "checking $@ over in $(DEPENDSRC) first..."; \
X cd $(DEPENDSRC); $(MAKE); \
X echo "okay, continuing in $(CURRENT_DIR)"
X
Xdepend::
X $(DEPEND) -s "# DO NOT DELETE" -- $(ALLDEFINES) -- $(SRCS)
X
X###########################################################################
X# common rules for all Makefiles - do not edit
X
Xemptyrule::
X
Xclean::
X $(RM_CMD) \#*
X
XMakefile:: $(IMAKE)
X
X$(IMAKE):
X @(cd $(IMAKESRC); if [ -f Makefile ]; then \
X echo "checking $@ in $(IMAKESRC) first..."; $(MAKE) all; else \
X echo "bootstrapping $@ from Makefile.ini in $(IMAKESRC) first..."; \
X $(MAKE) -f Makefile.ini BOOTSTRAPCFLAGS=$(BOOTSTRAPCFLAGS); fi; \
X echo "okay, continuing in $(CURRENT_DIR)")
X
XMakefile::
X - at if [ -f Makefile ]; then \
X echo " $(RM) Makefile.bak; $(MV) Makefile Makefile.bak"; \
X $(RM) Makefile.bak; $(MV) Makefile Makefile.bak; \
X else exit 0; fi
X $(IMAKE_CMD) -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR)
X
Xtags::
X $(TAGS) -w *.[ch]
X $(TAGS) -xw *.[ch] > TAGS
X
X###########################################################################
X# empty rules for directories that do not have SUBDIRS - do not edit
X
Xinstall::
X @echo "install in $(CURRENT_DIR) done"
X
Xinstall.man::
X @echo "install.man in $(CURRENT_DIR) done"
X
XMakefiles::
X
Xincludes::
X
X###########################################################################
X# dependencies generated by makedepend
X
X# DO NOT DELETE
X
Xbutton.o: ../.././X11/copyright.h ptyx.h ../.././X11/IntrinsicP.h
Xbutton.o: ../.././X11/Intrinsic.h ../.././X11/Xlib.h /usr/include/sys/types.h
Xbutton.o: ../.././X11/X.h ../.././X11/Xutil.h ../.././X11/Xresource.h
Xbutton.o: ../.././X11/Xos.h /usr/include/strings.h /usr/include/string.h
Xbutton.o: /usr/include/fcntl.h /usr/include/sys/fcntl.h
Xbutton.o: /usr/include/sys/file.h /usr/include/sys/time.h
Xbutton.o: /usr/include/sys/time.h ../.././X11/Core.h ../.././X11/Composite.h
Xbutton.o: ../.././X11/Constraint.h ../.././X11/Object.h ../.././X11/RectObj.h
Xbutton.o: ../.././X11/CoreP.h ../.././X11/CompositeP.h
Xbutton.o: ../.././X11/ConstrainP.h ../.././X11/ObjectP.h
Xbutton.o: ../.././X11/RectObjP.h ../.././X11/Xmu/Misc.h /usr/include/signal.h
Xbutton.o: /usr/include/sys/signal.h ../.././X11/Xatom.h /usr/include/stdio.h
Xbutton.o: /usr/include/setjmp.h /usr/include/ctype.h ../.././X11/Xmu/Atoms.h
Xbutton.o: ../.././X11/Xmu/StdSel.h data.h error.h menu.h
Xcharproc.o: ../.././X11/copyright.h ../.././X11/Xlib.h
Xcharproc.o: /usr/include/sys/types.h ../.././X11/X.h ../.././X11/Xatom.h
Xcharproc.o: ../.././X11/Xmu/Atoms.h /usr/include/stdio.h ../.././X11/Xos.h
Xcharproc.o: /usr/include/strings.h /usr/include/string.h /usr/include/fcntl.h
Xcharproc.o: /usr/include/sys/fcntl.h /usr/include/sys/file.h
Xcharproc.o: /usr/include/sys/time.h /usr/include/sys/time.h
Xcharproc.o: /usr/include/sgtty.h /usr/include/sys/ioctl.h
Xcharproc.o: /usr/include/net/soioctl.h /usr/include/sys/termio.h
Xcharproc.o: /usr/include/ctype.h /usr/include/errno.h
Xcharproc.o: /usr/include/sys/errno.h /usr/include/setjmp.h ptyx.h
Xcharproc.o: ../.././X11/IntrinsicP.h ../.././X11/Intrinsic.h
Xcharproc.o: ../.././X11/Xutil.h ../.././X11/Xresource.h ../.././X11/Core.h
Xcharproc.o: ../.././X11/Composite.h ../.././X11/Constraint.h
Xcharproc.o: ../.././X11/Object.h ../.././X11/RectObj.h ../.././X11/CoreP.h
Xcharproc.o: ../.././X11/CompositeP.h ../.././X11/ConstrainP.h
Xcharproc.o: ../.././X11/ObjectP.h ../.././X11/RectObjP.h
Xcharproc.o: ../.././X11/Xmu/Misc.h /usr/include/signal.h
Xcharproc.o: /usr/include/sys/signal.h VTparse.h data.h error.h main.h
Xcharproc.o: ../.././X11/cursorfont.h ../.././X11/StringDefs.h menu.h
Xcursor.o: ../.././X11/copyright.h ../.././X11/Xlib.h /usr/include/sys/types.h
Xcursor.o: ../.././X11/X.h /usr/include/stdio.h /usr/include/sys/ioctl.h
Xcursor.o: /usr/include/net/soioctl.h /usr/include/sys/termio.h ptyx.h
Xcursor.o: ../.././X11/IntrinsicP.h ../.././X11/Intrinsic.h
Xcursor.o: ../.././X11/Xutil.h ../.././X11/Xresource.h ../.././X11/Xos.h
Xcursor.o: /usr/include/strings.h /usr/include/string.h /usr/include/fcntl.h
Xcursor.o: /usr/include/sys/fcntl.h /usr/include/sys/file.h
Xcursor.o: /usr/include/sys/time.h /usr/include/sys/time.h ../.././X11/Core.h
Xcursor.o: ../.././X11/Composite.h ../.././X11/Constraint.h
Xcursor.o: ../.././X11/Object.h ../.././X11/RectObj.h ../.././X11/CoreP.h
Xcursor.o: ../.././X11/CompositeP.h ../.././X11/ConstrainP.h
Xcursor.o: ../.././X11/ObjectP.h ../.././X11/RectObjP.h ../.././X11/Xmu/Misc.h
Xcursor.o: /usr/include/signal.h /usr/include/sys/signal.h
Xdata.o: ../.././X11/copyright.h /usr/include/setjmp.h ../.././X11/Xlib.h
Xdata.o: /usr/include/sys/types.h ../.././X11/X.h ../.././X11/Intrinsic.h
Xdata.o: ../.././X11/Xutil.h ../.././X11/Xresource.h ../.././X11/Xos.h
Xdata.o: /usr/include/strings.h /usr/include/string.h /usr/include/fcntl.h
Xdata.o: /usr/include/sys/fcntl.h /usr/include/sys/file.h
Xdata.o: /usr/include/sys/time.h /usr/include/sys/time.h ../.././X11/Core.h
Xdata.o: ../.././X11/Composite.h ../.././X11/Constraint.h ../.././X11/Object.h
Xdata.o: ../.././X11/RectObj.h ptyx.h ../.././X11/IntrinsicP.h
Xdata.o: ../.././X11/CoreP.h ../.././X11/CompositeP.h ../.././X11/ConstrainP.h
Xdata.o: ../.././X11/ObjectP.h ../.././X11/RectObjP.h ../.././X11/Xmu/Misc.h
Xdata.o: /usr/include/signal.h /usr/include/sys/signal.h data.h
Xinput.o: ../.././X11/copyright.h ../.././X11/Xlib.h /usr/include/sys/types.h
Xinput.o: ../.././X11/X.h ../.././X11/keysym.h ../.././X11/keysymdef.h
Xinput.o: ../.././X11/DECkeysym.h ../.././X11/Intrinsic.h ../.././X11/Xutil.h
Xinput.o: ../.././X11/Xresource.h ../.././X11/Xos.h /usr/include/strings.h
Xinput.o: /usr/include/string.h /usr/include/fcntl.h /usr/include/sys/fcntl.h
Xinput.o: /usr/include/sys/file.h /usr/include/sys/time.h
Xinput.o: /usr/include/sys/time.h ../.././X11/Core.h ../.././X11/Composite.h
Xinput.o: ../.././X11/Constraint.h ../.././X11/Object.h ../.././X11/RectObj.h
Xinput.o: /usr/include/stdio.h ptyx.h ../.././X11/IntrinsicP.h
Xinput.o: ../.././X11/CoreP.h ../.././X11/CompositeP.h
Xinput.o: ../.././X11/ConstrainP.h ../.././X11/ObjectP.h
Xinput.o: ../.././X11/RectObjP.h ../.././X11/Xmu/Misc.h /usr/include/signal.h
Xinput.o: /usr/include/sys/signal.h
Xmain.o: ../.././X11/copyright.h ../.././X11/Xos.h /usr/include/sys/types.h
Xmain.o: /usr/include/strings.h /usr/include/string.h /usr/include/fcntl.h
Xmain.o: /usr/include/sys/fcntl.h /usr/include/sys/file.h
Xmain.o: /usr/include/sys/time.h /usr/include/sys/time.h ../.././X11/Xlib.h
Xmain.o: ../.././X11/X.h ../.././X11/cursorfont.h /usr/include/pwd.h
Xmain.o: /usr/include/ctype.h /usr/include/sys/ioctl.h
Xmain.o: /usr/include/net/soioctl.h /usr/include/sys/termio.h
Xmain.o: /usr/include/sys/stat.h /usr/include/sgtty.h
Xmain.o: /usr/include/sys/resource.h /usr/include/sys/sysmacros.h
Xmain.o: /usr/include/stdio.h /usr/include/errno.h /usr/include/sys/errno.h
Xmain.o: /usr/include/setjmp.h /usr/include/utmp.h /usr/include/sys/param.h
Xmain.o: /usr/include/sys/signal.h ptyx.h ../.././X11/IntrinsicP.h
Xmain.o: ../.././X11/Intrinsic.h ../.././X11/Xutil.h ../.././X11/Xresource.h
Xmain.o: ../.././X11/Core.h ../.././X11/Composite.h ../.././X11/Constraint.h
Xmain.o: ../.././X11/Object.h ../.././X11/RectObj.h ../.././X11/CoreP.h
Xmain.o: ../.././X11/CompositeP.h ../.././X11/ConstrainP.h
Xmain.o: ../.././X11/ObjectP.h ../.././X11/RectObjP.h ../.././X11/Xmu/Misc.h
Xmain.o: /usr/include/signal.h data.h error.h main.h menu.h
Xmain.o: ../.././X11/StringDefs.h ../.././X11/Shell.h /usr/include/sys/wait.h
Xmenu.o: /usr/include/stdio.h ../.././X11/Intrinsic.h ../.././X11/Xlib.h
Xmenu.o: /usr/include/sys/types.h ../.././X11/X.h ../.././X11/Xutil.h
Xmenu.o: ../.././X11/Xresource.h ../.././X11/Xos.h /usr/include/strings.h
Xmenu.o: /usr/include/string.h /usr/include/fcntl.h /usr/include/sys/fcntl.h
Xmenu.o: /usr/include/sys/file.h /usr/include/sys/time.h
Xmenu.o: /usr/include/sys/time.h ../.././X11/Core.h ../.././X11/Composite.h
Xmenu.o: ../.././X11/Constraint.h ../.././X11/Object.h ../.././X11/RectObj.h
Xmenu.o: ../.././X11/StringDefs.h ../.././X11/Shell.h
Xmenu.o: ../.././X11/Xaw/SimpleMenu.h ../.././X11/Xmu/Converters.h
Xmenu.o: ../.././X11/Xaw/SmeBSB.h ../.././X11/Xaw/Sme.h
Xmenu.o: ../.././X11/Xaw/SmeLine.h ptyx.h ../.././X11/copyright.h
Xmenu.o: ../.././X11/IntrinsicP.h ../.././X11/CoreP.h ../.././X11/CompositeP.h
Xmenu.o: ../.././X11/ConstrainP.h ../.././X11/ObjectP.h ../.././X11/RectObjP.h
Xmenu.o: ../.././X11/Xmu/Misc.h /usr/include/signal.h
Xmenu.o: /usr/include/sys/signal.h /usr/include/setjmp.h data.h menu.h
Xmisc.o: ../.././X11/copyright.h ptyx.h ../.././X11/IntrinsicP.h
Xmisc.o: ../.././X11/Intrinsic.h ../.././X11/Xlib.h /usr/include/sys/types.h
Xmisc.o: ../.././X11/X.h ../.././X11/Xutil.h ../.././X11/Xresource.h
Xmisc.o: ../.././X11/Xos.h /usr/include/strings.h /usr/include/string.h
Xmisc.o: /usr/include/fcntl.h /usr/include/sys/fcntl.h /usr/include/sys/file.h
Xmisc.o: /usr/include/sys/time.h /usr/include/sys/time.h ../.././X11/Core.h
Xmisc.o: ../.././X11/Composite.h ../.././X11/Constraint.h ../.././X11/Object.h
Xmisc.o: ../.././X11/RectObj.h ../.././X11/CoreP.h ../.././X11/CompositeP.h
Xmisc.o: ../.././X11/ConstrainP.h ../.././X11/ObjectP.h ../.././X11/RectObjP.h
Xmisc.o: ../.././X11/Xmu/Misc.h /usr/include/signal.h
Xmisc.o: /usr/include/sys/signal.h /usr/include/stdio.h /usr/include/setjmp.h
Xmisc.o: /usr/include/ctype.h /usr/include/pwd.h ../.././X11/Xatom.h
Xmisc.o: ../.././X11/cursorfont.h ../.././X11/Shell.h ../.././X11/Xmu/Error.h
Xmisc.o: ../.././X11/Xmu/SysUtil.h ../.././X11/Xmu/WinUtil.h data.h error.h
Xmisc.o: menu.h
Xscreen.o: ../.././X11/copyright.h ../.././X11/Xlib.h /usr/include/sys/types.h
Xscreen.o: ../.././X11/X.h /usr/include/stdio.h /usr/include/sys/ioctl.h
Xscreen.o: /usr/include/net/soioctl.h /usr/include/sys/termio.h ptyx.h
Xscreen.o: ../.././X11/IntrinsicP.h ../.././X11/Intrinsic.h
Xscreen.o: ../.././X11/Xutil.h ../.././X11/Xresource.h ../.././X11/Xos.h
Xscreen.o: /usr/include/strings.h /usr/include/string.h /usr/include/fcntl.h
Xscreen.o: /usr/include/sys/fcntl.h /usr/include/sys/file.h
Xscreen.o: /usr/include/sys/time.h /usr/include/sys/time.h ../.././X11/Core.h
Xscreen.o: ../.././X11/Composite.h ../.././X11/Constraint.h
Xscreen.o: ../.././X11/Object.h ../.././X11/RectObj.h ../.././X11/CoreP.h
Xscreen.o: ../.././X11/CompositeP.h ../.././X11/ConstrainP.h
Xscreen.o: ../.././X11/ObjectP.h ../.././X11/RectObjP.h ../.././X11/Xmu/Misc.h
Xscreen.o: /usr/include/signal.h /usr/include/sys/signal.h error.h
Xscrollbar.o: ../.././X11/copyright.h /usr/include/stdio.h
Xscrollbar.o: /usr/include/ctype.h /usr/include/setjmp.h ../.././X11/Xatom.h
Xscrollbar.o: ptyx.h ../.././X11/IntrinsicP.h ../.././X11/Intrinsic.h
Xscrollbar.o: ../.././X11/Xlib.h /usr/include/sys/types.h ../.././X11/X.h
Xscrollbar.o: ../.././X11/Xutil.h ../.././X11/Xresource.h ../.././X11/Xos.h
Xscrollbar.o: /usr/include/strings.h /usr/include/string.h
Xscrollbar.o: /usr/include/fcntl.h /usr/include/sys/fcntl.h
Xscrollbar.o: /usr/include/sys/file.h /usr/include/sys/time.h
Xscrollbar.o: /usr/include/sys/time.h ../.././X11/Core.h
Xscrollbar.o: ../.././X11/Composite.h ../.././X11/Constraint.h
Xscrollbar.o: ../.././X11/Object.h ../.././X11/RectObj.h ../.././X11/CoreP.h
Xscrollbar.o: ../.././X11/CompositeP.h ../.././X11/ConstrainP.h
Xscrollbar.o: ../.././X11/ObjectP.h ../.././X11/RectObjP.h
Xscrollbar.o: ../.././X11/Xmu/Misc.h /usr/include/signal.h
Xscrollbar.o: /usr/include/sys/signal.h ../.././X11/StringDefs.h
Xscrollbar.o: ../.././X11/Shell.h ../.././X11/Xaw/Scrollbar.h
Xscrollbar.o: ../.././X11/Xmu/Converters.h data.h error.h menu.h
Xtabs.o: ../.././X11/copyright.h ../.././X11/Xlib.h /usr/include/sys/types.h
Xtabs.o: ../.././X11/X.h ptyx.h ../.././X11/IntrinsicP.h
Xtabs.o: ../.././X11/Intrinsic.h ../.././X11/Xutil.h ../.././X11/Xresource.h
Xtabs.o: ../.././X11/Xos.h /usr/include/strings.h /usr/include/string.h
Xtabs.o: /usr/include/fcntl.h /usr/include/sys/fcntl.h /usr/include/sys/file.h
Xtabs.o: /usr/include/sys/time.h /usr/include/sys/time.h ../.././X11/Core.h
Xtabs.o: ../.././X11/Composite.h ../.././X11/Constraint.h ../.././X11/Object.h
Xtabs.o: ../.././X11/RectObj.h ../.././X11/CoreP.h ../.././X11/CompositeP.h
Xtabs.o: ../.././X11/ConstrainP.h ../.././X11/ObjectP.h ../.././X11/RectObjP.h
Xtabs.o: ../.././X11/Xmu/Misc.h /usr/include/signal.h
Xtabs.o: /usr/include/sys/signal.h
XTekPrsTbl.o: ../.././X11/copyright.h Tekparse.h
XTekproc.o: ../.././X11/copyright.h ../.././X11/Xos.h /usr/include/sys/types.h
XTekproc.o: /usr/include/strings.h /usr/include/string.h /usr/include/fcntl.h
XTekproc.o: /usr/include/sys/fcntl.h /usr/include/sys/file.h
XTekproc.o: /usr/include/sys/time.h /usr/include/sys/time.h ptyx.h
XTekproc.o: ../.././X11/IntrinsicP.h ../.././X11/Intrinsic.h
XTekproc.o: ../.././X11/Xlib.h ../.././X11/X.h ../.././X11/Xutil.h
XTekproc.o: ../.././X11/Xresource.h ../.././X11/Core.h ../.././X11/Composite.h
XTekproc.o: ../.././X11/Constraint.h ../.././X11/Object.h
XTekproc.o: ../.././X11/RectObj.h ../.././X11/CoreP.h ../.././X11/CompositeP.h
XTekproc.o: ../.././X11/ConstrainP.h ../.././X11/ObjectP.h
XTekproc.o: ../.././X11/RectObjP.h ../.././X11/Xmu/Misc.h
XTekproc.o: /usr/include/signal.h /usr/include/sys/signal.h
XTekproc.o: ../.././X11/Xatom.h ../.././X11/cursorfont.h
XTekproc.o: ../.././X11/StringDefs.h ../.././X11/Shell.h
XTekproc.o: ../.././X11/Xmu/CharSet.h Tekparse.h /usr/include/stdio.h
XTekproc.o: /usr/include/sgtty.h /usr/include/sys/ioctl.h
XTekproc.o: /usr/include/net/soioctl.h /usr/include/sys/termio.h
XTekproc.o: /usr/include/ctype.h /usr/include/errno.h /usr/include/sys/errno.h
XTekproc.o: /usr/include/setjmp.h /usr/include/pwd.h data.h error.h menu.h
Xutil.o: ../.././X11/copyright.h /usr/include/stdio.h ../.././X11/Intrinsic.h
Xutil.o: ../.././X11/Xlib.h /usr/include/sys/types.h ../.././X11/X.h
Xutil.o: ../.././X11/Xutil.h ../.././X11/Xresource.h ../.././X11/Xos.h
Xutil.o: /usr/include/strings.h /usr/include/string.h /usr/include/fcntl.h
Xutil.o: /usr/include/sys/fcntl.h /usr/include/sys/file.h
Xutil.o: /usr/include/sys/time.h /usr/include/sys/time.h ../.././X11/Core.h
Xutil.o: ../.././X11/Composite.h ../.././X11/Constraint.h ../.././X11/Object.h
Xutil.o: ../.././X11/RectObj.h /usr/include/setjmp.h ptyx.h
Xutil.o: ../.././X11/IntrinsicP.h ../.././X11/CoreP.h ../.././X11/CompositeP.h
Xutil.o: ../.././X11/ConstrainP.h ../.././X11/ObjectP.h ../.././X11/RectObjP.h
Xutil.o: ../.././X11/Xmu/Misc.h /usr/include/signal.h
Xutil.o: /usr/include/sys/signal.h data.h error.h menu.h
XVTPrsTbl.o: ../.././X11/copyright.h VTparse.h
Xresize.o: ../.././X11/copyright.h ../.././X11/Xos.h /usr/include/sys/types.h
Xresize.o: /usr/include/strings.h /usr/include/string.h /usr/include/fcntl.h
Xresize.o: /usr/include/sys/fcntl.h /usr/include/sys/file.h
Xresize.o: /usr/include/sys/time.h /usr/include/sys/time.h
Xresize.o: /usr/include/stdio.h /usr/include/ctype.h /usr/include/sys/ioctl.h
Xresize.o: /usr/include/net/soioctl.h /usr/include/sys/termio.h
Xresize.o: /usr/include/signal.h /usr/include/sys/signal.h /usr/include/pwd.h
END_OF_FILE
if test 25588 -ne `wc -c <'xterm/Makefile'`; then
echo shar: \"'xterm/Makefile'\" unpacked with wrong size!
fi
# end of 'xterm/Makefile'
fi
if test -f 'xterm/main.c.ab' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'xterm/main.c.ab'\"
else
echo shar: Extracting \"'xterm/main.c.ab'\" \(26214 characters\)
sed "s/^X//" >'xterm/main.c.ab' <<'END_OF_FILE'
X mode = 1;
X if (ioctl (pty, FIONBIO, (char *)&mode) == -1) SysError (ERROR_FIONBIO);
X#endif /* USE_SYSV_TERMIO */
X
X pty_mask = 1 << pty;
X X_mask = 1 << Xsocket;
X Select_mask = pty_mask | X_mask;
X max_plus1 = (pty < Xsocket) ? (1 + Xsocket) : (1 + pty);
X
X#ifdef DEBUG
X if (debug) printf ("debugging on\n");
X#endif /* DEBUG */
X XSetErrorHandler(xerror);
X XSetIOErrorHandler(xioerror);
X for( ; ; ) {
X if(screen->TekEmu) {
X TekRun();
X } else
X VTRun();
X }
X}
X
Xchar *basename(name)
Xchar *name;
X{
X register char *cp;
X#ifndef sgi
X char *rindex();
X#endif /* sgi */
X
X return((cp = rindex(name, '/')) ? cp + 1 : name);
X}
X
X/* This function opens up a pty master and stuffs it's value into pty.
X * If it finds one, it returns a value of 0. If it does not find one,
X * it returns a value of !0. This routine is designed to be re-entrant,
X * so that if a pty master is found and later, we find that the slave
X * has problems, we can re-enter this function and get another one.
X */
X
Xget_pty (pty)
Xint *pty;
X{
X#ifdef att
X if ((*pty = open ("/dev/ptmx", O_RDWR)) < 0) {
X return 1;
X }
X return 0;
X#else /* !att, need lots of code */
X#ifdef USE_GET_PSEUDOTTY
X return ((*pty = getpseudotty (&ttydev, &ptydev)) >= 0 ? 0 : 1);
X#else
X static int devindex, letter = 0;
X
X#if defined sgi || (defined (umips) && defined (SYSTYPE_SYSV))
X struct stat fstat_buf;
X
X *pty = open ("/dev/ptc", O_RDWR);
X if (*pty < 0 || (fstat (*pty, &fstat_buf)) < 0) {
X return(1);
X }
X sprintf (ttydev, "/dev/ttyq%d", minor(fstat_buf.st_rdev));
X#if !defined sgi
X sprintf (ptydev, "/dev/ptyq%d", minor(fstat_buf.st_rdev));
X if ((*tty = open (ttydev, O_RDWR)) < 0) {
X close (*pty);
X return(1);
X }
X#endif /* ! sgi */
X /* got one! */
X return(0);
X#else /* not (umips && SYSTYPE_SYSV) */
X#ifdef CRAY
X for (; devindex < 256; devindex++) {
X sprintf (ttydev, "/dev/ttyp%03d", devindex);
X sprintf (ptydev, "/dev/pty/%03d", devindex);
X
X if ((*pty = open (ptydev, O_RDWR)) >= 0) {
X /* We need to set things up for our next entry
X * into this function!
X */
X (void) devindex++;
X return(0);
X }
X }
X#else /* !CRAY */
X while (PTYCHAR1[letter]) {
X ttydev [strlen(ttydev) - 2] = ptydev [strlen(ptydev) - 2] =
X PTYCHAR1 [letter];
X
X while (PTYCHAR2[devindex]) {
X ttydev [strlen(ttydev) - 1] = ptydev [strlen(ptydev) - 1] =
X PTYCHAR2 [devindex];
X if ((*pty = open (ptydev, O_RDWR)) >= 0) {
X /* We need to set things up for our next entry
X * into this function!
X */
X (void) devindex++;
X return(0);
X }
X devindex++;
X }
X devindex = 0;
X (void) letter++;
X }
X#endif /* CRAY else not CRAY */
X /* We were unable to allocate a pty master! Return an error
X * condition and let our caller terminate cleanly.
X */
X return(1);
X#endif /* umips && SYSTYPE_SYSV */
X#endif /* USE_GET_PSEUDOTTY */
X#endif /* att */
X}
X
Xget_terminal ()
X/*
X * sets up X and initializes the terminal structure except for term.buf.fildes.
X */
X{
X register TScreen *screen = &term->screen;
X
X screen->arrow = make_colored_cursor (XC_left_ptr,
X screen->mousecolor,
X screen->mousecolorback);
X}
X
X/*
X * The only difference in /etc/termcap between 4014 and 4015 is that
X * the latter has support for switching character sets. We support the
X * 4015 protocol, but ignore the character switches. Therefore, we should
X * probably choose 4014 over 4015.
X */
X
Xstatic char *tekterm[] = {
X "tek4014",
X "tek4015", /* has alternate character set switching */
X "tek4013",
X "tek4010",
X "dumb",
X 0
X};
X
Xstatic char *vtterm[] = {
X#ifdef USE_X11TERM
X "x11term", /* for people who want special term name */
X#endif
X "xterm", /* the prefered name, should be fastest */
X "vt102",
X "vt100",
X "ansi",
X "dumb",
X 0
X};
X
X/* ARGSUSED */
XSIGNAL_T hungtty(i)
X int i;
X{
X longjmp(env, 1);
X SIGNAL_RETURN;
X}
X
X#ifdef USE_HANDSHAKE
Xtypedef enum { /* c == child, p == parent */
X PTY_BAD, /* c->p: can't open pty slave for some reason */
X PTY_FATALERROR, /* c->p: we had a fatal error with the pty */
X PTY_GOOD, /* c->p: we have a good pty, let's go on */
X PTY_NEW, /* p->c: here is a new pty slave, try this */
X PTY_NOMORE, /* p->c; no more pty's, terminate */
X UTMP_ADDED, /* c->p: utmp entry has been added */
X UTMP_TTYSLOT, /* c->p: here is my ttyslot */
X PTY_EXEC /* p->c: window has been mapped the first time */
X} status_t;
X
Xtypedef struct {
X status_t status;
X int error;
X int fatal_error;
X int tty_slot;
X int rows;
X int cols;
X char buffer[1024];
X} handshake_t;
X
X/* HsSysError()
X *
X * This routine does the equivalent of a SysError but it handshakes
X * over the errno and error exit to the master process so that it can
X * display our error message and exit with our exit code so that the
X * user can see it.
X */
X
Xvoid
XHsSysError(pf, error)
Xint pf;
Xint error;
X{
X handshake_t handshake;
X
X handshake.status = PTY_FATALERROR;
X handshake.error = errno;
X handshake.fatal_error = error;
X strcpy(handshake.buffer, ttydev);
X write(pf, &handshake, sizeof(handshake));
X exit(error);
X}
X
Xstatic int pc_pipe[2]; /* this pipe is used for parent to child transfer */
Xstatic int cp_pipe[2]; /* this pipe is used for child to parent transfer */
X
Xfirst_map_occurred ()
X{
X handshake_t handshake;
X register TScreen *screen = &term->screen;
X
X if (screen->max_row > 0 && screen->max_col > 0) {
X handshake.status = PTY_EXEC;
X handshake.rows = screen->max_row;
X handshake.cols = screen->max_col;
X write (pc_pipe[1], (char *) &handshake, sizeof(handshake));
X close (cp_pipe[0]);
X close (pc_pipe[1]);
X waiting_for_initial_map = False;
X }
X}
X#else
X/*
X * temporary hack to get xterm working on att ptys
X */
Xfirst_map_occurred ()
X{
X return;
X}
X#define HsSysError(a,b)
X#endif /* USE_HANDSHAKE else !USE_HANDSHAKE */
X
X
Xspawn ()
X/*
X * Inits pty and tty and forks a login process.
X * Does not close fd Xsocket.
X * If slave, the pty named in passedPty is already open for use
X */
X{
X extern char *SysErrorMsg();
X register TScreen *screen = &term->screen;
X int Xsocket = screen->display->fd;
X#ifdef USE_HANDSHAKE
X handshake_t handshake;
X#else
X int fds[2];
X#endif
X int tty = -1;
X int done;
X#ifdef USE_SYSV_TERMIO
X struct termio tio;
X#else /* else not USE_SYSV_TERMIO */
X struct tchars tc;
X struct sgttyb sg;
X#endif /* USE_SYSV_TERMIO */
X#ifdef TIOCSETD
X int discipline;
X#ifdef NTTYDISC
X int ldisc = 0;
X#endif
X#endif
X#ifdef TIOCLSET
X unsigned lmode;
X#endif /* TIOCLSET */
X#ifdef TIOCSLTC
X struct ltchars ltc;
X#endif /* TIOCSLTC */
X
X#if !defined USE_SYSV_ENVVARS && defined USE_TERMCAP
X char termcap [1024];
X char newtc [1024];
X#endif /* !defined USE_SYSV_ENVVARS && defined USE_TERMCAP */
X char *ptr, *shname, *shname_minus;
X int i, no_dev_tty = FALSE;
X#ifdef USE_SYSV_TERMIO
X char *dev_tty_name = (char *) 0;
X int fd; /* for /etc/wtmp */
X#endif /* USE_SYSV_TERMIO */
X char **envnew; /* new environment */
X char buf[32];
X char *TermName = NULL;
X#ifdef sun
X#ifdef TIOCSSIZE
X struct ttysize ts;
X#endif /* TIOCSSIZE */
X#else /* not sun */
X#ifdef TIOCSWINSZ
X struct winsize ws;
X#endif /* TIOCSWINSZ */
X#endif /* sun */
X struct passwd *pw = NULL;
X#ifdef UTMP
X struct utmp utmp;
X#ifdef LASTLOG
X struct lastlog lastlog;
X#endif /* LASTLOG */
X#endif /* UTMP */
X
X screen->uid = getuid();
X screen->gid = getgid();
X
X#ifdef SIGTTOU
X /* so that TIOCSWINSZ || TIOCSIZE doesn't block */
X signal(SIGTTOU,SIG_IGN);
X#endif
X
X if (am_slave) {
X screen->respond = am_slave;
X ptydev[strlen(ptydev) - 2] = ttydev[strlen(ttydev) - 2] =
X passedPty[0];
X ptydev[strlen(ptydev) - 1] = ttydev[strlen(ttydev) - 1] =
X passedPty[1];
X
X setgid (screen->gid);
X setuid (screen->uid);
X } else {
X Bool tty_got_hung = False;
X
X /*
X * Sometimes /dev/tty hangs on open (as in the case of a pty
X * that has gone away). Simply make up some reasonable
X * defaults.
X */
X signal(SIGALRM, hungtty);
X alarm(2); /* alarm(1) might return too soon */
X if (! setjmp(env)) {
X tty = open ("/dev/tty", O_RDWR, 0);
X alarm(0);
X } else {
X tty_got_hung = True;
X tty = -1;
X errno = ENXIO;
X }
X signal(SIGALRM, SIG_DFL);
X
X /*
X * Check results and ignore current control terminal if
X * necessary. ENXIO is what is normally returned if there is
X * no controlling terminal, but some systems (e.g. SunOS 4.0)
X * seem to return EIO.
X */
X if (tty < 0) {
X if (tty_got_hung || errno == ENXIO || errno == EIO) {
X no_dev_tty = TRUE;
X#ifdef USE_SYSV_TERMIO
X tio = d_tio;
X#else /* not USE_SYSV_TERMIO */
X sg = d_sg;
X tc = d_tc;
X#endif /* USE_SYSV_TERMIO */
X#ifdef TIOCSETD
X discipline = d_disipline;
X#endif /* TIOCSETD */
X#ifdef TIOCSLTC
X ltc = d_ltc;
X#endif /* TIOCSLTC */
X#ifdef TIOCLSET
X lmode = d_lmode;
X#endif /* TIOCLSET */
X } else {
X SysError(ERROR_OPDEVTTY);
X }
X } else {
X /* get a copy of the current terminal's state */
X
X#ifdef USE_SYSV_TERMIO
X if(ioctl(tty, TCGETA, &tio) == -1)
X SysError(ERROR_TIOCGETP);
X#else /* not USE_SYSV_TERMIO */
X if(ioctl(tty, TIOCGETP, (char *)&sg) == -1)
X SysError (ERROR_TIOCGETP);
X if(ioctl(tty, TIOCGETC, (char *)&tc) == -1)
X SysError (ERROR_TIOCGETC);
X#endif /* USE_SYSV_TERMIO */
X
X#ifdef TIOCSETD
X if(ioctl(tty, TIOCGETD, (char *)&discipline) == -1)
X SysError (ERROR_TIOCGETD);
X#endif /* TIOCSETD */
X#ifdef TIOCSLTC
X if(ioctl(tty, TIOCGLTC, <c) == -1)
X SysError(ERROR_TIOCGLTC);
X#endif /* TIOCSLTC */
X#ifdef TIOCLSET
X if(ioctl(tty, TIOCLGET, &lmode) == -1)
X SysError(ERROR_TIOCLGET);
X#endif /* TIOCLSET */
X close (tty);
X /* tty is no longer an open fd! */
X tty = -1;
X }
X
X#ifdef PUCC_PTYD
X if(-1 == (screen->respond = openrpty(ttydev, ptydev,
X (resource.utmpInhibit ? OPTY_NOP : OPTY_LOGIN),
X getuid(), XDisplayString(screen->display)))) {
X#else /* not PUCC_PTYD */
X if (get_pty (&screen->respond)) {
X#endif /* PUCC_PTYD */
X /* no ptys! */
X (void) fprintf(stderr, "%s: no available ptys\n",
X xterm_name);
X exit (ERROR_PTYS);
X#ifdef PUCC_PTYD
X }
X#else
X } /* keep braces balanced for emacs */
X#endif
X#ifdef PUCC_PTYD
X else {
X /*
X * set the fd of the master in a global var so
X * we can undo all this on exit
X *
X */
X Ptyfd = screen->respond;
X }
X#endif /* PUCC_PTYD */
X }
X
X /* avoid double MapWindow requests */
X XtSetMappedWhenManaged( screen->TekEmu ? XtParent(tekWidget) :
X XtParent(term), False );
X /* Realize the Tek or VT widget, depending on which mode we're in.
X If VT mode, this calls VTRealize (the widget's Realize proc) */
X XtRealizeWidget (screen->TekEmu ? XtParent(tekWidget) :
X XtParent(term));
X
X if(screen->TekEmu) {
X envnew = tekterm;
X#if defined USE_TERMCAP
X ptr = newtc;
X#endif /* defined USE_TERMCAP */
X } else {
X envnew = vtterm;
X#if defined USE_TERMCAP
X ptr = termcap;
X#endif /* defined USE_TERMCAP */
X }
X TermName = NULL;
X if (resource.term_name) {
X if (tgetent (ptr, resource.term_name) == 1) {
X TermName = resource.term_name;
X#if !defined USE_SYSV_ENVVARS && defined USE_TERMCAP
X if (!screen->TekEmu)
X resize (screen, TermName, termcap, newtc);
X#endif /* !defined USE_SYSV_ENVVARS && defined USE_TERMCAP */
X } else {
X fprintf (stderr, "%s: invalid termcap entry \"%s\".\n",
X ProgramName, resource.term_name);
X }
X }
X if (!TermName) {
X while (*envnew != NULL) {
X if(tgetent(ptr, *envnew) == 1) {
X TermName = *envnew;
X#if !defined USE_SYSV_ENVVARS && defined USE_TERMCAP
X if(!screen->TekEmu)
X resize(screen, TermName, termcap, newtc);
X#endif /* !defined USE_SYSV_ENVVARS && defined USE_TERMCAP */
X break;
X }
X envnew++;
X }
X if (TermName == NULL) {
X fprintf (stderr, "%s: unable to find usable termcap entry.\n",
X ProgramName);
X Exit (1);
X }
X }
X
X#ifdef sun
X#ifdef TIOCSSIZE
X /* tell tty how big window is */
X if(screen->TekEmu) {
X ts.ts_lines = 38;
X ts.ts_cols = 81;
X } else {
X ts.ts_lines = screen->max_row + 1;
X ts.ts_cols = screen->max_col + 1;
X }
X#endif /* TIOCSSIZE */
X#else /* not sun */
X#ifdef TIOCSWINSZ
X /* tell tty how big window is */
X if(screen->TekEmu) {
X ws.ws_row = 38;
X ws.ws_col = 81;
X ws.ws_xpixel = TFullWidth(screen);
X ws.ws_ypixel = TFullHeight(screen);
X } else {
X ws.ws_row = screen->max_row + 1;
X ws.ws_col = screen->max_col + 1;
X ws.ws_xpixel = FullWidth(screen);
X ws.ws_ypixel = FullHeight(screen);
X }
X#endif /* TIOCSWINSZ */
X#endif /* sun */
X
X if (!am_slave) {
X#ifdef USE_HANDSHAKE
X if (pipe(pc_pipe) || pipe(cp_pipe))
X SysError (ERROR_FORK);
X#endif
X if ((screen->pid = fork ()) == -1)
X SysError (ERROR_FORK);
X
X if (screen->pid == 0) {
X /*
X * now in child process
X */
X extern char **environ;
X int pgrp = getpid();
X#ifdef USE_SYSV_TERMIO
X char numbuf[12];
X#endif /* USE_SYSV_TERMIO */
X
X#ifndef USE_HANDSHAKE
X int ptyfd;
X
X setpgrp();
X grantpt (screen->respond);
X unlockpt (screen->respond);
X if ((ptyfd = open (ptsname(screen->respond), O_RDWR)) < 0) {
X SysError (1);
X }
X if (ioctl (ptyfd, I_PUSH, "ptem") < 0) {
X SysError (2);
X }
X if (!getenv("CONSEM") && ioctl (ptyfd, I_PUSH, "consem") < 0) {
X SysError (3);
X }
X if (ioctl (ptyfd, I_PUSH, "ldterm") < 0) {
X SysError (4);
X }
X tty = ptyfd;
X close (screen->respond);
X#ifdef TIOCSWINSZ
X /* tell tty how big window is */
X if(screen->TekEmu) {
X ws.ws_row = 24;
X ws.ws_col = 80;
X ws.ws_xpixel = TFullWidth(screen);
X ws.ws_ypixel = TFullHeight(screen);
X } else {
X ws.ws_row = screen->max_row + 1;
X ws.ws_col = screen->max_col + 1;
X ws.ws_xpixel = FullWidth(screen);
X ws.ws_ypixel = FullHeight(screen);
X }
X#endif
X
X
X#else /* USE_HANDSHAKE: warning, goes for a long ways */
X /* close parent's sides of the pipes */
X close (cp_pipe[0]);
X close (pc_pipe[1]);
X
X /* Make sure that our sides of the pipes are not in the
X * 0, 1, 2 range so that we don't fight with stdin, out
X * or err.
X */
X if (cp_pipe[1] <= 2) {
X if ((i = fcntl(cp_pipe[1], F_DUPFD, 3)) >= 0) {
X (void) close(cp_pipe[1]);
X cp_pipe[1] = i;
X }
X }
X if (pc_pipe[0] <= 2) {
X if ((i = fcntl(pc_pipe[0], F_DUPFD, 3)) >= 0) {
X (void) close(pc_pipe[0]);
X pc_pipe[0] = i;
X }
X }
X
X /* we don't need the socket, or the pty master anymore */
X close (Xsocket);
X close (screen->respond);
X
X /* Now is the time to set up our process group and
X * open up the pty slave.
X */
X#ifdef att
X /* If we set our process group here any later
X * attempt to set out session will fail
X */
X (void) setpgrp();
X#endif /* att */
X while (1) {
X#ifdef TIOCNOTTY
X if (!no_dev_tty && (tty = open ("/dev/tty", O_RDWR)) >= 0) {
X ioctl (tty, TIOCNOTTY, (char *) NULL);
X#ifdef sgi
X#ifdef __KERNEL_BUSTED__TIOCNOTTY_MAKES_PROC_GROUP_LEADER__
X BSDsetpgrp( 0, 0 ) ;
X#endif /* __KERNEL_BUSTED__TIOCNOTTY_MAKES_PROC_GROUP_LEADER__ */
X#endif /* sgi */
X close (tty);
X }
X#ifdef att
X /* If this "unix" has TIOCNOTTY, we may need
X * to recreate our process group in order to
X * open "/dev/tty" !
X */
X (void) setpgrp();
X#endif /* att */
X#endif /* TIOCNOTTY */
X if ((tty = open(ttydev, O_RDWR, 0)) >= 0) {
X#ifdef att
X /* We need to make sure that we are acutally
X * the process group leader for the pty. If
X * we are, then we should now be able to open
X * /dev/tty.
X */
X if ((i = open("/dev/tty", O_RDWR, 0)) >= 0) {
X /* success! */
X close(i);
X break;
X }
X#else /* !att */
X break;
X#endif /* att */
X }
X
X#ifdef TIOCSCTTY
X ioctl(tty, TIOCSCTTY, 0);
X#endif
X /* let our master know that the open failed */
X handshake.status = PTY_BAD;
X handshake.error = errno;
X strcpy(handshake.buffer, ttydev);
X write(cp_pipe[1], (char *) &handshake,
X sizeof(handshake));
X
X /* get reply from parent */
X i = read(pc_pipe[0], (char *) &handshake,
X sizeof(handshake));
X if (i <= 0) {
X /* parent terminated */
X exit(1);
X }
X
X if (handshake.status == PTY_NOMORE) {
X /* No more ptys, let's shutdown. */
X exit(1);
X }
X
X /* We have a new pty to try */
X free(ttydev);
X ttydev = malloc((unsigned)
X (strlen(handshake.buffer) + 1));
X strcpy(ttydev, handshake.buffer);
X }
X
X /* Now that we have our new tty, let's make
X ** ourselves the process (and session) group(s)
X ** leader.
X ** NOTE: to become the session group leader you
X ** MUST NOT YET be a process group leader !
X ** ( sorry att )
X */
X#ifndef USE_SYSV_PGRP
X (void) setpgrp( 0, 0 ) ;
X#endif /* USE_SYSV_PGRP */
X#ifdef TIOCSCTTY
X (void) ioctl( 0, TIOCSCTTY, 0 ) ;
X#endif
X#ifdef HAS_POSIX_SESSIONS
X if ( setsid() == pgrp )
X /* NOTE: we no longer have any controlling tty ! */
X (void) close( open( ttydev, O_WRONLY, 0 ) ) ;
X#endif
X#ifdef TIOCSCTTY
X (void) ioctl( 0, TIOCSCTTY, (char *) &pgrp ) ;
X#endif
X#ifdef USE_SYSV_PGRP
X (void) setpgrp() ;
X#else
X (void) setpgrp( 0, pgrp ) ;
X#endif /* USE_SYSV_PGRP */
X (void) close( open( ttydev, O_WRONLY, 0 ) ) ;
X#ifdef TIOCSPGRP
X (void) ioctl( 0, TIOCSPGRP, (char *) &pgrp ) ;
X#endif
X
X /* use the same tty name that everyone else will use
X ** (from ttyname)
X */
X if (ptr = ttyname(tty))
X {
X /* it may be bigger */
X ttydev = realloc (ttydev, (unsigned) (strlen(ptr) + 1));
X (void) strcpy(ttydev, ptr);
X }
X
X#endif /* !USE_HANDSHAKE else USE_HANDSHAKE - from near fork */
X
X#ifdef USE_TTY_GROUP
X {
X#include <grp.h>
X struct group *ttygrp;
X if (ttygrp = getgrnam("tty")) {
X /* change ownership of tty to real uid, "tty" gid */
X chown (ttydev, screen->uid, ttygrp->gr_gid);
X chmod (ttydev, 0620);
X }
X else {
X /* change ownership of tty to real group and user id */
X chown (ttydev, screen->uid, screen->gid);
X chmod (ttydev, 0622);
X }
X endgrent();
X }
X#else /* else !USE_TTY_GROUP */
X /* change ownership of tty to real group and user id */
X chown (ttydev, screen->uid, screen->gid);
X
X /* change protection of tty */
X chmod (ttydev, 0622);
X#endif /* USE_TTY_GROUP */
X
X /*
X * set up the tty modes
X */
X {
X#ifdef USE_SYSV_TERMIO
X#ifdef umips
X /* If the control tty had its modes screwed around with,
X eg. by lineedit in the shell, or emacs, etc. then tio
X will have bad values. Let's just get termio from the
X new tty and tailor it. */
X if (ioctl (tty, TCGETA, &tio) == -1)
X SysError (ERROR_TIOCGETP);
X tio.c_lflag |= ECHOE;
X#endif /* umips */
X /* Now is also the time to change the modes of the
X * child pty.
X */
X /* input: nl->nl, don't ignore cr, cr->nl */
X tio.c_iflag &= ~(INLCR|IGNCR);
X tio.c_iflag |= ICRNL;
X /* ouput: cr->cr, nl is not return, no delays, ln->cr/nl */
X tio.c_oflag &=
X ~(OCRNL|ONLRET|NLDLY|CRDLY|TABDLY|BSDLY|VTDLY|FFDLY);
X tio.c_oflag |= ONLCR;
X tio.c_cflag &= ~(CBAUD);
X#ifdef BAUD_0
X /* Do Nothing */
X#else /* !BAUD_0 */
X#ifdef B38400
X tio.c_cflag |= B38400;
X#else /* !B38400 */
X#ifdef B19200
X tio.c_cflag |= B19200;
X#else /* !B19200 */
X tio.c_cflag |= B9600;
X#endif /* !B19200 */
X#endif /* !B38400 */
X#endif /* !BAUD_0 */
X /* enable signals, canonical processing (erase, kill, etc),
X ** echo
X */
X tio.c_lflag |= ISIG|ICANON|ECHO;
X /* reset EOL to defalult value */
X tio.c_cc[VEOL] = '@' & 0x3f; /* '^@' */
X /* certain shells (ksh & csh) change EOF as well */
X tio.c_cc[VEOF] = 'D' & 0x3f; /* '^D' */
X
X
X#else /* !USE_SYSV_TERMIO */
X sg.sg_flags &= ~(ALLDELAY | XTABS | CBREAK | RAW);
X sg.sg_flags |= ECHO | CRMOD;
X /* make sure speed is set on pty so that editors work right*/
X sg.sg_ispeed = B9600;
X sg.sg_ospeed = B9600;
X /* reset t_brkc to default value */
X tc.t_brkc = -1;
X#endif /* !USE_SYSV_TERMIO */
X
X#define TMODE(ind,var) if (ttymodelist[ind].set) var = ttymodelist[ind].value;
X if (override_tty_modes) {
X#ifdef USE_SYSV_TERMIO
X /* sysv-specific */
X TMODE (XTTYMODE_intr, tio.c_cc[VINTR]);
X TMODE (XTTYMODE_quit, tio.c_cc[VQUIT]);
X TMODE (XTTYMODE_erase, tio.c_cc[VERASE]);
X TMODE (XTTYMODE_kill, tio.c_cc[VKILL]);
X TMODE (XTTYMODE_eof, tio.c_cc[VEOF]);
X TMODE (XTTYMODE_eol, tio.c_cc[VEOL]);
X#ifdef VSWTCH
X TMODE (XTTYMODE_swtch, d_tio.c_cc[VSWTCH]);
X#endif
X#else /* !USE_SYSV_TERMIO */
X TMODE (XTTYMODE_intr, tc.t_intrc);
X TMODE (XTTYMODE_quit, tc.t_quitc);
X TMODE (XTTYMODE_erase, sg.sg_erase);
X TMODE (XTTYMODE_kill, sg.sg_kill);
X TMODE (XTTYMODE_eof, tc.t_eofc);
X TMODE (XTTYMODE_start, tc.t_startc);
X TMODE (XTTYMODE_stop, tc.t_stopc);
X TMODE (XTTYMODE_brk, tc.t_brkc);
X#endif /* !USE_SYSV_TERMIO */
X#ifdef TIOCSLTC
X /* both SYSV and BSD have ltchars */
X TMODE (XTTYMODE_susp, ltc.t_suspc);
X TMODE (XTTYMODE_dsusp, ltc.t_dsuspc);
X TMODE (XTTYMODE_rprnt, ltc.t_rprntc);
X TMODE (XTTYMODE_flush, ltc.t_flushc);
X TMODE (XTTYMODE_weras, ltc.t_werasc);
X TMODE (XTTYMODE_lnext, ltc.t_lnextc);
X#endif /* TIOCSLTC */
X }
X#undef TMODE
X
X#ifdef USE_SYSV_TERMIO
X if (ioctl (tty, TCSETA, &tio) == -1)
X HsSysError(cp_pipe[1], ERROR_TIOCSETP);
X#ifdef TIOCSETC
X if (ioctl (tty, TIOCSETC, (char *)&tc) == -1)
X HsSysError (cp_pipe[1], ERROR_TIOCSETC);
X#endif /* TIOCSETC */
X#else
X if (ioctl (tty, TIOCSETP, (char *)&sg) == -1)
X HsSysError (cp_pipe[1], ERROR_TIOCSETP);
X#endif /* !USE_SYSV_TERMIO */
X#ifdef TIOCSETD
X if (ioctl (tty, TIOCSETD, (char *)&discipline) == -1)
X HsSysError (cp_pipe[1], ERROR_TIOCSETD);
X#endif /* TIOCSETD */
X#ifdef TIOCSLTC
X if (ioctl (tty, TIOCSLTC, <c) == -1)
X HsSysError(cp_pipe[1], ERROR_TIOCSETC);
X#endif /* TIOCSLTC */
X#ifdef TIOCLSET
X if (ioctl (tty, TIOCLSET, (char *)&lmode) == -1)
X HsSysError(cp_pipe[1], ERROR_TIOCLSET);
X#endif /* TIOCLSET */
X#ifdef TIOCCONS
X if (Console) {
X int on = 1;
X if (ioctl (tty, TIOCCONS, (char *)&on) == -1)
X HsSysError(cp_pipe[1], ERROR_TIOCCONS);
X }
X#endif /* TIOCCONS */
X }
X
X signal (SIGCHLD, SIG_DFL);
X#ifdef att
X /* watch out for extra shells (I don't understand either) */
X signal (SIGHUP, SIG_DFL);
X#else
X signal (SIGHUP, SIG_IGN);
X#endif
X /* restore various signals to their defaults */
X signal (SIGINT, SIG_DFL);
X signal (SIGQUIT, SIG_DFL);
X signal (SIGTERM, SIG_DFL);
X
X /* copy the environment before Setenving */
X for (i = 0 ; environ [i] != NULL ; i++) ;
X /*
X * The `4' (`5' for SYSV) is the number of Setenv()
X * calls which may add a new entry to the environment.
X * The `1' is for the NULL terminating entry.
X */
X#ifdef USE_SYSV_ENVVARS
X envnew = (char **) calloc ((unsigned) i + (5 + 1), sizeof(char *));
X#else
X#ifdef USE_TERMCAP
X envnew = (char **) calloc ((unsigned) i + (4 + 1), sizeof(char *));
X#else
X envnew = (char **) calloc ((unsigned) i + (3 + 1), sizeof(char *));
X#endif /* USE_TERMCAP */
X#endif /* USE_SYSV_ENVVARS */
X bcopy((char *)environ, (char *)envnew, i * sizeof(char *));
X environ = envnew;
X Setenv ("TERM=", TermName);
X bcopy((char *)environ, (char *)envnew, i * sizeof(char *));
X environ = envnew;
X Setenv ("TERM=", TermName);
X#ifdef USE_TERMCAP
X if(!TermName)
X *newtc = 0;
X#endif /* USE_TERMCAP */
X
X sprintf (buf, "%lu", screen->TekEmu ?
X ((unsigned long) XtWindow (XtParent(tekWidget))) :
X ((unsigned long) XtWindow (XtParent(term))));
X Setenv ("WINDOWID=", buf);
X /* put the display into the environment of the shell*/
X Setenv ("DISPLAY=", XDisplayString (screen->display));
X
X signal(SIGTERM, SIG_DFL);
X
X /* this is the time to go and set up stdin, out, and err
X */
X {
X /* dup the tty */
X for (i = 0; i <= 2; i++)
X if (i != tty) {
X (void) close(i);
X (void) dup(tty);
X }
X
X#ifndef att
X /* and close the tty */
X if (tty > 2)
X (void) close(tty);
X#endif
X }
X
X#ifdef UTMP
X#ifdef USE_SYSV_UTMP
X /* Set up our utmp entry now. We need to do it here
X ** for the following reasons:
X ** - It needs to have our correct process id (for
X ** login).
X ** - If our parent was to set it after the fork(),
X ** it might make it out before we need it.
X ** - We need to do it before we go and change our
X ** user and group id's.
X */
X
X (void) setutent ();
X /* set up entry to search for */
X (void) strncpy(utmp.ut_id,ttydev + strlen(ttydev) - 2,
X sizeof (utmp.ut_id));
X utmp.ut_type = DEAD_PROCESS;
X
X /* position to entry in utmp file */
X (void) getutid(&utmp);
X
X /* set up the new entry */
X pw = getpwuid(screen->uid);
X utmp.ut_type = USER_PROCESS;
X utmp.ut_exit.e_exit = 2;
X (void) strncpy(utmp.ut_user,
X (pw && pw->pw_name) ? pw->pw_name : "????",
X sizeof(utmp.ut_user));
X
X (void) strncpy(utmp.ut_id, ttydev + strlen(ttydev) - 2,
X sizeof(utmp.ut_id));
X (void) strncpy (utmp.ut_line,
X ttydev + strlen("/dev/"), sizeof (utmp.ut_line));
X#ifdef HAS_UTMP_UT_HOST
X (void) strncpy(utmp.ut_host, DisplayString(screen->display),
X sizeof(utmp.ut_host));
X#endif
X (void) strncpy(utmp.ut_name, pw->pw_name,
X sizeof(utmp.ut_name));
X
X utmp.ut_pid = getpid();
X utmp.ut_time = time ((long *) 0);
X
X /* write out the entry */
X if (!resource.utmpInhibit) (void) pututline(&utmp);
X
X#ifdef WTMP
X /* set wtmp entry if wtmp file exists */
X if ((fd = open(etc_wtmp, O_WRONLY | O_APPEND)) >= 0) {
X (void) write(fd, &utmp, sizeof utmp );
X (void) close(fd);
X }
X#endif
X /* close the file */
X (void) endutent();
X
X#else /* USE_SYSV_UTMP */
X /* We can now get our ttyslot! We can also set the initial
X * UTMP entry.
X */
X tslot = ttyslot();
X added_utmp_entry = False;
X {
X if (!resource.utmpInhibit &&
X (pw = getpwuid(screen->uid)) &&
X (i = open(etc_utmp, O_WRONLY)) >= 0) {
X bzero((char *)&utmp, sizeof(struct utmp));
X (void) strncpy(utmp.ut_line,
X ttydev + strlen("/dev/"),
X sizeof(utmp.ut_line));
X (void) strncpy(utmp.ut_name, pw->pw_name,
X sizeof(utmp.ut_name));
X#ifdef HAS_UTMP_UT_HOST
X (void) strncpy(utmp.ut_host,
X XDisplayString (screen->display),
X sizeof(utmp.ut_host));
X#endif
X time(&utmp.ut_time);
X lseek(i, (long)(tslot * sizeof(struct utmp)), 0);
X write(i, (char *)&utmp, sizeof(struct utmp));
X close(i);
X added_utmp_entry = True;
X#ifdef WTMP
END_OF_FILE
if test 26214 -ne `wc -c <'xterm/main.c.ab'`; then
echo shar: \"'xterm/main.c.ab'\" unpacked with wrong size!
fi
# end of 'xterm/main.c.ab'
fi
if test -f 'xterm/termcap.vi' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'xterm/termcap.vi'\"
else
echo shar: Extracting \"'xterm/termcap.vi'\" \(849 characters\)
sed "s/^X//" >'xterm/termcap.vi' <<'END_OF_FILE'
Xvs|xterm|4316x|4317x|vs100|xterm terminal emulator (X window system):\
X :cr=^M:do=^J:nl=^J:bl=^G:le=^H:ho=\E[H:\
X :LC:co#80:li#65:cl=\E[H\E[2J:bs:am:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\
X :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\
X :md=\E[1m:mr=\E[7m:me=\E[m:\
X :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=^H:\
X :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:ta=^I:pt:sf=\n:sr=\EM:\
X :al=\E[L:dl=\E[M:ic=\E[@:dc=\E[P:\
X :MT:ks=\E[?1h\E=:ke=\E[?1l\E>:\
X :is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l:\
X :rs=\E[r\E<\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l:xn:\
X :AL=\E[%dL:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP:\
X :ti=\E7\E[?47h:te=\E[2J\E[?47l\E8:\
X :hs:ts=\E[?E\E[?%i%dT:fs=\E[?F:es:ds=\E[?E:
Xv2|xterms|4315x|vs100s|xterm terminal emulator (small)(X window system):\
X :co#80:li#24:tc=xterm:
END_OF_FILE
if test 849 -ne `wc -c <'xterm/termcap.vi'`; then
echo shar: \"'xterm/termcap.vi'\" unpacked with wrong size!
fi
# end of 'xterm/termcap.vi'
fi
echo shar: End of archive 9 \(of 14\).
cp /dev/null ark9isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked all 14 archives.
rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
echo You still need to unpack the following archives:
echo " " ${MISSING}
fi
## End of shell archive.
exit 0
dan
----------------------------------------------------
O'Reilly && Associates argv at sun.com / argv at ora.com
Opinions expressed reflect those of the author only.
More information about the Comp.sources.x
mailing list