[comp.sources.misc] v08i062: Elk

allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc) (09/24/89)

Posting-number: Volume 8, Issue 62
Submitted-by: net@tub.UUCP (Oliver Laumann)
Archive-name: elk/part14

[Let this be a lesson to submitters:  this was submitted as uuencoded,
compressed files.  I lost the source information while unpacking it; this
is the best approximation I could come up with.  ++bsa]

#! /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 14 (of 14)."
# Contents:  lib/util/symbol.c lib/util/Makefile lib/util/string.h
#   lib/util/objects.c lib/Makefile lib/chdir.c lib/when.c lib/debug.c
#   lib/hunk.c lib/string.c lib/struct.c lib/hack.c lib/monitor.c
#   lib/README.mon lib/c++.c lib/unix.c lib/xhp/Makefile
#   lib/xhp/arrow.d lib/xhp/bboard.d lib/xhp/toggle.d
#   lib/xhp/menusep.d lib/xhp/form.d lib/xhp/sash.d lib/xhp/cascade.d
#   lib/xhp/pbutton.d lib/xhp/list.d lib/xhp/menubutton.d
#   lib/xhp/vpw.d lib/xhp/popupmgr.d lib/xhp/valuator.d
#   lib/xhp/rowcol.d lib/xhp/scroll.d lib/xhp/stext.d
#   lib/xhp/textedit.d stk stk/Makefile stk/test1.c stk/test2.c
# Wrapped by net@tub on Sun Sep 17 17:32:44 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f lib/util/symbol.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/util/symbol.c\"
else
echo shar: Extracting \"lib/util/symbol.c\" \(1267 characters\)
sed "s/^X//" >lib/util/symbol.c <<'END_OF_lib/util/symbol.c'
X#include <scheme.h>
X#include "symbol.h"
X
Xunsigned long Symbols_To_Bits (x, mflag, stab) Object x; SYMDESCR *stab; {
X    register SYMDESCR *syms;
X    register unsigned long mask = 0;
X    Object l, s;
X    register char *p;
X    register n;
X
X    for (l = x; !Nullp (l); l = Cdr (l)) {
X	if (mflag) {
X	    Check_Type (l, T_Pair);
X	    x = Car (l);
X	}
X	Check_Type (x, T_Symbol);
X	s = SYMBOL(x)->name;
X	p = STRING(s)->data;
X	n = STRING(s)->size;
X	for (syms = stab; syms->name; syms++)
X	    if (n && strncmp (syms->name, p, n) == 0) break;
X	if (syms->name == 0)
X	    Primitive_Error ("invalid argument: ~s", x);
X	mask |= syms->val;
X	if (!mflag) break;
X    }
X    return mask;
X}
X
XObject Bits_To_Symbols (x, mflag, stab) unsigned long x; SYMDESCR *stab; {
X    register SYMDESCR *syms;
X    Object list, tail, cell;
X    GC_Node2;
X
X    if (mflag) {
X	GC_Link2 (list, tail);
X	for (list = tail = Null, syms = stab; syms->name; syms++)
X	    if ((x & syms->val) && syms->val != ~0) {
X		Object z = Intern (syms->name);
X		cell = Cons (z, Null);
X		if (Nullp (list))
X		    list = cell;
X		else
X		    P_Setcdr (tail, cell);
X		tail = cell;
X	    }
X	GC_Unlink;
X	return list;
X    }
X    for (syms = stab; syms->name; syms++)
X	if (syms->val == x)
X	    return Intern (syms->name);
X    return Null;
X}
END_OF_lib/util/symbol.c
if test 1267 -ne `wc -c <lib/util/symbol.c`; then
    echo shar: \"lib/util/symbol.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/util/Makefile -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/util/Makefile\"
else
echo shar: Extracting \"lib/util/Makefile\" \(283 characters\)
sed "s/^X//" >lib/util/Makefile <<'END_OF_lib/util/Makefile'
XH=	../../src/config.h\
X	../../src/object.h\
X	../../src/extern.h\
X	../../src/macros.h
X
XC=	objects.c\
X	symbol.c
X
XO=	objects.o\
X	symbol.o
X
Xall:	$(O)
X
Xobjects.o:	$(H) objects.h
Xsymbol.o:	$(H) symbol.h
X
Xlint:
X	lint $(LINTFLAGS) -abxh $(C) | egrep -v '\?\?\?'
Xclean:
X	rm -f *.o core a.out
END_OF_lib/util/Makefile
if test 283 -ne `wc -c <lib/util/Makefile`; then
    echo shar: \"lib/util/Makefile\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/util/string.h -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/util/string.h\"
else
echo shar: Extracting \"lib/util/string.h\" \(328 characters\)
sed "s/^X//" >lib/util/string.h <<'END_OF_lib/util/string.h'
X#define Make_C_String(from,to) {\
X    register _n_;\
X    if (TYPE(from) == T_Symbol)\
X	from = SYMBOL(from)->name;\
X    else if (TYPE(from) != T_String)\
X	Wrong_Type_Combination (from, "string or symbol");\
X    _n_ = STRING(from)->size;\
X    to = alloca (_n_+1);\
X    bcopy (STRING(from)->data, to, _n_);\
X    to[_n_] = '\0';\
X}
END_OF_lib/util/string.h
if test 328 -ne `wc -c <lib/util/string.h`; then
    echo shar: \"lib/util/string.h\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/util/objects.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/util/objects.c\"
else
echo shar: Extracting \"lib/util/objects.c\" \(3536 characters\)
sed "s/^X//" >lib/util/objects.c <<'END_OF_lib/util/objects.c'
X#include <varargs.h>
X#include <scheme.h>
X#include "objects.h"
X
X#define INIT_SIZE	50
X#define SIZE_INCR	20
X
Xtypedef struct {
X    GENERIC group;
X    Object obj;
X    PFO term;
X    char flags;
X} OBJECT;
Xstatic OBJECT *Pool;
Xstatic pool_size = INIT_SIZE;
X
X#define USED    0x1   /* flags */
X#define LEADER  0x2
X#define MARK    0x4
X
Xextern char *malloc(), *realloc();
X
X/* Register an object with the given group and termination function;
X * object can be marked as LEADER.
X */
XRegister_Object (obj, group, term, leader_flag) Object obj; GENERIC group;
X	PFO term; {
X    register OBJECT *p;
X
X    for (p = Pool; p < Pool+pool_size; p++)
X	if (!(p->flags & USED)) break;
X    if (p == Pool+pool_size) {
X	pool_size += SIZE_INCR;
X	if ((Pool = (OBJECT *)realloc ((char *)Pool,
X		pool_size * sizeof (OBJECT))) == 0)
X	    Fatal_Error ("realloc: out of memory");
X	p = Pool + pool_size - SIZE_INCR;
X	Clear_Pool (p, SIZE_INCR);
X    }
X    p->obj = obj;
X    p->group = group;
X    p->term = term;
X    p->flags = leader_flag ? (USED|LEADER) : USED;
X}
X
XDeregister_Object (obj) Object obj; {
X    register OBJECT *p;
X
X    for (p = Pool; p < Pool+pool_size; p++)
X	if ((p->flags & USED) && EQ(p->obj, obj))
X	    p->flags = 0;
X}
X
X/* Search for an object of a given type and group.
X * Use the given match function; it is called with an object and
X * the remaining arguments of Find_Object() (a va_list).
X * Null is returned when the object has not been found.
X */
X/*VARARGS*/
XObject Find_Object (va_alist) va_dcl {
X    register OBJECT *p;
X    register type;
X    register GENERIC group;
X    PFO match;
X    va_list args;
X
X    va_start (args);
X    type = va_arg (args, int);
X    group = va_arg (args, GENERIC);
X    match = va_arg (args, PFO);
X    for (p = Pool; p < Pool+pool_size; p++) {
X	if (!(p->flags & USED) || TYPE(p->obj) != type || p->group != group)
X	    continue;
X	if (match (p->obj, args)) {
X	    va_end (args);
X	    return p->obj;
X	}
X    }
X    va_end (args);
X    return Null;
X}
X
X/* Terminate all objects belonging to the given group except LEADERs.
X */
XTerminate_Group (group) GENERIC group; {
X    register OBJECT *p;
X
X    for (p = Pool; p < Pool+pool_size; p++)
X	if ((p->flags & USED) && p->group == group && !(p->flags & LEADER)) {
X	    if (p->term)
X		(void)p->term (p->obj);
X	    p->flags = 0;
X	}
X}
X
X/* The after-GC function.  LEADERs are terminated in a second pass.
X */
Xstatic void Terminate_Objects () {
X    register OBJECT *p;
X    register Object *tag;
X
X    for (p = Pool; p < Pool+pool_size; p++) {
X	if (!(p->flags & USED))
X	    continue;
X	tag = (Object *)POINTER(p->obj);
X	if (TYPE(*tag) == T_Broken_Heart) {
X	    SETPOINTER(p->obj, POINTER(*tag));
X	} else if (p->flags & LEADER) {
X	    p->flags |= MARK;
X	} else {
X	    if (p->term)
X		(void)p->term (p->obj);
X	    p->flags = 0;
X	}
X    }
X    for (p = Pool; p < Pool+pool_size; p++) {
X	if (p->flags & MARK) {
X	    if (p->term)
X		(void)p->term (p->obj);
X	    p->flags = 0;
X	}
X    }
X}
X
X/* Compute a unique integer from an object.
X * -1 is returned if the object is not in the pool.
X */
XUnique_Id (obj) Object obj; {
X    register OBJECT *p;
X
X    for (p = Pool; p < Pool+pool_size; p++)
X	if ((p->flags & USED) && EQ(p->obj, obj))
X	    return Make_Fixnum (p-Pool);
X    return -1;
X}
X
Xstatic Clear_Pool (p, n) register OBJECT *p; register n; {
X    for ( ; n > 0; n--, p++)
X	p->flags = 0;
X}
X
Xinit_util_objects () {
X    if ((Pool = (OBJECT *)malloc (INIT_SIZE *
X	    (sizeof (OBJECT)))) == 0)
X	Fatal_Error ("malloc: out of memory");
X    Clear_Pool (Pool, INIT_SIZE);
X    Register_After_GC (Terminate_Objects);
X}
END_OF_lib/util/objects.c
if test 3536 -ne `wc -c <lib/util/objects.c`; then
    echo shar: \"lib/util/objects.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/Makefile -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/Makefile\"
else
echo shar: Extracting \"lib/Makefile\" \(516 characters\)
sed "s/^X//" >lib/Makefile <<'END_OF_lib/Makefile'
XH=	../src/config.h\
X	../src/object.h\
X	../src/extern.h\
X	../src/macros.h\
X	util/string.h
X
XC=	string.c\
X	when.c\
X	chdir.c\
X	hunk.c\
X	monitor.c\
X	struct.c\
X	hack.c\
X	debug.c\
X	unix.c\
X	c++.c
X
XO=	string.o\
X	when.o\
X	chdir.o\
X	hunk.o\
X	monitor.o\
X	struct.o\
X	hack.o\
X	debug.o\
X	unix.o\
X	c++.o
X
Xall:		$(O)
X
Xstring.o:	$(H)
Xwhen.o:		$(H)
Xchdir.o:	$(H)
Xhunk.o:		$(H)
Xstruct.o:	$(H)
Xhack.o:		$(H)
Xdebug.o:	$(H)
Xunix.o:		$(H)
Xc++.o:		$(H)
X
Xlint:
X	lint $(LINTFLAGS) -abxh $(C) | egrep -v '\?\?\?'
X
Xclean:
X	rm -f *.o core a.out
END_OF_lib/Makefile
if test 516 -ne `wc -c <lib/Makefile`; then
    echo shar: \"lib/Makefile\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/chdir.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/chdir.c\"
else
echo shar: Extracting \"lib/chdir.c\" \(678 characters\)
sed "s/^X//" >lib/chdir.c <<'END_OF_lib/chdir.c'
X#include <scheme.h>
X
Xextern char *getenv(), *alloca();
XObject V_Home;
X
Xstatic Object P_Chdir (argc, argv) Object *argv; {
X    Object dir;
X    register n;
X    register char *s;
X
X    dir = argc == 0 ? Val (V_Home) : argv[0];
X    Check_Type (dir, T_String);
X    n = STRING(dir)->size;
X    s = alloca (n+1);
X    bcopy (STRING(dir)->data, s, n);
X    s[n] = '\0';
X    if (chdir (s) < 0) {
X	Saved_Errno = errno;
X	Primitive_Error ("~s: ~E", dir);
X    }
X    return Void;
X}
X
Xinit_lib_chdir () {
X    register char *p = getenv ("HOME");
X
X    if (p == 0)
X	p = ".";
X    Define_Variable (&V_Home, "home", Make_String (p, strlen (p)));
X    Define_Primitive (P_Chdir, "chdir", 0, 1, VARARGS);
X}
END_OF_lib/chdir.c
if test 678 -ne `wc -c <lib/chdir.c`; then
    echo shar: \"lib/chdir.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/when.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/when.c\"
else
echo shar: Extracting \"lib/when.c\" \(380 characters\)
sed "s/^X//" >lib/when.c <<'END_OF_lib/when.c'
X#include <scheme.h>
X
X/* (when condition form1 form2 ...)
X */
Xstatic Object P_When (argl) Object argl; {
X    Object cond;
X    GC_Node;
X    TC_Prolog;
X
X    GC_Link (argl);
X    TC_Disable;
X    cond = Eval (Car (argl));
X    TC_Enable;
X    GC_Unlink;
X    return Truep (cond) ? Begin (Cdr (argl)) : False;
X}
X
Xinit_lib_when () {
X    Define_Primitive (P_When, "when", 2, MANY, NOEVAL);
X}
END_OF_lib/when.c
if test 380 -ne `wc -c <lib/when.c`; then
    echo shar: \"lib/when.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/debug.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/debug.c\"
else
echo shar: Extracting \"lib/debug.c\" \(217 characters\)
sed "s/^X//" >lib/debug.c <<'END_OF_lib/debug.c'
X#include <scheme.h>
X
Xstatic Object P_Debug (on) Object on; {
X    Check_Type (on, T_Boolean);
X    GC_Debug = EQ(on, True);
X    return Void;
X}
X
Xinit_lib_debug () {
X    Define_Primitive (P_Debug, "debug", 1, 1, EVAL);
X}
END_OF_lib/debug.c
if test 217 -ne `wc -c <lib/debug.c`; then
    echo shar: \"lib/debug.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/hunk.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/hunk.c\"
else
echo shar: Extracting \"lib/hunk.c\" \(2073 characters\)
sed "s/^X//" >lib/hunk.c <<'END_OF_lib/hunk.c'
X#include <scheme.h>
X
X#define T_Hunk3  (T_Last+1)
X
X#define HUNK3(x)  ((struct S_Hunk3 *)POINTER(x))
X
Xstruct S_Hunk3 {
X    Object first, second, third;
X};
X
Xstatic Object P_Hunk3_Cons (a, b, c) Object a, b, c; {
X    register char *p;
X    Object h;
X    GC_Node3;
X
X    GC_Link3 (a, b, c);
X    p = Get_Bytes (sizeof (struct S_Hunk3));
X    SET(h, T_Hunk3, (struct S_Hunk3 *)p);
X    HUNK3(h)->first = a; HUNK3(h)->second = b; HUNK3(h)->third = c;
X    GC_Unlink;
X    return h;
X}
X
Xstatic Object P_Hunk3p (x) Object x; {
X    return TYPE(x) == T_Hunk3 ? True : False;
X}
X
Xstatic Object P_Hunk3_Cxr (h, n) Object h, n; {
X    Check_Type (h, T_Hunk3);
X    switch (Get_Integer (n)) {
X    case 0: return HUNK3(h)->first;
X    case 1: return HUNK3(h)->second;
X    case 2: return HUNK3(h)->third;
X    default: Range_Error (n);
X    }
X}
X
Xstatic Object P_Hunk3_Set_Cxr (h, n, val) Object h, n, val; {
X    Check_Type (h, T_Hunk3);
X    switch (Get_Integer (n)) {
X    case 0: HUNK3(h)->first  = val; break;
X    case 1: HUNK3(h)->second = val; break;
X    case 2: HUNK3(h)->third  = val; break;
X    default: Range_Error (n);
X    }
X    return h;
X}
X
Xstatic Hunk3_Eqv (a, b) Object a, b; { return EQ(a,b); }
X
Xstatic Hunk3_Equal (a, b) Object a, b; {
X    return Equal (HUNK3(a)->first,  HUNK3(b)->first)  &&
X           Equal (HUNK3(a)->second, HUNK3(b)->second) &&
X           Equal (HUNK3(a)->third,  HUNK3(b)->third);
X}
X
Xstatic Hunk3_Print (h, port, raw, depth, length) Object h, port; {
X    Printf (port, "#[hunk3 %u]", POINTER(h));
X}
X
Xstatic Hunk3_Visit (hp, f) Object *hp; int (*f)(); {
X    (*f)(&HUNK3(*hp)->first);
X    (*f)(&HUNK3(*hp)->second);
X    (*f)(&HUNK3(*hp)->third);
X}
X
Xinit_lib_hunk () {
X    Define_Type (T_Hunk3, "hunk3", NOFUNC, sizeof (struct S_Hunk3),
X	Hunk3_Eqv, Hunk3_Equal, Hunk3_Print, Hunk3_Visit);
X    Define_Primitive (P_Hunk3_Cons,    "hunk3-cons",     3, 3, EVAL);
X    Define_Primitive (P_Hunk3p,        "hunk3?",         1, 1, EVAL);
X    Define_Primitive (P_Hunk3_Cxr,     "hunk3-cxr",      2, 2, EVAL);
X    Define_Primitive (P_Hunk3_Set_Cxr, "hunk3-set-cxr!", 3, 3, EVAL);
X}
END_OF_lib/hunk.c
if test 2073 -ne `wc -c <lib/hunk.c`; then
    echo shar: \"lib/hunk.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/string.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/string.c\"
else
echo shar: Extracting \"lib/string.c\" \(345 characters\)
sed "s/^X//" >lib/string.c <<'END_OF_lib/string.c'
X#include <scheme.h>
X
Xstatic Object P_String_Reverse (str) Object str; {
X    register char c, *s, *t;
X
X    Check_Type (str, T_String);
X    for (s = STRING(str)->data, t = s+STRING(str)->size; --t > s; s++)
X	c = *s, *s = *t, *t = c;
X    return str;
X}
X
Xinit_lib_string () {
X    Define_Primitive (P_String_Reverse, "string-reverse!", 1, 1, EVAL);
X}
END_OF_lib/string.c
if test 345 -ne `wc -c <lib/string.c`; then
    echo shar: \"lib/string.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/struct.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/struct.c\"
else
echo shar: Extracting \"lib/struct.c\" \(3257 characters\)
sed "s/^X//" >lib/struct.c <<'END_OF_lib/struct.c'
X#include <scheme.h>
X
X#define STRUCT(x)  ((struct S_Struct *)POINTER(x))
X
Xstruct S_Struct {
X    Object name;
X    Object slots;
X    Object values;
X};
X
Xint T_Struct;
X
Xstatic Object P_Structurep (x) Object x; {
X    return TYPE(x) == T_Struct ? True : False;
X}
X
Xstatic Object P_Structure_Name (x) Object x; {
X    Check_Type (x, T_Struct);
X    return STRUCT(x)->name;
X}
X
Xstatic Object P_Structure_Slots (x) Object x; {
X    Check_Type (x, T_Struct);
X    return P_Vector_To_List (STRUCT(x)->slots);
X}
X
Xstatic Object P_Structure_Values (x) Object x; {
X    Check_Type (x, T_Struct);
X    return P_Vector_To_List (STRUCT(x)->values);
X}
X
Xstatic Check_Structure_Type (x, t) Object x, t; {
X    Check_Type (x, T_Struct);
X    Check_Type (t, T_Symbol);
X    if (!EQ(STRUCT(x)->name, t))
X	Primitive_Error ("wrong structure type ~s (expected ~s)",
X	    STRUCT(x)->name, t);
X}
X
Xstatic Object P_Structure_Ref (x, t, n) Object x, t, n; {
X    Check_Structure_Type (x, t);
X    return P_Vector_Ref (STRUCT(x)->values, n);
X}
X
Xstatic Object P_Structure_Set (x, t, n, obj) Object x, t, n, obj; {
X    Check_Structure_Type (x, t);
X    return P_Vector_Set (STRUCT(x)->values, n, obj);
X}
X
Xstatic Object P_Make_Structure (name, slots) Object name, slots; {
X    register char *p;
X    register n;
X    Object s, vec, *vp;
X    GC_Node3;
X
X    Check_Type (name, T_Symbol);
X    Check_List (slots);
X    s = Null;
X    GC_Link3 (s, name, slots);
X    p = Get_Bytes (sizeof (struct S_Struct));
X    SET(s, T_Struct, (struct S_Struct *)p);
X    STRUCT(s)->name = name;
X    n = Internal_Length (slots);
X    vec = Make_Vector (n, Null);
X    STRUCT(s)->values = vec;
X    vec = Make_Vector (n, Null);
X    STRUCT(s)->slots = vec;
X    GC_Unlink;
X    for (vp = VECTOR(vec)->data; n--; slots = Cdr (slots)) {
X	Check_Type (Car (slots), T_Symbol);
X	*vp++ = Car (slots);
X    }
X    return s;
X}
X
Xstatic Structure_Eqv (a, b) Object a, b; { return EQ(a,b); }
X
Xstatic Structure_Equal (a, b) Object a, b; {
X    return EQ(STRUCT(a)->name,STRUCT(b)->name) &&
X	   Equal (STRUCT(a)->slots, STRUCT(b)->slots) &&
X	   Equal (STRUCT(a)->values, STRUCT(b)->values);
X}
X
Xstatic Structure_Print (x, port, raw, depth, length) Object x, port; {
X    GC_Node2;
X
X    GC_Link2 (port, x);
X    Printf (port, "#[");
X    Print_Object (STRUCT(x)->name, port, raw, depth, length);
X    Printf (port, "-structure %u]", POINTER(x));
X    GC_Unlink;
X}
X
Xstatic Structure_Visit (sp, f) register Object *sp; register (*f)(); {
X    (*f)(&STRUCT(*sp)->name);
X    (*f)(&STRUCT(*sp)->slots);
X    (*f)(&STRUCT(*sp)->values);
X}
X
Xinit_lib_struct () {
X    T_Struct = Define_Type (0, "structure", NOFUNC, sizeof (struct S_Struct),
X	Structure_Eqv, Structure_Equal, Structure_Print, Structure_Visit);
X    Define_Primitive (P_Structurep,       "structure?",       1, 1, EVAL);
X    Define_Primitive (P_Structure_Name,   "structure-name",   1, 1, EVAL);
X    Define_Primitive (P_Structure_Slots,  "structure-slots",  1, 1, EVAL);
X    Define_Primitive (P_Structure_Values, "structure-values", 1, 1, EVAL);
X    Define_Primitive (P_Structure_Ref,    "structure-ref",    3, 3, EVAL);
X    Define_Primitive (P_Structure_Set,    "structure-set!",   4, 4, EVAL);
X    Define_Primitive (P_Make_Structure,   "make-structure",   2, 2, EVAL);
X    P_Provide (Intern ("structures"));
X}
END_OF_lib/struct.c
if test 3257 -ne `wc -c <lib/struct.c`; then
    echo shar: \"lib/struct.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/hack.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/hack.c\"
else
echo shar: Extracting \"lib/hack.c\" \(347 characters\)
sed "s/^X//" >lib/hack.c <<'END_OF_lib/hack.c'
X#include <scheme.h>
X
Xstatic Object P_Hack_Procedure_Environment (p, e) Object p, e; {
X    Check_Type (p, T_Compound);
X    Check_Type (e, T_Environment);
X    COMPOUND(p)->env = e;
X    return p;
X}
X
Xinit_lib_hack () {
X    Define_Primitive (P_Hack_Procedure_Environment,
X	"hack-procedure-environment!", 2, 2, EVAL);
X    P_Provide (Intern ("hack"));
X}
END_OF_lib/hack.c
if test 347 -ne `wc -c <lib/hack.c`; then
    echo shar: \"lib/hack.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/monitor.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/monitor.c\"
else
echo shar: Extracting \"lib/monitor.c\" \(433 characters\)
sed "s/^X//" >lib/monitor.c <<'END_OF_lib/monitor.c'
X#include <scheme.h>
X
X#define MONSTART 2
X
Xstatic monitoring;
X
Xstatic Object P_Monitor (on) Object on; {
X    char *brk;
X
X    Check_Type (on, T_Boolean);
X    if (Truep (on)) {
X	if (!monitoring) {
X	    brk = sbrk (0);
X	    monstartup (MONSTART, (int (*)())brk);
X	    monitoring = 1;
X	}
X    } else {
X	monitor (0);
X	monitoring = 0;
X    }
X    return Void;
X}
X
Xinit_lib_monitor () {
X    Define_Primitive (P_Monitor, "monitor", 1, 1, EVAL);
X}
END_OF_lib/monitor.c
if test 433 -ne `wc -c <lib/monitor.c`; then
    echo shar: \"lib/monitor.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/README.mon -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/README.mon\"
else
echo shar: Extracting \"lib/README.mon\" \(322 characters\)
sed "s/^X//" >lib/README.mon <<'END_OF_lib/README.mon'
XBSD:
X     1) ar x /lib/libc.a mon.o
X     2) In the symboltable of mon.o replace mcount by Mcount
X	and _moncontrol by _Moncontrol (using emacs).
X
XSun:
X     1) cp /lib/mcrt0.o mon.o
X     2) In the symboltable of mon.o replace start by Start
X	and _environ by _Environ.
X
X3) ld -r mon.o monitor.o; mv a.out monitor.o; rm mon.o
END_OF_lib/README.mon
if test 322 -ne `wc -c <lib/README.mon`; then
    echo shar: \"lib/README.mon\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/c++.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/c++.c\"
else
echo shar: Extracting \"lib/c++.c\" \(483 characters\)
sed "s/^X//" >lib/c++.c <<'END_OF_lib/c++.c'
X#include <scheme.h>
X
Xstatic Object New_Handler;
X
Xstatic void New_Handler_Proc () {
X    (void)Funcall (New_Handler, Null, 0);
X}
X
Xstatic Object P_Set_New_Handler (p) Object p; {
X    Object old;
X
X    Check_Procedure (p);
X    old = New_Handler;
X    New_Handler = p;
X    return old;
X}
X
Xinit_lib_cplusplus () {
X    New_Handler = Null;
X    Global_GC_Link (New_Handler);
X    set_new_handler (New_Handler_Proc);
X    Define_Primitive (P_Set_New_Handler, "set-c++-new-handler!", 1, 1, EVAL);
X}
END_OF_lib/c++.c
if test 483 -ne `wc -c <lib/c++.c`; then
    echo shar: \"lib/c++.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/unix.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/unix.c\"
else
echo shar: Extracting \"lib/unix.c\" \(2889 characters\)
sed "s/^X//" >lib/unix.c <<'END_OF_lib/unix.c'
X#include <sys/types.h>
X#include <sys/stat.h>
X#include <errno.h>
X#include <signal.h>
X
X#include <scheme.h>
X#include "util/string.h"
X
X#ifdef DIRENT
X#  include <dirent.h>
X#else
X#  include <sys/dir.h>
X#endif
X
Xextern char *getenv();
X
Xstatic Object P_Read_Directory (name) Object name; {
X    register char *s;
X    register DIR *d;
X#ifdef DIRENT
X    register struct dirent *dp;
X#else
X    register struct direct *dp;
X#endif
X    Object ret;
X    GC_Node;
X
X    ret = Null;
X    GC_Link (ret);
X    Make_C_String (name, s);
X    Disable_Interrupts;
X    if ((d = opendir (s)) == NULL)
X	Primitive_Error ("cannot open directory ~s", name);
X    while ((dp = readdir (d)) != NULL) {
X	Object x = Make_String (dp->d_name, strlen (dp->d_name));
X	ret = Cons (x, ret);
X    }
X    closedir (d);
X    Enable_Interrupts;
X    GC_Unlink;
X    return ret;
X}
X
Xstatic Object P_File_Status (name) Object name; {
X    register char *s;
X    struct stat st;
X
X    Make_C_String (name, s);
X    if (stat (s, &st) == -1) {
X	switch (errno) {
X	case ENOTDIR:
X	case EINVAL:
X	case ENOENT:
X	case EACCES:
X#ifdef ENAMETOOLONG
X	case ENAMETOOLONG:
X#endif
X#ifdef ELOOP
X	case ELOOP:
X#endif
X	    s = "non-existent"; break;
X	default:
X	    Saved_Errno = errno;
X	    Primitive_Error ("cannot stat ~s: ~E", name);
X	}
X    } else {
X	switch (st.st_mode & S_IFMT) {
X	case S_IFDIR: s = "directory"; break;
X	case S_IFCHR: s = "character-special"; break;
X	case S_IFBLK: s = "block-special"; break;
X	case S_IFREG: s = "regular"; break;
X#ifdef S_IFSOCK
X	case S_IFSOCK: s = "socket"; break;
X#endif
X#ifdef S_IFFIFO
X	case S_IFFIFO: s = "fifo"; break;
X#endif
X	default: s = "unknown"; break;
X	}
X    }
X    return Intern (s);
X}
X
Xstatic Object P_System (cmd) Object cmd; {
X    register char *s;
X    register i, n, pid;
X    int status;
X
X    Make_C_String (cmd, s);
X#ifdef VFORK
X    switch (pid = vfork ()) {
X#else
X    switch (pid = fork ()) {
X#endif
X    case -1:
X	Saved_Errno = errno;
X	Primitive_Error ("cannot fork: ~E");
X    case 0:
X#ifdef MAX_OFILES
X	n = MAX_OFILES;
X#else
X	n = getdtablesize ();
X#endif
X	for (i = 3; i < n; i++)
X	    (void)close (i);
X	execl ("/bin/sh", "sh", "-c", s, (char *)0);
X	_exit (127);
X    default:
X	Disable_Interrupts;
X	while ((i = wait (&status)) != pid && i != -1)
X		;
X	Enable_Interrupts;
X    }
X    if (i == -1)
X	return False;
X    if (n = (status & 0377))
X	return Cons (Make_Fixnum (n), Null);
X    return Make_Fixnum ((status >> 8) & 0377);
X}
X
Xstatic Object P_Getenv (e) Object e; {
X    register char *s;
X
X    Make_C_String (e, s);
X    return (s = getenv (s)) ? Make_String (s, strlen (s)) : False;
X}
X
Xinit_lib_unix () {
X    Define_Primitive (P_Read_Directory, "read-directory", 1, 1, EVAL);
X    Define_Primitive (P_File_Status,    "file-status",    1, 1, EVAL);
X    Define_Primitive (P_System,         "system",         1, 1, EVAL);
X    Define_Primitive (P_Getenv,         "getenv",         1, 1, EVAL);
X    P_Provide (Intern ("unix"));
X}
END_OF_lib/unix.c
if test 2889 -ne `wc -c <lib/unix.c`; then
    echo shar: \"lib/unix.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/xhp/Makefile -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/xhp/Makefile\"
else
echo shar: Extracting \"lib/xhp/Makefile\" \(509 characters\)
sed "s/^X//" >lib/xhp/Makefile <<'END_OF_lib/xhp/Makefile'
XWIDGET_SET= xhp
X
XO= arrow.o\
X   bboard.o\
X   cascade.o\
X   form.o\
X   list.o\
X   menubutton.o\
X   menusep.o\
X   pbutton.o\
X   popupmgr.o\
X   rowcol.o\
X   sash.o\
X   scroll.o\
X   stext.o\
X   textedit.o\
X   toggle.o\
X   valuator.o\
X   vpw.o
X
X.SUFFIXES: .d .c .o
X
X.d.c:
X	../../src/scheme -l ../xt/make-widget $< $@ $(WIDGET_SET)
X
X.d.o:
X	../../src/scheme -l ../xt/make-widget $< $*.c $(WIDGET_SET)
X	$(CC) $(CFLAGS) -c $*.c
X
Xall: $(O)
X
Xlint:
X	lint $(LINTFLAGS) -abxh *.c | egrep -v '\?\?\?'
X
Xclean:
X	rm -f *.o *.c
END_OF_lib/xhp/Makefile
if test 509 -ne `wc -c <lib/xhp/Makefile`; then
    echo shar: \"lib/xhp/Makefile\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/xhp/arrow.d -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/xhp/arrow.d\"
else
echo shar: Extracting \"lib/xhp/arrow.d\" \(180 characters\)
sed "s/^X//" >lib/xhp/arrow.d <<'END_OF_lib/xhp/arrow.d'
X;;; -*-Scheme-*-
X
X(define-widget-type 'arrow "Arrow.h")
X
X(define-widget-class 'arrow 'XwarrowWidgetClass)
X
X(define-callback 'arrow 'select #f)
X(define-callback 'arrow 'release #f)
END_OF_lib/xhp/arrow.d
if test 180 -ne `wc -c <lib/xhp/arrow.d`; then
    echo shar: \"lib/xhp/arrow.d\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/xhp/bboard.d -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/xhp/bboard.d\"
else
echo shar: Extracting \"lib/xhp/bboard.d\" \(117 characters\)
sed "s/^X//" >lib/xhp/bboard.d <<'END_OF_lib/xhp/bboard.d'
X;;; -*-Scheme-*-
X
X(define-widget-type 'bboard "BBoard.h")
X
X(define-widget-class 'bboard 'XwbulletinBoardWidgetClass)
END_OF_lib/xhp/bboard.d
if test 117 -ne `wc -c <lib/xhp/bboard.d`; then
    echo shar: \"lib/xhp/bboard.d\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/xhp/toggle.d -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/xhp/toggle.d\"
else
echo shar: Extracting \"lib/xhp/toggle.d\" \(186 characters\)
sed "s/^X//" >lib/xhp/toggle.d <<'END_OF_lib/xhp/toggle.d'
X;;; -*-Scheme-*-
X
X(define-widget-type 'toggle "Toggle.h")
X
X(define-widget-class 'toggle 'XwtoggleWidgetClass)
X
X(define-callback 'toggle 'select #f)
X(define-callback 'toggle 'release #f)
END_OF_lib/xhp/toggle.d
if test 186 -ne `wc -c <lib/xhp/toggle.d`; then
    echo shar: \"lib/xhp/toggle.d\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/xhp/menusep.d -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/xhp/menusep.d\"
else
echo shar: Extracting \"lib/xhp/menusep.d\" \(121 characters\)
sed "s/^X//" >lib/xhp/menusep.d <<'END_OF_lib/xhp/menusep.d'
X;;; -*-Scheme-*-
X
X(define-widget-type 'menusep "MenuSep.h")
X
X(define-widget-class 'menu-separator 'XwmenuSepWidgetClass)
END_OF_lib/xhp/menusep.d
if test 121 -ne `wc -c <lib/xhp/menusep.d`; then
    echo shar: \"lib/xhp/menusep.d\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/xhp/form.d -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/xhp/form.d\"
else
echo shar: Extracting \"lib/xhp/form.d\" \(102 characters\)
sed "s/^X//" >lib/xhp/form.d <<'END_OF_lib/xhp/form.d'
X;;; -*-Scheme-*-
X
X(define-widget-type 'form "Form.h")
X
X(define-widget-class 'form 'XwformWidgetClass)
END_OF_lib/xhp/form.d
if test 102 -ne `wc -c <lib/xhp/form.d`; then
    echo shar: \"lib/xhp/form.d\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/xhp/sash.d -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/xhp/sash.d\"
else
echo shar: Extracting \"lib/xhp/sash.d\" \(102 characters\)
sed "s/^X//" >lib/xhp/sash.d <<'END_OF_lib/xhp/sash.d'
X;;; -*-Scheme-*-
X
X(define-widget-type 'sash "Sash.h")
X
X(define-widget-class 'sash 'XwsashWidgetClass)
END_OF_lib/xhp/sash.d
if test 102 -ne `wc -c <lib/xhp/sash.d`; then
    echo shar: \"lib/xhp/sash.d\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/xhp/cascade.d -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/xhp/cascade.d\"
else
echo shar: Extracting \"lib/xhp/cascade.d\" \(114 characters\)
sed "s/^X//" >lib/xhp/cascade.d <<'END_OF_lib/xhp/cascade.d'
X;;; -*-Scheme-*-
X
X(define-widget-type 'cascade "Cascade.h")
X
X(define-widget-class 'cascade 'XwcascadeWidgetClass)
END_OF_lib/xhp/cascade.d
if test 114 -ne `wc -c <lib/xhp/cascade.d`; then
    echo shar: \"lib/xhp/cascade.d\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/xhp/pbutton.d -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/xhp/pbutton.d\"
else
echo shar: Extracting \"lib/xhp/pbutton.d\" \(207 characters\)
sed "s/^X//" >lib/xhp/pbutton.d <<'END_OF_lib/xhp/pbutton.d'
X;;; -*-Scheme-*-
X
X(define-widget-type 'pbutton "PButton.h")
X
X(define-widget-class 'push-button 'XwpushButtonWidgetClass)
X
X(define-callback 'push-button 'select #f)
X(define-callback 'push-button 'release #f)
END_OF_lib/xhp/pbutton.d
if test 207 -ne `wc -c <lib/xhp/pbutton.d`; then
    echo shar: \"lib/xhp/pbutton.d\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/xhp/list.d -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/xhp/list.d\"
else
echo shar: Extracting \"lib/xhp/list.d\" \(102 characters\)
sed "s/^X//" >lib/xhp/list.d <<'END_OF_lib/xhp/list.d'
X;;; -*-Scheme-*-
X
X(define-widget-type 'list "List.h")
X
X(define-widget-class 'list 'XwlistWidgetClass)
END_OF_lib/xhp/list.d
if test 102 -ne `wc -c <lib/xhp/list.d`; then
    echo shar: \"lib/xhp/list.d\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/xhp/menubutton.d -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/xhp/menubutton.d\"
else
echo shar: Extracting \"lib/xhp/menubutton.d\" \(167 characters\)
sed "s/^X//" >lib/xhp/menubutton.d <<'END_OF_lib/xhp/menubutton.d'
X;;; -*-Scheme-*-
X
X(define-widget-type 'menubutton "MenuBtn.h")
X
X(define-widget-class 'menu-button 'XwmenubuttonWidgetClass)
X
X(define-callback 'menu-button 'select #f)
END_OF_lib/xhp/menubutton.d
if test 167 -ne `wc -c <lib/xhp/menubutton.d`; then
    echo shar: \"lib/xhp/menubutton.d\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/xhp/vpw.d -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/xhp/vpw.d\"
else
echo shar: Extracting \"lib/xhp/vpw.d\" \(101 characters\)
sed "s/^X//" >lib/xhp/vpw.d <<'END_OF_lib/xhp/vpw.d'
X;;; -*-Scheme-*-
X
X(define-widget-type 'vpw "VPW.h")
X
X(define-widget-class 'vpw 'XwvPanedWidgetClass)
END_OF_lib/xhp/vpw.d
if test 101 -ne `wc -c <lib/xhp/vpw.d`; then
    echo shar: \"lib/xhp/vpw.d\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/xhp/popupmgr.d -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/xhp/popupmgr.d\"
else
echo shar: Extracting \"lib/xhp/popupmgr.d\" \(123 characters\)
sed "s/^X//" >lib/xhp/popupmgr.d <<'END_OF_lib/xhp/popupmgr.d'
X;;; -*-Scheme-*-
X
X(define-widget-type 'popupmgr "PopupMgr.h")
X
X(define-widget-class 'popup-manager 'XwpopupMgrWidgetClass)
END_OF_lib/xhp/popupmgr.d
if test 123 -ne `wc -c <lib/xhp/popupmgr.d`; then
    echo shar: \"lib/xhp/popupmgr.d\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/xhp/valuator.d -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/xhp/valuator.d\"
else
echo shar: Extracting \"lib/xhp/valuator.d\" \(470 characters\)
sed "s/^X//" >lib/xhp/valuator.d <<'END_OF_lib/xhp/valuator.d'
X;;; -*-Scheme-*-
X
X(define-widget-type 'valuator "Valuator.h")
X
X(define-widget-class 'valuator 'XwvaluatorWidgetClass)
X
X(define-callback 'valuator 'sliderMoved #t)
X(define-callback 'valuator 'sliderReleased #t)
X(define-callback 'valuator 'areaSelected #t)
X
X(c->scheme 'valuator-sliderMoved
X"    return Make_Integer ((int)x);")
X(c->scheme 'valuator-sliderReleased
X"    return Make_Integer ((int)x);")
X(c->scheme 'valuator-areaSelected
X"    return Make_Integer ((int)x);")
END_OF_lib/xhp/valuator.d
if test 470 -ne `wc -c <lib/xhp/valuator.d`; then
    echo shar: \"lib/xhp/valuator.d\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/xhp/rowcol.d -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/xhp/rowcol.d\"
else
echo shar: Extracting \"lib/xhp/rowcol.d\" \(114 characters\)
sed "s/^X//" >lib/xhp/rowcol.d <<'END_OF_lib/xhp/rowcol.d'
X;;; -*-Scheme-*-
X
X(define-widget-type 'rowcol "RCManager.h")
X
X(define-widget-class 'row-col 'XwrowColWidgetClass)
END_OF_lib/xhp/rowcol.d
if test 114 -ne `wc -c <lib/xhp/rowcol.d`; then
    echo shar: \"lib/xhp/rowcol.d\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/xhp/scroll.d -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/xhp/scroll.d\"
else
echo shar: Extracting \"lib/xhp/scroll.d\" \(480 characters\)
sed "s/^X//" >lib/xhp/scroll.d <<'END_OF_lib/xhp/scroll.d'
X;;; -*-Scheme-*-
X
X(define-widget-type 'scrollbar "ScrollBar.h")
X
X(define-widget-class 'scrollbar 'XwscrollbarWidgetClass)
X
X(define-callback 'scrollbar 'sliderMoved #t)
X(define-callback 'scrollbar 'sliderReleased #t)
X(define-callback 'scrollbar 'areaSelected #t)
X
X(c->scheme 'scrollbar-sliderMoved
X"    return Make_Integer ((int)x);")
X(c->scheme 'scrollbar-sliderReleased
X"    return Make_Integer ((int)x);")
X(c->scheme 'scrollbar-areaSelected
X"    return Make_Integer ((int)x);")
END_OF_lib/xhp/scroll.d
if test 480 -ne `wc -c <lib/xhp/scroll.d`; then
    echo shar: \"lib/xhp/scroll.d\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/xhp/stext.d -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/xhp/stext.d\"
else
echo shar: Extracting \"lib/xhp/stext.d\" \(203 characters\)
sed "s/^X//" >lib/xhp/stext.d <<'END_OF_lib/xhp/stext.d'
X;;; -*-Scheme-*-
X
X(define-widget-type 'stext "SText.h")
X
X(define-widget-class 'static-text 'XwstatictextWidgetClass)
X
X(define-callback 'static-text 'select #f)
X(define-callback 'static-text 'release #f)
END_OF_lib/xhp/stext.d
if test 203 -ne `wc -c <lib/xhp/stext.d`; then
    echo shar: \"lib/xhp/stext.d\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lib/xhp/textedit.d -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"lib/xhp/textedit.d\"
else
echo shar: Extracting \"lib/xhp/textedit.d\" \(1236 characters\)
sed "s/^X//" >lib/xhp/textedit.d <<'END_OF_lib/xhp/textedit.d'
X;;; -*-Scheme-*-
X
X(define-widget-type 'textedit "TextEdit.h"
X
X"static SYMDESCR Sourcetype_Syms[] = {
X    { \"string\",        XwstringSrc },
X    { \"disk\",          XwdiskSrc },
X    { \"prog-defined\",  XwprogDefinedSrc },
X    { 0, 0 }
X};
Xstatic SYMDESCR Edittype_Syms[] = {
X    { \"text-read\",     XwtextRead },
X    { \"text-append\",   XwtextAppend },
X    { \"text-edit\",     XwtextEdit },
X    { 0, 0 }
X};")
X
X(scheme->c 'text-edit-editType
X"   return (XtArgVal)Symbols_To_Bits (x, 0, Edittype_Syms);")
X
X(scheme->c 'text-edit-sourceType
X"   return (XtArgVal)Symbols_To_Bits (x, 0, Sourcetype_Syms);")
X
X(define-widget-class 'text-edit 'XwtexteditWidgetClass
X  '(string String String)
X  '(maximumSize Length Int)
X  '(file String String)
X  '(editType EditType EditMode)
X  '(font Font FontStruct)
X  '(foreground Foreground Pixel))
X
X(define-primitive 'text-copy-buffer '(w)
X"   char *b;
X    Object ret;
X    Check_Widget_Class (w, XwtexteditWidgetClass);
X    b = (char *)XwTextCopyBuffer (WIDGET(w)->widget);
X    ret = Make_String (b, strlen (b));
X    XtFree (b);
X    return ret;")
X
X(define-primitive 'text-clear-buffer '(w)
X"   Check_Widget_Class (w, XwtexteditWidgetClass);
X    XwTextClearBuffer (WIDGET(w)->widget);
X    return Void;")
END_OF_lib/xhp/textedit.d
if test 1236 -ne `wc -c <lib/xhp/textedit.d`; then
    echo shar: \"lib/xhp/textedit.d\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test ! -d stk ; then
    echo shar: Creating directory \"stk\"
    mkdir stk
fi
if test -f stk/Makefile -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"stk/Makefile\"
else
echo shar: Extracting \"stk/Makefile\" \(364 characters\)
sed "s/^X//" >stk/Makefile <<'END_OF_stk/Makefile'
XMACHTYPE= 68k
X
Xall: test1 test2
X
Xtest1: test1.o ../src/stack.o
X	$(CC) $(CFLAGS) -o test1 test1.c ../src/stack.o
X
Xtest2: test2.o ../src/stack.o
X	$(CC) $(CFLAGS) -o test2 test2.c ../src/stack.o
X
X../src/stack.o: ../src/stack.s
X	cp ../src/stack.s.$(MACHTYPE) ../src/stack.s
X	/lib/cpp <../src/stack.s | sed '/^#/d' >stack.ss
X	as -o ../src/stack.o stack.ss
X	rm stack.ss
END_OF_stk/Makefile
if test 364 -ne `wc -c <stk/Makefile`; then
    echo shar: \"stk/Makefile\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f stk/test1.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"stk/test1.c\"
else
echo shar: Extracting \"stk/test1.c\" \(658 characters\)
sed "s/^X//" >stk/test1.c <<'END_OF_stk/test1.c'
X/* This program tests whether stksize() is producing reasonable
X * results.
X */
X
Xint Special;
Xchar *stkbase;
X
Xmain () {
X    char foo;
X
X    stkbase = &foo;
X    f ();
X    printf ("stksize() seems to work fine.\n");
X    exit (0);
X}
X
Xf () {
X    int s, t;
X    char buf[100];
X
X    s = stksize ();
X    if (s < 100 || s > 100000) {
X	printf ("There seems to be a problem [1] with stksize().\n");
X	exit (1);
X    }
X    (void)alloca (100);
X    t = stksize ();
X    if (t < s) {
X	printf ("There seems to be a problem [2] with stksize().\n");
X	exit (1);
X    }
X    if (t > s + 104) {
X	printf ("There seems to be a problem with stksize() or alloca().\n");
X	exit (1);
X    }
X}
END_OF_stk/test1.c
if test 658 -ne `wc -c <stk/test1.c`; then
    echo shar: \"stk/test1.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f stk/test2.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"stk/test2.c\"
else
echo shar: Extracting \"stk/test2.c\" \(857 characters\)
sed "s/^X//" >stk/test2.c <<'END_OF_stk/test2.c'
X/* If saveenv() and jmpenv() are working correctly, this program
X * prints the numbers 0 to 9.
X */
X
Xchar *malloc();
Xchar *env, *env2;
Xchar *stkbase;
Xint Special;
X
Xint i, r = 1;
X
Xmain () {
X    char foo;
X
X    stkbase = &foo;
X    i = inner ();
X    if (i == 7)
X	jmpenv (env2, 9);
X    jmpenv (env, r++);
X    printf ("There seems to be a problem [1] with saveenv or jmpenv.\n");
X    exit (1);
X}
X
Xinner () {
X    int r, len;
X
X    inner2 ();
X    len = stksize ();
X    env = malloc (len);
X    r = saveenv (env);
X    printf ("%d\n", r+1);
X    return r;
X}
X
Xinner2 () {
X    int r, len = stksize ();
X    int a[10000];
X    a[0] = 1; a[9999] = 2;
X
X    env2 = malloc (len);
X    r = saveenv (env2);
X    printf ("%d\n", r);
X    if (a[0] != 1 || a[9999] != 2) {
X	printf ("There seems to be a problem [2] with saveenv or jmpenv.\n");
X	exit (1);
X    }
X    if (r > 0)
X	exit ();
X}
END_OF_stk/test2.c
if test 857 -ne `wc -c <stk/test2.c`; then
    echo shar: \"stk/test2.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of archive 14 \(of 14\).
cp /dev/null ark14isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 14 archives.
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0