Newsgroups: comp.sources.unix From: jnweiger@immd4.informatik.uni-erlangen.de (Juergen Weigert) Subject: v25i041: Screen3 - multiple windows on an ASCII terminal, Part01/08 Sender: sources-moderator@pa.dec.com Approved: vixie@pa.dec.com Submitted-By: jnweiger@immd4.informatik.uni-erlangen.de (Juergen Weigert) Posting-Number: Volume 25, Issue 41 Archive-Name: screen3/part01 [ this is the third major release of "screen", a utility that lets you do "hot-key"-style switching between multiple sessions on a single ASCII terminal. it'll never replace a bitmapped window system, but if you're logged into a VT100 or TVI920 it can come in very handy. it has been tested on Ultrix 4.2 and it works like a champ. --vix ] #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh 'INSTALLATION' <<'END_OF_FILE' Installation of screen3.1 X X0.) Unpack. Screen comes as a compressed tar archinve. But... you propably already managed that step, when you are reading this. [the version in comp.sources.unix comes in SHAR files --mod] X X1.) take a look at the config directory. choose one of the config.h files there, or edit one to suit your needs. If necessary cunsult the online manuals or look into /usr/include/... [Copy one of them to ./config.h and edit it or at least look at it. --mod] X X2.) look at the Makefiles. Different systems need different libraries. Some need even the putenv code added. Build a Makefile that satisfies all these requirements. Then decide if you want to do screen debugging or want a production screen. In the first case you want to add -DDEBUG to CFLAGS. In the second case you may want to have -O in your CFLAGS and -s in your LDFLAGS, as you don't want to analyse a core-dump, if that ever happens. Still the executable may be 250 to 500 kbytes in size. X[There are a lot of Makefiles in the ./config directory; copy one up to ./Makefile and edit it or at least look at it. --mod] X X3.) compile with the right compiler. If you have gcc, use it. If you have a SYSV-ish and a bsd-like compiler, choose the later. E.g. on suns screen will not run properly when compiled with /usr/5bin/cc. X X4.) You may well run screen from your private binary directory and with a private socket directory like $HOME/.screen. But to have a full featured screen and (from a users point of view) more secure pty's you should consult a system administrator and discuss installing screen setuid-root in some globally accessible directory like /usr/local/bin. X Juergen Weigert. jnweiger@immd4.informatik.uni-erlangen.de END_OF_FILE if test 1716 -ne `wc -c <'INSTALLATION'`; then echo shar: \"'INSTALLATION'\" unpacked with wrong size! fi # end of 'INSTALLATION' fi if test -f 'MANIFEST' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'MANIFEST'\" else echo shar: Extracting \"'MANIFEST'\" \(1615 characters\) sed "s/^X//" >'MANIFEST' <<'END_OF_FILE' X File Name Archive # Description X----------------------------------------------------------- X CHANGES 3 X COPYING 3 X INSTALLATION 1 X MANIFEST 1 X README 1 X ansi.c 7 X ansi.h 1 X config 1 X config.h 2 X config/Makefile.bsd 1 X config/Makefile.gould_np1 1 X config/Makefile.mips 1 X config/Makefile.putenv 1 X config/Makefile.sco32 1 X config/Makefile.sgi 1 X config/Makefile.svr4 1 X config/Makefile.xenix 1 X config/config.gould_np1 3 X config/config.hpux 1 X config/config.mips 2 X config/config.mot88 1 X config/config.rs6000 2 X config/config.sequent_ptx 2 X config/config.sgi 2 X config/config.sunos41 2 X config/config.svr4 2 X config/config.symmetry 1 X config/config.sysv68 1 X config/config.ultrix31 2 X config/config.xelos 1 X config/config.xenix 2 X etcscreenrc 1 X extern.h 2 X fileio.c 5 X help.c 3 X mark.c 4 X patchlevel.h 1 X putenv.c 1 X readme 1 X screen.1 6 X screen.c 8 X screen.h 3 X socket.c 4 X terminfo 1 X terminfo/screencap 1 X terminfo/screeninfo.src 1 X terminfo/screenwinfo.src 1 X window.c 3 X xx.c 1 END_OF_FILE if test 1615 -ne `wc -c <'MANIFEST'`; then echo shar: \"'MANIFEST'\" unpacked with wrong size! fi # end of 'MANIFEST' fi if test -f 'README' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'README'\" else echo shar: Extracting \"'README'\" \(3036 characters\) sed "s/^X//" >'README' <<'END_OF_FILE' X Short introduction to screen (Version 3.0.7) jw 7.9.91 X screen X provides you with an ansi/vt100 terminal emulator, which can multiplex X up to 10 pseudo-terminals. On startup, it executes $SHELL in window 0. X Then it reads $HOME/.screenrc to learn configuration, keybindings, X and may open more windows. X X C-A C Create new windows. X X C-A SPACE Advance from window to window (with wraparound) X X C-A C-A Toggle between two windows. X X C-A 0 X ... X C-A 9 Switch to window nr. 0 ... 9. X X C-A w Show a list of windows in the Statusline. X X C-A a (Think of goto-start-of-line in emacs or tcsh). X C-A s (Think of i-search in emacs). X C-A q Send a literal C-A/C-S/C-Q to the process in the window. X X C-A l Redraw this window. X X C-A W Toggle between 80 & 132 columns mode. X X C-A L Try to toggle the utmp-slot for this window. X X C-A A Prompt for a new name for this window. (see C-A w). X X C-A z Suspend the whole screen. X X C-A x Execute /usr/bin/lock or $LOCKCMD or a builtin terminallock. X X C-A C-[ Start copy&paste mode. Move cursor with h,j,k,l. Set 2 marks X with SPACE or y. Abort with ESC. Note that "C-[" is ESC. X NOTE: there is a userdefined amount of scrollback history. X The history buffer is entered, when the cursor hits the top X of the window. X X C-A C-] paste in current window's stdin. see C-A C-[. X X C-A < X C-A > Read or write the copybuffer from/to the exchange file. X Multiple screen users on the same host may thus transfer text. X X C-A d Detach screen. All processes continue and may spool output X to their pty's, but screen disconnects from your terminal. X reattach with "screen -r". X X C-A D D Power detach. Disconnect like C-A d and kill the parent shell. X X C-A K Kill a window and send SIGHUP to its processgroup. Per default X this would be C-A C-k. But it is redefined in the demo .screenrc X (think of killing a whole line in emacs). X X C-A :set all Show all keybindings. The above list is not at all complete and X may even be wrong, as keys can be redefined in .screenrc or X with "C-A :bind 'X' keyname [arguments]". X X C-A : .... Online configuration change. X X screen -r [host.tty] X Reattach a detached screen session. The terminal emulator reconfigures X according to your $TERMCAP or $TERM settings. '-R' brings up a detached X session or (if none) creates a new session. You should specify a socket X when there you have multiple screens detached. X screen -d [host.tty] X Detach a screen session from remote. Has the same effect as typing 'C-A d' X on the controlling terminal. '-D' will power-detach. X screen -list screen -ls X Show all available sockets. If there are (DEAD???) sockets, you may consider X removing them. If there are sockets missing, you may send a SIGCHLD to its X process 'SCREEN' and the process will re-establish the socket. (think of X someone cleaning /tmp thoroughly). X screen -h 200 X Starts a new screen session and sets the number of lines in the scrollback X buffer to 200. The default is 50 lines. END_OF_FILE if test 3036 -ne `wc -c <'README'`; then echo shar: \"'README'\" unpacked with wrong size! fi # end of 'README' fi if test -f 'ansi.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'ansi.h'\" else echo shar: Extracting \"'ansi.h'\" \(2278 characters\) sed "s/^X//" >'ansi.h' <<'END_OF_FILE' X/* Copyright (c) 1991 X * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de) X * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de) X * Copyright (c) 1987 Oliver Laumann X * X * This program is free software; you can redistribute it and/or modify X * it under the terms of the GNU General Public License as published by X * the Free Software Foundation; either version 1, or (at your option) X * any later version. X * X * This program is distributed in the hope that it will be useful, X * but WITHOUT ANY WARRANTY; without even the implied warranty of X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the X * GNU General Public License for more details. X * X * You should have received a copy of the GNU General Public License X * along with this program (see the file COPYING); if not, write to the X * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. X * X * Noteworthy contributors to screen's design and implementation: X * Wayne Davison (davison@borland.com) X * Patrick Wolfe (pat@kai.com, kailand!pat) X * Bart Schaefer (schaefer@cse.ogi.edu) X * Nathan Glasser (nathan@brokaw.lcs.mit.edu) X * Larry W. Virden (lwv27%cas.BITNET@CUNYVM.CUNY.Edu) X * Howard Chu (hyc@hanauma.jpl.nasa.gov) X * Tim MacKenzie (tym@dibbler.cs.monash.edu.au) X * Markku Jarvinen (mta@{cc,cs,ee}.tut.fi) X * Marc Boucher (marc@CAM.ORG) X * X **************************************************************** X * $Id: ansi.h,v 1.13 91/10/06 14:47:20 jnweiger Exp $ FAU X */ X X#define NATTR 6 X X#define ATTR_DI 0 /* Dim mode */ X#define ATTR_US 1 /* Underscore mode */ X#define ATTR_BD 2 /* Bold mode */ X#define ATTR_RV 3 /* Reverse mode */ X#define ATTR_SO 4 /* Standout mode */ X#define ATTR_BL 5 /* Blinking */ X X#define A_DI (1<'config/Makefile.bsd' <<'END_OF_FILE' X# X# Makefile for screen X# X# See config.h for configuration options. X# X X# If you choose to compile with the tried and true: CC= cc X#CFLAGS= -O X#CFLAGS= -g -DTMPTEST -DDEBUG CFLAGS= -g LDFLAGS= X X# If you're using GNU C, be sure to use the -traditional flag: X#CC= gcc X#CFLAGS = -O -fstrength-reduce -fcombine-regs -finline-functions #-Wall X#CFLAGS= -traditional -O X#CFLAGS= -g -traditional -DTMPTEST X#CFLAGS= -g -traditional -DTMPTEST -DDEBUG X#LDFLAGS= -s X X#LIBS= nmalloc.o -ltermcap LIBS= -ltermcap X CFILES= screen.c ansi.c help.c fileio.c mark.c window.c socket.c OFILES= screen.o ansi.o help.o fileio.o mark.o window.o socket.o X screen: $(OFILES) X $(CC) $(CFLAGS) $(LDFLAGS) -o screen $(OFILES) $(LIBS) X screen.o: screen.c screen.h config.h patchlevel.h extern.h X $(CC) $(CFLAGS) -c screen.c X help.o: help.c screen.h config.h ansi.h extern.h X $(CC) $(CFLAGS) -c help.c X fileio.o: fileio.c screen.h config.h extern.h X $(CC) $(CFLAGS) -c fileio.c X ansi.o: ansi.c screen.h config.h ansi.h extern.h X $(CC) $(CFLAGS) -c ansi.c X mark.o: mark.c screen.h config.h ansi.h extern.h X $(CC) $(CFLAGS) -c mark.c X window.o: window.c config.h screen.h extern.h X $(CC) $(CFLAGS) -c window.c X socket.o: socket.c config.h screen.h extern.h X $(CC) $(CFLAGS) -c socket.c X clean: X rm -f $(OFILES) screen X lint: X lint -I. $(CFILES) X saber: X #load $(CFLAGS) screen.c ansi.c $(LIBS) END_OF_FILE if test 1364 -ne `wc -c <'config/Makefile.bsd'`; then echo shar: \"'config/Makefile.bsd'\" unpacked with wrong size! fi # end of 'config/Makefile.bsd' fi if test -f 'config/Makefile.gould_np1' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'config/Makefile.gould_np1'\" else echo shar: Extracting \"'config/Makefile.gould_np1'\" \(1459 characters\) sed "s/^X//" >'config/Makefile.gould_np1' <<'END_OF_FILE' X# X# Makefile for screen X# X# See config.h for configuration options. X# X X# If you choose to compile with the tried and true: CC= cc X#CFLAGS= -O X#CFLAGS= -g -DTMPTEST -DDEBUG -DNEEDSETENV CFLAGS= -g -DNEEDSETENV LDFLAGS= X X# If you're using GNU C, be sure to use the -traditional flag: X#CC= gcc X#CFLAGS = -O -fstrength-reduce -fcombine-regs -finline-functions #-Wall X#CFLAGS= -traditional -O X#CFLAGS= -g -traditional -DTMPTEST X#CFLAGS= -g -traditional -DTMPTEST -DDEBUG X#LDFLAGS= -s X X#LIBS= nmalloc.o -ltermcap LIBS= -ltermcap X CFILES= screen.c ansi.c help.c fileio.c mark.c window.c socket.c putenv.c OFILES= screen.o ansi.o help.o fileio.o mark.o window.o socket.o putenv.o X screen: $(OFILES) X $(CC) $(CFLAGS) $(LDFLAGS) -o screen $(OFILES) $(LIBS) X screen.o: screen.c screen.h config.h patchlevel.h extern.h X $(CC) $(CFLAGS) -c screen.c X help.o: help.c screen.h config.h extern.h X $(CC) $(CFLAGS) -c help.c X fileio.o: fileio.c screen.h config.h extern.h X $(CC) $(CFLAGS) -c fileio.c X ansi.o: ansi.c screen.h config.h ansi.h extern.h X $(CC) $(CFLAGS) -c ansi.c X mark.o: mark.c screen.h config.h ansi.h extern.h X $(CC) $(CFLAGS) -c mark.c X window.o: window.c config.h screen.h extern.h X $(CC) $(CFLAGS) -c window.c X socket.o: socket.c config.h screen.h extern.h X $(CC) $(CFLAGS) -c socket.c X putenv.o: putenv.c config.h X $(CC) $(CFLAGS) -c putenv.c X X clean: X rm -f $(OFILES) screen X lint: X lint -I. $(CFILES) X saber: X #load $(CFLAGS) screen.c ansi.c $(LIBS) END_OF_FILE if test 1459 -ne `wc -c <'config/Makefile.gould_np1'`; then echo shar: \"'config/Makefile.gould_np1'\" unpacked with wrong size! fi # end of 'config/Makefile.gould_np1' fi if test -f 'config/Makefile.mips' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'config/Makefile.mips'\" else echo shar: Extracting \"'config/Makefile.mips'\" \(1606 characters\) sed "s/^X//" >'config/Makefile.mips' <<'END_OF_FILE' X# X# Makefile for screen X# X# See config.h for configuration options. X# X X# If you choose to compile with the tried and true: CC= cc X#CFLAGS= -O X#CFLAGS= -g -DTMPTEST -DDEBUG X# Compiled on MIPS RC6280 running RiscOS 4.52, compiler doesn't define us X# any specific id so we define it here, maybe it should be defined in config.h CFLAGS= -g -systype bsd43 -DMIPS LDFLAGS= X X# If you're using GNU C, be sure to use the -traditional flag: X#CC= gcc X#CFLAGS = -O -fstrength-reduce -fcombine-regs -finline-functions #-Wall X#CFLAGS= -traditional -O X#CFLAGS= -g -traditional -DTMPTEST X#CFLAGS= -g -traditional -DTMPTEST -DDEBUG X#LDFLAGS= -s X X#LIBS= nmalloc.o -ltermcap X#LIBS= -ltermcap X# mld needed on MIPS to have nlist for loadaverage LIBS= -ltermcap -lmld X CFILES= screen.c ansi.c help.c fileio.c mark.c window.c socket.c OFILES= screen.o ansi.o help.o fileio.o mark.o window.o socket.o X screen: $(OFILES) X $(CC) $(CFLAGS) $(LDFLAGS) -o screen $(OFILES) $(LIBS) X screen.o: screen.c screen.h config.h patchlevel.h extern.h X $(CC) $(CFLAGS) -c screen.c X help.o: help.c screen.h config.h extern.h X $(CC) $(CFLAGS) -c help.c X fileio.o: fileio.c screen.h config.h extern.h X $(CC) $(CFLAGS) -c fileio.c X ansi.o: ansi.c screen.h config.h ansi.h extern.h X $(CC) $(CFLAGS) -c ansi.c X mark.o: mark.c screen.h config.h ansi.h extern.h X $(CC) $(CFLAGS) -c mark.c X window.o: window.c config.h screen.h extern.h X $(CC) $(CFLAGS) -c window.c X socket.o: socket.c config.h screen.h extern.h X $(CC) $(CFLAGS) -c socket.c X clean: X rm -f $(OFILES) screen X lint: X lint -I. $(CFILES) X saber: X #load $(CFLAGS) screen.c ansi.c $(LIBS) END_OF_FILE if test 1606 -ne `wc -c <'config/Makefile.mips'`; then echo shar: \"'config/Makefile.mips'\" unpacked with wrong size! fi # end of 'config/Makefile.mips' fi if test -f 'config/Makefile.putenv' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'config/Makefile.putenv'\" else echo shar: Extracting \"'config/Makefile.putenv'\" \(1525 characters\) sed "s/^X//" >'config/Makefile.putenv' <<'END_OF_FILE' X# X# Makefile for screen X# X# See config.h for configuration options. X# X X# If you choose to compile with the tried and true: CC= cc X#CFLAGS= -O -DNEEDSETENV X#CFLAGS= -g -DTMPTEST -DDEBUG -DNEEDSETENV CFLAGS= -g -DNEEDSETENV LDFLAGS= X X# If you're using GNU C, be sure to use the -traditional flag: X#CC= gcc X#CFLAGS = -O -fstrength-reduce -fcombine-regs -finline-functions -DNEEDSETENV #-Wall X#CFLAGS= -traditional -O -DNEEDSETENV X#CFLAGS= -g -traditional -DTMPTEST -DNEEDSETENV X#CFLAGS= -g -traditional -DTMPTEST -DDEBUG -DNEEDSETENV X#LDFLAGS= -s X X#LIBS= nmalloc.o -ltermcap LIBS= -ltermcap X CFILES= screen.c ansi.c help.c fileio.c mark.c window.c socket.c putenv.c OFILES= screen.o ansi.o help.o fileio.o mark.o window.o socket.o putenv.o X screen: $(OFILES) X $(CC) $(CFLAGS) $(LDFLAGS) -o screen $(OFILES) $(LIBS) X screen.o: screen.c screen.h config.h patchlevel.h extern.h X $(CC) $(CFLAGS) -c screen.c X help.o: help.c screen.h config.h extern.h X $(CC) $(CFLAGS) -c help.c X fileio.o: fileio.c screen.h config.h extern.h X $(CC) $(CFLAGS) -c fileio.c X ansi.o: ansi.c screen.h config.h ansi.h extern.h X $(CC) $(CFLAGS) -c ansi.c X mark.o: mark.c screen.h config.h ansi.h extern.h X $(CC) $(CFLAGS) -c mark.c X window.o: window.c config.h screen.h extern.h X $(CC) $(CFLAGS) -c window.c X socket.o: socket.c config.h screen.h extern.h X $(CC) $(CFLAGS) -c socket.c X putenv.o: putenv.c config.h X $(CC) $(CFLAGS) -c putenv.c X X clean: X rm -f $(OFILES) screen X lint: X lint -I. $(CFILES) X saber: X #load $(CFLAGS) screen.c ansi.c $(LIBS) END_OF_FILE if test 1525 -ne `wc -c <'config/Makefile.putenv'`; then echo shar: \"'config/Makefile.putenv'\" unpacked with wrong size! fi # end of 'config/Makefile.putenv' fi if test -f 'config/Makefile.sco32' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'config/Makefile.sco32'\" else echo shar: Extracting \"'config/Makefile.sco32'\" \(1359 characters\) sed "s/^X//" >'config/Makefile.sco32' <<'END_OF_FILE' X# X# Makefile for screen X# X# See config.h for configuration options. X# X X# If you choose to compile with the tried and true: X#CC= cc X#CFLAGS= -O X#CFLAGS= -g -DTMPTEST -DDEBUG X#CFLAGS= -g X#LDFLAGS= X X# If you're using GNU C, be sure to use the -traditional flag: CC= gcc CFLAGS = -traditional -O -fstrength-reduce -fcombine-regs -finline-functions #-Wall X#CFLAGS= -g -traditional -DTMPTEST X#CFLAGS= -g -traditional -DTMPTEST -DDEBUG LDFLAGS= -s X X#LIBS= nmalloc.o -ltermcap LIBS= -lcrypt_d -ltinfo X CFILES= screen.c ansi.c help.c fileio.c mark.c window.c socket.c OFILES= screen.o ansi.o help.o fileio.o mark.o window.o socket.o X screen: $(OFILES) X $(CC) $(CFLAGS) $(LDFLAGS) -o screen $(OFILES) $(LIBS) X screen.o: screen.c screen.h config.h patchlevel.h extern.h X $(CC) $(CFLAGS) -c screen.c X help.o: help.c screen.h config.h ansi.h extern.h X $(CC) $(CFLAGS) -c help.c X fileio.o: fileio.c screen.h config.h extern.h X $(CC) $(CFLAGS) -c fileio.c X ansi.o: ansi.c screen.h config.h ansi.h extern.h X $(CC) $(CFLAGS) -c ansi.c X mark.o: mark.c screen.h config.h ansi.h extern.h X $(CC) $(CFLAGS) -c mark.c X window.o: window.c config.h screen.h extern.h X $(CC) $(CFLAGS) -c window.c X socket.o: socket.c config.h screen.h extern.h X $(CC) $(CFLAGS) -c socket.c X clean: X rm -f $(OFILES) screen X lint: X lint -I. $(CFILES) X saber: X #load $(CFLAGS) screen.c ansi.c $(LIBS) END_OF_FILE if test 1359 -ne `wc -c <'config/Makefile.sco32'`; then echo shar: \"'config/Makefile.sco32'\" unpacked with wrong size! fi # end of 'config/Makefile.sco32' fi if test -f 'config/Makefile.sgi' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'config/Makefile.sgi'\" else echo shar: Extracting \"'config/Makefile.sgi'\" \(1703 characters\) sed "s/^X//" >'config/Makefile.sgi' <<'END_OF_FILE' X# X# Makefile for screen X# X# See config.h for configuration options. X# X X# If you choose to compile with the tried and true: CC= cc X# Compiled on SGI MIPS Iris4D/20 running Irix 3.3.2, compiler doesn't define us X# any specific id so we define it here, maybe it should be defined in config.h X#CFLAGS= -O -DMIPS -DSGI -I/usr/include/bsd X#CFLAGS= -g -DTMPTEST -DDEBUG -DMIPS -DSGI -I/usr/include/bsd CFLAGS= -g -DMIPS -DSGI -I/usr/include/bsd LDFLAGS= X X# If you're using GNU C, be sure to use the -traditional flag: X#CC= gcc X#CFLAGS = -O -fstrength-reduce -fcombine-regs -finline-functions #-Wall X#CFLAGS= -traditional -O X#CFLAGS= -g -traditional -DTMPTEST X#CFLAGS= -g -traditional -DTMPTEST -DDEBUG X#LDFLAGS= -s X X#LIBS= nmalloc.o -ltermcap X#LIBS= -ltermcap X# mld needed on MIPS to have nlist for loadaverage LIBS= -ltermcap -lsun -lbsd -lmld -lc_s X CFILES= screen.c ansi.c help.c fileio.c mark.c window.c socket.c OFILES= screen.o ansi.o help.o fileio.o mark.o window.o socket.o X screen: $(OFILES) X $(CC) $(CFLAGS) $(LDFLAGS) -o screen $(OFILES) $(LIBS) X screen.o: screen.c screen.h config.h patchlevel.h extern.h X $(CC) $(CFLAGS) -c screen.c X help.o: help.c screen.h config.h extern.h X $(CC) $(CFLAGS) -c help.c X fileio.o: fileio.c screen.h config.h extern.h X $(CC) $(CFLAGS) -c fileio.c X ansi.o: ansi.c screen.h config.h ansi.h extern.h X $(CC) $(CFLAGS) -c ansi.c X mark.o: mark.c screen.h config.h ansi.h extern.h X $(CC) $(CFLAGS) -c mark.c X window.o: window.c config.h screen.h extern.h X $(CC) $(CFLAGS) -c window.c X socket.o: socket.c config.h screen.h extern.h X $(CC) $(CFLAGS) -c socket.c X clean: X rm -f $(OFILES) screen X lint: X lint -I. $(CFILES) X saber: X #load $(CFLAGS) screen.c ansi.c $(LIBS) END_OF_FILE if test 1703 -ne `wc -c <'config/Makefile.sgi'`; then echo shar: \"'config/Makefile.sgi'\" unpacked with wrong size! fi # end of 'config/Makefile.sgi' fi if test -f 'config/Makefile.svr4' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'config/Makefile.svr4'\" else echo shar: Extracting \"'config/Makefile.svr4'\" \(1494 characters\) sed "s/^X//" >'config/Makefile.svr4' <<'END_OF_FILE' X# X# Makefile for screen X# X# See config.h for configuration options. X# X X# If you choose to compile with the tried and true: CC= cc CFLAGS= -O -DNEEDSETENV X#CFLAGS= -g -DTMPTEST -DDEBUG X#CFLAGS= -g LDFLAGS= X X# If you're using GNU C, be sure to use the -traditional flag: X#CC= gcc X#CFLAGS = -O -fstrength-reduce -fcombine-regs -finline-functions #-Wall X#CFLAGS= -traditional -O X#CFLAGS= -g -traditional -DTMPTEST X#CFLAGS= -g -traditional -DTMPTEST -DDEBUG X#LDFLAGS= -s X X#LIBS= nmalloc.o -ltermcap X#LIBS= -ltermcap X X# Use the following line on SVR4 LIBS= -ltermlib -lelf X CFILES= screen.c ansi.c help.c fileio.c mark.c window.c socket.c putenv.c OFILES= screen.o ansi.o help.o fileio.o mark.o window.o socket.o putenv.o X screen: $(OFILES) X $(CC) $(CFLAGS) $(LDFLAGS) -o screen $(OFILES) $(LIBS) X screen.o: screen.c screen.h config.h patchlevel.h extern.h X $(CC) $(CFLAGS) -c screen.c X help.o: help.c screen.h config.h extern.h X $(CC) $(CFLAGS) -c help.c X fileio.o: fileio.c screen.h config.h extern.h X $(CC) $(CFLAGS) -c fileio.c X ansi.o: ansi.c screen.h config.h ansi.h extern.h X $(CC) $(CFLAGS) -c ansi.c X mark.o: mark.c screen.h config.h ansi.h extern.h X $(CC) $(CFLAGS) -c mark.c X window.o: window.c config.h screen.h extern.h X $(CC) $(CFLAGS) -c window.c X socket.o: socket.c config.h screen.h extern.h X $(CC) $(CFLAGS) -c socket.c X putenv.o: putenv.c X $(CC) $(CFLAGS) -c putenv.c X clean: X rm -f $(OFILES) screen X lint: X lint -I. $(CFILES) X saber: X #load $(CFLAGS) screen.c ansi.c $(LIBS) END_OF_FILE if test 1494 -ne `wc -c <'config/Makefile.svr4'`; then echo shar: \"'config/Makefile.svr4'\" unpacked with wrong size! fi # end of 'config/Makefile.svr4' fi if test -f 'config/Makefile.xenix' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'config/Makefile.xenix'\" else echo shar: Extracting \"'config/Makefile.xenix'\" \(1768 characters\) sed "s/^X//" >'config/Makefile.xenix' <<'END_OF_FILE' X# X# Makefile for screen under SCO XENIX 2.3.[01] X# X# See config.h for configuration options. X# X# Ronald Khoo : X# The -l2.3 load library is needed for compiling with the SCO UNIX X# XENIX cross development libraries. You will probably have to remove X# it for use with SCO XENIX 2.3.[01] development systems. If you have a 2.2 X# development system, you will need select.o from Keith Gabryelski's news X# posting of a couple of years back -- I doubt that any of you are in X# that situation. X X# If you choose to compile with the tried and true: X#CC= cc X#CFLAGS= -O X#CFLAGS= -g -DTMPTEST -DDEBUG X#CFLAGS= -g LDFLAGS= X X# If you're using GNU C, be sure to use the -traditional flag: CC= gcc X#CFLAGS = -O -fstrength-reduce -fcombine-regs -finline-functions #-Wall CFLAGS= -traditional -O -DM_TERMCAP -DNO_PROTOTYPE X#LDFLAGS= -s X X#LIBS= nmalloc.o -ltermcap LIBS= -ltermcap -lcrypt -ldir -l2.3 -lx X CFILES= screen.c ansi.c help.c fileio.c mark.c window.c socket.c OFILES= screen.o ansi.o help.o fileio.o mark.o window.o socket.o X screen: $(OFILES) X $(CC) $(CFLAGS) $(LDFLAGS) -o screen $(OFILES) $(LIBS) X screen.o: screen.c screen.h config.h patchlevel.h extern.h X $(CC) $(CFLAGS) -c screen.c X help.o: help.c screen.h config.h extern.h X $(CC) $(CFLAGS) -c help.c X fileio.o: fileio.c screen.h config.h extern.h X $(CC) $(CFLAGS) -c fileio.c X ansi.o: ansi.c screen.h config.h ansi.h extern.h X $(CC) $(CFLAGS) -c ansi.c X mark.o: mark.c screen.h config.h ansi.h extern.h X $(CC) $(CFLAGS) -c mark.c X window.o: window.c config.h screen.h extern.h X $(CC) $(CFLAGS) -c window.c X socket.o: socket.c config.h screen.h extern.h X $(CC) $(CFLAGS) -c socket.c X clean: X rm -f $(OFILES) screen X lint: X lint -I. $(CFILES) X saber: X #load $(CFLAGS) screen.c ansi.c $(LIBS) END_OF_FILE if test 1768 -ne `wc -c <'config/Makefile.xenix'`; then echo shar: \"'config/Makefile.xenix'\" unpacked with wrong size! fi # end of 'config/Makefile.xenix' fi if test -f 'config/config.hpux' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'config/config.hpux'\" else echo shar: Extracting \"'config/config.hpux'\" \(8091 characters\) sed "s/^X//" >'config/config.hpux' <<'END_OF_FILE' X/* Copyright (c) 1991 X * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de) X * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de) X * Copyright (c) 1987 Oliver Laumann X * X * This program is free software; you can redistribute it and/or modify X * it under the terms of the GNU General Public License as published by X * the Free Software Foundation; either version 1, or (at your option) X * any later version. X * X * This program is distributed in the hope that it will be useful, X * but WITHOUT ANY WARRANTY; without even the implied warranty of X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the X * GNU General Public License for more details. X * X * You should have received a copy of the GNU General Public License X * along with this program (see the file COPYING); if not, write to the X * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. X * X * Noteworthy contributors to screen's design and implementation: X * Wayne Davison (davison@borland.com) X * Patrick Wolfe (pat@kai.com, kailand!pat) X * Bart Schaefer (schaefer@cse.ogi.edu) X * Nathan Glasser (nathan@brokaw.lcs.mit.edu) X * Larry W. Virden (lwv27%cas.BITNET@CUNYVM.CUNY.Edu) X * Howard Chu (hyc@hanauma.jpl.nasa.gov) X * Tim MacKenzie (tym@dibbler.cs.monash.edu.au) X * Markku Jarvinen (mta@{cc,cs,ee}.tut.fi) X * Marc Boucher (marc@CAM.ORG) X * X **************************************************************** X * $Id: config.hpux,v 1.18 91/10/06 11:58:43 jnweiger Exp $ FAU X */ X X X/* X * Beginning of User Configuration Section X * X * First off, you should decide if you intend to install screen set-uid to X * root. This isn't necessary to use screen, but it allows the pseudo-ttys X * to be set to their proper owner (for security purposes), /etc/utmp to be X * updated, and /dev/kmem to be accessed to read the load average values. X * X * An alternative to installing screen set-uid root is to install it set-gid X * utmp (with the file /etc/utmp installed to be group-utmp writable) or X * set-gid kmem (with /dev/kmem set to be group-kmem readable) or some other X * custom group to give you both. The final alternative is to omit /etc/utmp X * updating and the /dev/kmem reading (see the following defines) and simply X * run screen as a regular program -- its major functions will be unaffected. X */ X X X/* X * Define POSIX if your system supports IEEE Std 1003.1-1988 (POSIX). X */ X#define POSIX X X/* X * Define BSDJOBS if you have BSD-style job control (both process X * groups and a tty that deals correctly with them). X */ X#define BSDJOBS X X/* X * Define TERMIO if you have struct termio instead of struct sgttyb. X * This is usually the case for SVID systems, where BSD uses sgttyb. X * POSIX systems should define this anyway, even though they use X * struct termios. X */ X#define TERMIO X X/* X * Define TERMINFO if your machine emulates the termcap routines X * with the terminfo database. X * Thus the .screenrc file is parsed for X * the command 'terminfo' and not 'termcap'. X */ X#define TERMINFO X X/* X * Define SYSV if your machine is SYSV complient (Sys V, HPUX, A/UX) X */ X#define SYSV X X/* X * Define SIGVOID if your signal handlers return void. On older X * systems, signal returns int, but on newer ones, it returns void. X */ X#define SIGVOID X X/* X * Define DIRENT if your system has instead of X */ X#define DIRENT X X/* X * If screen is going to be installed set-uid root, you MUST define SUIDROOT. X */ X#define SUIDROOT X X/* X * If screen is installed with permissions to update /etc/utmp (such as if X * it is installed set-uid root), define UTMPOK. Set LOGINDEFAULT to one (1) X * if you want entries added to /etc/utmp by default, else set it to zero (0). X */ X#define UTMPOK X#define LOGINDEFAULT 1 X X/* X * If your system has getutent(), pututline(), etc. to write to the X * utmp file, define GETUTENT. X */ X#define GETUTENT X X/* X * Define UTHOST if the utmp file has a host field. X */ X#define UTHOST X X/* X * If UTMPOK is defined and your system (incorrectly) counts logins by X * counting non-null entries in /etc/utmp (instead of counting non-null X * entries with no hostname that are not on a pseudo tty), define USRLIMIT X * to have screen put an upper-limit on the number of entries to write X * into /etc/utmp. This helps to keep you from exceeding a limited-user X * license. X */ X#undef USRLIMIT X X/* X * If screen is NOT installed set-uid root, screen can provide tty security X * by exclusively locking the ptys. While this keeps other users from X * opening your ptys, it also keeps your own subprocesses from being able X * to open /dev/tty. Define LOCKPTY to add this exclusive locking. X */ X#undef LOCKPTY X X/* X * If your system does not have the calls setre(s)uid() and setre(s)gid(), X * define NOREUID to force screen to use a forked process to safely create X * output files without retaining any special privileges. X * (Output logging will be disabled, however.) X */ X#undef NOREUID X X/* X * If you want the "time" command to display the current load average X * you must install screen with the needed privileges to read /dev/kmem X * and have a load average format that screen understands. We handle the X * following formats: 3 doubles (BSD), 3 longs (sun), and 4 longs (alliant). X */ X#define LOADAV_3DOUBLES X#undef LOADAV_3LONGS X#undef LOADAV_4LONGS X X/* X * If your system has the new format /etc/ttys (like 4.3 BSD) and the X * getttyent(3) library functions, define GETTTYENT. X */ X#undef GETTTYENT X X/* X * If your version of NFS supports named sockets and you install screen X * suid root, you may need to define NFS_HACK for screen to be able to X * open the sockets. X */ X#undef NFS_HACK X X/* X * By default screen will create a directory named ".screen" in the user's X * HOME directory to contain the named sockets. If this causes you problems X * (e.g. some user's HOME directories are NFS-mounted and don't support X * named sockets) you can have screen create the socket directories in a X * common subdirectory, such as /tmp or /usr/tmp. It makes things a little X * more secure if you choose a directory where the "sticky" bit is on, but X * this isn't required. Screen will name the subdirectories "S-$USER" X * (e.g /tmp/S-davison). X * Do not define TMPTEST unless it's for debugging purpose. X * If you want to have your socket directory in "/tmp/screens" then X * define LOCALSOCKDIR and change the definition of SOCKDIR below. X */ X#define LOCALSOCKDIR X X#ifdef LOCALSOCKDIR X# ifndef TMPTEST X# define SOCKDIR "/local/screens" X# else X# define SOCKDIR "/tmp/screens" X# endif X#endif X X/* X * Define USEBCOPY if the bcopy() from your system's C library supports the X * overlapping of source and destination blocks. When undefined, screen X * uses its own (probably slower) version of bcopy(). X */ X#undef USEBCOPY X X/* X * If you'd rather see the status line on the first line of your X * terminal rather than the last, define TOPSTAT. X */ X#undef TOPSTAT X X/* X * If your system has vsprintf() and requires the use of the macros in X * "varargs.h" to use functions with variable arguments, X * define USEVARARGS. X */ X#undef USEVARARGS X X/* X * Define this if your system supports named pipes. X */ X#undef NAMEDPIPE X X/* X * here come the erlangen extensions to screen: X * define LOCK if you want to use a lock program for a screenlock. X * define PASSWORD for secure reattach of your screen. X * define COPY_PASTE to use the famous hacker's treasure zoo. X * define POW_DETACH to have a detach_and_logout key. X * define REMOTE_DETACH (-d option) to move screen between terminals. X * (jw) X */ X#define LOCK X#define PASSWORD X#define COPY_PASTE X#define REMOTE_DETACH X#define POW_DETACH X X/* X * As error messages are mostly meaningless to the user, we X * try to throw out phrases that are somewhat more familiar X * to ...well, at least familiar to us NetHack players. X */ X#define NETHACK X X/* X * and another sneaky feature: screen sources two startup files. X * first a global file with a path specified here, second X * your local $HOME/.screenrc X * Don't define this, if you don't want it. X */ X#define ETCSCREENRC "/local/etc/screenrc" X X/* X * End of User Configuration Section X */ END_OF_FILE if test 8091 -ne `wc -c <'config/config.hpux'`; then echo shar: \"'config/config.hpux'\" unpacked with wrong size! fi # end of 'config/config.hpux' fi if test -f 'config/config.mot88' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'config/config.mot88'\" else echo shar: Extracting \"'config/config.mot88'\" \(8081 characters\) sed "s/^X//" >'config/config.mot88' <<'END_OF_FILE' X/* Copyright (c) 1991 X * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de) X * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de) X * Copyright (c) 1987 Oliver Laumann X * X * This program is free software; you can redistribute it and/or modify X * it under the terms of the GNU General Public License as published by X * the Free Software Foundation; either version 1, or (at your option) X * any later version. X * X * This program is distributed in the hope that it will be useful, X * but WITHOUT ANY WARRANTY; without even the implied warranty of X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the X * GNU General Public License for more details. X * X * You should have received a copy of the GNU General Public License X * along with this program (see the file COPYING); if not, write to the X * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. X * X * Noteworthy contributors to screen's design and implementation: X * Wayne Davison (davison@borland.com) X * Patrick Wolfe (pat@kai.com, kailand!pat) X * Bart Schaefer (schaefer@cse.ogi.edu) X * Nathan Glasser (nathan@brokaw.lcs.mit.edu) X * Larry W. Virden (lwv27%cas.BITNET@CUNYVM.CUNY.Edu) X * Howard Chu (hyc@hanauma.jpl.nasa.gov) X * Tim MacKenzie (tym@dibbler.cs.monash.edu.au) X * Markku Jarvinen (mta@{cc,cs,ee}.tut.fi) X * Marc Boucher (marc@CAM.ORG) X * X **************************************************************** X * $Id: config.mot88,v 1.8 91/10/06 11:58:54 jnweiger Exp $ FAU X */ X X X/* X * Beginning of User Configuration Section X * X * First off, you should decide if you intend to install screen set-uid to X * root. This isn't necessary to use screen, but it allows the pseudo-ttys X * to be set to their proper owner (for security purposes), /etc/utmp to be X * updated, and /dev/kmem to be accessed to read the load average values. X * X * An alternative to installing screen set-uid root is to install it set-gid X * utmp (with the file /etc/utmp installed to be group-utmp writable) or X * set-gid kmem (with /dev/kmem set to be group-kmem readable) or some other X * custom group to give you both. The final alternative is to omit /etc/utmp X * updating and the /dev/kmem reading (see the following defines) and simply X * run screen as a regular program -- its major functions will be unaffected. X */ X X X/* X * Define POSIX if your system supports IEEE Std 1003.1-1988 (POSIX). X */ X#define POSIX X X/* X * Define BSDJOBS if you have BSD-style job control (both process X * groups and a tty that deals correctly with them). X */ X#define BSDJOBS X X/* X * Define TERMIO if you have struct termio instead of struct sgttyb. X * This is usually the case for SVID systems, where BSD uses sgttyb. X * POSIX systems should define this anyway, even though they use X * struct termios. X */ X#define TERMIO X X/* X * Define TERMINFO if your machine emulates the termcap routines X * with the terminfo database. X * Thus the .screenrc file is parsed for X * the command 'terminfo' and not 'termcap'. X */ X#define TERMINFO X X/* X * Define SYSV if your machine is SYSV complient (Sys V, HPUX, A/UX) X */ X#define SYSV X X/* X * Define SIGVOID if your signal handlers return void. On older X * systems, signal returns int, but on newer ones, it returns void. X */ X#define SIGVOID X X/* X * Define DIRENT if your system has instead of X */ X#define DIRENT X X/* X * If screen is going to be installed set-uid root, you MUST define SUIDROOT. X */ X#define SUIDROOT X X/* X * If screen is installed with permissions to update /etc/utmp (such as if X * it is installed set-uid root), define UTMPOK. Set LOGINDEFAULT to one (1) X * if you want entries added to /etc/utmp by default, else set it to zero (0). X */ X#undef UTMPOK X#define LOGINDEFAULT 1 X X/* X * If your system has getutent(), pututline(), etc. to write to the X * utmp file, define GETUTENT. X */ X#define GETUTENT X X/* X * Define UTHOST if the utmp file has a host field. X */ X#undef UTHOST X X/* X * If UTMPOK is defined and your system (incorrectly) counts logins by X * counting non-null entries in /etc/utmp (instead of counting non-null X * entries with no hostname that are not on a pseudo tty), define USRLIMIT X * to have screen put an upper-limit on the number of entries to write X * into /etc/utmp. This helps to keep you from exceeding a limited-user X * license. X */ X#undef USRLIMIT X X/* X * If screen is NOT installed set-uid root, screen can provide tty security X * by exclusively locking the ptys. While this keeps other users from X * opening your ptys, it also keeps your own subprocesses from being able X * to open /dev/tty. Define LOCKPTY to add this exclusive locking. X */ X#undef LOCKPTY X X/* X * If your system does not have the calls setreuid() and setregid(), define X * NOREUID to force screen to use a forked process to safely create output X * files without retaining any special privileges. (Output logging will be X * disabled, however.) X */ X#undef NOREUID X X/* X * If you want the "time" command to display the current load average X * you must install screen with the needed privileges to read /dev/kmem X * and have a load average format that screen understands. We handle the X * following formats: 3 doubles (BSD), 3 longs (sun), and 4 longs (alliant). X */ X#define LOADAV_3DOUBLES X#undef LOADAV_3LONGS X#undef LOADAV_4LONGS X X/* X * If your system has the new format /etc/ttys (like 4.3 BSD) and the X * getttyent(3) library functions, define GETTTYENT. X */ X#undef GETTTYENT X X/* X * If your version of NFS supports named sockets and you install screen X * suid root, you may need to define NFS_HACK for screen to be able to X * open the sockets. X */ X#undef NFS_HACK X X/* X * By default screen will create a directory named ".screen" in the user's X * HOME directory to contain the named sockets. If this causes you problems X * (e.g. some user's HOME directories are NFS-mounted and don't support X * named sockets) you can have screen create the socket directories in a X * common subdirectory, such as /tmp or /usr/tmp. It makes things a little X * more secure if you choose a directory where the "sticky" bit is on, but X * this isn't required. Screen will name the subdirectories "S-$USER" X * (e.g /tmp/S-davison). X * Do not define TMPTEST unless it's for debugging purpose. X * If you want to have your socket directory in "/tmp/screens" then X * define LOCALSOCKDIR and change the definition of SOCKDIR below. X */ X#define LOCALSOCKDIR X X#ifdef LOCALSOCKDIR X# ifndef TMPTEST X# define SOCKDIR "/local/screens" X# else X# define SOCKDIR "/tmp/screens" X# endif X#endif X X/* X * Define USEBCOPY if the bcopy() from your system's C library supports the X * overlapping of source and destination blocks. When undefined, screen X * uses its own (probably slower) version of bcopy(). X */ X#undef USEBCOPY X X/* X * If you'd rather see the status line on the first line of your X * terminal rather than the last, define TOPSTAT. X */ X#undef TOPSTAT X X/* X * If your system has vsprintf() and requires the use of the macros in X * "varargs.h" to use functions with variable arguments, X * define USEVARARGS. X */ X#undef USEVARARGS X X/* X * Define this if your system supports named pipes. X */ X#undef NAMEDPIPE X X/* X * here come the erlangen extensions to screen: X * define LOCK if you want to use a lock program for a screenlock. X * define PASSWORD for secure reattach of your screen. X * define COPY_PASTE to use the famous hacker's treasure zoo. X * define POW_DETACH to have a detach_and_logout key. X * define REMOTE_DETACH (-d option) to move screen between terminals. X * (jw) X */ X#define LOCK X#define PASSWORD X#define COPY_PASTE X#define REMOTE_DETACH X#define POW_DETACH X X/* X * As error messages are mostly meaningless to the user, we X * try to throw out phrases that are somewhat more familiar X * to ...well, at least familiar to us NetHack players. X */ X#undef NETHACK X X/* X * and another sneaky feature: screen sources two startup files. X * first a global file with a path specified here, second X * your local $HOME/.screenrc X * Don't define this, if you don't want it. X */ X#define ETCSCREENRC "/local/etc/screenrc" X X/* X * End of User Configuration Section X */ END_OF_FILE if test 8081 -ne `wc -c <'config/config.mot88'`; then echo shar: \"'config/config.mot88'\" unpacked with wrong size! fi # end of 'config/config.mot88' fi if test -f 'config/config.symmetry' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'config/config.symmetry'\" else echo shar: Extracting \"'config/config.symmetry'\" \(8080 characters\) sed "s/^X//" >'config/config.symmetry' <<'END_OF_FILE' X/* Copyright (c) 1991 X * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de) X * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de) X * Copyright (c) 1987 Oliver Laumann X * X * This program is free software; you can redistribute it and/or modify X * it under the terms of the GNU General Public License as published by X * the Free Software Foundation; either version 1, or (at your option) X * any later version. X * X * This program is distributed in the hope that it will be useful, X * but WITHOUT ANY WARRANTY; without even the implied warranty of X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the X * GNU General Public License for more details. X * X * You should have received a copy of the GNU General Public License X * along with this program (see the file COPYING); if not, write to the X * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. X * X * Noteworthy contributors to screen's design and implementation: X * Wayne Davison (davison@borland.com) X * Patrick Wolfe (pat@kai.com, kailand!pat) X * Bart Schaefer (schaefer@cse.ogi.edu) X * Nathan Glasser (nathan@brokaw.lcs.mit.edu) X * Larry W. Virden (lwv27%cas.BITNET@CUNYVM.CUNY.Edu) X * Howard Chu (hyc@hanauma.jpl.nasa.gov) X * Tim MacKenzie (tym@dibbler.cs.monash.edu.au) X * Markku Jarvinen (mta@{cc,cs,ee}.tut.fi) X * Marc Boucher (marc@CAM.ORG) X * X **************************************************************** X * $Id: config.symmetry,v 1.14 91/10/06 11:59:04 jnweiger Exp $ FAU X */ X X X/* X * Beginning of User Configuration Section X * X * First off, you should decide if you intend to install screen set-uid to X * root. This isn't necessary to use screen, but it allows the pseudo-ttys X * to be set to their proper owner (for security purposes), /etc/utmp to be X * updated, and /dev/kmem to be accessed to read the load average values. X * X * An alternative to installing screen set-uid root is to install it set-gid X * utmp (with the file /etc/utmp installed to be group-utmp writable) or X * set-gid kmem (with /dev/kmem set to be group-kmem readable) or some other X * custom group to give you both. The final alternative is to omit /etc/utmp X * updating and the /dev/kmem reading (see the following defines) and simply X * run screen as a regular program -- its major functions will be unaffected. X */ X X X/* X * Define POSIX if your system supports IEEE Std 1003.1-1988 (POSIX). X */ X#undef POSIX X X/* X * Define BSDJOBS if you have BSD-style job control (both process X * groups and a tty that deals correctly with them). X */ X#define BSDJOBS X X/* X * Define TERMIO if you have struct termio instead of struct sgttyb. X * This is usually the case for SVID systems, where BSD uses sgttyb. X * POSIX systems should define this anyway, even though they use X * struct termios. X */ X#undef TERMIO X X/* X * Define TERMINFO if your machine emulates the termcap routines X * with the terminfo database. X * Thus the .screenrc file is parsed for X * the command 'terminfo' and not 'termcap'. X */ X#undef TERMINFO X X/* X * Define SYSV if your machine is SYSV complient (Sys V, HPUX, A/UX) X */ X#undef SYSV X X/* X * Define SIGVOID if your signal handlers return void. On older X * systems, signal returns int, but on newer ones, it returns void. X */ X#undef SIGVOID X X/* X * Define DIRENT if your system has instead of X */ X#undef DIRENT X X/* X * If screen is going to be installed set-uid root, you MUST define SUIDROOT. X */ X#define SUIDROOT X X/* X * If screen is installed with permissions to update /etc/utmp (such as if X * it is installed set-uid root), define UTMPOK. Set LOGINDEFAULT to one (1) X * if you want entries added to /etc/utmp by default, else set it to zero (0). X */ X#define UTMPOK X#define LOGINDEFAULT 1 X X/* X * If your system has getutent(), pututline(), etc. to write to the X * utmp file, define GETUTENT. X */ X#undef GETUTENT X X/* X * Define UTHOST if the utmp file has a host field. X */ X#define UTHOST X X/* X * If UTMPOK is defined and your system (incorrectly) counts logins by X * counting non-null entries in /etc/utmp (instead of counting non-null X * entries with no hostname that are not on a pseudo tty), define USRLIMIT X * to have screen put an upper-limit on the number of entries to write X * into /etc/utmp. This helps to keep you from exceeding a limited-user X * license. X */ X#undef USRLIMIT X X/* X * If screen is NOT installed set-uid root, screen can provide tty security X * by exclusively locking the ptys. While this keeps other users from X * opening your ptys, it also keeps your own subprocesses from being able X * to open /dev/tty. Define LOCKPTY to add this exclusive locking. X */ X#undef LOCKPTY X X/* X * If your system does not have the calls setreuid() and setregid(), define X * NOREUID to force screen to use a forked process to safely create output X * files without retaining any special privileges. (Output logging will be X * disabled, however.) X */ X#undef NOREUID X X/* X * If you want the "time" command to display the current load average X * you must install screen with the needed privileges to read /dev/kmem X * and have a load average format that screen understands. We handle the X * following formats: 3 doubles (BSD), 3 longs (sun), and 4 longs (alliant). X */ X#undef LOADAV_3DOUBLES X#define LOADAV_3LONGS X#undef LOADAV_4LONGS X X/* X * If your system has the new format /etc/ttys (like 4.3 BSD) and the X * getttyent(3) library functions, define GETTTYENT. X */ X#undef GETTTYENT X X/* X * If your version of NFS supports named sockets and you install screen X * suid root, you may need to define NFS_HACK for screen to be able to X * open the sockets. X */ X#undef NFS_HACK X X/* X * By default screen will create a directory named ".screen" in the user's X * HOME directory to contain the named sockets. If this causes you problems X * (e.g. some user's HOME directories are NFS-mounted and don't support X * named sockets) you can have screen create the socket directories in a X * common subdirectory, such as /tmp or /usr/tmp. It makes things a little X * more secure if you choose a directory where the "sticky" bit is on, but X * this isn't required. Screen will name the subdirectories "S-$USER" X * (e.g /tmp/S-davison). X * Do not define TMPTEST unless it's for debugging purpose. X * If you want to have your socket directory in "/tmp/screens" then X * define LOCALSOCKDIR and change the definition of SOCKDIR below. X */ X#define LOCALSOCKDIR X X#ifdef LOCALSOCKDIR X# ifndef TMPTEST X# define SOCKDIR "/local/screens" X# else X# define SOCKDIR "/tmp/screens" X# endif X#endif X X/* X * Define USEBCOPY if the bcopy() from your system's C library supports the X * overlapping of source and destination blocks. When undefined, screen X * uses its own (probably slower) version of bcopy(). X */ X#undef USEBCOPY X X/* X * If you'd rather see the status line on the first line of your X * terminal rather than the last, define TOPSTAT. X */ X#undef TOPSTAT X X/* X * If your system has vsprintf() and requires the use of the macros in X * "varargs.h" to use functions with variable arguments, X * define USEVARARGS. X */ X#undef USEVARARGS X X/* X * Define this if your system supports named pipes. X */ X#undef NAMEDPIPE X X/* X * here come the erlangen extensions to screen: X * define LOCK if you want to use a lock program for a screenlock. X * define PASSWORD for secure reattach of your screen. X * define COPY_PASTE to use the famous hacker's treasure zoo. X * define POW_DETACH to have a detach_and_logout key. X * define REMOTE_DETACH (-d option) to move screen between terminals. X * (jw) X */ X#define LOCK X#define PASSWORD X#define COPY_PASTE X#define REMOTE_DETACH X#define POW_DETACH X X/* X * As error messages are mostly meaningless to the user, we X * try to throw out phrases that are somewhat more familiar X * to ...well, at least familiar to us NetHack players. X */ X#define NETHACK X X/* X * and another sneaky feature: screen sources two startup files. X * first a global file with a path specified here, second X * your local $HOME/.screenrc X * Don't define this, if you don't want it. X */ X#define ETCSCREENRC "/local/etc/screenrc" X X/* X * End of User Configuration Section X */ END_OF_FILE if test 8080 -ne `wc -c <'config/config.symmetry'`; then echo shar: \"'config/config.symmetry'\" unpacked with wrong size! fi # end of 'config/config.symmetry' fi if test -f 'config/config.sysv68' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'config/config.sysv68'\" else echo shar: Extracting \"'config/config.sysv68'\" \(8082 characters\) sed "s/^X//" >'config/config.sysv68' <<'END_OF_FILE' X/* Copyright (c) 1991 X * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de) X * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de) X * Copyright (c) 1987 Oliver Laumann X * X * This program is free software; you can redistribute it and/or modify X * it under the terms of the GNU General Public License as published by X * the Free Software Foundation; either version 1, or (at your option) X * any later version. X * X * This program is distributed in the hope that it will be useful, X * but WITHOUT ANY WARRANTY; without even the implied warranty of X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the X * GNU General Public License for more details. X * X * You should have received a copy of the GNU General Public License X * along with this program (see the file COPYING); if not, write to the X * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. X * X * Noteworthy contributors to screen's design and implementation: X * Wayne Davison (davison@borland.com) X * Patrick Wolfe (pat@kai.com, kailand!pat) X * Bart Schaefer (schaefer@cse.ogi.edu) X * Nathan Glasser (nathan@brokaw.lcs.mit.edu) X * Larry W. Virden (lwv27%cas.BITNET@CUNYVM.CUNY.Edu) X * Howard Chu (hyc@hanauma.jpl.nasa.gov) X * Tim MacKenzie (tym@dibbler.cs.monash.edu.au) X * Markku Jarvinen (mta@{cc,cs,ee}.tut.fi) X * Marc Boucher (marc@CAM.ORG) X * X **************************************************************** X * $Id: config.sysv68,v 1.6 91/10/06 11:59:06 jnweiger Exp $ FAU X */ X X X/* X * Beginning of User Configuration Section X * X * First off, you should decide if you intend to install screen set-uid to X * root. This isn't necessary to use screen, but it allows the pseudo-ttys X * to be set to their proper owner (for security purposes), /etc/utmp to be X * updated, and /dev/kmem to be accessed to read the load average values. X * X * An alternative to installing screen set-uid root is to install it set-gid X * utmp (with the file /etc/utmp installed to be group-utmp writable) or X * set-gid kmem (with /dev/kmem set to be group-kmem readable) or some other X * custom group to give you both. The final alternative is to omit /etc/utmp X * updating and the /dev/kmem reading (see the following defines) and simply X * run screen as a regular program -- its major functions will be unaffected. X */ X X X/* X * Define POSIX if your system supports IEEE Std 1003.1-1988 (POSIX). X */ X#undef POSIX X X/* X * Define BSDJOBS if you have BSD-style job control (both process X * groups and a tty that deals correctly with them). X */ X#undef BSDJOBS X X/* X * Define TERMIO if you have struct termio instead of struct sgttyb. X * This is usually the case for SVID systems, where BSD uses sgttyb. X * POSIX systems should define this anyway, even though they use X * struct termios. X */ X#define TERMIO X X/* X * Define TERMINFO if your machine emulates the termcap routines X * with the terminfo database. X * Thus the .screenrc file is parsed for X * the command 'terminfo' and not 'termcap'. X */ X#define TERMINFO X X/* X * Define SYSV if your machine is SYSV complient (Sys V, HPUX, A/UX) X */ X#define SYSV X X/* X * Define SIGVOID if your signal handlers return void. On older X * systems, signal returns int, but on newer ones, it returns void. X */ X#define SIGVOID X X/* X * Define DIRENT if your system has instead of X */ X#define DIRENT X X/* X * If screen is going to be installed set-uid root, you MUST define SUIDROOT. X */ X#define SUIDROOT X X/* X * If screen is installed with permissions to update /etc/utmp (such as if X * it is installed set-uid root), define UTMPOK. Set LOGINDEFAULT to one (1) X * if you want entries added to /etc/utmp by default, else set it to zero (0). X */ X#undef UTMPOK X#define LOGINDEFAULT 1 X X/* X * If your system has getutent(), pututline(), etc. to write to the X * utmp file, define GETUTENT. X */ X#define GETUTENT X X/* X * Define UTHOST if the utmp file has a host field. X */ X#undef UTHOST X X/* X * If UTMPOK is defined and your system (incorrectly) counts logins by X * counting non-null entries in /etc/utmp (instead of counting non-null X * entries with no hostname that are not on a pseudo tty), define USRLIMIT X * to have screen put an upper-limit on the number of entries to write X * into /etc/utmp. This helps to keep you from exceeding a limited-user X * license. X */ X#undef USRLIMIT X X/* X * If screen is NOT installed set-uid root, screen can provide tty security X * by exclusively locking the ptys. While this keeps other users from X * opening your ptys, it also keeps your own subprocesses from being able X * to open /dev/tty. Define LOCKPTY to add this exclusive locking. X */ X#undef LOCKPTY X X/* X * If your system does not have the calls setreuid() and setregid(), define X * NOREUID to force screen to use a forked process to safely create output X * files without retaining any special privileges. (Output logging will be X * disabled, however.) X */ X#define NOREUID X X/* X * If you want the "time" command to display the current load average X * you must install screen with the needed privileges to read /dev/kmem X * and have a load average format that screen understands. We handle the X * following formats: 3 doubles (BSD), 3 longs (sun), and 4 longs (alliant). X */ X#undef LOADAV_3DOUBLES X#undef LOADAV_3LONGS X#undef LOADAV_4LONGS X X/* X * If your system has the new format /etc/ttys (like 4.3 BSD) and the X * getttyent(3) library functions, define GETTTYENT. X */ X#undef GETTTYENT X X/* X * If your version of NFS supports named sockets and you install screen X * suid root, you may need to define NFS_HACK for screen to be able to X * open the sockets. X */ X#undef NFS_HACK X X/* X * By default screen will create a directory named ".screen" in the user's X * HOME directory to contain the named sockets. If this causes you problems X * (e.g. some user's HOME directories are NFS-mounted and don't support X * named sockets) you can have screen create the socket directories in a X * common subdirectory, such as /tmp or /usr/tmp. It makes things a little X * more secure if you choose a directory where the "sticky" bit is on, but X * this isn't required. Screen will name the subdirectories "S-$USER" X * (e.g /tmp/S-davison). X * Do not define TMPTEST unless it's for debugging purpose. X * If you want to have your socket directory in "/tmp/screens" then X * define LOCALSOCKDIR and change the definition of SOCKDIR below. X */ X#define LOCALSOCKDIR X X#ifdef LOCALSOCKDIR X# ifndef TMPTEST X# define SOCKDIR "/local/screens" X# else X# define SOCKDIR "/tmp/screens" X# endif X#endif X X/* X * Define USEBCOPY if the bcopy() from your system's C library supports the X * overlapping of source and destination blocks. When undefined, screen X * uses its own (probably slower) version of bcopy(). X */ X#undef USEBCOPY X X/* X * If you'd rather see the status line on the first line of your X * terminal rather than the last, define TOPSTAT. X */ X#undef TOPSTAT X X/* X * If your system has vsprintf() and requires the use of the macros in X * "varargs.h" to use functions with variable arguments, X * define USEVARARGS. X */ X#undef USEVARARGS X X/* X * Define this if your system supports named pipes. X */ X#define NAMEDPIPE X X/* X * here come the erlangen extensions to screen: X * define LOCK if you want to use a lock program for a screenlock. X * define PASSWORD for secure reattach of your screen. X * define COPY_PASTE to use the famous hacker's treasure zoo. X * define POW_DETACH to have a detach_and_logout key. X * define REMOTE_DETACH (-d option) to move screen between terminals. X * (jw) X */ X#define LOCK X#define PASSWORD X#define COPY_PASTE X#define REMOTE_DETACH X#define POW_DETACH X X/* X * As error messages are mostly meaningless to the user, we X * try to throw out phrases that are somewhat more familiar X * to ...well, at least familiar to us NetHack players. X */ X#undef NETHACK X X/* X * and another sneaky feature: screen sources two startup files. X * first a global file with a path specified here, second X * your local $HOME/.screenrc X * Don't define this, if you don't want it. X */ X#define ETCSCREENRC "/local/etc/screenrc" X X/* X * End of User Configuration Section X */ END_OF_FILE if test 8082 -ne `wc -c <'config/config.sysv68'`; then echo shar: \"'config/config.sysv68'\" unpacked with wrong size! fi # end of 'config/config.sysv68' fi if test -f 'config/config.xelos' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'config/config.xelos'\" else echo shar: Extracting \"'config/config.xelos'\" \(8079 characters\) sed "s/^X//" >'config/config.xelos' <<'END_OF_FILE' X/* Copyright (c) 1991 X * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de) X * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de) X * Copyright (c) 1987 Oliver Laumann X * X * This program is free software; you can redistribute it and/or modify X * it under the terms of the GNU General Public License as published by X * the Free Software Foundation; either version 1, or (at your option) X * any later version. X * X * This program is distributed in the hope that it will be useful, X * but WITHOUT ANY WARRANTY; without even the implied warranty of X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the X * GNU General Public License for more details. X * X * You should have received a copy of the GNU General Public License X * along with this program (see the file COPYING); if not, write to the X * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. X * X * Noteworthy contributors to screen's design and implementation: X * Wayne Davison (davison@borland.com) X * Patrick Wolfe (pat@kai.com, kailand!pat) X * Bart Schaefer (schaefer@cse.ogi.edu) X * Nathan Glasser (nathan@brokaw.lcs.mit.edu) X * Larry W. Virden (lwv27%cas.BITNET@CUNYVM.CUNY.Edu) X * Howard Chu (hyc@hanauma.jpl.nasa.gov) X * Tim MacKenzie (tym@dibbler.cs.monash.edu.au) X * Markku Jarvinen (mta@{cc,cs,ee}.tut.fi) X * Marc Boucher (marc@CAM.ORG) X * X **************************************************************** X * $Id: config.xelos,v 1.6 91/10/06 11:59:10 jnweiger Exp $ FAU X */ X X X/* X * Beginning of User Configuration Section X * X * First off, you should decide if you intend to install screen set-uid to X * root. This isn't necessary to use screen, but it allows the pseudo-ttys X * to be set to their proper owner (for security purposes), /etc/utmp to be X * updated, and /dev/kmem to be accessed to read the load average values. X * X * An alternative to installing screen set-uid root is to install it set-gid X * utmp (with the file /etc/utmp installed to be group-utmp writable) or X * set-gid kmem (with /dev/kmem set to be group-kmem readable) or some other X * custom group to give you both. The final alternative is to omit /etc/utmp X * updating and the /dev/kmem reading (see the following defines) and simply X * run screen as a regular program -- its major functions will be unaffected. X */ X X X/* X * Define POSIX if your system supports IEEE Std 1003.1-1988 (POSIX). X */ X#undef POSIX X X/* X * Define BSDJOBS if you have BSD-style job control (both process X * groups and a tty that deals correctly with them). X */ X#define BSDJOBS X X/* X * Define TERMIO if you have struct termio instead of struct sgttyb. X * This is usually the case for SVID systems, where BSD uses sgttyb. X * POSIX systems should define this anyway, even though they use X * struct termios. X */ X#undef TERMIO X X/* X * Define TERMINFO if your machine emulates the termcap routines X * with the terminfo database. X * Thus the .screenrc file is parsed for X * the command 'terminfo' and not 'termcap'. X */ X#define TERMINFO X X/* X * Define SYSV if your machine is SYSV complient (Sys V, HPUX, A/UX) X */ X#undef SYSV X X/* X * Define SIGVOID if your signal handlers return void. On older X * systems, signal returns int, but on newer ones, it returns void. X */ X#undef SIGVOID X X/* X * Define DIRENT if your system has instead of X */ X#undef DIRENT X X/* X * If screen is going to be installed set-uid root, you MUST define SUIDROOT. X */ X#define SUIDROOT X X/* X * If screen is installed with permissions to update /etc/utmp (such as if X * it is installed set-uid root), define UTMPOK. Set LOGINDEFAULT to one (1) X * if you want entries added to /etc/utmp by default, else set it to zero (0). X */ X#define UTMPOK X#define LOGINDEFAULT 1 X X/* X * If your system has getutent(), pututline(), etc. to write to the X * utmp file, define GETUTENT. X */ X#define GETUTENT X X/* X * Define UTHOST if the utmp file has a host field. X */ X#define UTHOST X X/* X * If UTMPOK is defined and your system (incorrectly) counts logins by X * counting non-null entries in /etc/utmp (instead of counting non-null X * entries with no hostname that are not on a pseudo tty), define USRLIMIT X * to have screen put an upper-limit on the number of entries to write X * into /etc/utmp. This helps to keep you from exceeding a limited-user X * license. X */ X#undef USRLIMIT X X/* X * If screen is NOT installed set-uid root, screen can provide tty security X * by exclusively locking the ptys. While this keeps other users from X * opening your ptys, it also keeps your own subprocesses from being able X * to open /dev/tty. Define LOCKPTY to add this exclusive locking. X */ X#undef LOCKPTY X X/* X * If your system does not have the calls setreuid() and setregid(), define X * NOREUID to force screen to use a forked process to safely create output X * files without retaining any special privileges. (Output logging will be X * disabled, however.) X */ X#undef NOREUID X X/* X * If you want the "time" command to display the current load average X * you must install screen with the needed privileges to read /dev/kmem X * and have a load average format that screen understands. We handle the X * following formats: 3 doubles (BSD), 3 longs (sun), and 4 longs (alliant). X */ X#undef LOADAV_3DOUBLES X#define LOADAV_3LONGS X#undef LOADAV_4LONGS X X/* X * If your system has the new format /etc/ttys (like 4.3 BSD) and the X * getttyent(3) library functions, define GETTTYENT. X */ X#undef GETTTYENT X X/* X * If your version of NFS supports named sockets and you install screen X * suid root, you may need to define NFS_HACK for screen to be able to X * open the sockets. X */ X#undef NFS_HACK X X/* X * By default screen will create a directory named ".screen" in the user's X * HOME directory to contain the named sockets. If this causes you problems X * (e.g. some user's HOME directories are NFS-mounted and don't support X * named sockets) you can have screen create the socket directories in a X * common subdirectory, such as /tmp or /usr/tmp. It makes things a little X * more secure if you choose a directory where the "sticky" bit is on, but X * this isn't required. Screen will name the subdirectories "S-$USER" X * (e.g /tmp/S-davison). X * Do not define TMPTEST unless it's for debugging purpose. X * If you want to have your socket directory in "/tmp/screens" then X * define LOCALSOCKDIR and change the definition of SOCKDIR below. X */ X#define LOCALSOCKDIR X X#ifdef LOCALSOCKDIR X# ifndef TMPTEST X# define SOCKDIR "/local/screens" X# else X# define SOCKDIR "/tmp/screens" X# endif X#endif X X/* X * Define USEBCOPY if the bcopy() from your system's C library supports the X * overlapping of source and destination blocks. When undefined, screen X * uses its own (probably slower) version of bcopy(). X */ X#undef USEBCOPY X X/* X * If you'd rather see the status line on the first line of your X * terminal rather than the last, define TOPSTAT. X */ X#undef TOPSTAT X X/* X * If your system has vsprintf() and requires the use of the macros in X * "varargs.h" to use functions with variable arguments, X * define USEVARARGS. X */ X#undef USEVARARGS X X/* X * Define this if your system supports named pipes. X */ X#undef NAMEDPIPE X X/* X * here come the erlangen extensions to screen: X * define LOCK if you want to use a lock program for a screenlock. X * define PASSWORD for secure reattach of your screen. X * define COPY_PASTE to use the famous hacker's treasure zoo. X * define POW_DETACH to have a detach_and_logout key. X * define REMOTE_DETACH (-d option) to move screen between terminals. X * (jw) X */ X#define LOCK X#define PASSWORD X#define COPY_PASTE X#define REMOTE_DETACH X#define POW_DETACH X X/* X * As error messages are mostly meaningless to the user, we X * try to throw out phrases that are somewhat more familiar X * to ...well, at least familiar to us NetHack players. X */ X#define NETHACK X X/* X * and another sneaky feature: screen sources two startup files. X * first a global file with a path specified here, second X * your local $HOME/.screenrc X * Don't define this, if you don't want it. X */ X#define ETCSCREENRC "/local/etc/screenrc" X X/* X * End of User Configuration Section X */ X END_OF_FILE if test 8079 -ne `wc -c <'config/config.xelos'`; then echo shar: \"'config/config.xelos'\" unpacked with wrong size! fi # end of 'config/config.xelos' fi if test -f 'etcscreenrc' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'etcscreenrc'\" else echo shar: Extracting \"'etcscreenrc'\" \(3284 characters\) sed "s/^X//" >'etcscreenrc' <<'END_OF_FILE' X# This is a global screenrc file X# Install this file as /usr/local/etc/screenrc. See config.h X# X# Flaws of termcap and standard settings are done here. X# Note: This file should not be shared between different hosts. X# The 'termcap' lines are written in termcap syntax. X# The syntax for a terminfo based host is slightly different. X# X#echo "--------------------------------------------------------------------" X#echo "" X#echo " This is iScreen V3.01.01 - Enjoy " X#echo "" X#echo "--------------------------------------------------------------------" X#sleep 3 X X# startup_message off X flow auto # strange enough, this helps emacs to receive ^S/^Q X set vbell on set login on set autodetach off X X# 'vbell on' without the prepended 'set' keyword will change the default for X# subsequently opened windows. With the 'set' keyword we would change X# the setting of the currently active window. vbell on set vbell_msg " Wuff, ---- Wuff!! " X X# all termcap entries are now duplicated as terminfo entries. X# only difference should be the slightly modified syntax, and check for X# terminfo entries, that are already corected in the database. X# X# G0 we have a SEMI-GRAPHICS-CHARACTER-MODE X# WS this sequence resizes our window. X# cs this sequence changes the scrollregion X# hs@ we have no hardware statusline. iScreen will only believe that X# there is a hardware status line if hs,ts,fs,ds are all set. X# ts to statusline X# fs from statusline X# ds delete statusline X# al add one line X# AL add multiple lines X# dl delete one line X# DL delete multiple lines X# ic insert one char (space) X# IC insert multiple chars X termcap facit|vt100|xterm LP:G0 terminfo facit|vt100|xterm LP:G0 X X#the vt100 description does not mention "dl". *sigh* termcap vt100 dl=5\E[M terminfo vt100 dl=5\E[M X X#facit's "al" has a bug if the line contains attributes... termcap facit al=\E[L\E[K:AL@:cs=\E[%i%d;%dr:ic@ terminfo facit al=\E[L\E[K:AL@:cs=\E[%i%p1%d;%p2%dr:ic@ X X#make sun termcap/info better termcap sun up=^K:AL=\E[%dL:DL=\E[%dM:UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:IC=\E[%d@:WS=1000\E[8;%d;%dt terminfo sun up=^K:AL=\E[%p1%dL:DL=\E[%p1%dM:UP=\E[%p1%dA:DO=\E[%p1%dB:LE=\E[%p1%dD:RI=\E[%p1%dC:IC=\E[%p1%d@:WS=\E[8;%p1%d;%p2%dt$<1000> X X#xterm understands both im/ic and doesn't have a status line. X#Note: Do not specify im and ic in the real termcap/info file as X#some programs (e.g. vi) will not work anymore. termcap xterm|fptwist hs@:cs=\E[%i%d;%dr:im=\E[4h:ei=\E[4l terminfo xterm|fptwist hs@:cs=\E[%i%p1%d;%p2%dr:im=\E[4h:ei=\E[4l X X#xterms is xterm with status line in title bar termcap xterms hs:ts=\E]0;:fs=\007:ds=\E]0;iScreen\007:cs=\E[%i%d;%dr:LP:G0:im=\E[4h:ei=\E[4l terminfo xterms hs:ts=\E]0;:fs=\007:ds=\E]0;iScreen\007:cs=\E[%i%p1%d;%p2%dr:LP:G0:im=\E[4h:ei=\E[4l X X#make hp700 termcap/info better termcap hp700 Z0=\E[?3h:Z1=\E[?3l:hs:ts=\E[62"p\E[0$~\E[2$~\E[1$}:fs=\E[0}\E[61"p:ds=\E[62"p\E[1$~\E[61"p:ic@ terminfo hp700 Z0=\E[?3h:Z1=\E[?3l:hs:ts=\E[62"p\E[0$~\E[2$~\E[1$}:fs=\E[0}\E[61"p:ds=\E[62"p\E[1$~\E[61"p:ic@ X X X#remove some stupid / dangerous key bindings bind '^k' X#bind 'L' bind '^\' X#make them better bind '\\' quit bind 'K' kill bind 'I' set login on bind 'O' set login off bind '}' history END_OF_FILE if test 3284 -ne `wc -c <'etcscreenrc'`; then echo shar: \"'etcscreenrc'\" unpacked with wrong size! fi # end of 'etcscreenrc' fi if test -f 'patchlevel.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'patchlevel.h'\" else echo shar: Extracting \"'patchlevel.h'\" \(2816 characters\) sed "s/^X//" >'patchlevel.h' <<'END_OF_FILE' X/* Copyright (c) 1991 X * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de) X * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de) X * Copyright (c) 1987 Oliver Laumann X * X * This program is free software; you can redistribute it and/or modify X * it under the terms of the GNU General Public License as published by X * the Free Software Foundation; either version 1, or (at your option) X * any later version. X * X * This program is distributed in the hope that it will be useful, X * but WITHOUT ANY WARRANTY; without even the implied warranty of X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the X * GNU General Public License for more details. X * X * You should have received a copy of the GNU General Public License X * along with this program (see the file COPYING); if not, write to the X * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. X * X * Noteworthy contributors to screen's design and implementation: X * Wayne Davison (davison@borland.com) X * Patrick Wolfe (pat@kai.com, kailand!pat) X * Bart Schaefer (schaefer@cse.ogi.edu) X * Nathan Glasser (nathan@brokaw.lcs.mit.edu) X * Larry W. Virden (lwv27%cas.BITNET@CUNYVM.CUNY.Edu) X * Howard Chu (hyc@hanauma.jpl.nasa.gov) X * Tim MacKenzie (tym@dibbler.cs.monash.edu.au) X * Markku Jarvinen (mta@{cc,cs,ee}.tut.fi) X * Marc Boucher (marc@CAM.ORG) X * X **************************************************************** X */ X X/**************************************************************** X * $Header: /src/faui43/pub/utilities/screen/3.1/RCS/patchlevel.h,v 1.31 91/10/11 00:12:50 jnweiger Exp $ X * X * patchlevel.h: Our life story. X * 8.7.91 -- 3.00.01 -wipe and a 'setenv TERM dumb' bugfix. X * 17.7.91 -- 3.00.02 another patchlevel by Wayne Davison X * 31.7.91 -- 3.00.03 E0, S0, C0 for flexible semi-graphics, nonblocking X * window title input and 'C-a :' command input. X * 10.8.91 -- 3.00.04 scrollback, markkeys and some bugfixes. X * 13.8.91 -- 3.00.05 mark routine improved, ansi prototypes added. X * 20.8.91 -- 3.00.06 screen -h, faster GotoPos in overlay, termcap %. X * instead of %c X * 28.8.91 -- 3.00.07 environment variable support. security. terminfo. X * pyramid and ultrix support. X * 07.9.91 -- 3.00.99 secopen(), MIPS support, SVR4 support. X * 09.9.91 -- 3.01.00 backspace bug fixed. X * 03.10.91 -- 3.01.01 ansi.c: null-ptr fixed, CLS now saves to scrollback. X * Using setresuid on hpux. Memory leak fixed. X * Better GotoPos(). Support for IC. Another resize bug. X * Detach() w/o fore crashed. -T and -A(dapt) option. X * GNU copyleft. X */ X X#define ORIGIN "FAU" X#define REV 3 X#define VERS 1 X#define PATCHLEVEL 1 X#define DATE "10/10/91" X#define STATE "" X END_OF_FILE if test 2816 -ne `wc -c <'patchlevel.h'`; then echo shar: \"'patchlevel.h'\" unpacked with wrong size! fi # end of 'patchlevel.h' fi if test -f 'putenv.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'putenv.c'\" else echo shar: Extracting \"'putenv.c'\" \(5664 characters\) sed "s/^X//" >'putenv.c' <<'END_OF_FILE' X/* Copyright (c) 1991 X * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de) X * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de) X * Copyright (c) 1987 Oliver Laumann X * X * This program is free software; you can redistribute it and/or modify X * it under the terms of the GNU General Public License as published by X * the Free Software Foundation; either version 1, or (at your option) X * any later version. X * X * This program is distributed in the hope that it will be useful, X * but WITHOUT ANY WARRANTY; without even the implied warranty of X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the X * GNU General Public License for more details. X * X * You should have received a copy of the GNU General Public License X * along with this program (see the file COPYING); if not, write to the X * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. X * X * Noteworthy contributors to screen's design and implementation: X * Wayne Davison (davison@borland.com) X * Patrick Wolfe (pat@kai.com, kailand!pat) X * Bart Schaefer (schaefer@cse.ogi.edu) X * Nathan Glasser (nathan@brokaw.lcs.mit.edu) X * Larry W. Virden (lwv27%cas.BITNET@CUNYVM.CUNY.Edu) X * Howard Chu (hyc@hanauma.jpl.nasa.gov) X * Tim MacKenzie (tym@dibbler.cs.monash.edu.au) X * Markku Jarvinen (mta@{cc,cs,ee}.tut.fi) X * Marc Boucher (marc@CAM.ORG) X * X **************************************************************** X */ X X/* X * putenv -- put value into environment X * X * Usage: i = putenv (string) X * int i; X * char *string; X * X * where string is of the form =. X * If "value" is 0, then "name" will be deleted from the environment. X * Putenv returns 0 normally, -1 on error (not enough core for malloc). X * X * Putenv may need to add a new name into the environment, or to X * associate a value longer than the current value with a particular X * name. So, to make life simpler, putenv() copies your entire X * environment into the heap (i.e. malloc()) from the stack X * (i.e. where it resides when your process is initiated) the first X * time you call it. X * X * HISTORY X * 3-Sep-91 Michael Schroeder (mlschroe). Modified to behave as X * as putenv. X * 16-Aug-91 Tim MacKenzie (tym) at Monash University. Modified for X * use in screen (iScreen) (ignores final int parameter) X * 14-Oct-85 Michael Mauldin (mlm) at Carnegie-Mellon University X * Ripped out of CMU lib for Rob-O-Matic portability X * 20-Nov-79 Steven Shafer (sas) at Carnegie-Mellon University X * Created for VAX. Too bad Bell Labs didn't provide this. It's X * unfortunate that you have to copy the whole environment onto the X * heap, but the bookkeeping-and-not-so-much-copying approach turns X * out to be much hairier. So, I decided to do the simple thing, X * copying the entire environment onto the heap the first time you X * call putenv(), then doing realloc() uniformly later on. X */ X#include "config.h" X X#if defined(NEEDSETENV) X X#define EXTRASIZE 5 /* increment to add to env. size */ X char *index(), *malloc(), *realloc(); int strlen(); X static int envsize = -1; /* current size of environment */ extern char **environ; /* the global which is your env. */ X static int findenv(); /* look for a name in the env. */ static int newenv(); /* copy env. from stack to heap */ static int moreenv(); /* incr. size of env. */ X int unsetenv(name) char *name; X{ X register int i; X X i = findenv(name); X if (i<0) X return; /* Already here */ X X free(environ[i]); X if (envsize > 0) X envsize--; X for (; environ[i]; i++) X environ[i] = environ[i+1]; X} X int putenv(string) char *string; X{ X register int i, j; X register char *p; X X if (envsize < 0) X { /* first time putenv called */ X if (newenv() < 0) /* copy env. to heap */ X return (-1); X } X X i = findenv(string); /* look for name in environment */ X X if (i < 0) X { /* name must be added */ X for (i = 0; environ[i]; i++); X if (i >= (envsize - 1)) X { /* need new slot */ X if (moreenv() < 0) X return (-1); X } X p = malloc(strlen(string) + 1); X if (p == 0) /* not enough core */ X return (-1); X environ[i + 1] = 0; /* new end of env. */ X } X else X { /* name already in env. */ X p = realloc(environ[i], strlen(string) + 1); X if (p == 0) X return (-1); X } X sprintf(p, "%s", string); /* copy into env. */ X environ[i] = p; X X return (0); X} X static int findenv(name) char *name; X{ X register char *namechar, *envchar; X register int i, found; X X found = 0; X for (i = 0; environ[i] && !found; i++) X { X envchar = environ[i]; X namechar = name; X while (*namechar && *namechar != '=' && (*namechar == *envchar)) X { X namechar++; X envchar++; X } X found = ((*namechar == '\0' || *namechar == '=') && *envchar == '='); X } X return (found ? i - 1 : -1); X} X static int newenv() X{ X register char **env, *elem; X register int i, esize; X X for (i = 0; environ[i]; i++) X ; X esize = i + EXTRASIZE + 1; X env = (char **)malloc(esize * sizeof (elem)); X if (env == 0) X return (-1); X X for (i = 0; environ[i]; i++) X { X elem = malloc(strlen(environ[i]) + 1); X if (elem == 0) X return (-1); X env[i] = elem; X strcpy(elem, environ[i]); X } X X env[i] = 0; X environ = env; X envsize = esize; X return (0); X} X static int moreenv() X{ X register int esize; X register char **env; X X esize = envsize + EXTRASIZE; X env = (char **)realloc(environ, esize * sizeof (*env)); X if (env == 0) X return (-1); X environ = env; X envsize = esize; X return (0); X} X X#endif /* NEEDSETENV */ X X END_OF_FILE if test 5664 -ne `wc -c <'putenv.c'`; then echo shar: \"'putenv.c'\" unpacked with wrong size! fi # end of 'putenv.c' fi if test -f 'readme' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'readme'\" else echo shar: Extracting \"'readme'\" \(3741 characters\) sed "s/^X//" >'readme' <<'END_OF_FILE' X"screen" is a window manager that allows you to handle several independent screens (UNIX ttys) on a single physical terminal; each screen has its own set of processes connected to it (typically interactive shells). Each virtual terminal created by "screen" emulates a DEC VT100 plus several ANSI XX3.64 and ISO 2022 functions (including DEC VT102 features such as line and character deletion and insertion). X Since "screen" uses pseudo-ttys, the select system call, and UNIX-domain sockets, it will not run under a system that does not include these features of 4.2 and 4.3 BSD UNIX. X If you want to get a quick idea how "screen" works but don't want to read the entire manual, do the following: X X - call "screen" without arguments X - wait for the shell prompt; execute some commands X - type ^A ^C (Control-A followed by Control-C) X - wait for the shell prompt; do something in the new window X - type ^A ^A repeatedly to switch between the two windows X - terminate the first shell ("screen" switches to the other window) X - terminate the second shell X If you have got "vttest" (the VT100 test program from mod.sources) you may want to run it from within "screen" to verify that it correctly emulates a VT100 on your terminal (except for things your terminal is incapable of handling, like 132 column mode and double width/height characters, of course). X By the way, "screen" can be used to compensate for certain bugs of "real" VT100 terminals. For instance, our 4.2 BSD version of mille(6) garbles the display on terminals of the VT100 family, but it works quite fine when it is invoked from within "screen". In addition, "screen" enables you to use EMACS on terminals that are unable to generate Control-S and Control-Q from the keyboard or that require flow control using Control-S and Control-Q. This is the reason why I have an alias like X X alias emacs "screen emacs" X in my .cshrc file. Users who run EMACS on terminals which normally have no trouble with Control-S and Control-Q will probably want to run screen with the -fn or -fa options, or put the line "flow off" or "flow auto" in their X.screenrc file. X Before typing "make", look at the config directory and choose an appropriate config file that you then copy to config.h and then edit it to reflect the configuration parameters of your choice. Each define is well commented to help you decide what to choose. Then give the Makefile the once-over and compile. X To get screen to do everything it was designed to do, it should be installed set-uid root. This enables it to modify the ownership of the pseudo-ttys, update /etc/utmp, and read the current load average from /dev/kmem. X XFailing to install it suid root (e.g. if you fear a trojan horse) doesn't have any major disadvantages, except that w(1) and some other utilities will display only "screen" as the current process, and the pseudo ttys X(ptys) used for the virtual terminals won't have their owners set. Screen can provide you some pty security by opening the ptys exclusively, but this has the unfortunate side-effect of keeping your own subprocesses from being able to open /dev/tty. X It is also possible to create a special "screen" group and give the file X/etc/utmp screen-group write-access, and give the file /dev/kmem screen-group read access to get all the features except the pty-ownership changes. Some people also install it set-gid "kmem" or set-gid "utmp" to give it one or the other. X Many people install screen as a normal program with no special privileges and still find it to be indispensable. Give it a try. X Send your questions, comments and bug reports for screen to: X X Juergen Weigert X X jnweiger@immd4.informatik.uni-erlangen.de END_OF_FILE if test 3741 -ne `wc -c <'readme'`; then echo shar: \"'readme'\" unpacked with wrong size! fi # end of 'readme' fi if test ! -d 'terminfo' ; then echo shar: Creating directory \"'terminfo'\" mkdir 'terminfo' fi if test -f 'terminfo/screencap' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'terminfo/screencap'\" else echo shar: Extracting \"'terminfo/screencap'\" \(515 characters\) sed "s/^X//" >'terminfo/screencap' <<'END_OF_FILE' SC|screen|VT 100/ANSI X3.64 virtual terminal|\ X :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:bs:bt=\E[Z:\ X :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:ct=\E[3g:\ X :do=^J:nd=\E[C:pt:rc=\E8:rs=\Ec:sc=\E7:st=\EH:up=\EM:\ X :le=^H:bl=^G:cr=^M:it#8:ho=\E[H:nw=\EE:ta=^I:is=\E)0:xv:\ X :li#43:co#80:LP:us=\E[4m:ue=\E[24m:so=\E[3m:se=\E[23m:\ X :mb=\E[5m:md=\E[1m:mr=\E[7m:me=\E[m:ms:sr=\EM:al=\E[L:\ X :AL=\E[%dL:dl=\E[M:DL=\E[%dM:cs=\E[%i%d;%dr:dc=\E[P:\ X :DC=\E[%dP:im=\E[4h:ei=\E[4l:mi:ic=\E[@:IC=\E[%d@:\ X :ks=\E=:ke=\E>:G0: END_OF_FILE if test 515 -ne `wc -c <'terminfo/screencap'`; then echo shar: \"'terminfo/screencap'\" unpacked with wrong size! fi # end of 'terminfo/screencap' fi if test -f 'terminfo/screeninfo.src' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'terminfo/screeninfo.src'\" else echo shar: Extracting \"'terminfo/screeninfo.src'\" \(668 characters\) sed "s/^X//" >'terminfo/screeninfo.src' <<'END_OF_FILE' screen|VT 100/ANSI X3.64 virtual terminal, X msgr, xon, X cols#80, it#8, lines#24, X bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, X clear=\E[H\E[J, cr=\r, csr=\E[%i%p1%d;%p2%dr, X cub=\E[%p1%dD, cub1=\b, cud=\E[%p1%dB, cud1=\n, X cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, X cuu=\E[%p1%dA, cuu1=\EM, dl=\E[%p1%dM, dl1=\E[M, X ed=\E[J, el=\E[K, home=\E[H, ht=\t, hts=\EH, X il=\E[%p1%dL, il1=\E[L, ind=\n, is2=\E)0, kbs=\b, X kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, X kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E?, X nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, X rmkx=\E>, rmso=\E[23m, rmul=\E[24m, rs2=\Ec, sc=\E7, X sgr0=\E[m, smkx=\E=, smso=\E[3m, smul=\E[4m, X tbc=\E[3g, END_OF_FILE if test 668 -ne `wc -c <'terminfo/screeninfo.src'`; then echo shar: \"'terminfo/screeninfo.src'\" unpacked with wrong size! fi # end of 'terminfo/screeninfo.src' fi if test -f 'terminfo/screenwinfo.src' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'terminfo/screenwinfo.src'\" else echo shar: Extracting \"'terminfo/screenwinfo.src'\" \(671 characters\) sed "s/^X//" >'terminfo/screenwinfo.src' <<'END_OF_FILE' screen-w|VT 100/ANSI X3.64 virtual terminal, X msgr, xon, X cols#132, it#8, lines#24, X bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, X clear=\E[H\E[J, cr=\r, csr=\E[%i%p1%d;%p2%dr, X cub=\E[%p1%dD, cub1=\b, cud=\E[%p1%dB, cud1=\n, X cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, X cuu=\E[%p1%dA, cuu1=\EM, dl=\E[%p1%dM, dl1=\E[M, X ed=\E[J, el=\E[K, home=\E[H, ht=\t, hts=\EH, X il=\E[%p1%dL, il1=\E[L, ind=\n, is2=\E)0, kbs=\b, X kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, X kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E?, X nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, X rmkx=\E>, rmso=\E[23m, rmul=\E[24m, rs2=\Ec, sc=\E7, X sgr0=\E[m, smkx=\E=, smso=\E[3m, smul=\E[4m, X tbc=\E[3g, END_OF_FILE if test 671 -ne `wc -c <'terminfo/screenwinfo.src'`; then echo shar: \"'terminfo/screenwinfo.src'\" unpacked with wrong size! fi # end of 'terminfo/screenwinfo.src' fi if test -f 'xx.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'xx.c'\" else echo shar: Extracting \"'xx.c'\" \(1999 characters\) sed "s/^X//" >'xx.c' <<'END_OF_FILE' char cpmsg[] = "\ X\n\ iScreen version %v\n\ X\n\ Copyright (c) 1991\n\ X Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)\n\ X Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)\n\ Copyright (c) 1987 Oliver Laumann\n\ X\n\ This program is free software; you can redistribute it and/or \ modify it under the terms of the GNU General Public License as published \ by the Free Software Foundation; either version 1, or (at your option)\n\ any later version.\n\ X\n\ This program is distributed in the hope that it will be useful, \ but WITHOUT ANY WARRANTY; without even the implied warranty of \ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the \ GNU General Public License for more details.\n\ X\n\ You should have received a copy of the GNU General Public License \ along with this program (see the file COPYING); if not, write to the \ XFree Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\n"; X char version[] = "VERSIONTEST"; X static char *s, *saveds; int screenwidth; X main(argc, argv) int argc; char **argv; X{ X screenwidth = atoi(argv[1]); X s = cpmsg; X while (*s) X { X prcpy(); X printf("============================\n"); X } X} X prcpy() X{ X char *ws; X int x, y, l; X x = y = 0; X X while(*s) X { X ws = s; X while (*s == ' ') X s++; X if (strncmp(s, "%v", 2) == 0) X { X saveds = s + 2; X ws = s = version; X } X while (*s && *s != ' ' && *s != '\n') X s++; X l = s - ws; X s = ws; X if (l > screenwidth - 1) X l = screenwidth - 1; X if (x && x + l >= screenwidth - 2) X { X putchar('\n'); X x = 0; X if (++y == 10) X break; X } X if (x) X { X putchar(' '); X x++; X } X printf("%*.*s", l, l, ws); X x += l; X s += l; X if (*s == 0 && saveds) X { X s = saveds; X saveds = 0; X } X if (*s == '\n') X { X putchar('\n'); X x = 0; X if (++y == 10) X break; X } X if (*s == ' ' || *s == '\n') X s++; X } X while (y++ != 10) X putchar('\n'); X} X END_OF_FILE if test 1999 -ne `wc -c <'xx.c'`; then echo shar: \"'xx.c'\" unpacked with wrong size! fi # end of 'xx.c' fi echo shar: End of archive 1 \(of 8\). cp /dev/null ark1isdone MISSING="" for I in 1 2 3 4 5 6 7 8 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 8 archives. rm -f ark[1-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0