v00i004: Ardent Window Manager(X11), Part03/13
Mike Wexler
mikew at wyse.wyse.com
Wed Aug 10 03:15:51 AEST 1988
Submitted-by: jkh at ardent (Jordan Hubbard)
Posting-number: Volume 0, Issue 4
Archive-name: awm/part03
#! /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 3 (of 13)."
# Contents: awm/Bindings.c awm/Cursors.c awm/Menu.c awm/Raise.c
# awm/Refresh.c awm/Restart.c awm/StoreBox.c awm/StoreZap.c
# awm/XRdBitFD.c awm/bitmaps/xterm.bm awm/menus/dbug.h
# Wrapped by mikew at wyse on Mon Aug 8 12:01:42 1988
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f awm/Bindings.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"awm/Bindings.c\"
else
echo shar: Extracting \"awm/Bindings.c\" \(3702 characters\)
sed "s/^X//" >awm/Bindings.c <<'END_OF_awm/Bindings.c'
X#ident "%W% %G%"
X
X
X
X#ifndef lint
Xstatic char *rcsid_Bindings_c = "$Header: Bindings.c,v 1.1 88/06/15 15:30:22 jkh Exp $";
X#endif lint
X
X#include "X11/copyright.h"
X/*
X *
X * Copyright 1987, 1988 by Ardent Computer Corporation, Sunnyvale, Ca.
X *
X * Copyright 1987 by Jordan Hubbard.
X *
X *
X * All Rights Reserved
X *
X * Permission to use, copy, modify, and distribute this software and its
X * documentation for any purpose and without fee is hereby granted,
X * provided that the above copyright notice appear in all copies and that
X * both that copyright notice and this permission notice appear in
X * supporting documentation, and that the name of Ardent Computer
X * Corporation or Jordan Hubbard not be used in advertising or publicity
X * pertaining to distribution of the software without specific, written
X * prior permission.
X *
X */
X
X/*
X * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
X *
X * All Rights Reserved
X *
X * Permission to use, copy, modify, and distribute this software and its
X * documentation for any purpose and without fee is hereby granted,
X * provided that the above copyright notice appear in all copies and that
X * both that copyright notice and this permission notice appear in
X * supporting documentation, and that the name of Digital Equipment
X * Corporation not be used in advertising or publicity pertaining to
X * distribution of the software without specific, written prior permission.
X *
X *
X * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
X * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
X * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
X * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
X * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
X * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
X * SOFTWARE.
X */
X
X
X
X/*
X * MODIFICATION HISTORY
X *
X * 000 -- M. Gancarz, DEC Ultrix Engineering Group
X */
X
X#ifndef lint
Xstatic char *sccsid = "@(#)Bindings.c 3.8 1/24/86";
X#endif
X
X/*
X * Bindings.c Default bindings for the X window manager 'awm'
X *
X * Note: Any changes to this file should also be added to the file
X * /usr/new/lib/X/awm/default.awmrc to keep users informed as to the bindings
X * contained herein.
X */
X
Xchar *DefaultBindings[] = {
X"menu=\"WindowOps\"{",
X"New Window:!\"xterm&\"",
X"RefreshScreen:f.refresh",
X"Redraw:f.redraw",
X"Move:f.move",
X"Resize:f.resize",
X"Lower:f.lower",
X"Raise:f.raise",
X"CircUp:f.circleup",
X"CircDown:f.circledown",
X"AutoIconify:f.iconify",
X"LowerIconify:f.newiconify",
X"NewIconify:f.newiconify",
X"Focus:f.focus",
X"Freeze:f.pause",
X"UnFreeze:f.continue",
X"Restart:f.restart",
X"}",
X"menu=\"Preferences\"{",
X"Bell Loud:!\"xset b 7&\"",
X"Bell Normal:!\"xset b 3&\"",
X"Bell Off:!\"xset b off&\"",
X"Click Loud:!\"xset c 8&\"",
X"Click Soft:!\"xset c on&\"",
X"Click Off:!\"xset c off&\"",
X"Lock On:!\"xset l on&\"",
X"Lock Off:!\"xset l off&\"",
X"Mouse Fast:!\"xset m 4 2&\"",
X"Mouse Normal:!\"xset m 2 5&\"",
X"Mouse Slow:!\"xset m 1 1&\"",
X"}",
X"f.newiconify=m:w|i:delta l",
X"f.raise=m:w|i:delta l",
X"f.lower=m:w|i:l u",
X"f.raise=m:w:m d",
X"f.resize=m:w:delta m",
X"f.iconify=m:i:m u",
X"f.raise=m:w|i:r d",
X"f.move=m:w|i:delta r",
X"f.circledown=m:r:l d",
X"f.circleup=m:r:r d",
X"f.circledown=m|s::l d",
X"f.menu=:r:m d:\"WindowOps\"",
X"f.menu=m|s::m d:\"WindowOps\"",
X"f.menu=m|s::m d:\"Preferences\"",
X"f.circleup=m|s::r d",
X"f.iconify=m|c:w|i:l d",
X"f.newiconify=m|l:w|i:l d",
X"f.raise=m|l:w|i:l u",
X"f.pushright=m|l:w|i:r d",
X"f.pushleft=m|c:w|i:r d",
X"f.pushup=m|l:w|i:m d",
X"f.pushdown=m|c:w|i:m d",
X0 /* Must NOT be removed. */
X};
END_OF_awm/Bindings.c
if test 3702 -ne `wc -c <awm/Bindings.c`; then
echo shar: \"awm/Bindings.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f awm/Cursors.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"awm/Cursors.c\"
else
echo shar: Extracting \"awm/Cursors.c\" \(3888 characters\)
sed "s/^X//" >awm/Cursors.c <<'END_OF_awm/Cursors.c'
X#ident "%W% %G%"
X
X
X
X#ifndef lint
Xstatic char *rcsid_StoreCursors_c = "$Header: Cursors.c,v 1.1 88/06/15 15:21:52 jkh Exp $";
X#endif lint
X
X#include "X11/copyright.h"
X/*
X *
X * Copyright 1987, 1988 by Ardent Computer Corporation, Sunnyvale, Ca.
X *
X * Copyright 1987 by Jordan Hubbard.
X *
X *
X * All Rights Reserved
X *
X * Permission to use, copy, modify, and distribute this software and its
X * documentation for any purpose and without fee is hereby granted,
X * provided that the above copyright notice appear in all copies and that
X * both that copyright notice and this permission notice appear in
X * supporting documentation, and that the name of Ardent Computer
X * Corporation or Jordan Hubbard not be used in advertising or publicity
X * pertaining to distribution of the software without specific, written
X * prior permission.
X *
X */
X
X/*
X * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
X *
X * All Rights Reserved
X *
X * Permission to use, copy, modify, and distribute this software and its
X * documentation for any purpose and without fee is hereby granted,
X * provided that the above copyright notice appear in all copies and that
X * both that copyright notice and this permission notice appear in
X * supporting documentation, and that the name of Digital Equipment
X * Corporation not be used in advertising or publicity pertaining to
X * distribution of the software without specific, written prior permission.
X *
X *
X * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
X * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
X * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
X * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
X * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
X * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
X * SOFTWARE.
X */
X
X
X
X/*
X * MODIFICATION HISTORY
X *
X * 000 -- M. Gancarz, DEC Ultrix Engineering Group
X * 001 -- Loretta Guarino Reid, DEC Ultrix Engineering Group
X * Convert to X11
X */
X
X#ifndef lint
Xstatic char *sccsid = "@(#)StoreCursors.c 3.8 1/24/86";
X#endif
X
X#include "awm.h"
X#include "X11/cursorfont.h"
X
X/*
X * Store all the cursors into global variables.
X */
XStoreCursors()
X{
X Entry("StoreCursors")
X
X /*
X * Main awm cursor and movement cursor.
X */
X ArrowCrossCursor = XCreateFontCursor(dpy, XC_fleur);
X if (ArrowCrossCursor == FAILURE) {
X Error("StoreCursors -> Unable to store ArrowCrossCursor.");
X }
X
X /*
X * Text cursor used in icons.
X */
X TextCursor = XCreateFontCursor(dpy, XC_xterm);
X if (TextCursor == FAILURE) {
X Error("StoreCursors -> Unable to store TextCursor.");
X }
X
X /*
X * Icon cursor used to iconify windows.
X */
X IconCursor = XCreateFontCursor(dpy, XC_icon);
X if (IconCursor == FAILURE) {
X Error("StoreCursors -> Unable to store IconCursor.");
X }
X
X /*
X * Left button main cursor.
X */
X LeftButtonCursor = XCreateFontCursor(dpy, XC_leftbutton);
X if (LeftButtonCursor == FAILURE) {
X Error("StoreCursors -> Unable to store LeftButtonCursor.");
X }
X
X /*
X * Middle button main cursor.
X */
X MiddleButtonCursor = XCreateFontCursor(dpy, XC_middlebutton);
X if (MiddleButtonCursor == FAILURE) {
X Error("StoreCursors -> Unable to store MiddleButtonCursor.");
X }
X
X /*
X * Right button main cursor.
X */
X RightButtonCursor = XCreateFontCursor(dpy, XC_rightbutton);
X if (RightButtonCursor == FAILURE) {
X Error("StoreCursors -> Unable to store RightButtonCursor.");
X }
X
X /*
X * Targer cursor used to identify a window for an action.
X */
X TargetCursor = XCreateFontCursor(dpy, XC_circle);
X if (TargetCursor == FAILURE) {
X Error("StoreCursors -> Unable to store TargetCursor.");
X }
X Leave(0)
X}
X
END_OF_awm/Cursors.c
if test 3888 -ne `wc -c <awm/Cursors.c`; then
echo shar: \"awm/Cursors.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f awm/Menu.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"awm/Menu.c\"
else
echo shar: Extracting \"awm/Menu.c\" \(4280 characters\)
sed "s/^X//" >awm/Menu.c <<'END_OF_awm/Menu.c'
X#ident "%W% %G%"
X
X
X
X#ifndef lint
Xstatic char *rcsid_Menu_c = "$Header: Menu.c,v 1.1 88/06/15 15:08:09 jkh Exp $";
X#endif lint
X
X#include "X11/copyright.h"
X/*
X *
X * Copyright 1987, 1988 by Ardent Computer Corporation, Sunnyvale, Ca.
X *
X * Copyright 1987 by Jordan Hubbard.
X *
X *
X * All Rights Reserved
X *
X * Permission to use, copy, modify, and distribute this software and its
X * documentation for any purpose and without fee is hereby granted,
X * provided that the above copyright notice appear in all copies and that
X * both that copyright notice and this permission notice appear in
X * supporting documentation, and that the name of Ardent Computer
X * Corporation or Jordan Hubbard not be used in advertising or publicity
X * pertaining to distribution of the software without specific, written
X * prior permission.
X *
X */
X
X#include <signal.h>
X#include "X11/cursorfont.h"
X
X/*
X * MODIFICATION HISTORY
X *
X * 000 -- J.Hubbard, Ardent Computer.
X * This file bears little resemblance to its former namesake.
X * Because of massive changes to support RTL menus, the Menu()
X * function is now little more than a bootstrap for RTL.
X */
X
X#ifndef lint
Xstatic char *sccsid = "@(#)Menu.c 3.8 1/24/86";
X#endif
X
X#include "awm.h"
X
XBoolean DoMenu(window, mask, button, x, y, menu)
XWindow window; /* Event window. */
Xint mask; /* Button/key mask. */
Xint button; /* Button event detail. */
Xint x, y; /* Event mouse position. */
XRTLMenu menu;
X{
X RTLPoint pos;
X
X Entry("DoMenu")
X
X pos.x = x;
X pos.y = y;
X if (!menu)
X Leave(FALSE)
X RTLMenu_Enter(menu, button, 0, window, pos);
X Leave(TRUE)
X}
X
XBoolean DoAction(window, mask, button, x, y, menu, action)
XWindow window; /* Event window. */
Xint mask; /* Button/key mask. */
Xint button; /* Button event detail. */
Xint x, y; /* Event mouse position. */
XRTLMenu menu;
XActionLine *action;
X{
X Boolean *tmp;
X char *buff, *cmd;
X int status, pid, w;
X register int (*istat)(), (*qstat)();
X
X Entry("DoAction")
X
X switch(action->type) {
X case IsText:
X XStoreBytes(dpy, action->text, strlen(action->text));
X break;
X
X case IsTextNL:
X buff = (char *)malloc(strlen(action->text) + 2);
X strcpy(buff, action->text);
X strcat(buff, "\n");
X XStoreBytes(dpy, buff, strlen(buff));
X free(buff);
X break;
X
X case IsShellCommand:
X cmd = action->text;
X if ((pid = fork()) == 0) {
X setpgrp(0, 0);
X signal(SIGHUP, SIG_IGN);
X signal(SIGQUIT, SIG_IGN);
X signal(SIGINT, SIG_IGN);
X execl("/bin/sh", "sh", "-c", cmd, 0);
X _exit(127);
X }
X istat = signal(SIGINT, SIG_IGN);
X qstat = signal(SIGQUIT, SIG_IGN);
X while ((w = wait(&status)) != pid && w != -1);
X if (w == -1)
X status = -1;
X signal(SIGINT, istat);
X signal(SIGQUIT, qstat);
X break;
X
X default:
X fprintf(stderr, "awm: Warning: Unknown action type %d (%s) invoked\n",
X action->type, action->text);
X break;
X }
X}
X
X/*
X * Routine to let user select a window using the mouse
X */
X
XWindow Select_Window(x, y, button)
Xint *x, *y, *button;
X{
X int status;
X Cursor cursor;
X XEvent event;
X Window target_win, root;
X int root_x, root_y, x2, y2, ptrmask;
X AwmInfoPtr awi;
X
X Entry("Select_Window")
X
X /* Make the target cursor */
X if (XGrabPointer( dpy, RootWindow(dpy, scr),
X TRUE, EVENTMASK, GrabModeAsync,
X GrabModeAsync, None,
X TargetCursor, CurrentTime )
X != GrabSuccess ) {
X fprintf(stderr, "awm (Select_Window): Can't grab the mouse.");
X Leave(RootWindow(dpy, scr))
X }
X Snatched = TRUE;
X /* Select a window */
X while (TRUE) {
X XPeekEvent(dpy, &event);
X if (event.type != ButtonPress) {
X GetButton(&event);
X continue;
X }
X XNextEvent(dpy, &event);
X XQueryPointer(dpy, RootWindow(dpy, scr), &root,
X &target_win, &root_x, &root_y, &x2, &y2, &ptrmask);
X
X *x = root_x;
X *y = root_y;
X *button = event.xbutton.button;
X if (target_win == 0)
X target_win = event.xbutton.window;
X XUngrabPointer(dpy, CurrentTime); /* Done with pointer */
X if (awi = GetAwmInfo(target_win))
X target_win = (awi->frame) ? awi->frame : awi->client;
X Snatched = FALSE;
X Leave(target_win)
X }
X}
END_OF_awm/Menu.c
if test 4280 -ne `wc -c <awm/Menu.c`; then
echo shar: \"awm/Menu.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f awm/Raise.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"awm/Raise.c\"
else
echo shar: Extracting \"awm/Raise.c\" \(3678 characters\)
sed "s/^X//" >awm/Raise.c <<'END_OF_awm/Raise.c'
X#ident "%W% %G%"
X
X
X
X#ifndef lint
Xstatic char *rcsid_Raise_c = "$Header: Raise.c,v 1.1 88/06/15 15:24:56 jkh Exp $";
X#endif lint
X
X#include "X11/copyright.h"
X/*
X *
X * Copyright 1987, 1988 by Ardent Computer Corporation, Sunnyvale, Ca.
X *
X * Copyright 1987 by Jordan Hubbard.
X *
X *
X * All Rights Reserved
X *
X * Permission to use, copy, modify, and distribute this software and its
X * documentation for any purpose and without fee is hereby granted,
X * provided that the above copyright notice appear in all copies and that
X * both that copyright notice and this permission notice appear in
X * supporting documentation, and that the name of Ardent Computer
X * Corporation or Jordan Hubbard not be used in advertising or publicity
X * pertaining to distribution of the software without specific, written
X * prior permission.
X *
X */
X
X/*
X * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
X *
X * All Rights Reserved
X *
X * Permission to use, copy, modify, and distribute this software and its
X * documentation for any purpose and without fee is hereby granted,
X * provided that the above copyright notice appear in all copies and that
X * both that copyright notice and this permission notice appear in
X * supporting documentation, and that the name of Digital Equipment
X * Corporation not be used in advertising or publicity pertaining to
X * distribution of the software without specific, written prior permission.
X *
X *
X * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
X * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
X * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
X * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
X * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
X * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
X * SOFTWARE.
X */
X
X
X/*
X * MODIFICATION HISTORY
X *
X * 000 -- M. Gancarz, DEC Ultrix Engineering Group
X * 001 -- R. Kittell, DEC Storage A/D May 19, 1986
X * Optionally warp mouse to upper right corner of window after raise.
X * 002 -- Loretta Guarino Reid, DEC Ultrix Engineering Group
X * Western Software Lab. Convert to X11.
X * 003 -- Jordan Hubbard, Ardent Computer
X * Changed for awm.
X */
X
X#include "awm.h"
X
XBoolean Raise(window, mask, button, x, y)
XWindow window; /* Event window. */
Xint mask; /* Button/key mask. */
Xint button; /* Button event detail. */
Xint x, y; /* Event mouse position. */
X
X{
X XWindowAttributes winfo; /* Window details for warp */
X AwmInfoPtr awi;
X int status, vpoint;
X
X Entry("Raise")
X
X /*
X * If the window is not the root window, raise the window and return.
X */
X
X awi = GetAwmInfo(window);
X if (!awi)
X Leave(FALSE)
X if (window != RootWindow(dpy, scr)) {
X window = awi->frame ? awi->frame : awi->client;
X XRaiseWindow(dpy, window);
X if (awi->frame)
X vpoint = 10 + titleHeight + 2;
X else
X vpoint = 10;
X /*
X * Optionally warp the mouse to the upper left corner of the window.
X */
X if (WarpOnRaise) {
X status = XGetWindowAttributes (dpy, window, &winfo);
X if (status == FAILURE)
X Leave(FALSE)
X
X status = XWarpPointer (dpy, None, window,
X 0, 0, 0, 0,
X winfo.width >= 7 ? winfo.width - 7 :
X winfo.width / 2,
X winfo.height >= vpoint ? vpoint :
X winfo.height / 2);
X if (status == FAILURE)
X Leave(FALSE)
X }
X }
X Leave(FALSE)
X}
END_OF_awm/Raise.c
if test 3678 -ne `wc -c <awm/Raise.c`; then
echo shar: \"awm/Raise.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f awm/Refresh.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"awm/Refresh.c\"
else
echo shar: Extracting \"awm/Refresh.c\" \(4348 characters\)
sed "s/^X//" >awm/Refresh.c <<'END_OF_awm/Refresh.c'
X#ident "%W% %G%"
X
X
X
X#ifndef lint
Xstatic char *rcsid_Refresh_c = "$Header: Refresh.c,v 1.1 88/06/15 15:29:10 jkh Exp $";
X#endif lint
X
X#include "X11/copyright.h"
X/*
X *
X * Copyright 1987, 1988 by Ardent Computer Corporation, Sunnyvale, Ca.
X *
X * Copyright 1987 by Jordan Hubbard.
X *
X *
X * All Rights Reserved
X *
X * Permission to use, copy, modify, and distribute this software and its
X * documentation for any purpose and without fee is hereby granted,
X * provided that the above copyright notice appear in all copies and that
X * both that copyright notice and this permission notice appear in
X * supporting documentation, and that the name of Ardent Computer
X * Corporation or Jordan Hubbard not be used in advertising or publicity
X * pertaining to distribution of the software without specific, written
X * prior permission.
X *
X */
X
X/*
X * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
X *
X * All Rights Reserved
X *
X * Permission to use, copy, modify, and distribute this software and its
X * documentation for any purpose and without fee is hereby granted,
X * provided that the above copyright notice appear in all copies and that
X * both that copyright notice and this permission notice appear in
X * supporting documentation, and that the name of Digital Equipment
X * Corporation not be used in advertising or publicity pertaining to
X * distribution of the software without specific, written prior permission.
X *
X *
X * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
X * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
X * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
X * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
X * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
X * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
X * SOFTWARE.
X */
X
X
X
X/*
X * MODIFICATION HISTORY
X *
X * 000 -- M. Gancarz, DEC Ultrix Engineering Group
X * 001 -- Loretta Guarino Reid, DEC Ultrix Engineering Group,
X * Western Software Lab. Convert to X11.
X * 002 -- Jordan Hubbard, Ardent Computer
X * Changes for awm.
X */
X
X#include "awm.h"
X
XBoolean Refresh(window, mask, button, x, y)
XWindow window; /* Event window. */
Xint mask; /* Button/key mask. */
Xint button; /* Button event detail. */
Xint x, y; /* Event mouse position. */
X{
X Entry("Refresh")
X
X#ifdef titan
X XTitanReset(dpy);
X#endif /* titan */
X Leave( Redraw(RootWindow(dpy,scr), mask, button, x, y) )
X}
X
X
X
XBoolean Redraw(window, mask, button, x, y)
XWindow window; /* Event window. */
Xint mask; /* Button/key mask. */
Xint button; /* Button event detail. */
Xint x, y; /* Event mouse position. */
X{
X XWindowAttributes winfo; /* window info. */
X XSetWindowAttributes swa; /* New window info */
X Window w; /* Refresh window. */
X
X Entry("Redraw")
X
X /*
X * Get info on the target window.
X */
X status = XGetWindowAttributes(dpy, window, &winfo);
X if (status == FAILURE)
X Error("Refresh -> Can't query target window.");
X /*
X * Create and map a window which covers the target window, then destroy it.
X */
X swa.override_redirect = TRUE;
X swa.background_pixel = 0;
X
X /*
X * What we have here is a failure to communicate. This window should
X * more properly be created as a subwindow of "window", but
X * when we do that, all events (Create, Map, Destroy) get reported
X * as coming from "window", not the newly created one. This is
X * very nasty when the DestroyNotify is received. For now, we'll
X * create it on the RootWindow and take the chance of generating an
X * expose on an overlapping window.
X */
X if ((w = XCreateWindow(dpy, RootWindow(dpy, scr), winfo.x, winfo.y,
X winfo.width, winfo.height, 0,
X DefaultDepth(dpy, scr),
X CopyFromParent,
X DefaultVisual(dpy, scr),
X (CWOverrideRedirect | CWBackPixel),
X &swa)) == NULL)
X Error("Refresh -> Can't create refresh window.");
X XMapWindow(dpy, w);
X XDestroyWindow(dpy, w);
X XFlush(dpy);
X Leave(FALSE)
X}
END_OF_awm/Refresh.c
if test 4348 -ne `wc -c <awm/Refresh.c`; then
echo shar: \"awm/Refresh.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f awm/Restart.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"awm/Restart.c\"
else
echo shar: Extracting \"awm/Restart.c\" \(5018 characters\)
sed "s/^X//" >awm/Restart.c <<'END_OF_awm/Restart.c'
X#ident "%W% %G%"
X
X
X
X#ifndef lint
Xstatic char *rcsid_Restart_c = "$Header: Restart.c,v 1.2 88/07/23 17:24:56 jkh Exp $";
X#endif lint
X
X#include "X11/copyright.h"
X/*
X *
X * Copyright 1987, 1988 by Ardent Computer Corporation, Sunnyvale, Ca.
X *
X * Copyright 1987 by Jordan Hubbard.
X *
X *
X * All Rights Reserved
X *
X * Permission to use, copy, modify, and distribute this software and its
X * documentation for any purpose and without fee is hereby granted,
X * provided that the above copyright notice appear in all copies and that
X * both that copyright notice and this permission notice appear in
X * supporting documentation, and that the name of Ardent Computer
X * Corporation or Jordan Hubbard not be used in advertising or publicity
X * pertaining to distribution of the software without specific, written
X * prior permission.
X *
X */
X
X/*
X * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
X *
X * All Rights Reserved
X *
X * Permission to use, copy, modify, and distribute this software and its
X * documentation for any purpose and without fee is hereby granted,
X * provided that the above copyright notice appear in all copies and that
X * both that copyright notice and this permission notice appear in
X * supporting documentation, and that the name of Digital Equipment
X * Corporation not be used in advertising or publicity pertaining to
X * distribution of the software without specific, written prior permission.
X *
X *
X * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
X * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
X * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
X * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
X * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
X * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
X * SOFTWARE.
X */
X
X/*
X * MODIFICATION HISTORY
X *
X * 000 -- M. Gancarz, DEC Ultrix Engineering Group
X * 001 -- Loretta Guarino Reid, DEC Ultrix Engineering Group,
X Western Software Lab. Convert to X11.
X * 002 -- Jordan Hubbard, U.C. Berkeley. Titlebar cleanup code.
X */
X
X#include "awm.h"
X#include "X11/Xutil.h"
X
Xextern XContext AwmContext;
X
XBoolean Restart(window, mask, button, x, y)
XWindow window; /* Event window. */
Xint mask; /* Button/key mask. */
Xint button; /* Button event detail. */
Xint x, y; /* Event mouse position. */
X{
X XButtonEvent button_event;
X
X Entry("Restart")
X
X XFreeFont(dpy, IFontInfo);
X XFreeFont(dpy, PFontInfo);
X XBell(dpy, VOLUME_PERCENTAGE(Volume));
X XBell(dpy, VOLUME_PERCENTAGE(Volume));
X XFlush(dpy);
X Cleanup();
X execvp(*Argv, Argv, Environ);
X fprintf(stderr, "awm: Restart failed!\n");
X exit(1);
X}
X
XBoolean Quit(window, mask, button, x, y)
XWindow window; /* Event window. */
Xint mask; /* Button/key mask. */
Xint button; /* Button event detail. */
Xint x, y; /* Event mouse position. */
X{
X Entry("Quit")
X
X Cleanup();
X exit(0);
X}
X
XBoolean DestroyClient(window, mask, button, x, y)
XWindow window;
Xint mask;
Xint x, y;
X{
X AwmInfoPtr awi;
X
X Entry("DestroyClient")
X
X if (window == RootWindow(dpy, scr))
X Leave(FALSE)
X awi = GetAwmInfo(window);
X /*
X * If it's a titled window or an icon (we don't want to nuke ourselves)
X * we should get the client for it. We assume the subsequent destroy
X * notify will tell us to reclaim our resources.
X */
X window = awi->client;
X XKillClient(dpy, window);
X Leave(TRUE)
X}
X
X/*
X * Put any necessary cleanup code here, it will be invoked when awm exits
X * or restarts. Currently just checks for title bar resources.
X */
XCleanup()
X{
X Window junk, *windows;
X int nwins;
X AwmInfoPtr awi;
X
X Entry("Cleanup");
X
X if (XQueryTree(dpy, DefaultRootWindow(dpy), &junk, &junk, &windows, &nwins)
X != BadWindow) {
X unsigned int i;
X
X for (i = 0; i < nwins; i++) {
X XWindowAttributes xwa;
X int bw;
X
X awi = GetAwmInfo(windows[i]);
X if (!awi)
X continue;
X bw = awi->border_width;
X if (awi->state & ST_ICON)
X XMapWindow(dpy, awi->client);
X RemoveIcon(windows[i]);
X XGetWindowAttributes(dpy, awi->frame, &xwa);
X if (PushDown == FALSE) {
X if (awi->attrs & AT_TITLE)
X xwa.y += (titleHeight + 2);
X else if (awi->attrs & AT_BORDER)
X xwa.y += BContext;
X }
X if (awi->attrs & AT_BORDER)
X xwa.x -= (BContext + (bw ? bw : 1));
X XReparentWindow(dpy, awi->client, RootWindow(dpy, scr),
X xwa.x, xwa.y);
X XRemoveFromSaveSet(dpy, awi->client);
X XSetWindowBorderWidth(dpy, awi->client, awi->border_width);
X free(awi);
X }
X XFree(windows);
X }
X Leave_void
X}
END_OF_awm/Restart.c
if test 5018 -ne `wc -c <awm/Restart.c`; then
echo shar: \"awm/Restart.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f awm/StoreBox.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"awm/StoreBox.c\"
else
echo shar: Extracting \"awm/StoreBox.c\" \(5215 characters\)
sed "s/^X//" >awm/StoreBox.c <<'END_OF_awm/StoreBox.c'
X#ident "%W% %G%"
X
X
X
X#ifndef lint
Xstatic char *rcsid_StoreBox_c = "$Header: StoreBox.c,v 1.1 88/06/15 15:21:43 jkh Exp $";
X#endif lint
X
X#include "X11/copyright.h"
X/*
X *
X * Copyright 1987, 1988 by Ardent Computer Corporation, Sunnyvale, Ca.
X *
X * Copyright 1987 by Jordan Hubbard.
X *
X *
X * All Rights Reserved
X *
X * Permission to use, copy, modify, and distribute this software and its
X * documentation for any purpose and without fee is hereby granted,
X * provided that the above copyright notice appear in all copies and that
X * both that copyright notice and this permission notice appear in
X * supporting documentation, and that the name of Ardent Computer
X * Corporation or Jordan Hubbard not be used in advertising or publicity
X * pertaining to distribution of the software without specific, written
X * prior permission.
X *
X */
X
X/*
X * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
X *
X * All Rights Reserved
X *
X * Permission to use, copy, modify, and distribute this software and its
X * documentation for any purpose and without fee is hereby granted,
X * provided that the above copyright notice appear in all copies and that
X * both that copyright notice and this permission notice appear in
X * supporting documentation, and that the name of Digital Equipment
X * Corporation not be used in advertising or publicity pertaining to
X * distribution of the software without specific, written prior permission.
X *
X *
X * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
X * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
X * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
X * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
X * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
X * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
X * SOFTWARE.
X */
X
X
X
X/*
X * MODIFICATION HISTORY
X *
X * 000 -- M. Gancarz, DEC Ultrix Engineering Group
X * 001 -- Loretta Guarino Reid, DEC Ultrix Engineering Group,
X Western Software Lab. Convert to X11.
X * 002 -- Jordan Hubbard, Ardent Computer
X * Additional boxes for titled windows.
X */
X
X/*
X * StoreBox - This subroutine is used by the X Window Manager (xwm)
X * to store the vertices for the resize / movement box in a vertex list.
X */
X
X#include "awm.h"
X
X/*
X * Store the vertices for the resize movement box (on a titled window)
X * in a vertex list.
X */
Xint StoreTitleBox(box, ulx, uly, lrx, lry)
Xregister XSegment box[];
Xint ulx; /* Upper left X coordinate. */
Xint uly; /* Upper left Y coordinate. */
Xint lrx; /* Lower right X coordinate. */
Xint lry; /* Lower right Y coordinate. */
X{
X Entry("StoreTitleBox");
X
X /*
X * Xor in.
X */
X
X box[0].x1 = ulx; box[0].y1 = uly;
X box[0].x2 = lrx; box[0].y2 = uly;
X
X box[1].x1 = ulx; box[1].y1 = uly + titleHeight + 2;
X box[1].x2 = lrx; box[1].y2 = uly + titleHeight + 2;
X
X box[2].x1 = lrx; box[2].y1 = uly;
X box[2].x2 = lrx; box[2].y2 = lry;
X
X box[3].x1 = lrx; box[3].y1 = lry;
X box[3].x2 = ulx; box[3].y2 = lry;
X
X box[4].x1 = ulx; box[4].y1 = lry;
X box[4].x2 = ulx; box[4].y2 = uly;
X
X
X /*
X * If we freeze the screen, don't bother to xor out.
X */
X if (Freeze)
X Leave(5)
X
X /*
X * Xor out.
X */
X box[4].x1 = ulx; box[4].y1 = uly;
X box[4].x2 = lrx; box[4].y2 = uly;
X
X box[5].x1 = ulx; box[5].y1 = uly + titleHeight + 2;
X box[5].x2 = lrx; box[5].y2 = uly + titleHeight + 2;
X
X box[6].x1 = lrx; box[6].y1 = uly;
X box[6].x2 = lrx; box[6].y2 = lry;
X
X box[7].x1 = lrx; box[7].y1 = lry;
X box[7].x2 = ulx; box[7].y2 = lry;
X
X box[8].x1 = ulx; box[8].y1 = lry;
X box[8].x2 = ulx; box[8].y2 = uly;
X
X
X /*
X * Total number of vertices is 9.
X */
X Leave(9)
X}
X
X/*
X * Store the vertices for the resize movement box in a vertex list.
X */
Xint StoreBox(box, ulx, uly, lrx, lry)
Xregister XSegment box[];
Xint ulx; /* Upper left X coordinate. */
Xint uly; /* Upper left Y coordinate. */
Xint lrx; /* Lower right X coordinate. */
Xint lry; /* Lower right Y coordinate. */
X{
X Entry("StoreBox");
X
X /*
X * Xor in.
X */
X
X box[0].x1 = ulx; box[0].y1 = uly;
X box[0].x2 = lrx; box[0].y2 = uly;
X
X box[1].x1 = lrx; box[1].y1 = uly;
X box[1].x2 = lrx; box[1].y2 = lry;
X
X box[2].x1 = lrx; box[2].y1 = lry;
X box[2].x2 = ulx; box[2].y2 = lry;
X
X box[3].x1 = ulx; box[3].y1 = lry;
X box[3].x2 = ulx; box[3].y2 = uly;
X
X
X /*
X * If we freeze the screen, don't bother to xor out.
X */
X if (Freeze)
X Leave(4)
X
X /*
X * Xor out.
X */
X box[4].x1 = ulx; box[4].y1 = uly;
X box[4].x2 = lrx; box[4].y2 = uly;
X
X box[5].x1 = lrx; box[5].y1 = uly;
X box[5].x2 = lrx; box[5].y2 = lry;
X
X box[6].x1 = lrx; box[6].y1 = lry;
X box[6].x2 = ulx; box[6].y2 = lry;
X
X box[7].x1 = ulx; box[7].y1 = lry;
X box[7].x2 = ulx; box[7].y2 = uly;
X
X
X /*
X * Total number of vertices is 8.
X */
X Leave(8)
X}
END_OF_awm/StoreBox.c
if test 5215 -ne `wc -c <awm/StoreBox.c`; then
echo shar: \"awm/StoreBox.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f awm/StoreZap.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"awm/StoreZap.c\"
else
echo shar: Extracting \"awm/StoreZap.c\" \(3762 characters\)
sed "s/^X//" >awm/StoreZap.c <<'END_OF_awm/StoreZap.c'
X#ident "%W% %G%"
X
X
X
X#ifndef lint
Xstatic char *rcsid_StoreZap_c = "$Header: StoreZap.c,v 1.1 88/06/15 08:21:46 jkh Exp $";
X#endif lint
X
X#include "X11/copyright.h"
X/*
X *
X * Copyright 1987, 1988 by Ardent Computer Corporation, Sunnyvale, Ca.
X *
X * Copyright 1987 by Jordan Hubbard.
X *
X *
X * All Rights Reserved
X *
X * Permission to use, copy, modify, and distribute this software and its
X * documentation for any purpose and without fee is hereby granted,
X * provided that the above copyright notice appear in all copies and that
X * both that copyright notice and this permission notice appear in
X * supporting documentation, and that the name of Ardent Computer
X * Corporation or Jordan Hubbard not be used in advertising or publicity
X * pertaining to distribution of the software without specific, written
X * prior permission.
X *
X */
X
X/*
X * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
X *
X * All Rights Reserved
X *
X * Permission to use, copy, modify, and distribute this software and its
X * documentation for any purpose and without fee is hereby granted,
X * provided that the above copyright notice appear in all copies and that
X * both that copyright notice and this permission notice appear in
X * supporting documentation, and that the name of Digital Equipment
X * Corporation not be used in advertising or publicity pertaining to
X * distribution of the software without specific, written prior permission.
X *
X *
X * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
X * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
X * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
X * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
X * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
X * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
X * SOFTWARE.
X */
X
X
X
X/*
X * MODIFICATION HISTORY
X *
X * 000 -- M. Gancarz, DEC Ultrix Engineering Group
X * 001 -- Loretta Guarino Reid, DEC Ultrix Engineering Group,
X Western Software Lab. Convert to X11.
X */
X
X/*
X * StoreZap - This subroutine is used by the X Window Manager (xwm)
X * to store the vertices for the iconify, uniconify zap.
X *
X */
X
X#include "awm.h"
X
X/*
X * Store the vertices for the zap effect.
X */
Xint StoreZap(zap, ulx_1, uly_1, lrx_1, lry_1, ulx_2, uly_2, lrx_2, lry_2)
X register XSegment zap[];
X int ulx_1; /* From window, upper left X coordinate. */
X int uly_1; /* From window, upper left Y coordinate. */
X int lrx_1; /* From window, lower right X coordinate. */
X int lry_1; /* From window, lower right Y coordinate. */
X int ulx_2; /* To window, upper left X coordinate. */
X int uly_2; /* To window, upper left Y coordinate. */
X int lrx_2; /* To window, lower right X coordinate. */
X int lry_2; /* To window, lower right Y coordinate. */
X{
X
X Entry("StoreZap")
X
X /*
X * Xor in.
X */
X zap[0].x1 = ulx_1; zap[0].y1 = uly_1;
X zap[0].x2 = ulx_2; zap[0].y2 = uly_2;
X
X zap[1].x1 = lrx_1; zap[1].y1 = uly_1;
X zap[1].x2 = lrx_2; zap[1].y2 = uly_2;
X
X zap[2].x1 = lrx_1; zap[2].y1 = lry_1;
X zap[2].x2 = lrx_2; zap[2].y2 = lry_2;
X
X zap[3].x1 = ulx_1; zap[3].y1 = lry_1;
X zap[3].x2 = ulx_2; zap[3].y2 = lry_2;
X
X /*
X * Xor out.
X */
X zap[4].x1 = ulx_1; zap[4].y1 = uly_1;
X zap[4].x2 = ulx_2; zap[4].y2 = uly_2;
X
X zap[5].x1 = lrx_1; zap[5].y1 = uly_1;
X zap[5].x2 = lrx_2; zap[5].y2 = uly_2;
X
X zap[6].x1 = lrx_1; zap[6].y1 = lry_1;
X zap[6].x2 = lrx_2; zap[6].y2 = lry_2;
X
X zap[7].x1 = ulx_1; zap[7].y1 = lry_1;
X zap[7].x2 = ulx_2; zap[7].y2 = lry_2;
X /*
X * Total number of vertices is 8.
X */
X Leave(8)
X}
END_OF_awm/StoreZap.c
if test 3762 -ne `wc -c <awm/StoreZap.c`; then
echo shar: \"awm/StoreZap.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f awm/XRdBitFD.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"awm/XRdBitFD.c\"
else
echo shar: Extracting \"awm/XRdBitFD.c\" \(3904 characters\)
sed "s/^X//" >awm/XRdBitFD.c <<'END_OF_awm/XRdBitFD.c'
X#ident "%W% %G%"
X
X
X
X#ifndef lint
Xstatic char *rcsid_XRdBitFD_c = "$Header: XRdBitFD.c,v 1.1 88/06/15 15:26:00 jkh Exp $";
X#endif lint
X
X#include "X11/copyright.h"
X/*
X *
X * Copyright 1987, 1988 by Ardent Computer Corporation, Sunnyvale, Ca.
X *
X * Copyright 1987 by Jordan Hubbard.
X *
X *
X * All Rights Reserved
X *
X * Permission to use, copy, modify, and distribute this software and its
X * documentation for any purpose and without fee is hereby granted,
X * provided that the above copyright notice appear in all copies and that
X * both that copyright notice and this permission notice appear in
X * supporting documentation, and that the name of Ardent Computer
X * Corporation or Jordan Hubbard not be used in advertising or publicity
X * pertaining to distribution of the software without specific, written
X * prior permission.
X *
X */
X
X/* Copyright, 1988, Massachusetts Institute of Theology */
X
X#include "copyright.h"
X
X#include "Xos.h"
X#include "X11/Xlib.h"
X#include "X11/Xutil.h"
X#include "Xlibint.h"
X#include <stdio.h>
X
X#define MAX_LINE 1000
X
Xint XReadBitmapFileData(filename, width, height, data, x_hot, y_hot)
X char *filename;
X unsigned int *width, *height; /* RETURNED */
X char **data; /* RETURNED */
X int *x_hot, *y_hot; /* RETURNED */
X{
X FILE *stream;
X char *bits = 0;
X char *ptr;
X char line[MAX_LINE];
X int size, bytes;
X char name_and_type[MAX_LINE];
X char *type;
X int value;
X int version10p;
X int padding;
X int bytes_per_line;
X unsigned int ww = 0;
X unsigned int hh = 0;
X int hx = -1;
X int hy = -1;
X
X if (!filename || !(stream = fopen(filename, "r")))
X return(BitmapOpenFailed);
X
X for (;;) {
X if (!fgets(line, MAX_LINE, stream))
X break;
X if (strlen(line) == MAX_LINE-1) {
X fclose(stream);
X return(BitmapFileInvalid);
X }
X
X if (sscanf(line, "#define %s %d", name_and_type, &value) == 2) {
X if (!(type = rindex(name_and_type, '_')))
X type = name_and_type;
X else
X type++;
X if (!strcmp("width", type))
X ww=(unsigned int) value;
X if (!strcmp("height", type))
X hh=(unsigned int) value;
X if (!strcmp("hot", type)) {
X if (type--==name_and_type || type--==name_and_type)
X continue;
X if (!strcmp("x_hot", type))
X hx = value;
X if (!strcmp("y_hot", type))
X hy = value;
X }
X continue;
X }
X
X if (sscanf(line, "static short %s = {", name_and_type) == 1)
X version10p = 1;
X else if (sscanf(line, "static unsigned char %s = {", name_and_type) == 1)
X version10p = 0;
X else if (sscanf(line, "static char %s = {", name_and_type) == 1)
X version10p = 0;
X else continue;
X
X if (!(type = rindex(name_and_type, '_')))
X type = name_and_type;
X else
X type++;
X if (strcmp("bits[]", type))
X continue;
X
X if (!ww || !hh) {
X fclose(stream);
X return(BitmapFileInvalid);
X }
X
X padding = 0;
X if ((ww % 16) && ((ww % 16) < 9) && version10p)
X padding = 1;
X
X bytes_per_line = (ww+7)/8 + padding;
X
X size = bytes_per_line * hh;
X bits = (char *) Xmalloc( size );
X if (!bits) {
X fclose(stream);
X return(BitmapNoMemory);
X }
X
X if (version10p)
X for (bytes=0, ptr=bits; bytes<size; (bytes += 2)) {
X if (fscanf(stream, " 0x%x%*[,}]%*[ \n]", &value) != 1) {
X Xfree(bits);
X fclose(stream);
X return(BitmapFileInvalid);
X }
X *(ptr++) = value & 0xff;
X if (!padding || ((bytes+2) % bytes_per_line))
X *(ptr++) = value >> 8;
X }
X else
X for (bytes=0, ptr=bits; bytes<size; bytes++, ptr++) {
X if (fscanf(stream, " 0x%x%*[,}]%*[ \n]", &value) != 1) {
X Xfree(bits);
X fclose(stream);
X return(BitmapFileInvalid);
X }
X *ptr=value;
X }
X
X }
X
X if (!bits) {
X fclose(stream);
X return(BitmapFileInvalid);
X }
X *data = bits;
X *width = ww;
X *height = hh;
X
X if (x_hot)
X *x_hot = hx;
X if (y_hot)
X *y_hot = hy;
X
X fclose(stream);
X return(BitmapSuccess);
X}
END_OF_awm/XRdBitFD.c
if test 3904 -ne `wc -c <awm/XRdBitFD.c`; then
echo shar: \"awm/XRdBitFD.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f awm/bitmaps/xterm.bm -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"awm/bitmaps/xterm.bm\"
else
echo shar: Extracting \"awm/bitmaps/xterm.bm\" \(3798 characters\)
sed "s/^X//" >awm/bitmaps/xterm.bm <<'END_OF_awm/bitmaps/xterm.bm'
X/*****************************************************************************/
X/** Copyright 1988 by Evans & Sutherland Computer Corporation, **/
X/** Salt Lake City, Utah **/
X/** **/
X/** All Rights Reserved **/
X/** **/
X/** Permission to use, copy, modify, and distribute this software and **/
X/** its documentation for any purpose and without fee is hereby **/
X/** granted, provided that the above copyright notice appear in all **/
X/** copies and that both that copyright notice and this permis- **/
X/** sion notice appear in supporting documentation, and that the **/
X/** name of Evans & Sutherland not be used in advertising or publi- **/
X/** city pertaining to distribution of the software without specif- **/
X/** ic, written prior permission. **/
X/** **/
X/** EVANS & SUTHERLAND DISCLAIMS ALL WARRANTIES WITH REGARD TO **/
X/** THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILI- **/
X/** TY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND BE LIABLE **/
X/** FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAM- **/
X/** AGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, **/
X/** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS **/
X/** ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PER- **/
X/** FORMANCE OF THIS SOFTWARE. **/
X/*****************************************************************************/
X
X#define xterm_width 48
X#define xterm_height 48
Xstatic char xterm_bits[] = {
X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x00,
X 0x20, 0x00, 0x00, 0x00, 0x00, 0x03, 0x20, 0xfe, 0xff, 0xff, 0x1f, 0x05,
X 0x20, 0x01, 0x00, 0x00, 0x20, 0x09, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x11,
X 0xa0, 0xfc, 0xff, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21,
X 0xa0, 0xfc, 0x01, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21,
X 0xa0, 0xfc, 0xff, 0x3f, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21,
X 0xa0, 0xfc, 0x03, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21,
X 0xa0, 0xfc, 0xff, 0x01, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21,
X 0xa0, 0xfc, 0x00, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21,
X 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21,
X 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21,
X 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21,
X 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x11,
X 0xa0, 0x00, 0x00, 0x00, 0x40, 0x11, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x09,
X 0xa0, 0x00, 0x00, 0x00, 0x40, 0x09, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x05,
X 0x20, 0x01, 0x00, 0x00, 0x20, 0x05, 0x20, 0xfe, 0xff, 0xff, 0x1f, 0x03,
X 0x20, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x00,
X 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
X 0xc0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x00, 0x00, 0x00, 0x00, 0x03,
X 0xa0, 0xaa, 0xaa, 0xaa, 0x2a, 0x03, 0x10, 0x00, 0x00, 0x00, 0x80, 0x02,
X 0x50, 0x55, 0x55, 0x55, 0x95, 0x02, 0x08, 0x00, 0x00, 0x00, 0x40, 0x02,
X 0xa8, 0xaa, 0xaa, 0xaa, 0x4a, 0x02, 0x04, 0x00, 0x00, 0x00, 0x20, 0x01,
X 0xb4, 0xff, 0xff, 0xff, 0xad, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00,
X 0xfe, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
END_OF_awm/bitmaps/xterm.bm
if test 3798 -ne `wc -c <awm/bitmaps/xterm.bm`; then
echo shar: \"awm/bitmaps/xterm.bm\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f awm/menus/dbug.h -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"awm/menus/dbug.h\"
else
echo shar: Extracting \"awm/menus/dbug.h\" \(5236 characters\)
sed "s/^X//" >awm/menus/dbug.h <<'END_OF_awm/menus/dbug.h'
X#ident "%W% %G%"
X
X/************************************************************************
X * *
X * Copyright (c) 1984, Fred Fish *
X * All Rights Reserved *
X * *
X * This software and/or documentation is released into the *
X * public domain for personal, non-commercial use only. *
X * Limited rights to use, modify, and redistribute are hereby *
X * granted for non-commercial purposes, provided that all *
X * copyright notices remain intact and all changes are clearly *
X * documented. The author makes no warranty of any kind with *
X * respect to this product and explicitly disclaims any implied *
X * warranties of merchantability or fitness for any particular *
X * purpose. *
X * *
X ************************************************************************
X */
X
X
X/*
X * FILE
X *
X * dbug.h user include file for programs using the dbug package
X *
X * SYNOPSIS
X *
X * #include <local/dbug.h>
X *
X * SCCS ID
X *
X * @(#)dbug.h 1.6 10/3/85
X *
X * DESCRIPTION
X *
X * Programs which use the dbug package must include this file.
X * It contains the appropriate macros to call support routines
X * in the dbug runtime library.
X *
X * To disable compilation of the macro expansions define the
X * preprocessor symbol "DBUG_OFF". This will result in null
X * macros expansions so that the resulting code will be smaller
X * and faster. (The difference may be smaller than you think
X * so this step is recommended only when absolutely necessary).
X * In general, tradeoffs between space and efficiency are
X * decided in favor of efficiency since space is seldom a
X * problem on the new machines).
X *
X * All externally visible symbol names follow the pattern
X * "_db_xxx..xx_" to minimize the possibility of a dbug package
X * symbol colliding with a user defined symbol.
X *
X * Because the C preprocessor will not accept macros with a variable
X * number of arguments, there are separate DBUG_<N> macros for
X * cases N = {0,1,...NMAX}. NMAX is currently 5.
X *
X * AUTHOR
X *
X * Fred Fish
X * (Currently employed by UniSoft Systems, Berkeley, Ca.)
X * (415) 644-1230 ext 242
X * ucbvax!unisoft!fnf or dual!unisoft!fnf
X *
X */
X
X
X/*
X * Internally used dbug variables which must be global.
X */
X
X/* This gets the debugging package already being used by uwm */
X
X#include "../support.h"
X
X#ifndef DBUG_OFF
X extern int _db_on_; /* TRUE if debug currently enabled */
X extern FILE *_db_fp_; /* Current debug output stream */
X extern char *_db_process_; /* Name of current process */
X extern int _db_keyword_ (); /* Accept/reject keyword */
X extern void _db_push_ (); /* Push state, set up new state */
X extern void _db_pop_ (); /* Pop previous debug state */
X extern void _db_enter_ (); /* New user function entered */
X extern void _db_return_ (); /* User function return */
X extern void _db_printf_ (); /* Print debug output */
X extern void _db_setjmp_ (); /* Save debugger environment */
X extern void _db_longjmp_ (); /* Restore debugger environment */
X# endif
X
X
X/*
X * These macros provide a user interface into functions in the
X * dbug runtime support library. They isolate users from changes
X * in the MACROS and/or runtime support.
X *
X * The symbols "__LINE__" and "__FILE__" are expanded by the
X * preprocessor to the current source file line number and file
X * name respectively.
X *
X * WARNING --- Because the DBUG_ENTER macro allocates space on
X * the user function's stack, it must precede any executable
X * statements in the user function.
X *
X */
X
X# ifdef DBUG_OFF
X# define DBUG_ENTER(a1)
X# define DBUG_RETURN(a1) return(a1)
X# define DBUG_VOID_RETURN return
X# define DBUG_EXECUTE(keyword,a1)
X# define DBUG_2(keyword,format)
X# define DBUG_3(keyword,format,a1)
X# define DBUG_4(keyword,format,a1,a2)
X# define DBUG_5(keyword,format,a1,a2,a3)
X# define DBUG_PUSH(a1)
X# define DBUG_POP()
X# define DBUG_PROCESS(a1)
X# define DBUG_FILE (stderr)
X# define DBUG_SETJMP setjmp
X# define DBUG_LONGJMP longjmp
X# else
X# define DBUG_ENTER(a) \
X auto char *_db_func_, *_db_file_; \
X int _db_level_; \
X _db_enter_ (a,__FILE__,__LINE__,&_db_func_,&_db_file_,&_db_level_)
X# define DBUG_LEAVE \
X (_db_return_ (__LINE__, &_db_func_, &_db_file_, &_db_level_))
X# define DBUG_RETURN(a1) return (DBUG_LEAVE, (a1))
X/* define DBUG_RETURN(a1) {DBUG_LEAVE; return(a1);} Alternate form */
X# define DBUG_VOID_RETURN {DBUG_LEAVE; return;}
X# define DBUG_EXECUTE(keyword,a1) \
X if (_db_on_) {if (_db_keyword_ (keyword)) { a1; }}
X# define DBUG_2(keyword,format) \
X if (_db_on_) {_db_printf_ (__LINE__, keyword, format);}
X# define DBUG_3(keyword,format,a1) \
X if (_db_on_) {_db_printf_ (__LINE__, keyword, format, a1);}
X# define DBUG_4(keyword,format,a1,a2) \
X if (_db_on_) {_db_printf_ (__LINE__, keyword, format, a1, a2);}
X# define DBUG_5(keyword,format,a1,a2,a3) \
X if (_db_on_) {_db_printf_ (__LINE__, keyword, format, a1, a2, a3);}
X# define DBUG_PUSH(a1) _db_push_ (a1)
X# define DBUG_POP() _db_pop_ ()
X# define DBUG_PROCESS(a1) (_db_process_ = a1)
X# define DBUG_FILE (_db_fp_)
X# define DBUG_SETJMP(a1) (_db_setjmp_ (), setjmp (a1))
X# define DBUG_LONGJMP(a1,a2) (_db_longjmp_ (), longjmp (a1, a2))
X# endif
END_OF_awm/menus/dbug.h
if test 5236 -ne `wc -c <awm/menus/dbug.h`; then
echo shar: \"awm/menus/dbug.h\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of archive 3 \(of 13\).
cp /dev/null ark3isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked all 13 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
Mike Wexler(wyse!mikew) Phone: (408)433-1000 x1330
More information about the Comp.sources.x
mailing list