[alt.sources] STDWIN 0.9.5, Part 18/19

guido@cwi.nl (Guido van Rossum) (03/04/91)

Archive-name: stdwin/part18

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 18 (of 19)."
# Contents:  Appls/dpv/dpvoutput.h Appls/dpv/r3symbol
#   Appls/test/hello.c Appls/test/kuifje Appls/test/test4.c
#   Appls/test/test5.c Appls/test/testlocalmenus.c
#   Appls/test/testpollevent.c Appls/test/thand.c Appls/test/vtdemo.c
#   Conf/proto.arch.68000 Conf/proto.arch.xxx Conf/proto.os.sony
#   Conf/proto.os.sysv Conf/proto.os.xxx Conf/proto.port.xxx
#   Doc/macros.ms Gen/waskfile.c H/_ARGS.h H/editwin.h H/vtrm.h
#   Packs/textedit/wprintf.c Packs/vt/vtimpl.h Packs/vt/vtputs.c
#   Ports/alfa/measure.c Ports/alfa/scroll.c Ports/mac/argcargv.c
#   Ports/mac/fullpath.c Ports/mac_mpw/Makefile
#   Ports/mac_mpw/intercept.h Ports/vtrm/vtrm.h Ports/x11/caret.c
#   Ports/x11/cutbuffer.c Ports/x11/llevent.h Tools/strdup.c
# Wrapped by guido@voorn.cwi.nl on Mon Mar  4 12:37:36 1991
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'Appls/dpv/dpvoutput.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Appls/dpv/dpvoutput.h'\"
else
echo shar: Extracting \"'Appls/dpv/dpvoutput.h'\" \(1076 characters\)
sed "s/^X//" >'Appls/dpv/dpvoutput.h' <<'END_OF_FILE'
X/* dpv -- ditroff previewer.  Definitions for output. */
X
Xextern char	*devname;	/* Device for which output is prepared */
X
Xextern WINDOW	*win;		/* output window */
X
Xextern int	showpage;	/* internal page to show in window */
X				/* defined in dpvcontrol.c */
Xextern int	prevpage;	/* previous page shown (for '-' command) */
X
Xextern long	hscale, hdiv;	/* Horizontal scaling factors */
Xextern long	vscale, vdiv;	/* Vertical scaling factors */
X
X/* Scaling method */
X#define HWIN(h) ((int)(((h)*hscale+hdiv/2)/hdiv))
X#define VWIN(v) ((int)(((v)*vscale+vdiv/2)/vdiv))
X#define HWINDOW HWIN(hpos)
X#define VWINDOW VWIN(vpos)
X
X/* Variables used by put1 macro below, and by recheck function */
X
Xextern int	doit;		/* nonzero if output makes sense */
Xextern int	vwindow;	/* precomputed vpos*vscale/vdiv - baseline */
Xextern int	baseline;	/* wbaseline() of current font */
Xextern int	lineheight;	/* wlineheight() of current font */
Xextern int	topdraw, botdraw;	/* window area to draw */
X
X/* Macro to output one character */
X
X#define put1(c) if (!doit) ; else wdrawchar(HWINDOW, vwindow, c)
END_OF_FILE
if test 1076 -ne `wc -c <'Appls/dpv/dpvoutput.h'`; then
    echo shar: \"'Appls/dpv/dpvoutput.h'\" unpacked with wrong size!
fi
# end of 'Appls/dpv/dpvoutput.h'
fi
if test -f 'Appls/dpv/r3symbol' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Appls/dpv/r3symbol'\"
else
echo shar: Extracting \"'Appls/dpv/r3symbol'\" \(1261 characters\)
sed "s/^X//" >'Appls/dpv/r3symbol' <<'END_OF_FILE'
XoA - 0x22
XoE - 0x24
Xcn - 0x27
X** - 0x2A
Xpl - 0x2B
Xmi - 0x2D
Xsl - 0x2F
Xeq - 0x3D
X=~ - 0x40
X*A - 0x41
X*B - 0x42
X*X - 0x43
X*D - 0x44
X*E - 0x45
X*F - 0x46
X*G - 0x47
X*Y - 0x48
X*I - 0x49
X*K - 0x4B
X*L - 0x4C
X*M - 0x4D
X*N - 0x4E
X*O - 0x4F
X*P - 0x50
X*H - 0x51
X*R - 0x52
X*S - 0x53
X*T - 0x54
X*U - 0x55
Xts - 0x56
X*W - 0x57
X*C - 0x58
X*Q - 0x59
X*Z - 0x5A
Xul - 0x5F
Xrn - 0x60
X*a - 0x61
X*b - 0x62
X*x - 0x63
X*d - 0x64
X*e - 0x65
X*f - 0x66
X*g - 0x67
X*y - 0x68
X*i - 0x69
X*f - 0x6A
X*k - 0x6B
X*l - 0x6C
X*m - 0x6D
X*n - 0x6E
X*o - 0x6F
X*p - 0x70
X*h - 0x71
X*r - 0x72
X*s - 0x73
X*t - 0x74
X*u - 0x75
X*w - 0x77
X*c - 0x78
X*q - 0x79
X*z - 0x7A
Xor - 0x7C
Xap - 0x7E
X
Xfm - 0xa2
X<= - 0xa3
Xsl - 0xa4
Xif - 0xa5
X$D - 0xa6
Xbs - 0xa9
Xlr - 0xaB
X<- - 0xaC
Xua - 0xaD
X-> - 0xaE
Xda - 0xaF
Xde - 0xb0
X+- - 0xb1
X>= - 0xb3
Xmu - 0xb4
Xpt - 0xb5
Xpd - 0xb6
Xbu - 0xb7
Xdi - 0xb8
X!= - 0xb9
X== - 0xbA
X~= - 0xbB
Xbr - 0xbD
XAh - 0xc0
Xc* - 0xc4
Xc+ - 0xc5
Xes - 0xc6
Xca - 0xc7
Xcu - 0xc8
Xsp - 0xc9
Xip - 0xcA
Xsb - 0xcC
Xib - 0xcD
Xmo - 0xcE
Xnm - 0xcF
Xan - 0xd0
Xgr - 0xd1
Xrg - 0xd2
Xco - 0xd3
Xsr - 0xd6
Xno - 0xd8
XAN - 0xd9
XOR - 0xdA
X<> - 0xdB
XDl - 0xdC
XDu - 0xdD
XDr - 0xdE
XDd - 0xdF
Xfo - 0xe1
Xlc - 0xe9
Xlf - 0xeB
Xlt - 0xeC
Xlk - 0xeD
Xlb - 0xeE
Xbv - 0xeF
Xbs - 0xf0
Xfc - 0xf1
Xis - 0xf2
Xrc - 0xf9
Xrf - 0xfB
Xrt - 0xfC
Xrk - 0xfD
Xrb - 0xfE
END_OF_FILE
if test 1261 -ne `wc -c <'Appls/dpv/r3symbol'`; then
    echo shar: \"'Appls/dpv/r3symbol'\" unpacked with wrong size!
fi
# end of 'Appls/dpv/r3symbol'
fi
if test -f 'Appls/test/hello.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Appls/test/hello.c'\"
else
echo shar: Extracting \"'Appls/test/hello.c'\" \(989 characters\)
sed "s/^X//" >'Appls/test/hello.c' <<'END_OF_FILE'
X/* The "Hello, world" koan according to David Rosenthal,
X   recoded for STDWIN.
X   Requirements: print "Hello, world" centered in a window,
X   recented after window resizes, redraw after window exposures.
X   Check error returns. */
X
X#include "stdwin.h"
X
Xchar *string= "Hello, world";
X
Xint text_h, text_v;
X
Xplacetext(win)
X	WINDOW *win;
X{
X	int width, height;
X	wgetwinsize(win, &width, &height);
X	text_v= (height - wlineheight()) / 2;
X	text_h= (width - wtextwidth(string, -1)) / 2;
X}
X
Xdrawproc(win, left, top, right, bottom)
X	WINDOW *win;
X{
X	wdrawtext(text_h, text_v, string, -1);
X}
X
Xmain(argc, argv)
X	int argc;
X	char **argv;
X{
X	WINDOW *win;
X	winitargs(&argc, &argv);
X	win= wopen("Hello", drawproc);
X	
X	if (win != 0) {
X		placetext(win);
X		for (;;) {
X			EVENT e;
X			wgetevent(&e);
X			if (e.type == WE_CLOSE ||
X					e.type == WE_COMMAND &&
X					(e.u.command == WC_CLOSE ||
X					 e.u.command == WC_CANCEL))
X				break;
X			if (e.type == WE_SIZE)
X				placetext(win);
X		}
X	}
X	
X	wdone();
X	exit(0);
X}
END_OF_FILE
if test 989 -ne `wc -c <'Appls/test/hello.c'`; then
    echo shar: \"'Appls/test/hello.c'\" unpacked with wrong size!
fi
# end of 'Appls/test/hello.c'
fi
if test -f 'Appls/test/kuifje' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Appls/test/kuifje'\"
else
echo shar: Extracting \"'Appls/test/kuifje'\" \(1056 characters\)
sed "s/^X//" >'Appls/test/kuifje' <<'END_OF_FILE'
X0x0000,0x0920,0x0000,
X0x0000,0x0920,0x0000,
X0x0000,0x0930,0x0000,
X0x0000,0x0D90,0x0000,
X0x0000,0x0490,0x0000,
X0x0000,0x0490,0x0000,
X0x0000,0x05B0,0x0000,
X0x0000,0x0D20,0x0000,
X0x0000,0x0920,0x0000,
X0x0000,0x393C,0x0000,
X0x0000,0xE006,0x0000,
X0x0001,0x884B,0x0000,
X0x0003,0x4851,0x8000,
X0x0006,0x2000,0xC000,
X0x0004,0x0C6C,0x6000,
X0x000C,0x6C60,0x2000,
X0x0008,0x0000,0x3000,
X0x0008,0x0000,0x1000,
X0x0008,0x007F,0x1000,
X0x0008,0x0005,0x9000,
X0x000C,0x00FF,0x1000,
X0x0006,0x0000,0x1000,
X0x0032,0x07F0,0x3000,
X0x0193,0x03E0,0x2400,
X0x00D9,0x01C0,0x6480,
X0x0049,0x8080,0xC500,
X0x006C,0xC001,0x8000,
X0x0026,0x6003,0x06C0,
X0x0033,0x3FFF,0xFE00,
X0x0019,0x0000,0x0400,
X0x000D,0x3000,0x0400,
X0x0004,0x3000,0x0400,
X0x0004,0x0000,0x0400,
X0x0000,0x0000,0x0C00,
X0x0000,0x0000,0x0800,
X0x0000,0x0000,0x1800,
X0x0000,0x0000,0x7000,
X0x0000,0x0007,0xC000,
X0x0000,0x00FC,0x0000,
X0x0000,0x0380,0x0000,
X0x0000,0x0600,0x0000,
X0x0000,0x0400,0x0000,
X0x0000,0x0400,0x0000,
X0x0000,0x0C00,0x0000,
X0x0000,0x0800,0x0000,
X0x0000,0x0800,0x0000,
X0x0000,0x0800,0x0000,
X0x0000,0x0800,0x0000,
END_OF_FILE
if test 1056 -ne `wc -c <'Appls/test/kuifje'`; then
    echo shar: \"'Appls/test/kuifje'\" unpacked with wrong size!
fi
# end of 'Appls/test/kuifje'
fi
if test -f 'Appls/test/test4.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Appls/test/test4.c'\"
else
echo shar: Extracting \"'Appls/test/test4.c'\" \(1097 characters\)
sed "s/^X//" >'Appls/test/test4.c' <<'END_OF_FILE'
X/* Menu test - a text-edit window  */
X
X#include "stdwin.h"
X
XTEXTEDIT *tb;
X
Xvoid
Xdrawproc(win, l, t, r, b)
X	WINDOW *win;
X{
X	tedraw(tb);
X}
X
Xmain(argc, argv)
X	int argc;
X	char **argv;
X{
X	WINDOW *win;
X	MENU *mp;
X	int width, height;
X	int stop= 0;
X	
X	winitargs(&argc, &argv);
X	if (argc >= 3) {
X		int h= atoi(argv[1]), v= atoi(argv[2]);
X		wsetdefwinpos(h, v);
X	}
X	
X	mp= wmenucreate(1, "File");
X	wmenuadditem(mp, "Quit", 'Q');
X	
X	win= wopen("Menu+textedit", drawproc);
X	wgetwinsize(win, &width, &height);
X	wsetdocsize(win, width, height);
X	
X	tb= tealloc(win, 0, 0, width);
X	tereplace(tb, "Hello, world\n--Guido van Rossum");
X	
X	do {
X		EVENT e;
X		wgetevent(&e);
X		if (teevent(tb, &e)) {
X			wsetdocsize(win, width, height= tegetbottom(tb));
X			continue;
X		}
X		switch (e.type) {
X		
X		case WE_COMMAND:
X			if (e.u.command == WC_CLOSE ||
X				e.u.command == WC_CANCEL)
X				stop= 1;
X			break;
X		
X		case WE_CLOSE:
X			stop= 1;
X			break;
X		
X		case WE_MENU:
X			if (e.u.m.id == 1 && e.u.m.item == 0)
X				stop= 1;
X			break;
X		
X		}
X	} while (!stop);
X
X 	tefree(tb);
X	wclose(win);
X	wmenudelete(mp);
X	wdone();
X	
X	exit(0);
X}
END_OF_FILE
if test 1097 -ne `wc -c <'Appls/test/test4.c'`; then
    echo shar: \"'Appls/test/test4.c'\" unpacked with wrong size!
fi
# end of 'Appls/test/test4.c'
fi
if test -f 'Appls/test/test5.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Appls/test/test5.c'\"
else
echo shar: Extracting \"'Appls/test/test5.c'\" \(1337 characters\)
sed "s/^X//" >'Appls/test/test5.c' <<'END_OF_FILE'
X/* Debugging test -- print events and details */
X
X#include "stdwin.h"
X
Xvoid
Xdrawproc(win, l, t, r, b)
X	WINDOW *win;
X{
X	printf("drawproc called\n");
X	wdrawtext(0, 0, "Hello, world", -1);
X}
X
Xchar *evname[] = {
X	"null",
X	"activate",
X	"char",
X	"command",
X	"mouse_down",
X	"mouse_move",
X	"mouse_up",
X	"menu",
X	"size",
X	"(move)",
X	"draw",
X	"timer",
X	"deactivate",
X	0
X};
X
Xchar *cmname[] = {
X	"(null)",
X	"close",
X	"left",
X	"right",
X	"up",
X	"down",
X	"cancel",
X	"backspace",
X	"tab",
X	"return",
X	0
X};
X
Xmain(argc, argv)
X	int argc;
X	char **argv;
X{
X	WINDOW *win;
X	winitargs(&argc, &argv);
X	win= wopen("Hello test", drawproc);
X	for (;;) {
X		EVENT e;
X		wgetevent(&e);
X		switch (e.type) {
X		case WE_MOUSE_DOWN:
X		case WE_MOUSE_MOVE:
X		case WE_MOUSE_UP:
X			printf("%s event: b=%d, h=%d, v=%d\n",
X				evname[e.type], e.u.where.button,
X				e.u.where.h, e.u.where.v);
X			break;
X		case WE_COMMAND:
X			printf("command event (%s)\n", cmname[e.u.command]);
X			break;
X		case WE_CHAR:
X			printf("char event ('%c', 0x%02x)\n",
X				e.u.character, e.u.character & 0xff);
X			break;
X		default:
X			printf("%s event\n", evname[e.type]);
X			break;
X		}
X		if (e.type == WE_CHAR && e.u.character == 'q')
X			break;
X		if (e.type == WE_CLOSE ||
X			e.type == WE_COMMAND &&
X			(e.u.command == WC_CLOSE || e.u.command == WC_CANCEL))
X			break;
X	}
X	wclose(win);
X	wdone();
X	exit(0);
X}
END_OF_FILE
if test 1337 -ne `wc -c <'Appls/test/test5.c'`; then
    echo shar: \"'Appls/test/test5.c'\" unpacked with wrong size!
fi
# end of 'Appls/test/test5.c'
fi
if test -f 'Appls/test/testlocalmenus.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Appls/test/testlocalmenus.c'\"
else
echo shar: Extracting \"'Appls/test/testlocalmenus.c'\" \(1002 characters\)
sed "s/^X//" >'Appls/test/testlocalmenus.c' <<'END_OF_FILE'
X#include "stdwin.h"
X
X#include <strings.h>
X
Xmain(argc, argv)
X	char **argv;
X{
X	winit(&argc, &argv);
X	showargs(argc, argv);
X	localtest();
X	wdone();
X}
X
Xshowargs(argc, argv)
X	char **argv;
X{
X	char buf[100];
X	char *p;
X	int i;
X	
X	sprintf(buf, "argc=%d", argc);
X	p = buf;
X	for (i = 0; i < argc; ++i) {
X		p = strchr(p, '\0');
X		sprintf(p, " argv[%d]=\"%s\"", i, argv[i]);
X	}
X	wmessage(buf);
X}
X
Xlocaltest()
X{
X	WINDOW *u, *v, *w;
X	MENU *m, *n, *o;
X	int wincount = 3;
X	
X	wmenusetdeflocal(1);
X	
X	m = wmenucreate(1, "Menu1");
X	wmenuadditem(m, "Item1", -1);
X	n = wmenucreate(2, "Menu2");
X	wmenuadditem(n, "Item2", -1);
X	o = wmenucreate(3, "Menu3");
X	wmenuadditem(o, "Item3", -1);
X	
X	u = wopen("Win1", 0L);
X	v = wopen("Win2", 0L);
X	w = wopen("Win3", 0L);
X	
X	wmenuattach(u, m);
X	wmenuattach(v, n);
X	wmenuattach(w, o);
X	
X	for (;;) {
X		EVENT e;
X		wgetevent(&e);
X		if (e.type == WE_CLOSE ||
X			e.type == WE_COMMAND && e.u.command == WC_CLOSE) {
X			wclose(e.window);
X			--wincount;
X			if (wincount == 0)
X				break;
X		}
X	}
X}
END_OF_FILE
if test 1002 -ne `wc -c <'Appls/test/testlocalmenus.c'`; then
    echo shar: \"'Appls/test/testlocalmenus.c'\" unpacked with wrong size!
fi
# end of 'Appls/test/testlocalmenus.c'
fi
if test -f 'Appls/test/testpollevent.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Appls/test/testpollevent.c'\"
else
echo shar: Extracting \"'Appls/test/testpollevent.c'\" \(1208 characters\)
sed "s/^X//" >'Appls/test/testpollevent.c' <<'END_OF_FILE'
X#include <stdio.h>
X#include "stdwin.h"
X
Xvoid drawproc(); /* Forward */
X
XEVENT ev;
X
Xmain(argc, argv)
X	int argc;
X	char **argv;
X{
X	WINDOW *win;
X	
X	winitargs(&argc, &argv);
X	win = wopen("Test poll event", drawproc);
X	for (;;) {
X		if (wpollevent(&ev)) {
X			if (ev.type == WE_CLOSE ||
X			    ev.type == WE_COMMAND && ev.u.command == WC_CLOSE)
X				break;
X			wbegindrawing(win);
X			werase(0, 0, 1000, 1000);
X			drawproc(win, 0, 0, 1000, 1000);
X			wenddrawing(win);
X		}
X		else {
X			wbegindrawing(win);
X			animate();
X			wenddrawing(win);
X		}
X	}
X	wdone();
X	exit(0);
X}
X
Xvoid
Xdrawproc(win, left, top, right, bottom)
X	WINDOW *win;
X	int left, top, right, bottom;
X{
X	char buf[100];
X	
X	switch (ev.type) {
X	
X	case WE_MOUSE_DOWN:
X	case WE_MOUSE_MOVE:
X	case WE_MOUSE_UP:
X		sprintf(buf,
X			"MOUSE EVENT %d, h=%d, v=%d, button=%d, clicks=%d",
X			ev.type, ev.u.where.h, ev.u.where.v,
X			ev.u.where.button, ev.u.where.clicks);
X		break;
X	
X	case WE_CHAR:
X		sprintf(buf, "CHAR '%c' (%d)", ev.u.character, ev.u.character);
X		break;
X	
X	default:
X		sprintf(buf, "TYPE %d", ev.type);
X		break;
X	
X	}
X	wdrawtext(0, 0, buf, -1);
X}
X
Xanimate()
X{
X	static int h;
X	int v = 20;
X	
X	werase(h, v, h+5, v+5);
X	h = (h+1) % 400;
X	wpaint(h, v, h+5, v+5);
X}
END_OF_FILE
if test 1208 -ne `wc -c <'Appls/test/testpollevent.c'`; then
    echo shar: \"'Appls/test/testpollevent.c'\" unpacked with wrong size!
fi
# end of 'Appls/test/testpollevent.c'
fi
if test -f 'Appls/test/thand.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Appls/test/thand.c'\"
else
echo shar: Extracting \"'Appls/test/thand.c'\" \(1033 characters\)
sed "s/^X//" >'Appls/test/thand.c' <<'END_OF_FILE'
X/* Test wungetevent from signal handler */
X
X#include "stdwin.h"
X#include <signal.h>
X
X#define SPECIAL 1000
X
XTEXTEDIT *tb;
X
Xvoid
Xdrawproc(win, l, t, r, b)
X	WINDOW *win;
X{
X	tedraw(tb);
X}
X
Xint
Xhandler() {
X	EVENT e;
X	e.type= WE_COMMAND;
X	e.u.command= SPECIAL;
X	wungetevent(&e);
X}
X
Xmain(argc, argv)
X	int argc;
X	char **argv;
X{
X	WINDOW *win;
X	int width, height;
X	
X	winit();
X	signal(SIGINT, handler);
X	if (argc >= 3) {
X		int h= atoi(argv[1]), v= atoi(argv[2]);
X		wsetdefwinpos(h, v);
X	}
X	
X	win= wopen("Textedit", drawproc);
X	wgetwinsize(win, &width, &height);
X	wsetdocsize(win, width, height);
X	
X	tb= tealloc(win, 0, 0, width);
X	tereplace(tb, "Hello, world\n--Guido van Rossum");
X	
X	for (;;) {
X		EVENT e;
X		wgetevent(&e);
X		if (e.type == WE_CLOSE)
X			break;
X		if (e.type == WE_COMMAND) {
X			if (e.u.command == WC_CLOSE ||
X				e.u.command == WC_CANCEL)
X				break;
X			else if (e.u.command == SPECIAL) {
X				wmessage("Got event from handler");
X				continue;
X			}
X		}
X		(void) teevent(tb, &e);
X	}
X	tefree(tb);
X	wclose(win);
X	wdone();
X	exit(0);
X}
END_OF_FILE
if test 1033 -ne `wc -c <'Appls/test/thand.c'`; then
    echo shar: \"'Appls/test/thand.c'\" unpacked with wrong size!
fi
# end of 'Appls/test/thand.c'
fi
if test -f 'Appls/test/vtdemo.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Appls/test/vtdemo.c'\"
else
echo shar: Extracting \"'Appls/test/vtdemo.c'\" \(1027 characters\)
sed "s/^X//" >'Appls/test/vtdemo.c' <<'END_OF_FILE'
X#include "stdwin.h"
X#include "vt.h"
X
Xmain() {
X	VT *vt;
X	winit();
X	wsetdefwinsize(80*wcharwidth('0'), 24*wlineheight());
X	vt= vtopen("VT", 24, 80, 100); /* Should check outcome */
X	vtautosize(vt);
X	vtsetnlcr(vt, 1); /* Map LF ro CR LF */
X	vtansiputs(vt, "Hello, world\n", -1);
X	eventloop();
X	wdone();
X	exit(0);
X}
X
Xeventloop(vt) VT *vt; {
X	for (;;) {
X		EVENT e;
X		wgetevent(&e);
X		switch (e.type) {
X		case WE_SIZE:
X			vtautosize(vt); /* Should check outcome */
X			break;
X		case WE_CHAR:
X			{ char buf[2];
X			  buf[0]= e.u.character;
X			  vtansiputs(vt, buf, 1);
X			  break; }
X		case WE_MOUSE_DOWN:
X			vtsetcursor(vt,
X			            e.u.where.v / vtcheight(vt),
X			            e.u.where.h / vtcwidth(vt));
X			break;
X		case WE_COMMAND:
X			switch (e.u.command) {
X			case WC_CLOSE:                              return;
X			case WC_RETURN: vtansiputs(vt, "\n", 1);    break;
X			case WC_BACKSPACE: vtansiputs(vt, "\b", 1); break;
X			case WC_TAB: vtansiputs(vt, "\t", 1);       break;
X			}
X			break;
X		case WE_CLOSE:
X			return;
X		}
X	}
X}
END_OF_FILE
if test 1027 -ne `wc -c <'Appls/test/vtdemo.c'`; then
    echo shar: \"'Appls/test/vtdemo.c'\" unpacked with wrong size!
fi
# end of 'Appls/test/vtdemo.c'
fi
if test -f 'Conf/proto.arch.68000' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Conf/proto.arch.68000'\"
else
echo shar: Extracting \"'Conf/proto.arch.68000'\" \(973 characters\)
sed "s/^X//" >'Conf/proto.arch.68000' <<'END_OF_FILE'
X
X#
X# Definitions for 68000 architecture
X#
X
X# Define the name of this architecture here.
X# This is used as a subdirectory name where all the objects for this
X# architecture live: $(TOP)/Build/$(ARCH)
X#
X# Note that there is the silent assumption that there is only one O.S.
X# per architecture.  We'll have to invent composite architecture names,
X# or insert an extra level in the build tree, if this becomes false...
X#
XARCH=		68000
X
X# Define the name of the script used to update the dependencies in
X# the Makefile.
X# Choices are:
X#	slowmkdep -- always works (as far as I know)
X#	fastmkdep -- used cc -M, which isn't always available
X#	makedepend -- Todd Brunhoff's superfast tool (comes with X11)
X#	              (This needs -Dunix because of configure.h)
X# You may also place this definition in the proto.os.* file if you
X# know a method works for every architecture supported by that OS.
X#
X#MKDEP=		$(CONF)/slowmkdep
X#MKDEP=		$(CONF)/fastmkdep
X#MKDEP=		makedepend -Dunix
X
END_OF_FILE
if test 973 -ne `wc -c <'Conf/proto.arch.68000'`; then
    echo shar: \"'Conf/proto.arch.68000'\" unpacked with wrong size!
fi
# end of 'Conf/proto.arch.68000'
fi
if test -f 'Conf/proto.arch.xxx' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Conf/proto.arch.xxx'\"
else
echo shar: Extracting \"'Conf/proto.arch.xxx'\" \(976 characters\)
sed "s/^X//" >'Conf/proto.arch.xxx' <<'END_OF_FILE'
X
X#
X# Definitions pertaining to architecture XXX
X#
X
X# Define the name of this architecture here.
X# This is used as a subdirectory name where all the objects for this
X# architecture live: $(TOP)/Build/$(ARCH)
X#
X# Note that there is the silent assumption that there is only one O.S.
X# per architecture.  We'll have to invent composite architecture names,
X# or insert an extra level in the build tree, if this becomes false...
X#
XARCH=		XXX
X
X# Define the name of the script used to update the dependencies in
X# the Makefile.
X# Choices are:
X#	slowmkdep -- always works (as far as I know)
X#	fastmkdep -- used cc -M, which isn't always available
X#	makedepend -- Todd Brunhoff's superfast tool (comes with X11)
X#	              (This needs -Dunix because of configure.h)
X# You may also place this definition in the proto.os.* file if you
X# know a method works for every architecture supported by that OS.
X#
XMKDEP=		$(CONF)/slowmkdep
XMKDEP=		$(CONF)/fastmkdep
XMKDEP=		makedepend -Dunix
X
END_OF_FILE
if test 976 -ne `wc -c <'Conf/proto.arch.xxx'`; then
    echo shar: \"'Conf/proto.arch.xxx'\" unpacked with wrong size!
fi
# end of 'Conf/proto.arch.xxx'
fi
if test -f 'Conf/proto.os.sony' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Conf/proto.os.sony'\"
else
echo shar: Extracting \"'Conf/proto.os.sony'\" \(1049 characters\)
sed "s/^X//" >'Conf/proto.os.sony' <<'END_OF_FILE'
X
X#
X# Definitions for Sony News workstation
X#
X
X# The name of this O.S.
X#
XOS=		sony
X
X# Choose ONE of the following definitions of RANLIB.
X# BSD-based systems will need ranlib to be called after a library is
X# changed.
X#
XRANLIB=		ranlib			# for BSD
X
X# Define the name of the script used to update the dependencies in
X# the Makefile.
X# Choices are:
X#	slowmkdep -- always works (as far as I know)
X#	fastmkdep -- uses cc -M, which isn't always available
X#	makedepend -- Todd Brunhoff's superfast tool (comes with X11)
X#	              (This needs -Dunix because of configure.h)
X# You may also place this definition in the proto.arch.* file if no
X# method works for every architecture supported by this OS.
X#
X#MKDEP=		$(CONF)/slowmkdep
XMKDEP=		$(CONF)/fastmkdep
X#MKDEP=		makedepend -Dunix
X
X# Define the system libraries to link with programs that use termcap and X11
X# (In some cases these are architecture-dependent)
X#
XLIBTERMCAP=	-ltermcap
XLIBX11=		-lX11
X
X# Other OS-specific choices (-I flags, -D flags, compiler options)
X#
XOSINCLS=	
XOSDEFS=		
XOSOPTS=		
END_OF_FILE
if test 1049 -ne `wc -c <'Conf/proto.os.sony'`; then
    echo shar: \"'Conf/proto.os.sony'\" unpacked with wrong size!
fi
# end of 'Conf/proto.os.sony'
fi
if test -f 'Conf/proto.os.sysv' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Conf/proto.os.sysv'\"
else
echo shar: Extracting \"'Conf/proto.os.sysv'\" \(756 characters\)
sed "s/^X//" >'Conf/proto.os.sysv' <<'END_OF_FILE'
X
X#
X# Definitions pertaining to (modern versions of) System V
X#
X# Disclaimer: this was only tested on a Silicon Graphics under IRIX 3.2
X#
X
X# The name of this O.S.
X#
XOS=		sysv
X
X# SYSV-based systems don't have ranlib; the value 'true' makes Make happy.
X#
XRANLIB=		true			# for SYSV
X
X# Defines to make various bits of code happy:
X#	-DSYSV is the general test for System V.
X#	-Datt is used at least by some X internal headers (and what else?)
X#	And, of course, index and rindex are called strchr and strrchr.
X#
XOSDEFS=		-DSYSV -Datt -Dindex=strchr -Drindex=strrchr
X
X# The mkdep using cc -M will work for any architecture (I hope)
X#
XMKDEP=		$(CONF)/fastmkdep
X
X# The system libraries to link with programs that use termcap and X11
X# are in proto.arch.* instead.
X
END_OF_FILE
if test 756 -ne `wc -c <'Conf/proto.os.sysv'`; then
    echo shar: \"'Conf/proto.os.sysv'\" unpacked with wrong size!
fi
# end of 'Conf/proto.os.sysv'
fi
if test -f 'Conf/proto.os.xxx' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Conf/proto.os.xxx'\"
else
echo shar: Extracting \"'Conf/proto.os.xxx'\" \(1170 characters\)
sed "s/^X//" >'Conf/proto.os.xxx' <<'END_OF_FILE'
X
X#
X# Definitions pertaining to operating system XXX
X#
X
X# Define the name of this O.S. here.
X#
XOS=		XXX
X
X# Choose ONE of the following definitions of RANLIB.
X# BSD-based systems will need ranlib to be called after a library is
X# changed.
X# SYSV-based systems don't have ranlib; the value 'true' makes Make happy.
X#
XRANLIB=		ranlib			# for BSD
XRANLIB=		true			# for SYSV
X
X# Define the name of the script used to update the dependencies in
X# the Makefile.
X# Choices are:
X#	slowmkdep -- always works (as far as I know)
X#	fastmkdep -- uses cc -M, which isn't always available
X#	makedepend -- Todd Brunhoff's superfast tool (comes with X11)
X#	              (This needs -Dunix because of configure.h)
X# You may also place this definition in the proto.arch.* file if no
X# method works for every architecture supported by this OS.
X#
XMKDEP=		$(CONF)/slowmkdep
XMKDEP=		$(CONF)/fastmkdep
XMKDEP=		makedepend -Dunix
X
X# Define the system libraries to link with programs that use termcap and X11
X# (In some cases these are architecture-dependent)
X#
XLIBTERMCAP=	-ltermcap
XLIBX11=		-lX11
X
X# Other OS-specific choices (-I flags, -D flags, compiler options)
X#
XOSINCLS=	
XOSDEFS=		
XOSOPTS=		
END_OF_FILE
if test 1170 -ne `wc -c <'Conf/proto.os.xxx'`; then
    echo shar: \"'Conf/proto.os.xxx'\" unpacked with wrong size!
fi
# end of 'Conf/proto.os.xxx'
fi
if test -f 'Conf/proto.port.xxx' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Conf/proto.port.xxx'\"
else
echo shar: Extracting \"'Conf/proto.port.xxx'\" \(1032 characters\)
sed "s/^X//" >'Conf/proto.port.xxx' <<'END_OF_FILE'
X
X#
X# Definitions pertaining to the port to the XXX window system
X#
X
X# NB: You are not expected to port STDWIN -- this has already been done.
X# This prototype file is provided mostly to document the definitions
X# exported from the various proto.port.* files, and as a template for
X# the STDWIN implementer.  And, of course, if you really WANT to port
X# stdwin to a new window system or look-and-feel (NeWS, or SunTools, or
X# OpenLook), you're welcome -- just check with the author of STDWIN
X# first to see if somebody else isn't planning to do the same.
X
X# Define the name of this port.
X# This is used as a subdirectory name where all the objects for this
X# port for a given architecture live: $(TOP)/Build/$(ARCH)/$(PORT)
X#
XPORT=		XXX
X
X# Libraries to link with for the X11 port.
X# Most of this is boilerplate, only the PORTSYSLIBS part depends on
X# what your system requires.
X#
XPORTOWNLIBS=	$(PORTBUILD)/lib/lib.a
XPORTSYSLIBS=	-lXXX
XPORTLIBS=	$(PORTOWNLIBS) $(PORTSYSLIBS)
X
X# NB: -lXXX is really OS- or site-specific as well, sigh.
END_OF_FILE
if test 1032 -ne `wc -c <'Conf/proto.port.xxx'`; then
    echo shar: \"'Conf/proto.port.xxx'\" unpacked with wrong size!
fi
# end of 'Conf/proto.port.xxx'
fi
if test -f 'Doc/macros.ms' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Doc/macros.ms'\"
else
echo shar: Extracting \"'Doc/macros.ms'\" \(1074 characters\)
sed "s/^X//" >'Doc/macros.ms' <<'END_OF_FILE'
X.\"
X.\" Macro definitions and other settings
X.\" ------------------------------------
X.\"
X.\"	The Constant Width font is whatever is mounted at font position 5.
X.\"	XXX This is not effective, -ms overrides it (in .TL?),
X.\"	but the effect is the same.
X.\"
X.fp 5 CW
X.\"
X.\"	Constant width font - use .cW like .I or .R or .B 
X.\"   	When using nroff this translates to .I.
X.\"
X.de cW
X.if t \{\
X.	ie \\n(.$ \&\f5\\$1\fP\\$2
X.	el .ft 5
X.\}
X.if n .I \\$1 \\$2
X..
X.\"
X.\"	Inline constant width macros -- use like \*<this\*> to get a
X.\"	word or two in constant width.  Equivalent to .cW.
X.\"
X.ds < \&\f5
X.ds > \fP
X.\"
X.\"	Code segment macros -- use .sC to  start a code segment and .eC
X.\"	to end it.  Argument to .sC (L, I or B) is passed on to .DS.
X.\"	Tabs are set 8 spaces apart.
X.\"
X.de sC
X.DS \\$1 \\$2
X.cW
X.ta \w'\0\0\0\0\0\0\0\0'u +\w'\0\0\0\0\0\0\0\0'u
X..
X.de eC
X.R
X.DE
X..
X.\"
X.\"	Change the point size and spacing to something more radable:
X.\"
X.nr PS 12
X.nr VS 14
X.\"
X.\"	Some string definitions specific to Python documents:
X.\"
X.ds Py \f2Python\fP
X.ds Ux \s-2UNIX\s0
END_OF_FILE
if test 1074 -ne `wc -c <'Doc/macros.ms'`; then
    echo shar: \"'Doc/macros.ms'\" unpacked with wrong size!
fi
# end of 'Doc/macros.ms'
fi
if test -f 'Gen/waskfile.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Gen/waskfile.c'\"
else
echo shar: Extracting \"'Gen/waskfile.c'\" \(1241 characters\)
sed "s/^X//" >'Gen/waskfile.c' <<'END_OF_FILE'
X/* STDWIN -- UNIVERSAL WASKFILE. */
X
X#include "tools.h"
X#include "filedefs.h"
X#include "stdwin.h"
X
X/* Ask for a file name; default is initial contents of buf.
X   Checks are made that the name typed is sensible:
X   if 'new' is TRUE, it should be writable or creatable,
X   and if it already exists confirmation is asked;
X   if 'new' is FALSE, it should exist. */
X
Xbool
Xwaskfile(prompt, buf, len, new)
X	char *prompt;
X	char *buf;
X	int len;
X	bool new;
X{
X	for (;;) {
X		if (!waskstr(prompt, buf, len) || buf[0] == EOS)
X			return FALSE;
X		if (new) {
X			if (access(buf, NOMODE) >= 0) {	/* Existing file */
X				if (access(buf, WMODE) >= 0) {
X					switch (waskync("Overwrite? [ny]", 0)) {
X					case -1:	return FALSE;
X					case 1:		return TRUE;
X					}
X					wmessage("Try again.");
X				}
X				else
X					wmessage("No write permission.");
X			}
X			else {
X				char *p= strrchr(buf, SEP);
X				if (p == NULL) {
X					if (access(CURDIR, WMODE) >= 0)
X						return TRUE;
X				}
X				else {
X					*p= EOS;
X					if (access(buf, WMODE) >= 0) {
X						*p= SEP;
X						return TRUE;
X					}
X				}
X				wmessage("Can't create file.");
X			}
X		}
X		else {
X			if (access(buf, RMODE) >= 0)
X				return TRUE;
X			wmessage("File not found.");
X		}
X		wfleep();
X		break;
X	}
X	return FALSE;
X}
END_OF_FILE
if test 1241 -ne `wc -c <'Gen/waskfile.c'`; then
    echo shar: \"'Gen/waskfile.c'\" unpacked with wrong size!
fi
# end of 'Gen/waskfile.c'
fi
if test -f 'H/_ARGS.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'H/_ARGS.h'\"
else
echo shar: Extracting \"'H/_ARGS.h'\" \(1138 characters\)
sed "s/^X//" >'H/_ARGS.h' <<'END_OF_FILE'
X/* Define _ARGS(x) as either x or () depending on an educated guess
X   on the presence of support for prototypes in the compiler.
X   The idea is that you declare function with prototypes as follows:
X   	extern char *malloc _ARGS((unsigned int));
X   Watch the double parentheses (you'll quickly get used to them).
X   Use _ARGS((void)) to declare a function with no arguments.
X   Use things like _ARGS((char *, ...)) to declare printf-like functions.
X   
X   As a free extra, the macro HAVE_PROTOTYPES is defined if and only if
X   prototypes are supported, and the macro 'const' is defined as empty
X   if prototypes are not supported (and also if THINK_C is defined).
X*/
X
X#ifndef _ARGS
X
X#ifdef __STDC__
X#define HAVE_PROTOTYPES
X#endif
X
X#ifdef THINK_C
X#undef HAVE_PROTOTYPES
X#define HAVE_PROTOTYPES
X#endif
X
X#ifdef sgi
X#ifdef mips
X#define HAVE_PROTOTYPES
X#endif
X#endif
X
X#ifdef HAVE_PROTOTYPES
X#define _ARGS(x) x
X#else
X#define _ARGS(x) ()
X#endif
X
X#ifndef HAVE_PROTOTYPES
X#define const /*empty*/
X#else /* HAVE_PROTOTYPES */
X#ifdef THINK_C
X#undef const
X#define const /*empty*/
X#endif /* THINK_C */
X#endif /* HAVE_PROTOTYPES */
X
X#endif /* _ARGS */
END_OF_FILE
if test 1138 -ne `wc -c <'H/_ARGS.h'`; then
    echo shar: \"'H/_ARGS.h'\" unpacked with wrong size!
fi
# end of 'H/_ARGS.h'
fi
if test -f 'H/editwin.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'H/editwin.h'\"
else
echo shar: Extracting \"'H/editwin.h'\" \(1077 characters\)
sed "s/^X//" >'H/editwin.h' <<'END_OF_FILE'
X/* Text Edit Window Package */
X
Xtypedef struct editwin {
X	/* Fields can be read by the caller but shouldn't be changed */
X	WINDOW *win;
X	TEXTEDIT *tp;
X	char *filename;
X	char /*tbool*/ saved;
X} EDITWIN;
X
XEDITWIN *ewfind _ARGS((WINDOW *));
Xint ewcount _ARGS((void));
XEDITWIN *ewcreate _ARGS((char *));
XEDITWIN *ewnew _ARGS((void));
XEDITWIN *ewopen _ARGS((void));
X/*bool*/int ewclose _ARGS((EDITWIN *));
X/*bool*/int ewsave _ARGS((EDITWIN *));
X/*bool*/int ewsaveas _ARGS((EDITWIN *));
X/*bool*/int ewsavecopy _ARGS((EDITWIN *));
X/*bool*/int ewsaveprompt _ARGS((EDITWIN *, char *, /*bool*/int));
X/*bool*/int ewrevert _ARGS((EDITWIN *));
X/*bool*/int ewreadfile _ARGS((EDITWIN *, char *));
Xvoid ewsetdimensions _ARGS((EDITWIN *));
X/*bool*/int ewwritefile _ARGS((EDITWIN *, char *));
X/*bool*/int ewevent _ARGS((EDITWIN *, EVENT *, /*bool*/int *));
X/*bool*/int ewsaveall _ARGS((void));
X/*bool*/int ewcloseall _ARGS((void));
Xvoid ewreplace _ARGS((EDITWIN *, char *));
Xvoid ewundo _ARGS((EDITWIN *));		/* Not implemented */
Xvoid ewcopy _ARGS((EDITWIN *));
Xvoid ewpaste _ARGS((EDITWIN *));
END_OF_FILE
if test 1077 -ne `wc -c <'H/editwin.h'`; then
    echo shar: \"'H/editwin.h'\" unpacked with wrong size!
fi
# end of 'H/editwin.h'
fi
if test -f 'H/vtrm.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'H/vtrm.h'\"
else
echo shar: Extracting \"'H/vtrm.h'\" \(809 characters\)
sed "s/^X//" >'H/vtrm.h' <<'END_OF_FILE'
X/*
X * Terminal capabilities.  These correspond to bits set by trmstart in its
X * parameter flags parameter.
X */
X
X#define HAS_STANDOUT	1	/* Terminal has inverse video or underline */
X#define CAN_SCROLL	2	/* Terminal can insert/delete lines */
X#define CAN_OPTIMISE	4	/* Terminal can insert/delete characters */
X#define CAN_SENSE	8	/* Terminal can send cursor position */
X
X/*
X * Error codes returned by trmstart.
X */
X
X#define TE_OK		0	/* No errors */
X#define TE_TWICE	1	/* Trmstart called again */
X#define TE_NOTERM	2	/* $TERM not set or empty */
X#define TE_BADTERM	3	/* $TERM not found in termcap database */
X#define TE_DUMB		4	/* Terminal too dumb */
X#define TE_NOTTY	5	/* Stdout not a tty device */
X#define TE_NOMEM	6	/* Can't get enough memory */
X#define TE_OTHER	7	/* This and higher are reserved errors */
END_OF_FILE
if test 809 -ne `wc -c <'H/vtrm.h'`; then
    echo shar: \"'H/vtrm.h'\" unpacked with wrong size!
fi
# end of 'H/vtrm.h'
fi
if test -f 'Packs/textedit/wprintf.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Packs/textedit/wprintf.c'\"
else
echo shar: Extracting \"'Packs/textedit/wprintf.c'\" \(1040 characters\)
sed "s/^X//" >'Packs/textedit/wprintf.c' <<'END_OF_FILE'
X#include "stdwin.h"
X
X/* "Printf to a window", with (h, v) and return value like wdrawtext.
X   Use only in a draw procedure or between wbegindrawing/wenddrawing. */
X
Xvoid
Xwprintf(h, v, fmt, rest_of_arguments)
X	int h, v;
X	char *fmt;
X{
X	char buf[1000];
X	int len;
X	int width;
X	
X	vsprintf(buf, fmt, &rest_of_arguments);
X	len = strlen(buf);
X	width = wtextwidth(buf, len);
X	wdrawtext(h, v, buf, len);
X}
X
X/* "Centered printf to a window": like wprintf but allows centered text.
X   The first parameter, align, is a percentage: a value of 0 prints
X   at the right of h, a value of 50 centers around h, a value of 100
X   aligns the end of the text at h.
X   The v coordinate always indicates the top of the text.
X   Return value is the h coordinate at the right end of the text. */
X
Xvoid
Xwcprintf(align, h, v, fmt, rest_of_arguments)
X	int align;
X	int h, v;
X	char *fmt;
X{
X	char buf[1000];
X	int len;
X	int width;
X	
X	vsprintf(buf, fmt, &rest_of_arguments);
X	len = strlen(buf);
X	width = wtextwidth(buf, len);
X	wdrawtext(h - align*width/100, v, buf, len);
X}
END_OF_FILE
if test 1040 -ne `wc -c <'Packs/textedit/wprintf.c'`; then
    echo shar: \"'Packs/textedit/wprintf.c'\" unpacked with wrong size!
fi
# end of 'Packs/textedit/wprintf.c'
fi
if test -f 'Packs/vt/vtimpl.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Packs/vt/vtimpl.h'\"
else
echo shar: Extracting \"'Packs/vt/vtimpl.h'\" \(1403 characters\)
sed "s/^X//" >'Packs/vt/vtimpl.h' <<'END_OF_FILE'
X/* Assorted things used by the VT implementation */
X
X/* Include files */
X
X#include "tools.h"
X#include "stdwin.h"
X#include "vt.h"
X
X/* Names for control characters */
X
X#define ESC	'\033'
X#define CR	'\r'
X#define LF	'\012'	/* Can't use \n or EOL because of MPW on Macintosh */
X#define BS	'\b'
X#define BEL	'\007'
X#define TAB	'\t'
X#define FF	'\014'
X
X/* Macro to check for non-control character */
X
X#define PRINTABLE(c)	isprint(c)
X
X/* Debugging facilities */
X
X/* If you want static functions visible for adb, pass '-DSTATIC=static'
X   to the cc compiler. */
X#ifndef STATIC
X#define STATIC static
X#endif
X
X/* Macro D() to turn off code in NDEBUG mode or if debugging is off */
X#ifdef NDEBUG
X#define D(stmt) 0
X#else
X/* XXX Dependency on 'debugging' declared in calling application */
Xextern int debugging;
X#define D(stmt) if (!debugging) { } else stmt
X#endif
X
X/* In Amoeba, MON_EVENT() can be used to keep cheap performance statistics */
X#ifndef MON_EVENT
X#define MON_EVENT(msg) do { } while (0) /* Funny syntax to work inside 'if' */
X#endif
X
X/* Functions used internally */
X/* XXX Ought to have names beginning with _vt */
X
Xvoid vtcirculate _ARGS((VT *vt, int r1, int r2, int n));
Xvoid vtchange _ARGS((VT *vt, int r1, int c1, int r2, int c2));
Xvoid vtshow _ARGS((VT *vt, int r1, int c1, int r2, int c2));
Xvoid vtscroll _ARGS((VT *vt, int r1, int c1, int r2, int c2, int dr, int dc));
Xvoid vtsync _ARGS((VT *vt));
END_OF_FILE
if test 1403 -ne `wc -c <'Packs/vt/vtimpl.h'`; then
    echo shar: \"'Packs/vt/vtimpl.h'\" unpacked with wrong size!
fi
# end of 'Packs/vt/vtimpl.h'
fi
if test -f 'Packs/vt/vtputs.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Packs/vt/vtputs.c'\"
else
echo shar: Extracting \"'Packs/vt/vtputs.c'\" \(1282 characters\)
sed "s/^X//" >'Packs/vt/vtputs.c' <<'END_OF_FILE'
X/* A simple output function, emulating a "dumb tty" */
X
X#include "vtimpl.h"
X
Xvoid
Xvtputs(vt, text)
X	register VT *vt;
X	register char *text;
X{
X#ifndef NDEBUG
X	if (text == NULL)
X		vtpanic("vtputs with NULL text");
X#endif
X	while (*text != EOS) {
X		if (PRINTABLE(*text)) {
X			register char *end = text;
X			do {
X				text++;
X			} while (PRINTABLE(*text));
X			vtputstring(vt, text, (int) (end-text));
X			text = end;
X		}
X		else switch (*text++) {
X		
X		case BEL:	/* Make some noise */
X			wfleep();
X			break;
X		
X		case BS:	/* Move 1 left */
X			/* Rely on vtsetcursor's clipping */
X			vtsetcursor(vt, vt->cur_row, vt->cur_col - 1);
X			/* Don't erase --
X			   that's part of intelligent echoing */
X			break;
X		
X		case TAB:	/* Move to next tab stop */
X			/* Rely on vtsetcursor's clipping */
X			vtsetcursor(vt, vt->cur_row,
X				(vt->cur_col & ~7) + 8);
X			/* Normalize cursor (may cause scroll!) */
X			vtputstring(vt, "", 0);
X			break;
X		
X		case LF:	/* Move cursor down in same column */
X			vtsetcursor(vt, vt->cur_row + 1, vt->cur_col);
X			/* Normalize cursor (may cause scroll!) */
X			vtputstring(vt, "", 0);
X			break;
X		
X		case FF:	/* Start over */
X			vtreset(vt);
X			break;
X		
X		case CR:	/* Back to col 0 on same line */
X			vtsetcursor(vt, vt->cur_row, 0);
X			break;
X		
X		}
X	}
X	vtsync(vt);
X}
END_OF_FILE
if test 1282 -ne `wc -c <'Packs/vt/vtputs.c'`; then
    echo shar: \"'Packs/vt/vtputs.c'\" unpacked with wrong size!
fi
# end of 'Packs/vt/vtputs.c'
fi
if test -f 'Ports/alfa/measure.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Ports/alfa/measure.c'\"
else
echo shar: Extracting \"'Ports/alfa/measure.c'\" \(743 characters\)
sed "s/^X//" >'Ports/alfa/measure.c' <<'END_OF_FILE'
X/* STANDARD WINDOWS -- TEXT MEASURING. */
X
X#include "alfa.h"
X
Xint
Xwlineheight()
X{
X	return 1;
X}
X
Xint
Xwbaseline()
X{
X	return 1;
X}
X
X#define CHARWIDTH(c) ((c) < ' ' ? 2 : (c) < 0177 ? 1 : (c) < 0200 ? 2 : 4)
X
Xint
Xwtextwidth(str, len)
X	char *str;
X	int len;
X{
X	int i;
X	int w= 0;
X	
X	if (len < 0)
X		len= strlen(str);
X	for (i= 0; i < len; ++i) {
X		unsigned char c= str[i];
X		w += CHARWIDTH(c);
X	}
X	return w;
X}
X
Xint
Xwcharwidth(c)
X	int c;
X{
X	c &= 0xff;
X	return CHARWIDTH(c);
X}
X
Xint
Xwtextbreak(str, len, width)
X	char *str;
X	int len;
X	int width;
X{
X	int i;
X	
X	if (len < 0)
X		len= strlen(str);
X	for (i= 0; i < len && width > 0; ++i) {
X		unsigned char c= str[i];
X		width -= CHARWIDTH(c);
X		if (width < 0)
X			break; /* Before incrementing i! */
X	}
X	return i;
X}
END_OF_FILE
if test 743 -ne `wc -c <'Ports/alfa/measure.c'`; then
    echo shar: \"'Ports/alfa/measure.c'\" unpacked with wrong size!
fi
# end of 'Ports/alfa/measure.c'
fi
if test -f 'Ports/alfa/scroll.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Ports/alfa/scroll.c'\"
else
echo shar: Extracting \"'Ports/alfa/scroll.c'\" \(1199 characters\)
sed "s/^X//" >'Ports/alfa/scroll.c' <<'END_OF_FILE'
X/* Scrolling.
X   This is not meant to scroll the window with respect to the document
X   (that's done with wshow), but to say that a change has occurred
X   in the indicated rectangle for which a full update can be avoided
X   by scrolling its content by (dh, dv).
X   If we can't do such scrolls, we'll call wchange instead. */
X
X#include "alfa.h"
X
X/*ARGSUSED*/
Xvoid
Xwscroll(win, left, top, right, bottom, dh, dv)
X	WINDOW *win;
X	int left, top;
X	int right, bottom;
X	int dh, dv;
X{
X	/* if (dh != 0 || left > 0 || right < columns) {
X		wchange(win, left, top, right, bottom);
X		return;
X	}*/
X	/* Convert to screen coordinates: */
X	top -= win->offset;
X	bottom -= win->offset;
X	/* Clip to window: */
X	if (top < win->top)
X		top= win->top;
X	if (bottom > win->bottom)
X		bottom= win->bottom;
X	/* Do the scroll: */
X	if (top < bottom) {
X		dv= -dv;
X		trmscrollup(top, bottom-1, dv);
X		/* Set the rectangle filled with 'empty' now: */
X		if (dv < 0) {
X			if (top-dv < bottom)
X				bottom= top-dv;
X		}
X		else {
X			if (bottom-dv > top)
X				top= bottom-dv;
X		}
X		/*
X		wchange(win, left, top+win->offset,
X			right, bottom+win->offset);
X		*/
X		wchange(win, left, win->top+win->offset,
X			right, win->bottom+win->offset);
X	}
X}
END_OF_FILE
if test 1199 -ne `wc -c <'Ports/alfa/scroll.c'`; then
    echo shar: \"'Ports/alfa/scroll.c'\" unpacked with wrong size!
fi
# end of 'Ports/alfa/scroll.c'
fi
if test -f 'Ports/mac/argcargv.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Ports/mac/argcargv.c'\"
else
echo shar: Extracting \"'Ports/mac/argcargv.c'\" \(1179 characters\)
sed "s/^X//" >'Ports/mac/argcargv.c' <<'END_OF_FILE'
X/* MAC STDWIN -- GET ARGC/ARGV. */
X
X/* Copy the arguments passed from the finder into argc/argv.
X   Neither MPW nor THINK C does this, making argc/argv pretty
X   useless.  By using winitargs(&argc, &argv) you get the arguments
X   that you expect.  When called to print, a "-p" flag is passed
X   before the first argument.
X*/
X
X#include "macwin.h"
X#ifdef MPW
X#include <SegLoad.h>
X#endif
X#ifdef THINK_C
X#include <SegmentLdr.h>
X#endif
X
Xvoid
Xwargs(pargc, pargv)
X	int *pargc;
X	char ***pargv;
X{
X	L_DECLARE(argc, argv, char *);
X	char apname[256];
X	char buf[256];
X	short aprefnum;
X	Handle apparam;
X	short message;
X	short count;
X	short i;
X	
X	GetAppParms(apname, &aprefnum, &apparam);
X#ifndef CLEVERGLUE
X	PtoCstr(apname);
X#endif
X	L_APPEND(argc, argv, char *, strdup(apname));
X	
X	CountAppFiles(&message, &count);
X	if (message == appPrint) { /* Must have braces around L_*! */
X		L_APPEND(argc, argv, char *, "-p");
X	}
X	
X	for (i = 1; i <= count; ++i) {
X		AppFile thefile;
X		GetAppFiles(i, &thefile);
X		fullpath(buf, thefile.vRefNum,
X			p2cstr((char*)&thefile.fName));
X		L_APPEND(argc, argv, char *, strdup(buf));
X	}
X	
X	L_APPEND(argc, argv, char *, NULL);
X	*pargc = argc - 1;
X	*pargv = argv;
X}
END_OF_FILE
if test 1179 -ne `wc -c <'Ports/mac/argcargv.c'`; then
    echo shar: \"'Ports/mac/argcargv.c'\" unpacked with wrong size!
fi
# end of 'Ports/mac/argcargv.c'
fi
if test -f 'Ports/mac/fullpath.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Ports/mac/fullpath.c'\"
else
echo shar: Extracting \"'Ports/mac/fullpath.c'\" \(1332 characters\)
sed "s/^X//" >'Ports/mac/fullpath.c' <<'END_OF_FILE'
X/* GET FULL PATHNAME OF A FILE. */
X
X#include "macwin.h"
X
X#ifdef MPW
X#include <Files.h>
X#endif
X#ifdef THINK_C
X#include <HFS.h>
X#endif
X
X/* Mac file system parameters */
X#define MAXPATH 256	/* Max path name length+1 */
X#define SEP ':'		/* Separator in path names */
X#define ROOTID 2	/* DirID of a volume's root directory */
X
X/* Macro to find out whether we can do HFS-only calls: */
X#define FSFCBLen (* (short *) 0x3f6)
X#define hfsrunning() (FSFCBLen > 0)
X
Xchar *
Xgetdirname(dir)
X	int dir; /* WDRefNum */
X{
X	union {
X		HFileInfo f;
X		DirInfo d;
X		WDPBRec w;
X		VolumeParam v;
X	} pb;
X	static char cwd[2*MAXPATH];
X	unsigned char namebuf[MAXPATH];
X	short err;
X	long dirid= 0;
X	char *next= cwd + sizeof cwd - 1;
X	int len;
X	
X	if (!hfsrunning())
X		return "";
X	
X	for (;;) {
X		pb.d.ioNamePtr= namebuf;
X		pb.d.ioVRefNum= dir;
X		pb.d.ioFDirIndex= -1;
X		pb.d.ioDrDirID= dirid;
X		err= PBGetCatInfo(&pb.d, FALSE);
X		if (err != noErr) {
X			dprintf("PBCatInfo err %d", err);
X			return NULL;
X		}
X		*--next= SEP;
X		len= namebuf[0];
X		/* XXX There is no overflow check on cwd here! */
X		strncpy(next -= len, (char *)namebuf+1, len);
X		if (pb.d.ioDrDirID == ROOTID)
X			break;
X		dirid= pb.d.ioDrParID;
X	}
X	return next;
X}
X
Xvoid
Xfullpath(buf, wdrefnum, file)
X	char *buf;
X	int wdrefnum;
X	char *file;
X{
X	strcpy(buf, getdirname(wdrefnum));
X	strcat(buf, file);
X}
END_OF_FILE
if test 1332 -ne `wc -c <'Ports/mac/fullpath.c'`; then
    echo shar: \"'Ports/mac/fullpath.c'\" unpacked with wrong size!
fi
# end of 'Ports/mac/fullpath.c'
fi
if test -f 'Ports/mac_mpw/Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Ports/mac_mpw/Makefile'\"
else
echo shar: Extracting \"'Ports/mac_mpw/Makefile'\" \(909 characters\)
sed "s/^X//" >'Ports/mac_mpw/Makefile' <<'END_OF_FILE'
X# Makefile for stdwin, generated under Unix
X
XSOURCES= 6
X	about.c 6
X	argcargv.c 6
X	caret.c 6
X	cursor.c 6
X	dialog.c 6
X	dprintf.c 6
X	draw.c 6
X	event.c 6
X	fullpath.c 6
X	menu.c 6
X	pstring.c 6
X	scrap.c 6
X	scroll.c 6
X	stdwin.c 6
X	strdup.c 6
X	timer.c 6
X	wtextbreak.c 6
X 
X
XHEADERS= 6
X	macwin.h 6
X	menu.h 6
X 
X
XOBJECTS= 6
X	about.c.o 6
X	argcargv.c.o 6
X	caret.c.o 6
X	cursor.c.o 6
X	dialog.c.o 6
X	dprintf.c.o 6
X	draw.c.o 6
X	event.c.o 6
X	fullpath.c.o 6
X	getopt.c.o 6
X	menu.c.o 6
X	pstring.c.o 6
X	scrap.c.o 6
X	scroll.c.o 6
X	set_open_hook.c.o 6
X	stdwin.c.o 6
X	strdup.c.o 6
X	timer.c.o 6
X	wtextbreak.c.o 6
X 
X
XCOptions= -i : -i ::h:
X
Xlib.o D {OBJECTS}
X	Lib -o lib.o -sn Main=STDWIN {OBJECTS}
X
Xclean D {OBJECTS}
X	delete {OBJECTS}
X
XSysLibes= 6
X	{CLibraries}CInterface.o 6
X	{CLibraries}CRuntime.o 6
X	{CLibraries}CSANELib.o 6
X	{CLibraries}StdClib.o
X
Xtest2 D test2.c.o lib.o
X	Link -o test2 -t APPL -c xxxx -p test2.c.o lib.o {SysLibes}
END_OF_FILE
echo shar: 48 control characters may be missing from \"'Ports/mac_mpw/Makefile'\"
if test 909 -ne `wc -c <'Ports/mac_mpw/Makefile'`; then
    echo shar: \"'Ports/mac_mpw/Makefile'\" unpacked with wrong size!
fi
# end of 'Ports/mac_mpw/Makefile'
fi
if test -f 'Ports/mac_mpw/intercept.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Ports/mac_mpw/intercept.h'\"
else
echo shar: Extracting \"'Ports/mac_mpw/intercept.h'\" \(1250 characters\)
sed "s/^X//" >'Ports/mac_mpw/intercept.h' <<'END_OF_FILE'
X/* The structure of the 'device switch' used by the standard I/O library.
X   It is possible to install your own versions of selected routines
X   by storing function pointers into this table.  The structure of
X   the control block for the dev_write function is also given.
X
X   Careful! this information was gathered by disassembling parts
X   of the library.  There are no guarantees that the same code will
X   work in future versions of MPW.
X   Part of it has been tested with versions 1.0B1 and 1.0B2. */
X
Xtypedef int (*funcptr)();	/* Pointer to integer function */
X
Xstruct device {
X	long	dev_name;	/* 'FSYS', 'CONS' or 'SYST' */
X	funcptr	dev_faccess;
X	funcptr dev_close;
X	funcptr dev_read;
X	funcptr dev_write;
X	funcptr dev_ioctl;
X};
X
Xextern struct device _StdDevs[];
X
X#define DEV_FSYS 0
X#define DEV_CONS 1
X#define DEV_SYST 2
X
X/* Control block for dev_write (arg 1 is a pointer to this).
X   You might guess that dev_read is similar. */
X
Xstruct controlblock {
X	long io_filler1;	/* Flags? */
X	long io_filler2;	/* Some pointer */
X	long io_filler3;	/* Zero */
X	long io_nbytes;		/* Number of bytes to write */
X				/* (Reset this to zero after writing) */
X	char *io_data;		/* Start of data buffer */
X};
X
X#define IO_OK 0			/* Return value from dev_write */
END_OF_FILE
if test 1250 -ne `wc -c <'Ports/mac_mpw/intercept.h'`; then
    echo shar: \"'Ports/mac_mpw/intercept.h'\" unpacked with wrong size!
fi
# end of 'Ports/mac_mpw/intercept.h'
fi
if test -f 'Ports/vtrm/vtrm.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Ports/vtrm/vtrm.h'\"
else
echo shar: Extracting \"'Ports/vtrm/vtrm.h'\" \(887 characters\)
sed "s/^X//" >'Ports/vtrm/vtrm.h' <<'END_OF_FILE'
X/*
X * Terminal capabilities.  These correspond to bits set by trmstart in its
X * parameter flags parameter.
X */
X
X#define HAS_STANDOUT	1	/* Terminal has inverse video or underline */
X#define CAN_SCROLL	2	/* Terminal can insert/delete lines */
X#define CAN_OPTIMISE	4	/* Terminal can insert/delete characters */
X#define CAN_SENSE	8	/* Terminal can send cursor position */
X
X/*
X * Error codes returned by trmstart.
X */
X
X#define TE_OK		0	/* No errors */
X#define TE_TWICE	1	/* Trmstart called again */
X#define TE_NOTERM	2	/* $TERM not set or empty */
X#define TE_BADTERM	3	/* $TERM not found in termcap database */
X#define TE_DUMB		4	/* Terminal too dumb */
X#define TE_NOTTY	5	/* Stdout not a tty device */
X#define TE_NOMEM	6	/* Can't get enough memory */
X#define TE_OTHER	7	/* This and higher are reserved errors */
X
X/*
X * Function to explain why trmstart() failed.
X */
X
Xextern char *trmwhy();
END_OF_FILE
if test 887 -ne `wc -c <'Ports/vtrm/vtrm.h'`; then
    echo shar: \"'Ports/vtrm/vtrm.h'\" unpacked with wrong size!
fi
# end of 'Ports/vtrm/vtrm.h'
fi
if test -f 'Ports/x11/caret.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Ports/x11/caret.c'\"
else
echo shar: Extracting \"'Ports/x11/caret.c'\" \(868 characters\)
sed "s/^X//" >'Ports/x11/caret.c' <<'END_OF_FILE'
X/* X11 STDWIN -- caret operations */
X
X#include "x11.h"
X
Xvoid
Xwsetcaret(win, h, v)
X	WINDOW *win;
X	int h, v;
X{
X	_whidecaret(win);
X	if (h < 0 || v < 0)
X		h= v= -1;
X	win->careth= h;
X	win->caretv= v;
X	_wshowcaret(win);
X}
X
Xvoid
Xwnocaret(win)
X	WINDOW *win;
X{
X	_whidecaret(win);
X	win->careth= win->caretv= -1;
X}
X
X_wshowcaret(win)
X	WINDOW *win;
X{
X	if (!win->caretshown && win->careth >= 0 && win->caretv >= 0) {
X		wbegindrawing(win);
X		_winvertcaret(win);
X		wenddrawing(win);
X		win->caretshown= TRUE;
X	}
X}
X
X_whidecaret(win)
X	WINDOW *win;
X{
X	if (win->caretshown) {
X		win->caretshown= FALSE;
X		wbegindrawing(win);
X		_winvertcaret(win);
X		wenddrawing(win);
X	}
X}
X
X_winvertcaret(win)
X	WINDOW *win;
X{
X	/* Call this between w{begin,end}drawing only! */
X	
X	int left= win->careth, top= win->caretv;
X	int right= left+1, bottom= top + wlineheight();
X	winvert(left, top, right, bottom);
X}
END_OF_FILE
if test 868 -ne `wc -c <'Ports/x11/caret.c'`; then
    echo shar: \"'Ports/x11/caret.c'\" unpacked with wrong size!
fi
# end of 'Ports/x11/caret.c'
fi
if test -f 'Ports/x11/cutbuffer.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Ports/x11/cutbuffer.c'\"
else
echo shar: Extracting \"'Ports/x11/cutbuffer.c'\" \(867 characters\)
sed "s/^X//" >'Ports/x11/cutbuffer.c' <<'END_OF_FILE'
X/* Cut Buffer Interface */
X
X#include "x11.h"
X
Xvoid
Xwsetcutbuffer(ibuffer, data, len)
X	int ibuffer;
X	char *data;
X	int len;
X{
X	XStoreBuffer(_wd, data, len, ibuffer);
X}
X
Xchar *
Xwgetcutbuffer(ibuffer, len_return)
X	int ibuffer;
X	int *len_return;
X{
X	static char *lastdata;
X	if (lastdata != NULL)
X		free(lastdata);
X	lastdata= XFetchBuffer(_wd, len_return, ibuffer);
X	if (lastdata != NULL) {
X		lastdata= realloc(lastdata, *len_return+1);
X		if (lastdata != NULL)
X			lastdata[*len_return] = EOS;
X	}
X	return lastdata;
X}
X
Xvoid
Xwrotatecutbuffers(n)
X	int n;
X{
X	static int been_here;
X	if (!been_here) {
X		/* XRotateBuffers fails if not all 8 buffers have been
X		   stored into.  Make sure they are all defined. */
X		int i;
X		for (i = 0; i < 8; i++) {
X			int len;
X			if (wgetcutbuffer(i, &len) == NULL)
X				wsetcutbuffer(i, "", 0);
X		}
X		been_here = 1;
X	}
X	XRotateBuffers(_wd, n);
X}
END_OF_FILE
if test 867 -ne `wc -c <'Ports/x11/cutbuffer.c'`; then
    echo shar: \"'Ports/x11/cutbuffer.c'\" unpacked with wrong size!
fi
# end of 'Ports/x11/cutbuffer.c'
fi
if test -f 'Ports/x11/llevent.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Ports/x11/llevent.h'\"
else
echo shar: Extracting \"'Ports/x11/llevent.h'\" \(745 characters\)
sed "s/^X//" >'Ports/x11/llevent.h' <<'END_OF_FILE'
X/* X11 STDWIN -- Variables set by low-level event handling */
X
Xextern WINDOW *_w_new_active;	/* New active window */
Xextern struct button_state _w_bs; /* Mouse button state */
Xextern KeySym _w_keysym;	/* Keysym of last non-modifier key pressed */
Xextern int _w_state;		/* Modifiers in effect at key press */
X
Xextern bool _w_moved;		/* Set if button moved */
Xextern bool _w_bs_changed;	/* Set if button up/down state changed */
Xextern bool _w_dirty;		/* Set if any window needs a redraw */
Xextern bool _w_resized;		/* Set if any window resized */
Xextern Time _w_lasttime;	/* Set to last timestamp seen */
Xextern bool _w_focused;		/* Set between FocusIn and FocsOut events */
Xextern WINDOW *_w_close_this;	/* Window to close (WM_DELETE_WINDOW) */
END_OF_FILE
if test 745 -ne `wc -c <'Ports/x11/llevent.h'`; then
    echo shar: \"'Ports/x11/llevent.h'\" unpacked with wrong size!
fi
# end of 'Ports/x11/llevent.h'
fi
if test -f 'Tools/strdup.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Tools/strdup.c'\"
else
echo shar: Extracting \"'Tools/strdup.c'\" \(196 characters\)
sed "s/^X//" >'Tools/strdup.c' <<'END_OF_FILE'
X#include "tools.h"
X
Xchar *
Xstrdup(str)
X	const char *str;
X{
X	if (str != NULL) {
X		register char *copy = malloc(strlen(str) + 1);
X		if (copy != NULL)
X			return strcpy(copy, str);
X	}
X	return NULL;
X}
END_OF_FILE
if test 196 -ne `wc -c <'Tools/strdup.c'`; then
    echo shar: \"'Tools/strdup.c'\" unpacked with wrong size!
fi
# end of 'Tools/strdup.c'
fi
echo shar: End of archive 18 \(of 19\).
cp /dev/null ark18isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 19 archives.
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0