summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ObsoleteFiles.inc3
-rw-r--r--UPDATING4
-rw-r--r--usr.bin/Makefile1
-rw-r--r--usr.bin/window/Makefile21
-rw-r--r--usr.bin/window/README199
-rw-r--r--usr.bin/window/alias.h53
-rw-r--r--usr.bin/window/char.c78
-rw-r--r--usr.bin/window/char.h62
-rw-r--r--usr.bin/window/cmd.c302
-rw-r--r--usr.bin/window/cmd1.c174
-rw-r--r--usr.bin/window/cmd2.c156
-rw-r--r--usr.bin/window/cmd3.c67
-rw-r--r--usr.bin/window/cmd4.c58
-rw-r--r--usr.bin/window/cmd5.c131
-rw-r--r--usr.bin/window/cmd6.c112
-rw-r--r--usr.bin/window/cmd7.c274
-rw-r--r--usr.bin/window/compress.c903
-rw-r--r--usr.bin/window/context.c132
-rw-r--r--usr.bin/window/context.h84
-rw-r--r--usr.bin/window/defs.h72
-rw-r--r--usr.bin/window/error.c97
-rw-r--r--usr.bin/window/lcmd.c156
-rw-r--r--usr.bin/window/lcmd.h62
-rw-r--r--usr.bin/window/lcmd1.c433
-rw-r--r--usr.bin/window/lcmd2.c404
-rw-r--r--usr.bin/window/local.h52
-rw-r--r--usr.bin/window/main.c207
-rw-r--r--usr.bin/window/mloop.c86
-rw-r--r--usr.bin/window/mystring.h66
-rw-r--r--usr.bin/window/parser.h48
-rw-r--r--usr.bin/window/parser1.c224
-rw-r--r--usr.bin/window/parser2.c233
-rw-r--r--usr.bin/window/parser3.c193
-rw-r--r--usr.bin/window/parser4.c299
-rw-r--r--usr.bin/window/parser5.c203
-rw-r--r--usr.bin/window/scanner.c553
-rw-r--r--usr.bin/window/startup.c95
-rw-r--r--usr.bin/window/string.c156
-rw-r--r--usr.bin/window/token.h84
-rw-r--r--usr.bin/window/tt.h154
-rw-r--r--usr.bin/window/ttf100.c71
-rw-r--r--usr.bin/window/ttgeneric.c549
-rw-r--r--usr.bin/window/tth19.c280
-rw-r--r--usr.bin/window/tth29.c96
-rw-r--r--usr.bin/window/ttinit.c122
-rw-r--r--usr.bin/window/ttoutput.c150
-rw-r--r--usr.bin/window/tttermcap.c119
-rw-r--r--usr.bin/window/tttvi925.c66
-rw-r--r--usr.bin/window/ttwyse60.c78
-rw-r--r--usr.bin/window/ttwyse75.c78
-rw-r--r--usr.bin/window/ttzapple.c486
-rw-r--r--usr.bin/window/ttzentec.c68
-rw-r--r--usr.bin/window/value.h54
-rw-r--r--usr.bin/window/var.c159
-rw-r--r--usr.bin/window/var.h59
-rw-r--r--usr.bin/window/win.c372
-rw-r--r--usr.bin/window/window.11072
-rw-r--r--usr.bin/window/windowrc85
-rw-r--r--usr.bin/window/ww.h322
-rw-r--r--usr.bin/window/wwadd.c90
-rw-r--r--usr.bin/window/wwalloc.c74
-rw-r--r--usr.bin/window/wwbox.c68
-rw-r--r--usr.bin/window/wwchild.c72
-rw-r--r--usr.bin/window/wwclose.c61
-rw-r--r--usr.bin/window/wwclreol.c97
-rw-r--r--usr.bin/window/wwclreos.c57
-rw-r--r--usr.bin/window/wwcursor.c94
-rw-r--r--usr.bin/window/wwdata.c41
-rw-r--r--usr.bin/window/wwdelchar.c125
-rw-r--r--usr.bin/window/wwdelete.c141
-rw-r--r--usr.bin/window/wwdelline.c90
-rw-r--r--usr.bin/window/wwdump.c118
-rw-r--r--usr.bin/window/wwend.c70
-rw-r--r--usr.bin/window/wwenviron.c106
-rw-r--r--usr.bin/window/wwerror.c71
-rw-r--r--usr.bin/window/wwflush.c111
-rw-r--r--usr.bin/window/wwframe.c251
-rw-r--r--usr.bin/window/wwgets.c110
-rw-r--r--usr.bin/window/wwinit.c430
-rw-r--r--usr.bin/window/wwinschar.c132
-rw-r--r--usr.bin/window/wwinsline.c90
-rw-r--r--usr.bin/window/wwiomux.c205
-rw-r--r--usr.bin/window/wwlabel.c106
-rw-r--r--usr.bin/window/wwmisc.c69
-rw-r--r--usr.bin/window/wwmove.c100
-rw-r--r--usr.bin/window/wwopen.c191
-rw-r--r--usr.bin/window/wwprintf.c56
-rw-r--r--usr.bin/window/wwpty.c78
-rw-r--r--usr.bin/window/wwputc.c50
-rw-r--r--usr.bin/window/wwputs.c54
-rw-r--r--usr.bin/window/wwredraw.c58
-rw-r--r--usr.bin/window/wwredrawwin.c75
-rw-r--r--usr.bin/window/wwrint.c94
-rw-r--r--usr.bin/window/wwscroll.c236
-rw-r--r--usr.bin/window/wwsize.c194
-rw-r--r--usr.bin/window/wwspawn.c88
-rw-r--r--usr.bin/window/wwsuspend.c58
-rw-r--r--usr.bin/window/wwterminfo.c113
-rw-r--r--usr.bin/window/wwtty.c182
-rw-r--r--usr.bin/window/wwunframe.c78
-rw-r--r--usr.bin/window/wwupdate.c273
-rw-r--r--usr.bin/window/wwwrite.c300
-rw-r--r--usr.bin/window/xx.c256
-rw-r--r--usr.bin/window/xx.h59
-rw-r--r--usr.bin/window/xxflush.c198
105 files changed, 7 insertions, 16640 deletions
diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc
index 761f8dc..c0c14b7 100644
--- a/ObsoleteFiles.inc
+++ b/ObsoleteFiles.inc
@@ -14,6 +14,9 @@
# The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last.
#
+# 20090602: removal of window(1)
+OLD_FILES+=usr/bin/window
+OLD_FILES+=usr/share/man/man1/window.1.gz
# 20090530: removal of early.sh
OLD_FILES+=etc/rc.d/early.sh
# 20090527: renaming of S{LIST,TAILQ}_REMOVE_NEXT() to _REMOVE_AFTER()
diff --git a/UPDATING b/UPDATING
index 7162f01..2c43132 100644
--- a/UPDATING
+++ b/UPDATING
@@ -22,6 +22,10 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8.x IS SLOW:
to maximize performance. (To disable malloc debugging, run
ln -s aj /etc/malloc.conf.)
+20090602:
+ window(1) has been removed from the base system. It can now be
+ installed from ports. The port is called misc/window.
+
20090601:
The way we are storing and accessing `routing table' entries
has changed. Programs reading the FIB, like netstat, need to
diff --git a/usr.bin/Makefile b/usr.bin/Makefile
index f67bfc2..f45c2c8 100644
--- a/usr.bin/Makefile
+++ b/usr.bin/Makefile
@@ -222,7 +222,6 @@ SUBDIR= alias \
which \
who \
whois \
- window \
write \
xargs \
xinstall \
diff --git a/usr.bin/window/Makefile b/usr.bin/window/Makefile
deleted file mode 100644
index 8d0daa4..0000000
--- a/usr.bin/window/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-# @(#)Makefile 8.1 (Berkeley) 6/6/93
-# $FreeBSD$
-
-PROG= window
-SRCS= char.c cmd.c cmd1.c cmd2.c cmd3.c cmd4.c cmd5.c cmd6.c cmd7.c \
- context.c error.c lcmd.c lcmd1.c lcmd2.c main.c mloop.c parser1.c \
- parser2.c parser3.c parser4.c parser5.c scanner.c startup.c string.c \
- ttf100.c ttgeneric.c tth19.c tth29.c ttinit.c ttoutput.c tttermcap.c \
- tttvi925.c ttwyse60.c ttwyse75.c ttzapple.c ttzentec.c var.c win.c \
- wwadd.c wwalloc.c wwbox.c wwchild.c wwclose.c wwclreol.c wwclreos.c \
- wwcursor.c wwdata.c wwdelchar.c wwdelete.c wwdelline.c wwdump.c \
- wwend.c wwenviron.c wwerror.c wwflush.c wwframe.c wwgets.c wwinit.c \
- wwinschar.c wwinsline.c wwiomux.c wwlabel.c wwmisc.c wwmove.c \
- wwopen.c wwprintf.c wwpty.c wwputc.c wwputs.c wwredraw.c \
- wwredrawwin.c wwrint.c wwscroll.c wwsize.c wwspawn.c wwsuspend.c \
- wwterminfo.c wwtty.c wwunframe.c wwupdate.c wwwrite.c xx.c xxflush.c \
- compress.c
-DPADD= ${LIBTERMCAP} ${LIBUTIL}
-LDADD= -ltermcap -lutil
-
-.include <bsd.prog.mk>
diff --git a/usr.bin/window/README b/usr.bin/window/README
deleted file mode 100644
index 42d45b3..0000000
--- a/usr.bin/window/README
+++ /dev/null
@@ -1,199 +0,0 @@
-/*-
- * Copyright (c) 1990, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)README 8.1 (Berkeley) 6/6/93
- */
-
-Compilation notes:
-
- Compiler options:
-
- BYTE_ORDER (used only in ww.h)
- It should already be defined in machine/endian.h.
- The code knows about BIG_ENDIAN, LITTLE_ENDIAN, and PDP_ENDIAN.
- It only cares about byte order in words, so PDP_ENDIAN
- is the same as LITTLE_ENDIAN.
- OLD_TTY
- If you don't have Posix termios, then define this.
- VMIN_BUG
- Even if you have Posix termios, define this if the MIN and TIME
- feature in noncanonical mode doesn't work correctly.
-
- Ok, there's another one, STR_DEBUG. It turns on consistency checks
- in the string allocator. It's been left on since performace doesn't
- seem to suffer. There's an abort() somewhere when an inconsistency
- is found. It hasn't happened in years.
-
- The file local.h contains locally tunable constants.
-
- The makefile used to be updated with mkmf; it has been changed
-at various times to use cpp -M and, currently, mkdep. The only library
-it needs is termcap.
-
- Window, as is, only runs on 4.3 (or later) machines.
-
- On 4.2 machines, at least these modifications must be done:
-
- delete uses of window size ioctls: TIOCGWINSZ, TIOCSWINSZ,
- struct winsize
- add to ww.h
- typedef int fd_set;
- #define FD_ZERO(s) (*(s) = 0)
- #define FD_SET(b, s) (*(s) |= 1 << (b))
- #define FD_ISSET(b, s) (*(s) & 1 << (b))
- add to ww.h
- #define sigmask(s) (1 << (s) - 1)
-
-
-A few notes about the internals:
-
- The window package. Windows are opened by calling wwopen().
-Wwwrite() is the primitive for writing to windows. Wwputc(), wwputs(),
-and wwprintf() are also supported. Some of the outputs to windows are
-delayed. Wwupdate() updates the terminal to match the internal screen
-buffer. Wwspawn() spawns a child process on the other end of a window,
-with its environment tailored to the window. Visible windows are
-doubly linked in the order of their overlap. Wwadd() inserts a window
-into the list at a given place. Wwdelete() deletes it. Windows not in
-the list are not visible, though wwwrite() still works. Window was
-written before the days of X and Sunview, so some of the terminology
-is not standard.
-
- Most functions return -1 on error. Wwopen() returns the null
-pointer. An error number is saved in wwerrno. Wwerror() returns an
-error string based on wwerrno suitable for printing.
-
- The terminal drivers perform all output to the physical terminal,
-including special functions like character and line insertion and
-deletion. The window package keeps a list of known terminals. At
-initialization time, the terminal type is matched against the list to
-find the right terminal driver to use. The last driver, the generic
-driver, matches all terminals and uses the termcap database. The
-interface between the window package the terminal driver is the `tt'
-structure. It contains pointers to functions to perform special
-functions and terminal output, as well as flags about the
-characteristics of the terminal. Most of these ideas are borrowed
-from the Maryland window package, which in turn is based on Goslin's
-Emacs.
-
- The IO system is semi-synchronous. Terminal input is signal
-driven, and everything else is done synchronously with a single
-select(). It is roughly event-driven, though not in a clean way.
-
- Normally, in both conversation mode and command mode, window
-sleeps in a select() in wwiomux() waiting for data from the
-pseudo-terminals. At the same time, terminal input causes SIGIO which
-is caught by wwrint(). The select() returns when at least one of the
-pseudo-terminals becomes ready for reading.
-
- Wwrint() is the interrupt handler for tty input. It reads input
-into a linear buffer accessed through four pointers:
-
- +-------+--------------+----------------+
- | empty | data | empty |
- +-------+--------------+----------------+
- ^ ^ ^ ^
- | | | |
- wwib wwibp wwibq wwibe
-
-Wwrint() appends characters at the end and increments wwibq (*wwibq++
-= c), and characters are taken off the buffer at wwibp using the
-wwgetc() and wwpeekc() macros. As is the convention in C, wwibq
-and wwibe point to one position beyond the end. In addition,
-wwrint() will do a longjmp(wwjmpbuf) if wwsetjmp is true. This is
-used by wwiomux() to interrupt the select() which would otherwise
-resume after the interrupt. (Actually, I hear this is not true,
-but the longjmp feature is used to avoid a race condition as well.
-Anyway, it means I didn't have to depend on a feature in a
-daily-changing kernel, but that's another story.) The macro
-wwinterrupt() returns true if the input buffer is non-empty.
-Wwupdate(), wwwrite(), and wwiomux() check this condition and will
-return at the first convenient opportunity when it becomes true.
-In the case of wwwrite(), the flag ww_nointr in the window structure
-overrides this. This feature allows the user to interrupt lengthy
-outputs safely. The structure of the input buffer is designed to
-avoid race conditions without blocking interrupts.
-
- Actually, wwsetjmp and wwinterrupt() are part of a software
-interrupt scheme used by the two interrupt catchers wwrint() and
-wwchild(). Asserting the interrupt lets the synchronous parts of
-the program know that there's an interesting asynchronous condition
-(i.e., got a keyboard character, or a child process died) that they
-might want to process before anything else. The synchronous routines
-can check for this condition with wwinterrupt() or by arranging
-that a longjmp() be done.
-
- Wwiomux() copies pseudo-terminal output into their corresponding
-windows. Without anything to do, it blocks in a select(), waiting for
-read ready on pseudo-terminals. Reads are done into per-window buffers
-in the window structures. When there is at least one buffer non-empty,
-wwiomux() finds the top most of these windows and writes it using
-wwwrite(). Then the process is repeated. A non-blocking select() is
-done after a wwwrite() to pick up any output that may have come in
-during the write, which may take a long time. Specifically, we use
-this to stop output or flush buffer when a pseudo-terminal tells us to
-(we use pty packet mode). The select() blocks only when all of the
-windows' buffers are empty. A wwupdate() is done prior to this, which
-is the only time the screen is guaranteed to be completely up to date.
-Wwiomux() loops until wwinterrupt() becomes true.
-
- The top level routine for all this is mloop(). In conversation
-mode, it simply calls wwiomux(), which only returns when input is
-available. The input buffer is then written to the pseudo-terminal of
-the current window. If the escape character is found in the input,
-command mode is entered. Otherwise, the process is repeated. In
-command mode, control is transferred to docmd() which returns only when
-conversation mode is reentered. Docmd() and other command processing
-routines typically wait for input in a loop:
-
- while (wwpeekc() < 0)
- wwiomux();
-
-When the loop terminates, wwgetc() is used to read the input buffer.
-
- Output to the physical terminal is handled by the lowest level
-routines of the window package, in the files ttoutput.c and tt.h. The
-standard IO package is not used, to get better control over buffering
-and to use non-blocking reads in wwrint(). The buffer size is set to
-approximately one second of output time, based on the baudrate.
-
- The result of all this complexity is faster response time,
-especially in output stopping and flushing. Wwwrite() checks
-wwinterrupt() after every line. It also calls wwupdate() for each line
-it writes. The output buffer is limited to one second of output time.
-Thus, there is usually only a delay of one to two lines plus one second
-after a ^C or ^S. Also, commands that produce lengthy output can be
-aborted without actually showing all of it on the terminal. (Try the
-'?' command followed by escape immediately.)
diff --git a/usr.bin/window/alias.h b/usr.bin/window/alias.h
deleted file mode 100644
index 8b6aba3..0000000
--- a/usr.bin/window/alias.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)alias.h 8.1 (Berkeley) 6/6/93
- * $FreeBSD$
- */
-
-#define alias var
-#define a_name r_name
-#define a_buf r_val.v_str
-#define a_flags r_val.v_type
-
- /* a_flags bits, must not interfere with v_type values */
-#define A_INUSE 0x010 /* already inuse */
-
-#define alias_set(n, s) var_setstr1(&alias_head, n, s)
-#define alias_walk(f, a) var_walk1(alias_head, f, a)
-#define alias_unset(n) var_unset1(&alias_head, n)
-#define alias_lookup(n) (*var_lookup1(&alias_head, n))
-
-struct var *alias_head;
diff --git a/usr.bin/window/char.c b/usr.bin/window/char.c
deleted file mode 100644
index cd9a6eb..0000000
--- a/usr.bin/window/char.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)char.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "char.h"
-
-char *_unctrl[] = {
- "^@", "^A", "^B", "^C", "^D", "^E", "^F", "^G",
- "^H", "^I", "^J", "^K", "^L", "^M", "^N", "^O",
- "^P", "^Q", "^R", "^S", "^T", "^U", "^V", "^W",
- "^X", "^Y", "^Z", "^[", "^\\", "^]", "^^", "^_",
- " ", "!", "\"", "#", "$", "%", "&", "'",
- "(", ")", "*", "+", ",", "-", ".", "/",
- "0", "1", "2", "3", "4", "5", "6", "7",
- "8", "9", ":", ";", "<", "=", ">", "?",
- "@", "A", "B", "C", "D", "E", "F", "G",
- "H", "I", "J", "K", "L", "M", "N", "O",
- "P", "Q", "R", "S", "T", "U", "V", "W",
- "X", "Y", "Z", "[", "\\", "]", "^", "_",
- "`", "a", "b", "c", "d", "e", "f", "g",
- "h", "i", "j", "k", "l", "m", "n", "o",
- "p", "q", "r", "s", "t", "u", "v", "w",
- "x", "y", "z", "{", "|", "}", "~", "^?",
- "\\200","\\201","\\202","\\203","\\204","\\205","\\206","\\207",
- "\\210","\\211","\\212","\\213","\\214","\\215","\\216","\\217",
- "\\220","\\221","\\222","\\223","\\224","\\225","\\226","\\227",
- "\\230","\\231","\\232","\\233","\\234","\\235","\\236","\\237",
- "\\240","\\241","\\242","\\243","\\244","\\245","\\246","\\247",
- "\\250","\\251","\\252","\\253","\\254","\\255","\\256","\\257",
- "\\260","\\261","\\262","\\263","\\264","\\265","\\266","\\267",
- "\\270","\\271","\\272","\\273","\\274","\\275","\\276","\\277",
- "\\300","\\301","\\302","\\303","\\304","\\305","\\306","\\307",
- "\\310","\\311","\\312","\\313","\\314","\\315","\\316","\\317",
- "\\320","\\321","\\322","\\323","\\324","\\325","\\326","\\327",
- "\\330","\\331","\\332","\\333","\\334","\\335","\\336","\\337",
- "\\340","\\341","\\342","\\343","\\344","\\345","\\346","\\347",
- "\\350","\\351","\\352","\\353","\\354","\\355","\\356","\\357",
- "\\360","\\361","\\362","\\363","\\364","\\365","\\366","\\367",
- "\\370","\\371","\\372","\\373","\\374","\\375","\\376","\\377"
-};
diff --git a/usr.bin/window/char.h b/usr.bin/window/char.h
deleted file mode 100644
index c4b957c..0000000
--- a/usr.bin/window/char.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)char.h 8.1 (Berkeley) 6/6/93
- * $FreeBSD$
- */
-
-/*
- * Macros and things to deal with control characters.
- *
- * Unctrl() is just like the standard function, except we don't want
- * to include curses.
- * Isctrl() returns true for all characters less than space and
- * greater than or equal to delete.
- * Isprt() is tab and all characters not isctrl(). It's used
- * by wwwrite().
- * Isunctrl() includes all characters that should be expanded
- * using unctrl() by wwwrite() if ww_unctrl is set.
- */
-
-#include <ctype.h>
-#include <string.h>
-#include <stdlib.h>
-
-extern char *_unctrl[];
-#define ctrl(c) (c & 0x1f)
-#define unctrl(c) (_unctrl[(unsigned char) (c)])
-#define isctrl(c) iscntrl((unsigned char)(c))
-#define isprt(c) (isprint((unsigned char)(c)) || (c) == '\t')
-#define isunctrl(c) (strchr("\b\t\n\r", (c)) == NULL && isctrl(c))
diff --git a/usr.bin/window/cmd.c b/usr.bin/window/cmd.c
deleted file mode 100644
index 698930e..0000000
--- a/usr.bin/window/cmd.c
+++ /dev/null
@@ -1,302 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)cmd.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "defs.h"
-#include "char.h"
-
-docmd()
-{
- register c;
- register struct ww *w;
- char out = 0;
-
- while (!out && !quit) {
- if ((c = wwgetc()) < 0) {
- if (terse)
- wwsetcursor(0, 0);
- else {
- wwputs("Command: ", cmdwin);
- wwcurtowin(cmdwin);
- }
- do
- wwiomux();
- while ((c = wwgetc()) < 0);
- }
- if (!terse)
- wwputc('\n', cmdwin);
- switch (c) {
- default:
- if (c != escapec)
- break;
- case 'h': case 'j': case 'k': case 'l':
- case 'y': case 'p':
- case ctrl('y'):
- case ctrl('e'):
- case ctrl('u'):
- case ctrl('d'):
- case ctrl('b'):
- case ctrl('f'):
- case ctrl('s'):
- case ctrl('q'):
- case ctrl('['):
- if (selwin == 0) {
- error("No window.");
- continue;
- }
- }
- switch (c) {
- case '1': case '2': case '3': case '4': case '5':
- case '6': case '7': case '8': case '9':
- if ((w = window[c - '1']) == 0) {
- error("%c: No such window.", c);
- break;
- }
- setselwin(w);
- if (checkproc(selwin) >= 0)
- out = 1;
- break;
- case '%':
- if ((w = getwin()) != 0)
- setselwin(w);
- break;
- case ctrl('^'):
- if (lastselwin != 0) {
- setselwin(lastselwin);
- if (checkproc(selwin) >= 0)
- out = 1;
- } else
- error("No previous window.");
- break;
- case 'c':
- if ((w = getwin()) != 0)
- closewin(w);
- break;
- case 'w':
- c_window();
- break;
- case 'm':
- if ((w = getwin()) != 0)
- c_move(w);
- break;
- case 'M':
- if ((w = getwin()) != 0)
- movewin(w, w->ww_alt.t, w->ww_alt.l);
- break;
- case 's':
- if ((w = getwin()) != 0)
- c_size(w);
- break;
- case 'S':
- if ((w = getwin()) != 0)
- sizewin(w, w->ww_alt.nr, w->ww_alt.nc);
- break;
- case 'y':
- c_yank();
- break;
- case 'p':
- c_put();
- break;
- case ':':
- c_colon();
- break;
- case 'h':
- (void) wwwrite(selwin, "\b", 1);
- break;
- case 'j':
- (void) wwwrite(selwin, "\n", 1);
- break;
- case 'k':
- (void) wwwrite(selwin, "\033A", 2);
- break;
- case 'l':
- (void) wwwrite(selwin, "\033C", 2);
- break;
- case ctrl('e'):
- wwscroll(selwin, 1);
- break;
- case ctrl('y'):
- wwscroll(selwin, -1);
- break;
- case ctrl('d'):
- wwscroll(selwin, selwin->ww_w.nr / 2);
- break;
- case ctrl('u'):
- wwscroll(selwin, - selwin->ww_w.nr / 2);
- break;
- case ctrl('f'):
- wwscroll(selwin, selwin->ww_w.nr);
- break;
- case ctrl('b'):
- wwscroll(selwin, - selwin->ww_w.nr);
- break;
- case ctrl('s'):
- stopwin(selwin);
- break;
- case ctrl('q'):
- startwin(selwin);
- break;
- case ctrl('l'):
- wwredraw();
- break;
- case '?':
- c_help();
- break;
- case ctrl('['):
- if (checkproc(selwin) >= 0)
- out = 1;
- break;
- case ctrl('z'):
- wwsuspend();
- break;
- case 'q':
- c_quit();
- break;
- /* debugging stuff */
- case '&':
- if (debug) {
- c_debug();
- break;
- }
- default:
- if (c == escapec) {
- if (checkproc(selwin) >= 0) {
- (void) write(selwin->ww_pty,
- &escapec, 1);
- out = 1;
- }
- } else {
- if (!terse)
- wwbell();
- error("Type ? for help.");
- }
- }
- }
- if (!quit)
- setcmd(0);
-}
-
-struct ww *
-getwin()
-{
- register int c;
- struct ww *w = 0;
-
- if (!terse)
- wwputs("Which window? ", cmdwin);
- wwcurtowin(cmdwin);
- while ((c = wwgetc()) < 0)
- wwiomux();
- if (debug && c == 'c')
- w = cmdwin;
- else if (debug && c == 'f')
- w = framewin;
- else if (debug && c == 'b')
- w = boxwin;
- else if (c >= '1' && c < NWINDOW + '1')
- w = window[c - '1'];
- else if (c == '+')
- w = selwin;
- else if (c == '-')
- w = lastselwin;
- if (w == 0)
- wwbell();
- if (!terse)
- wwputc('\n', cmdwin);
- return w;
-}
-
-checkproc(w)
-struct ww *w;
-{
- if (w->ww_state != WWS_HASPROC) {
- error("No process in window.");
- return -1;
- }
- return 0;
-}
-
-setcmd(new)
-char new;
-{
- if (new && !incmd) {
- if (!terse)
- wwadd(cmdwin, &wwhead);
- if (selwin != 0)
- wwcursor(selwin, 1);
- wwcurwin = 0;
- } else if (!new && incmd) {
- if (!terse) {
- wwdelete(cmdwin);
- reframe();
- }
- if (selwin != 0)
- wwcursor(selwin, 0);
- wwcurwin = selwin;
- }
- incmd = new;
-}
-
-setterse(new)
-char new;
-{
- if (incmd)
- if (new && !terse) {
- wwdelete(cmdwin);
- reframe();
- } else if (!new && terse)
- wwadd(cmdwin, &wwhead);
- terse = new;
-}
-
-/*
- * Set the current window.
- */
-setselwin(w)
-struct ww *w;
-{
- if (selwin == w)
- return;
- if (selwin != 0)
- lastselwin = selwin;
- if ((selwin = w) != 0)
- front(selwin, 1);
-}
diff --git a/usr.bin/window/cmd1.c b/usr.bin/window/cmd1.c
deleted file mode 100644
index 049171d..0000000
--- a/usr.bin/window/cmd1.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)cmd1.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "@(#)$FreeBSD$";
-#endif /* not lint */
-
-#include "defs.h"
-#include "char.h"
-
-c_window()
-{
- int col, row, xcol, xrow;
- int id;
-
- if ((id = findid()) < 0)
- return;
- if (!terse)
- wwputs("New window (upper left corner): ", cmdwin);
- col = 0;
- row = 1;
- wwadd(boxwin, framewin->ww_back);
- for (;;) {
- wwbox(boxwin, row - 1, col - 1, 3, 3);
- wwsetcursor(row, col);
- while (wwpeekc() < 0)
- wwiomux();
- switch (getpos(&row, &col, row > 1, 0,
- wwnrow - 1, wwncol - 1)) {
- case 3:
- wwunbox(boxwin);
- wwdelete(boxwin);
- return;
- case 2:
- wwunbox(boxwin);
- break;
- case 1:
- wwunbox(boxwin);
- case 0:
- continue;
- }
- break;
- }
- if (!terse)
- wwputs("\nNew window (lower right corner): ", cmdwin);
- xcol = col;
- xrow = row;
- for (;;) {
- wwbox(boxwin, row - 1, col - 1,
- xrow - row + 3, xcol - col + 3);
- wwsetcursor(xrow, xcol);
- while (wwpeekc() < 0)
- wwiomux();
- switch (getpos(&xrow, &xcol, row, col, wwnrow - 1, wwncol - 1))
- {
- case 3:
- wwunbox(boxwin);
- wwdelete(boxwin);
- return;
- case 2:
- wwunbox(boxwin);
- break;
- case 1:
- wwunbox(boxwin);
- case 0:
- continue;
- }
- break;
- }
- wwdelete(boxwin);
- if (!terse)
- wwputc('\n', cmdwin);
- wwcurtowin(cmdwin);
- (void) openwin(id, row, col, xrow-row+1, xcol-col+1, default_nline,
- (char *) 0, 1, 1, default_shellfile, default_shell);
-}
-
-getpos(row, col, minrow, mincol, maxrow, maxcol)
-register int *row, *col;
-int minrow, mincol;
-int maxrow, maxcol;
-{
- static int scount;
- int count;
- int c;
- int oldrow = *row, oldcol = *col;
-
- while ((c = wwgetc()) >= 0) {
- switch (c) {
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- scount = scount * 10 + c - '0';
- continue;
- }
- count = scount ? scount : 1;
- scount = 0;
- switch (c) {
- case 'h':
- if ((*col -= count) < mincol)
- *col = mincol;
- break;
- case 'H':
- *col = mincol;
- break;
- case 'l':
- if ((*col += count) > maxcol)
- *col = maxcol;
- break;
- case 'L':
- *col = maxcol;
- break;
- case 'j':
- if ((*row += count) > maxrow)
- *row = maxrow;
- break;
- case 'J':
- *row = maxrow;
- break;
- case 'k':
- if ((*row -= count) < minrow)
- *row = minrow;
- break;
- case 'K':
- *row = minrow;
- break;
- case ctrl('['):
- if (!terse)
- wwputs("\nCancelled. ", cmdwin);
- return 3;
- case '\r':
- return 2;
- default:
- if (!terse)
- wwputs("\nType [hjklHJKL] to move, return to enter position, escape to cancel.", cmdwin);
- wwbell();
- }
- }
- return oldrow != *row || oldcol != *col;
-}
diff --git a/usr.bin/window/cmd2.c b/usr.bin/window/cmd2.c
deleted file mode 100644
index 9633b73..0000000
--- a/usr.bin/window/cmd2.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)cmd2.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "defs.h"
-
-char *help_shortcmd[] = {
- "# Select window # and return to conversation mode",
- "%# Select window # but stay in command mode",
- "escape Return to conversation mode without changing window",
- "^^ Return to conversation mode and change to previous window",
- "c# Close window #",
- "w Open a new window",
- "m# Move window #",
- "M# Move window # to its previous position",
- "s# Change the size of window #",
- "S# Change window # to its previous size",
- "^Y Scroll up one line",
- "^E Scroll down one line",
- "^U Scroll up half a window",
- "^D Scroll down half a window",
- "^B Scroll up a full window",
- "^F Scroll down a full window",
- "h Move cursor left",
- "j Move cursor down",
- "k Move cursor up",
- "l Move cursor right",
- "y Yank",
- "p Put",
- "^S Stop output in current window",
- "^Q Restart output in current window",
- "^L Redraw screen",
- "^Z Suspend",
- "q Quit",
- ": Enter a long command",
- 0
-};
-char *help_longcmd[] = {
- ":alias name string ... Make `name' an alias for `string ...'",
- ":alias Show all aliases",
- ":close # ... Close windows",
- ":close all Close all windows",
- ":cursor modes Set the cursor modes",
- ":echo # string ... Print `string ...' in window #",
- ":escape c Set escape character to `c'",
- ":foreground # flag Make # a foreground window, if `flag' is true",
- ":label # string Set label of window # to `string'",
- ":list List all open windows",
- ":default_nline lines Set default window buffer size to `lines'",
- ":default_shell string ...",
- " Set default shell to `string ...'",
- ":default_smooth flag Set default smooth scroll flag",
- ":select # Select window #",
- ":smooth # flag Set window # to smooth scroll mode",
- ":source filename Execute commands in `filename'",
- ":terse flag Set terse mode",
- ":unalias name Undefine `name' as an alias",
- ":unset variable Deallocate `variable'",
- ":variable List all variables",
- ":window [row col nrow ncol nline label pty frame mapnl keepopen smooth shell]",
- " Open a window at `row', `col' of size `nrow', `ncol',",
- " with `nline' lines in the buffer, and `label'",
- ":write # string ... Write `string ...' to window # as input",
- 0
-};
-
-c_help()
-{
- register struct ww *w;
-
- if ((w = openiwin(wwnrow - 3, "Help")) == 0) {
- error("Can't open help window: %s.", wwerror());
- return;
- }
- wwprintf(w, "The escape character is %c.\n", escapec);
- wwprintf(w, "(# represents one of the digits from 1 to 9.)\n\n");
- if (help_print(w, "Short commands", help_shortcmd) >= 0)
- (void) help_print(w, "Long commands", help_longcmd);
- closeiwin(w);
-}
-
-help_print(w, name, list)
-register struct ww *w;
-char *name;
-register char **list;
-{
- wwprintf(w, "%s:\n\n", name);
- while (*list)
- switch (more(w, 0)) {
- case 0:
- wwputs(*list++, w);
- wwputc('\n', w);
- break;
- case 1:
- wwprintf(w, "%s: (continued)\n\n", name);
- break;
- case 2:
- return -1;
- }
- return more(w, 1) == 2 ? -1 : 0;
-}
-
-c_quit()
-{
- char oldterse = terse;
-
- setterse(0);
- wwputs("Really quit [yn]? ", cmdwin);
- wwcurtowin(cmdwin);
- while (wwpeekc() < 0)
- wwiomux();
- if (wwgetc() == 'y') {
- wwputs("Yes", cmdwin);
- quit++;
- } else
- wwputc('\n', cmdwin);
- setterse(!quit && oldterse);
-}
diff --git a/usr.bin/window/cmd3.c b/usr.bin/window/cmd3.c
deleted file mode 100644
index 27a3173..0000000
--- a/usr.bin/window/cmd3.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)cmd3.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "defs.h"
-#include "mystring.h"
-
-setescape(esc)
-register char *esc;
-{
- if (*esc == '^') {
- if (esc[1] != 0)
- escapec = esc[1] & 0x1f;
- else
- escapec = '^';
- } else
- escapec = *esc;
-}
-
-setlabel(w, label)
-register struct ww *w;
-char *label;
-{
- if (w->ww_label != 0)
- str_free(w->ww_label);
- if ((w->ww_label = str_cpy(label)) == 0)
- return -1;
- return 0;
-}
diff --git a/usr.bin/window/cmd4.c b/usr.bin/window/cmd4.c
deleted file mode 100644
index 82ed1bd..0000000
--- a/usr.bin/window/cmd4.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)cmd4.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "defs.h"
-
-c_colon()
-{
- char oldterse = terse;
- char buf[512];
-
- setterse(0);
- wwputc(':', cmdwin);
- wwgets(buf, wwncol - 3, cmdwin);
- wwputc('\n', cmdwin);
- wwcurtowin(cmdwin);
- setterse(oldterse);
- if (dolongcmd(buf, (struct value *)0, 0) < 0)
- error("Out of memory.");
-}
diff --git a/usr.bin/window/cmd5.c b/usr.bin/window/cmd5.c
deleted file mode 100644
index 60b0244..0000000
--- a/usr.bin/window/cmd5.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)cmd5.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "defs.h"
-
-/*
- * Window movement.
- */
-
-c_move(w)
-register struct ww *w;
-{
- int col, row;
- int mincol, minrow;
- int maxcol, maxrow;
- int curcol, currow;
-
- if (!terse)
- wwputs("New window position: ", cmdwin);
- col = w->ww_w.l;
- row = w->ww_w.t;
- wwadd(boxwin, framewin->ww_back);
- for (;;) {
- wwbox(boxwin, row - 1, col - 1, w->ww_w.nr + 2, w->ww_w.nc + 2);
- getminmax(row, w->ww_w.nr, 1, wwnrow,
- &currow, &minrow, &maxrow);
- getminmax(col, w->ww_w.nc, 0, wwncol,
- &curcol, &mincol, &maxcol);
- wwsetcursor(currow, curcol);
- while (wwpeekc() < 0)
- wwiomux();
- switch (getpos(&row, &col, minrow, mincol, maxrow, maxcol)) {
- case 3:
- wwunbox(boxwin);
- wwdelete(boxwin);
- return;
- case 2:
- wwunbox(boxwin);
- break;
- case 1:
- wwunbox(boxwin);
- case 0:
- continue;
- }
- break;
- }
- wwdelete(boxwin);
- if (!terse)
- wwputc('\n', cmdwin);
- wwcurtowin(cmdwin);
- movewin(w, row, col);
-}
-
-movewin(w, row, col)
-register struct ww *w;
-{
- struct ww *back = w->ww_back;
-
- w->ww_alt.t = w->ww_w.t;
- w->ww_alt.l = w->ww_w.l;
- wwdelete(w);
- wwmove(w, row, col);
- wwadd(w, back);
- reframe();
-}
-
-/*
- * Weird stufff, don't ask.
- */
-getminmax(x, n, a, b, curx, minx, maxx)
-register x, n, a, b;
-int *curx, *minx, *maxx;
-{
- if (x < 0)
- *curx = x + n - 1;
- else
- *curx = x;
-
- if (x <= a)
- *minx = 1 - n;
- else if (x <= b - n)
- *minx = a;
- else
- *minx = b - n;
-
- if (x >= b - n)
- *maxx = b - 1;
- else if (x >= a)
- *maxx = b - n;
- else
- *maxx = a;
-}
diff --git a/usr.bin/window/cmd6.c b/usr.bin/window/cmd6.c
deleted file mode 100644
index 63689aa..0000000
--- a/usr.bin/window/cmd6.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)cmd6.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "defs.h"
-#include "mystring.h"
-#include "char.h"
-
-/*
- * Debugging commands.
- */
-
-c_debug()
-{
- register struct ww *w;
-
- if (!terse)
- wwputs("[m(smap) n(ns) o(os) s(string) v(nvis) w(win)]? ", cmdwin);
- wwcurtowin(cmdwin);
- while (wwpeekc() < 0)
- wwiomux();
- if (!terse)
- wwputc('\n', cmdwin);
- switch (wwgetc()) {
- case 'm':
- wwdumpsmap();
- break;
- case 'n':
- wwdumpns();
- break;
- case 'o':
- wwdumpos();
- break;
- case 's':
- debug_str();
- break;
- case 'v':
- if ((w = getwin()) != 0)
- wwdumpnvis(w);
- break;
- case 'w':
- if ((w = getwin()) != 0)
- wwdumpwin(w);
- break;
- default:
- wwbell();
- }
-}
-
-#ifdef STR_DEBUG
-debug_str()
-{
- register struct ww *w;
- struct mystring *s;
-
- if ((w = openiwin(wwnrow - 3, "Allocated Strings")) == 0) {
- error("Can't open string window: %s.", wwerror());
- return;
- }
- for (s = str_head.s_forw; s != &str_head; s = s->s_forw) {
- if (more(w, 0) == 2)
- goto out;
- wwprintf(w, "(0x%x)\t\"%s\"\n", s->s_data, s->s_data);
- }
- waitnl(w);
-out:
- closeiwin(w);
-}
-#else
-debug_str()
-{
- error("No string debugging.");
-}
-#endif
diff --git a/usr.bin/window/cmd7.c b/usr.bin/window/cmd7.c
deleted file mode 100644
index 1039f26..0000000
--- a/usr.bin/window/cmd7.c
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)cmd7.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include <stdlib.h>
-#include "defs.h"
-#include "mystring.h"
-
-/*
- * Window size.
- */
-
-c_size(w)
-register struct ww *w;
-{
- int col, row;
-
- if (!terse)
- wwputs("New window size (lower right corner): ", cmdwin);
- col = MIN(w->ww_w.r, wwncol) - 1;
- row = MIN(w->ww_w.b, wwnrow) - 1;
- wwadd(boxwin, framewin->ww_back);
- for (;;) {
- wwbox(boxwin, w->ww_w.t - 1, w->ww_w.l - 1,
- row - w->ww_w.t + 3, col - w->ww_w.l + 3);
- wwsetcursor(row, col);
- while (wwpeekc() < 0)
- wwiomux();
- switch (getpos(&row, &col, w->ww_w.t, w->ww_w.l,
- wwnrow - 1, wwncol - 1)) {
- case 3:
- wwunbox(boxwin);
- wwdelete(boxwin);
- return;
- case 2:
- wwunbox(boxwin);
- break;
- case 1:
- wwunbox(boxwin);
- case 0:
- continue;
- }
- break;
- }
- wwdelete(boxwin);
- if (!terse)
- wwputc('\n', cmdwin);
- wwcurtowin(cmdwin);
- sizewin(w, row - w->ww_w.t + 1, col - w->ww_w.l + 1);
-}
-
-/*
- * Yank and put
- */
-
-struct yb {
- char *line;
- int length;
- struct yb *link;
-};
-struct yb *yb_head, *yb_tail;
-
-c_yank()
-{
- struct ww *w = selwin;
- int col1, row1;
- int col2, row2;
- int r, c;
-
- if (!terse)
- wwputs("Yank starting position: ", cmdwin);
- wwcursor(w, 0);
- row1 = w->ww_cur.r;
- col1 = w->ww_cur.c;
- for (;;) {
- wwsetcursor(row1, col1);
- while (wwpeekc() < 0)
- wwiomux();
- switch (getpos(&row1, &col1, w->ww_i.t, w->ww_i.l,
- w->ww_i.b - 1, w->ww_i.r - 1)) {
- case 3:
- goto out;
- case 2:
- break;
- case 1:
- case 0:
- continue;
- }
- break;
- }
- if (!terse)
- wwputs("\nYank ending position: ", cmdwin);
- row2 = row1;
- col2 = col1;
- for (;;) {
- wwsetcursor(row2, col2);
- while (wwpeekc() < 0)
- wwiomux();
- r = row2;
- c = col2;
- switch (getpos(&row2, &col2, w->ww_i.t, w->ww_i.l,
- w->ww_i.b - 1, w->ww_i.r - 1)) {
- case 3:
- yank_highlight(row1, col1, r, c);
- goto out;
- case 2:
- break;
- case 1:
- yank_highlight(row1, col1, r, c);
- yank_highlight(row1, col1, row2, col2);
- case 0:
- continue;
- }
- break;
- }
- if (row2 < row1 || row2 == row1 && col2 < col1) {
- r = row1;
- c = col1;
- row1 = row2;
- col1 = col2;
- row2 = r;
- col2 = c;
- }
- unyank();
- c = col1;
- for (r = row1; r < row2; r++) {
- yank_line(r, c, w->ww_b.r);
- c = w->ww_b.l;
- }
- yank_line(r, c, col2);
- yank_highlight(row1, col1, row2, col2);
- if (!terse)
- wwputc('\n', cmdwin);
-out:
- wwcursor(w, 1);
-}
-
-yank_highlight(row1, col1, row2, col2)
-{
- struct ww *w = selwin;
- int r, c;
-
- if ((wwavailmodes & WWM_REV) == 0)
- return;
- if (row2 < row1 || row2 == row1 && col2 < col1) {
- r = row1;
- c = col1;
- row1 = row2;
- col1 = col2;
- row2 = r;
- col2 = c;
- }
- c = col1;
- for (r = row1; r < row2; r++) {
- yank_highlight_line(r, c, w->ww_b.r);
- c = w->ww_b.l;
- }
- yank_highlight_line(r, c, col2);
-}
-
-yank_highlight_line(r, c, cend)
-{
- struct ww *w = selwin;
- char *win;
-
- if (r < w->ww_i.t || r >= w->ww_i.b)
- return;
- if (c < w->ww_i.l)
- c = w->ww_i.l;
- if (cend >= w->ww_i.r)
- cend = w->ww_i.r;
- for (win = w->ww_win[r] + c; c < cend; c++, win++) {
- *win ^= WWM_REV;
- if (wwsmap[r][c] == w->ww_index) {
- if (*win == 0)
- w->ww_nvis[r]++;
- else if (*win == WWM_REV)
- w->ww_nvis[r]--;
- wwns[r][c].c_m ^= WWM_REV;
- wwtouched[r] |= WWU_TOUCHED;
- }
- }
-}
-
-unyank()
-{
- struct yb *yp, *yq;
-
- for (yp = yb_head; yp; yp = yq) {
- yq = yp->link;
- str_free(yp->line);
- free((char *) yp);
- }
- yb_head = yb_tail = 0;
-}
-
-yank_line(r, c, cend)
-{
- struct yb *yp;
- int nl = 0;
- int n;
- union ww_char *bp;
- char *cp;
-
- if (c == cend)
- return;
- if ((yp = (struct yb *) malloc(sizeof *yp)) == 0)
- return;
- yp->link = 0;
- nl = cend == selwin->ww_b.r;
- bp = selwin->ww_buf[r];
- for (cend--; cend >= c; cend--)
- if (bp[cend].c_c != ' ')
- break;
- yp->length = n = cend - c + 1;
- if (nl)
- yp->length++;
- yp->line = str_alloc(yp->length + 1);
- for (bp += c, cp = yp->line; --n >= 0;)
- *cp++ = bp++->c_c;
- if (nl)
- *cp++ = '\n';
- *cp = 0;
- if (yb_head)
- yb_tail = yb_tail->link = yp;
- else
- yb_head = yb_tail = yp;
-}
-
-c_put()
-{
- struct yb *yp;
-
- for (yp = yb_head; yp; yp = yp->link)
- (void) write(selwin->ww_pty, yp->line, yp->length);
-}
diff --git a/usr.bin/window/compress.c b/usr.bin/window/compress.c
deleted file mode 100644
index facba21..0000000
--- a/usr.bin/window/compress.c
+++ /dev/null
@@ -1,903 +0,0 @@
-/*
- * Copyright (c) 1989, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)compress.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-
- /* special */
-#include <stdio.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <strings.h>
-int cc_trace = 0;
-FILE *cc_trace_fp;
-
- /* tunable parameters */
-
-int cc_reverse = 1;
-int cc_sort = 0;
-int cc_chop = 0;
-
-int cc_token_max = 8; /* <= TOKEN_MAX */
-int cc_token_min = 2; /* > tt.tt_put_token_cost */
-int cc_npass0 = 1;
-int cc_npass1 = 1;
-
-int cc_bufsize = 1024 * 3; /* XXX, or 80 * 24 * 2 */
-
-int cc_ntoken = 8192;
-
-#define cc_weight XXX
-#ifndef cc_weight
-int cc_weight = 0;
-#endif
-
-#define TOKEN_MAX 16
-
-struct cc {
- char string[TOKEN_MAX];
- char length;
- char flag;
-#ifndef cc_weight
- short weight;
-#endif
- long time; /* time last seen */
- short bcount; /* count in this buffer */
- short ccount; /* count in compression */
- short places; /* places in the buffer */
- short code; /* token code */
- struct cc *qforw, *qback;
- struct cc *hforw, **hback;
-};
-
-short cc_thresholds[TOKEN_MAX + 1];
-#define thresh(length) (cc_thresholds[length])
-#define threshp(code, count, length) \
- ((code) >= 0 || (short) (count) >= cc_thresholds[length])
-
-#ifndef cc_weight
-short cc_wthresholds[TOKEN_MAX + 1];
-#define wthresh(length) (cc_wthresholds[length])
-#define wthreshp(weight, length) ((short) (weight) >= cc_wthresholds[length])
-#else
-#define wthreshp(weight, length) (0)
-#endif
-
-#ifndef cc_weight
-short cc_wlimits[TOKEN_MAX + 1];
-#define wlimit(length) (cc_wlimits[length])
-#endif
-
-#define put_token_score(length) ((length) - tt.tt_put_token_cost)
-
-int cc_score_adjustments[TOKEN_MAX + 1][8]; /* XXX, 8 > max of cc_thresholds */
-#define score_adjust(score, p) \
- do { \
- int length = (p)->length; \
- int ccount = (p)->ccount; \
- if (threshp((p)->code, ccount, length) || \
- wthreshp((p)->weight, length)) /* XXX */ \
- (score) -= length - tt.tt_put_token_cost; \
- else \
- (score) += cc_score_adjustments[length][ccount]; \
- } while (0)
-
-int cc_initial_scores[TOKEN_MAX + 1][8]; /* XXX, 8 > max of cc_thresholds */
-
-struct cc cc_q0a, cc_q0b, cc_q1a, cc_q1b;
-
-#define qinsert(p1, p2) \
- do { \
- register struct cc *forw = (p1)->qforw; \
- register struct cc *back = (p1)->qback; \
- back->qforw = forw; \
- forw->qback = back; \
- forw = (p2)->qforw; \
- (p1)->qforw = forw; \
- forw->qback = (p1); \
- (p2)->qforw = (p1); \
- (p1)->qback = (p2); \
- } while (0)
-
-#define qinsertq(q, p) \
- ((q)->qforw == (q) ? 0 : \
- ((q)->qback->qforw = (p)->qforw, \
- (p)->qforw->qback = (q)->qback, \
- (q)->qforw->qback = (p), \
- (p)->qforw = (q)->qforw, \
- (q)->qforw = (q), \
- (q)->qback = (q)))
-
-#define H (14)
-#define HSIZE (1 << H)
-#define hash(h, c) ((((h) >> H - 8 | (h) << 8) ^ (c)) & HSIZE - 1)
-
-char *cc_buffer;
-struct cc **cc_output; /* the output array */
-short *cc_places[TOKEN_MAX + 1];
-short *cc_hashcodes; /* for computing hashcodes */
-struct cc **cc_htab; /* the hash table */
-struct cc **cc_tokens; /* holds all the active tokens */
-struct cc_undo {
- struct cc **pos;
- struct cc *val;
-} *cc_undo;
-
-long cc_time, cc_time0;
-
-char *cc_tt_ob, *cc_tt_obe;
-
-ccinit()
-{
- register i, j;
- register struct cc *p;
-
- if (tt.tt_token_max > cc_token_max)
- tt.tt_token_max = cc_token_max;
- if (tt.tt_token_min < cc_token_min)
- tt.tt_token_min = cc_token_min;
- if (tt.tt_token_min > tt.tt_token_max) {
- tt.tt_ntoken = 0;
- return 0;
- }
- if (tt.tt_ntoken > cc_ntoken / 2) /* not likely */
- tt.tt_ntoken = cc_ntoken / 2;
-#define C(x) (sizeof (x) / sizeof *(x))
- for (i = 0; i < C(cc_thresholds); i++) {
- int h = i - tt.tt_put_token_cost;
- if (h > 0)
- cc_thresholds[i] =
- (tt.tt_set_token_cost + 1 + h - 1) / h + 1;
- else
- cc_thresholds[i] = 0;
- }
- for (i = 0; i < C(cc_score_adjustments); i++) {
- int t = cc_thresholds[i];
- for (j = 0; j < C(*cc_score_adjustments); j++) {
- if (j >= t)
- cc_score_adjustments[i][j] =
- - (i - tt.tt_put_token_cost);
- else if (j < t - 1)
- cc_score_adjustments[i][j] = 0;
- else
- /*
- * cost now is
- * length * (ccount + 1) a
- * cost before was
- * set-token-cost + length +
- * ccount * put-token-cost b
- * the score adjustment is (b - a)
- */
- cc_score_adjustments[i][j] =
- tt.tt_set_token_cost + i +
- j * tt.tt_put_token_cost -
- i * (j + 1);
- if (j >= t)
- cc_initial_scores[i][j] = 0;
- else
- /*
- * - (set-token-cost +
- * (length - put-token-cost) -
- * (length - put-token-cost) * ccount)
- */
- cc_initial_scores[i][j] =
- - (tt.tt_set_token_cost +
- (i - tt.tt_put_token_cost) -
- (i - tt.tt_put_token_cost) * j);
- }
- }
-#ifndef cc_weight
- for (i = 1; i < C(cc_wthresholds); i++) {
- cc_wthresholds[i] =
- ((tt.tt_set_token_cost + tt.tt_put_token_cost) / i +
- i / 5 + 1) *
- cc_weight + 1;
- cc_wlimits[i] = cc_wthresholds[i] + cc_weight;
- }
-#endif
-#undef C
- if ((cc_output = (struct cc **)
- malloc((unsigned) cc_bufsize * sizeof *cc_output)) == 0)
- goto nomem;
- if ((cc_hashcodes = (short *)
- malloc((unsigned) cc_bufsize * sizeof *cc_hashcodes)) == 0)
- goto nomem;
- if ((cc_htab = (struct cc **) malloc(HSIZE * sizeof *cc_htab)) == 0)
- goto nomem;
- if ((cc_tokens = (struct cc **)
- malloc((unsigned)
- (cc_ntoken + tt.tt_token_max - tt.tt_token_min + 1) *
- sizeof *cc_tokens)) == 0)
- goto nomem;
- if ((cc_undo = (struct cc_undo *)
- malloc((unsigned) cc_bufsize * sizeof *cc_undo)) == 0)
- goto nomem;
- for (i = tt.tt_token_min; i <= tt.tt_token_max; i++)
- if ((cc_places[i] = (short *)
- malloc((unsigned) cc_bufsize * sizeof **cc_places)) == 0)
- goto nomem;
- cc_q0a.qforw = cc_q0a.qback = &cc_q0a;
- cc_q0b.qforw = cc_q0b.qback = &cc_q0b;
- cc_q1a.qforw = cc_q1a.qback = &cc_q1a;
- cc_q1b.qforw = cc_q1b.qback = &cc_q1b;
- if ((p = (struct cc *) malloc((unsigned) cc_ntoken * sizeof *p)) == 0)
- goto nomem;
- for (i = 0; i < tt.tt_ntoken; i++) {
- p->code = i;
- p->time = -1;
- p->qback = cc_q0a.qback;
- p->qforw = &cc_q0a;
- p->qback->qforw = p;
- cc_q0a.qback = p;
- p++;
- }
- for (; i < cc_ntoken; i++) {
- p->code = -1;
- p->time = -1;
- p->qback = cc_q1a.qback;
- p->qforw = &cc_q1a;
- p->qback->qforw = p;
- cc_q1a.qback = p;
- p++;
- }
- cc_tt_ob = tt_ob;
- cc_tt_obe = tt_obe;
- if ((cc_buffer = malloc((unsigned) cc_bufsize)) == 0)
- goto nomem;
- return 0;
-nomem:
- wwerrno = WWE_NOMEM;
- return -1;
-}
-
-ccstart()
-{
- int ccflush();
-
- ttflush();
- tt_obp = tt_ob = cc_buffer;
- tt_obe = tt_ob + cc_bufsize;
- tt.tt_flush = ccflush;
- if (cc_trace) {
- cc_trace_fp = fopen("window-trace", "a");
- (void) fcntl(fileno(cc_trace_fp), F_SETFD, 1);
- }
- ccreset();
-}
-
-ccreset()
-{
- register struct cc *p;
-
- bzero((char *) cc_htab, HSIZE * sizeof *cc_htab);
- for (p = cc_q0a.qforw; p != &cc_q0a; p = p->qforw)
- p->hback = 0;
- for (p = cc_q1a.qforw; p != &cc_q1a; p = p->qforw)
- p->hback = 0;
-}
-
-ccend()
-{
-
- ttflush();
- tt_obp = tt_ob = cc_tt_ob;
- tt_obe = cc_tt_obe;
- tt.tt_flush = 0;
- if (cc_trace_fp != NULL) {
- (void) fclose(cc_trace_fp);
- cc_trace_fp = NULL;
- }
-}
-
-ccflush()
-{
- int bufsize = tt_obp - tt_ob;
- int n;
-
- if (tt_ob != cc_buffer)
- abort();
- if (cc_trace_fp != NULL) {
- (void) fwrite(tt_ob, 1, bufsize, cc_trace_fp);
- (void) putc(-1, cc_trace_fp);
- }
- tt.tt_flush = 0;
- (*tt.tt_compress)(1);
- if (bufsize < tt.tt_token_min) {
- ttflush();
- goto out;
- }
- tt_obp = tt_ob = cc_tt_ob;
- tt_obe = cc_tt_obe;
- cc_time0 = cc_time;
- cc_time += bufsize;
- n = cc_sweep_phase(cc_buffer, bufsize, cc_tokens);
- cc_compress_phase(cc_output, bufsize, cc_tokens, n);
- cc_output_phase(cc_buffer, cc_output, bufsize);
- ttflush();
- tt_obp = tt_ob = cc_buffer;
- tt_obe = cc_buffer + cc_bufsize;
-out:
- (*tt.tt_compress)(0);
- tt.tt_flush = ccflush;
-}
-
-cc_sweep_phase(buffer, bufsize, tokens)
- char *buffer;
- struct cc **tokens;
-{
- register struct cc **pp = tokens;
- register i, n;
-#ifdef STATS
- int nn, ii;
-#endif
-
-#ifdef STATS
- if (verbose >= 0)
- time_begin();
- if (verbose > 0)
- printf("Sweep:");
-#endif
- cc_sweep0(buffer, bufsize, tt.tt_token_min - 1);
-#ifdef STATS
- ntoken_stat = 0;
- nn = 0;
- ii = 0;
-#endif
- for (i = tt.tt_token_min; i <= tt.tt_token_max; i++) {
-#ifdef STATS
- if (verbose > 0) {
- if (ii > 7) {
- printf("\n ");
- ii = 0;
- }
- ii++;
- printf(" (%d", i);
- (void) fflush(stdout);
- }
-#endif
- n = cc_sweep(buffer, bufsize, pp, i);
- pp += n;
-#ifdef STATS
- if (verbose > 0) {
- if (--n > 0) {
- printf(" %d", n);
- nn += n;
- }
- putchar(')');
- }
-#endif
- }
- qinsertq(&cc_q1b, &cc_q1a);
-#ifdef STATS
- if (verbose > 0)
- printf("\n %d tokens, %d candidates\n",
- ntoken_stat, nn);
- if (verbose >= 0)
- time_end();
-#endif
- return pp - tokens;
-}
-
-cc_sweep0(buffer, n, length)
- char *buffer;
-{
- register char *p;
- register short *hc;
- register i;
- register short c;
- register short pc = tt.tt_padc;
-
- /* n and length are at least 1 */
- p = buffer++;
- hc = cc_hashcodes;
- i = n;
- do {
- if ((*hc++ = *p++) == pc)
- hc[-1] = -1;
- } while (--i);
- while (--length) {
- p = buffer++;
- hc = cc_hashcodes;
- for (i = n--; --i;) {
- if ((c = *p++) == pc || *hc < 0)
- c = -1;
- else
- c = hash(*hc, c);
- *hc++ = c;
- }
- }
-}
-
-cc_sweep(buffer, bufsize, tokens, length)
- char *buffer;
- struct cc **tokens;
- register length;
-{
- register struct cc *p;
- register char *cp;
- register i;
- short *hc;
- short *places = cc_places[length];
- struct cc **pp = tokens;
- short threshold = thresh(length);
-#ifndef cc_weight
- short wthreshold = wthresh(length);
- short limit = wlimit(length);
-#endif
- int time;
- short pc = tt.tt_padc;
-
- i = length - 1;
- bufsize -= i;
- cp = buffer + i;
- hc = cc_hashcodes;
- time = cc_time0;
- for (i = 0; i < bufsize; i++, time++) {
- struct cc **h;
-
- {
- register short *hc1 = hc;
- register short c = *cp++;
- register short hh;
- if ((hh = *hc1) < 0 || c == pc) {
- *hc1++ = -1;
- hc = hc1;
- continue;
- }
- h = cc_htab + (*hc1++ = hash(hh, c));
- hc = hc1;
- }
- for (p = *h; p != 0; p = p->hforw)
- if (p->length == (char) length) {
- register char *p1 = p->string;
- register char *p2 = cp - length;
- register n = length;
- do
- if (*p1++ != *p2++)
- goto fail;
- while (--n);
- break;
- fail:;
- }
- if (p == 0) {
- p = cc_q1a.qback;
- if (p == &cc_q1a ||
- p->time >= cc_time0 && p->length == (char) length)
- continue;
- if (p->hback != 0)
- if ((*p->hback = p->hforw) != 0)
- p->hforw->hback = p->hback;
- {
- register char *p1 = p->string;
- register char *p2 = cp - length;
- register n = length;
- do
- *p1++ = *p2++;
- while (--n);
- }
- p->length = length;
-#ifndef cc_weight
- p->weight = cc_weight;
-#endif
- p->time = time;
- p->bcount = 1;
- p->ccount = 0;
- p->flag = 0;
- if ((p->hforw = *h) != 0)
- p->hforw->hback = &p->hforw;
- *h = p;
- p->hback = h;
- qinsert(p, &cc_q1a);
- places[i] = -1;
- p->places = i;
-#ifdef STATS
- ntoken_stat++;
-#endif
- } else if (p->time < cc_time0) {
-#ifndef cc_weight
- if ((p->weight += p->time - time) < 0)
- p->weight = cc_weight;
- else if ((p->weight += cc_weight) > limit)
- p->weight = limit;
-#endif
- p->time = time;
- p->bcount = 1;
- p->ccount = 0;
- if (p->code >= 0) {
- p->flag = 1;
- *pp++ = p;
- } else
-#ifndef cc_weight
- if (p->weight >= wthreshold) {
- p->flag = 1;
- *pp++ = p;
- qinsert(p, &cc_q1b);
- } else
-#endif
- {
- p->flag = 0;
- qinsert(p, &cc_q1a);
- }
- places[i] = -1;
- p->places = i;
-#ifdef STATS
- ntoken_stat++;
-#endif
- } else if (p->time + length > time) {
- /*
- * overlapping token, don't count as two and
- * don't update time, but do adjust weight to offset
- * the difference
- */
-#ifndef cc_weight
- if (cc_weight != 0) { /* XXX */
- p->weight += time - p->time;
- if (!p->flag && p->weight >= wthreshold) {
- p->flag = 1;
- *pp++ = p;
- qinsert(p, &cc_q1b);
- }
- }
-#endif
- places[i] = p->places;
- p->places = i;
- } else {
-#ifndef cc_weight
- if ((p->weight += p->time - time) < 0)
- p->weight = cc_weight;
- else if ((p->weight += cc_weight) > limit)
- p->weight = limit;
-#endif
- p->time = time;
- p->bcount++;
- if (!p->flag &&
- /* code must be < 0 if flag false here */
- (p->bcount >= threshold
-#ifndef cc_weight
- || p->weight >= wthreshold
-#endif
- )) {
- p->flag = 1;
- *pp++ = p;
- qinsert(p, &cc_q1b);
- }
- places[i] = p->places;
- p->places = i;
- }
- }
- if ((i = pp - tokens) > 0) {
- *pp = 0;
- if (cc_reverse)
- cc_sweep_reverse(tokens, places);
- if (cc_sort && i > 1) {
- int cc_token_compare();
- qsort((char *) tokens, i, sizeof *tokens,
- cc_token_compare);
- }
- if (cc_chop) {
- if ((i = i * cc_chop / 100) == 0)
- i = 1;
- tokens[i] = 0;
- }
- i++;
- }
- return i;
-}
-
-cc_sweep_reverse(pp, places)
- register struct cc **pp;
- register short *places;
-{
- register struct cc *p;
- register short front, back, t;
-
- while ((p = *pp++) != 0) {
- back = -1;
- t = p->places;
- /* the list is never empty */
- do {
- front = places[t];
- places[t] = back;
- back = t;
- } while ((t = front) >= 0);
- p->places = back;
- }
-}
-
-cc_compress_phase(output, bufsize, tokens, ntoken)
- struct cc **output;
- struct cc **tokens;
-{
- register i;
-
- bzero((char *) output, bufsize * sizeof *output);
- for (i = 0; i < cc_npass0; i++)
- cc_compress_phase1(output, tokens, ntoken, 0);
- for (i = 0; i < cc_npass1; i++)
- cc_compress_phase1(output, tokens, ntoken, 1);
- cc_compress_cleanup(output, bufsize);
-}
-
-cc_compress_phase1(output, tokens, ntoken, flag)
- register struct cc **output;
- struct cc **tokens;
-{
- register struct cc **pp;
-#ifdef STATS
- register int i = 0;
- int nt = 0, cc = 0, nc = 0;
-#endif
-
-#ifdef STATS
- if (verbose >= 0)
- time_begin();
- if (verbose > 0)
- printf("Compress:");
-#endif
- pp = tokens;
- while (pp < tokens + ntoken) {
-#ifdef STATS
- if (verbose > 0) {
- ntoken_stat = 0;
- ccount_stat = 0;
- ncover_stat = 0;
- if (i > 2) {
- printf("\n ");
- i = 0;
- }
- i++;
- printf(" (%d", (*pp)->length);
- (void) fflush(stdout);
- }
-#endif
- pp += cc_compress(output, pp, flag);
-#ifdef STATS
- if (verbose > 0) {
- printf(" %dt %du %dc)", ntoken_stat, ccount_stat,
- ncover_stat);
- nt += ntoken_stat;
- cc += ccount_stat;
- nc += ncover_stat;
- }
-#endif
- }
-#ifdef STATS
- if (verbose > 0)
- printf("\n total: (%dt %du %dc)\n", nt, cc, nc);
- if (verbose >= 0)
- time_end();
-#endif
-}
-
-cc_compress_cleanup(output, bufsize)
- register struct cc **output;
-{
- register struct cc **end;
-
- /* the previous output phase may have been interrupted */
- qinsertq(&cc_q0b, &cc_q0a);
- for (end = output + bufsize; output < end;) {
- register struct cc *p;
- register length;
- if ((p = *output) == 0) {
- output++;
- continue;
- }
- length = p->length;
- if (!p->flag) {
- } else if (p->code >= 0) {
- qinsert(p, &cc_q0b);
- p->flag = 0;
- } else if (p->ccount == 0) {
- *output = 0;
- } else if (p->ccount >= thresh(length)
-#ifndef cc_weight
- || wthreshp(p->weight, length)
-#endif
- ) {
- p->flag = 0;
- } else {
- p->ccount = 0;
- *output = 0;
- }
- output += length;
- }
-}
-
-cc_compress(output, tokens, flag)
- struct cc **output;
- struct cc **tokens;
- char flag;
-{
- struct cc **pp = tokens;
- register struct cc *p = *pp++;
- int length = p->length;
- int threshold = thresh(length);
-#ifndef cc_weight
- short wthreshold = wthresh(length);
-#endif
- short *places = cc_places[length];
- int *initial_scores = cc_initial_scores[length];
- int initial_score0 = put_token_score(length);
-
- do {
- int score;
- register struct cc_undo *undop;
- int ccount;
-#ifdef STATS
- int ncover;
-#endif
- int i;
-
- ccount = p->ccount;
- if ((short) ccount >= p->bcount)
- continue;
- if (p->code >= 0 || ccount >= threshold)
- score = 0;
-#ifndef cc_weight
- else if (p->weight >= wthreshold)
- /* allow one fewer match than normal */
- /* XXX, should adjust for ccount */
- score = - tt.tt_set_token_cost;
-#endif
- else
- score = initial_scores[ccount];
- undop = cc_undo;
-#ifdef STATS
- ncover = 0;
-#endif
- for (i = p->places; i >= 0; i = places[i]) {
- register struct cc **jp;
- register struct cc *x;
- register struct cc **ip = output + i;
- register score0 = initial_score0;
- struct cc **iip = ip + length;
- struct cc_undo *undop1 = undop;
-
- if ((x = *(jp = ip)) != 0)
- goto z;
- while (--jp >= output)
- if ((x = *jp) != 0) {
- if (jp + x->length > ip)
- goto z;
- break;
- }
- jp = ip + 1;
- while (jp < iip) {
- if ((x = *jp) == 0) {
- jp++;
- continue;
- }
- z:
- if (x == p)
- goto undo;
-#ifdef STATS
- ncover++;
-#endif
- undop->pos = jp;
- undop->val = x;
- undop++;
- *jp = 0;
- x->ccount--;
- score_adjust(score0, x);
- if (score0 < 0 && flag)
- goto undo;
- jp += x->length;
- }
- undop->pos = ip;
- undop->val = 0;
- undop++;
- *ip = p;
- ccount++;
- score += score0;
- continue;
- undo:
- while (--undop >= undop1)
- if (*undop->pos = x = undop->val)
- x->ccount++;
- undop++;
- }
- if (score > 0) {
-#ifdef STATS
- ccount_stat += ccount - p->ccount;
- ntoken_stat++;
- ncover_stat += ncover;
-#endif
- p->ccount = ccount;
- } else {
- register struct cc_undo *u = cc_undo;
- while (--undop >= u) {
- register struct cc *x;
- if (*undop->pos = x = undop->val)
- x->ccount++;
- }
- }
- } while ((p = *pp++) != 0);
- return pp - tokens;
-}
-
-cc_output_phase(buffer, output, bufsize)
- register char *buffer;
- register struct cc **output;
- register bufsize;
-{
- register i;
- register struct cc *p, *p1;
-
- for (i = 0; i < bufsize;) {
- if ((p = output[i]) == 0) {
- ttputc(buffer[i]);
- i++;
- } else if (p->code >= 0) {
- if (--p->ccount == 0)
- qinsert(p, &cc_q0a);
- (*tt.tt_put_token)(p->code, p->string, p->length);
- wwntokuse++;
- wwntoksave += put_token_score(p->length);
- i += p->length;
- } else if ((p1 = cc_q0a.qback) != &cc_q0a) {
- p->code = p1->code;
- p1->code = -1;
- qinsert(p1, &cc_q1a);
- if (--p->ccount == 0)
- qinsert(p, &cc_q0a);
- else
- qinsert(p, &cc_q0b);
- (*tt.tt_set_token)(p->code, p->string, p->length);
- wwntokdef++;
- wwntoksave -= tt.tt_set_token_cost;
- i += p->length;
- } else {
- p->ccount--;
- ttwrite(p->string, p->length);
- wwntokbad++;
- i += p->length;
- }
- }
- wwntokc += bufsize;
-}
-
-cc_token_compare(p1, p2)
- struct cc **p1, **p2;
-{
- return (*p2)->bcount - (*p1)->bcount;
-}
diff --git a/usr.bin/window/context.c b/usr.bin/window/context.c
deleted file mode 100644
index 3f35285..0000000
--- a/usr.bin/window/context.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)context.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "value.h"
-#include "mystring.h"
-#include "context.h"
-#include <fcntl.h>
-#include <stdlib.h>
-
-/*
- * Context push/pop for nested command files.
- */
-
-cx_alloc()
-{
- register struct context *xp;
-
- if (cx.x_type != 0) {
- xp = (struct context *)
- malloc((unsigned) sizeof (struct context));
- if (xp == 0)
- return -1;
- *xp = cx;
- cx.x_link = xp;
- cx.x_type = 0;
- }
- cx.x_erred = 0;
- cx.x_synerred = 0;
- cx.x_abort = 0;
- return 0;
-}
-
-cx_free()
-{
- struct context *xp;
-
- if ((xp = cx.x_link) != 0) {
- cx = *xp;
- free((char *)xp);
- } else
- cx.x_type = 0;
-}
-
-cx_beginfile(filename)
-char *filename;
-{
- if (cx_alloc() < 0)
- return -1;
- cx.x_type = X_FILE;
- if ((cx.x_filename = str_cpy(filename)) == 0)
- goto bad;
- cx.x_fp = fopen(filename, "r");
- if (cx.x_fp == 0)
- goto bad;
- (void) fcntl(fileno(cx.x_fp), F_SETFD, 1);
- cx.x_bol = 1;
- cx.x_lineno = 0;
- cx.x_errwin = 0;
- cx.x_noerr = 0;
- return 0;
-bad:
- if (cx.x_filename != 0)
- str_free(cx.x_filename);
- cx_free();
- return -1;
-}
-
-cx_beginbuf(buf, arg, narg)
-char *buf;
-struct value *arg;
-int narg;
-{
- if (cx_alloc() < 0)
- return -1;
- cx.x_type = X_BUF;
- cx.x_bufp = cx.x_buf = buf;
- cx.x_arg = arg;
- cx.x_narg = narg;
- return 0;
-}
-
-cx_end()
-{
- switch (cx.x_type) {
- case X_BUF:
- break;
- case X_FILE:
- (void) fclose(cx.x_fp);
- str_free(cx.x_filename);
- break;
- }
- cx_free();
-}
diff --git a/usr.bin/window/context.h b/usr.bin/window/context.h
deleted file mode 100644
index df82b27..0000000
--- a/usr.bin/window/context.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)context.h 8.1 (Berkeley) 6/6/93
- * $FreeBSD$
- */
-
-#include <stdio.h>
-
-struct context {
- struct context *x_link; /* nested contexts */
- char x_type; /* tag for union */
- union {
- struct { /* input is a file */
- char *X_filename; /* input file name */
- FILE *X_fp; /* input stream */
- short X_lineno; /* current line number */
- char X_bol; /* at beginning of line */
- char X_noerr; /* don't report errors */
- struct ww *X_errwin; /* error window */
- } x_f;
- struct { /* input is a buffer */
- char *X_buf; /* input buffer */
- char *X_bufp; /* current position in buf */
- struct value *X_arg; /* argument for alias */
- int X_narg; /* number of arguments */
- } x_b;
- } x_un;
- /* holding place for current token */
- int x_token; /* the token */
- struct value x_val; /* values associated with token */
- /* parser error flags */
- unsigned x_erred :1; /* had an error */
- unsigned x_synerred :1; /* had syntax error */
- unsigned x_abort :1; /* fatal error */
-};
-#define x_buf x_un.x_b.X_buf
-#define x_bufp x_un.x_b.X_bufp
-#define x_arg x_un.x_b.X_arg
-#define x_narg x_un.x_b.X_narg
-#define x_filename x_un.x_f.X_filename
-#define x_fp x_un.x_f.X_fp
-#define x_lineno x_un.x_f.X_lineno
-#define x_bol x_un.x_f.X_bol
-#define x_errwin x_un.x_f.X_errwin
-#define x_noerr x_un.x_f.X_noerr
-
- /* x_type values, 0 is reserved */
-#define X_FILE 1 /* input is a file */
-#define X_BUF 2 /* input is a buffer */
-
-struct context cx; /* the current context */
diff --git a/usr.bin/window/defs.h b/usr.bin/window/defs.h
deleted file mode 100644
index 6601e5d..0000000
--- a/usr.bin/window/defs.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)defs.h 8.1 (Berkeley) 6/6/93
- * $FreeBSD$
- */
-
-#include "ww.h"
-#include <sys/time.h>
-
-#define NWINDOW 9
-
-struct timeval starttime;
-
-struct ww *window[NWINDOW]; /* the windows */
-struct ww *selwin; /* the selected window */
-struct ww *lastselwin; /* the last selected window */
-struct ww *cmdwin; /* the command window */
-struct ww *framewin; /* the window for framing */
-struct ww *boxwin; /* the window for the box */
-struct ww *fgwin; /* the last foreground window */
-
-#define isfg(w) ((w)->ww_order <= fgwin->ww_order)
-
-char *default_shell[128]; /* default shell argv */
-char *default_shellfile; /* default shell program */
-int default_nline; /* default buffer size for new windows */
-int default_smooth; /* default "smooth" parameter */
-char escapec; /* the escape character */
-
- /* flags */
-char quit; /* quit command issued */
-char terse; /* terse mode */
-char debug; /* debug mode */
-char incmd; /* in command mode */
-
-struct ww *getwin();
-struct ww *openwin();
-struct ww *vtowin();
-struct ww *openiwin();
diff --git a/usr.bin/window/error.c b/usr.bin/window/error.c
deleted file mode 100644
index 7e759c1..0000000
--- a/usr.bin/window/error.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)error.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "defs.h"
-#include "value.h"
-#include "context.h"
-#include "char.h"
-
-#define ERRLINES 10 /* number of lines for errwin */
-
-/*VARARGS1*/
-error(fmt, a, b, c, d, e, f, g, h)
-char *fmt;
-{
- register struct context *x;
- register struct ww *w;
-
- for (x = &cx; x != 0 && x->x_type != X_FILE; x = x->x_link)
- ;
- if (x == 0) {
- if (terse)
- wwbell();
- else {
- wwprintf(cmdwin, fmt, a, b, c, d, e, f, g, h);
- wwputs(" ", cmdwin);
- }
- return;
- }
- if (x->x_noerr)
- return;
- if ((w = x->x_errwin) == 0) {
- char buf[512];
-
- (void) sprintf(buf, "Errors from %s", x->x_filename);
- if ((w = x->x_errwin = openiwin(ERRLINES, buf)) == 0) {
- wwputs("Can't open error window. ", cmdwin);
- x->x_noerr = 1;
- return;
- }
- }
- if (more(w, 0) == 2) {
- x->x_noerr = 1;
- return;
- }
- wwprintf(w, "line %d: ", x->x_lineno);
- wwprintf(w, fmt, a, b, c, d, e, f, g, h);
- wwputc('\n', w);
-}
-
-err_end()
-{
- if (cx.x_type == X_FILE && cx.x_errwin != 0) {
- if (!cx.x_noerr)
- waitnl(cx.x_errwin);
- closeiwin(cx.x_errwin);
- cx.x_errwin = 0;
- }
-}
diff --git a/usr.bin/window/lcmd.c b/usr.bin/window/lcmd.c
deleted file mode 100644
index 85a5489..0000000
--- a/usr.bin/window/lcmd.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)lcmd.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "defs.h"
-#include "value.h"
-#include "lcmd.h"
-
-int l_alias();
-int l_close();
-int l_cursormodes();
-int l_debug();
-int l_def_nline();
-int l_def_shell();
-int l_def_smooth();
-int l_echo();
-int l_escape();
-int l_foreground();
-int l_iostat();
-int l_label();
-int l_list();
-int l_select();
-int l_smooth();
-int l_source();
-int l_terse();
-int l_time();
-int l_unalias();
-int l_unset();
-int l_variable();
-int l_window();
-int l_write();
-
-extern struct lcmd_arg arg_alias[];
-extern struct lcmd_arg arg_cursormodes[];
-extern struct lcmd_arg arg_debug[];
-extern struct lcmd_arg arg_echo[];
-extern struct lcmd_arg arg_escape[];
-extern struct lcmd_arg arg_foreground[];
-extern struct lcmd_arg arg_label[];
-extern struct lcmd_arg arg_def_nline[];
-extern struct lcmd_arg arg_def_shell[];
-extern struct lcmd_arg arg_def_smooth[];
-extern struct lcmd_arg arg_close[];
-extern struct lcmd_arg arg_select[];
-extern struct lcmd_arg arg_smooth[];
-extern struct lcmd_arg arg_source[];
-extern struct lcmd_arg arg_terse[];
-extern struct lcmd_arg arg_time[];
-extern struct lcmd_arg arg_unalias[];
-extern struct lcmd_arg arg_unset[];
-extern struct lcmd_arg arg_window[];
-extern struct lcmd_arg arg_write[];
-struct lcmd_arg arg_null[1] = { { 0 } };
-
-struct lcmd_tab lcmd_tab[] = {
- "alias", 1, l_alias, arg_alias,
- "close", 2, l_close, arg_close,
- "cursormodes", 2, l_cursormodes, arg_cursormodes,
- "debug", 1, l_debug, arg_debug,
- "default_nlines", 9, l_def_nline, arg_def_nline,
- "default_shell", 10, l_def_shell, arg_def_shell,
- "default_smooth", 10, l_def_smooth, arg_def_smooth,
- "echo", 2, l_echo, arg_echo,
- "escape", 2, l_escape, arg_escape,
- "foreground", 1, l_foreground, arg_foreground,
- "iostat", 1, l_iostat, arg_null,
- "label", 2, l_label, arg_label,
- "list", 2, l_list, arg_null,
- "nlines", 1, l_def_nline, arg_def_nline,
- "select", 2, l_select, arg_select,
- "shell", 2, l_def_shell, arg_def_shell,
- "smooth", 2, l_smooth, arg_smooth,
- "source", 2, l_source, arg_source,
- "terse", 2, l_terse, arg_terse,
- "time", 2, l_time, arg_time,
- "unalias", 3, l_unalias, arg_unalias,
- "unset", 3, l_unset, arg_unset,
- "variable", 1, l_variable, arg_null,
- "window", 2, l_window, arg_window,
- "write", 2, l_write, arg_write,
- 0
-};
-
-struct lcmd_tab *
-lcmd_lookup(name)
-char *name;
-{
- register struct lcmd_tab *p;
-
- for (p = lcmd_tab; p->lc_name != 0; p++)
- if (str_match(name, p->lc_name, p->lc_minlen))
- return p;
- return 0;
-}
-
-dosource(filename)
-char *filename;
-{
- if (cx_beginfile(filename) < 0)
- return -1;
- p_start();
- err_end();
- cx_end();
- return 0;
-}
-
-dolongcmd(buffer, arg, narg)
-char *buffer;
-struct value *arg;
-int narg;
-{
- if (cx_beginbuf(buffer, arg, narg) < 0)
- return -1;
- p_start();
- err_end();
- cx_end();
- return 0;
-}
diff --git a/usr.bin/window/lcmd.h b/usr.bin/window/lcmd.h
deleted file mode 100644
index 6c58e2d..0000000
--- a/usr.bin/window/lcmd.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)lcmd.h 8.1 (Berkeley) 6/6/93
- * $FreeBSD$
- */
-
-#define LCMD_NARG 20 /* maximum number of arguments */
-
-struct lcmd_tab {
- char *lc_name;
- int lc_minlen;
- int (*lc_func)();
- struct lcmd_arg *lc_arg;
-};
-
-struct lcmd_arg {
- char *arg_name;
- int arg_minlen;
- int arg_flags;
-};
-
- /* arg_flags bits */
-#define ARG_TYPE 0x0f /* type of arg */
-#define ARG_ANY 0x00 /* any type */
-#define ARG_NUM 0x01 /* must be a number */
-#define ARG_STR 0x02 /* must be a string */
-#define ARG_LIST 0x10 /* this arg can be a list */
-
-struct lcmd_tab *lcmd_lookup();
diff --git a/usr.bin/window/lcmd1.c b/usr.bin/window/lcmd1.c
deleted file mode 100644
index b63151c..0000000
--- a/usr.bin/window/lcmd1.c
+++ /dev/null
@@ -1,433 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)lcmd1.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "defs.h"
-#include <string.h> /* System string definitions. */
-#include "mystring.h" /* Local string definitions. */
-#include "value.h"
-#include "lcmd.h"
-#include "var.h"
-#include <stdio.h>
-
-struct lcmd_arg arg_window[] = {
- { "row", 1, ARG_NUM },
- { "column", 1, ARG_NUM },
- { "nrows", 2, ARG_NUM },
- { "ncols", 2, ARG_NUM },
- { "nlines", 2, ARG_NUM },
- { "label", 1, ARG_STR },
- { "pty", 1, ARG_ANY },
- { "frame", 1, ARG_ANY },
- { "mapnl", 1, ARG_ANY },
- { "keepopen", 1, ARG_ANY },
- { "smooth", 1, ARG_ANY },
- { "shell", 1, ARG_STR|ARG_LIST },
- 0
-};
-
-l_window(v, a)
-struct value *v;
-register struct value *a;
-{
- struct ww *w;
- int col, row, ncol, nrow, id, nline;
- char *label;
- char haspty, hasframe, mapnl, keepopen, smooth;
- char *shf, **sh;
- char *argv[sizeof default_shell / sizeof *default_shell];
- register char **pp;
-
- if ((id = findid()) < 0)
- return;
- row = a->v_type == V_ERR ? 1 : a->v_num;
- a++;
- col = a->v_type == V_ERR ? 0 : a->v_num;
- a++;
- nrow = a->v_type == V_ERR ? wwnrow - row : a->v_num;
- a++;
- ncol = a->v_type == V_ERR ? wwncol - col : a->v_num;
- a++;
- nline = a->v_type == V_ERR ? default_nline : a->v_num;
- a++;
- label = a->v_type == V_ERR ? 0 : a->v_str;
- if ((haspty = vtobool(++a, 1, -1)) < 0)
- return;
- if ((hasframe = vtobool(++a, 1, -1)) < 0)
- return;
- if ((mapnl = vtobool(++a, !haspty, -1)) < 0)
- return;
- if ((keepopen = vtobool(++a, 0, -1)) < 0)
- return;
- if ((smooth = vtobool(++a, default_smooth, -1)) < 0)
- return;
- if ((++a)->v_type != V_ERR) {
- for (pp = argv; a->v_type != V_ERR &&
- pp < &argv[sizeof argv/sizeof *argv-1]; pp++, a++)
- *pp = a->v_str;
- *pp = 0;
- shf = *(sh = argv);
- if (*sh = rindex(shf, '/'))
- (*sh)++;
- else
- *sh = shf;
- } else {
- sh = default_shell;
- shf = default_shellfile;
- }
- if ((w = openwin(id, row, col, nrow, ncol, nline, label, haspty,
- hasframe, shf, sh)) == 0)
- return;
- w->ww_mapnl = mapnl;
- w->ww_keepopen = keepopen;
- w->ww_noupdate = !smooth;
- v->v_type = V_NUM;
- v->v_num = id + 1;
-}
-
-struct lcmd_arg arg_def_nline[] = {
- { "nlines", 1, ARG_NUM },
- 0
-};
-
-l_def_nline(v, a)
-register struct value *v, *a;
-{
- v->v_num = default_nline;
- v->v_type = V_NUM;
- if (a->v_type != V_ERR)
- default_nline = a->v_num;
-}
-
-struct lcmd_arg arg_smooth[] = {
- { "window", 1, ARG_NUM },
- { "flag", 1, ARG_ANY },
- 0
-};
-
-l_smooth(v, a)
-register struct value *v, *a;
-{
- struct ww *w;
-
- v->v_type = V_NUM;
- v->v_num = 0;
- if ((w = vtowin(a++, selwin)) == 0)
- return;
- v->v_num = !w->ww_noupdate;
- w->ww_noupdate = !vtobool(a, v->v_num, v->v_num);
-}
-
-struct lcmd_arg arg_def_smooth[] = {
- { "flag", 1, ARG_ANY },
- 0
-};
-
-l_def_smooth(v, a)
-register struct value *v, *a;
-{
- v->v_type = V_NUM;
- v->v_num = default_smooth;
- default_smooth = vtobool(a, v->v_num, v->v_num);
-}
-
-struct lcmd_arg arg_select[] = {
- { "window", 1, ARG_NUM },
- 0
-};
-
-l_select(v, a)
-register struct value *v, *a;
-{
- struct ww *w;
-
- v->v_type = V_NUM;
- v->v_num = selwin ? selwin->ww_id + 1 : -1;
- if (a->v_type == V_ERR)
- return;
- if ((w = vtowin(a, (struct ww *)0)) == 0)
- return;
- setselwin(w);
-}
-
-struct lcmd_arg arg_debug[] = {
- { "flag", 1, ARG_ANY },
- 0
-};
-
-l_debug(v, a)
-register struct value *v, *a;
-{
- v->v_type = V_NUM;
- v->v_num = debug;
- debug = vtobool(a, debug, debug);
-}
-
-struct lcmd_arg arg_escape[] = {
- { "escapec", 1, ARG_STR },
- 0
-};
-
-l_escape(v, a)
-register struct value *v, *a;
-{
- char buf[2];
-
- buf[0] = escapec;
- buf[1] = 0;
- if ((v->v_str = str_cpy(buf)) == 0) {
- error("Out of memory.");
- return;
- }
- v->v_type = V_STR;
- if (a->v_type != V_ERR)
- setescape(a->v_str);
-}
-
-struct lcmd_arg arg_label[] = {
- { "window", 1, ARG_NUM },
- { "label", 1, ARG_STR },
- 0
-};
-
-/*ARGSUSED*/
-l_label(v, a)
-struct value *v;
-register struct value *a;
-{
- struct ww *w;
-
- if ((w = vtowin(a, selwin)) == 0)
- return;
- if ((++a)->v_type != V_ERR && setlabel(w, a->v_str) < 0)
- error("Out of memory.");
- reframe();
-}
-
-struct lcmd_arg arg_foreground[] = {
- { "window", 1, ARG_NUM },
- { "flag", 1, ARG_ANY },
- 0
-};
-
-l_foreground(v, a)
-register struct value *v, *a;
-{
- struct ww *w;
- char flag;
-
- if ((w = vtowin(a, selwin)) == 0)
- return;
- v->v_type = V_NUM;
- v->v_num = isfg(w);
- flag = vtobool(++a, v->v_num, v->v_num);
- if (flag == v->v_num)
- return;
- deletewin(w);
- addwin(w, flag);
- reframe();
-}
-
-struct lcmd_arg arg_terse[] = {
- { "flag", 1, ARG_ANY },
- 0
-};
-
-l_terse(v, a)
-register struct value *v, *a;
-{
- v->v_type = V_NUM;
- v->v_num = terse;
- setterse(vtobool(a, terse, terse));
-}
-
-struct lcmd_arg arg_source[] = {
- { "filename", 1, ARG_STR },
- 0
-};
-
-l_source(v, a)
-register struct value *v, *a;
-{
- v->v_type = V_NUM;
- if (a->v_type != V_ERR && dosource(a->v_str) < 0) {
- error("Can't open %s.", a->v_str);
- v->v_num = -1;
- } else
- v->v_num = 0;
-}
-
-struct lcmd_arg arg_write[] = {
- { "window", 1, ARG_NUM },
- { "", 0, ARG_ANY|ARG_LIST },
- 0
-};
-
-/*ARGSUSED*/
-l_write(v, a)
-struct value *v;
-register struct value *a;
-{
- char buf[20];
- struct ww *w;
-
- if ((w = vtowin(a++, selwin)) == 0)
- return;
- while (a->v_type != V_ERR) {
- if (a->v_type == V_NUM) {
- (void) sprintf(buf, "%d", a->v_num);
- (void) write(w->ww_pty, buf, strlen(buf));
- } else
- (void) write(w->ww_pty, a->v_str, strlen(a->v_str));
- if ((++a)->v_type != V_ERR)
- (void) write(w->ww_pty, " ", 1);
- }
-}
-
-struct lcmd_arg arg_close[] = {
- { "window", 1, ARG_ANY|ARG_LIST },
- 0
-};
-
-/*ARGSUSED*/
-l_close(v, a)
-struct value *v;
-register struct value *a;
-{
- struct ww *w;
-
- if (a->v_type == V_STR && str_match(a->v_str, "all", 3))
- closewin((struct ww *)0);
- else
- for (; a->v_type != V_ERR; a++)
- if ((w = vtowin(a, (struct ww *)0)) != 0)
- closewin(w);
-}
-
-struct lcmd_arg arg_cursormodes[] = {
- { "modes", 1, ARG_NUM },
- 0
-};
-
-l_cursormodes(v, a)
-register struct value *v, *a;
-{
-
- v->v_type = V_NUM;
- v->v_num = wwcursormodes;
- if (a->v_type != V_ERR)
- wwsetcursormodes(a->v_num);
-}
-
-struct lcmd_arg arg_unset[] = {
- { "variable", 1, ARG_ANY },
- 0
-};
-
-l_unset(v, a)
-register struct value *v, *a;
-{
- v->v_type = V_NUM;
- switch (a->v_type) {
- case V_ERR:
- v->v_num = -1;
- return;
- case V_NUM:
- if ((a->v_str = str_itoa(a->v_num)) == 0) {
- error("Out of memory.");
- v->v_num = -1;
- return;
- }
- a->v_type = V_STR;
- break;
- }
- v->v_num = var_unset(a->v_str);
-}
-
-struct ww *
-vtowin(v, w)
-register struct value *v;
-struct ww *w;
-{
- switch (v->v_type) {
- case V_ERR:
- if (w != 0)
- return w;
- error("No window specified.");
- return 0;
- case V_STR:
- error("%s: No such window.", v->v_str);
- return 0;
- }
- if (v->v_num < 1 || v->v_num > NWINDOW
- || (w = window[v->v_num - 1]) == 0) {
- error("%d: No such window.", v->v_num);
- return 0;
- }
- return w;
-}
-
-vtobool(v, def, err)
-register struct value *v;
-char def, err;
-{
- switch (v->v_type) {
- case V_NUM:
- return v->v_num != 0;
- case V_STR:
- if (str_match(v->v_str, "true", 1)
- || str_match(v->v_str, "on", 2)
- || str_match(v->v_str, "yes", 1))
- return 1;
- else if (str_match(v->v_str, "false", 1)
- || str_match(v->v_str, "off", 2)
- || str_match(v->v_str, "no", 1))
- return 0;
- else {
- error("%s: Illegal boolean value.", v->v_str);
- return err;
- }
- /*NOTREACHED*/
- case V_ERR:
- return def;
- }
- /*NOTREACHED*/
-}
diff --git a/usr.bin/window/lcmd2.c b/usr.bin/window/lcmd2.c
deleted file mode 100644
index 3d87060..0000000
--- a/usr.bin/window/lcmd2.c
+++ /dev/null
@@ -1,404 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#if 0
-#ifndef lint
-static char sccsid[] = "@(#)lcmd2.c 8.1 (Berkeley) 6/6/93";
-#endif /* not lint */
-#endif
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include "defs.h"
-#include <string.h> /* System string definitions. */
-#include "mystring.h" /* Local string definitions. */
-#include "value.h"
-#include "var.h"
-#include "lcmd.h"
-#include "alias.h"
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/resource.h>
-
-/*ARGSUSED*/
-l_iostat(v, a)
-struct value *v, *a;
-{
- register struct ww *w;
-
- if ((w = openiwin(16, "IO Statistics")) == 0) {
- error("Can't open statistics window: %s.", wwerror());
- return;
- }
- wwprintf(w, "ttflush\twrite\terror\tzero\tchar\n");
- wwprintf(w, "%d\t%d\t%d\t%d\t%d\n",
- wwnflush, wwnwr, wwnwre, wwnwrz, wwnwrc);
- wwprintf(w, "token\tuse\tbad\tsaving\ttotal\tbaud\n");
- wwprintf(w, "%d\t%d\t%d\t%d\t%d\t%d/%d (%.1f/%.1f)\n",
- wwntokdef, wwntokuse, wwntokbad, wwntoksave, wwntokc,
- wwntokc - wwntoksave ?
- (int) ((float) wwbaud * wwntokc /
- (wwntokc - wwntoksave)) :
- wwbaud,
- wwnwrc ? (int) ((float) wwbaud * (wwnwrc + wwntoksave) /
- wwnwrc) :
- wwbaud,
- wwntokc - wwntoksave ?
- (float) wwntokc / (wwntokc - wwntoksave) : 1.0,
- wwnwrc ? (float) (wwnwrc + wwntoksave) / wwnwrc : 1.0);
- wwprintf(w, "wwwrite\tattempt\tchar\n");
- wwprintf(w, "%d\t%d\t%d\n",
- wwnwwr, wwnwwra, wwnwwrc);
- wwprintf(w, "wwupdat\tline\tmiss\tscan\tclreol\tclreos\tmiss\tline\n");
- wwprintf(w, "%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n",
- wwnupdate, wwnupdline, wwnupdmiss, wwnupdscan, wwnupdclreol,
- wwnupdclreos, wwnupdclreosmiss, wwnupdclreosline);
- wwprintf(w, "select\terror\tzero\n");
- wwprintf(w, "%d\t%d\t%d\n",
- wwnselect, wwnselecte, wwnselectz);
- wwprintf(w, "read\terror\tzero\tchar\tack\tnack\tstat\terrorc\n");
- wwprintf(w, "%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n",
- wwnread, wwnreade, wwnreadz, wwnreadc, wwnreadack, wwnreadnack,
- wwnreadstat, wwnreadec);
- wwprintf(w, "ptyread\terror\tzero\tcontrol\tdata\tchar\n");
- wwprintf(w, "%d\t%d\t%d\t%d\t%d\t%d\n",
- wwnwread, wwnwreade, wwnwreadz,
- wwnwreadp, wwnwreadd, wwnwreadc);
- waitnl(w);
- closeiwin(w);
-}
-
-struct lcmd_arg arg_time[] = {
- { "who", 1, ARG_STR },
- 0
-};
-
-/*ARGSUSED*/
-l_time(v, a)
-struct value *v;
-register struct value *a;
-{
- register struct ww *w;
- struct rusage rusage;
- struct timeval timeval;
- char *strtime();
-
- if ((w = openiwin(8, "Timing and Resource Usage")) == 0) {
- error("Can't open time window: %s.", wwerror());
- return;
- }
-
- (void) gettimeofday(&timeval, (struct timezone *)0);
- timeval.tv_sec -= starttime.tv_sec;
- if ((timeval.tv_usec -= starttime.tv_usec) < 0) {
- timeval.tv_sec--;
- timeval.tv_usec += 1000000;
- }
- (void) getrusage(a->v_type == V_STR
- && str_match(a->v_str, "children", 1)
- ? RUSAGE_CHILDREN : RUSAGE_SELF, &rusage);
-
- wwprintf(w, "%-15s %-15s %-15s\n",
- "time", "utime", "stime");
- wwprintf(w, "%-15s ", strtime(&timeval));
- wwprintf(w, "%-15s ", strtime(&rusage.ru_utime));
- wwprintf(w, "%-15s\n", strtime(&rusage.ru_stime));
- wwprintf(w, "%-15s %-15s %-15s %-15s\n",
- "maxrss", "ixrss", "idrss", "isrss");
- wwprintf(w, "%-15ld %-15ld %-15ld %-15ld\n",
- rusage.ru_maxrss, rusage.ru_ixrss,
- rusage.ru_idrss, rusage.ru_isrss);
- wwprintf(w, "%-7s %-7s %-7s %-7s %-7s %-7s %-7s %-7s %-7s %-7s\n",
- "minflt", "majflt", "nswap", "inblk", "oublk",
- "msgsnd", "msgrcv", "nsigs", "nvcsw", "nivcsw");
- wwprintf(w, "%-7ld %-7ld %-7ld %-7ld %-7ld %-7ld %-7ld %-7ld %-7ld %-7ld\n",
- rusage.ru_minflt, rusage.ru_majflt, rusage.ru_nswap,
- rusage.ru_inblock, rusage.ru_oublock,
- rusage.ru_msgsnd, rusage.ru_msgrcv, rusage.ru_nsignals,
- rusage.ru_nvcsw, rusage.ru_nivcsw);
-
- waitnl(w);
- closeiwin(w);
-}
-
-char *
-strtime(t)
-register struct timeval *t;
-{
- char fill = 0;
- static char buf[20];
- register char *p = buf;
-
- if (t->tv_sec > 60*60) {
- (void) sprintf(p, "%ld:", t->tv_sec / (60*60));
- while (*p++)
- ;
- p--;
- t->tv_sec %= 60*60;
- fill++;
- }
- if (t->tv_sec > 60) {
- (void) sprintf(p, fill ? "%02ld:" : "%ld:", t->tv_sec / 60);
- while (*p++)
- ;
- p--;
- t->tv_sec %= 60;
- fill++;
- }
- (void) sprintf(p, fill ? "%02ld.%02ld" : "%ld.%02ld",
- t->tv_sec, t->tv_usec / 10000);
- return buf;
-}
-
-/*ARGSUSED*/
-l_list(v, a)
-struct value *v, *a;
-{
- register struct ww *w, *wp;
- register i;
- int n;
-
- for (n = 0, i = 0; i < NWINDOW; i++)
- if (window[i] != 0)
- n++;
- if (n == 0) {
- error("No windows.");
- return;
- }
- if ((w = openiwin(n + 2, "Windows")) == 0) {
- error("Can't open listing window: %s.", wwerror());
- return;
- }
- for (i = 0; i < NWINDOW; i++) {
- if ((wp = window[i]) == 0)
- continue;
- wwprintf(w, "%c %c %-13s %-.*s\n",
- wp == selwin ? '+' : (wp == lastselwin ? '-' : ' '),
- i + '1',
- wp->ww_state == WWS_HASPROC ? "" : "(No process)",
- wwncol - 20,
- wp->ww_label ? wp->ww_label : "(No label)");
- }
- waitnl(w);
- closeiwin(w);
-}
-
-/*ARGSUSED*/
-l_variable(v, a)
-struct value *v, *a;
-{
- register struct ww *w;
- int printvar();
-
- if ((w = openiwin(wwnrow - 3, "Variables")) == 0) {
- error("Can't open variable window: %s.", wwerror());
- return;
- }
- if (var_walk(printvar, (long)w) >= 0)
- waitnl(w);
- closeiwin(w);
-}
-
-printvar(w, r)
-register struct ww *w;
-register struct var *r;
-{
- if (more(w, 0) == 2)
- return -1;
- wwprintf(w, "%16s ", r->r_name);
- switch (r->r_val.v_type) {
- case V_STR:
- wwprintf(w, "%s\n", r->r_val.v_str);
- break;
- case V_NUM:
- wwprintf(w, "%d\n", r->r_val.v_num);
- break;
- case V_ERR:
- wwprintf(w, "ERROR\n");
- break;
- }
- return 0;
-}
-
-struct lcmd_arg arg_def_shell[] = {
- { "", 0, ARG_ANY|ARG_LIST },
- 0
-};
-
-l_def_shell(v, a)
- struct value *v, *a;
-{
- register char **pp;
- register struct value *vp;
-
- if (a->v_type == V_ERR) {
- if ((v->v_str = str_cpy(default_shellfile)) != 0)
- v->v_type = V_STR;
- return;
- }
- if (v->v_str = default_shellfile) {
- v->v_type = V_STR;
- for (pp = default_shell + 1; *pp; pp++) {
- str_free(*pp);
- *pp = 0;
- }
- }
- for (pp = default_shell, vp = a;
- vp->v_type != V_ERR &&
- pp < &default_shell[sizeof default_shell/sizeof *default_shell-1];
- pp++, vp++)
- if ((*pp = vp->v_type == V_STR ?
- str_cpy(vp->v_str) : str_itoa(vp->v_num)) == 0) {
- /* just leave default_shell[] the way it is */
- p_memerror();
- break;
- }
- if (default_shellfile = *default_shell)
- if (*default_shell = rindex(default_shellfile, '/'))
- (*default_shell)++;
- else
- *default_shell = default_shellfile;
-}
-
-struct lcmd_arg arg_alias[] = {
- { "", 0, ARG_STR },
- { "", 0, ARG_STR|ARG_LIST },
- 0
-};
-
-l_alias(v, a)
- struct value *v, *a;
-{
- if (a->v_type == V_ERR) {
- register struct ww *w;
- int printalias();
-
- if ((w = openiwin(wwnrow - 3, "Aliases")) == 0) {
- error("Can't open alias window: %s.", wwerror());
- return;
- }
- if (alias_walk(printalias, (long)w) >= 0)
- waitnl(w);
- closeiwin(w);
- } else {
- register struct alias *ap = 0;
-
- if (ap = alias_lookup(a->v_str)) {
- if ((v->v_str = str_cpy(ap->a_buf)) == 0) {
- p_memerror();
- return;
- }
- v->v_type = V_STR;
- }
- if (a[1].v_type == V_STR) {
- register struct value *vp;
- register char *p, *q;
- char *str;
- register n;
-
- for (n = 0, vp = a + 1; vp->v_type != V_ERR; vp++, n++)
- for (p = vp->v_str; *p; p++, n++)
- ;
- if ((str = str_alloc(n)) == 0) {
- p_memerror();
- return;
- }
- for (q = str, vp = a + 1; vp->v_type != V_ERR;
- vp++, q[-1] = ' ')
- for (p = vp->v_str; *q++ = *p++;)
- ;
- q[-1] = 0;
- if ((ap = alias_set(a[0].v_str, (char *)0)) == 0) {
- p_memerror();
- str_free(str);
- return;
- }
- ap->a_buf = str;
- }
- }
-}
-
-printalias(w, a)
-register struct ww *w;
-register struct alias *a;
-{
- if (more(w, 0) == 2)
- return -1;
- wwprintf(w, "%16s %s\n", a->a_name, a->a_buf);
- return 0;
-}
-
-struct lcmd_arg arg_unalias[] = {
- { "alias", 1, ARG_STR },
- 0
-};
-
-l_unalias(v, a)
-struct value *v, *a;
-{
- if (a->v_type == ARG_STR)
- v->v_num = alias_unset(a->v_str);
- v->v_type = V_NUM;
-}
-
-struct lcmd_arg arg_echo[] = {
- { "window", 1, ARG_NUM },
- { "", 0, ARG_ANY|ARG_LIST },
- 0
-};
-
-/*ARGSUSED*/
-l_echo(v, a)
-struct value *v;
-register struct value *a;
-{
- char buf[20];
- struct ww *w;
-
- if ((w = vtowin(a++, selwin)) == 0)
- return;
- while (a->v_type != V_ERR) {
- if (a->v_type == V_NUM) {
- (void) sprintf(buf, "%d", a->v_num);
- (void) wwwrite(w, buf, strlen(buf));
- } else
- (void) wwwrite(w, a->v_str, strlen(a->v_str));
- if ((++a)->v_type != V_ERR)
- (void) wwwrite(w, " ", 1);
- }
- (void) wwwrite(w, "\r\n", 2);
-}
diff --git a/usr.bin/window/local.h b/usr.bin/window/local.h
deleted file mode 100644
index 685e320..0000000
--- a/usr.bin/window/local.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)local.h 8.1 (Berkeley) 6/6/93
- * $FreeBSD$
- */
-
-/*
- * Things of local interest.
- */
-
-#define RUNCOM ".windowrc"
-#define ESCAPEC ctrl('p')
-#define NLINE 48 /* default text buffer size */
-
-#ifdef TERMINFO
-#define _PATH_CAPTOINFO "/usr/5bin/captoinfo"
-#define _PATH_TIC "/usr/5bin/tic"
-#define _PATH_RM "/bin/rm"
-#endif
diff --git a/usr.bin/window/main.c b/usr.bin/window/main.c
deleted file mode 100644
index 844ca76..0000000
--- a/usr.bin/window/main.c
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-char copyright[] =
-"@(#) Copyright (c) 1983, 1993\n\
- The Regents of the University of California. All rights reserved.\n";
-#endif /* not lint */
-
-#ifndef lint
-static char sccsid[] = "@(#)main.c 8.2 (Berkeley) 4/2/94";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "defs.h"
-#include <paths.h>
-#include <locale.h>
-#include <stdio.h>
-#include <string.h> /* System string definitions. */
-#include "mystring.h" /* Local string definitions. */
-#include "char.h"
-#include "local.h"
-
-#define next(a) (*++*(a) ? *(a) : (*++(a) ? *(a) : (char *)(uintptr_t)usage()))
-
-/*ARGSUSED*/
-main(argc, argv)
-char **argv;
-{
- register char *p;
- char fflag = 0;
- char dflag = 0;
- char xflag = 0;
- char *cmd = 0;
- char tflag = 0;
-
- escapec = ESCAPEC;
- if (p = rindex(*argv, '/'))
- p++;
- else
- p = *argv;
- debug = strcmp(p, "a.out") == 0;
- while (*++argv) {
- if (**argv == '-') {
- switch (*++*argv) {
- case 'f':
- fflag++;
- break;
- case 'c':
- if (cmd != 0) {
- (void) fprintf(stderr,
- "Only one -c allowed.\n");
- (void) usage();
- }
- cmd = next(argv);
- break;
- case 'e':
- setescape(next(argv));
- break;
- case 't':
- tflag++;
- break;
- case 'd':
- dflag++;
- break;
- case 'D':
- debug = !debug;
- break;
- case 'x':
- xflag++;
- break;
- default:
- (void) usage();
- }
- } else
- (void) usage();
- }
- if ((p = getenv("SHELL")) == 0)
- p = _PATH_BSHELL;
- if ((default_shellfile = str_cpy(p)) == 0) {
- (void) fprintf(stderr, "Out of memory.\n");
- exit(1);
- }
- if (p = rindex(default_shellfile, '/'))
- p++;
- else
- p = default_shellfile;
- default_shell[0] = p;
- default_shell[1] = 0;
- default_nline = NLINE;
- default_smooth = 1;
- (void) gettimeofday(&starttime, (struct timezone *)0);
- (void) setlocale(LC_CTYPE, "");
- if (wwinit() < 0) {
- (void) fprintf(stderr, "%s.\n", wwerror());
- exit(1);
- }
-
-#ifdef OLD_TTY
- if (debug)
- wwnewtty.ww_tchars.t_quitc = wwoldtty.ww_tchars.t_quitc;
- if (xflag) {
- wwnewtty.ww_tchars.t_stopc = wwoldtty.ww_tchars.t_stopc;
- wwnewtty.ww_tchars.t_startc = wwoldtty.ww_tchars.t_startc;
- }
-#else
- if (debug) {
- wwnewtty.ww_termios.c_cc[VQUIT] =
- wwoldtty.ww_termios.c_cc[VQUIT];
- wwnewtty.ww_termios.c_lflag |= ISIG;
- }
- if (xflag) {
- wwnewtty.ww_termios.c_cc[VSTOP] =
- wwoldtty.ww_termios.c_cc[VSTOP];
- wwnewtty.ww_termios.c_cc[VSTART] =
- wwoldtty.ww_termios.c_cc[VSTART];
- wwnewtty.ww_termios.c_iflag |= IXON;
- }
-#endif
- if (debug || xflag)
- (void) wwsettty(0, &wwnewtty);
-
- if ((cmdwin = wwopen(wwbaud > 2400 ? WWO_REVERSE : 0, 1, wwncol,
- 0, 0, 0)) == 0) {
- wwflush();
- (void) fprintf(stderr, "%s.\r\n", wwerror());
- goto bad;
- }
- cmdwin->ww_mapnl = 1;
- cmdwin->ww_nointr = 1;
- cmdwin->ww_noupdate = 1;
- cmdwin->ww_unctrl = 1;
- if ((framewin = wwopen(WWO_GLASS|WWO_FRAME, wwnrow, wwncol, 0, 0, 0))
- == 0) {
- wwflush();
- (void) fprintf(stderr, "%s.\r\n", wwerror());
- goto bad;
- }
- wwadd(framewin, &wwhead);
- if ((boxwin = wwopen(WWO_GLASS, wwnrow, wwncol, 0, 0, 0)) == 0) {
- wwflush();
- (void) fprintf(stderr, "%s.\r\n", wwerror());
- goto bad;
- }
- fgwin = framewin;
-
- wwupdate();
- wwflush();
- setvars();
-
- setterse(tflag);
- setcmd(1);
- if (cmd != 0)
- (void) dolongcmd(cmd, (struct value *)0, 0);
- if (!fflag)
- if (dflag || doconfig() < 0)
- dodefault();
- if (selwin != 0)
- setcmd(0);
-
- mloop();
-
-bad:
- wwend(1);
- return 0;
-}
-
-usage()
-{
- (void) fprintf(stderr, "usage: window [-e escape-char] [-c command] [-t] [-f] [-d]\n");
- exit(1);
- return 0; /* for lint */
-}
diff --git a/usr.bin/window/mloop.c b/usr.bin/window/mloop.c
deleted file mode 100644
index 70d41dd..0000000
--- a/usr.bin/window/mloop.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)mloop.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include <sys/param.h>
-#include "defs.h"
-
-mloop()
-{
- while (!quit) {
- if (incmd) {
- docmd();
- } else if (wwcurwin->ww_state != WWS_HASPROC) {
- if (!wwcurwin->ww_keepopen)
- closewin(wwcurwin);
- setcmd(1);
- if (wwpeekc() == escapec)
- (void) wwgetc();
- error("Process died.");
- } else {
- register struct ww *w = wwcurwin;
- register char *p;
- register n;
-
- if (wwibp >= wwibq)
- wwiomux();
- for (p = wwibp; p < wwibq && wwmaskc(*p) != escapec;
- p++)
- ;
- if ((n = p - wwibp) > 0) {
- if (!w->ww_ispty && w->ww_stopped)
- startwin(w);
-#if defined(sun) && !defined(BSD)
- /* workaround for SunOS pty bug */
- while (--n >= 0)
- (void) write(w->ww_pty, wwibp++, 1);
-#else
- (void) write(w->ww_pty, wwibp, n);
- wwibp = p;
-#endif
- }
- if (wwpeekc() == escapec) {
- (void) wwgetc();
- setcmd(1);
- }
- }
- }
-}
diff --git a/usr.bin/window/mystring.h b/usr.bin/window/mystring.h
deleted file mode 100644
index 3d14ae6..0000000
--- a/usr.bin/window/mystring.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)string.h 8.1 (Berkeley) 6/6/93
- * $FreeBSD$
- */
-
-#define STR_DEBUG
-
-char *str_cpy();
-char *str_ncpy();
-char *str_cat();
-char *str_itoa();
-
-#define str_cmp(a, b) strcmp(a, b)
-
-#ifdef STR_DEBUG
-struct mystring {
- struct mystring *s_forw;
- struct mystring *s_back;
- char s_data[1];
-};
-
-struct mystring str_head;
-
-#define str_offset ((unsigned)str_head.s_data - (unsigned)&str_head)
-#define str_stos(s) ((struct mystring *)((unsigned)(s) - str_offset))
-
-char *str_alloc();
-int str_free();
-#else
-#define str_free(s) free(s)
-#define str_alloc(s) malloc(s)
-#endif
diff --git a/usr.bin/window/parser.h b/usr.bin/window/parser.h
deleted file mode 100644
index 30a4503..0000000
--- a/usr.bin/window/parser.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)parser.h 8.1 (Berkeley) 6/6/93
- * $FreeBSD$
- */
-
-#include "value.h"
-#include "context.h"
-#include "token.h"
-#include "mystring.h"
-
-#define p_erred() (cx.x_erred)
-#define p_synerred() (cx.x_synerred)
-#define p_clearerr() (cx.x_erred = cx.x_synerred = 0)
-#define p_abort() (cx.x_abort)
diff --git a/usr.bin/window/parser1.c b/usr.bin/window/parser1.c
deleted file mode 100644
index ac9f9d3..0000000
--- a/usr.bin/window/parser1.c
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)parser1.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "parser.h"
-
-p_start()
-{
- char flag = 1;
-
- (void) s_gettok();
- for (;;) {
- p_statementlist(flag);
- if (token == T_EOF || p_abort())
- break;
- flag = 0;
- p_synerror();
- while (token != T_EOL && token != T_EOF) {
- if (token == T_STR)
- str_free(token_str);
- (void) s_gettok();
- }
- if (token == T_EOL)
- (void) s_gettok();
- p_clearerr();
- }
-}
-
-p_statementlist(flag)
-char flag;
-{
- for (; p_statement(flag) >= 0; p_clearerr())
- ;
-}
-
-p_statement(flag)
-char flag;
-{
- switch (token) {
- case T_EOL:
- (void) s_gettok();
- return 0;
- case T_IF:
- return p_if(flag);
- default:
- return p_expression(flag);
- }
-}
-
-p_if(flag)
-char flag;
-{
- struct value t;
- char true = 0;
-
-top:
- (void) s_gettok();
-
- if (p_expr(&t, flag) < 0) {
- p_synerror();
- return -1;
- }
- switch (t.v_type) {
- case V_NUM:
- true = !true && t.v_num != 0;
- break;
- case V_STR:
- p_error("if: Numeric value required.");
- str_free(t.v_str);
- case V_ERR:
- flag = 0;
- break;
- }
-
- if (token != T_THEN) {
- p_synerror();
- return -1;
- }
-
- (void) s_gettok();
- p_statementlist(flag && true);
- if (p_erred())
- return -1;
-
- if (token == T_ELSIF)
- goto top;
-
- if (token == T_ELSE) {
- (void) s_gettok();
- p_statementlist(flag && !true);
- if (p_erred())
- return -1;
- }
-
- if (token == T_ENDIF) {
- (void) s_gettok();
- return 0;
- }
-
- p_synerror();
- return -1;
-}
-
-p_expression(flag)
-char flag;
-{
- struct value t;
- char *cmd;
- int p_function(), p_assign();
-
- switch (token) {
- case T_NUM:
- t.v_type = V_NUM;
- t.v_num = token_num;
- (void) s_gettok();
- break;
- case T_STR:
- t.v_type = V_STR;
- t.v_str = token_str;
- (void) s_gettok();
- break;
- default:
- if (p_expr(&t, flag) < 0)
- return -1;
- if (token == T_EOF) {
- val_free(t);
- return 0;
- }
- }
- if (token != T_ASSIGN && p_convstr(&t) < 0)
- return -1;
- cmd = t.v_type == V_STR ? t.v_str : 0;
- if ((*(token == T_ASSIGN ? p_assign : p_function))(cmd, &t, flag) < 0) {
- if (cmd)
- str_free(cmd);
- return -1;
- }
- if (cmd)
- str_free(cmd);
- val_free(t);
- if (token == T_EOL)
- (void) s_gettok();
- else if (token != T_EOF) {
- p_synerror();
- return -1;
- }
- return 0;
-}
-
-p_convstr(v)
-register struct value *v;
-{
- if (v->v_type != V_NUM)
- return 0;
- if ((v->v_str = str_itoa(v->v_num)) == 0) {
- p_memerror();
- v->v_type = V_ERR;
- return -1;
- }
- v->v_type = V_STR;
- return 0;
-}
-
-p_synerror()
-{
- if (!cx.x_synerred) {
- cx.x_synerred = cx.x_erred = 1;
- error("Syntax error.");
- }
-}
-
-/*VARARGS1*/
-p_error(msg, a, b, c)
-char *msg;
-{
- if (!cx.x_erred) {
- cx.x_erred = 1;
- error(msg, a, b, c);
- }
-}
-
-p_memerror()
-{
- cx.x_erred = cx.x_abort = 1;
- error("Out of memory.");
-}
diff --git a/usr.bin/window/parser2.c b/usr.bin/window/parser2.c
deleted file mode 100644
index 75552de..0000000
--- a/usr.bin/window/parser2.c
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)parser2.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "parser.h"
-#include "var.h"
-#include "lcmd.h"
-#include "alias.h"
-
-/*
- * name == 0 means we don't have a function name but
- * want to parse the arguments anyway. flag == 0 in this case.
- */
-p_function(name, v, flag)
-char *name;
-register struct value *v;
-{
- struct value t;
- register struct lcmd_tab *c = 0;
- register struct alias *a = 0;
- register struct lcmd_arg *ap; /* this arg */
- struct lcmd_arg *lp = 0; /* list arg */
- register i;
- struct value av[LCMD_NARG + 1];
- register struct value *vp;
-
- if (name != 0)
- if (c = lcmd_lookup(name))
- name = c->lc_name;
- else if (a = alias_lookup(name))
- name = a->a_name;
- else {
- p_error("%s: No such command or alias.", name);
- flag = 0;
- }
-
- for (vp = av; vp < &av[LCMD_NARG + 1]; vp++)
- vp->v_type = V_ERR;
-
- if (token == T_LP)
- (void) s_gettok();
- i = 0;
- for (;;) {
- ap = 0;
- vp = 0;
- if (token == T_COMMA) /* null argument */
- t.v_type = V_ERR;
- else {
- if (p_expr0(&t, flag) < 0)
- break;
- if (t.v_type == V_ERR)
- flag = 0;
- }
- if (token != T_ASSIGN) {
- if (i >= LCMD_NARG ||
- c != 0 && (ap = lp) == 0 &&
- (ap = c->lc_arg + i)->arg_name == 0) {
- p_error("%s: Too many arguments.", name);
- flag = 0;
- } else
- vp = &av[i++];
- } else {
- char *tmp;
- if (p_convstr(&t) < 0)
- goto abort;
- tmp = t.v_type == V_STR ? t.v_str : 0;
- (void) s_gettok();
- if (p_expr(&t, flag) < 0) {
- if (tmp)
- str_free(tmp);
- p_synerror();
- goto abort;
- }
- if (t.v_type == V_ERR)
- flag = 0;
- if (tmp) {
- if (c == 0) {
- /* an aliase */
- p_error("%s: Bad alias syntax.", name);
- flag = 0;
- } else {
- for (ap = c->lc_arg, vp = av;
- ap != 0 && ap->arg_name != 0 &&
- (*ap->arg_name == '\0' ||
- !str_match(tmp, ap->arg_name,
- ap->arg_minlen));
- ap++, vp++)
- ;
- if (ap == 0 || ap->arg_name == 0) {
- p_error("%s: Unknown argument \"%s\".",
- name, tmp);
- flag = 0;
- ap = 0;
- vp = 0;
- }
- }
- str_free(tmp);
- }
- }
- if (ap != 0) {
- if (ap->arg_flags & ARG_LIST) {
- i = vp - av + 1;
- lp = ap;
- }
- if (vp->v_type != V_ERR) {
- if (*ap->arg_name)
- p_error("%s: Argument %d (%s) duplicated.",
- name, vp - av + 1,
- ap->arg_name);
- else
- p_error("%s: Argument %d duplicated.",
- name, vp - av + 1);
- flag = 0;
- vp = 0;
- } else if (t.v_type == V_ERR) {
- /* do nothing */
- } else if ((ap->arg_flags&ARG_TYPE) == ARG_NUM &&
- t.v_type != V_NUM ||
- (ap->arg_flags&ARG_TYPE) == ARG_STR &&
- t.v_type != V_STR) {
- if (*ap->arg_name)
- p_error("%s: Argument %d (%s) type mismatch.",
- name, vp - av + 1,
- ap->arg_name);
- else
- p_error("%s: Argument %d type mismatch.",
- name, vp - av + 1);
- flag = 0;
- vp = 0;
- }
- }
- if (vp != 0)
- *vp = t;
- else
- val_free(t);
- if (token == T_COMMA)
- (void) s_gettok();
- }
-
- if (p_erred())
- flag = 0;
- if (token == T_RP)
- (void) s_gettok();
- else if (token != T_EOL && token != T_EOF)
- flag = 0; /* look for legal follow set */
- v->v_type = V_ERR;
- if (flag)
- if (c != 0)
- (*c->lc_func)(v, av);
- else
- if (a->a_flags & A_INUSE)
- p_error("%s: Recursive alias.", a->a_name);
- else {
- a->a_flags |= A_INUSE;
- if (dolongcmd(a->a_buf, av, i) < 0)
- p_memerror();
- a->a_flags &= ~A_INUSE;
- }
- if (p_abort()) {
- val_free(*v);
- v->v_type = V_ERR;
- goto abort;
- }
- for (vp = av; vp < &av[LCMD_NARG]; vp++)
- val_free(*vp);
- return 0;
-abort:
- for (vp = av; vp < &av[LCMD_NARG]; vp++)
- val_free(*vp);
- return -1;
-}
-
-p_assign(name, v, flag)
-char *name;
-struct value *v;
-char flag;
-{
- (void) s_gettok();
-
- if (p_expr(v, flag) < 0) {
- p_synerror();
- return -1;
- }
- switch (v->v_type) {
- case V_STR:
- case V_NUM:
- if (flag && var_set(name, v) == 0) {
- p_memerror();
- val_free(*v);
- return -1;
- }
- break;
- }
- return 0;
-}
diff --git a/usr.bin/window/parser3.c b/usr.bin/window/parser3.c
deleted file mode 100644
index bd36d41..0000000
--- a/usr.bin/window/parser3.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)parser3.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "parser.h"
-
-/*
- * =
- * ? :
- * ||
- * &&
- * |
- * ^
- * &
- * == !=
- * <= >=
- * << >>
- * + -
- * * / %
- * unary - + ~ !
- */
-p_expr(v, flag)
-register struct value *v;
-char flag;
-{
- struct value t;
- int ret;
-
- if (p_expr0(&t, flag) < 0)
- return -1;
-
- if (token != T_ASSIGN) {
- *v = t;
- return 0;
- }
- switch (t.v_type) {
- case V_NUM:
- p_error("%d: Not a variable.", t.v_num);
- case V_ERR:
- t.v_str = 0;
- break;
- }
- ret = p_assign(t.v_str, v, flag);
- if (t.v_str != 0)
- str_free(t.v_str);
- return ret;
-}
-
-/*
- * ? :
- */
-p_expr0(v, flag)
-register struct value *v;
-char flag;
-{
- struct value t;
- char true;
-
- if (p_expr1(v, flag) < 0)
- return -1;
- if (token != T_QUEST)
- return 0;
- switch (v->v_type) {
- case V_NUM:
- true = v->v_num != 0;
- break;
- case V_STR:
- p_error("?: Numeric left operand required.");
- str_free(v->v_str);
- v->v_type = V_ERR;
- case V_ERR:
- flag = 0;
- break;
- }
- (void) s_gettok();
- v->v_type = V_ERR;
- if ((flag && true ? p_expr1(v, 1) : p_expr1(&t, 0)) < 0)
- return -1;
- if (token != T_COLON) {
- val_free(*v);
- p_synerror();
- return -1;
- }
- (void) s_gettok();
- return flag && !true ? p_expr1(v, 1) : p_expr1(&t, 0);
-}
-
-/*
- * ||
- */
-p_expr1(v, flag)
-register struct value *v;
-char flag;
-{
- char true = 0;
-
- if (p_expr2(v, flag) < 0)
- return -1;
- if (token != T_OROR)
- return 0;
- for (;;) {
- switch (v->v_type) {
- case V_NUM:
- v->v_num = true = true || v->v_num != 0;
- break;
- case V_STR:
- p_error("||: Numeric operands required.");
- str_free(v->v_str);
- v->v_type = V_ERR;
- case V_ERR:
- flag = 0;
- break;
- }
- if (token != T_OROR)
- return 0;
- (void) s_gettok();
- if (p_expr2(v, flag && !true) < 0)
- return -1;
- }
-}
-
-/*
- * &&
- */
-p_expr2(v, flag)
-register struct value *v;
-char flag;
-{
- char true = 1;
-
- if (p_expr3_10(3, v, flag) < 0)
- return -1;
- if (token != T_ANDAND)
- return 0;
- for (;;) {
- switch (v->v_type) {
- case V_NUM:
- v->v_num = true = true && v->v_num != 0;
- break;
- case V_STR:
- p_error("&&: Numeric operands required.");
- str_free(v->v_str);
- v->v_type = V_ERR;
- case V_ERR:
- flag = 0;
- break;
- }
- if (token != T_ANDAND)
- return 0;
- (void) s_gettok();
- if (p_expr3_10(3, v, flag && true) < 0)
- return -1;
- }
- /*NOTREACHED*/
-}
diff --git a/usr.bin/window/parser4.c b/usr.bin/window/parser4.c
deleted file mode 100644
index 338bdfb..0000000
--- a/usr.bin/window/parser4.c
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)parser4.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include <string.h>
-#include "parser.h"
-
-/*
- * | 3
- * ^ 4
- * & 5
- * == != 6
- * < <= > >= 7
- * << >> 8
- * + - 9
- * * / % 10
- */
-p_expr3_10(level, v, flag)
-register struct value *v;
-char flag;
-{
- struct value l, r;
- int op;
- char *opname;
-
- if ((level == 10 ? p_expr11(v, flag)
- : p_expr3_10(level + 1, v, flag)) < 0)
- return -1;
- for (;;) {
- switch (level) {
- case 3:
- if (token != T_OR)
- return 0;
- opname = "|";
- break;
- case 4:
- if (token != T_XOR)
- return 0;
- opname = "^";
- break;
- case 5:
- if (token != T_AND)
- return 0;
- opname = "&";
- break;
- case 6:
- if (token == T_EQ)
- opname = "==";
- else if (token == T_NE)
- opname = "!=";
- else
- return 0;
- break;
- case 7:
- switch (token) {
- case T_LT:
- opname = "<";
- break;
- case T_LE:
- opname = "<=";
- break;
- case T_GT:
- opname = ">";
- break;
- case T_GE:
- opname = ">=";
- break;
- default:
- return 0;
- }
- break;
- case 8:
- if (token == T_LS)
- opname = "<<";
- else if (token == T_RS)
- opname = ">>";
- else
- return 0;
- break;
- case 9:
- if (token == T_PLUS)
- opname = "+";
- else if (token == T_MINUS)
- opname = "-";
- else
- return 0;
- break;
- case 10:
- switch (token) {
- case T_MUL:
- opname = "*";
- break;
- case T_DIV:
- opname = "/";
- break;
- case T_MOD:
- opname = "%";
- break;
- default:
- return 0;
- }
- break;
- }
- l = *v;
- if (l.v_type == V_ERR)
- flag = 0;
-
- op = token;
- (void) s_gettok();
- if ((level == 10 ? p_expr11(&r, flag)
- : p_expr3_10(level + 1, &r, flag)) < 0) {
- p_synerror();
- val_free(l);
- return -1;
- }
-
- if (r.v_type == V_ERR)
- flag = 0;
- else switch (op) {
- case T_EQ:
- case T_NE:
- case T_LT:
- case T_LE:
- case T_GT:
- case T_GE:
- case T_PLUS:
- if (l.v_type == V_STR) {
- if (r.v_type == V_NUM)
- if (p_convstr(&r) < 0)
- flag = 0;
- } else
- if (r.v_type == V_STR)
- if (p_convstr(&l) < 0)
- flag = 0;
- break;
- case T_LS:
- case T_RS:
- if (r.v_type == V_STR) {
- char *p = r.v_str;
- r.v_type = V_NUM;
- r.v_num = strlen(p);
- str_free(p);
- }
- break;
- case T_OR:
- case T_XOR:
- case T_AND:
- case T_MINUS:
- case T_MUL:
- case T_DIV:
- case T_MOD:
- default:
- if (l.v_type == V_STR || r.v_type == V_STR) {
- p_error("%s: Numeric operands required.",
- opname);
- flag = 0;
- }
- }
- if (!flag) {
- val_free(l);
- val_free(r);
- v->v_type = V_ERR;
- if (p_abort())
- return -1;
- continue;
- }
-
- v->v_type = V_NUM;
- switch (op) {
- case T_EQ:
- case T_NE:
- case T_LT:
- case T_LE:
- case T_GT:
- case T_GE:
- if (l.v_type == V_STR) {
- int tmp = strcmp(l.v_str, r.v_str);
- str_free(l.v_str);
- str_free(r.v_str);
- l.v_type = V_NUM;
- l.v_num = tmp;
- r.v_type = V_NUM;
- r.v_num = 0;
- }
- break;
- }
- switch (op) {
- case T_OR:
- v->v_num = l.v_num | r.v_num;
- break;
- case T_XOR:
- v->v_num = l.v_num ^ r.v_num;
- break;
- case T_AND:
- v->v_num = l.v_num & r.v_num;
- break;
- case T_EQ:
- v->v_num = l.v_num == r.v_num;
- break;
- case T_NE:
- v->v_num = l.v_num != r.v_num;
- break;
- case T_LT:
- v->v_num = l.v_num < r.v_num;
- break;
- case T_LE:
- v->v_num = l.v_num <= r.v_num;
- break;
- case T_GT:
- v->v_num = l.v_num > r.v_num;
- break;
- case T_GE:
- v->v_num = l.v_num >= r.v_num;
- break;
- case T_LS:
- if (l.v_type == V_STR) {
- int i;
- if ((i = strlen(l.v_str)) > r.v_num)
- i = r.v_num;
- v->v_str = str_ncpy(l.v_str, i);
- v->v_type = V_STR;
- } else
- v->v_num = l.v_num << r.v_num;
- break;
- case T_RS:
- if (l.v_type == V_STR) {
- int i;
- if ((i = strlen(l.v_str)) > r.v_num)
- i -= r.v_num;
- else
- i = 0;
- v->v_str = str_cpy(l.v_str + i);
- v->v_type = V_STR;
- } else
- v->v_num = l.v_num >> r.v_num;
- break;
- case T_PLUS:
- if (l.v_type == V_STR) {
- v->v_str = str_cat(l.v_str, r.v_str);
- v->v_type = V_STR;
- } else
- v->v_num = l.v_num + r.v_num;
- break;
- case T_MINUS:
- v->v_num = l.v_num - r.v_num;
- break;
- case T_MUL:
- v->v_num = l.v_num * r.v_num;
- break;
- case T_DIV:
- v->v_num = l.v_num / r.v_num;
- break;
- case T_MOD:
- v->v_num = l.v_num % r.v_num;
- break;
- }
- val_free(l);
- val_free(r);
- }
- /*NOTREACHED*/
-}
diff --git a/usr.bin/window/parser5.c b/usr.bin/window/parser5.c
deleted file mode 100644
index ddc8136..0000000
--- a/usr.bin/window/parser5.c
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)parser5.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "parser.h"
-#include "var.h"
-
-/*
- * unary $ $? + - ! ~
- */
-p_expr11(v, flag)
-register struct value *v;
-char flag;
-{
- int op;
- char *opname;
-
- switch (token) {
- case T_DOLLAR:
- opname = "$";
- break;
- case T_DQ:
- opname = "$?";
- break;
- case T_PLUS:
- opname = "unary +";
- break;
- case T_MINUS:
- opname = "unary -";
- break;
- case T_NOT:
- opname = "!";
- break;
- case T_COMP:
- opname = "~";
- break;
- default:
- return p_expr12(v, flag);
- }
- op = token;
- (void) s_gettok();
- if (p_expr11(v, flag) < 0)
- return -1;
- switch (v->v_type) {
- case V_NUM:
- break;
- case V_STR:
- switch (op) {
- case T_MINUS:
- case T_NOT:
- case T_COMP:
- p_error("%s: Numeric operand required.", opname);
- str_free(v->v_str);
- v->v_type = V_ERR;
- return 0;
- }
- break;
- case V_ERR:
- return 0;
- }
- switch (op) {
- case T_DOLLAR:
- case T_DQ:
- if (v->v_type == V_NUM) {
- int tmp = cx.x_type == X_BUF && cx.x_arg != 0 &&
- v->v_num > 0 && v->v_num <= cx.x_narg;
- if (op == T_DQ)
- v->v_num = tmp;
- else if (tmp)
- *v = cx.x_arg[v->v_num - 1];
- else {
- p_error("%d: No such argument.", v->v_num);
- v->v_type = V_ERR;
- }
- } else {
- char *name = v->v_str;
- struct var *r = var_lookup(name);
- if (op == T_DQ) {
- v->v_type = V_NUM;
- v->v_num = r != 0;
- } else if (r != 0)
- *v = r->r_val;
- else {
- p_error("%s: Undefined variable.", name);
- v->v_type = V_ERR;
- }
- str_free(name);
- }
- if (v->v_type == V_STR && (v->v_str = str_cpy(v->v_str)) == 0) {
- p_memerror();
- return -1;
- }
- break;
- case T_MINUS:
- v->v_num = - v->v_num;
- break;
- case T_NOT:
- v->v_num = ! v->v_num;
- break;
- case T_COMP:
- v->v_num = ~ v->v_num;
- break;
- }
- return 0;
-}
-
-/*
- * string, number, ( expr )
- * Plus function calls.
- *
- * Always return v_type == V_ERR when flag == 0.
- */
-p_expr12(v, flag)
-register struct value *v;
-char flag;
-{
- v->v_type = V_ERR;
- switch (token) {
- case T_NUM:
- if (flag) {
- v->v_type = V_NUM;
- v->v_num = token_num;
- }
- (void) s_gettok();
- break;
- case T_STR:
- if (flag) {
- v->v_type = V_STR;
- v->v_str = token_str;
- } else
- str_free(token_str);
- (void) s_gettok();
- break;
- case T_LP:
- (void) s_gettok();
- if (p_expr(v, flag) < 0) {
- p_synerror();
- return -1;
- }
- if (token != T_RP) {
- p_synerror();
- val_free(*v);
- return -1;
- }
- (void) s_gettok();
- break;
- default:
- return -1;
- }
- while (token == T_LP) {
- char *cmd;
-
- if (p_convstr(v) < 0)
- return -1;
- cmd = v->v_type == V_STR ? v->v_str : 0;
- if (p_function(cmd, v, flag) < 0) {
- if (cmd)
- str_free(cmd);
- return -1;
- }
- if (cmd)
- str_free(cmd);
- }
- return 0;
-}
diff --git a/usr.bin/window/scanner.c b/usr.bin/window/scanner.c
deleted file mode 100644
index 6b92476..0000000
--- a/usr.bin/window/scanner.c
+++ /dev/null
@@ -1,553 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)scanner.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include <ctype.h>
-#include "value.h"
-#include "token.h"
-#include "context.h"
-#include "string.h"
-#include "mystring.h"
-#include <stdlib.h>
-
-s_getc()
-{
- register c;
-
- switch (cx.x_type) {
- case X_FILE:
- c = getc(cx.x_fp);
- if (cx.x_bol && c != EOF) {
- cx.x_bol = 0;
- cx.x_lineno++;
- }
- if (c == '\n')
- cx.x_bol = 1;
- return c;
- case X_BUF:
- if (*cx.x_bufp != 0)
- return *cx.x_bufp++ & 0xff;
- else
- return EOF;
- }
- /*NOTREACHED*/
-}
-
-s_ungetc(c)
-{
- if (c == EOF)
- return EOF;
- switch (cx.x_type) {
- case X_FILE:
- cx.x_bol = 0;
- return ungetc(c, cx.x_fp);
- case X_BUF:
- if (cx.x_bufp > cx.x_buf)
- return *--cx.x_bufp = c;
- else
- return EOF;
- }
- /*NOTREACHED*/
-}
-
-s_gettok()
-{
- char buf[100];
- register char *p = buf;
- register c;
- register state = 0;
-
-loop:
- c = s_getc();
- switch (state) {
- case 0:
- switch (c) {
- case ' ':
- case '\t':
- break;
- case '\n':
- case ';':
- cx.x_token = T_EOL;
- state = -1;
- break;
- case '#':
- state = 1;
- break;
- case EOF:
- cx.x_token = T_EOF;
- state = -1;
- break;
- case '"':
- state = 3;
- break;
- case '\'':
- state = 4;
- break;
- case '\\':
- switch (c = s_gettok1()) {
- case -1:
- break;
- case -2:
- state = 0;
- break;
- default:
- *p++ = c;
- state = 2;
- }
- break;
- case '0':
- cx.x_val.v_num = 0;
- state = 10;
- break;
- case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- cx.x_val.v_num = c - '0';
- state = 11;
- break;
- case '>':
- state = 20;
- break;
- case '<':
- state = 21;
- break;
- case '=':
- state = 22;
- break;
- case '!':
- state = 23;
- break;
- case '&':
- state = 24;
- break;
- case '|':
- state = 25;
- break;
- case '$':
- state = 26;
- break;
- case '~':
- cx.x_token = T_COMP;
- state = -1;
- break;
- case '+':
- cx.x_token = T_PLUS;
- state = -1;
- break;
- case '-':
- cx.x_token = T_MINUS;
- state = -1;
- break;
- case '*':
- cx.x_token = T_MUL;
- state = -1;
- break;
- case '/':
- cx.x_token = T_DIV;
- state = -1;
- break;
- case '%':
- cx.x_token = T_MOD;
- state = -1;
- break;
- case '^':
- cx.x_token = T_XOR;
- state = -1;
- break;
- case '(':
- cx.x_token = T_LP;
- state = -1;
- break;
- case ')':
- cx.x_token = T_RP;
- state = -1;
- break;
- case ',':
- cx.x_token = T_COMMA;
- state = -1;
- break;
- case '?':
- cx.x_token = T_QUEST;
- state = -1;
- break;
- case ':':
- cx.x_token = T_COLON;
- state = -1;
- break;
- case '[':
- cx.x_token = T_LB;
- state = -1;
- break;
- case ']':
- cx.x_token = T_RB;
- state = -1;
- break;
- default:
- if (isalpha(c) || c == '_' || c == '.') {
- *p++ = c;
- state = 2;
- break;
- }
- cx.x_val.v_num = c;
- cx.x_token = T_CHAR;
- state = -1;
- break;
- }
- break;
- case 1: /* got # */
- if (c == '\n' || c == EOF) {
- (void) s_ungetc(c);
- state = 0;
- }
- break;
- case 2: /* unquoted string */
- switch (c) {
- case '"':
- state = 3;
- break;
- case '\'':
- state = 4;
- break;
- case '\\':
- switch (c = s_gettok1()) {
- case -2:
- (void) s_ungetc(' ');
- case -1:
- break;
- default:
- if (p < buf + sizeof buf - 1)
- *p++ = c;
- }
- break;
- default:
- if (isalnum(c) || c == '_' || c == '.') {
- if (p < buf + sizeof buf - 1)
- *p++ = c;
- break;
- }
- (void) s_ungetc(c);
- case EOF:
- *p = 0;
- cx.x_token = T_STR;
- switch (*buf) {
- case 'i':
- if (buf[1] == 'f' && buf[2] == 0)
- cx.x_token = T_IF;
- break;
- case 't':
- if (buf[1] == 'h' && buf[2] == 'e'
- && buf[3] == 'n' && buf[4] == 0)
- cx.x_token = T_THEN;
- break;
- case 'e':
- if (buf[1] == 'n' && buf[2] == 'd'
- && buf[3] == 'i' && buf[4] == 'f'
- && buf[5] == 0)
- cx.x_token = T_ENDIF;
- else if (buf[1] == 'l' && buf[2] == 's')
- if (buf[3] == 'i' && buf[4] == 'f'
- && buf[5] == 0)
- cx.x_token = T_ELSIF;
- else if (buf[3] == 'e' && buf[4] == 0)
- cx.x_token = T_ELSE;
- break;
- }
- if (cx.x_token == T_STR
- && (cx.x_val.v_str = str_cpy(buf)) == 0) {
- p_memerror();
- cx.x_token = T_EOF;
- }
- state = -1;
- break;
- }
- break;
- case 3: /* " quoted string */
- switch (c) {
- case '\n':
- (void) s_ungetc(c);
- case EOF:
- case '"':
- state = 2;
- break;
- case '\\':
- switch (c = s_gettok1()) {
- case -1:
- case -2: /* newlines are invisible */
- break;
- default:
- if (p < buf + sizeof buf - 1)
- *p++ = c;
- }
- break;
- default:
- if (p < buf + sizeof buf - 1)
- *p++ = c;
- break;
- }
- break;
- case 4: /* ' quoted string */
- switch (c) {
- case '\n':
- (void) s_ungetc(c);
- case EOF:
- case '\'':
- state = 2;
- break;
- case '\\':
- switch (c = s_gettok1()) {
- case -1:
- case -2: /* newlines are invisible */
- break;
- default:
- if (p < buf + sizeof buf - 1)
- *p++ = c;
- }
- break;
- default:
- if (p < buf + sizeof buf - 1)
- *p++ = c;
- break;
- }
- break;
- case 10: /* got 0 */
- switch (c) {
- case 'x':
- case 'X':
- cx.x_val.v_num = 0;
- state = 12;
- break;
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7':
- cx.x_val.v_num = c - '0';
- state = 13;
- break;
- case '8': case '9':
- cx.x_val.v_num = c - '0';
- state = 11;
- break;
- default:
- (void) s_ungetc(c);
- state = -1;
- cx.x_token = T_NUM;
- }
- break;
- case 11: /* decimal number */
- switch (c) {
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- cx.x_val.v_num = cx.x_val.v_num * 10 + c - '0';
- break;
- default:
- (void) s_ungetc(c);
- state = -1;
- cx.x_token = T_NUM;
- }
- break;
- case 12: /* hex number */
- switch (c) {
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- cx.x_val.v_num = cx.x_val.v_num * 16 + c - '0';
- break;
- case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
- cx.x_val.v_num = cx.x_val.v_num * 16 + c - 'a' + 10;
- break;
- case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
- cx.x_val.v_num = cx.x_val.v_num * 16 + c - 'A' + 10;
- break;
- default:
- (void) s_ungetc(c);
- state = -1;
- cx.x_token = T_NUM;
- }
- break;
- case 13: /* octal number */
- switch (c) {
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7':
- cx.x_val.v_num = cx.x_val.v_num * 8 + c - '0';
- break;
- default:
- (void) s_ungetc(c);
- state = -1;
- cx.x_token = T_NUM;
- }
- break;
- case 20: /* got > */
- switch (c) {
- case '=':
- cx.x_token = T_GE;
- state = -1;
- break;
- case '>':
- cx.x_token = T_RS;
- state = -1;
- break;
- default:
- (void) s_ungetc(c);
- cx.x_token = T_GT;
- state = -1;
- }
- break;
- case 21: /* got < */
- switch (c) {
- case '=':
- cx.x_token = T_LE;
- state = -1;
- break;
- case '<':
- cx.x_token = T_LS;
- state = -1;
- break;
- default:
- (void) s_ungetc(c);
- cx.x_token = T_LT;
- state = -1;
- }
- break;
- case 22: /* got = */
- switch (c) {
- case '=':
- cx.x_token = T_EQ;
- state = -1;
- break;
- default:
- (void) s_ungetc(c);
- cx.x_token = T_ASSIGN;
- state = -1;
- }
- break;
- case 23: /* got ! */
- switch (c) {
- case '=':
- cx.x_token = T_NE;
- state = -1;
- break;
- default:
- (void) s_ungetc(c);
- cx.x_token = T_NOT;
- state = -1;
- }
- break;
- case 24: /* got & */
- switch (c) {
- case '&':
- cx.x_token = T_ANDAND;
- state = -1;
- break;
- default:
- (void) s_ungetc(c);
- cx.x_token = T_AND;
- state = -1;
- }
- break;
- case 25: /* got | */
- switch (c) {
- case '|':
- cx.x_token = T_OROR;
- state = -1;
- break;
- default:
- (void) s_ungetc(c);
- cx.x_token = T_OR;
- state = -1;
- }
- break;
- case 26: /* got $ */
- switch (c) {
- case '?':
- cx.x_token = T_DQ;
- state = -1;
- break;
- default:
- (void) s_ungetc(c);
- cx.x_token = T_DOLLAR;
- state = -1;
- }
- break;
- default:
- abort();
- }
- if (state >= 0)
- goto loop;
- return cx.x_token;
-}
-
-s_gettok1()
-{
- register c;
- register n;
-
- c = s_getc(); /* got \ */
- switch (c) {
- case EOF:
- return -1;
- case '\n':
- return -2;
- case 'b':
- return '\b';
- case 'f':
- return '\f';
- case 'n':
- return '\n';
- case 'r':
- return '\r';
- case 't':
- return '\t';
- default:
- return c;
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7':
- break;
- }
- n = c - '0';
- c = s_getc(); /* got \[0-7] */
- if (c < '0' || c > '7') {
- (void) s_ungetc(c);
- return n;
- }
- n = n * 8 + c - '0';
- c = s_getc(); /* got \[0-7][0-7] */
- if (c < '0' || c > '7') {
- (void) s_ungetc(c);
- return n;
- }
- return n * 8 + c - '0';
-}
diff --git a/usr.bin/window/startup.c b/usr.bin/window/startup.c
deleted file mode 100644
index 7ebaf10..0000000
--- a/usr.bin/window/startup.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)startup.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "defs.h"
-#include "value.h"
-#include "var.h"
-#include "char.h"
-#include "local.h"
-#include <stdio.h>
-
-doconfig()
-{
- char buf[100];
- char *home;
- static char runcom[] = RUNCOM;
-
- if ((home = getenv("HOME")) == 0)
- home = ".";
- (void) sprintf(buf, "%.*s/%s",
- (sizeof buf - sizeof runcom) / sizeof (char) - 1,
- home, runcom);
- return dosource(buf);
-}
-
-/*
- * The default is two windows of equal size.
- */
-dodefault()
-{
- struct ww *w;
- register r = wwnrow / 2 - 1;
-
- if (openwin(1, r + 2, 0, wwnrow - r - 2, wwncol, default_nline,
- (char *) 0, 1, 1, default_shellfile, default_shell) == 0)
- return;
- if ((w = openwin(0, 1, 0, r, wwncol, default_nline,
- (char *) 0, 1, 1, default_shellfile, default_shell)) == 0)
- return;
- wwprintf(w, "Escape character is %s.\r\n", unctrl(escapec));
-}
-
-setvars()
-{
- /* try to use a random ordering to balance the tree */
- (void) var_setnum("nrow", wwnrow);
- (void) var_setnum("ncol", wwncol);
- (void) var_setnum("baud", wwbaud);
- (void) var_setnum("m_rev", WWM_REV);
- (void) var_setnum("m_blk", WWM_BLK);
- (void) var_setnum("m_ul", WWM_UL);
- (void) var_setnum("m_grp", WWM_GRP);
- (void) var_setnum("m_dim", WWM_DIM);
- (void) var_setnum("m_usr", WWM_USR);
- (void) var_setstr("term", wwterm);
- (void) var_setnum("modes", wwavailmodes);
-}
diff --git a/usr.bin/window/string.c b/usr.bin/window/string.c
deleted file mode 100644
index 6455781..0000000
--- a/usr.bin/window/string.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)string.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include <string.h> /* System string definitions. */
-#include "mystring.h" /* Local string definitions. */
-#include <stdio.h>
-#include <stdlib.h>
-
-char *
-str_cpy(s)
-register char *s;
-{
- char *str;
- register char *p;
-
- str = p = str_alloc(strlen(s) + 1);
- if (p == 0)
- return 0;
- while (*p++ = *s++)
- ;
- return str;
-}
-
-char *
-str_ncpy(s, n)
-register char *s;
-register n;
-{
- int l = strlen(s);
- char *str;
- register char *p;
-
- if (n > l)
- n = l;
- str = p = str_alloc(n + 1);
- if (p == 0)
- return 0;
- while (--n >= 0)
- *p++ = *s++;
- *p = 0;
- return str;
-}
-
-char *
-str_itoa(i)
-int i;
-{
- char buf[30];
-
- (void) sprintf(buf, "%d", i);
- return str_cpy(buf);
-}
-
-char *
-str_cat(s1, s2)
-char *s1, *s2;
-{
- char *str;
- register char *p, *q;
-
- str = p = str_alloc(strlen(s1) + strlen(s2) + 1);
- if (p == 0)
- return 0;
- for (q = s1; *p++ = *q++;)
- ;
- for (q = s2, p--; *p++ = *q++;)
- ;
- return str;
-}
-
-/*
- * match s against p.
- * s can be a prefix of p with at least min characters.
- */
-str_match(s, p, min)
-register char *s, *p;
-register min;
-{
- for (; *s && *p && *s == *p; s++, p++, min--)
- ;
- return *s == *p || *s == 0 && min <= 0;
-}
-
-#ifdef STR_DEBUG
-char *
-str_alloc(l)
-int l;
-{
- register struct mystring *s;
-
- s = (struct mystring *) malloc((unsigned)l + str_offset);
- if (s == 0)
- return 0;
- if (str_head.s_forw == 0)
- str_head.s_forw = str_head.s_back = &str_head;
- s->s_forw = str_head.s_forw;
- s->s_back = &str_head;
- str_head.s_forw = s;
- s->s_forw->s_back = s;
- return s->s_data;
-}
-
-str_free(str)
-char *str;
-{
- register struct mystring *s;
-
- for (s = str_head.s_forw; s != &str_head && s->s_data != str;
- s = s->s_forw)
- ;
- if (s == &str_head)
- abort();
- s->s_back->s_forw = s->s_forw;
- s->s_forw->s_back = s->s_back;
- free((char *)s);
-}
-#endif
diff --git a/usr.bin/window/token.h b/usr.bin/window/token.h
deleted file mode 100644
index 5e3f72c..0000000
--- a/usr.bin/window/token.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)token.h 8.1 (Berkeley) 6/6/93
- * $FreeBSD$
- */
-
-#define token (cx.x_token)
-#define token_num (cx.x_val.v_num)
-#define token_str (cx.x_val.v_str)
-
-#define T_EOL 1
-#define T_EOF 2
-#define T_COMP 3
-#define T_PLUS 4
-#define T_MINUS 5
-#define T_MUL 6
-#define T_DIV 7
-#define T_LP 8
-#define T_RP 9
-#define T_LB 10
-#define T_RB 11
-#define T_DOLLAR 12
-#define T_COMMA 13
-#define T_QUEST 14
-#define T_COLON 15
-#define T_CHAR 16
-#define T_STR 17
-#define T_NUM 18
-#define T_MOD 19
-#define T_XOR 20
-#define T_DQ 21 /* $? */
-#define T_GE 22
-#define T_RS 23
-#define T_GT 24
-#define T_LE 25
-#define T_LS 26
-#define T_LT 27
-#define T_EQ 28
-#define T_ASSIGN 29
-#define T_NE 30
-#define T_NOT 31
-#define T_ANDAND 32
-#define T_AND 33
-#define T_OROR 34
-#define T_OR 35
-
-#define T_IF 40
-#define T_THEN 41
-#define T_ELSIF 42
-#define T_ELSE 43
-#define T_ENDIF 44
diff --git a/usr.bin/window/tt.h b/usr.bin/window/tt.h
deleted file mode 100644
index 53fe7b3..0000000
--- a/usr.bin/window/tt.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)tt.h 8.1 (Berkeley) 6/6/93
- * $FreeBSD$
- */
-
-/*
- * Interface structure for the terminal drivers.
- */
-struct tt {
- /* startup and cleanup */
- int (*tt_start)();
- int (*tt_reset)();
- int (*tt_end)();
-
- /* terminal functions */
- int (*tt_move)();
- int (*tt_insline)();
- int (*tt_delline)();
- int (*tt_inschar)();
- int (*tt_insspace)();
- int (*tt_delchar)();
- int (*tt_write)(); /* write a whole block */
- int (*tt_putc)(); /* write one character */
- int (*tt_clreol)();
- int (*tt_clreos)();
- int (*tt_clear)();
- int (*tt_scroll_down)();
- int (*tt_scroll_up)();
- int (*tt_setscroll)(); /* set scrolling region */
- int (*tt_setmodes)(); /* set display modes */
- int (*tt_set_token)(); /* define a token */
- int (*tt_put_token)(); /* refer to a defined token */
- int (*tt_compress)(); /* begin, end compression */
- int (*tt_checksum)(); /* compute checksum */
- int (*tt_checkpoint)(); /* checkpoint protocol */
- int (*tt_rint)(); /* input processing */
-
- /* internal variables */
- char tt_modes; /* the current display modes */
- char tt_nmodes; /* the new modes for next write */
- char tt_insert; /* currently in insert mode */
- int tt_row; /* cursor row */
- int tt_col; /* cursor column */
- int tt_scroll_top; /* top of scrolling region */
- int tt_scroll_bot; /* bottom of scrolling region */
-
- /* terminal info */
- int tt_nrow; /* number of display rows */
- int tt_ncol; /* number of display columns */
- char tt_availmodes; /* the display modes supported */
- char tt_wrap; /* has auto wrap around */
- char tt_retain; /* can retain below (db flag) */
- short tt_padc; /* the pad character */
- int tt_ntoken; /* number of compression tokens */
- int tt_token_min; /* minimun token size */
- int tt_token_max; /* maximum token size */
- int tt_set_token_cost; /* cost in addition to string */
- int tt_put_token_cost; /* constant cost */
- int tt_ack; /* checkpoint ack-nack flag */
-
- /* the frame characters */
- short *tt_frame;
-
- /* ttflush() hook */
- int (*tt_flush)();
-};
-struct tt tt;
-
-/*
- * tt_padc is used by the compression routine.
- * It is a short to allow the driver to indicate that there is no padding.
- */
-#define TT_PADC_NONE 0x100
-
-/*
- * List of terminal drivers.
- */
-struct tt_tab {
- char *tt_name;
- int tt_len;
- int (*tt_func)();
-};
-extern struct tt_tab tt_tab[];
-
-/*
- * Clean interface to termcap routines.
- * Too may t's.
- */
-char tt_strings[1024]; /* string buffer */
-char *tt_strp; /* pointer for it */
-
-struct tt_str {
- char *ts_str;
- int ts_n;
-};
-
-struct tt_str *tttgetstr();
-struct tt_str *ttxgetstr(); /* tgetstr() and expand delays */
-
-int tttputc();
-#define tttputs(s, n) tputs((s)->ts_str, (n), tttputc)
-#define ttxputs(s) ttwrite((s)->ts_str, (s)->ts_n)
-
-/*
- * Buffered output without stdio.
- * These variables have different meanings from the ww_ob* variables.
- * But I'm too lazy to think up different names.
- */
-char *tt_ob;
-char *tt_obp;
-char *tt_obe;
-#define ttputc(c) (tt_obp < tt_obe ? (*tt_obp++ = (c)) \
- : (ttflush(), *tt_obp++ = (c)))
-
-/*
- * Convenience macros for the drivers
- * They require char.h
- */
-#define ttctrl(c) ttputc(ctrl(c))
-#define ttesc(c) (ttctrl('['), ttputc(c))
diff --git a/usr.bin/window/ttf100.c b/usr.bin/window/ttf100.c
deleted file mode 100644
index 53f177b..0000000
--- a/usr.bin/window/ttf100.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)ttf100.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-
-/*
- * Freedom 100
- */
-
-#define G (WWM_GRP << WWC_MSHIFT)
-short f100_frame[16] = {
- ' ', 'J'|G, 'K'|G, 'A'|G,
- 'J'|G, 'J'|G, 'B'|G, 'M'|G,
- 'K'|G, 'D'|G, 'K'|G, 'O'|G,
- 'C'|G, 'L'|G, 'N'|G, 'I'|G
-};
-extern struct tt_str *gen_AE, *gen_AS;
-
-tt_f100()
-{
- static struct tt_str ae = { "\033%", 2 };
- static struct tt_str as = { "\033$", 2 };
-
- if (tt_generic() < 0)
- return -1;
- tt.tt_frame = f100_frame;
- tt.tt_availmodes |= WWM_GRP;
- gen_AS = &as;
- gen_AE = &ae;
- return 0;
-}
diff --git a/usr.bin/window/ttgeneric.c b/usr.bin/window/ttgeneric.c
deleted file mode 100644
index ba84e84..0000000
--- a/usr.bin/window/ttgeneric.c
+++ /dev/null
@@ -1,549 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)ttgeneric.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-
-char PC, *BC, *UP;
-
- /* normal frame */
-short gen_frame[16] = {
- ' ', '|', '-', '+',
- '|', '|', '+', '+',
- '-', '+', '-', '+',
- '+', '+', '+', '+'
-};
-
- /* ANSI graphics frame */
-#define G (WWM_GRP << WWC_MSHIFT)
-short ansi_frame[16] = {
- ' ', 'x'|G, 'Q'|G, 'm'|G,
- 'x'|G, 'x'|G, 'l'|G, 't'|G,
- 'q'|G, 'j'|G, 'q'|G, 'v'|G,
- 'k'|G, 'u'|G, 'w'|G, 'n'|G
-};
-struct tt_str ansi_AS = {
- "\033(0", 3
-};
-
-struct tt_str *gen_PC;
-struct tt_str *gen_CM;
-struct tt_str *gen_IM;
-struct tt_str *gen_IC;
-struct tt_str *gen_ICn;
-struct tt_str *gen_IP;
-struct tt_str *gen_EI;
-struct tt_str *gen_DC;
-struct tt_str *gen_DCn;
-struct tt_str *gen_AL;
-struct tt_str *gen_ALn;
-struct tt_str *gen_DL;
-struct tt_str *gen_DLn;
-struct tt_str *gen_CE;
-struct tt_str *gen_CD;
-struct tt_str *gen_CL;
-struct tt_str *gen_VS;
-struct tt_str *gen_VE;
-struct tt_str *gen_TI;
-struct tt_str *gen_TE;
-struct tt_str *gen_SO;
-struct tt_str *gen_SE;
-struct tt_str *gen_US;
-struct tt_str *gen_UE;
-struct tt_str *gen_LE;
-struct tt_str *gen_ND;
-struct tt_str *gen_UP;
-struct tt_str *gen_DO;
-struct tt_str *gen_BC;
-struct tt_str *gen_NL;
-struct tt_str *gen_CR;
-struct tt_str *gen_HO;
-struct tt_str *gen_AS;
-struct tt_str *gen_AE;
-struct tt_str *gen_XS;
-struct tt_str *gen_XE;
-struct tt_str *gen_SF;
-struct tt_str *gen_SFn;
-struct tt_str *gen_SR;
-struct tt_str *gen_SRn;
-struct tt_str *gen_CS;
-char gen_MI;
-char gen_MS;
-char gen_AM;
-char gen_OS;
-char gen_BS;
-char gen_DA;
-char gen_DB;
-char gen_NS;
-char gen_XN;
-int gen_CO;
-int gen_LI;
-int gen_UG;
-int gen_SG;
-
-gen_setinsert(new)
-char new;
-{
- if (new) {
- if (gen_IM)
- ttxputs(gen_IM);
- } else
- if (gen_EI)
- ttxputs(gen_EI);
- tt.tt_insert = new;
-}
-
-gen_setmodes(new)
-register new;
-{
- register diff;
-
- diff = new ^ tt.tt_modes;
- if (diff & WWM_REV) {
- if (new & WWM_REV) {
- if (gen_SO)
- ttxputs(gen_SO);
- } else
- if (gen_SE)
- ttxputs(gen_SE);
- }
- if (diff & WWM_UL) {
- if (new & WWM_UL) {
- if (gen_US)
- ttxputs(gen_US);
- } else
- if (gen_UE)
- ttxputs(gen_UE);
- }
- if (diff & WWM_GRP) {
- if (new & WWM_GRP) {
- if (gen_AS)
- ttxputs(gen_AS);
- } else
- if (gen_AE)
- ttxputs(gen_AE);
- }
- if (diff & WWM_USR) {
- if (new & WWM_USR) {
- if (gen_XS)
- ttxputs(gen_XS);
- } else
- if (gen_XE)
- ttxputs(gen_XE);
- }
- tt.tt_modes = new;
-}
-
-gen_insline(n)
-{
- if (tt.tt_modes) /* for concept 100 */
- gen_setmodes(0);
- if (gen_ALn)
- ttpgoto(gen_ALn, 0, n, gen_LI - tt.tt_row);
- else
- while (--n >= 0)
- tttputs(gen_AL, gen_LI - tt.tt_row);
-}
-
-gen_delline(n)
-{
- if (tt.tt_modes) /* for concept 100 */
- gen_setmodes(0);
- if (gen_DLn)
- ttpgoto(gen_DLn, 0, n, gen_LI - tt.tt_row);
- else
- while (--n >= 0)
- tttputs(gen_DL, gen_LI - tt.tt_row);
-}
-
-gen_putc(c)
-register char c;
-{
- if (tt.tt_insert)
- gen_setinsert(0);
- if (tt.tt_nmodes != tt.tt_modes)
- gen_setmodes(tt.tt_nmodes);
- ttputc(c);
- if (++tt.tt_col == gen_CO)
- if (gen_XN)
- tt.tt_col = tt.tt_row = -10;
- else if (gen_AM)
- tt.tt_col = 0, tt.tt_row++;
- else
- tt.tt_col--;
-}
-
-gen_write(p, n)
- register char *p;
- register n;
-{
- if (tt.tt_insert)
- gen_setinsert(0);
- if (tt.tt_nmodes != tt.tt_modes)
- gen_setmodes(tt.tt_nmodes);
- ttwrite(p, n);
- tt.tt_col += n;
- if (tt.tt_col == gen_CO)
- if (gen_XN)
- tt.tt_col = tt.tt_row = -10;
- else if (gen_AM)
- tt.tt_col = 0, tt.tt_row++;
- else
- tt.tt_col--;
-}
-
-gen_move(row, col)
-register int row, col;
-{
- if (tt.tt_row == row && tt.tt_col == col)
- return;
- if (!gen_MI && tt.tt_insert)
- gen_setinsert(0);
- if (!gen_MS && tt.tt_modes)
- gen_setmodes(0);
- if (row < tt.tt_scroll_top || row > tt.tt_scroll_bot)
- gen_setscroll(0, tt.tt_nrow - 1);
- if (tt.tt_row == row) {
- if (col == 0) {
- ttxputs(gen_CR);
- goto out;
- }
- if (tt.tt_col == col - 1) {
- if (gen_ND) {
- ttxputs(gen_ND);
- goto out;
- }
- } else if (tt.tt_col == col + 1) {
- if (gen_LE) {
- ttxputs(gen_LE);
- goto out;
- }
- }
- }
- if (tt.tt_col == col) {
- if (tt.tt_row == row + 1) {
- if (gen_UP) {
- ttxputs(gen_UP);
- goto out;
- }
- } else if (tt.tt_row == row - 1) {
- ttxputs(gen_DO);
- goto out;
- }
- }
- if (gen_HO && col == 0 && row == 0) {
- ttxputs(gen_HO);
- goto out;
- }
- tttgoto(gen_CM, col, row);
-out:
- tt.tt_col = col;
- tt.tt_row = row;
-}
-
-gen_start()
-{
- if (gen_VS)
- ttxputs(gen_VS);
- if (gen_TI)
- ttxputs(gen_TI);
- ttxputs(gen_CL);
- tt.tt_col = tt.tt_row = 0;
- tt.tt_insert = 0;
- tt.tt_nmodes = tt.tt_modes = 0;
-}
-
-gen_end()
-{
- if (tt.tt_insert)
- gen_setinsert(0);
- if (gen_TE)
- ttxputs(gen_TE);
- if (gen_VE)
- ttxputs(gen_VE);
-}
-
-gen_clreol()
-{
- if (tt.tt_modes) /* for concept 100 */
- gen_setmodes(0);
- tttputs(gen_CE, gen_CO - tt.tt_col);
-}
-
-gen_clreos()
-{
- if (tt.tt_modes) /* for concept 100 */
- gen_setmodes(0);
- tttputs(gen_CD, gen_LI - tt.tt_row);
-}
-
-gen_clear()
-{
- if (tt.tt_modes) /* for concept 100 */
- gen_setmodes(0);
- ttxputs(gen_CL);
-}
-
-gen_inschar(c)
-register char c;
-{
- if (!tt.tt_insert)
- gen_setinsert(1);
- if (tt.tt_nmodes != tt.tt_modes)
- gen_setmodes(tt.tt_nmodes);
- if (gen_IC)
- tttputs(gen_IC, gen_CO - tt.tt_col);
- ttputc(c);
- if (gen_IP)
- tttputs(gen_IP, gen_CO - tt.tt_col);
- if (++tt.tt_col == gen_CO)
- if (gen_XN)
- tt.tt_col = tt.tt_row = -10;
- else if (gen_AM)
- tt.tt_col = 0, tt.tt_row++;
- else
- tt.tt_col--;
-}
-
-gen_insspace(n)
-{
- if (gen_ICn)
- ttpgoto(gen_ICn, 0, n, gen_CO - tt.tt_col);
- else
- while (--n >= 0)
- tttputs(gen_IC, gen_CO - tt.tt_col);
-}
-
-gen_delchar(n)
-{
- if (gen_DCn)
- ttpgoto(gen_DCn, 0, n, gen_CO - tt.tt_col);
- else
- while (--n >= 0)
- tttputs(gen_DC, gen_CO - tt.tt_col);
-}
-
-gen_scroll_down(n)
-{
- gen_move(tt.tt_scroll_bot, 0);
- if (gen_SFn)
- ttpgoto(gen_SFn, 0, n, n);
- else
- while (--n >= 0)
- ttxputs(gen_SF);
-}
-
-gen_scroll_up(n)
-{
- gen_move(tt.tt_scroll_top, 0);
- if (gen_SRn)
- ttpgoto(gen_SRn, 0, n, n);
- else
- while (--n >= 0)
- ttxputs(gen_SR);
-}
-
-gen_setscroll(top, bot)
-{
- tttgoto(gen_CS, bot, top);
- tt.tt_scroll_top = top;
- tt.tt_scroll_bot = bot;
- tt.tt_row = tt.tt_col = -10;
-}
-
-tt_generic()
-{
- gen_PC = tttgetstr("pc");
- PC = gen_PC ? *gen_PC->ts_str : 0;
-
- gen_CM = ttxgetstr("cm"); /* may not work */
- gen_IM = ttxgetstr("im");
- gen_IC = tttgetstr("ic");
- gen_ICn = tttgetstr("IC");
- gen_IP = tttgetstr("ip");
- gen_EI = ttxgetstr("ei");
- gen_DC = tttgetstr("dc");
- gen_DCn = tttgetstr("DC");
- gen_AL = tttgetstr("al");
- gen_ALn = tttgetstr("AL");
- gen_DL = tttgetstr("dl");
- gen_DLn = tttgetstr("DL");
- gen_CE = tttgetstr("ce");
- gen_CD = tttgetstr("cd");
- gen_CL = ttxgetstr("cl");
- gen_VS = ttxgetstr("vs");
- gen_VE = ttxgetstr("ve");
- gen_TI = ttxgetstr("ti");
- gen_TE = ttxgetstr("te");
- gen_SO = ttxgetstr("so");
- gen_SE = ttxgetstr("se");
- gen_US = ttxgetstr("us");
- gen_UE = ttxgetstr("ue");
- gen_LE = ttxgetstr("le");
- gen_ND = ttxgetstr("nd");
- gen_UP = ttxgetstr("up");
- gen_DO = ttxgetstr("do");
- gen_BC = ttxgetstr("bc");
- gen_NL = ttxgetstr("nl");
- gen_CR = ttxgetstr("cr");
- gen_HO = ttxgetstr("ho");
- gen_AS = ttxgetstr("as");
- gen_AE = ttxgetstr("ae");
- gen_XS = ttxgetstr("XS");
- gen_XE = ttxgetstr("XE");
- gen_SF = ttxgetstr("sf");
- gen_SFn = ttxgetstr("SF");
- gen_SR = ttxgetstr("sr");
- gen_SRn = ttxgetstr("SR");
- gen_CS = ttxgetstr("cs");
- gen_MI = tgetflag("mi");
- gen_MS = tgetflag("ms");
- gen_AM = tgetflag("am");
- gen_OS = tgetflag("os");
- gen_BS = tgetflag("bs");
- gen_DA = tgetflag("da");
- gen_DB = tgetflag("db");
- gen_NS = tgetflag("ns");
- gen_XN = tgetflag("xn");
- gen_CO = tgetnum("co");
- gen_LI = tgetnum("li");
- gen_UG = tgetnum("ug");
- gen_SG = tgetnum("sg");
- if (gen_CL == 0 || gen_OS || gen_CM == 0)
- return -1;
-
- /*
- * Deal with obsolete termcap fields.
- */
- if (gen_LE == 0)
- if (gen_BC)
- gen_LE = gen_BC;
- else if (gen_BS) {
- static struct tt_str bc = { "\b", 1 };
- gen_BC = &bc;
- }
- if (gen_NL == 0) {
- static struct tt_str nl = { "\n", 1 };
- gen_NL = &nl;
- }
- if (gen_DO == 0)
- gen_DO = gen_NL;
- if (gen_CR == 0) {
- static struct tt_str cr = { "\r", 1 };
- gen_CR = &cr;
- }
- /*
- * Most terminal will scroll with "nl", but very few specify "sf".
- * We shouldn't use "do" here.
- */
- if (gen_SF == 0 && !gen_NS)
- gen_SF = gen_NL;
- BC = gen_LE ? gen_LE->ts_str : 0;
- UP = gen_UP ? gen_UP->ts_str : 0;
- /*
- * Fix up display attributes that we can't handle, or don't
- * really exist.
- */
- if (gen_SG > 0)
- gen_SO = 0;
- if (gen_UG > 0 || gen_US && gen_SO && ttstrcmp(gen_US, gen_SO) == 0)
- gen_US = 0;
-
- if (gen_IM && gen_IM->ts_n == 0) {
- free((char *) gen_IM);
- gen_IM = 0;
- }
- if (gen_EI && gen_EI->ts_n == 0) {
- free((char *) gen_EI);
- gen_EI = 0;
- }
- if (gen_IC && gen_IC->ts_n == 0) {
- free((char *) gen_IC);
- gen_IC = 0;
- }
- if (gen_IM)
- tt.tt_inschar = gen_inschar;
- else if (gen_IC)
- tt.tt_insspace = gen_insspace;
- if (gen_DC)
- tt.tt_delchar = gen_delchar;
- if (gen_AL)
- tt.tt_insline = gen_insline;
- if (gen_DL)
- tt.tt_delline = gen_delline;
- if (gen_CE)
- tt.tt_clreol = gen_clreol;
- if (gen_CD)
- tt.tt_clreos = gen_clreos;
- if (gen_SF)
- tt.tt_scroll_down = gen_scroll_down;
- /*
- * Don't allow scroll_up if da or db but not cs.
- * See comment in wwscroll.c.
- */
- if (gen_SR && (gen_CS || !gen_DA && !gen_DB))
- tt.tt_scroll_up = gen_scroll_up;
- if (gen_CS)
- tt.tt_setscroll = gen_setscroll;
- if (gen_SO)
- tt.tt_availmodes |= WWM_REV;
- if (gen_US)
- tt.tt_availmodes |= WWM_UL;
- if (gen_AS)
- tt.tt_availmodes |= WWM_GRP;
- if (gen_XS)
- tt.tt_availmodes |= WWM_USR;
- tt.tt_wrap = gen_AM;
- tt.tt_retain = gen_DB;
- tt.tt_ncol = gen_CO;
- tt.tt_nrow = gen_LI;
- tt.tt_start = gen_start;
- tt.tt_end = gen_end;
- tt.tt_write = gen_write;
- tt.tt_putc = gen_putc;
- tt.tt_move = gen_move;
- tt.tt_clear = gen_clear;
- tt.tt_setmodes = gen_setmodes;
- tt.tt_frame = gen_AS && ttstrcmp(gen_AS, &ansi_AS) == 0 ?
- ansi_frame : gen_frame;
- return 0;
-}
diff --git a/usr.bin/window/tth19.c b/usr.bin/window/tth19.c
deleted file mode 100644
index e1dab1e..0000000
--- a/usr.bin/window/tth19.c
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)tth19.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-#include "char.h"
-
-/*
-kb|h19|heath|h19-b|h19b|heathkit|heath-19|z19|zenith:
- cr=^M:nl=^J:bl=^G:al=1*\EL:am:le=^H:bs:cd=\EJ:ce=\EK:
- cl=\EE:cm=\EY%+ %+ :co#80:dc=\EN:dl=1*\EM:do=\EB:
- ei=\EO:ho=\EH:im=\E@:li#24:mi:nd=\EC:as=\EF:ae=\EG:ms:
- ta=^I:pt:sr=\EI:se=\Eq:so=\Ep:up=\EA:vs=\Ex4:ve=\Ey4:
- kb=^h:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\EH:
- kn#8:k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:
- l6=blue:l7=red:l8=white:k6=\EP:k7=\EQ:k8=\ER:
- es:hs:ts=\Ej\Ex5\Ex1\EY8%+ \Eo:fs=\Ek\Ey5:ds=\Ey1:
-*/
-
-#define NCOL 80
-#define NROW 24
-
-#define G (WWM_GRP << WWC_MSHIFT)
-short h19_frame[16] = {
- ' ', '`'|G, 'a'|G, 'e'|G,
- '`'|G, '`'|G, 'f'|G, 'v'|G,
- 'a'|G, 'd'|G, 'a'|G, 'u'|G,
- 'c'|G, 't'|G, 's'|G, 'b'|G
-};
-
-extern struct tt_str *gen_VS;
-extern struct tt_str *gen_VE;
-
-int h19_msp10c;
-
-#define PAD(ms10) { \
- register i; \
- for (i = ((ms10) + 5) / h19_msp10c; --i >= 0;) \
- ttputc('\0'); \
-}
-#define ICPAD() PAD((NCOL - tt.tt_col) * 1) /* 0.1 ms per char */
-#define ILPAD() PAD((NROW - tt.tt_row) * 10) /* 1 ms per char */
-
-#define H19_SETINSERT(m) ttesc((tt.tt_insert = (m)) ? '@' : 'O')
-
-h19_setmodes(new)
-register new;
-{
- register diff;
-
- diff = new ^ tt.tt_modes;
- if (diff & WWM_REV)
- ttesc(new & WWM_REV ? 'p' : 'q');
- if (diff & WWM_GRP)
- ttesc(new & WWM_REV ? 'F' : 'G');
- tt.tt_modes = new;
-}
-
-h19_insline(n)
-{
- while (--n >= 0) {
- ttesc('L');
- ILPAD();
- }
-}
-
-h19_delline(n)
-{
- while (--n >= 0) {
- ttesc('M');
- ILPAD();
- }
-}
-
-h19_putc(c)
-register char c;
-{
- if (tt.tt_nmodes != tt.tt_modes)
- (*tt.tt_setmodes)(tt.tt_nmodes);
- if (tt.tt_insert)
- H19_SETINSERT(0);
- ttputc(c);
- if (++tt.tt_col == NCOL)
- tt.tt_col = NCOL - 1;
-}
-
-h19_write(p, n)
-register char *p;
-register n;
-{
- if (tt.tt_nmodes != tt.tt_modes)
- (*tt.tt_setmodes)(tt.tt_nmodes);
- if (tt.tt_insert)
- H19_SETINSERT(0);
- ttwrite(p, n);
- tt.tt_col += n;
- if (tt.tt_col == NCOL)
- tt.tt_col = NCOL - 1;
-}
-
-h19_move(row, col)
-register char row, col;
-{
- if (tt.tt_row == row) {
- if (tt.tt_col == col)
- return;
- if (col == 0) {
- ttctrl('m');
- goto out;
- }
- if (tt.tt_col == col - 1) {
- ttesc('C');
- goto out;
- }
- if (tt.tt_col == col + 1) {
- ttctrl('h');
- goto out;
- }
- }
- if (tt.tt_col == col) {
- if (tt.tt_row == row + 1) {
- ttesc('A');
- goto out;
- }
- if (tt.tt_row == row - 1) {
- ttctrl('j');
- goto out;
- }
- }
- if (col == 0 && row == 0) {
- ttesc('H');
- goto out;
- }
- ttesc('Y');
- ttputc(' ' + row);
- ttputc(' ' + col);
-out:
- tt.tt_col = col;
- tt.tt_row = row;
-}
-
-h19_start()
-{
- if (gen_VS)
- ttxputs(gen_VS);
- ttesc('w');
- ttesc('E');
- tt.tt_col = tt.tt_row = 0;
- tt.tt_insert = 0;
- tt.tt_nmodes = tt.tt_modes = 0;
-}
-
-h19_end()
-{
- if (tt.tt_insert)
- H19_SETINSERT(0);
- if (gen_VE)
- ttxputs(gen_VE);
- ttesc('v');
-}
-
-h19_clreol()
-{
- ttesc('K');
-}
-
-h19_clreos()
-{
- ttesc('J');
-}
-
-h19_clear()
-{
- ttesc('E');
-}
-
-h19_inschar(c)
-register char c;
-{
- if (tt.tt_nmodes != tt.tt_modes)
- (*tt.tt_setmodes)(tt.tt_nmodes);
- if (!tt.tt_insert)
- H19_SETINSERT(1);
- ttputc(c);
- if (tt.tt_insert)
- ICPAD();
- if (++tt.tt_col == NCOL)
- tt.tt_col = NCOL - 1;
-}
-
-h19_delchar(n)
-{
- while (--n >= 0)
- ttesc('N');
-}
-
-h19_scroll_down(n)
-{
- h19_move(NROW - 1, 0);
- while (--n >= 0)
- ttctrl('j');
-}
-
-h19_scroll_up(n)
-{
- h19_move(0, 0);
- while (--n >= 0)
- ttesc('I');
-}
-
-tt_h19()
-{
- float cpms = (float) wwbaud / 10000; /* char per ms */
-
- h19_msp10c = 10 / cpms; /* ms per 10 char */
- gen_VS = ttxgetstr("vs");
- gen_VE = ttxgetstr("ve");
-
- tt.tt_start = h19_start;
- tt.tt_end = h19_end;
-
- tt.tt_insline = h19_insline;
- tt.tt_delline = h19_delline;
- tt.tt_inschar = h19_inschar;
- tt.tt_delchar = h19_delchar;
- tt.tt_clreol = h19_clreol;
- tt.tt_clreos = h19_clreos;
- tt.tt_clear = h19_clear;
- tt.tt_move = h19_move;
- tt.tt_write = h19_write;
- tt.tt_putc = h19_putc;
- tt.tt_scroll_down = h19_scroll_down;
- tt.tt_scroll_up = h19_scroll_up;
- tt.tt_setmodes = h19_setmodes;
-
- tt.tt_ncol = NCOL;
- tt.tt_nrow = NROW;
- tt.tt_availmodes = WWM_REV|WWM_GRP;
- tt.tt_frame = h19_frame;
- return 0;
-}
diff --git a/usr.bin/window/tth29.c b/usr.bin/window/tth29.c
deleted file mode 100644
index 54229b5..0000000
--- a/usr.bin/window/tth29.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)tth29.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-#include "char.h"
-
-/*
- * H29 Driver
- *
- * WWM_USR mode is alternate character set.
- *
-kC|h29|heath-29|z29|zenith-29:\
- :am:bc=\ED:bt=\E-:cr=^M:do=^J:nl=^J:bl=^G:\
- :al=\EL:le=^H:bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#80:dc=\EN:\
- :dl=1*\EM:do=\EB:ei=\EO:ho=\EH:im=\E@:li#24:mi:nd=\EC:as=\EF:ae=\EG:\
- :ms:ta=^I:pt:sr=\EI:se=\Eq:so=\Ep:up=\EA:vs=\Ex4:ve=\Ey4:\
- :kb=^H:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\EH:kn#1:k0=\E~:l0=HOME:\
- :k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:k6=\EP:k7=\EQ:k8=\ER:k9=\E01:\
- :es:hs:ts=\Ej\Ex5\Ex1\EY8%+ \Eo:fs=\Ek\Ey5:ds=\Ey1:us=\Es8:ue=\Es0:
- *
- */
-
-h29_setmodes(new)
-register new;
-{
- register modes = '0';
-
- if (new & WWM_REV)
- modes += 0x01;
- if (new & WWM_BLK)
- modes += 0x02;
- if (new & WWM_DIM)
- modes += 0x04;
- if (new & WWM_UL)
- modes += 0x08;
- if (new & WWM_USR)
- modes += 0x10;
- ttesc('s');
- ttputc(modes);
- if (new & WWM_GRP) {
- if ((tt.tt_modes & WWM_GRP) == 0)
- ttesc('F');
- } else
- if (tt.tt_modes & WWM_GRP)
- ttesc('G');
- tt.tt_modes = new;
-}
-
-tt_h29()
-{
- if (tt_h19() < 0)
- return -1;
- tt.tt_setmodes = h29_setmodes;
- tt.tt_availmodes |= WWM_BLK|WWM_UL|WWM_DIM|WWM_USR;
- return 0;
-}
diff --git a/usr.bin/window/ttinit.c b/usr.bin/window/ttinit.c
deleted file mode 100644
index 17b5961..0000000
--- a/usr.bin/window/ttinit.c
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)ttinit.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-#include <stdlib.h>
-
-int tt_h19();
-int tt_h29();
-int tt_f100();
-int tt_tvi925();
-int tt_wyse75();
-int tt_wyse60();
-int tt_zapple();
-int tt_zentec();
-int tt_generic();
-struct tt_tab tt_tab[] = {
- { "h19", 3, tt_h19 },
- { "h29", 3, tt_h29 },
- { "f100", 4, tt_f100 },
- { "tvi925", 6, tt_tvi925 },
- { "wyse75", 6, tt_wyse75 },
- { "wyse60", 6, tt_wyse60 },
- { "w60", 3, tt_wyse60 },
- { "zapple", 6, tt_zapple },
- { "zentec", 6, tt_zentec },
- { "generic", 0, tt_generic },
- 0
-};
-
-ttinit()
-{
- int i;
- register struct tt_tab *tp;
- register char *p, *q;
- register char *t;
-
- tt_strp = tt_strings;
-
- /*
- * Set output buffer size to about 1 second of output time.
- */
- i = MIN(wwbaud/10, 512);
- if ((tt_ob = malloc((unsigned) i)) == 0) {
- wwerrno = WWE_NOMEM;
- return -1;
- }
- tt_obp = tt_ob;
- tt_obe = tt_ob + i;
-
- /*
- * Use the standard name of the terminal (i.e. the second
- * name in termcap).
- */
- for (p = wwtermcap; *p && *p != '|' && *p != ':'; p++)
- ;
- if (*p == '|')
- p++;
- for (q = p; *q && *q != '|' && *q != ':'; q++)
- ;
- if (q != p && (t = malloc((unsigned) (q - p + 1))) != 0) {
- wwterm = t;
- while (p < q)
- *t++ = *p++;
- *t = 0;
- }
- for (tp = tt_tab; tp->tt_name != 0; tp++)
- if (strncmp(tp->tt_name, wwterm, tp->tt_len) == 0)
- break;
- if (tp->tt_name == 0) {
- wwerrno = WWE_BADTERM;
- return -1;
- }
- if ((*tp->tt_func)() < 0) {
- wwerrno = WWE_CANTDO;
- return -1;
- }
- if (wwgetttysize(0, &tt.tt_nrow, &tt.tt_ncol) < 0)
- return -1;
- tt.tt_scroll_top = 0;
- tt.tt_scroll_bot = tt.tt_nrow - 1;
- return 0;
-}
diff --git a/usr.bin/window/ttoutput.c b/usr.bin/window/ttoutput.c
deleted file mode 100644
index 1224f49..0000000
--- a/usr.bin/window/ttoutput.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)ttoutput.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-#include <errno.h>
-#include <strings.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-/*
- * Buffered output package.
- * We need this because stdio fails on non-blocking writes.
- */
-
-ttflush()
-{
- register char *p;
- register n = tt_obp - tt_ob;
-
- if (n == 0)
- return;
- if (tt.tt_checksum)
- (*tt.tt_checksum)(tt_ob, n);
- if (tt.tt_flush) {
- (*tt.tt_flush)();
- return;
- }
- wwnflush++;
- for (p = tt_ob; p < tt_obp;) {
- wwnwr++;
- n = write(STDOUT_FILENO, p, tt_obp - p);
- if (n < 0) {
- wwnwre++;
- if (errno != EWOULDBLOCK) {
- /* can't deal with this */
- p = tt_obp;
- }
- } else if (n == 0) {
- /* what to do? */
- wwnwrz++;
- } else {
- wwnwrc += n;
- p += n;
- }
- }
- tt_obp = tt_ob;
-}
-
-ttputs(s)
-register char *s;
-{
- while (*s)
- ttputc(*s++);
-}
-
-ttwrite(s, n)
- register char *s;
- register n;
-{
- switch (n) {
- case 0:
- break;
- case 1:
- ttputc(*s);
- break;
- case 2:
- if (tt_obe - tt_obp < 2)
- ttflush();
- *tt_obp++ = *s++;
- *tt_obp++ = *s;
- break;
- case 3:
- if (tt_obe - tt_obp < 3)
- ttflush();
- *tt_obp++ = *s++;
- *tt_obp++ = *s++;
- *tt_obp++ = *s;
- break;
- case 4:
- if (tt_obe - tt_obp < 4)
- ttflush();
- *tt_obp++ = *s++;
- *tt_obp++ = *s++;
- *tt_obp++ = *s++;
- *tt_obp++ = *s;
- break;
- case 5:
- if (tt_obe - tt_obp < 5)
- ttflush();
- *tt_obp++ = *s++;
- *tt_obp++ = *s++;
- *tt_obp++ = *s++;
- *tt_obp++ = *s++;
- *tt_obp++ = *s;
- break;
- default:
- while (n > 0) {
- register m;
-
- while ((m = tt_obe - tt_obp) == 0)
- ttflush();
- if ((m = tt_obe - tt_obp) > n)
- m = n;
- bcopy(s, tt_obp, m);
- tt_obp += m;
- s += m;
- n -= m;
- }
- }
-}
diff --git a/usr.bin/window/tttermcap.c b/usr.bin/window/tttermcap.c
deleted file mode 100644
index 1fb52de..0000000
--- a/usr.bin/window/tttermcap.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)tttermcap.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "tt.h"
-#include <stdlib.h>
-
-char *tgetstr();
-char *tgoto();
-
-tttputc(c)
-{
- ttputc(c);
-}
-
-ttxputc(c)
-{
- *tt_strp++ = c;
-}
-
-struct tt_str *
-tttgetstr(str)
- char *str;
-{
- register struct tt_str *s;
-
- if ((str = tgetstr(str, &tt_strp)) == 0)
- return 0;
- if ((s = (struct tt_str *) malloc(sizeof *s)) == 0)
- return 0;
- s->ts_str = str;
- s->ts_n = tt_strp - s->ts_str - 1;
- return s;
-}
-
-struct tt_str *
-ttxgetstr(str)
- char *str;
-{
- register struct tt_str *s;
- char buf[100];
- char *bufp = buf;
-
- if (tgetstr(str, &bufp) == 0)
- return 0;
- if ((s = (struct tt_str *) malloc(sizeof *s)) == 0)
- return 0;
- s->ts_str = tt_strp;
- tputs(buf, 1, ttxputc);
- s->ts_n = tt_strp - s->ts_str;
- *tt_strp++ = 0;
- return s;
-}
-
-tttgoto(s, col, row)
- struct tt_str *s;
-{
- register char *p = s->ts_str;
-
- ttputs(tgoto(p, col, row));
- for (p += s->ts_n; *--p == 0;)
- ttputc(0);
-}
-
-ttpgoto(s, col, row, n)
- struct tt_str *s;
-{
-
- tputs(tgoto(s->ts_str, col, row), n, tttputc);
-}
-
-ttstrcmp(a, b)
- register struct tt_str *a, *b;
-{
- int n, r;
-
- if (r = bcmp(a->ts_str, b->ts_str,
- (n = a->ts_n - b->ts_n) < 0 ? a->ts_n : b->ts_n))
- return r;
- return n;
-}
diff --git a/usr.bin/window/tttvi925.c b/usr.bin/window/tttvi925.c
deleted file mode 100644
index 86e0d5a..0000000
--- a/usr.bin/window/tttvi925.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * David Barto at Celerity Computer Corp.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)tttvi925.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-
-/*
- * Televideo 925 as emulated by Microterm.
- */
-
-#define G (WWM_GRP << WWC_MSHIFT)
-short tvi925_frame[16] = {
- ' ', '~'|G, '|'|G, 'c'|G,
- '~'|G, '~'|G, '`'|G, 'e'|G,
- '|'|G, 'a'|G, '|'|G, 'g'|G,
- 'b'|G, 'f'|G, 'h'|G, 'd'|G
-};
-
-tt_tvi925()
-{
-
- if (tt_generic() < 0)
- return -1;
- tt.tt_availmodes |= WWM_GRP;
- tt.tt_frame = tvi925_frame;
- return 0;
-}
diff --git a/usr.bin/window/ttwyse60.c b/usr.bin/window/ttwyse60.c
deleted file mode 100644
index 5e023ba..0000000
--- a/usr.bin/window/ttwyse60.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 1987 by David C. Elliott, MIPS Computer Systems.
- *
- * Unlimited redistribution allowed as long as this notice
- * is kept intact.
- */
-
-/*
- * Copyright (c) 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * David C. Elliott, of MIPS Computer Systems.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)ttwyse60.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-
-#define G (WWM_GRP << WWC_MSHIFT)
-short wyse60_frame[16] = {
- ' ', '6'|G, ':'|G, '1'|G,
- '6'|G, '6'|G, '2'|G, '4'|G,
- ':'|G, '5'|G, ':'|G, '='|G,
- '3'|G, '9'|G, '0'|G, '0'|G
-};
-
-extern struct tt_str *gen_AS;
-extern struct tt_str *gen_AE;
-
-tt_wyse60()
-{
- static struct tt_str ae = { "\033H\003", 3 };
- static struct tt_str as = { "\033H\002", 3 };
-
- if (tt_generic() < 0)
- return -1;
- tt.tt_availmodes |= WWM_GRP;
- tt.tt_frame = wyse60_frame;
- if (gen_AS == 0)
- gen_AS = &as;
- if (gen_AE == 0)
- gen_AE = &ae;
- return 0;
-}
diff --git a/usr.bin/window/ttwyse75.c b/usr.bin/window/ttwyse75.c
deleted file mode 100644
index 37e0194..0000000
--- a/usr.bin/window/ttwyse75.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 1987 by David C. Elliott, MIPS Computer Systems.
- *
- * Unlimited redistribution allowed as long as this notice
- * is kept intact.
- */
-
-/*
- * Copyright (c) 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * David C. Elliott, of MIPS Computer Systems.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)ttwyse75.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-
-#define G (WWM_GRP << WWC_MSHIFT)
-short wyse75_frame[16] = {
- ' ', 'x'|G, 'q'|G, 'm'|G,
- 'x'|G, 'x'|G, 'l'|G, 't'|G,
- 'q'|G, 'j'|G, 'q'|G, 'v'|G,
- 'k'|G, 'u'|G, 'w'|G, 'v'|G
-};
-
-extern struct tt_str *gen_AS;
-extern struct tt_str *gen_AE;
-
-tt_wyse75()
-{
- static struct tt_str ae = { "\033(B", 3 };
- static struct tt_str as = { "\033(0", 3 };
-
- if (tt_generic() < 0)
- return -1;
- tt.tt_availmodes |= WWM_GRP;
- tt.tt_frame = wyse75_frame;
- if (gen_AS == 0)
- gen_AS = &as;
- if (gen_AE == 0)
- gen_AE = &ae;
- return 0;
-}
diff --git a/usr.bin/window/ttzapple.c b/usr.bin/window/ttzapple.c
deleted file mode 100644
index 80e1351..0000000
--- a/usr.bin/window/ttzapple.c
+++ /dev/null
@@ -1,486 +0,0 @@
-/*
- * Copyright (c) 1989, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)ttzapple.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-#include "char.h"
-#include <stdio.h>
-
-/*
-zz|zapple|perfect apple:\
- :am:pt:co#80:li#24:le=^H:nd=^F:up=^K:do=^J:\
- :ho=\E0:ll=\E1:cm=\E=%+ %+ :ch=\E<%+ :cv=\E>%+ :\
- :cl=\E4:ce=\E2:cd=\E3:rp=\E@%.%+ :\
- :so=\E+:se=\E-:\
- :dc=\Ec:DC=\EC%+ :ic=\Ei:IC=\EI%+ :\
- :al=\Ea:AL=\EA%+ :dl=\Ed:DL=\ED%+ :\
- :sf=\Ef:SF=\EF%+ :sr=\Er:SR=\ER%+ :cs=\E?%+ %+ :\
- :is=\E-\ET :
-*/
-
-#define NCOL 80
-#define NROW 24
-#define TOKEN_MAX 32
-
-extern short gen_frame[];
-
- /* for error correction */
-int zz_ecc;
-int zz_lastc;
-
- /* for checkpointing */
-int zz_sum;
-
-zz_setmodes(new)
-{
- if (new & WWM_REV) {
- if ((tt.tt_modes & WWM_REV) == 0)
- ttesc('+');
- } else
- if (tt.tt_modes & WWM_REV)
- ttesc('-');
- tt.tt_modes = new;
-}
-
-zz_insline(n)
-{
- if (n == 1)
- ttesc('a');
- else {
- ttesc('A');
- ttputc(n + ' ');
- }
-}
-
-zz_delline(n)
-{
- if (n == 1)
- ttesc('d');
- else {
- ttesc('D');
- ttputc(n + ' ');
- }
-}
-
-zz_putc(c)
- char c;
-{
- if (tt.tt_nmodes != tt.tt_modes)
- zz_setmodes(tt.tt_nmodes);
- ttputc(c);
- if (++tt.tt_col == NCOL)
- tt.tt_col = 0, tt.tt_row++;
-}
-
-zz_write(p, n)
- register char *p;
- register n;
-{
- if (tt.tt_nmodes != tt.tt_modes)
- zz_setmodes(tt.tt_nmodes);
- ttwrite(p, n);
- tt.tt_col += n;
- if (tt.tt_col == NCOL)
- tt.tt_col = 0, tt.tt_row++;
-}
-
-zz_move(row, col)
- register row, col;
-{
- register x;
-
- if (tt.tt_row == row) {
-same_row:
- if ((x = col - tt.tt_col) == 0)
- return;
- if (col == 0) {
- ttctrl('m');
- goto out;
- }
- switch (x) {
- case 2:
- ttctrl('f');
- case 1:
- ttctrl('f');
- goto out;
- case -2:
- ttctrl('h');
- case -1:
- ttctrl('h');
- goto out;
- }
- if ((col & 7) == 0 && x > 0 && x <= 16) {
- ttctrl('i');
- if (x > 8)
- ttctrl('i');
- goto out;
- }
- ttesc('<');
- ttputc(col + ' ');
- goto out;
- }
- if (tt.tt_col == col) {
- switch (row - tt.tt_row) {
- case 2:
- ttctrl('j');
- case 1:
- ttctrl('j');
- goto out;
- case -2:
- ttctrl('k');
- case -1:
- ttctrl('k');
- goto out;
- }
- if (col == 0) {
- if (row == 0)
- goto home;
- if (row == NROW - 1)
- goto ll;
- }
- ttesc('>');
- ttputc(row + ' ');
- goto out;
- }
- if (col == 0) {
- if (row == 0) {
-home:
- ttesc('0');
- goto out;
- }
- if (row == tt.tt_row + 1) {
- /*
- * Do newline first to match the sequence
- * for scroll down and return
- */
- ttctrl('j');
- ttctrl('m');
- goto out;
- }
- if (row == NROW - 1) {
-ll:
- ttesc('1');
- goto out;
- }
- }
- /* favor local motion for better compression */
- if (row == tt.tt_row + 1) {
- ttctrl('j');
- goto same_row;
- }
- if (row == tt.tt_row - 1) {
- ttctrl('k');
- goto same_row;
- }
- ttesc('=');
- ttputc(' ' + row);
- ttputc(' ' + col);
-out:
- tt.tt_col = col;
- tt.tt_row = row;
-}
-
-zz_start()
-{
- ttesc('T');
- ttputc(TOKEN_MAX + ' ');
- ttesc('U');
- ttputc('!');
- zz_ecc = 1;
- zz_lastc = -1;
- ttesc('v');
- ttflush();
- zz_sum = 0;
- zz_setscroll(0, NROW - 1);
- zz_clear();
- zz_setmodes(0);
-}
-
-zz_reset()
-{
- zz_setscroll(0, NROW - 1);
- tt.tt_modes = WWM_REV;
- zz_setmodes(0);
- tt.tt_col = tt.tt_row = -10;
-}
-
-zz_end()
-{
- ttesc('T');
- ttputc(' ');
- ttesc('U');
- ttputc(' ');
- zz_ecc = 0;
-}
-
-zz_clreol()
-{
- ttesc('2');
-}
-
-zz_clreos()
-{
- ttesc('3');
-}
-
-zz_clear()
-{
- ttesc('4');
- tt.tt_col = tt.tt_row = 0;
-}
-
-zz_insspace(n)
-{
- if (n == 1)
- ttesc('i');
- else {
- ttesc('I');
- ttputc(n + ' ');
- }
-}
-
-zz_delchar(n)
-{
- if (n == 1)
- ttesc('c');
- else {
- ttesc('C');
- ttputc(n + ' ');
- }
-}
-
-zz_scroll_down(n)
-{
- if (n == 1)
- if (tt.tt_row == NROW - 1)
- ttctrl('j');
- else
- ttesc('f');
- else {
- ttesc('F');
- ttputc(n + ' ');
- }
-}
-
-zz_scroll_up(n)
-{
- if (n == 1)
- ttesc('r');
- else {
- ttesc('R');
- ttputc(n + ' ');
- }
-}
-
-zz_setscroll(top, bot)
-{
- ttesc('?');
- ttputc(top + ' ');
- ttputc(bot + ' ');
- tt.tt_scroll_top = top;
- tt.tt_scroll_bot = bot;
-}
-
-int zz_debug = 0;
-
-zz_set_token(t, s, n)
- char *s;
-{
- if (tt.tt_nmodes != tt.tt_modes)
- zz_setmodes(tt.tt_nmodes);
- if (zz_debug) {
- char buf[100];
- zz_setmodes(WWM_REV);
- (void) sprintf(buf, "%02x=", t);
- ttputs(buf);
- tt.tt_col += 3;
- }
- ttputc(0x80);
- ttputc(t + 1);
- s[n - 1] |= 0x80;
- ttwrite(s, n);
- s[n - 1] &= ~0x80;
-}
-
-/*ARGSUSED*/
-zz_put_token(t, s, n)
- char *s;
-{
- if (tt.tt_nmodes != tt.tt_modes)
- zz_setmodes(tt.tt_nmodes);
- if (zz_debug) {
- char buf[100];
- zz_setmodes(WWM_REV);
- (void) sprintf(buf, "%02x>", t);
- ttputs(buf);
- tt.tt_col += 3;
- }
- ttputc(t + 0x81);
-}
-
-zz_rint(p, n)
- char *p;
-{
- register i;
- register char *q;
-
- if (!zz_ecc)
- return n;
- for (i = n, q = p; --i >= 0;) {
- register c = (unsigned char) *p++;
-
- if (zz_lastc == 0) {
- switch (c) {
- case 0:
- *q++ = 0;
- zz_lastc = -1;
- break;
- case 1: /* start input ecc */
- zz_ecc = 2;
- zz_lastc = -1;
- wwnreadstat++;
- break;
- case 2: /* ack checkpoint */
- tt.tt_ack = 1;
- zz_lastc = -1;
- wwnreadack++;
- break;
- case 3: /* nack checkpoint */
- tt.tt_ack = -1;
- zz_lastc = -1;
- wwnreadnack++;
- break;
- default:
- zz_lastc = c;
- wwnreadec++;
- }
- } else if (zz_ecc == 1) {
- if (c)
- *q++ = c;
- else
- zz_lastc = 0;
- } else {
- if (zz_lastc < 0) {
- zz_lastc = c;
- } else if (zz_lastc == c) {
- *q++ = zz_lastc;
- zz_lastc = -1;
- } else {
- wwnreadec++;
- zz_lastc = c;
- }
- }
- }
- return q - (p - n);
-}
-
-zz_checksum(p, n)
- register char *p;
- register n;
-{
- while (--n >= 0) {
- register c = *p++ & 0x7f;
- c ^= zz_sum;
- zz_sum = c << 1 | c >> 11 & 1;
- }
-}
-
-zz_compress(flag)
-{
- if (flag)
- tt.tt_checksum = 0;
- else
- tt.tt_checksum = zz_checksum;
-}
-
-zz_checkpoint()
-{
- static char x[] = { ctrl('['), 'V', 0, 0 };
-
- zz_checksum(x, sizeof x);
- ttesc('V');
- ttputc(' ' + (zz_sum & 0x3f));
- ttputc(' ' + (zz_sum >> 6 & 0x3f));
- ttflush();
- zz_sum = 0;
-}
-
-tt_zapple()
-{
- tt.tt_insspace = zz_insspace;
- tt.tt_delchar = zz_delchar;
- tt.tt_insline = zz_insline;
- tt.tt_delline = zz_delline;
- tt.tt_clreol = zz_clreol;
- tt.tt_clreos = zz_clreos;
- tt.tt_scroll_down = zz_scroll_down;
- tt.tt_scroll_up = zz_scroll_up;
- tt.tt_setscroll = zz_setscroll;
- tt.tt_availmodes = WWM_REV;
- tt.tt_wrap = 1;
- tt.tt_retain = 0;
- tt.tt_ncol = NCOL;
- tt.tt_nrow = NROW;
- tt.tt_start = zz_start;
- tt.tt_reset = zz_reset;
- tt.tt_end = zz_end;
- tt.tt_write = zz_write;
- tt.tt_putc = zz_putc;
- tt.tt_move = zz_move;
- tt.tt_clear = zz_clear;
- tt.tt_setmodes = zz_setmodes;
- tt.tt_frame = gen_frame;
- tt.tt_padc = TT_PADC_NONE;
- tt.tt_ntoken = 127;
- tt.tt_set_token = zz_set_token;
- tt.tt_put_token = zz_put_token;
- tt.tt_token_min = 1;
- tt.tt_token_max = TOKEN_MAX;
- tt.tt_set_token_cost = 2;
- tt.tt_put_token_cost = 1;
- tt.tt_compress = zz_compress;
- tt.tt_checksum = zz_checksum;
- tt.tt_checkpoint = zz_checkpoint;
- tt.tt_reset = zz_reset;
- tt.tt_rint = zz_rint;
- return 0;
-}
diff --git a/usr.bin/window/ttzentec.c b/usr.bin/window/ttzentec.c
deleted file mode 100644
index 0e80711..0000000
--- a/usr.bin/window/ttzentec.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)ttzentec.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-
-/*
- * Zentec 1021
- *
- * We let the termcap entry specify how to enter and exit graphics mode,
- * since it varies with what the terminal is emulating.
- */
-
-#define G (WWM_GRP << WWC_MSHIFT)
-short zentec_frame[16] = {
- ' ', 'x'|G, 'q'|G, 'm'|G,
- 'x'|G, 'x'|G, 'l'|G, 't'|G,
- 'q'|G, 'j'|G, 'q'|G, 'v'|G,
- 'k'|G, 'u'|G, 'w'|G, 'n'|G
-};
-
-tt_zentec()
-{
- if (tt_generic() < 0)
- return -1;
- if (tt.tt_availmodes | WWM_GRP)
- tt.tt_frame = zentec_frame;
- return 0;
-}
diff --git a/usr.bin/window/value.h b/usr.bin/window/value.h
deleted file mode 100644
index b55e210..0000000
--- a/usr.bin/window/value.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)value.h 8.1 (Berkeley) 6/6/93
- * $FreeBSD$
- */
-
-struct value {
- char v_type;
- union {
- int V_num;
- char *V_str;
- } v_un;
-};
-#define v_num v_un.V_num
-#define v_str v_un.V_str
-
-#define V_NUM 1
-#define V_STR 2
-#define V_ERR 3
-
-#define val_free(v) ((v).v_type == V_STR ? str_free((v).v_str) : 0)
diff --git a/usr.bin/window/var.c b/usr.bin/window/var.c
deleted file mode 100644
index 0ffa8a7..0000000
--- a/usr.bin/window/var.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)var.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "value.h"
-#include "var.h"
-#include "mystring.h"
-#include <stdlib.h>
-
-struct var *
-var_set1(head, name, v)
-struct var **head;
-char *name;
-struct value *v;
-{
- register struct var **p;
- register struct var *r;
- struct value val;
-
- /* do this first, easier to recover */
- val = *v;
- if (val.v_type == V_STR && val.v_str != 0 &&
- (val.v_str = str_cpy(val.v_str)) == 0)
- return 0;
- if (*(p = var_lookup1(head, name)) == 0) {
- r = (struct var *) malloc(sizeof (struct var));
- if (r == 0) {
- val_free(val);
- return 0;
- }
- if ((r->r_name = str_cpy(name)) == 0) {
- val_free(val);
- free((char *) r);
- return 0;
- }
- r->r_left = r->r_right = 0;
- *p = r;
- } else {
- r = *p;
- val_free(r->r_val);
- }
- r->r_val = val;
- return r;
-}
-
-struct var *
-var_setstr1(head, name, str)
-struct var **head;
-char *name;
-char *str;
-{
- struct value v;
-
- v.v_type = V_STR;
- v.v_str = str;
- return var_set1(head, name, &v);
-}
-
-struct var *
-var_setnum1(head, name, num)
-struct var **head;
-char *name;
-int num;
-{
- struct value v;
-
- v.v_type = V_NUM;
- v.v_num = num;
- return var_set1(head, name, &v);
-}
-
-var_unset1(head, name)
-struct var **head;
-char *name;
-{
- register struct var **p;
- register struct var *r;
-
- if (*(p = var_lookup1(head, name)) == 0)
- return -1;
- r = *p;
- *p = r->r_left;
- while (*p != 0)
- p = &(*p)->r_right;
- *p = r->r_right;
- val_free(r->r_val);
- str_free(r->r_name);
- free((char *) r);
- return 0;
-}
-
-struct var **
-var_lookup1(p, name)
-register struct var **p;
-register char *name;
-{
- register cmp;
-
- while (*p != 0) {
- if ((cmp = strcmp(name, (*p)->r_name)) < 0)
- p = &(*p)->r_left;
- else if (cmp > 0)
- p = &(*p)->r_right;
- else
- break;
- }
- return p;
-}
-
-var_walk1(r, func, a)
-register struct var *r;
-int (*func)();
-long a;
-{
- if (r == 0)
- return 0;
- if (var_walk1(r->r_left, func, a) < 0 || (*func)(a, r) < 0
- || var_walk1(r->r_right, func, a) < 0)
- return -1;
- return 0;
-}
diff --git a/usr.bin/window/var.h b/usr.bin/window/var.h
deleted file mode 100644
index 645d2da..0000000
--- a/usr.bin/window/var.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)var.h 8.1 (Berkeley) 6/6/93
- * $FreeBSD$
- */
-
-struct var {
- struct var *r_left;
- struct var *r_right;
- char *r_name;
- struct value r_val;
-};
-
-struct var *var_set1();
-struct var *var_setstr1();
-struct var *var_setnum1();
-struct var **var_lookup1();
-
-#define var_set(n, v) var_set1(&var_head, n, v)
-#define var_setstr(n, s) var_setstr1(&var_head, n, s)
-#define var_setnum(n, i) var_setnum1(&var_head, n, i)
-#define var_unset(n) var_unset1(&var_head, n)
-#define var_lookup(n) (*var_lookup1(&var_head, n))
-#define var_walk(f, a) var_walk1(var_head, f, a)
-
-struct var *var_head; /* secret, shhh */
diff --git a/usr.bin/window/win.c b/usr.bin/window/win.c
deleted file mode 100644
index c5f0e451..0000000
--- a/usr.bin/window/win.c
+++ /dev/null
@@ -1,372 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)win.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "defs.h"
-#include "char.h"
-
-/*
- * Higher level routines for dealing with windows.
- *
- * There are two types of windows: user window, and information window.
- * User windows are the ones with a pty and shell. Information windows
- * are for displaying error messages, and other information.
- *
- * The windows are doubly linked in overlapping order and divided into
- * two groups: foreground and normal. Information
- * windows are always foreground. User windows can be either.
- * Addwin() adds a window to the list at the top of one of the two groups.
- * Deletewin() deletes a window. Front() moves a window to the front
- * of its group. Wwopen(), wwadd(), and wwdelete() should never be called
- * directly.
- */
-
-/*
- * Open a user window.
- */
-struct ww *
-openwin(id, row, col, nrow, ncol, nline, label, haspty, hasframe, shf, sh)
-char *label;
-char haspty, hasframe;
-char *shf, **sh;
-{
- register struct ww *w;
-
- if (id < 0 && (id = findid()) < 0)
- return 0;
- if (row + nrow <= 0 || row > wwnrow - 1
- || col + ncol <= 0 || col > wwncol - 1) {
- error("Illegal window position.");
- return 0;
- }
- w = wwopen(haspty ? WWO_PTY : WWO_SOCKET, nrow, ncol, row, col, nline);
- if (w == 0) {
- error("Can't open window: %s.", wwerror());
- return 0;
- }
- w->ww_id = id;
- window[id] = w;
- w->ww_hasframe = hasframe;
- w->ww_alt = w->ww_w;
- if (label != 0 && setlabel(w, label) < 0)
- error("No memory for label.");
- wwcursor(w, 1);
- /*
- * We have to do this little maneuver to make sure
- * addwin() puts w at the top, so we don't waste an
- * insert and delete operation.
- */
- setselwin((struct ww *)0);
- addwin(w, 0);
- setselwin(w);
- if (wwspawn(w, shf, sh) < 0) {
- error("Can't execute %s: %s.", shf, wwerror());
- closewin(w);
- return 0;
- }
- return w;
-}
-
-findid()
-{
- register i;
-
- for (i = 0; i < NWINDOW && window[i] != 0; i++)
- ;
- if (i >= NWINDOW) {
- error("Too many windows.");
- return -1;
- }
- return i;
-}
-
-struct ww *
-findselwin()
-{
- register struct ww *w, *s = 0;
- register i;
-
- for (i = 0; i < NWINDOW; i++)
- if ((w = window[i]) != 0 && w != selwin &&
- (s == 0 ||
- !isfg(w) && (w->ww_order < s->ww_order || isfg(s))))
- s = w;
- return s;
-}
-
-/*
- * Close a user window. Close all if w == 0.
- */
-closewin(w)
-register struct ww *w;
-{
- char didit = 0;
- register i;
-
- if (w != 0) {
- closewin1(w);
- didit++;
- } else
- for (i = 0; i < NWINDOW; i++) {
- if ((w = window[i]) == 0)
- continue;
- closewin1(w);
- didit++;
- }
- if (didit) {
- if (selwin == 0)
- if (lastselwin != 0) {
- setselwin(lastselwin);
- lastselwin = 0;
- } else if (w = findselwin())
- setselwin(w);
- if (lastselwin == 0 && selwin)
- if (w = findselwin())
- lastselwin = w;
- reframe();
- }
-}
-
-/*
- * Open an information (display) window.
- */
-struct ww *
-openiwin(nrow, label)
-char *label;
-{
- register struct ww *w;
-
- if ((w = wwopen(0, nrow, wwncol, 2, 0, 0)) == 0)
- return 0;
- w->ww_mapnl = 1;
- w->ww_hasframe = 1;
- w->ww_nointr = 1;
- w->ww_noupdate = 1;
- w->ww_unctrl = 1;
- w->ww_id = -1;
- w->ww_center = 1;
- (void) setlabel(w, label);
- addwin(w, 1);
- reframe();
- return w;
-}
-
-/*
- * Close an information window.
- */
-closeiwin(w)
-struct ww *w;
-{
- closewin1(w);
- reframe();
-}
-
-closewin1(w)
-register struct ww *w;
-{
- if (w == selwin)
- selwin = 0;
- if (w == lastselwin)
- lastselwin = 0;
- if (w->ww_id >= 0 && w->ww_id < NWINDOW)
- window[w->ww_id] = 0;
- if (w->ww_label)
- str_free(w->ww_label);
- deletewin(w);
- wwclose(w);
-}
-
-/*
- * Move the window to the top of its group.
- * Don't do it if already fully visible.
- * Wwvisible() doesn't work for tinted windows.
- * But anything to make it faster.
- * Always reframe() if doreframe is true.
- */
-front(w, doreframe)
-register struct ww *w;
-char doreframe;
-{
- if (w->ww_back != (isfg(w) ? framewin : fgwin) && !wwvisible(w)) {
- deletewin(w);
- addwin(w, isfg(w));
- doreframe = 1;
- }
- if (doreframe)
- reframe();
-}
-
-/*
- * Add a window at the top of normal windows or foreground windows.
- * For normal windows, we put it behind the current window.
- */
-addwin(w, fg)
-register struct ww *w;
-char fg;
-{
- if (fg) {
- wwadd(w, framewin);
- if (fgwin == framewin)
- fgwin = w;
- } else
- wwadd(w, selwin != 0 && selwin != w && !isfg(selwin)
- ? selwin : fgwin);
-}
-
-/*
- * Delete a window.
- */
-deletewin(w)
-register struct ww *w;
-{
- if (fgwin == w)
- fgwin = w->ww_back;
- wwdelete(w);
-}
-
-reframe()
-{
- register struct ww *w;
-
- wwunframe(framewin);
- for (w = wwhead.ww_back; w != &wwhead; w = w->ww_back)
- if (w->ww_hasframe) {
- wwframe(w, framewin);
- labelwin(w);
- }
-}
-
-labelwin(w)
-register struct ww *w;
-{
- int mode = w == selwin ? WWM_REV : 0;
-
- if (!w->ww_hasframe)
- return;
- if (w->ww_id >= 0) {
- char buf[2];
-
- buf[0] = w->ww_id + '1';
- buf[1] = 0;
- wwlabel(w, framewin, 1, buf, mode);
- }
- if (w->ww_label) {
- int col;
-
- if (w->ww_center) {
- col = (w->ww_w.nc - strlen(w->ww_label)) / 2;
- col = MAX(3, col);
- } else
- col = 3;
- wwlabel(w, framewin, col, w->ww_label, mode);
- }
-}
-
-stopwin(w)
- register struct ww *w;
-{
- if (w->ww_pty >= 0 && w->ww_ispty && wwstoptty(w->ww_pty) < 0)
- error("Can't stop output: %s.", wwerror());
- else
- w->ww_stopped = 1;
-}
-
-startwin(w)
- register struct ww *w;
-{
- if (w->ww_pty >= 0 && w->ww_ispty && wwstarttty(w->ww_pty) < 0)
- error("Can't start output: %s.", wwerror());
- else
- w->ww_stopped = 0;
-}
-
-sizewin(w, nrow, ncol)
-register struct ww *w;
-{
- struct ww *back = w->ww_back;
-
- w->ww_alt.nr = w->ww_w.nr;
- w->ww_alt.nc = w->ww_w.nc;
- wwdelete(w);
- if (wwsize(w, nrow, ncol) < 0)
- error("Can't resize window: %s.", wwerror());
- wwadd(w, back);
- reframe();
-}
-
-waitnl(w)
-struct ww *w;
-{
- (void) waitnl1(w, "[Type any key to continue]");
-}
-
-more(w, always)
-register struct ww *w;
-char always;
-{
- int c;
- char uc = w->ww_unctrl;
-
- if (!always && w->ww_cur.r < w->ww_w.b - 2)
- return 0;
- c = waitnl1(w, "[Type escape to abort, any other key to continue]");
- w->ww_unctrl = 0;
- wwputs("\033E", w);
- w->ww_unctrl = uc;
- return c == ctrl('[') ? 2 : 1;
-}
-
-waitnl1(w, prompt)
-register struct ww *w;
-char *prompt;
-{
- char uc = w->ww_unctrl;
-
- w->ww_unctrl = 0;
- front(w, 0);
- wwprintf(w, "\033Y%c%c\033sA%s\033rA ",
- w->ww_w.nr - 1 + ' ', ' ', prompt); /* print on last line */
- wwcurtowin(w);
- while (wwpeekc() < 0)
- wwiomux();
- w->ww_unctrl = uc;
- return wwgetc();
-}
diff --git a/usr.bin/window/window.1 b/usr.bin/window/window.1
deleted file mode 100644
index 307ae2e..0000000
--- a/usr.bin/window/window.1
+++ /dev/null
@@ -1,1072 +0,0 @@
-.\" Copyright (c) 1985, 1990, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" This code is derived from software contributed to Berkeley by
-.\" Edward Wang at The University of California, Berkeley.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)window.1 8.2 (Berkeley) 12/30/93
-.\" $FreeBSD$
-.\"
-.Dd December 30, 1993
-.Dt WINDOW 1
-.Os
-.Sh NAME
-.Nm window
-.Nd window environment
-.Sh SYNOPSIS
-.Nm
-.Op Fl t
-.Op Fl f
-.Op Fl d
-.Op Fl e Ar escape-char
-.Op Fl c Ar command
-.Sh DESCRIPTION
-The
-.Nm
-utility implements a window environment on
-.Tn ASCII
-terminals.
-.Pp
-A window is a rectangular portion of the physical terminal
-screen associated with a set of processes.
-Its size and
-position can be changed by the user at any time.
-Processes
-communicate with their window in the same way they normally
-interact with a terminal\-through their standard input, output,
-and diagnostic file descriptors.
-The window program handles the
-details of redirecting input and output to and from the
-windows.
-At any one time, only one window can receive
-input from the keyboard, but all windows can simultaneously send output
-to the display.
-.Pp
-When
-.Nm
-starts up, the commands (see long commands below)
-contained in the file
-.Pa .windowrc
-in the user's home directory are
-executed.
-If it does not exist, two equal sized windows spanning
-the terminal screen are created by default.
-.Pp
-The command line options are
-.Bl -tag -width Fl
-.It Fl t
-Turn on terse mode (see
-.Ic terse
-command below).
-.It Fl f
-Fast.
-Do not perform any startup action.
-.It Fl d
-Ignore
-.Pa .windowrc
-and create the two default
-windows instead.
-.It Fl e Ar escape-char
-Set the escape character to
-.Ar escape-char .
-.Ar Escape-char
-can be a single character, or in the form
-.Ic ^X
-where
-.Ar X
-is any character, meaning
-.No control\- Ns Ar X .
-.It Fl c Ar command
-Execute the string
-.Ar command
-as a long command (see below)
-before doing anything else.
-.El
-.Pp
-Windows can overlap and are framed as necessary.
-Each window
-is named by one of the digits ``1'' to ``9''.
-This one-character
-identifier, as well as a user definable label string, are displayed
-with the window on the top edge of its frame.
-A window can be
-designated to be in the
-.Ar foreground ,
-in which case it will always be
-on top of all normal, non-foreground windows, and can be covered
-only by other foreground windows.
-A window need not be completely
-within the edges of the terminal screen.
-Thus a large window
-(possibly larger than the screen) may be positioned to show only
-a portion of its full size.
-.Pp
-Each window has a cursor and a set of control functions.
-Most intelligent
-terminal operations such as line and
-character deletion and insertion are supported.
-Display modes
-such as underlining and reverse video are available if they are
-supported by the terminal.
-In addition,
-similar to terminals with multiple pages of memory,
-each window has a text buffer which can have more lines than the window
-itself.
-.Ss Process Environment
-With each newly created window, a shell program is spawned with its
-process environment tailored to that window.
-Its standard input,
-output, and diagnostic file descriptors are bound to one end of either
-a pseudo-terminal (see
-.Xr pty 4 )
-or a
-.Ux
-domain socket (see
-.Xr socketpair 2 ) .
-If a pseudo-terminal is used, then its special
-characters and modes (see
-.Xr stty 1 )
-are copied from the physical
-terminal.
-A
-.Xr termcap 5
-entry tailored to this window is created
-and passed as environment (see
-.Xr environ 7 )
-variable
-.Ev TERMCAP .
-The termcap entry contains the window's size and
-characteristics as well as information from the physical terminal,
-such as the existence of underline, reverse video, and other display
-modes, and the codes produced by the terminal's function keys,
-if any.
-In addition, the window size attributes of the pseudo-terminal
-are set to reflect the size of this window, and updated whenever
-it is changed by the user.
-In particular, the editor
-.Xr vi 1
-uses
-this information to redraw its display.
-.Ss Operation
-During normal execution,
-.Nm
-can be in one of two states:
-conversation mode and command mode.
-In conversation mode, the
-terminal's real cursor is placed at the cursor position of a particular
-window--called the current window--and input from the keyboard is sent
-to the process in that window.
-The current window is always
-on top of all other windows, except those in foreground.
-In addition,
-it is set apart by highlighting its identifier and label in reverse video.
-.Pp
-Typing
-.Nm Ns 's
-escape character (normally
-.Ic ^P )
-in conversation
-mode switches it into command mode.
-In command mode, the top line of
-the terminal screen becomes the command prompt window, and
-.Nm
-interprets input from the keyboard as commands to manipulate windows.
-.Pp
-There are two types of commands: short commands are usually one or two
-key strokes; long commands are strings either typed by the user in the
-command window (see the
-.Dq Ic \&:
-command below), or read from a file (see
-.Ic source
-below).
-.Ss Short Commands
-Below,
-.Ar \&#
-represents one of the digits ``1'' to ``9''
-corresponding to the windows 1 to 9.
-.Ic ^X
-means
-.No control\- Ns Ar X ,
-where
-.Ar X
-is any character.
-In particular,
-.Ic ^^
-is
-.Li control\-^ .
-.Ar Escape
-is the escape key, or
-.Ic ^\&[ .
-.Bl -tag -width Ds
-.It Ar #
-Select window
-.Ar #
-as the current window
-and return to conversation mode.
-.It Ic \&% Ns Ar #
-Select window
-.Ar #
-but stay in command mode.
-.It Ic ^^
-Select the previous window and return to conversation
-mode.
-This is useful for toggling between two windows.
-.It Ic escape
-Return to conversation mode.
-.It Ic ^P
-Return to conversation mode and write
-.Ic ^P
-to the
-current window.
-Thus, typing two
-.Ic ^P Ns 's
-in conversation
-mode sends one to the current window.
-If the
-.Nm
-escape is changed to some other character, that
-character takes the place of
-.Ic ^P
-here.
-.It Ic \&?
-List a short summary of commands.
-.It Ic ^L
-Refresh the screen.
-.It Ic q
-Exit
-.Nm .
-Confirmation is requested.
-.It Ic ^Z
-Suspend
-.Nm .
-.It Ic w
-Create a new window.
-The user is prompted for the positions
-of the upper left and lower right corners of the window.
-The cursor is placed on the screen and the keys ``h'', ``j'',
-``k'', and ``l''
-move the cursor left, down, up, and right, respectively.
-The keys ``H'', ``J'', ``K'', and ``L'' move the cursor to the respective
-limits of the screen.
-Typing a number before the movement keys
-repeats the movement that number of times.
-Return enters the cursor position
-as the upper left corner of the window.
-The lower right corner
-is entered in the same manner.
-During this process,
-the placement of the new window is indicated by a rectangular
-box drawn on the screen, corresponding to where the new window
-will be framed.
-Typing escape at any point
-cancels this command.
-.Pp
-This window becomes the current window,
-and is given the first available ID.
-The default buffer size
-is used (see
-.Ar default_nline
-command below).
-.Pp
-Only fully visible windows can be created this way.
-.It Ic c Ns Ar #
-Close window
-.Ar # .
-The process in the window is sent
-the hangup signal (see
-.Xr kill 1 ) .
-The
-.Xr csh 1
-utility should
-handle this signal correctly and cause no problems.
-.It Ic m Ns Ar #
-Move window
-.Ar #
-to another location.
-A box in the shape
-of the window is drawn on
-the screen to indicate the new position of the window, and the same keys as
-those for the
-.Ic w
-command are used to position the box.
-The
-window can be moved partially off-screen.
-.It Ic M Ns Ar #
-Move window
-.Ar #
-to its previous position.
-.It Ic s Ns Ar #
-Change the size of window
-.Ar # .
-The user is prompted
-to enter the new lower right corner of the window.
-A box
-is drawn to indicate the new window size.
-The same
-keys used in
-.Ic w
-and
-.Ic m
-are used to enter the position.
-.It Ic S Ns Ar #
-Change window
-.Ar #
-to its previous size.
-.It Ic ^Y
-Scroll the current window up by one line.
-.It Ic ^E
-Scroll the current window down by one line.
-.It Ic ^U
-Scroll the current window up by half the window size.
-.It Ic ^D
-Scroll the current window down by half the window size.
-.It Ic ^B
-Scroll the current window up by the full window size.
-.It Ic ^F
-Scroll the current window down by the full window size.
-.It Ic h
-Move the cursor of the current window left by one column.
-.It Ic j
-Move the cursor of the current window down by one line.
-.It Ic k
-Move the cursor of the current window up by one line.
-.It Ic l
-Move the cursor of the current window right by one column.
-.It Ic y
-Yank.
-The user is prompted to enter two points within the current
-window.
-Then the content of the current window between those two points
-is saved in the yank buffer.
-.It Ic p
-Put.
-The content of the yank buffer is written to the current
-window as input.
-.It Ic ^S
-Stop output in the current window.
-.It Ic ^Q
-Start output in the current window.
-.It Ic :
-Enter a line to be executed as long commands.
-Normal line
-editing characters (erase character, erase word, erase line)
-are supported.
-.El
-.Ss Long Commands
-Long commands are a sequence of statements
-parsed much like a programming language, with a syntax
-similar to that of C.
-Numeric and string expressions and variables
-are supported, as well as conditional statements.
-.Pp
-There are two data types: string and number.
-A string is a sequence
-of letters or digits beginning with a letter.
-``_'' and ``.'' are
-considered letters.
-Alternately, non-alphanumeric characters can
-be included in strings by quoting them in ``"'' or escaping them
-with ``\\''.
-In addition, the ``\\'' sequences of C are supported,
-both inside and outside quotes (e.g., ``\\n'' is a new line,
-``\\r'' a carriage return).
-For example, these are legal strings:
-abcde01234, "&#$^*&#", ab"$#"cd, ab\\$\\#cd, "/usr/ucb/window".
-.Pp
-A number is an integer value in one of three forms:
-a decimal number, an octal number preceded by ``0'',
-or a hexadecimal number preceded by ``0x'' or ``0X''.
-The natural
-machine integer size is used (i.e., the signed integer type
-of the C compiler).
-As in C, a non-zero number represents
-a boolean true.
-.Pp
-The character ``#'' begins a comment which terminates at the
-end of the line.
-.Pp
-A statement is either a conditional or an expression.
-Expression
-statements are terminated with a new line or ``;''.
-To continue
-an expression on the next line, terminate the first line with ``\\''.
-.Ss Conditional Statement
-The
-.Nm
-utility has a single control structure:
-the fully bracketed if statement in the form
-.Pp
-.Bd -literal -offset indent -compact
-if <expr> then
-\t<statement>
-\t...
-elsif <expr> then
-\t<statement>
-\t...
-else
-\t<statement>
-\t...
-endif
-.Ed
-.Pp
-The
-.Ic else
-and
-.Ic elsif
-parts are optional, and the latter can
-be repeated any number of times.
-<Expr>
-must be numeric.
-.Ss Expressions
-Expressions in
-.Nm
-are similar to those in the
-C language, with most C operators supported on numeric
-operands.
-In addition, some are overloaded to operate on strings.
-.Pp
-When an expression is used as a statement, its value is discarded
-after evaluation.
-Therefore, only expressions with side
-effects (assignments and function calls) are useful as statements.
-.Pp
-Single valued (no arrays) variables are supported, of both
-numeric and string values.
-Some variables are predefined.
-They
-are listed below.
-.Pp
-The operators in order of increasing precedence:
-.Bl -tag -width Fl
-.It Xo
-.Aq Va expr1
-.Ic =
-.Aq Va expr2
-.Xc
-Assignment.
-The variable of name
-.Aq Va expr1 ,
-which must be string valued,
-is assigned the result of
-.Aq Va expr2 .
-Returns the value of
-.Aq Va expr2 .
-.It Xo
-.Aq Va expr1
-.Ic \&?
-.Aq Va expr2
-.Ic :
-.Aq Va expr3
-.Xc
-Returns the value of
-.Aq Va expr2
-if
-.Aq Va expr1
-evaluates true
-(non-zero numeric value); returns the value of
-.Aq Va expr3
-otherwise.
-Only
-one of
-.Aq Va expr2
-and
-.Aq Va expr3
-is evaluated.
-.Aq Va Expr1
-must
-be numeric.
-.It Xo
-.Aq Va expr1
-.Ic \&|\&|
-.Aq Va expr2
-.Xc
-Logical or.
-Numeric values only.
-Short circuit evaluation is supported
-(i.e., if
-.Aq Va expr1
-evaluates true, then
-.Aq Va expr2
-is not evaluated).
-.It Xo
-.Aq Va expr1
-.Ic \&&\&&
-.Aq Va expr2
-.Xc
-Logical and with short circuit evaluation.
-Numeric values only.
-.It Xo
-.Aq Va expr1
-.Ic \&|
-.Aq Va expr2
-.Xc
-Bitwise or.
-Numeric values only.
-.It Xo
-.Aq Va expr1
-.Ic ^
-.Aq Va expr2
-.Xc
-Bitwise exclusive or.
-Numeric values only.
-.It Xo
-.Aq Va expr1
-.Ic \&&
-.Aq Va expr2
-.Xc
-Bitwise and.
-Numeric values only.
-.It Xo
-.Aq Va expr1
-.Ic ==
-.Aq Va expr2 ,
-.Aq Va expr1
-.Ic !=
-.Aq expr2
-.Xc
-Comparison (equal and not equal, respectively).
-The boolean
-result (either 1 or 0) of the comparison is returned.
-The
-operands can be numeric or string valued.
-One string operand
-forces the other to be converted to a string in necessary.
-.It Xo
-.Aq Va expr1
-.Ic <
-.Aq Va expr2 ,
-.Aq Va expr1
-.Ic >
-.Aq Va expr2 ,
-.Aq Va expr1
-.Ic <=
-.Aq Va expr2 ,
-.Xc
-Less than, greater than, less than or equal to,
-greater than or equal to.
-Both numeric and string values, with
-automatic conversion as above.
-.It Xo
-.Aq Va expr1
-.Ic <<
-.Aq Va expr2 ,
-.Aq Va expr1
-.Ic >>
-.Aq Va expr2
-.Xc
-If both operands are numbers,
-.Aq Va expr1
-is bit
-shifted left (or right) by
-.Aq Va expr2
-bits.
-If
-.Aq Va expr1
-is
-a string, then its first (or last)
-.Aq Va expr2
-characters are
-returns (if
-.Aq Va expr2
-is also a string, then its length is used
-in place of its value).
-.It Xo
-.Aq Va expr1
-.Ic +
-.Aq Va expr2 ,
-.Aq Va expr1
-.Ic -
-.Aq Va expr2
-.Xc
-Addition and subtraction on numbers.
-For ``+'', if one
-argument is a string, then the other is converted to a string,
-and the result is the concatenation of the two strings.
-.It Xo
-.Aq Va expr1
-.Ic \&*
-.Aq Va expr2 ,
-.Aq Va expr1
-.Ic \&/
-.Aq Va expr2 ,
-.Aq Va expr1
-.Ic \&%
-.Aq Va expr2
-.Xc
-Multiplication, division, modulo.
-Numbers only.
-.It Xo
-.Ic \- Ns Aq Va expr ,
-.Ic ~ Ns Aq Va expr ,
-.Ic \&! Ns Aq Va expr ,
-.Ic \&$ Ns Aq Va expr ,
-.Ic \&$? Ns Aq Va expr
-.Xc
-The first three are unary minus, bitwise complement and logical complement
-on numbers only.
-The operator, ``$'', takes
-.Aq Va expr
-and returns
-the value of the variable of that name.
-If
-.Aq Va expr
-is numeric
-with value
-.Ar n
-and it appears within an alias macro (see below),
-then it refers to the nth argument of the alias invocation.
-``$?''
-tests for the existence of the variable
-.Aq Va expr ,
-and returns 1
-if it exists or 0 otherwise.
-.It Xo
-.Ao Va expr Ac Ns Pq Aq Ar arglist
-.Xc
-Function call.
-.Aq Va Expr
-must be a string that is the unique
-prefix of the name of a builtin
-.Nm
-function
-or the full name of a user defined alias macro.
-In the case of a builtin
-function,
-.Aq Ar arglist
-can be in one of two forms:
-.Bd -literal -offset indent
-<expr1>, <expr2>, ...
-argname1 = <expr1>, argname2 = <expr2>, ...
-.Ed
-.Pp
-The two forms can in fact be intermixed, but the result is
-unpredictable.
-Most arguments can be omitted; default values will
-be supplied for them.
-The
-.Ar argnames
-can be unique prefixes
-of the argument names.
-The commas separating
-arguments are used only to disambiguate, and can usually be omitted.
-.Pp
-Only the first argument form is valid for user defined aliases.
-Aliases
-are defined using the
-.Ic alias
-builtin function (see below).
-Arguments
-are accessed via a variant of the variable mechanism (see ``$'' operator
-above).
-.Pp
-Most functions return value, but some are used for side effect
-only and so must be used as statements.
-When a function or an alias is used
-as a statement, the parentheses surrounding
-the argument list may be omitted.
-Aliases return no value.
-.El
-.Ss Builtin Functions
-The arguments are listed by name in their natural
-order.
-Optional arguments are in square brackets
-.Sq Op .
-Arguments
-that have no names are in angle brackets
-.Sq <> .
-An argument meant to be a boolean flag (often named
-.Ar flag )
-can be one of
-.Ar on ,
-.Ar off ,
-.Ar yes ,
-.Ar no ,
-.Ar true ,
-or
-.Ar false ,
-with
-obvious meanings, or it can be a numeric expression,
-in which case a non-zero value is true.
-.Bl -tag -width Fl
-.It Ic alias Ns Po
-.Bq Aq Ar string ,
-.Bq Aq Ar string\-list
-.Pc
-If no argument is given, all currently defined alias macros are
-listed.
-Otherwise,
-.Aq Ar string
-is defined as an alias,
-with expansion
-.Aq Ar string\-list > .
-The previous definition of
-.Aq Ar string ,
-if any, is returned.
-Default for
-.Aq Ar string\-list
-is no change.
-.It Ic close Ns Pq Aq Ar window\-list
-Close the windows specified in
-.Aq Ar window\-list .
-If
-.Aq Ar window\-list
-is the word
-.Ar all ,
-than all windows are closed.
-No value is returned.
-.It Ic cursormodes Ns Pq Bq Ar modes
-Set the window cursor to
-.Ar modes .
-.Ar Modes
-is the bitwise
-or of the mode bits defined as the variables
-.Ar m_ul
-(underline),
-.Ar m_rev
-(reverse video),
-.Ar m_blk
-(blinking),
-and
-.Ar m_grp
-(graphics, terminal dependent).
-Return
-value is the previous modes.
-Default is no change.
-For example,
-.Li cursor($m_rev$m_blk)
-sets the window cursors to blinking
-reverse video.
-.It Ic default_nline Ns Pq Bq Ar nline
-Set the default buffer size to
-.Ar nline .
-Initially, it is
-48 lines.
-Returns the old default buffer size.
-Default is
-no change.
-Using a very large buffer can slow the program down
-considerably.
-.It Ic default_shell Ns Pq Bq Aq Ar string\-list
-Set the default window shell program to
-.Aq Ar string\-list .
-Returns
-the first string in the old shell setting.
-Default is no change.
-Initially,
-the default shell is taken from the environment variable
-.Ev SHELL .
-.It Ic default_smooth Ns Pq Bq Ar flag
-Set the default value of the
-.Ar smooth
-argument
-to the command
-.Nm
-(see below).
-The argument
-is a boolean flag (one of
-.Ar on ,
-.Ar off ,
-.Ar yes ,
-.Ar no ,
-.Ar true ,
-.Ar false ,
-or a number,
-as described above).
-Default is no change.
-The old value (as a number) is returned.
-The initial value is 1 (true).
-.It Xo
-.Ic echo Ns ( Op Ar window ,
-.Bq Aq Ar string\-list )
-.Xc
-Write the list of strings,
-.Aq Ar string-list ,
-to
-.Nm ,
-separated
-by spaces and terminated with a new line.
-The strings are only
-displayed in the window, the processes in the window are not
-involved (see
-.Ic write
-below).
-No value is returned.
-Default
-is the current window.
-.It Ic escape Ns Pq Bq Ar escapec
-Set the escape character to
-.Ar escape-char .
-Returns the old
-escape character as a one-character string.
-Default is no
-change.
-.Ar Escapec
-can be a string of a single character, or
-in the form
-.Fl ^X ,
-meaning
-.No control\- Ns Ar X .
-.It Xo
-.Ic foreground Ns ( Bq Ar window ,
-.Bq Ar flag )
-.Xc
-Move
-.Nm
-in or out of foreground.
-.Ar Flag
-is a boolean value.
-The old foreground flag
-is returned.
-Default for
-.Nm
-is the current window,
-default for
-.Ar flag
-is no change.
-.It Xo
-.Ic label Ns ( Bq Ar window ,
-.Bq Ar label )
-.Xc
-Set the label of
-.Nm
-to
-.Ar label .
-Returns the old
-label as a string.
-Default for
-.Nm
-is the current
-window, default for
-.Ar label
-is no change.
-To turn
-off a label, set it to an empty string ("").
-.It Ic list Ns Pq
-No arguments.
-List the identifiers and labels of all windows.
-No
-value is returned.
-.It Ic select Ns Pq Bq Ar window
-Make
-.Nm
-the current window.
-The previous current window
-is returned.
-Default is no change.
-.It Ic source Ns Pq Ar filename
-Read and execute the long commands in
-.Ar filename .
-Returns \-1 if the file cannot be read, 0 otherwise.
-.It Ic terse Ns Pq Bq flag
-Set terse mode to
-.Ar flag .
-In terse mode, the command window
-stays hidden even in command mode, and errors are reported by
-sounding the terminal's bell.
-.Ar Flag
-can take on the same
-values as in
-.Ar foreground
-above.
-Returns the old terse flag.
-Default is no change.
-.It Ic unalias Ns Pq Ar alias
-Undefine
-.Ar alias .
-Returns -1 if
-.Ar alias
-does not exist,
-0 otherwise.
-.It Ic unset Ns Pq Ar variable
-Undefine
-.Ar variable .
-Returns -1 if
-.Ar variable
-does not exist,
-0 otherwise.
-.It Ic variables Ns Pq
-No arguments.
-List all variables.
-No value is returned.
-.It Xo
-.Ic window Ns ( Bq Ar row ,
-.Bq Ar column ,
-.Bq Ar nrow ,
-.Bq Ar ncol ,
-.Bq Ar nline ,
-.Bq Ar label ,
-.Bq Ar pty ,
-.Bq Ar frame ,
-.Bq Ar mapnl ,
-.Bq Ar keepopen ,
-.Bq Ar smooth ,
-.Bq Ar shell ) .
-.Xc
-Open a window with upper left corner at
-.Ar row ,
-.Ar column
-and size
-.Ar nrow ,
-.Ar ncol .
-If
-.Ar nline
-is specified,
-then that many lines are allocated for the text buffer.
-Otherwise,
-the default buffer size is used.
-Default values for
-.Ar row ,
-.Ar column ,
-.Ar nrow ,
-and
-.Ar ncol
-are, respectively,
-the upper, left-most, lower, or right-most extremes of the
-screen.
-.Ar Label
-is the label string.
-.Ar Frame ,
-.Ar pty ,
-and
-.Ar mapnl
-are flag values
-interpreted in the same way as the argument to
-.Ar foreground
-(see above);
-they mean, respectively, put a frame around this window (default true),
-allocate pseudo-terminal for this window rather than socketpair (default
-true), and map new line characters in this window to carriage return
-and line feed (default true if socketpair is used, false otherwise).
-Normally, a window is automatically closed when its process
-exits.
-Setting
-.Ar keepopen
-to true (default false) prevents this
-action.
-When
-.Ar smooth
-is true, the screen is updated more frequently
-(for this window) to produce a more terminal-like behavior.
-The default value of
-.Ar smooth
-is set by the
-.Ar default_smooth
-command (see above).
-.Ar Shell
-is a list of strings that will be used as the shell
-program to place in the window (default is the program specified
-by
-.Ar default_shell ,
-see above).
-The created window's identifier
-is returned as a number.
-.It Xo
-.Ic write Ns ( Bq Ar window ,
-.Bq Aq Ar string\-list )
-.Xc
-Send the list of strings,
-.Aq Ar string-list ,
-to
-.Nm ,
-separated
-by spaces but not terminated with a new line.
-The strings are actually
-given to the window as input.
-No value is returned.
-Default
-is the current window.
-.El
-.Ss Predefined Variables
-These variables are for information only.
-Redefining them does
-not affect the internal operation of
-.Nm .
-.Bl -tag -width modes
-.It Ar baud
-The baud rate as a number between 50 and 38400.
-.It Ar modes
-The display modes (reverse video, underline, blinking, graphics)
-supported by the physical terminal.
-The value of
-.Ar modes
-is the bitwise or of some of the one bit values,
-.Ar m_blk ,
-.Ar m_grp ,
-.Ar m_rev ,
-and
-.Ar m_ul
-(see below).
-These values are useful
-in setting the window cursors' modes (see
-.Ar cursormodes
-above).
-.It Ar m_blk
-The blinking mode bit.
-.It Ar m_grp
-The graphics mode bit (not very useful).
-.It Ar m_rev
-The reverse video mode bit.
-.It Ar m_ul
-The underline mode bit.
-.It Ar ncol
-The number of columns on the physical screen.
-.It Ar nrow
-The number of rows on the physical screen.
-.It Ar term
-The terminal type.
-The standard name, found in the second name
-field of the terminal's
-.Ev TERMCAP
-entry, is used.
-.El
-.Sh ENVIRONMENT
-The
-.Nm
-utility utilizes these environment variables:
-.Ev HOME ,
-.Ev SHELL ,
-.Ev TERM ,
-.Ev TERMCAP ,
-.Ev WINDOW_ID .
-.Sh FILES
-.Bl -tag -width /dev/[pt]ty[pq]? -compact
-.It Pa ~/.windowrc
-startup command file.
-.It Pa /dev/[pt]ty[pq]?
-pseudo-terminal devices.
-.El
-.Sh DIAGNOSTICS
-Should be self explanatory.
-.Sh HISTORY
-The
-.Nm
-command appeared in
-.Bx 4.3 .
diff --git a/usr.bin/window/windowrc b/usr.bin/window/windowrc
deleted file mode 100644
index 57c695a..0000000
--- a/usr.bin/window/windowrc
+++ /dev/null
@@ -1,85 +0,0 @@
-# Copyright (c) 1983, 1993
-# The Regents of the University of California. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-# @(#)windowrc 8.1 (Berkeley) 6/6/93
-#
-
-# Configuration file example for window manager
-# To be installed in ~/.windowrc
-#
-# Create two unequal sized windows of full screen width,
-# and set up some useful aliases.
-#
-
-#
-# Optional settings
-#
-# terse on # set terse mode
-# escape "^A" # set escape character
-# nline 100 # set default buffer size
- # initially, this is 48
-
-#
-# Make two windows
-# The bottom one is MIN(24, total lines * 3 / 4) lines
-# The top one is the rest of the screen.
-#
-three_fourth = $nrow - ((_ = $nrow * 3 / 4) > 24 ? 24 : $_)
-unset _
-window row = 0, nrow = $three_fourth - 1, label = "Top"
-window row = $three_fourth, label = "Local"
-
-#
-# Useful aliases
-#
-#
-# Standard window
-#
-alias std "window r = $three_fourth, l = $?1 ? $1 : ''"
-#
-# Sysline, add your own options
-#
-alias sysline "_ = select();" \
- "foreground window(r = 0, nr = 1, nc = $ncol + 1, nl = 0," \
- "l = sysline, pty = no, frame = no, sh = sysline \\-w), 1;" \
- "select $_; unset _"
-#
-# Rlogin
-#
-alias rlogin "window r = $three_fourth, l = $1, pty = no, mapnl = no," \
- "sh = sh \\-c 'echo $TERMCAP | rsh ' + $1 + ' \\'cat > .TERMCAP\\' ;" \
- "exec rlogin ' + $1"
-alias rl rlogin \$1
-#
-# Two equal windows
-#
-alias two "window r = 1, nr = $nrow / 2 - 1, l = top;" \
- "window r = $nrow / 2 + 1, l = bottom"
diff --git a/usr.bin/window/ww.h b/usr.bin/window/ww.h
deleted file mode 100644
index d843ef3..0000000
--- a/usr.bin/window/ww.h
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)ww.h 8.1 (Berkeley) 6/6/93
- * $FreeBSD$
- */
-
-#include <sys/types.h>
-
-#ifdef OLD_TTY
-#include <sgtty.h>
-#else
-#include <termios.h>
-#endif
-#include <setjmp.h>
-#include <machine/endian.h>
-
-#define NWW 30 /* maximum number of windows */
-
- /* a rectangle */
-struct ww_dim {
- int nr; /* number of rows */
- int nc; /* number of columns */
- int t, b; /* top, bottom */
- int l, r; /* left, right */
-};
-
- /* a coordinate */
-struct ww_pos {
- int r; /* row */
- int c; /* column */
-};
-
- /* the window structure */
-struct ww {
- /* general flags and states */
- char ww_state; /* state of window */
- char ww_oflags; /* wwopen flags */
-
- /* information for overlap */
- struct ww *ww_forw; /* doubly linked list, for overlapping info */
- struct ww *ww_back;
- char ww_index; /* the window index, for wwindex[] */
- char ww_order; /* the overlapping order */
-
- /* sizes and positions */
- struct ww_dim ww_w; /* window size and pos */
- struct ww_dim ww_b; /* buffer size and pos */
- struct ww_dim ww_i; /* the part inside the screen */
- struct ww_pos ww_cur; /* the cursor position, relative to ww_w */
-
- /* arrays */
- char **ww_win; /* the window */
- union ww_char **ww_buf; /* the buffer */
- char **ww_fmap; /* map for frame and box windows */
- short *ww_nvis; /* how many ww_buf chars are visible per row */
-
- /* information for wwwrite() and company */
- char ww_wstate; /* state for outputting characters */
- char ww_modes; /* current display modes */
- char ww_insert; /* insert mode */
- char ww_mapnl; /* map \n to \r\n */
- char ww_noupdate; /* don't do updates in wwwrite() */
- char ww_unctrl; /* expand control characters */
- char ww_nointr; /* wwwrite() not interruptable */
- char ww_hascursor; /* has fake cursor */
-
- /* things for the window process and io */
- char ww_ispty; /* ww_pty is really a pty, not socket pair */
- char ww_stopped; /* output stopped */
- int ww_pty; /* file descriptor of pty or socket pair */
- int ww_socket; /* other end of socket pair */
- int ww_pid; /* pid of process, if WWS_HASPROC true */
- char ww_ttyname[11]; /* "/dev/ttyp?" */
- char *ww_ob; /* output buffer */
- char *ww_obe; /* end of ww_ob */
- char *ww_obp; /* current read position in ww_ob */
- char *ww_obq; /* current write position in ww_ob */
-
- /* things for the user, they really don't belong here */
- char ww_id; /* the user window id */
- char ww_center; /* center the label */
- char ww_hasframe; /* frame it */
- char ww_keepopen; /* keep it open after the process dies */
- char *ww_label; /* the user supplied label */
- struct ww_dim ww_alt; /* alternate position and size */
-};
-
- /* state of a tty */
-struct ww_tty {
-#ifdef OLD_TTY
- struct sgttyb ww_sgttyb;
- struct tchars ww_tchars;
- struct ltchars ww_ltchars;
- int ww_lmode;
- int ww_ldisc;
-#else
- struct termios ww_termios;
-#endif
- int ww_fflags;
-};
-
-union ww_char {
- short c_w; /* as a word */
- struct {
-#if BYTE_ORDER == LITTLE_ENDIAN || BYTE_ORDER == PDP_ENDIAN
- char C_c; /* the character part */
- char C_m; /* the mode part */
-#endif
-#if BYTE_ORDER == BIG_ENDIAN
- char C_m; /* the mode part */
- char C_c; /* the character part */
-#endif
- } c_un;
-};
-#define c_c c_un.C_c
-#define c_m c_un.C_m
-
- /* for display update */
-struct ww_update {
- int best_gain;
- int best_col;
- int gain;
-};
-
- /* parts of ww_char */
-#define WWC_CMASK 0x00ff
-#define WWC_MMASK 0xff00
-#define WWC_MSHIFT 8
-
- /* c_m bits */
-#define WWM_REV 0x01 /* reverse video */
-#define WWM_BLK 0x02 /* blinking */
-#define WWM_UL 0x04 /* underlined */
-#define WWM_GRP 0x08 /* graphics */
-#define WWM_DIM 0x10 /* half intensity */
-#define WWM_USR 0x20 /* user specified mode */
-#define WWM_GLS 0x40 /* window only, glass, i.e., transparent */
-
- /* ww_state values */
-#define WWS_INITIAL 0 /* just opened */
-#define WWS_HASPROC 1 /* has process on pty */
-#define WWS_DEAD 3 /* child died */
-
- /* flags for ww_fmap */
-#define WWF_U 0x01
-#define WWF_R 0x02
-#define WWF_D 0x04
-#define WWF_L 0x08
-#define WWF_MASK (WWF_U|WWF_R|WWF_D|WWF_L)
-#define WWF_LABEL 0x40
-#define WWF_TOP 0x80
-
- /* flags to wwopen() */
-#define WWO_PTY 0x01 /* want pty */
-#define WWO_SOCKET 0x02 /* want socket pair */
-#define WWO_REVERSE 0x04 /* make it all reverse video */
-#define WWO_GLASS 0x08 /* make it all glass */
-#define WWO_FRAME 0x10 /* this is a frame window */
-
- /* special ww_index value */
-#define WWX_NOBODY NWW
-
- /* error codes */
-#define WWE_NOERR 0
-#define WWE_SYS 1 /* system error */
-#define WWE_NOMEM 2 /* out of memory */
-#define WWE_TOOMANY 3 /* too many windows */
-#define WWE_NOPTY 4 /* no more ptys */
-#define WWE_SIZE 5 /* bad window size */
-#define WWE_BADTERM 6 /* bad terminal type */
-#define WWE_CANTDO 7 /* dumb terminal */
-
- /* wwtouched[] bits, there used to be more than one */
-#define WWU_TOUCHED 0x01 /* touched */
-
- /* the window structures */
-struct ww wwhead;
-struct ww *wwindex[NWW + 1]; /* last location is for wwnobody */
-struct ww wwnobody;
-
- /* tty things */
-struct ww_tty wwoldtty; /* the old (saved) terminal settings */
-struct ww_tty wwnewtty; /* the new (current) terminal settings */
-struct ww_tty wwwintty; /* the terminal settings for windows */
-char *wwterm; /* the terminal name */
-char wwtermcap[1024]; /* place for the termcap */
-
- /* generally useful variables */
-int wwnrow, wwncol; /* the screen size */
-char wwavailmodes; /* actually supported modes */
-char wwcursormodes; /* the modes for the fake cursor */
-char wwwrap; /* terminal has auto wrap around */
-int wwdtablesize; /* result of getdtablesize() call */
-char **wwsmap; /* the screen map */
-union ww_char **wwos; /* the old (current) screen */
-union ww_char **wwns; /* the new (desired) screen */
-union ww_char **wwcs; /* the checkpointed screen */
-char *wwtouched; /* wwns changed flags */
-struct ww_update *wwupd; /* for display update */
-int wwospeed; /* output baud rate, copied from wwoldtty */
-int wwbaud; /* wwospeed converted into actual number */
-int wwcursorrow, wwcursorcol; /* where we want the cursor to be */
-int wwerrno; /* error number */
-
- /* statistics */
-int wwnflush, wwnwr, wwnwre, wwnwrz, wwnwrc;
-int wwnwwr, wwnwwra, wwnwwrc;
-int wwntokdef, wwntokuse, wwntokbad, wwntoksave, wwntokc;
-int wwnupdate, wwnupdline, wwnupdmiss;
-int wwnupdscan, wwnupdclreol, wwnupdclreos, wwnupdclreosmiss, wwnupdclreosline;
-int wwnread, wwnreade, wwnreadz;
-int wwnreadc, wwnreadack, wwnreadnack, wwnreadstat, wwnreadec;
-int wwnwread, wwnwreade, wwnwreadz, wwnwreadd, wwnwreadc, wwnwreadp;
-int wwnselect, wwnselecte, wwnselectz;
-
- /* quicky macros */
-#define wwsetcursor(r,c) (wwcursorrow = (r), wwcursorcol = (c))
-#define wwcurtowin(w) wwsetcursor((w)->ww_cur.r, (w)->ww_cur.c)
-#define wwunbox(w) wwunframe(w)
-#define wwclreol(w,r,c) wwclreol1((w), (r), (c), 0)
-#define wwredrawwin(w) wwredrawwin1((w), (w)->ww_i.t, (w)->ww_i.b, 0)
-#define wwupdate() wwupdate1(0, wwnrow);
-
- /* things for handling input */
-void wwrint(); /* interrupt handler */
-struct ww *wwcurwin; /* window to copy input into */
-char *wwib; /* input (keyboard) buffer */
-char *wwibe; /* wwib + sizeof buffer */
-char *wwibp; /* current read position in buffer */
-char *wwibq; /* current write position in buffer */
-#define wwmaskc(c) ((c) & 0xff)
-#define wwgetc() (wwibp < wwibq ? wwmaskc(*wwibp++) : -1)
-#define wwpeekc() (wwibp < wwibq ? wwmaskc(*wwibp) : -1)
-#define wwungetc(c) (wwibp > wwib ? *--wwibp = (c) : -1)
-
- /* things for short circuiting wwiomux() */
-char wwintr; /* interrupting */
-char wwsetjmp; /* want a longjmp() from wwrint() and wwchild() */
-jmp_buf wwjmpbuf; /* jmpbuf for above */
-#define wwinterrupt() wwintr
-#define wwsetintr() do { wwintr = 1; if (wwsetjmp) longjmp(wwjmpbuf, 1); } \
- while (0)
-#define wwclrintr() (wwintr = 0)
-
- /* checkpointing */
-int wwdocheckpoint;
-
- /* the window virtual terminal */
-#define WWT_TERM "window-v2"
-#define WWT_TERMCAP "WW|window-v2|window program version 2:\
- :am:bs:da:db:ms:pt:cr=^M:nl=^J:bl=^G:ta=^I:\
- :cm=\\EY%+ %+ :le=^H:nd=\\EC:up=\\EA:do=\\EB:ho=\\EH:\
- :cd=\\EJ:ce=\\EK:cl=\\EE:me=\\Er^?:"
-#define WWT_REV "se=\\ErA:so=\\EsA:mr=\\EsA:"
-#define WWT_BLK "BE=\\ErB:BS=\\EsB:mb=\\EsB:"
-#define WWT_UL "ue=\\ErD:us=\\EsD:"
-#define WWT_GRP "ae=\\ErH:as=\\EsH:"
-#define WWT_DIM "HE=\\ErP:HS=\\EsP:mh=\\EsP:"
-#define WWT_USR "XE=\\Er`:XS=\\Es`:"
-#define WWT_ALDL "al=\\EL:dl=\\EM:"
-#define WWT_IMEI "im=\\E@:ei=\\EO:ic=:mi:" /* XXX, ic for emacs bug */
-#define WWT_IC "ic=\\EP:"
-#define WWT_DC "dc=\\EN:"
-char wwwintermcap[1024]; /* terminal-specific but window-independent
- part of the window termcap */
-#ifdef TERMINFO
- /* where to put the temporary terminfo directory */
-char wwterminfopath[1024];
-#endif
-
- /* our functions */
-struct ww *wwopen();
-void wwchild();
-void wwalarm();
-void wwquit();
-char **wwalloc();
-char *wwerror();
-
- /* c library functions */
-char *getenv();
-char *tgetstr();
-char *rindex();
-char *strcpy();
-char *strcat();
-
-#undef MIN
-#undef MAX
-#define MIN(x, y) ((x) > (y) ? (y) : (x))
-#define MAX(x, y) ((x) > (y) ? (x) : (y))
diff --git a/usr.bin/window/wwadd.c b/usr.bin/window/wwadd.c
deleted file mode 100644
index 0a78f06..0000000
--- a/usr.bin/window/wwadd.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwadd.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-
-/*
- * Stick w1 behind w2.
- */
-wwadd(w1, w2)
-register struct ww *w1;
-struct ww *w2;
-{
- register i;
- register struct ww *w;
-
- w1->ww_order = w2->ww_order + 1;
- w1->ww_back = w2;
- w1->ww_forw = w2->ww_forw;
- w2->ww_forw->ww_back = w1;
- w2->ww_forw = w1;
-
- for (w = w1->ww_forw; w != &wwhead; w = w->ww_forw)
- w->ww_order++;
- for (i = w1->ww_i.t; i < w1->ww_i.b; i++) {
- register j;
- register char *smap = wwsmap[i];
- register char *win = w1->ww_win[i];
- union ww_char *ns = wwns[i];
- union ww_char *buf = w1->ww_buf[i];
- int nvis = 0;
- int nchanged = 0;
-
- for (j = w1->ww_i.l; j < w1->ww_i.r; j++) {
- w = wwindex[smap[j]];
- if (w1->ww_order > w->ww_order)
- continue;
- if (win[j] & WWM_GLS)
- continue;
- if (w != &wwnobody && w->ww_win[i][j] == 0)
- w->ww_nvis[i]--;
- smap[j] = w1->ww_index;
- if (win[j] == 0)
- nvis++;
- ns[j].c_w = buf[j].c_w ^ win[j] << WWC_MSHIFT;
- nchanged++;
- }
- if (nchanged > 0)
- wwtouched[i] |= WWU_TOUCHED;
- w1->ww_nvis[i] = nvis;
- }
-}
diff --git a/usr.bin/window/wwalloc.c b/usr.bin/window/wwalloc.c
deleted file mode 100644
index e02d4e5..0000000
--- a/usr.bin/window/wwalloc.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwalloc.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include <stdlib.h>
-#include "ww.h"
-
-char **
-wwalloc(row, col, nrow, ncol, size)
-{
- register char *p, **pp;
- register int i;
-
- /* fast, call malloc only once */
- pp = (char **)
- malloc((unsigned) sizeof (char **) * nrow + size * nrow * ncol);
- if (pp == 0) {
- wwerrno = WWE_NOMEM;
- return 0;
- }
- p = (char *)&pp[nrow];
- col *= size;
- size /= sizeof (char); /* paranoid */
- size *= ncol;
- for (i = 0; i < nrow; i++) {
- pp[i] = p - col;
- p += size;
- }
- return pp - row;
-}
-
-wwfree(p, row)
-register char **p;
-{
- free((char *)(p + row));
-}
diff --git a/usr.bin/window/wwbox.c b/usr.bin/window/wwbox.c
deleted file mode 100644
index 2d63b17..0000000
--- a/usr.bin/window/wwbox.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwbox.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-
-wwbox(w, r, c, nr, nc)
-register struct ww *w;
-register r, c;
-int nr, nc;
-{
- register r1, c1;
- register i;
-
- r1 = r + nr - 1;
- c1 = c + nc - 1;
- wwframec(w, r, c, WWF_D|WWF_R);
- for (i = c + 1; i < c1; i++)
- wwframec(w, r, i, WWF_L|WWF_R);
- wwframec(w, r, i, WWF_L|WWF_D);
- for (i = r + 1; i < r1; i++)
- wwframec(w, i, c1, WWF_U|WWF_D);
- wwframec(w, i, c1, WWF_U|WWF_L);
- for (i = c1 - 1; i > c; i--)
- wwframec(w, r1, i, WWF_R|WWF_L);
- wwframec(w, r1, i, WWF_R|WWF_U);
- for (i = r1 - 1; i > r; i--)
- wwframec(w, i, c, WWF_D|WWF_U);
-}
diff --git a/usr.bin/window/wwchild.c b/usr.bin/window/wwchild.c
deleted file mode 100644
index 3ff46ec..0000000
--- a/usr.bin/window/wwchild.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwchild.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-
-void
-wwchild()
-{
- register struct ww **wp;
- pid_t pid;
- int olderrno, w;
- char collected = 0;
-
- olderrno = errno;
- while ((pid =
- wait3((int *)&w, WNOHANG|WUNTRACED, (struct rusage *)0)) > 0) {
- for (wp = wwindex; wp < &wwindex[NWW]; wp++) {
- if (*wp && (*wp)->ww_state == WWS_HASPROC
- && (*wp)->ww_pid == pid) {
- (*wp)->ww_state = WWS_DEAD;
- collected = 1;
- break;
- }
- }
- }
- errno = olderrno;
- /* jump out of wwiomux when somebody dies */
- if (collected)
- wwsetintr();
-}
diff --git a/usr.bin/window/wwclose.c b/usr.bin/window/wwclose.c
deleted file mode 100644
index ea58edc..0000000
--- a/usr.bin/window/wwclose.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwclose.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-
-wwclose(w)
-register struct ww *w;
-{
- wwindex[w->ww_index] = 0;
- if (w->ww_pty >= 0)
- (void) close(w->ww_pty);
- if (w->ww_socket >= 0)
- (void) close(w->ww_socket);
- wwfree((char **)w->ww_win, w->ww_w.t);
- wwfree((char **)w->ww_buf, w->ww_b.t);
- if (w->ww_fmap != 0)
- wwfree((char **)w->ww_fmap, w->ww_w.t);
- free((char *)(w->ww_nvis + w->ww_w.t));
- if (w->ww_ob != 0)
- free(w->ww_ob);
- free((char *)w);
-}
diff --git a/usr.bin/window/wwclreol.c b/usr.bin/window/wwclreol.c
deleted file mode 100644
index bc0055e..0000000
--- a/usr.bin/window/wwclreol.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwclreol.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-
-/*
- * Clear w to the end of line.
- * If cleared is true, then the screen line has already been cleared.
- */
-wwclreol1(w, row, col, cleared)
-register struct ww *w;
-int row, col;
-char cleared;
-{
- register i;
-
- /*
- * Clear the buffer right off
- */
- {
- register union ww_char *buf;
-
- buf = &w->ww_buf[row][col];
- for (i = w->ww_b.r - col; --i >= 0;)
- buf++->c_w = ' ';
- }
-
- /*
- * If can't see it, just return.
- */
- if (row < w->ww_i.t || row >= w->ww_i.b
- || w->ww_i.r <= 0 || w->ww_i.r <= col)
- return;
-
- if (col < w->ww_i.l)
- col = w->ww_i.l;
-
- /*
- * Now fix wwns.
- */
- {
- register union ww_char *s;
- register char *smap, *win;
-
- i = col;
- smap = &wwsmap[row][i];
- s = &wwns[row][i];
- win = &w->ww_win[row][i];
- for (i = w->ww_i.r - i; --i >= 0;)
- if (*smap++ == w->ww_index)
- s++->c_w = ' ' | *win++ << WWC_MSHIFT;
- else
- s++, win++;
- }
- if (!cleared)
- wwtouched[row] |= WWU_TOUCHED;
-}
diff --git a/usr.bin/window/wwclreos.c b/usr.bin/window/wwclreos.c
deleted file mode 100644
index 1b8452b..0000000
--- a/usr.bin/window/wwclreos.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwclreos.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-
-wwclreos(w, row, col)
-register struct ww *w;
-{
- register i;
-
- wwclreol(w, row, col);
- for (i = row + 1; i < w->ww_b.b; i++)
- wwclreol(w, i, w->ww_b.l);
- /* XXX */
- if (!w->ww_noupdate)
- wwupdate1(w->ww_i.t, w->ww_i.b);
-}
diff --git a/usr.bin/window/wwcursor.c b/usr.bin/window/wwcursor.c
deleted file mode 100644
index 5b804c2..0000000
--- a/usr.bin/window/wwcursor.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwcursor.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-
-wwcursor(w, on)
-register struct ww *w;
-{
- register char *win;
-
- if (on) {
- if (w->ww_hascursor)
- return;
- w->ww_hascursor = 1;
- } else {
- if (!w->ww_hascursor)
- return;
- w->ww_hascursor = 0;
- }
- if (wwcursormodes != 0) {
- win = &w->ww_win[w->ww_cur.r][w->ww_cur.c];
- *win ^= wwcursormodes;
- if (w->ww_cur.r < w->ww_i.t || w->ww_cur.r >= w->ww_i.b
- || w->ww_cur.c < w->ww_i.l || w->ww_cur.c >= w->ww_i.r)
- return;
- if (wwsmap[w->ww_cur.r][w->ww_cur.c] == w->ww_index) {
- if (*win == 0)
- w->ww_nvis[w->ww_cur.r]++;
- else if (*win == wwcursormodes)
- w->ww_nvis[w->ww_cur.r]--;
- wwns[w->ww_cur.r][w->ww_cur.c].c_m ^= wwcursormodes;
- wwtouched[w->ww_cur.r] |= WWU_TOUCHED;
- }
- }
-}
-
-wwsetcursormodes(new)
-register new;
-{
- register i;
- register struct ww *w;
- register old = wwcursormodes;
-
- new &= wwavailmodes;
- if (new == wwcursormodes)
- return;
- for (i = 0; i < NWW; i++)
- if (wwindex[i] != 0 && (w = wwindex[i])->ww_hascursor) {
- wwcursor(w, 0);
- wwcursormodes = new;
- wwcursor(w, 1);
- wwcursormodes = old;
- }
- wwcursormodes = new;
-}
diff --git a/usr.bin/window/wwdata.c b/usr.bin/window/wwdata.c
deleted file mode 100644
index 54062c2..0000000
--- a/usr.bin/window/wwdata.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwdata.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
diff --git a/usr.bin/window/wwdelchar.c b/usr.bin/window/wwdelchar.c
deleted file mode 100644
index ba25cb0..0000000
--- a/usr.bin/window/wwdelchar.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwdelchar.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-
-wwdelchar(w, row, col)
-register struct ww *w;
-{
- register i;
- int nvis;
-
- /*
- * First, shift the line.
- */
- {
- register union ww_char *p, *q;
-
- p = &w->ww_buf[row][col];
- q = p + 1;
- for (i = w->ww_b.r - col; --i > 0;)
- *p++ = *q++;
- p->c_w = ' ';
- }
-
- /*
- * If can't see it, just return.
- */
- if (row < w->ww_i.t || row >= w->ww_i.b
- || w->ww_i.r <= 0 || w->ww_i.r <= col)
- return;
-
- if (col < w->ww_i.l)
- col = w->ww_i.l;
-
- /*
- * Now find out how much is actually changed, and fix wwns.
- */
- {
- register union ww_char *buf;
- register char *win;
- register union ww_char *ns;
- register char *smap;
- char touched;
-
- nvis = 0;
- smap = &wwsmap[row][col];
- for (i = col; i < w->ww_i.r && *smap++ != w->ww_index; i++)
- ;
- if (i >= w->ww_i.r)
- return;
- col = i;
- buf = w->ww_buf[row];
- win = w->ww_win[row];
- ns = wwns[row];
- smap = &wwsmap[row][i];
- touched = wwtouched[row];
- for (; i < w->ww_i.r; i++) {
- if (*smap++ != w->ww_index)
- continue;
- touched |= WWU_TOUCHED;
- if (win[i])
- ns[i].c_w =
- buf[i].c_w ^ win[i] << WWC_MSHIFT;
- else {
- nvis++;
- ns[i] = buf[i];
- }
- }
- wwtouched[row] = touched;
- }
-
- /*
- * Can/Should we use delete character?
- */
- if (tt.tt_delchar != 0 && nvis > (wwncol - col) / 2) {
- register union ww_char *p, *q;
-
- xxdelchar(row, col);
- p = &wwos[row][col];
- q = p + 1;
- for (i = wwncol - col; --i > 0;)
- *p++ = *q++;
- p->c_w = ' ';
- }
-}
diff --git a/usr.bin/window/wwdelete.c b/usr.bin/window/wwdelete.c
deleted file mode 100644
index ef2912b..0000000
--- a/usr.bin/window/wwdelete.c
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwdelete.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-
-/*
- * Pull w free from the cover list.
- */
-wwdelete(w)
-register struct ww *w;
-{
- register i;
-
- for (i = w->ww_i.t; i < w->ww_i.b; i++) {
- register j;
- register char *smap = wwsmap[i];
- register union ww_char *ns = wwns[i];
- register int nchanged = 0;
-
- for (j = w->ww_i.l; j < w->ww_i.r; j++)
- if (smap[j] == w->ww_index) {
- smap[j] = WWX_NOBODY;
- ns[j].c_w = ' ';
- nchanged++;
- }
- if (nchanged > 0)
- wwtouched[i] |= WWU_TOUCHED;
- }
-
- {
- register struct ww *wp;
-
- for (wp = w->ww_forw; wp != &wwhead; wp = wp->ww_forw)
- wp->ww_order--;
- }
-
- if (w->ww_forw != &wwhead)
- wwdelete1(w->ww_forw,
- w->ww_i.t, w->ww_i.b, w->ww_i.l, w->ww_i.r);
-
- w->ww_back->ww_forw = w->ww_forw;
- w->ww_forw->ww_back = w->ww_back;
- w->ww_forw = w->ww_back = 0;
-}
-
-wwdelete1(w, t, b, l, r)
-register struct ww *w;
-{
- int i;
- int tt, bb, ll, rr;
- char hasglass;
-
-again:
- hasglass = 0;
- tt = MAX(t, w->ww_i.t);
- bb = MIN(b, w->ww_i.b);
- ll = MAX(l, w->ww_i.l);
- rr = MIN(r, w->ww_i.r);
- if (tt >= bb || ll >= rr) {
- if ((w = w->ww_forw) == &wwhead)
- return;
- goto again;
- }
- for (i = tt; i < bb; i++) {
- register j;
- register char *smap = wwsmap[i];
- register union ww_char *ns = wwns[i];
- register char *win = w->ww_win[i];
- register union ww_char *buf = w->ww_buf[i];
- int nvis = w->ww_nvis[i];
- int nchanged = 0;
-
- for (j = ll; j < rr; j++) {
- if (smap[j] != WWX_NOBODY)
- continue;
- if (win[j] & WWM_GLS) {
- hasglass = 1;
- continue;
- }
- smap[j] = w->ww_index;
- ns[j].c_w = buf[j].c_w ^ win[j] << WWC_MSHIFT;
- nchanged++;
- if (win[j] == 0)
- nvis++;
- }
- if (nchanged > 0)
- wwtouched[i] |= WWU_TOUCHED;
- w->ww_nvis[i] = nvis;
- }
- if ((w = w->ww_forw) == &wwhead)
- return;
- if (hasglass)
- goto again;
- if (tt > t)
- wwdelete1(w, t, tt, l, r);
- if (bb < b)
- wwdelete1(w, bb, b, l, r);
- if (ll > l)
- wwdelete1(w, tt, bb, l, ll);
- if (rr < r)
- wwdelete1(w, tt, bb, rr, r);
-}
diff --git a/usr.bin/window/wwdelline.c b/usr.bin/window/wwdelline.c
deleted file mode 100644
index dbeb12c..0000000
--- a/usr.bin/window/wwdelline.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwdelline.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-
-wwdelline(w, row)
-register struct ww *w;
-int row;
-{
- register i;
- register union ww_char **cpp, **cqq;
- register union ww_char *cp;
- int row1, row2;
- char deleted;
- int visible;
-
- /*
- * Scroll first.
- */
- if ((row1 = row) < w->ww_i.t) {
- row1 = w->ww_i.t;
- }
- if ((row2 = w->ww_b.b) > w->ww_i.b) {
- row2 = w->ww_i.b;
- visible = 0;
- } else
- visible = 1;
- deleted = wwscroll1(w, row1, row2, 1, visible);
-
- /*
- * Fix the buffer.
- * But leave clearing the last line for wwclreol().
- */
- cpp = &w->ww_buf[row];
- cqq = cpp + 1;
- cp = *cpp;
- for (i = w->ww_b.b - row; --i > 0;)
- *cpp++ = *cqq++;
- *cpp = cp;
-
- /*
- * Now clear the last line.
- */
- if (visible)
- wwclreol1(w, w->ww_b.b - 1, w->ww_b.l, deleted);
- else {
- cp += w->ww_b.l;
- for (i = w->ww_b.nc; --i >= 0;)
- cp++->c_w = ' ';
- }
-}
diff --git a/usr.bin/window/wwdump.c b/usr.bin/window/wwdump.c
deleted file mode 100644
index 7f70e3e..0000000
--- a/usr.bin/window/wwdump.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwdump.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include <stdio.h>
-#include <string.h>
-#include "ww.h"
-#include "tt.h"
-
-static char cmap[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
-
-wwdumpwin(w)
-register struct ww *w;
-{
- register i, j;
-
- tt.tt_nmodes = 0;
- (*tt.tt_clear)();
- for (i = w->ww_i.t; i < w->ww_i.b; i++) {
- (*tt.tt_move)(i, w->ww_i.l);
- for (j = w->ww_i.l; j < w->ww_i.r; j++)
- (*tt.tt_putc)(w->ww_win[i][j] & WWM_GLS ? 'G' : ' ');
- }
-}
-
-wwdumpnvis(w)
-register struct ww *w;
-{
- register i;
- char buf[20];
-
- tt.tt_nmodes = 0;
- (*tt.tt_clear)();
- for (i = w->ww_i.t; i < w->ww_i.b; i++) {
- (*tt.tt_move)(i, w->ww_i.l);
- (void) sprintf(buf, "%d", w->ww_nvis[i]);
- (*tt.tt_write)(buf, strlen(buf));
- }
-}
-
-wwdumpsmap()
-{
- register i, j;
-
- tt.tt_nmodes = 0;
- (*tt.tt_clear)();
- for (i = 0; i < wwnrow; i++) {
- (*tt.tt_move)(i, 0);
- for (j = 0; j < wwncol; j++)
- (*tt.tt_putc)(cmap[wwsmap[i][j]]);
- }
-}
-
-wwdumpns()
-{
- register i, j;
-
- (*tt.tt_clear)();
- for (i = 0; i < wwnrow; i++) {
- (*tt.tt_move)(i, 0);
- for (j = 0; j < wwncol; j++) {
- tt.tt_nmodes = wwns[i][j].c_m & tt.tt_availmodes;
- (*tt.tt_putc)(wwns[i][j].c_c);
- }
- }
-}
-
-wwdumpos()
-{
- register i, j;
-
- (*tt.tt_clear)();
- for (i = 0; i < wwnrow; i++) {
- (*tt.tt_move)(i, 0);
- for (j = 0; j < wwncol; j++) {
- tt.tt_nmodes = wwos[i][j].c_m & tt.tt_availmodes;
- (*tt.tt_putc)(wwns[i][j].c_c);
- }
- }
-}
diff --git a/usr.bin/window/wwend.c b/usr.bin/window/wwend.c
deleted file mode 100644
index 22fe9dc..0000000
--- a/usr.bin/window/wwend.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwend.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include <signal.h>
-#include "ww.h"
-#include "tt.h"
-#include <stdlib.h>
-
-/*ARGSUSED*/
-int
-wwend(int exit)
-{
- if (tt.tt_checkpoint) {
- (void) alarm(0);
- wwdocheckpoint = 0;
- }
- xxend();
- (void) signal(SIGIO, SIG_DFL);
- (void) wwsettty(0, &wwoldtty);
-#ifdef TERMINFO
- if (exit)
- wwterminfoend();
-#endif
-}
-
-void
-wwquit()
-{
- wwend(1);
- exit(1);
-}
diff --git a/usr.bin/window/wwenviron.c b/usr.bin/window/wwenviron.c
deleted file mode 100644
index 0abf460..0000000
--- a/usr.bin/window/wwenviron.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwenviron.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#if !defined(OLD_TTY) && !defined(TIOCSCTTY) && !defined(TIOCNOTTY)
-#include <sys/ioctl.h>
-#endif
-#include <paths.h>
-#include <signal.h>
-#include <stdio.h>
-
-/*
- * Set up the environment of this process to run in window 'wp'.
- */
-wwenviron(wp)
-register struct ww *wp;
-{
- register i;
-#ifndef TIOCSCTTY
- int pgrp = getpid();
-#endif
- char buf[1024];
-
-#ifndef TIOCSCTTY
- if ((i = open(_PATH_TTY, 0)) < 0)
- goto bad;
- if (ioctl(i, TIOCNOTTY, (char *)0) < 0)
- goto bad;
- (void) close(i);
-#endif
- if ((i = wp->ww_socket) < 0) {
- if ((i = open(wp->ww_ttyname, 2)) < 0)
- goto bad;
- if (wwsettty(i, &wwwintty) < 0)
- goto bad;
- if (wwsetttysize(i, wp->ww_w.nr, wp->ww_w.nc) < 0)
- goto bad;
- }
- (void) dup2(i, 0);
- (void) dup2(i, 1);
- (void) dup2(i, 2);
- (void) close(i);
-#ifdef TIOCSCTTY
- (void) setsid();
- (void) ioctl(0, TIOCSCTTY, 0);
-#else
- (void) ioctl(0, TIOCSPGRP, (char *)&pgrp);
- (void) setpgrp(pgrp, pgrp);
-#endif
- /* SIGPIPE is the only one we ignore */
- (void) signal(SIGPIPE, SIG_DFL);
- (void) sigsetmask(0);
- /*
- * Two conditions that make destructive setenv ok:
- * 1. setenv() copies the string,
- * 2. we've already called tgetent which copies the termcap entry.
- */
- (void) sprintf(buf, "%sco#%d:li#%d:%s",
- WWT_TERMCAP, wp->ww_w.nc, wp->ww_w.nr, wwwintermcap);
- (void) setenv("TERMCAP", buf, 1);
- (void) sprintf(buf, "%d", wp->ww_id + 1);
- (void) setenv("WINDOW_ID", buf, 1);
- return 0;
-bad:
- wwerrno = WWE_SYS;
- return -1;
-}
diff --git a/usr.bin/window/wwerror.c b/usr.bin/window/wwerror.c
deleted file mode 100644
index 9282b87..0000000
--- a/usr.bin/window/wwerror.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwerror.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include <errno.h>
-#include "ww.h"
-
-char *
-wwerror()
-{
- char *strerror();
-
- switch (wwerrno) {
- case WWE_NOERR:
- return "No error";
- case WWE_SYS:
- return strerror(errno);
- case WWE_NOMEM:
- return "Out of memory";
- case WWE_TOOMANY:
- return "Too many windows";
- case WWE_NOPTY:
- return "Out of pseudo-terminals";
- case WWE_SIZE:
- return "Bad window size";
- case WWE_BADTERM:
- return "Unknown terminal type";
- case WWE_CANTDO:
- return "Can't run window on this terminal";
- default:
- return "Unknown error";
- }
-}
diff --git a/usr.bin/window/wwflush.c b/usr.bin/window/wwflush.c
deleted file mode 100644
index ef30b58..0000000
--- a/usr.bin/window/wwflush.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwflush.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-#include <signal.h>
-#include <strings.h>
-
-wwflush()
-{
- register row, col;
-
- if ((row = wwcursorrow) < 0)
- row = 0;
- else if (row >= wwnrow)
- row = wwnrow - 1;
- if ((col = wwcursorcol) < 0)
- col = 0;
- else if (col >= wwncol)
- col = wwncol - 1;
- xxmove(row, col);
- if (wwdocheckpoint) {
- xxflush(0);
- wwcheckpoint();
- } else
- xxflush(1);
-}
-
-wwcheckpoint()
-{
- int s = sigblock(sigmask(SIGALRM) | sigmask(SIGIO));
-
- tt.tt_ack = 0;
- do {
- (*tt.tt_checkpoint)();
-#ifndef OLD_TTY
- (void) tcdrain(1);
-#endif
- (void) alarm(3);
- for (wwdocheckpoint = 0; !wwdocheckpoint && tt.tt_ack == 0;)
- (void) sigpause(s);
- } while (tt.tt_ack == 0);
- (void) alarm(0);
- wwdocheckpoint = 0;
- if (tt.tt_ack < 0) {
- wwcopyscreen(wwcs, wwos);
- (void) alarm(1);
- wwreset();
- wwupdate();
- wwflush();
- } else {
- wwcopyscreen(wwos, wwcs);
- (void) alarm(3);
- }
- (void) sigsetmask(s);
-}
-
-wwcopyscreen(s1, s2)
- register union ww_char **s1, **s2;
-{
- register i;
- register s = wwncol * sizeof **s1;
-
- for (i = wwnrow; --i >= 0;)
- bcopy((char *) *s1++, (char *) *s2++, s);
-}
-
-void
-wwalarm()
-{
- wwdocheckpoint = 1;
-}
diff --git a/usr.bin/window/wwframe.c b/usr.bin/window/wwframe.c
deleted file mode 100644
index 5cdd777..0000000
--- a/usr.bin/window/wwframe.c
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwframe.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-
-#define frameok(w, r, c) (w1 = wwindex[wwsmap[r][c]], \
- w1->ww_fmap || w1->ww_order > (w)->ww_order)
-
-wwframe(w, wframe)
-register struct ww *w;
-struct ww *wframe;
-{
- register r, c;
- char a1, a2, a3;
- char b1, b2, b3;
- register char *smap;
- register code;
- register struct ww *w1;
-
- if (w->ww_w.t > 0) {
- r = w->ww_w.t - 1;
- c = w->ww_i.l - 1;
- smap = &wwsmap[r + 1][c + 1];
- a1 = 0;
- a2 = 0;
- b1 = 0;
- b2 = c < 0 || frameok(w, r, c);
-
- for (; c < w->ww_i.r; c++) {
- if (c + 1 >= wwncol) {
- a3 = 1;
- b3 = 1;
- } else {
- a3 = w->ww_index == *smap++;
- b3 = frameok(w, r, c + 1);
- }
- if (b2) {
- code = 0;
- if ((a1 || a2) && b1)
- code |= WWF_L;
- if ((a2 || a3) && b3)
- code |= WWF_R;
- if (code)
- wwframec(wframe, r, c, code|WWF_TOP);
- }
- a1 = a2;
- a2 = a3;
- b1 = b2;
- b2 = b3;
- }
- if ((a1 || a2) && b1 && b2)
- wwframec(wframe, r, c, WWF_L|WWF_TOP);
- }
-
- if (w->ww_w.b < wwnrow) {
- r = w->ww_w.b;
- c = w->ww_i.l - 1;
- smap = &wwsmap[r - 1][c + 1];
- a1 = 0;
- a2 = 0;
- b1 = 0;
- b2 = c < 0 || frameok(w, r, c);
-
- for (; c < w->ww_i.r; c++) {
- if (c + 1 >= wwncol) {
- a3 = 1;
- b3 = 1;
- } else {
- a3 = w->ww_index == *smap++;
- b3 = frameok(w, r, c + 1);
- }
- if (b2) {
- code = 0;
- if ((a1 || a2) && b1)
- code |= WWF_L;
- if ((a2 || a3) && b3)
- code |= WWF_R;
- if (code)
- wwframec(wframe, r, c, code);
- }
- a1 = a2;
- a2 = a3;
- b1 = b2;
- b2 = b3;
- }
- if ((a1 || a2) && b1 && b2)
- wwframec(wframe, r, c, WWF_L);
- }
-
- if (w->ww_w.l > 0) {
- r = w->ww_i.t - 1;
- c = w->ww_w.l - 1;
- a1 = 0;
- a2 = 0;
- b1 = 0;
- b2 = r < 0 || frameok(w, r, c);
-
- for (; r < w->ww_i.b; r++) {
- if (r + 1 >= wwnrow) {
- a3 = 1;
- b3 = 1;
- } else {
- a3 = w->ww_index == wwsmap[r + 1][c + 1];
- b3 = frameok(w, r + 1, c);
- }
- if (b2) {
- code = 0;
- if ((a1 || a2) && b1)
- code |= WWF_U;
- if ((a2 || a3) && b3)
- code |= WWF_D;
- if (code)
- wwframec(wframe, r, c, code);
- }
- a1 = a2;
- a2 = a3;
- b1 = b2;
- b2 = b3;
- }
- if ((a1 || a2) && b1 && b2)
- wwframec(wframe, r, c, WWF_U);
- }
-
- if (w->ww_w.r < wwncol) {
- r = w->ww_i.t - 1;
- c = w->ww_w.r;
- a1 = 0;
- a2 = 0;
- b1 = 0;
- b2 = r < 0 || frameok(w, r, c);
-
- for (; r < w->ww_i.b; r++) {
- if (r + 1 >= wwnrow) {
- a3 = 1;
- b3 = 1;
- } else {
- a3 = w->ww_index == wwsmap[r + 1][c - 1];
- b3 = frameok(w, r + 1, c);
- }
- if (b2) {
- code = 0;
- if ((a1 || a2) && b1)
- code |= WWF_U;
- if ((a2 || a3) && b3)
- code |= WWF_D;
- if (code)
- wwframec(wframe, r, c, code);
- }
- a1 = a2;
- a2 = a3;
- b1 = b2;
- b2 = b3;
- }
- if ((a1 || a2) && b1 && b2)
- wwframec(wframe, r, c, WWF_U);
- }
-}
-
-wwframec(f, r, c, code)
-register struct ww *f;
-register r, c;
-char code;
-{
- char oldcode;
- register char *smap;
-
- if (r < f->ww_i.t || r >= f->ww_i.b || c < f->ww_i.l || c >= f->ww_i.r)
- return;
-
- smap = &wwsmap[r][c];
-
- {
- register struct ww *w;
-
- w = wwindex[*smap];
- if (w->ww_order > f->ww_order) {
- if (w != &wwnobody && w->ww_win[r][c] == 0)
- w->ww_nvis[r]--;
- *smap = f->ww_index;
- }
- }
-
- if (f->ww_fmap != 0) {
- register char *fmap;
-
- fmap = &f->ww_fmap[r][c];
- oldcode = *fmap;
- *fmap |= code;
- if (code & WWF_TOP)
- *fmap &= ~WWF_LABEL;
- code = *fmap;
- } else
- oldcode = 0;
- {
- register char *win = &f->ww_win[r][c];
-
- if (*win == WWM_GLS && *smap == f->ww_index)
- f->ww_nvis[r]++;
- *win &= ~WWM_GLS;
- }
- if (oldcode != code && (code & WWF_LABEL) == 0) {
- register short frame;
-
- frame = tt.tt_frame[code & WWF_MASK];
- f->ww_buf[r][c].c_w = frame;
- if (wwsmap[r][c] == f->ww_index) {
- wwtouched[r] |= WWU_TOUCHED;
- wwns[r][c].c_w = frame;
- }
- }
-}
diff --git a/usr.bin/window/wwgets.c b/usr.bin/window/wwgets.c
deleted file mode 100644
index 742576c..0000000
--- a/usr.bin/window/wwgets.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwgets.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "char.h"
-
-static void
-rub(unsigned char c, struct ww *w)
-{
- int i;
-
- for (i = isctrl(c) ? strlen(unctrl(c)) : 1; --i >= 0;)
- (void) wwwrite(w, "\b \b", 3);
-}
-
-void
-wwgets(char *buf, int n, struct ww *w)
-{
- register char *p = buf;
- register int c;
- char uc = w->ww_unctrl;
-
- w->ww_unctrl = 0;
- for (;;) {
- wwcurtowin(w);
- while ((c = wwgetc()) < 0)
- wwiomux();
-#ifdef OLD_TTY
- if (c == wwoldtty.ww_sgttyb.sg_erase)
-#else
- if (c == wwoldtty.ww_termios.c_cc[VERASE])
-#endif
- {
- if (p > buf)
- rub(*--p, w);
- } else
-#ifdef OLD_TTY
- if (c == wwoldtty.ww_sgttyb.sg_kill)
-#else
- if (c == wwoldtty.ww_termios.c_cc[VKILL])
-#endif
- {
- while (p > buf)
- rub(*--p, w);
- } else
-#ifdef OLD_TTY
- if (c == wwoldtty.ww_ltchars.t_werasc)
-#else
- if (c == wwoldtty.ww_termios.c_cc[VWERASE])
-#endif
- {
- while (--p >= buf && (*p == ' ' || *p == '\t'))
- rub(*p, w);
- while (p >= buf && *p != ' ' && *p != '\t')
- rub(*p--, w);
- p++;
- } else if (c == '\r' || c == '\n') {
- break;
- } else {
- if (p >= buf + n - 1)
- wwputc(ctrl('g'), w);
- else
- if (isctrl(c))
- wwputs(unctrl(*p++ = c), w);
- else
- wwputc(*p++ = c, w);
- }
- }
- *p = 0;
- w->ww_unctrl = uc;
-}
diff --git a/usr.bin/window/wwinit.c b/usr.bin/window/wwinit.c
deleted file mode 100644
index 1fc4e0b..0000000
--- a/usr.bin/window/wwinit.c
+++ /dev/null
@@ -1,430 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwinit.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-#include <signal.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <termcap.h>
-#include "char.h"
-
-wwinit()
-{
- register i, j;
- char *kp;
- int s;
-
- wwdtablesize = getdtablesize();
- wwhead.ww_forw = &wwhead;
- wwhead.ww_back = &wwhead;
-
- s = sigblock(sigmask(SIGIO) | sigmask(SIGCHLD) | sigmask(SIGALRM) |
- sigmask(SIGHUP) | sigmask(SIGTERM));
- if (signal(SIGIO, wwrint) == BADSIG ||
- signal(SIGCHLD, wwchild) == BADSIG ||
- signal(SIGHUP, wwquit) == BADSIG ||
- signal(SIGTERM, wwquit) == BADSIG ||
- signal(SIGPIPE, SIG_IGN) == BADSIG) {
- wwerrno = WWE_SYS;
- return -1;
- }
-
- if (wwgettty(0, &wwoldtty) < 0)
- return -1;
- wwwintty = wwoldtty;
-#ifdef OLD_TTY
- wwwintty.ww_sgttyb.sg_flags &= ~XTABS;
- wwnewtty.ww_sgttyb = wwoldtty.ww_sgttyb;
- wwnewtty.ww_sgttyb.sg_erase = -1;
- wwnewtty.ww_sgttyb.sg_kill = -1;
- wwnewtty.ww_sgttyb.sg_flags |= CBREAK;
- wwnewtty.ww_sgttyb.sg_flags &= ~(ECHO|CRMOD);
- wwnewtty.ww_tchars.t_intrc = -1;
- wwnewtty.ww_tchars.t_quitc = -1;
- wwnewtty.ww_tchars.t_startc = -1;
- wwnewtty.ww_tchars.t_stopc = -1;
- wwnewtty.ww_tchars.t_eofc = -1;
- wwnewtty.ww_tchars.t_brkc = -1;
- wwnewtty.ww_ltchars.t_suspc = -1;
- wwnewtty.ww_ltchars.t_dsuspc = -1;
- wwnewtty.ww_ltchars.t_rprntc = -1;
- wwnewtty.ww_ltchars.t_flushc = -1;
- wwnewtty.ww_ltchars.t_werasc = -1;
- wwnewtty.ww_ltchars.t_lnextc = -1;
- wwnewtty.ww_lmode = wwoldtty.ww_lmode | LLITOUT;
- wwnewtty.ww_ldisc = wwoldtty.ww_ldisc;
-#else
-#ifndef OXTABS
-#define OXTABS XTABS
-#endif
-#ifndef _POSIX_VDISABLE
-#define _POSIX_VDISABLE -1
-#endif
- wwwintty.ww_termios.c_oflag &= ~OXTABS;
- wwnewtty.ww_termios = wwoldtty.ww_termios;
- wwnewtty.ww_termios.c_iflag &=
- ~(ISTRIP | INLCR | IGNCR | ICRNL | IXON | IXOFF | IMAXBEL);
- wwnewtty.ww_termios.c_oflag = 0;
- wwnewtty.ww_termios.c_cflag &= ~(CSIZE | PARENB);
- wwnewtty.ww_termios.c_cflag |= CS8;
- wwnewtty.ww_termios.c_lflag = 0;
- for (i = 0; i < NCCS; i++)
- wwnewtty.ww_termios.c_cc[i] = _POSIX_VDISABLE;
- wwnewtty.ww_termios.c_cc[VMIN] = 0;
- wwnewtty.ww_termios.c_cc[VTIME] = 0;
-#endif
- wwnewtty.ww_fflags = wwoldtty.ww_fflags | FASYNC;
- if (wwsettty(0, &wwnewtty) < 0)
- goto bad;
-
- if ((wwterm = getenv("TERM")) == 0) {
- wwerrno = WWE_BADTERM;
- goto bad;
- }
- if (tgetent(wwtermcap, wwterm) != 1) {
- wwerrno = WWE_BADTERM;
- goto bad;
- }
-#ifdef OLD_TTY
- ospeed = wwoldtty.ww_sgttyb.sg_ospeed;
- switch (ospeed) {
- default:
- case B0:
- goto bad;
- case B50:
- wwbaud = 50;
- break;
- case B75:
- wwbaud = 75;
- break;
- case B110:
- wwbaud = 110;
- break;
- case B134:
- wwbaud = 134;
- break;
- case B150:
- wwbaud = 150;
- break;
- case B200:
- wwbaud = 200;
- break;
- case B300:
- wwbaud = 300;
- break;
- case B600:
- wwbaud = 600;
- break;
- case B1200:
- wwbaud = 1200;
- break;
- case B1800:
- wwbaud = 1800;
- break;
- case B2400:
- wwbaud = 2400;
- break;
- case B4800:
- wwbaud = 4800;
- break;
- case B9600:
- wwbaud = 9600;
- break;
-#ifdef B19200
- case B19200:
-#else
- case EXTA:
-#endif
- wwbaud = 19200;
- break;
-#ifdef B38400
- case B38400:
-#else
- case EXTB:
-#endif
- wwbaud = 38400;
- break;
-#ifdef B57600
- case B57600:
- wwbaud = 57600;
- break;
-#endif
-#ifdef B115200
- case B115200:
- wwbaud = 115200;
- break;
-#endif
- }
-#else
- if ((wwbaud = cfgetospeed(&wwoldtty.ww_termios)) == B0)
- goto bad;
-#endif
- wwospeed = ospeed;
-
- if (xxinit() < 0)
- goto bad;
- wwnrow = tt.tt_nrow;
- wwncol = tt.tt_ncol;
- wwavailmodes = tt.tt_availmodes;
- wwwrap = tt.tt_wrap;
-
- if (wwavailmodes & WWM_REV)
- wwcursormodes = WWM_REV | wwavailmodes & WWM_BLK;
- else if (wwavailmodes & WWM_UL)
- wwcursormodes = WWM_UL;
-
- if ((wwib = malloc((unsigned) 512)) == 0)
- goto bad;
- wwibe = wwib + 512;
- wwibq = wwibp = wwib;
-
- if ((wwsmap = wwalloc(0, 0, wwnrow, wwncol, sizeof (char))) == 0)
- goto bad;
- for (i = 0; i < wwnrow; i++)
- for (j = 0; j < wwncol; j++)
- wwsmap[i][j] = WWX_NOBODY;
-
- wwos = (union ww_char **)
- wwalloc(0, 0, wwnrow, wwncol, sizeof (union ww_char));
- if (wwos == 0)
- goto bad;
- /* wwos is cleared in wwstart1() */
- wwns = (union ww_char **)
- wwalloc(0, 0, wwnrow, wwncol, sizeof (union ww_char));
- if (wwns == 0)
- goto bad;
- for (i = 0; i < wwnrow; i++)
- for (j = 0; j < wwncol; j++)
- wwns[i][j].c_w = ' ';
- if (tt.tt_checkpoint) {
- /* wwcs is also cleared in wwstart1() */
- wwcs = (union ww_char **)
- wwalloc(0, 0, wwnrow, wwncol, sizeof (union ww_char));
- if (wwcs == 0)
- goto bad;
- }
-
- wwtouched = malloc((unsigned) wwnrow);
- if (wwtouched == 0) {
- wwerrno = WWE_NOMEM;
- goto bad;
- }
- for (i = 0; i < wwnrow; i++)
- wwtouched[i] = 0;
-
- wwupd = (struct ww_update *) malloc((unsigned) wwnrow * sizeof *wwupd);
- if (wwupd == 0) {
- wwerrno = WWE_NOMEM;
- goto bad;
- }
-
- wwindex[WWX_NOBODY] = &wwnobody;
- wwnobody.ww_order = NWW;
-
- kp = wwwintermcap;
- if (wwavailmodes & WWM_REV)
- wwaddcap1(WWT_REV, &kp);
- if (wwavailmodes & WWM_BLK)
- wwaddcap1(WWT_BLK, &kp);
- if (wwavailmodes & WWM_UL)
- wwaddcap1(WWT_UL, &kp);
- if (wwavailmodes & WWM_GRP)
- wwaddcap1(WWT_GRP, &kp);
- if (wwavailmodes & WWM_DIM)
- wwaddcap1(WWT_DIM, &kp);
- if (wwavailmodes & WWM_USR)
- wwaddcap1(WWT_USR, &kp);
- if (tt.tt_insline && tt.tt_delline || tt.tt_setscroll)
- wwaddcap1(WWT_ALDL, &kp);
- if (tt.tt_inschar)
- wwaddcap1(WWT_IMEI, &kp);
- if (tt.tt_insspace)
- wwaddcap1(WWT_IC, &kp);
- if (tt.tt_delchar)
- wwaddcap1(WWT_DC, &kp);
- wwaddcap("kb", &kp);
- wwaddcap2("ku", &kp);
- wwaddcap2("kd", &kp);
- wwaddcap2("kl", &kp);
- wwaddcap2("kr", &kp);
- wwaddcap("kh", &kp);
- if ((j = tgetnum("kn")) >= 0) {
- char cap[32];
-
- (void) sprintf(kp, "kn#%d:", j);
- for (; *kp; kp++)
- ;
- for (i = 1; i <= j; i++) {
- (void) sprintf(cap, "k%d", i);
- wwaddcap(cap, &kp);
- cap[0] = 'l';
- wwaddcap(cap, &kp);
- }
- }
- /*
- * It's ok to do this here even if setenv() is destructive
- * since tt_init() has already made its own copy of it and
- * wwterm now points to the copy.
- */
- (void) setenv("TERM", WWT_TERM, 1);
-#ifdef TERMINFO
- if (wwterminfoinit() < 0)
- goto bad;
-#endif
-
- if (tt.tt_checkpoint)
- if (signal(SIGALRM, wwalarm) == BADSIG) {
- wwerrno = WWE_SYS;
- goto bad;
- }
- fcntl(0, F_SETOWN, getpid());
- /* catch typeahead before ASYNC was set */
- (void) kill(getpid(), SIGIO);
- wwstart1();
- (void) sigsetmask(s);
- return 0;
-bad:
- /*
- * Don't bother to free storage. We're supposed
- * to exit when wwinit fails anyway.
- */
- (void) signal(SIGIO, SIG_DFL);
- (void) wwsettty(0, &wwoldtty);
- (void) sigsetmask(s);
- return -1;
-}
-
-wwaddcap(cap, kp)
- register char *cap;
- register char **kp;
-{
- char tbuf[512];
- char *tp = tbuf;
- register char *str, *p;
-
- if ((str = tgetstr(cap, &tp)) != 0) {
- while (*(*kp)++ = *cap++)
- ;
- (*kp)[-1] = '=';
- while (*str) {
- for (p = unctrl(*str++); *(*kp)++ = *p++;)
- ;
- (*kp)--;
- }
- *(*kp)++ = ':';
- **kp = 0;
- }
-}
-
-wwaddcap1(cap, kp)
- register char *cap;
- register char **kp;
-{
- while (*(*kp)++ = *cap++)
- ;
- (*kp)--;
-}
-
-wwaddcap2(cap, kp)
- register char *cap;
- register char **kp;
-{
- char tbuf[512];
- char *tp = tbuf;
- register char *str, *p;
-
- if ((str = tgetstr(cap, &tp)) != 0) {
- /* we don't support vt100's application key mode, remap */
- if (str[0] == ctrl('[') && str[1] == 'O')
- str[1] = '[';
- while (*(*kp)++ = *cap++)
- ;
- (*kp)[-1] = '=';
- while (*str) {
- for (p = unctrl(*str++); *(*kp)++ = *p++;)
- ;
- (*kp)--;
- }
- *(*kp)++ = ':';
- **kp = 0;
- }
-}
-
-wwstart()
-{
- register i;
-
- (void) wwsettty(0, &wwnewtty);
- signal(SIGIO, wwrint);
- for (i = 0; i < wwnrow; i++)
- wwtouched[i] = WWU_TOUCHED;
- wwstart1();
-}
-
-wwstart1()
-{
- register i, j;
-
- for (i = 0; i < wwnrow; i++)
- for (j = 0; j < wwncol; j++) {
- wwos[i][j].c_w = ' ';
- if (tt.tt_checkpoint)
- wwcs[i][j].c_w = ' ';
- }
- xxstart();
- if (tt.tt_checkpoint)
- wwdocheckpoint = 1;
-}
-
-/*
- * Reset data structures and terminal from an unknown state.
- * Restoring wwos has been taken care of elsewhere.
- */
-wwreset()
-{
- register i;
-
- xxreset();
- for (i = 0; i < wwnrow; i++)
- wwtouched[i] = WWU_TOUCHED;
-}
diff --git a/usr.bin/window/wwinschar.c b/usr.bin/window/wwinschar.c
deleted file mode 100644
index a9a8c27..0000000
--- a/usr.bin/window/wwinschar.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwinschar.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-
-wwinschar(w, row, col, c, m)
-register struct ww *w;
-unsigned char c, m;
-{
- register i;
- int nvis;
- short x = c | m << WWC_MSHIFT;
-
- /*
- * First, shift the line.
- */
- {
- register union ww_char *p, *q;
-
- p = &w->ww_buf[row][w->ww_b.r];
- q = p - 1;
- for (i = w->ww_b.r - col; --i > 0;)
- *--p = *--q;
- q->c_w = x;
- }
-
- /*
- * If can't see it, just return.
- */
- if (row < w->ww_i.t || row >= w->ww_i.b
- || w->ww_i.r <= 0 || w->ww_i.r <= col)
- return;
-
- if (col < w->ww_i.l)
- col = w->ww_i.l;
-
- /*
- * Now find out how much is actually changed, and fix wwns.
- */
- {
- register union ww_char *buf;
- register char *win;
- register union ww_char *ns;
- register char *smap;
- char touched;
-
- nvis = 0;
- smap = &wwsmap[row][col];
- for (i = col; i < w->ww_i.r && *smap++ != w->ww_index; i++)
- ;
- if (i >= w->ww_i.r)
- return;
- col = i;
- buf = w->ww_buf[row];
- win = w->ww_win[row];
- ns = wwns[row];
- smap = &wwsmap[row][i];
- touched = wwtouched[row];
- for (; i < w->ww_i.r; i++) {
- if (*smap++ != w->ww_index)
- continue;
- touched |= WWU_TOUCHED;
- if (win[i])
- ns[i].c_w =
- buf[i].c_w ^ win[i] << WWC_MSHIFT;
- else {
- nvis++;
- ns[i] = buf[i];
- }
- }
- wwtouched[row] = touched;
- }
-
- /*
- * Can/Should we use delete character?
- */
- if ((tt.tt_inschar || tt.tt_insspace) && nvis > (wwncol - col) / 2) {
- register union ww_char *p, *q;
-
- if (tt.tt_inschar)
- xxinschar(row, col, c, m);
- else {
- xxinsspace(row, col);
- x = ' ';
- }
- p = &wwos[row][wwncol];
- q = p - 1;
- for (i = wwncol - col; --i > 0;)
- *--p = *--q;
- q->c_w = x;
- }
-}
diff --git a/usr.bin/window/wwinsline.c b/usr.bin/window/wwinsline.c
deleted file mode 100644
index 60e8b05..0000000
--- a/usr.bin/window/wwinsline.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwinsline.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-
-wwinsline(w, row)
-register struct ww *w;
-int row;
-{
- register i;
- register union ww_char **cpp, **cqq;
- register union ww_char *cp;
- int row1, row2;
- char deleted;
- int visible;
-
- /*
- * Scroll first.
- */
- if ((row1 = row) < w->ww_i.t) {
- row1 = w->ww_i.t;
- visible = 0;
- } else
- visible = 1;
- if ((row2 = w->ww_b.b) > w->ww_i.b) {
- row2 = w->ww_i.b;
- }
- deleted = wwscroll1(w, row1, row2, -1, visible);
-
- /*
- * Fix the buffer.
- * But leave clearing the last line for wwclreol().
- */
- cpp = &w->ww_buf[w->ww_b.b];
- cqq = cpp - 1;
- cp = *cqq;
- for (i = w->ww_b.b - row; --i > 0;)
- *--cpp = *--cqq;
- *cqq = cp;
-
- /*
- * Now clear the last line.
- */
- if (visible)
- wwclreol1(w, row, w->ww_b.l, deleted);
- else {
- cp += w->ww_b.l;
- for (i = w->ww_b.nc; --i >= 0;)
- cp++->c_w = ' ';
- }
-}
diff --git a/usr.bin/window/wwiomux.c b/usr.bin/window/wwiomux.c
deleted file mode 100644
index 7803557..0000000
--- a/usr.bin/window/wwiomux.c
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwiomux.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include <sys/time.h>
-#include <sys/types.h>
-#if !defined(OLD_TTY) && !defined(TIOCPKT_DATA)
-#include <sys/ioctl.h>
-#endif
-#include <fcntl.h>
-
-/*
- * Multiple window output handler.
- * The idea is to copy window outputs to the terminal, via the
- * display package. We try to give wwcurwin highest priority.
- * The only return conditions are when there is keyboard input
- * and when a child process dies, which are serviced by signal
- * catchers (wwrint() and wwchild()).
- * When there's nothing to do, we sleep in a select().
- * This can be done better with interrupt driven io. But that's
- * not supported on ptys, yet.
- * The history of this routine is interesting.
- */
-wwiomux()
-{
- register struct ww *w;
- fd_set imask;
- register n;
- register char *p;
- char c;
- struct timeval tv;
- char noblock = 0;
-
- for (;;) {
- if (wwinterrupt()) {
- wwclrintr();
- return;
- }
-
- FD_ZERO(&imask);
- n = -1;
- for (w = wwhead.ww_forw; w != &wwhead; w = w->ww_forw) {
- if (w->ww_pty < 0)
- continue;
- if (w->ww_obq < w->ww_obe) {
- if (w->ww_pty > n)
- n = w->ww_pty;
- FD_SET(w->ww_pty, &imask);
- }
- if (w->ww_obq > w->ww_obp && !w->ww_stopped)
- noblock = 1;
- }
-
- if (!noblock) {
- if (wwcurwin != 0)
- wwcurtowin(wwcurwin);
- wwupdate();
- wwflush();
- (void) setjmp(wwjmpbuf);
- wwsetjmp = 1;
- if (wwinterrupt()) {
- wwsetjmp = 0;
- wwclrintr();
- return;
- }
- /*
- * Defensive code. If somebody else (for example,
- * wall) clears the ASYNC flag on us, we will block
- * forever. So we need a finite timeout and set
- * the flag again. Anything more clever will probably
- * need even more system calls. (This is a bug
- * in the kernel.)
- * I don't like this one bit.
- */
- (void) fcntl(0, F_SETFL, wwnewtty.ww_fflags);
- tv.tv_sec = 30;
- tv.tv_usec = 0;
- } else {
- tv.tv_sec = 0;
- tv.tv_usec = 10000;
- }
- wwnselect++;
- n = select(n + 1, &imask, (fd_set *)0, (fd_set *)0, &tv);
- wwsetjmp = 0;
- noblock = 0;
-
- if (n < 0)
- wwnselecte++;
- else if (n == 0)
- wwnselectz++;
- else
- for (w = wwhead.ww_forw; w != &wwhead; w = w->ww_forw) {
- if (w->ww_pty < 0 ||
- !FD_ISSET(w->ww_pty, &imask))
- continue;
- wwnwread++;
- p = w->ww_obq;
- if (w->ww_ispty) {
- if (p == w->ww_ob) {
- w->ww_obp++;
- w->ww_obq++;
- } else
- p--;
- c = *p;
- }
- n = read(w->ww_pty, p, w->ww_obe - p);
- if (n < 0) {
- wwnwreade++;
- (void) close(w->ww_pty);
- w->ww_pty = -1;
- } else if (n == 0) {
- wwnwreadz++;
- (void) close(w->ww_pty);
- w->ww_pty = -1;
- } else if (!w->ww_ispty) {
- wwnwreadd++;
- wwnwreadc += n;
- w->ww_obq += n;
- } else if (*p == TIOCPKT_DATA) {
- n--;
- wwnwreadd++;
- wwnwreadc += n;
- w->ww_obq += n;
- } else {
- wwnwreadp++;
- if (*p & TIOCPKT_STOP)
- w->ww_stopped = 1;
- if (*p & TIOCPKT_START)
- w->ww_stopped = 0;
- if (*p & TIOCPKT_FLUSHWRITE) {
- w->ww_stopped = 0;
- w->ww_obq = w->ww_obp =
- w->ww_ob;
- }
- }
- if (w->ww_ispty)
- *p = c;
- }
- /*
- * Try the current window first, if there is output
- * then process it and go back to the top to try again.
- * This can lead to starvation of the other windows,
- * but presumably that what we want.
- * Update will eventually happen when output from wwcurwin
- * dies down.
- */
- if ((w = wwcurwin) != 0 && w->ww_pty >= 0 &&
- w->ww_obq > w->ww_obp && !w->ww_stopped) {
- n = wwwrite(w, w->ww_obp, w->ww_obq - w->ww_obp);
- if ((w->ww_obp += n) == w->ww_obq)
- w->ww_obq = w->ww_obp = w->ww_ob;
- noblock = 1;
- continue;
- }
- for (w = wwhead.ww_forw; w != &wwhead; w = w->ww_forw)
- if (w->ww_pty >= 0 && w->ww_obq > w->ww_obp &&
- !w->ww_stopped) {
- n = wwwrite(w, w->ww_obp,
- w->ww_obq - w->ww_obp);
- if ((w->ww_obp += n) == w->ww_obq)
- w->ww_obq = w->ww_obp = w->ww_ob;
- if (wwinterrupt())
- break;
- }
- }
-}
diff --git a/usr.bin/window/wwlabel.c b/usr.bin/window/wwlabel.c
deleted file mode 100644
index 50ecf85..0000000
--- a/usr.bin/window/wwlabel.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwlabel.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "char.h"
-
-/*
- * Label window w on f,
- * at 1 line above w and 'where' columns from it's left edge.
- * Gross, but it works.
- */
-wwlabel(w, f, where, l, mode)
-struct ww *w;
-struct ww *f;
-char *l;
-{
- int row;
- register j;
- int jj;
- register char *win;
- register union ww_char *buf;
- register union ww_char *ns;
- register char *fmap;
- register char *smap;
- char touched;
- unsigned char *p;
- static unsigned char cbuf[2];
-
- if (f->ww_fmap == 0)
- return;
-
- row = w->ww_w.t - 1;
- if (row < f->ww_i.t || row >= f->ww_i.b)
- return;
- win = f->ww_win[row];
- buf = f->ww_buf[row];
- fmap = f->ww_fmap[row];
- ns = wwns[row];
- smap = wwsmap[row];
- touched = wwtouched[row];
- mode <<= WWC_MSHIFT;
-
- jj = MIN(w->ww_i.r, f->ww_i.r);
- j = w->ww_i.l + where;
- while (j < jj && *l) {
- if (isctrl(*l))
- p = unctrl(*l);
- else {
- cbuf[0] = *l;
- p = cbuf;
- }
- for (l++; j < jj && *p; j++, p++) {
- /* can't label if not already framed */
- if (win[j] & WWM_GLS)
- continue;
- if (smap[j] != f->ww_index)
- buf[j].c_w = mode | *p;
- else {
- ns[j].c_w = (buf[j].c_w = mode | *p)
- ^ win[j] << WWC_MSHIFT;
- touched |= WWU_TOUCHED;
- }
- fmap[j] |= WWF_LABEL;
- }
- }
- wwtouched[row] = touched;
-}
diff --git a/usr.bin/window/wwmisc.c b/usr.bin/window/wwmisc.c
deleted file mode 100644
index 945dca4..0000000
--- a/usr.bin/window/wwmisc.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwmisc.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-#include "char.h"
-
-/*
- * Sufficient but not necessary test for total visibility.
- */
-wwvisible(w)
-register struct ww *w;
-{
- register i;
- register nvis = 0;
-
- for (i = w->ww_i.t; i < w->ww_i.b; i++)
- nvis += w->ww_nvis[i];
- if (w->ww_hascursor
- && w->ww_cur.r >= w->ww_i.t && w->ww_cur.r < w->ww_i.b
- && w->ww_cur.c >= w->ww_i.l && w->ww_cur.c < w->ww_i.r
- && wwsmap[w->ww_cur.r][w->ww_cur.c] == w->ww_index)
- nvis++;
- return nvis == w->ww_i.nr * w->ww_i.nc;
-}
-
-wwbell()
-{
- ttputc(ctrl('g'));
-}
diff --git a/usr.bin/window/wwmove.c b/usr.bin/window/wwmove.c
deleted file mode 100644
index 5db6cae..0000000
--- a/usr.bin/window/wwmove.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwmove.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-
-/*
- * Move a window. Should be unattached.
- */
-wwmove(w, row, col)
-register struct ww *w;
-{
- register dr, dc;
- register i;
-
- dr = row - w->ww_w.t;
- dc = col - w->ww_w.l;
-
- w->ww_w.t += dr;
- w->ww_w.b += dr;
- w->ww_w.l += dc;
- w->ww_w.r += dc;
-
- w->ww_b.t += dr;
- w->ww_b.b += dr;
- w->ww_b.l += dc;
- w->ww_b.r += dc;
-
- w->ww_i.t = MAX(w->ww_w.t, 0);
- w->ww_i.b = MIN(w->ww_w.b, wwnrow);
- w->ww_i.nr = w->ww_i.b - w->ww_i.t;
- w->ww_i.l = MAX(w->ww_w.l, 0);
- w->ww_i.r = MIN(w->ww_w.r, wwncol);
- w->ww_i.nc = w->ww_i.r - w->ww_i.l;
-
- w->ww_cur.r += dr;
- w->ww_cur.c += dc;
-
- w->ww_win -= dr;
- for (i = w->ww_w.t; i < w->ww_w.b; i++)
- w->ww_win[i] -= dc;
- if (w->ww_fmap != 0) {
- w->ww_fmap -= dr;
- for (i = w->ww_w.t; i < w->ww_w.b; i++)
- w->ww_fmap[i] -= dc;
- }
- w->ww_nvis -= dr;
- for (i = w->ww_i.t; i < w->ww_i.b; i++) {
- register j = w->ww_i.l;
- register char *win = &w->ww_win[i][j];
- register char *smap = &wwsmap[i][j];
- int nvis = 0;
-
- for (; j < w->ww_i.r; j++, win++, smap++)
- if (*win == 0 && *smap == w->ww_index)
- nvis++;
- w->ww_nvis[i] = nvis;
- }
- w->ww_buf -= dr;
- for (i = w->ww_b.t; i < w->ww_b.b; i++)
- w->ww_buf[i] -= dc;
-}
diff --git a/usr.bin/window/wwopen.c b/usr.bin/window/wwopen.c
deleted file mode 100644
index c6f906d..0000000
--- a/usr.bin/window/wwopen.c
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwopen.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <fcntl.h>
-#include <stdlib.h>
-
-struct ww *
-wwopen(flags, nrow, ncol, row, col, nline)
-{
- register struct ww *w;
- register i, j;
- char m;
- short nvis;
-
- w = (struct ww *)calloc(sizeof (struct ww), 1);
- if (w == 0) {
- wwerrno = WWE_NOMEM;
- goto bad;
- }
- w->ww_pty = -1;
- w->ww_socket = -1;
-
- for (i = 0; i < NWW && wwindex[i] != 0; i++)
- ;
- if (i >= NWW) {
- wwerrno = WWE_TOOMANY;
- goto bad;
- }
- w->ww_index = i;
-
- if (nline < nrow)
- nline = nrow;
-
- w->ww_w.t = row;
- w->ww_w.b = row + nrow;
- w->ww_w.l = col;
- w->ww_w.r = col + ncol;
- w->ww_w.nr = nrow;
- w->ww_w.nc = ncol;
-
- w->ww_b.t = row;
- w->ww_b.b = row + nline;
- w->ww_b.l = col;
- w->ww_b.r = col + ncol;
- w->ww_b.nr = nline;
- w->ww_b.nc = ncol;
-
- w->ww_i.t = MAX(w->ww_w.t, 0);
- w->ww_i.b = MIN(w->ww_w.b, wwnrow);
- w->ww_i.l = MAX(w->ww_w.l, 0);
- w->ww_i.r = MIN(w->ww_w.r, wwncol);
- w->ww_i.nr = w->ww_i.b - w->ww_i.t;
- w->ww_i.nc = w->ww_i.r - w->ww_i.l;
-
- w->ww_cur.r = w->ww_w.t;
- w->ww_cur.c = w->ww_w.l;
-
- if (flags & WWO_PTY) {
- if (wwgetpty(w) < 0)
- goto bad;
- w->ww_ispty = 1;
- } else if (flags & WWO_SOCKET) {
- int d[2];
- if (socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC, d) < 0) {
- wwerrno = WWE_SYS;
- goto bad;
- }
- (void) fcntl(d[0], F_SETFD, 1);
- (void) fcntl(d[1], F_SETFD, 1);
- w->ww_pty = d[0];
- w->ww_socket = d[1];
- }
- if (flags & (WWO_PTY|WWO_SOCKET)) {
- if ((w->ww_ob = malloc(512)) == 0) {
- wwerrno = WWE_NOMEM;
- goto bad;
- }
- w->ww_obe = w->ww_ob + 512;
- w->ww_obp = w->ww_obq = w->ww_ob;
- }
-
- w->ww_win = wwalloc(w->ww_w.t, w->ww_w.l,
- w->ww_w.nr, w->ww_w.nc, sizeof (char));
- if (w->ww_win == 0)
- goto bad;
- m = 0;
- if (flags & WWO_GLASS)
- m |= WWM_GLS;
- if (flags & WWO_REVERSE)
- if (wwavailmodes & WWM_REV)
- m |= WWM_REV;
- else
- flags &= ~WWO_REVERSE;
- for (i = w->ww_w.t; i < w->ww_w.b; i++)
- for (j = w->ww_w.l; j < w->ww_w.r; j++)
- w->ww_win[i][j] = m;
-
- if (flags & WWO_FRAME) {
- w->ww_fmap = wwalloc(w->ww_w.t, w->ww_w.l,
- w->ww_w.nr, w->ww_w.nc, sizeof (char));
- if (w->ww_fmap == 0)
- goto bad;
- for (i = w->ww_w.t; i < w->ww_w.b; i++)
- for (j = w->ww_w.l; j < w->ww_w.r; j++)
- w->ww_fmap[i][j] = 0;
- }
-
- w->ww_buf = (union ww_char **)
- wwalloc(w->ww_b.t, w->ww_b.l,
- w->ww_b.nr, w->ww_b.nc, sizeof (union ww_char));
- if (w->ww_buf == 0)
- goto bad;
- for (i = w->ww_b.t; i < w->ww_b.b; i++)
- for (j = w->ww_b.l; j < w->ww_b.r; j++)
- w->ww_buf[i][j].c_w = ' ';
-
- w->ww_nvis = (short *)malloc((unsigned) w->ww_w.nr * sizeof (short));
- if (w->ww_nvis == 0) {
- wwerrno = WWE_NOMEM;
- goto bad;
- }
- w->ww_nvis -= w->ww_w.t;
- nvis = m ? 0 : w->ww_w.nc;
- for (i = w->ww_w.t; i < w->ww_w.b; i++)
- w->ww_nvis[i] = nvis;
-
- w->ww_state = WWS_INITIAL;
- w->ww_oflags = flags;
- return wwindex[w->ww_index] = w;
-bad:
- if (w != 0) {
- if (w->ww_win != 0)
- wwfree(w->ww_win, w->ww_w.t);
- if (w->ww_fmap != 0)
- wwfree(w->ww_fmap, w->ww_w.t);
- if (w->ww_buf != 0)
- wwfree((char **)w->ww_buf, w->ww_b.t);
- if (w->ww_nvis != 0)
- free((char *)(w->ww_nvis + w->ww_w.t));
- if (w->ww_ob != 0)
- free(w->ww_ob);
- if (w->ww_pty >= 0)
- (void) close(w->ww_pty);
- if (w->ww_socket >= 0)
- (void) close(w->ww_socket);
- free((char *)w);
- }
- return 0;
-}
diff --git a/usr.bin/window/wwprintf.c b/usr.bin/window/wwprintf.c
deleted file mode 100644
index 1c74981..0000000
--- a/usr.bin/window/wwprintf.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwprintf.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include <stdarg.h>
-
-void
-wwprintf(struct ww *w, char *fmt, ...)
-{
- char buf[1024];
- va_list ap;
-
- va_start(ap, fmt);
- /* buffer can overflow */
- (void) wwwrite(w, buf, vsprintf(buf, fmt, ap));
- va_end(ap);
-}
diff --git a/usr.bin/window/wwpty.c b/usr.bin/window/wwpty.c
deleted file mode 100644
index 9a8724d..0000000
--- a/usr.bin/window/wwpty.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwpty.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include <fcntl.h>
-#include <stdlib.h>
-#include <string.h>
-#if !defined(OLD_TTY) && !defined(TIOCPKT)
-#include <sys/ioctl.h>
-#endif
-
-wwgetpty(w)
-register struct ww *w;
-{
- char *ttyname;
- int master, slave, on;
-#define PTY "/dev/XtyXX"
-
- on = 1;
- w->ww_pty = -1;
-
- ttyname = malloc(strlen(PTY) + 1);
- if (openpty(&master, &slave, ttyname, NULL, NULL) == 0) {
- w->ww_pty = master;
- (void) strcpy(w->ww_ttyname, ttyname);
- if (ioctl(w->ww_pty, TIOCPKT, (char *)&on) < 0) {
- (void) close(w->ww_pty);
- wwerrno = WWE_SYS;
- } else {
- (void) fcntl(w->ww_pty, F_SETFD, 1);
- free(ttyname);
- return 0;
- }
- }
- free(ttyname);
-
- wwerrno = WWE_NOPTY;
- return -1;
-}
diff --git a/usr.bin/window/wwputc.c b/usr.bin/window/wwputc.c
deleted file mode 100644
index 8d0780e..0000000
--- a/usr.bin/window/wwputc.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwputc.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-
-wwputc(c, w)
-char c;
-struct ww *w;
-{
- (void) wwwrite(w, &c, sizeof c);
-}
diff --git a/usr.bin/window/wwputs.c b/usr.bin/window/wwputs.c
deleted file mode 100644
index dbc2960..0000000
--- a/usr.bin/window/wwputs.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwputs.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-
-wwputs(s, w)
-register char *s;
-struct ww *w;
-{
- register char *p = s;
-
- while (*p++)
- ;
- (void) wwwrite(w, s, p - s - 1);
-}
diff --git a/usr.bin/window/wwredraw.c b/usr.bin/window/wwredraw.c
deleted file mode 100644
index 66ac69c..0000000
--- a/usr.bin/window/wwredraw.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwredraw.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-
-wwredraw()
-{
- register i, j;
- register union ww_char *os;
-
- xxclear();
- for (i = 0; i < wwnrow; i++) {
- wwtouched[i] = WWU_TOUCHED;
- os = wwos[i];
- for (j = wwncol; --j >= 0;)
- (os++)->c_w = ' ';
- }
-}
diff --git a/usr.bin/window/wwredrawwin.c b/usr.bin/window/wwredrawwin.c
deleted file mode 100644
index bdc2f70..0000000
--- a/usr.bin/window/wwredrawwin.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwredrawwin.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-
-wwredrawwin1(w, row1, row2, offset)
-register struct ww *w;
-int row1, row2, offset;
-{
- int row;
- register col;
- register char *smap;
- register union ww_char *buf;
- register char *win;
- register union ww_char *ns;
- int x;
- int nchanged;
-
- for (row = row1; row < row2; row++) {
- col = w->ww_i.l;
- ns = wwns[row];
- smap = &wwsmap[row][col];
- buf = w->ww_buf[row + offset];
- win = w->ww_win[row];
- nchanged = 0;
- for (; col < w->ww_i.r; col++)
- if (*smap++ == w->ww_index &&
- ns[col].c_w !=
- (x = buf[col].c_w ^ win[col] << WWC_MSHIFT)) {
- nchanged++;
- ns[col].c_w = x;
- }
- if (nchanged > 0)
- wwtouched[row] |= WWU_TOUCHED;
- }
-}
diff --git a/usr.bin/window/wwrint.c b/usr.bin/window/wwrint.c
deleted file mode 100644
index 3332273..0000000
--- a/usr.bin/window/wwrint.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwrint.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-#if defined(OLD_TTY) || defined(VMIN_BUG)
-#include <fcntl.h>
-#endif
-
-#include <unistd.h>
-/*
- * Tty input interrupt handler.
- * (1) Read input into buffer (wwib*).
- * (2) Set the interrupt flag if anything is read.
- * Currently, the last is used to get out of the blocking
- * select() in wwiomux().
- * To avoid race conditions, we only modify wwibq in here, except
- * when the buffer is empty; and everywhere else, we only change wwibp.
- * It should be completely safe.
- */
-void
-wwrint()
-{
- register n;
-
- if (wwibp == wwibq)
- wwibp = wwibq = wwib;
- wwnread++;
-#if defined(OLD_TTY) || defined(VMIN_BUG)
- /* we have set c_cc[VMIN] to 0 */
- (void) fcntl(0, F_SETFL, O_NONBLOCK|wwnewtty.ww_fflags);
-#endif
- n = read(STDIN_FILENO, wwibq, wwibe - wwibq);
-#if defined(OLD_TTY) || defined(VMIN_BUG)
- (void) fcntl(0, F_SETFL, wwnewtty.ww_fflags);
-#endif
- if (n > 0) {
- if (tt.tt_rint)
- n = (*tt.tt_rint)(wwibq, n);
- if (n > 0) {
- wwibq += n;
- wwnreadc += n;
- /*
- * Hasten or delay the next checkpoint,
- * as the case may be.
- */
- if (tt.tt_checkpoint && !wwdocheckpoint)
- (void) alarm(1);
- wwsetintr();
- }
- } else if (n == 0)
- wwnreadz++;
- else
- wwnreade++;
-}
diff --git a/usr.bin/window/wwscroll.c b/usr.bin/window/wwscroll.c
deleted file mode 100644
index d0641a1..0000000
--- a/usr.bin/window/wwscroll.c
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwscroll.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-
-wwscroll(w, n)
-register struct ww *w;
-int n;
-{
- register dir;
- register top;
-
- if (n == 0)
- return;
- dir = n < 0 ? -1 : 1;
- top = w->ww_b.t - n;
- if (top > w->ww_w.t)
- top = w->ww_w.t;
- else if (top + w->ww_b.nr < w->ww_w.b)
- top = w->ww_w.b - w->ww_b.nr;
- n = abs(top - w->ww_b.t);
- if (n < w->ww_i.nr) {
- while (--n >= 0) {
- (void) wwscroll1(w, w->ww_i.t, w->ww_i.b, dir, 0);
- w->ww_buf += dir;
- w->ww_b.t -= dir;
- w->ww_b.b -= dir;
- }
- } else {
- w->ww_buf -= top - w->ww_b.t;
- w->ww_b.t = top;
- w->ww_b.b = top + w->ww_b.nr;
- wwredrawwin(w);
- }
-}
-
-/*
- * Scroll one line, between 'row1' and 'row2', in direction 'dir'.
- * Don't adjust ww_scroll.
- * And don't redraw 'leaveit' lines.
- */
-wwscroll1(w, row1, row2, dir, leaveit)
-register struct ww *w;
-int row1, row2, dir;
-int leaveit;
-{
- register i;
- int row1x, row2x;
- int nvis;
- int nvismax;
- int scrolled = 0;
-
- /*
- * See how many lines on the screen are affected.
- * And calculate row1x, row2x, and left at the same time.
- */
- for (i = row1; i < row2 && w->ww_nvis[i] == 0; i++)
- ;
- if (i >= row2) /* can't do any fancy stuff */
- goto out;
- row1x = i;
- for (i = row2 - 1; i >= row1 && w->ww_nvis[i] == 0; i--)
- ;
- if (i <= row1x)
- goto out; /* just one line is easy */
- row2x = i + 1;
-
- /*
- * See how much of this window is visible.
- */
- nvismax = wwncol * (row2x - row1x);
- nvis = 0;
- for (i = row1x; i < row2x; i++)
- nvis += w->ww_nvis[i];
-
- /*
- * If it's a good idea to scroll and the terminal can, then do it.
- */
- if (nvis < nvismax / 2)
- goto no_scroll; /* not worth it */
- if ((dir > 0 ? tt.tt_scroll_down == 0 : tt.tt_scroll_up == 0) ||
- (tt.tt_scroll_top != row1x || tt.tt_scroll_bot != row2x - 1) &&
- tt.tt_setscroll == 0)
- if (tt.tt_delline == 0 || tt.tt_insline == 0)
- goto no_scroll;
- xxscroll(dir, row1x, row2x);
- scrolled = 1;
- /*
- * Fix up the old screen.
- */
- {
- register union ww_char *tmp;
- register union ww_char **cpp, **cqq;
-
- if (dir > 0) {
- cpp = &wwos[row1x];
- cqq = cpp + 1;
- tmp = *cpp;
- for (i = row2x - row1x; --i > 0;)
- *cpp++ = *cqq++;
- *cpp = tmp;
- } else {
- cpp = &wwos[row2x];
- cqq = cpp - 1;
- tmp = *cqq;
- for (i = row2x - row1x; --i > 0;)
- *--cpp = *--cqq;
- *cqq = tmp;
- }
- for (i = wwncol; --i >= 0;)
- tmp++->c_w = ' ';
- }
-
-no_scroll:
- /*
- * Fix the new screen.
- */
- if (nvis == nvismax) {
- /*
- * Can shift whole lines.
- */
- if (dir > 0) {
- {
- register union ww_char *tmp;
- register union ww_char **cpp, **cqq;
-
- cpp = &wwns[row1x];
- cqq = cpp + 1;
- tmp = *cpp;
- for (i = row2x - row1x; --i > 0;)
- *cpp++ = *cqq++;
- *cpp = tmp;
- }
- if (scrolled) {
- register char *p, *q;
-
- p = &wwtouched[row1x];
- q = p + 1;
- for (i = row2x - row1x; --i > 0;)
- *p++ = *q++;
- *p |= WWU_TOUCHED;
- } else {
- register char *p;
-
- p = &wwtouched[row1x];
- for (i = row2x - row1x; --i >= 0;)
- *p++ |= WWU_TOUCHED;
- }
- wwredrawwin1(w, row1, row1x, dir);
- wwredrawwin1(w, row2x - 1, row2 - leaveit, dir);
- } else {
- {
- register union ww_char *tmp;
- register union ww_char **cpp, **cqq;
-
- cpp = &wwns[row2x];
- cqq = cpp - 1;
- tmp = *cqq;
- for (i = row2x - row1x; --i > 0;)
- *--cpp = *--cqq;
- *cqq = tmp;
- }
- if (scrolled) {
- register char *p, *q;
-
- p = &wwtouched[row2x];
- q = p - 1;
- for (i = row2x - row1x; --i > 0;)
- *--p = *--q;
- *q |= WWU_TOUCHED;
- } else {
- register char *p;
-
- p = &wwtouched[row1x];
- for (i = row2x - row1x; --i >= 0;)
- *p++ |= WWU_TOUCHED;
- }
- wwredrawwin1(w, row1 + leaveit, row1x + 1, dir);
- wwredrawwin1(w, row2x, row2, dir);
- }
- } else {
- if (scrolled) {
- register char *p;
-
- p = &wwtouched[row1x];
- for (i = row2x - row1x; --i >= 0;)
- *p++ |= WWU_TOUCHED;
- }
-out:
- if (dir > 0)
- wwredrawwin1(w, row1, row2 - leaveit, dir);
- else
- wwredrawwin1(w, row1 + leaveit, row2, dir);
- }
- return scrolled;
-}
diff --git a/usr.bin/window/wwsize.c b/usr.bin/window/wwsize.c
deleted file mode 100644
index 443d1f3..0000000
--- a/usr.bin/window/wwsize.c
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwsize.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include <stdlib.h>
-#include "ww.h"
-
-/*
- * Resize a window. Should be unattached.
- */
-wwsize(w, nrow, ncol)
-register struct ww *w;
-{
- register i, j;
- int nline;
- union ww_char **buf = 0;
- char **win = 0;
- short *nvis = 0;
- char **fmap = 0;
- char m;
-
- /*
- * First allocate new buffers.
- */
- win = wwalloc(w->ww_w.t, w->ww_w.l, nrow, ncol, sizeof (char));
- if (win == 0)
- goto bad;
- if (w->ww_fmap != 0) {
- fmap = wwalloc(w->ww_w.t, w->ww_w.l, nrow, ncol, sizeof (char));
- if (fmap == 0)
- goto bad;
- }
- if (nrow > w->ww_b.nr || ncol > w->ww_b.nc) {
- nline = MAX(w->ww_b.nr, nrow);
- buf = (union ww_char **) wwalloc(w->ww_b.t, w->ww_b.l,
- nline, ncol, sizeof (union ww_char));
- if (buf == 0)
- goto bad;
- }
- nvis = (short *)malloc((unsigned) nrow * sizeof (short));
- if (nvis == 0) {
- wwerrno = WWE_NOMEM;
- goto bad;
- }
- nvis -= w->ww_w.t;
- /*
- * Copy text buffer.
- */
- if (buf != 0) {
- int b, r;
-
- b = w->ww_b.t + nline;
- r = w->ww_b.l + ncol;
- if (ncol < w->ww_b.nc)
- for (i = w->ww_b.t; i < w->ww_b.b; i++)
- for (j = w->ww_b.l; j < r; j++)
- buf[i][j] = w->ww_buf[i][j];
- else
- for (i = w->ww_b.t; i < w->ww_b.b; i++) {
- for (j = w->ww_b.l; j < w->ww_b.r; j++)
- buf[i][j] = w->ww_buf[i][j];
- for (; j < r; j++)
- buf[i][j].c_w = ' ';
- }
- for (; i < b; i++)
- for (j = w->ww_b.l; j < r; j++)
- buf[i][j].c_w = ' ';
- }
- /*
- * Now free the old stuff.
- */
- wwfree((char **)w->ww_win, w->ww_w.t);
- w->ww_win = win;
- if (buf != 0) {
- wwfree((char **)w->ww_buf, w->ww_b.t);
- w->ww_buf = buf;
- }
- if (w->ww_fmap != 0) {
- wwfree((char **)w->ww_fmap, w->ww_w.t);
- w->ww_fmap = fmap;
- }
- free((char *)(w->ww_nvis + w->ww_w.t));
- w->ww_nvis = nvis;
- /*
- * Set new sizes.
- */
- /* window */
- w->ww_w.b = w->ww_w.t + nrow;
- w->ww_w.r = w->ww_w.l + ncol;
- w->ww_w.nr = nrow;
- w->ww_w.nc = ncol;
- /* text buffer */
- if (buf != 0) {
- w->ww_b.b = w->ww_b.t + nline;
- w->ww_b.r = w->ww_b.l + ncol;
- w->ww_b.nr = nline;
- w->ww_b.nc = ncol;
- }
- /* scroll */
- if ((i = w->ww_b.b - w->ww_w.b) < 0 ||
- (i = w->ww_cur.r - w->ww_w.b + 1) > 0) {
- w->ww_buf += i;
- w->ww_b.t -= i;
- w->ww_b.b -= i;
- w->ww_cur.r -= i;
- }
- /* interior */
- w->ww_i.b = MIN(w->ww_w.b, wwnrow);
- w->ww_i.r = MIN(w->ww_w.r, wwncol);
- w->ww_i.nr = w->ww_i.b - w->ww_i.t;
- w->ww_i.nc = w->ww_i.r - w->ww_i.l;
- /*
- * Initialize new buffers.
- */
- /* window */
- m = 0;
- if (w->ww_oflags & WWO_GLASS)
- m |= WWM_GLS;
- if (w->ww_oflags & WWO_REVERSE)
- m |= WWM_REV;
- for (i = w->ww_w.t; i < w->ww_w.b; i++)
- for (j = w->ww_w.l; j < w->ww_w.r; j++)
- w->ww_win[i][j] = m;
- /* frame map */
- if (fmap != 0)
- for (i = w->ww_w.t; i < w->ww_w.b; i++)
- for (j = w->ww_w.l; j < w->ww_w.r; j++)
- w->ww_fmap[i][j] = 0;
- /* visibility */
- j = m ? 0 : w->ww_w.nc;
- for (i = w->ww_w.t; i < w->ww_w.b; i++)
- w->ww_nvis[i] = j;
- /*
- * Put cursor back.
- */
- if (w->ww_hascursor) {
- w->ww_hascursor = 0;
- wwcursor(w, 1);
- }
- /*
- * Fool with pty.
- */
- if (w->ww_ispty && w->ww_pty >= 0)
- (void) wwsetttysize(w->ww_pty, nrow, ncol);
- return 0;
-bad:
- if (win != 0)
- wwfree(win, w->ww_w.t);
- if (fmap != 0)
- wwfree(fmap, w->ww_w.t);
- if (buf != 0)
- wwfree((char **)buf, w->ww_b.t);
- if (nvis != 0)
- free((char *)(nvis + w->ww_w.t));
- return -1;
-}
diff --git a/usr.bin/window/wwspawn.c b/usr.bin/window/wwspawn.c
deleted file mode 100644
index 416dad2..0000000
--- a/usr.bin/window/wwspawn.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwspawn.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include <signal.h>
-#include <unistd.h>
-
-/*
- * There is a dead lock with vfork and closing of pseudo-ports.
- * So we have to be sneaky about error reporting.
- */
-wwspawn(wp, file, argv)
-register struct ww *wp;
-char *file;
-char **argv;
-{
- int pid;
- int ret;
- char erred = 0;
- int s;
-
- s = sigblock(sigmask(SIGCHLD));
- switch (pid = vfork()) {
- case -1:
- wwerrno = WWE_SYS;
- ret = -1;
- break;
- case 0:
- if (wwenviron(wp) >= 0)
- execvp(file, argv);
- erred = 1;
- _exit(1);
- default:
- if (erred) {
- wwerrno = WWE_SYS;
- ret = -1;
- } else {
- wp->ww_pid = pid;
- wp->ww_state = WWS_HASPROC;
- ret = pid;
- }
- }
- (void) sigsetmask(s);
- if (wp->ww_socket >= 0) {
- (void) close(wp->ww_socket);
- wp->ww_socket = -1;
- }
- return ret;
-}
diff --git a/usr.bin/window/wwsuspend.c b/usr.bin/window/wwsuspend.c
deleted file mode 100644
index ad3db5a..0000000
--- a/usr.bin/window/wwsuspend.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwsuspend.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-#include <signal.h>
-
-wwsuspend()
-{
- sig_t oldsig;
-
- oldsig = signal(SIGTSTP, SIG_IGN);
- wwend(0);
- (void) signal(SIGTSTP, SIG_DFL);
- (void) kill(0, SIGTSTP);
- (void) signal(SIGTSTP, SIG_IGN);
- wwstart();
- (void) signal(SIGTSTP, oldsig);
-}
diff --git a/usr.bin/window/wwterminfo.c b/usr.bin/window/wwterminfo.c
deleted file mode 100644
index 0be6590..0000000
--- a/usr.bin/window/wwterminfo.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (c) 1982, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwterminfo.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#ifdef TERMINFO
-
-#include "ww.h"
-#include <stdio.h>
-#include <paths.h>
-#include "local.h"
-
-/*
- * Terminfo support
- *
- * Written by Brian Buhrow
- *
- * Subsequently modified by Edward Wang
- */
-
-/*
- * Initialize the working terminfo directory
- */
-wwterminfoinit()
-{
- FILE *fp;
- char buf[2048];
-
- /* make the directory */
- (void) sprintf(wwterminfopath, "%swwinXXXXXX", _PATH_TMP);
- if (mkdtemp(wwterminfopath) < 0 ||
- chmod(wwterminfopath, 00755) < 0) {
- wwerrno = WWE_SYS;
- return -1;
- }
- (void) setenv("TERMINFO", wwterminfopath, 1);
- /* make a termcap entry and turn it into terminfo */
- (void) sprintf(buf, "%s/cap", wwterminfopath);
- if ((fp = fopen(buf, "w")) == NULL) {
- wwerrno = WWE_SYS;
- return -1;
- }
- (void) fprintf(fp, "%sco#%d:li#%d:%s\n",
- WWT_TERMCAP, wwncol, wwnrow, wwwintermcap);
- (void) fclose(fp);
- (void) sprintf(buf,
- "cd %s; %s cap >info 2>" _PATH_DEVNULL "; %s info >" _PATH_DEVNULL " 2>&1",
- wwterminfopath, _PATH_CAPTOINFO, _PATH_TIC);
- (void) system(buf);
- return 0;
-}
-
-/*
- * Delete the working terminfo directory at shutdown
- */
-wwterminfoend()
-{
- char *args[4];
- args[0] = _PATH_RM;
- args[1] = "-rf";
- args[2] = wwterminfopath;
- args[3] = NULL;
- switch (vfork()) {
- case -1:
- /* can't really do (or say) anything about errors */
- return -1;
- case 0:
- execv(args[0], args);
- _exit(0);
- default:
- wait(NULL);
- return 0;
- }
-}
-
-#endif /* TERMINFO */
diff --git a/usr.bin/window/wwtty.c b/usr.bin/window/wwtty.c
deleted file mode 100644
index 94de13c..0000000
--- a/usr.bin/window/wwtty.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwtty.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include <sys/types.h>
-#include <fcntl.h>
-#if !defined(OLD_TTY) && !defined(TIOCGWINSZ)
-#include <sys/ioctl.h>
-#endif
-
-wwgettty(d, t)
-register struct ww_tty *t;
-{
-#ifdef OLD_TTY
- if (ioctl(d, TIOCGETP, (char *)&t->ww_sgttyb) < 0)
- goto bad;
- if (ioctl(d, TIOCGETC, (char *)&t->ww_tchars) < 0)
- goto bad;
- if (ioctl(d, TIOCGLTC, (char *)&t->ww_ltchars) < 0)
- goto bad;
- if (ioctl(d, TIOCLGET, (char *)&t->ww_lmode) < 0)
- goto bad;
- if (ioctl(d, TIOCGETD, (char *)&t->ww_ldisc) < 0)
- goto bad;
-#else
- if (tcgetattr(d, &t->ww_termios) < 0)
- goto bad;
-#endif
- if ((t->ww_fflags = fcntl(d, F_GETFL, 0)) < 0)
- goto bad;
- return 0;
-bad:
- wwerrno = WWE_SYS;
- return -1;
-}
-
-/*
- * Set the modes of tty 'd' to 't'
- * 'o' is the current modes. We set the line discipline only if
- * it changes, to avoid unnecessary flushing of typeahead.
- */
-wwsettty(d, t)
-register struct ww_tty *t;
-{
-#ifdef OLD_TTY
- int i;
-
- /* XXX, for buggy tty drivers that don't wait for output to drain */
- while (ioctl(d, TIOCOUTQ, &i) >= 0 && i > 0)
- usleep(100000);
- if (ioctl(d, TIOCSETN, (char *)&t->ww_sgttyb) < 0)
- goto bad;
- if (ioctl(d, TIOCSETC, (char *)&t->ww_tchars) < 0)
- goto bad;
- if (ioctl(d, TIOCSLTC, (char *)&t->ww_ltchars) < 0)
- goto bad;
- if (ioctl(d, TIOCLSET, (char *)&t->ww_lmode) < 0)
- goto bad;
- if (ioctl(d, TIOCGETD, (char *)&i) < 0)
- goto bad;
- if (t->ww_ldisc != i &&
- ioctl(d, TIOCSETD, (char *)&t->ww_ldisc) < 0)
- goto bad;
-#else
-#ifdef sun
- /* XXX, for buggy tty drivers that don't wait for output to drain */
- (void) tcdrain(d);
-#endif
- if (tcsetattr(d, TCSADRAIN, &t->ww_termios) < 0)
- goto bad;
-#endif
- if (fcntl(d, F_SETFL, t->ww_fflags) < 0)
- goto bad;
- return 0;
-bad:
- wwerrno = WWE_SYS;
- return -1;
-}
-
-/*
- * The ttysize and stop-start routines must also work
- * on the control side of pseudoterminals.
- */
-
-wwgetttysize(d, r, c)
- int *r, *c;
-{
- struct winsize winsize;
-
- if (ioctl(d, TIOCGWINSZ, (char *)&winsize) < 0) {
- wwerrno = WWE_SYS;
- return -1;
- }
- if (winsize.ws_row != 0)
- *r = winsize.ws_row;
- if (winsize.ws_col != 0)
- *c = winsize.ws_col;
- return 0;
-}
-
-wwsetttysize(d, r, c)
-{
- struct winsize winsize;
-
- winsize.ws_row = r;
- winsize.ws_col = c;
- winsize.ws_xpixel = winsize.ws_ypixel = 0;
- if (ioctl(d, TIOCSWINSZ, (char *)&winsize) < 0) {
- wwerrno = WWE_SYS;
- return -1;
- }
- return 0;
-}
-
-wwstoptty(d)
-{
-#if !defined(OLD_TTY) && defined(TCOOFF)
- /* not guaranteed to work on the pty side */
- if (tcflow(d, TCOOFF) < 0)
-#else
- if (ioctl(d, TIOCSTOP, (char *)0) < 0)
-#endif
- {
- wwerrno = WWE_SYS;
- return -1;
- }
- return 0;
-}
-
-wwstarttty(d)
-{
-#if !defined(OLD_TTY) && defined(TCOON)
- /* not guaranteed to work on the pty side */
- if (tcflow(d, TCOON) < 0)
-#else
- if (ioctl(d, TIOCSTART, (char *)0) < 0)
-#endif
- {
- wwerrno = WWE_SYS;
- return -1;
- }
- return 0;
-}
diff --git a/usr.bin/window/wwunframe.c b/usr.bin/window/wwunframe.c
deleted file mode 100644
index 7fd6507..0000000
--- a/usr.bin/window/wwunframe.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwunframe.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-
-wwunframe(w)
-register struct ww *w;
-{
- int i;
-
- for (i = w->ww_i.t; i < w->ww_i.b; i++) {
- register j;
- register char *win = w->ww_win[i];
- register char *fmap = w->ww_fmap ? w->ww_fmap[i] : 0;
- register char *smap = wwsmap[i];
- register union ww_char *ns = wwns[i];
- int nchanged = 0;
-
- for (j = w->ww_i.l; j < w->ww_i.r; j++) {
- if (win[j] & WWM_GLS)
- continue;
- win[j] |= WWM_GLS;
- if (fmap != 0)
- fmap[j] = 0;
- if (smap[j] == w->ww_index) {
- smap[j] = WWX_NOBODY;
- ns[j].c_w = ' ';
- nchanged++;
- }
- }
- if (nchanged > 0)
- wwtouched[i] |= WWU_TOUCHED;
- w->ww_nvis[i] = 0;
- }
-
- if (w->ww_forw != &wwhead)
- wwdelete1(w->ww_forw,
- w->ww_i.t, w->ww_i.b, w->ww_i.l, w->ww_i.r);
-}
diff --git a/usr.bin/window/wwupdate.c b/usr.bin/window/wwupdate.c
deleted file mode 100644
index 3c1ade7..0000000
--- a/usr.bin/window/wwupdate.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwupdate.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-
-wwupdate1(top, bot)
-{
- int i;
- register j;
- char *touched;
- struct ww_update *upd;
- char check_clreos = 0;
- int scan_top, scan_bot;
-
- wwnupdate++;
- {
- register char *t1 = wwtouched + top, *t2 = wwtouched + bot;
- register n;
-
- while (!*t1++)
- if (t1 == t2)
- return;
- while (!*--t2)
- ;
- scan_top = top = t1 - wwtouched - 1;
- scan_bot = bot = t2 - wwtouched + 1;
- if (scan_bot - scan_top > 1 &&
- (tt.tt_clreos != 0 || tt.tt_clear != 0)) {
- int st = tt.tt_clreos != 0 ? scan_top : 0;
-
- /*
- * t1 is one past the first touched row,
- * t2 is on the last touched row.
- */
- for (t1--, n = 1; t1 < t2;)
- if (*t1++)
- n++;
- /*
- * If we can't clreos then we try for clearing
- * the whole screen.
- */
- if (check_clreos = n * 10 > (wwnrow - st) * 9) {
- scan_top = st;
- scan_bot = wwnrow;
- }
- }
- }
- if (tt.tt_clreol == 0 && !check_clreos)
- goto simple;
- for (i = scan_top, touched = &wwtouched[i], upd = &wwupd[i];
- i < scan_bot;
- i++, touched++, upd++) {
- register gain = 0;
- register best_gain = 0;
- register best_col;
- register union ww_char *ns, *os;
-
- if (wwinterrupt())
- return;
- if (!check_clreos && !*touched)
- continue;
- wwnupdscan++;
- j = wwncol;
- ns = &wwns[i][j];
- os = &wwos[i][j];
- while (--j >= 0) {
- /*
- * The cost of clearing is:
- * ncol - nblank + X
- * The cost of straight update is, more or less:
- * ncol - nsame
- * We clear if nblank - nsame > X
- * X is the clreol overhead.
- * So we make gain = nblank - nsame.
- */
- if ((--ns)->c_w == (--os)->c_w)
- gain--;
- else
- best_gain--;
- if (ns->c_w == ' ')
- gain++;
- if (gain > best_gain) {
- best_col = j;
- best_gain = gain;
- }
- }
- upd->best_gain = best_gain;
- upd->best_col = best_col;
- upd->gain = gain;
- }
- if (check_clreos) {
- register struct ww_update *u;
- register gain = 0;
- register best_gain = 0;
- int best_row;
- register simple_gain = 0;
- char didit = 0;
-
- /*
- * gain is the advantage of clearing all the lines.
- * best_gain is the advantage of clearing to eos
- * at best_row and u->best_col.
- * simple_gain is the advantage of using only clreol.
- * We use g > best_gain because u->best_col can be
- * undefined when u->best_gain is 0 so we can't use it.
- */
- for (j = scan_bot - 1, u = wwupd + j; j >= top; j--, u--) {
- register g = gain + u->best_gain;
-
- if (g > best_gain) {
- best_gain = g;
- best_row = j;
- }
- gain += u->gain;
- if (tt.tt_clreol != 0 && u->best_gain > 4)
- simple_gain += u->best_gain - 4;
- }
- if (tt.tt_clreos == 0) {
- if (gain > simple_gain && gain > 4) {
- xxclear();
- i = top = scan_top;
- bot = scan_bot;
- j = 0;
- didit = 1;
- }
- } else
- if (best_gain > simple_gain && best_gain > 4) {
- i = best_row;
- xxclreos(i, j = wwupd[i].best_col);
- bot = scan_bot;
- didit = 1;
- }
- if (didit) {
- wwnupdclreos++;
- wwnupdclreosline += wwnrow - i;
- u = wwupd + i;
- while (i < scan_bot) {
- register union ww_char *os = &wwos[i][j];
-
- for (j = wwncol - j; --j >= 0;)
- os++->c_w = ' ';
- wwtouched[i++] |= WWU_TOUCHED;
- u++->best_gain = 0;
- j = 0;
- }
- } else
- wwnupdclreosmiss++;
- }
-simple:
- for (i = top, touched = &wwtouched[i], upd = &wwupd[i]; i < bot;
- i++, touched++, upd++) {
- register union ww_char *os, *ns;
- char didit;
-
- if (!*touched)
- continue;
- *touched = 0;
- wwnupdline++;
- didit = 0;
- if (tt.tt_clreol != 0 && upd->best_gain > 4) {
- wwnupdclreol++;
- xxclreol(i, j = upd->best_col);
- for (os = &wwos[i][j], j = wwncol - j; --j >= 0;)
- os++->c_w = ' ';
- didit = 1;
- }
- ns = wwns[i];
- os = wwos[i];
- for (j = 0; j < wwncol;) {
- register char *p, *q;
- char m;
- int c;
- register n;
- char buf[512]; /* > wwncol */
- union ww_char lastc;
-
- for (; j++ < wwncol && ns++->c_w == os++->c_w;)
- ;
- if (j > wwncol)
- break;
- p = buf;
- m = ns[-1].c_m;
- c = j - 1;
- os[-1] = ns[-1];
- *p++ = ns[-1].c_c;
- n = 5;
- q = p;
- while (j < wwncol && ns->c_m == m) {
- *p++ = ns->c_c;
- if (ns->c_w == os->c_w) {
- if (--n <= 0)
- break;
- os++;
- ns++;
- } else {
- n = 5;
- q = p;
- lastc = *os;
- *os++ = *ns++;
- }
- j++;
- }
- n = q - buf;
- if (!wwwrap || i != wwnrow - 1 || c + n != wwncol)
- xxwrite(i, c, buf, n, m);
- else if (tt.tt_inschar || tt.tt_insspace) {
- if (n > 1) {
- q[-2] = q[-1];
- n--;
- } else
- c--;
- xxwrite(i, c, buf, n, m);
- c += n - 1;
- if (tt.tt_inschar)
- xxinschar(i, c, ns[-2].c_c,
- ns[-2].c_m);
- else {
- xxinsspace(i, c);
- xxwrite(i, c, &ns[-2].c_c, 1,
- ns[-2].c_m);
- }
- } else {
- if (--n)
- xxwrite(i, c, buf, n, m);
- os[-1] = lastc;
- *touched = WWU_TOUCHED;
- }
- didit = 1;
- }
- if (!didit)
- wwnupdmiss++;
- }
-}
diff --git a/usr.bin/window/wwwrite.c b/usr.bin/window/wwwrite.c
deleted file mode 100644
index 29b3b73..0000000
--- a/usr.bin/window/wwwrite.c
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)wwwrite.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "tt.h"
-#include "char.h"
-
-#define UPDATE() \
- if (!w->ww_noupdate && w->ww_cur.r >= 0 && w->ww_cur.r < wwnrow && \
- wwtouched[w->ww_cur.r]) \
- wwupdate1(w->ww_cur.r, w->ww_cur.r + 1)
-
-/*
- * To support control character expansion, we save the old
- * p and q values in r and s, and point p at the beginning
- * of the expanded string, and q at some safe place beyond it
- * (p + 10). At strategic points in the loops, we check
- * for (r && !*p) and restore the saved values back into
- * p and q. Essentially, we implement a stack of depth 2,
- * to avoid recursion, which might be a better idea.
- */
-wwwrite(w, p, n)
-register struct ww *w;
-register unsigned char *p;
-int n;
-{
- char hascursor;
- unsigned char *savep = p;
- unsigned char *q = p + n;
- char *r = 0;
- char *s;
-
-#ifdef lint
- s = 0; /* define it before possible use */
-#endif
- if (hascursor = w->ww_hascursor)
- wwcursor(w, 0);
- while (p < q && !w->ww_stopped && (!wwinterrupt() || w->ww_nointr)) {
- if (r && !*p) {
- p = r;
- q = s;
- r = 0;
- continue;
- }
- if (w->ww_wstate == 0 &&
- (isprt(*p) || w->ww_unctrl && isunctrl(*p))) {
- register i;
- register union ww_char *bp;
- int col, col1;
-
- if (w->ww_insert) { /* this is very slow */
- if (*p == '\t') {
- p++;
- w->ww_cur.c += 8 -
- (w->ww_cur.c - w->ww_w.l & 7);
- goto chklf;
- }
- if (!isprt(*p)) {
- r = p + 1;
- s = q;
- p = unctrl(*p);
- q = p + 10;
- }
- wwinschar(w, w->ww_cur.r, w->ww_cur.c,
- *p++, w->ww_modes);
- goto right;
- }
-
- bp = &w->ww_buf[w->ww_cur.r][w->ww_cur.c];
- i = w->ww_cur.c;
- while (i < w->ww_w.r && p < q)
- if (!*p && r) {
- p = r;
- q = s;
- r = 0;
- } else if (*p == '\t') {
- register tmp = 8 - (i - w->ww_w.l & 7);
- p++;
- i += tmp;
- bp += tmp;
- } else if (isprt(*p)) {
- bp++->c_w = *p++
- | w->ww_modes << WWC_MSHIFT;
- i++;
- } else if (w->ww_unctrl && isunctrl(*p)) {
- r = p + 1;
- s = q;
- p = unctrl(*p);
- q = p + 10;
- } else
- break;
- col = MAX(w->ww_cur.c, w->ww_i.l);
- col1 = MIN(i, w->ww_i.r);
- w->ww_cur.c = i;
- if (w->ww_cur.r >= w->ww_i.t
- && w->ww_cur.r < w->ww_i.b) {
- register union ww_char *ns = wwns[w->ww_cur.r];
- register char *smap = &wwsmap[w->ww_cur.r][col];
- register char *win = w->ww_win[w->ww_cur.r];
- int nchanged = 0;
-
- bp = w->ww_buf[w->ww_cur.r];
- for (i = col; i < col1; i++)
- if (*smap++ == w->ww_index) {
- nchanged++;
- ns[i].c_w = bp[i].c_w
- ^ win[i] << WWC_MSHIFT;
- }
- if (nchanged > 0)
- wwtouched[w->ww_cur.r] |= WWU_TOUCHED;
- }
- chklf:
- if (w->ww_cur.c >= w->ww_w.r)
- goto crlf;
- } else switch (w->ww_wstate) {
- case 0:
- switch (*p++) {
- case '\n':
- if (w->ww_mapnl)
- crlf:
- w->ww_cur.c = w->ww_w.l;
- lf:
- UPDATE();
- if (++w->ww_cur.r >= w->ww_w.b) {
- w->ww_cur.r = w->ww_w.b - 1;
- if (w->ww_w.b < w->ww_b.b) {
- (void) wwscroll1(w, w->ww_i.t,
- w->ww_i.b, 1, 0);
- w->ww_buf++;
- w->ww_b.t--;
- w->ww_b.b--;
- } else
- wwdelline(w, w->ww_b.t);
- }
- break;
- case '\b':
- if (--w->ww_cur.c < w->ww_w.l) {
- w->ww_cur.c = w->ww_w.r - 1;
- goto up;
- }
- break;
- case '\r':
- w->ww_cur.c = w->ww_w.l;
- break;
- case ctrl('g'):
- ttputc(ctrl('g'));
- break;
- case ctrl('['):
- w->ww_wstate = 1;
- break;
- }
- break;
- case 1:
- w->ww_wstate = 0;
- switch (*p++) {
- case '@':
- w->ww_insert = 1;
- break;
- case 'A':
- up:
- UPDATE();
- if (--w->ww_cur.r < w->ww_w.t) {
- w->ww_cur.r = w->ww_w.t;
- if (w->ww_w.t > w->ww_b.t) {
- (void) wwscroll1(w, w->ww_i.t,
- w->ww_i.b, -1, 0);
- w->ww_buf--;
- w->ww_b.t++;
- w->ww_b.b++;
- } else
- wwinsline(w, w->ww_b.t);
- }
- break;
- case 'B':
- goto lf;
- case 'C':
- right:
- w->ww_cur.c++;
- goto chklf;
- case 'E':
- w->ww_buf -= w->ww_w.t - w->ww_b.t;
- w->ww_b.t = w->ww_w.t;
- w->ww_b.b = w->ww_b.t + w->ww_b.nr;
- w->ww_cur.r = w->ww_w.t;
- w->ww_cur.c = w->ww_w.l;
- wwclreos(w, w->ww_w.t, w->ww_w.l);
- break;
- case 'H':
- UPDATE();
- w->ww_cur.r = w->ww_w.t;
- w->ww_cur.c = w->ww_w.l;
- break;
- case 'J':
- wwclreos(w, w->ww_cur.r, w->ww_cur.c);
- break;
- case 'K':
- wwclreol(w, w->ww_cur.r, w->ww_cur.c);
- break;
- case 'L':
- UPDATE();
- wwinsline(w, w->ww_cur.r);
- break;
- case 'M':
- wwdelline(w, w->ww_cur.r);
- break;
- case 'N':
- wwdelchar(w, w->ww_cur.r, w->ww_cur.c);
- break;
- case 'O':
- w->ww_insert = 0;
- break;
- case 'P':
- wwinschar(w, w->ww_cur.r, w->ww_cur.c, ' ', 0);
- break;
- case 'X':
- wwupdate();
- break;
- case 'Y':
- UPDATE();
- w->ww_wstate = 2;
- break;
- case 'Z':
- wwupdate();
- xxflush(0);
- break;
- case 's':
- w->ww_wstate = 4;
- break;
- case 'r':
- w->ww_wstate = 5;
- break;
- }
- break;
- case 2:
- w->ww_cur.r = w->ww_w.t +
- (unsigned)(*p++ - ' ') % w->ww_w.nr;
- w->ww_wstate = 3;
- break;
- case 3:
- w->ww_cur.c = w->ww_w.l +
- (unsigned)(*p++ - ' ') % w->ww_w.nc;
- w->ww_wstate = 0;
- break;
- case 4:
- w->ww_modes |= *p++ & wwavailmodes;
- w->ww_wstate = 0;
- break;
- case 5:
- w->ww_modes &= ~*p++;
- w->ww_wstate = 0;
- break;
- }
- }
- if (hascursor)
- wwcursor(w, 1);
- wwnwwr++;
- wwnwwra += n;
- n = p - savep;
- wwnwwrc += n;
- return n;
-}
diff --git a/usr.bin/window/xx.c b/usr.bin/window/xx.c
deleted file mode 100644
index c058d2f..0000000
--- a/usr.bin/window/xx.c
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * Copyright (c) 1989, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)xx.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "xx.h"
-#include "tt.h"
-#include <stdlib.h>
-#include <strings.h>
-
-xxinit()
-{
- if (ttinit() < 0)
- return -1;
- xxbufsize = tt.tt_nrow * tt.tt_ncol * 2;
- /* ccinit may choose to change xxbufsize */
- if (tt.tt_ntoken > 0 && ccinit() < 0)
- return -1;
- xxbuf = malloc((unsigned) xxbufsize * sizeof *xxbuf);
- if (xxbuf == 0) {
- wwerrno = WWE_NOMEM;
- return -1;
- }
- xxbufp = xxbuf;
- xxbufe = xxbuf + xxbufsize;
- return 0;
-}
-
-xxstart()
-{
- (*tt.tt_start)();
- if (tt.tt_ntoken > 0)
- ccstart();
- xxreset1(); /* might be a restart */
-}
-
-xxreset()
-{
- if (tt.tt_ntoken > 0)
- ccreset();
- xxreset1();
- (*tt.tt_reset)();
-}
-
-xxreset1()
-{
- register struct xx *xp, *xq;
-
- for (xp = xx_head; xp != 0; xp = xq) {
- xq = xp->link;
- xxfree(xp);
- }
- xx_tail = xx_head = 0;
- xxbufp = xxbuf;
-}
-
-xxend()
-{
- if (tt.tt_scroll_top != 0 || tt.tt_scroll_bot != tt.tt_nrow - 1)
- /* tt.tt_setscroll is known to be defined */
- (*tt.tt_setscroll)(0, tt.tt_nrow - 1);
- if (tt.tt_modes)
- (*tt.tt_setmodes)(0);
- if (tt.tt_scroll_down)
- (*tt.tt_scroll_down)(1);
- (*tt.tt_move)(tt.tt_nrow - 1, 0);
- if (tt.tt_ntoken > 0)
- ccend();
- (*tt.tt_end)();
- ttflush();
-}
-
-struct xx *
-xxalloc()
-{
- register struct xx *xp;
-
- if (xxbufp > xxbufe)
- abort();
- if ((xp = xx_freelist) == 0)
- /* XXX can't deal with failure */
- xp = (struct xx *) malloc((unsigned) sizeof *xp);
- else
- xx_freelist = xp->link;
- if (xx_head == 0)
- xx_head = xp;
- else
- xx_tail->link = xp;
- xx_tail = xp;
- xp->link = 0;
- return xp;
-}
-
-xxfree(xp)
- register struct xx *xp;
-{
- xp->link = xx_freelist;
- xx_freelist = xp;
-}
-
-xxmove(row, col)
-{
- register struct xx *xp = xx_tail;
-
- if (xp == 0 || xp->cmd != xc_move) {
- xp = xxalloc();
- xp->cmd = xc_move;
- }
- xp->arg0 = row;
- xp->arg1 = col;
-}
-
-xxscroll(dir, top, bot)
-{
- register struct xx *xp = xx_tail;
-
- if (xp != 0 && xp->cmd == xc_scroll &&
- xp->arg1 == top && xp->arg2 == bot &&
- (xp->arg0 < 0 && dir < 0 || xp->arg0 > 0 && dir > 0)) {
- xp->arg0 += dir;
- return;
- }
- xp = xxalloc();
- xp->cmd = xc_scroll;
- xp->arg0 = dir;
- xp->arg1 = top;
- xp->arg2 = bot;
-}
-
-xxinschar(row, col, c, m)
-{
- register struct xx *xp;
-
- xp = xxalloc();
- xp->cmd = xc_inschar;
- xp->arg0 = row;
- xp->arg1 = col;
- xp->arg2 = c;
- xp->arg3 = m;
-}
-
-xxinsspace(row, col)
-{
- register struct xx *xp = xx_tail;
-
- if (xp != 0 && xp->cmd == xc_insspace && xp->arg0 == row &&
- col >= xp->arg1 && col <= xp->arg1 + xp->arg2) {
- xp->arg2++;
- return;
- }
- xp = xxalloc();
- xp->cmd = xc_insspace;
- xp->arg0 = row;
- xp->arg1 = col;
- xp->arg2 = 1;
-}
-
-xxdelchar(row, col)
-{
- register struct xx *xp = xx_tail;
-
- if (xp != 0 && xp->cmd == xc_delchar &&
- xp->arg0 == row && xp->arg1 == col) {
- xp->arg2++;
- return;
- }
- xp = xxalloc();
- xp->cmd = xc_delchar;
- xp->arg0 = row;
- xp->arg1 = col;
- xp->arg2 = 1;
-}
-
-xxclear()
-{
- register struct xx *xp;
-
- xxreset1();
- xp = xxalloc();
- xp->cmd = xc_clear;
-}
-
-xxclreos(row, col)
-{
- register struct xx *xp = xxalloc();
-
- xp->cmd = xc_clreos;
- xp->arg0 = row;
- xp->arg1 = col;
-}
-
-xxclreol(row, col)
-{
- register struct xx *xp = xxalloc();
-
- xp->cmd = xc_clreol;
- xp->arg0 = row;
- xp->arg1 = col;
-}
-
-xxwrite(row, col, p, n, m)
- char *p;
-{
- register struct xx *xp;
-
- if (xxbufp + n + 1 > xxbufe)
- xxflush(0);
- xp = xxalloc();
- xp->cmd = xc_write;
- xp->arg0 = row;
- xp->arg1 = col;
- xp->arg2 = n;
- xp->arg3 = m;
- xp->buf = xxbufp;
- bcopy(p, xxbufp, n);
- xxbufp += n;
- *xxbufp++ = char_sep;
-}
diff --git a/usr.bin/window/xx.h b/usr.bin/window/xx.h
deleted file mode 100644
index e49b85e..0000000
--- a/usr.bin/window/xx.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 1989, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)xx.h 8.1 (Berkeley) 6/6/93
- * $FreeBSD$
- */
-
-struct xx {
- enum { xc_move, xc_scroll, xc_inschar, xc_insspace, xc_delchar,
- xc_clear, xc_clreos, xc_clreol, xc_write } cmd;
- int arg0;
- int arg1;
- int arg2;
- int arg3;
- char *buf;
- struct xx *link;
-};
-
-struct xx *xxalloc();
-
-struct xx *xx_head, *xx_tail;
-struct xx *xx_freelist;
-
-char *xxbuf, *xxbufp, *xxbufe;
-int xxbufsize;
-
-#define char_sep '\0'
diff --git a/usr.bin/window/xxflush.c b/usr.bin/window/xxflush.c
deleted file mode 100644
index a6f9bed..0000000
--- a/usr.bin/window/xxflush.c
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Copyright (c) 1989, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Edward Wang at The University of California, Berkeley.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)xxflush.c 8.1 (Berkeley) 6/6/93";
-static char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-#include "ww.h"
-#include "xx.h"
-#include "tt.h"
-
-xxflush(intr)
- register intr;
-{
- register struct xx *xp, *xq;
-
- for (xp = xx_head; xp != 0 && !(intr && wwinterrupt()); xp = xq) {
- switch (xp->cmd) {
- case xc_move:
- if (xp->link == 0)
- (*tt.tt_move)(xp->arg0, xp->arg1);
- break;
- case xc_scroll:
- xxflush_scroll(xp);
- break;
- case xc_inschar:
- (*tt.tt_move)(xp->arg0, xp->arg1);
- tt.tt_nmodes = xp->arg3;
- (*tt.tt_inschar)(xp->arg2);
- break;
- case xc_insspace:
- (*tt.tt_move)(xp->arg0, xp->arg1);
- (*tt.tt_insspace)(xp->arg2);
- break;
- case xc_delchar:
- (*tt.tt_move)(xp->arg0, xp->arg1);
- (*tt.tt_delchar)(xp->arg2);
- break;
- case xc_clear:
- (*tt.tt_clear)();
- break;
- case xc_clreos:
- (*tt.tt_move)(xp->arg0, xp->arg1);
- (*tt.tt_clreos)();
- break;
- case xc_clreol:
- (*tt.tt_move)(xp->arg0, xp->arg1);
- (*tt.tt_clreol)();
- break;
- case xc_write:
- (*tt.tt_move)(xp->arg0, xp->arg1);
- tt.tt_nmodes = xp->arg3;
- (*tt.tt_write)(xp->buf, xp->arg2);
- break;
- }
- xq = xp->link;
- xxfree(xp);
- }
- if ((xx_head = xp) == 0) {
- xx_tail = 0;
- xxbufp = xxbuf;
- }
- ttflush();
-}
-
-xxflush_scroll(xp)
- register struct xx *xp;
-{
- register struct xx *xq;
-
- top:
- if (xp->arg0 == 0)
- return;
- /*
- * We handle retain (da and db) by putting the burden on scrolling up,
- * which is the less common operation. It must ensure that
- * text is not pushed below the screen, so scrolling down doesn't
- * have to worry about it.
- *
- * Try scrolling region (or scrolling the whole screen) first.
- * Can we assume "sr" doesn't push text below the screen
- * so we don't have to worry about retain below?
- * What about scrolling down with a newline? It probably does
- * push text above (with da). Scrolling up would then have
- * to take care of that.
- * It's easy to be fool proof, but that slows things down.
- * The current solution is to disallow tt_scroll_up if da or db is true
- * but cs (scrolling region) is not. Again, we sacrifice scrolling
- * up in favor of scrolling down. The idea is having scrolling regions
- * probably means we can scroll (even the whole screen) with impunity.
- * This lets us work efficiently on simple terminals (use newline
- * on the bottom to scroll), on any terminal without retain, and
- * on vt100 style scrolling regions (I think).
- */
- if (xp->arg0 > 0) {
- if ((xq = xp->link) != 0 && xq->cmd == xc_scroll &&
- xp->arg2 == xq->arg2 && xq->arg0 < 0) {
- if (xp->arg1 < xq->arg1) {
- if (xp->arg2 - xp->arg0 <= xq->arg1) {
- xq->arg0 = xp->arg0;
- xq->arg1 = xp->arg1;
- xq->arg2 = xp->arg2;
- return;
- }
- xp->arg2 = xq->arg1 + xp->arg0;
- xq->arg0 += xp->arg0;
- xq->arg1 = xp->arg2;
- if (xq->arg0 > 0)
- xq->arg1 -= xq->arg0;
- goto top;
- } else {
- if (xp->arg1 - xq->arg0 >= xp->arg2)
- return;
- xq->arg2 = xp->arg1 - xq->arg0;
- xp->arg0 += xq->arg0;
- xp->arg1 = xq->arg2;
- if (xp->arg0 < 0)
- xp->arg1 += xp->arg0;
- goto top;
- }
- }
- if (xp->arg0 > xp->arg2 - xp->arg1)
- xp->arg0 = xp->arg2 - xp->arg1;
- if (tt.tt_scroll_down) {
- if (tt.tt_scroll_top != xp->arg1 ||
- tt.tt_scroll_bot != xp->arg2 - 1) {
- if (tt.tt_setscroll == 0)
- goto down;
- (*tt.tt_setscroll)(xp->arg1, xp->arg2 - 1);
- }
- tt.tt_scroll_down(xp->arg0);
- } else {
- down:
- (*tt.tt_move)(xp->arg1, 0);
- (*tt.tt_delline)(xp->arg0);
- if (xp->arg2 < tt.tt_nrow) {
- (*tt.tt_move)(xp->arg2 - xp->arg0, 0);
- (*tt.tt_insline)(xp->arg0);
- }
- }
- } else {
- xp->arg0 = - xp->arg0;
- if (xp->arg0 > xp->arg2 - xp->arg1)
- xp->arg0 = xp->arg2 - xp->arg1;
- if (tt.tt_scroll_up) {
- if (tt.tt_scroll_top != xp->arg1 ||
- tt.tt_scroll_bot != xp->arg2 - 1) {
- if (tt.tt_setscroll == 0)
- goto up;
- (*tt.tt_setscroll)(xp->arg1, xp->arg2 - 1);
- }
- tt.tt_scroll_up(xp->arg0);
- } else {
- up:
- if (tt.tt_retain || xp->arg2 != tt.tt_nrow) {
- (*tt.tt_move)(xp->arg2 - xp->arg0, 0);
- (*tt.tt_delline)(xp->arg0);
- }
- (*tt.tt_move)(xp->arg1, 0);
- (*tt.tt_insline)(xp->arg0);
- }
- }
-}
OpenPOWER on IntegriCloud