kent@ssbell.IMD.Sterling.COM (Kent Landfield) (01/15/90)
Submitted-by: wsl.dec.com!mikey (Mike Yang) Posting-number: Volume 5, Issue 52 Archive-name: xrooms/part02 #! /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 2 (of 14)." # Contents: ./lib/apps.h ./lib/appstatestr.h ./lib/namesstr.h # ./lib/profile.h ./lib/profparser.h ./lib/rooms.h ./lib/roomstr.h # ./utils/hash.h ./utils/list.h ./utils/machdep.h ./utils/storage.h # ./utils/storagestr.h ./wallpaper/wallpaper.c ./xrooms/xrApp.h # ./xrooms/xrGen.c ./xrooms/xrProtoIter.h ./xrooms/xrXawUI.h # Wrapped by kent@ssbell on Sun Jan 14 21:57:31 1990 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f './lib/apps.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'./lib/apps.h'\" else echo shar: Extracting \"'./lib/apps.h'\" \(2893 characters\) sed "s/^X//" >'./lib/apps.h' <<'END_OF_FILE' X#ifndef APPS_H X#define APPS_H 1 X X /*\ X * $Header: apps.h,v 5.0 90/01/10 06:53:05 erik Exp $ X * X * COPYRIGHT 1990 X * DIGITAL EQUIPMENT CORPORATION X * MAYNARD, MASSACHUSETTS X * ALL RIGHTS RESERVED. X * X * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND X * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. X * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE X * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED X * WARRANTY. X * X * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT X * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN X * ADDITION TO THAT SET FORTH ABOVE. X * X * Permission to use, copy, modify, and distribute this software and its X * documentation for any purpose and without fee is hereby granted, provided X * that the above copyright notice appear in all copies and that both that X * copyright notice and this permission notice appear in supporting X * documentation, and that the name of Digital Equipment Corporation not be X * used in advertising or publicity pertaining to distribution of the X * software without specific, written prior permission. X \*/ X X /*\ X X \*/ X /*\ X * Operations on a group of Apps (that live in a group of Rooms). X * This package implements a group of Apps and their interactions X * with rooms. There is a fair amount of interdepency between X * this package and rooms.c. X * X * This package handles name collisions between Apps, App lifetimes X * (i.e. automatically destroying transient Apps when they exit, and X * matching up permanent Apps with new windows), and figures out X * which Room local state (if any) to change in response to an X * external change on a window. It makes sure that all of the X * active Apps (and none of the inactive Apps) are realized in all X * rooms. X \*/ X X#include "app.h" X Xtypedef Boolean (*AppsIterFunc)(/* arg, pApp */); X Xextern unsigned int appsDebug; X Xextern AppPtr LookupApp(/* name */); Xextern AppPtr LookupActiveApp(/* name */); X Xextern AppPtr GetApp(/*name,onlyInactive*/); Xextern Boolean AppActivated(/* pApp, pRealState */); Xextern Boolean AppDeactivated(/*pApp*/); Xextern Boolean AppStateChanged(/* pApp, pNewState */); X Xextern Boolean SetAppRoomState(/* pApp, pRoom, pNewState */); Xextern Boolean SetAppPermanence(/* pApp, permanent */); X Xextern void AppsIterate(/* func, arg */); Xextern void ActiveAppsIterate(/* func, arg */); X Xextern Boolean _AppsInitIter(/* pState */); Xextern Boolean _AppsIterNext(/* pState, ppApp */); Xextern void AppsEndIterator(/* state */); X X#define ActiveApps ((unsigned)1) X#define AllApps ((unsigned)2) X X#define AppsIterator(w,pa,s) \ X if (_AppsInitIter((w),&(s))) \ X while (_AppsIterNext((s),&(pa))) X#endif /* APPS_H */ END_OF_FILE if test 2893 -ne `wc -c <'./lib/apps.h'`; then echo shar: \"'./lib/apps.h'\" unpacked with wrong size! fi # end of './lib/apps.h' fi if test -f './lib/appstatestr.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'./lib/appstatestr.h'\" else echo shar: Extracting \"'./lib/appstatestr.h'\" \(3084 characters\) sed "s/^X//" >'./lib/appstatestr.h' <<'END_OF_FILE' X#ifndef APPSTATESTR_H X#define APPSTATESTR_H X X /*\ X * $Header: appstatestr.h,v 5.0 90/01/10 06:53:17 erik Exp $ X * X * COPYRIGHT 1990 X * DIGITAL EQUIPMENT CORPORATION X * MAYNARD, MASSACHUSETTS X * ALL RIGHTS RESERVED. X * X * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND X * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. X * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE X * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED X * WARRANTY. X * X * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT X * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN X * ADDITION TO THAT SET FORTH ABOVE. X * X * Permission to use, copy, modify, and distribute this software and its X * documentation for any purpose and without fee is hereby granted, provided X * that the above copyright notice appear in all copies and that both that X * copyright notice and this permission notice appear in supporting X * documentation, and that the name of Digital Equipment Corporation not be X * used in advertising or publicity pertaining to distribution of the X * software without specific, written prior permission. X \*/ X X#include "appstate.h" X Xtypedef struct _AppStateRec { X unsigned flags; X unsigned bolts; X unsigned looseBolts; X WinState winState; X int x,y; X unsigned width,height; X} AppStateRec; X X#define AS_DFLT_SCREEN_WIDTH 1024 X#define AS_DFLT_SCREEN_HEIGHT 864 X X#define ASHasX(s) ((s)&&((s)->flags&asXValue)) X#define ASHasY(s) ((s)&&((s)->flags&asYValue)) X#define ASHasWidth(s) ((s)&&((s)->flags&asWidthValue)) X#define ASHasHeight(s) ((s)&&((s)->flags&asHeightValue)) X#define ASHasWinState(s) ((s)&&((s)->flags&asWinStateValue)) X#define ASHasAny(s) ((s)&&(((s)->flags&asAllValues)!=asNoValue)) X#define ASHasAll(s) ((s)&&(((s)->flags&asAllValues)==asAllValues)) X#define ASHasWholeGeom(s) ((s)&&(((s)->flags&asGeomValues)==asGeomValues)) X#define ASHasAnyGeom(s) ((s)&&(((s)->flags&asGeomValues)!=asNoValue)) X#define ASHasNegativeX(s) ((s)&&((s)->flags&asXNegative)) X#define ASHasNegativeY(s) ((s)&&((s)->flags&asYNegative)) X X#define ASLegalRealState(s) (((s)!=NullAppState)&&ASHasAll(s)&&\ X (!ASHasNegativeX(s))&&(!ASHasNegativeY(s))&&\ X ((s)->bolts==asNoValue)&&\ X ((s)->looseBolts==asNoValue)) X#define ASLegalProfileState(s) (((s)==NullAppState)||(!ASHasWinState(s))||\ X (((s)->winState!=asInactive)&&\ X ((s)->winState!=asWithdrawn))) X#define ASDontCareState(s) (((s)==NullAppState)||(!ASHasAny(s))) X X#define ASWinStateBolted(s) ((s)&&((s)->bolts&asWinStateValue)) X#define ASXBolted(s) ((s)&&((s)->bolts&asXValue)) X#define ASYBolted(s) ((s)&&((s)->bolts&asYValue)) X#define ASWidthBolted(s) ((s)&&((s)->bolts&asWidthValue)) X#define ASHeightBolted(s) ((s)&&((s)->bolts&asHeightValue)) X#define ASAnyBolted(s) ((s)&&(((s)->bolts&asAllValues)!=asNoValue)) X#define ASAnyGeomBolted(s) ((s)&&(((s)->bolts&asGeomValues)!=asNoValue)) X X#endif /* APPSTATESTR_H */ END_OF_FILE if test 3084 -ne `wc -c <'./lib/appstatestr.h'`; then echo shar: \"'./lib/appstatestr.h'\" unpacked with wrong size! fi # end of './lib/appstatestr.h' fi if test -f './lib/namesstr.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'./lib/namesstr.h'\" else echo shar: Extracting \"'./lib/namesstr.h'\" \(3595 characters\) sed "s/^X//" >'./lib/namesstr.h' <<'END_OF_FILE' X#ifndef NAMESSTR_H X#define NAMESSTR_H 1 X X /*\ X * $Header: namesstr.h,v 5.0 90/01/10 06:53:45 erik Exp $ X * X * COPYRIGHT 1990 X * DIGITAL EQUIPMENT CORPORATION X * MAYNARD, MASSACHUSETTS X * ALL RIGHTS RESERVED. X * X * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND X * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. X * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE X * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED X * WARRANTY. X * X * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT X * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN X * ADDITION TO THAT SET FORTH ABOVE. X * X * Permission to use, copy, modify, and distribute this software and its X * documentation for any purpose and without fee is hereby granted, provided X * that the above copyright notice appear in all copies and that both that X * copyright notice and this permission notice appear in supporting X * documentation, and that the name of Digital Equipment Corporation not be X * used in advertising or publicity pertaining to distribution of the X * software without specific, written prior permission. X \*/ X X#include "regex.h" X#include "names.h" X Xtypedef struct _NPStateRec { X Boolean done; X char *resultName; X char *resultClass; X char *lastMatchString; X RXMatchesRec lastMatchSubStrings; X NameResolveFunc ResolveFunc; X ChangeNamedFunc ChangeFunc; X Opaque OSPrivate; X} NPStateRec; X Xtypedef struct _NPQuestionExprRec { X NPBoolExprPtr pCondition; X NPStringExprPtr pTrue; X NPStringExprPtr pFalse; X} NPQuestionExprRec, *NPQuestionExprPtr; X Xtypedef struct _NPConcatExprRec { X NPStringExprPtr pLeft; X NPStringExprPtr pRight; X} NPConcatExprRec, *NPConcatExprPtr; X Xtypedef struct _NPStringExprRec { X unsigned type; X union { X char *constant; X NPConcatExprRec concat; X NPQuestionExprRec conditional; X } u; X} NPStringExprRec; X Xtypedef struct _NPBoolExprRec { X Boolean invert; X NPStringExprPtr left; X NPStringExprPtr right; X} NPBoolExprRec; X Xtypedef struct _NPIfStatementRec { X NPBoolExprPtr condition; X NPStatementPtr thenClause; X NPStatementPtr elseClause; X} NPIfStatementRec,*NPIfStatementPtr; X#define NullNPIfStatement ((NPIfStatementPtr)NULL) X Xtypedef struct _NPCaseRec { X NPStringExprPtr pattern; X NPStatementPtr statement; X struct _NPCaseRec *pNext; X} NPCaseRec; X Xtypedef struct _NPSwitchStatementRec { X NPStringExprPtr string; X NPStatementPtr dfltCase; X NPCasePtr cases; X} NPSwitchStatementRec, *NPSwitchStatementPtr; X#define NullNPSwitchStatement ((NPSwitchStatementPtr)NULL) X Xtypedef struct _NPAssignStatementRec { X Boolean append; X NPStringExprPtr pLHS; /* identifier or property only! */ X NPStringExprPtr pValue; X} NPAssignStatementRec, *NPAssignStatementPtr; X#define NullNPAssignStatementRec ((NPAssignStatementPtr)NULL) X Xtypedef struct _NPStatementRec { X unsigned what; X union { X NPIfStatementRec ifS; X NPSwitchStatementRec switchS; X NPStringExprPtr pUseExpr; X NPStringExprPtr pClassExpr; X NPAssignStatementRec assignS; X char *comment; X } u; X struct _NPStatementRec *pNext; X} NPStatementRec; X X#define NPIfStatement ((unsigned)(1<<0)) X#define NPSwitchStatement ((unsigned)(1<<1)) X#define NPUseStatement ((unsigned)(1<<2)) X#define NPClassStatement ((unsigned)(1<<3)) X#define NPIgnoreStatement ((unsigned)(1<<4)) X#define NPAssignStatement ((unsigned)(1<<5)) X#define NPComment ((unsigned)(1<<9)) X X#endif /* NAMESSTR_H */ END_OF_FILE if test 3595 -ne `wc -c <'./lib/namesstr.h'`; then echo shar: \"'./lib/namesstr.h'\" unpacked with wrong size! fi # end of './lib/namesstr.h' fi if test -f './lib/profile.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'./lib/profile.h'\" else echo shar: Extracting \"'./lib/profile.h'\" \(2186 characters\) sed "s/^X//" >'./lib/profile.h' <<'END_OF_FILE' X#ifndef PROFILE_H X#define PROFILE_H 1 X X /*\ X * $Header: profile.h,v 5.0 90/01/10 06:53:54 erik Exp $ X * X * COPYRIGHT 1990 X * DIGITAL EQUIPMENT CORPORATION X * MAYNARD, MASSACHUSETTS X * ALL RIGHTS RESERVED. X * X * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND X * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. X * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE X * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED X * WARRANTY. X * X * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT X * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN X * ADDITION TO THAT SET FORTH ABOVE. X * X * Permission to use, copy, modify, and distribute this software and its X * documentation for any purpose and without fee is hereby granted, provided X * that the above copyright notice appear in all copies and that both that X * copyright notice and this permission notice appear in supporting X * documentation, and that the name of Digital Equipment Corporation not be X * used in advertising or publicity pertaining to distribution of the X * software without specific, written prior permission. X \*/ X Xextern unsigned profileDebug; X Xtypedef struct _CommentRec { X char *text; X struct _CommentRec *pNext; X} CommentRec,*CommentPtr; X#define NullComment ((CommentPtr)NULL) X Xextern void profileSetResolve(/* pFunc */); Xextern void profileSetChange(/* pFunc */); X Xextern Boolean profileForNames(/* name, pNames */); Xextern Boolean profileGetName(/* osPriv, ppName, ppClass */); X Xextern Boolean profileForRoom(/* pRoom */); Xextern Boolean profileForApp(/* pApp */); Xextern Boolean profileAddComment(/* comment */); Xextern CommentPtr profileGetComments(); X Xextern Boolean profileRead(/*pScan*/); Xextern Boolean profileWrite(/*pFile, writeRooms*/); X Xextern void profileForNamesDestroy(/* name */); Xextern void profileForAppDestroy(/* appName */); Xextern void profileForRoomDestroy(/* roomName */); X X#define PROFILE_NAME_COL 13 X#define PROFILE_STATE_COL 40 X X#endif /* PROFILE_H */ END_OF_FILE if test 2186 -ne `wc -c <'./lib/profile.h'`; then echo shar: \"'./lib/profile.h'\" unpacked with wrong size! fi # end of './lib/profile.h' fi if test -f './lib/profparser.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'./lib/profparser.h'\" else echo shar: Extracting \"'./lib/profparser.h'\" \(2420 characters\) sed "s/^X//" >'./lib/profparser.h' <<'END_OF_FILE' X#ifndef PROFPARSER_H X#define PROFPARSER_H 1 X X /*\ X * $Header: profparser.h,v 5.0 90/01/10 06:54:00 erik Exp $ X * X * COPYRIGHT 1990 X * DIGITAL EQUIPMENT CORPORATION X * MAYNARD, MASSACHUSETTS X * ALL RIGHTS RESERVED. X * X * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND X * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. X * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE X * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED X * WARRANTY. X * X * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT X * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN X * ADDITION TO THAT SET FORTH ABOVE. X * X * Permission to use, copy, modify, and distribute this software and its X * documentation for any purpose and without fee is hereby granted, provided X * that the above copyright notice appear in all copies and that both that X * copyright notice and this permission notice appear in supporting X * documentation, and that the name of Digital Equipment Corporation not be X * used in advertising or publicity pertaining to distribution of the X * software without specific, written prior permission. X \*/ X X#include "strtbl.h" X#include "appstate.h" X#include "rooms.h" X#include "apps.h" X#include "profile.h" X#include "profscan.h" X#include "names.h" X Xtypedef struct _ParserWinStateRec { X WinState winState; X Boolean bolted; X} ParserWinStateRec, *ParserWinStatePtr; X Xtypedef struct _ParserNamedStateRec { X StringToken name; X AppStatePtr pState; X} ParserNamedStateRec,*ParserNamedStatePtr; X Xtypedef struct _ParserStateRec { X union { X ParserWinStateRec ws; X AppStatePtr pGeomState; X ParserNamedStateRec state; X } u; X struct _ParserStateRec *pNext; X} ParserStateRec,*ParserStatePtr; X#define NullParserState ((ParserStatePtr)NULL) X Xextern RoomPtr parserCreateRoom(/* nameStr, pStates */); Xextern AppPtr parserCreateApp(/* nameStr, pDflt, pStates */); X Xextern AppStatePtr parserCreateState(/* pPWinState, pPGeom */); Xextern ParserStatePtr parserAppendState(/* pState1, pState2 */); Xextern ParserStatePtr parserCreateNamedState(/* nameStr, pState */); Xextern ParserStatePtr parserCreateWinState(/* winState, bolted */); Xextern ParserStatePtr parserCreateGeom(/* pGeom, bolted */); X#endif /* PROFPARSER_H */ END_OF_FILE if test 2420 -ne `wc -c <'./lib/profparser.h'`; then echo shar: \"'./lib/profparser.h'\" unpacked with wrong size! fi # end of './lib/profparser.h' fi if test -f './lib/rooms.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'./lib/rooms.h'\" else echo shar: Extracting \"'./lib/rooms.h'\" \(2283 characters\) sed "s/^X//" >'./lib/rooms.h' <<'END_OF_FILE' X#ifndef ROOMS_H X#define ROOMS_H 1 X X /*\ X * $Header: rooms.h,v 5.0 90/01/10 06:54:28 erik Exp $ X * X * COPYRIGHT 1990 X * DIGITAL EQUIPMENT CORPORATION X * MAYNARD, MASSACHUSETTS X * ALL RIGHTS RESERVED. X * X * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND X * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. X * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE X * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED X * WARRANTY. X * X * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT X * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN X * ADDITION TO THAT SET FORTH ABOVE. X * X * Permission to use, copy, modify, and distribute this software and its X * documentation for any purpose and without fee is hereby granted, provided X * that the above copyright notice appear in all copies and that both that X * copyright notice and this permission notice appear in supporting X * documentation, and that the name of Digital Equipment Corporation not be X * used in advertising or publicity pertaining to distribution of the X * software without specific, written prior permission. X \*/ X X /*\ X * Operations on rooms X \*/ X X#include "room.h" X Xtypedef Boolean (*RoomsIterFunc)(/* pRoom, arg */); Xtypedef RoomPtr (*RoomFinderFunc)(); X Xextern unsigned int roomsDebug; X Xextern int NumberOfRooms(); X Xextern RoomPtr LookupRoom(/* name */); Xextern RoomPtr CreateRoom(/* name */); Xextern Boolean DestroyRoom(/* pRoom */); Xextern void RoomsIterate(/* func, arg */); X Xextern Boolean SwitchToRoom(/* pRoom */); Xextern RoomPtr GetCurrentRoom(); X Xextern void SetDefaultRoomFinder(/* pFinder */); Xextern void SetDefaultRoomFeedback(/* pFunc */); X Xextern Boolean _RoomsInitIter(/* pState */); Xextern Boolean _RoomsIterNext(/* pState, ppRoom */); Xextern Boolean _RoomsIterNextVisible(/* pState, ppRoom */); Xextern void RoomsEndIterator(/* state */); X X#define RoomsIterator(pa,s) \ X if (_RoomsInitIter(&(s))) \ X while (_RoomsIterNext((s),&(pa))) X X#define VisibleRoomsIterator(pa,s) \ X if (_RoomsInitIter(&(s))) \ X while (_RoomsIterNext((s),&(pa))) X X#endif /* ROOMS_H */ END_OF_FILE if test 2283 -ne `wc -c <'./lib/rooms.h'`; then echo shar: \"'./lib/rooms.h'\" unpacked with wrong size! fi # end of './lib/rooms.h' fi if test -f './lib/roomstr.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'./lib/roomstr.h'\" else echo shar: Extracting \"'./lib/roomstr.h'\" \(3304 characters\) sed "s/^X//" >'./lib/roomstr.h' <<'END_OF_FILE' X#ifndef ROOMSTR_H X#define ROOMSTR_H 1 X X /*\ X * $Header: roomstr.h,v 5.0 90/01/10 06:54:31 erik Exp $ X * X * COPYRIGHT 1990 X * DIGITAL EQUIPMENT CORPORATION X * MAYNARD, MASSACHUSETTS X * ALL RIGHTS RESERVED. X * X * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND X * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. X * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE X * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED X * WARRANTY. X * X * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT X * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN X * ADDITION TO THAT SET FORTH ABOVE. X * X * Permission to use, copy, modify, and distribute this software and its X * documentation for any purpose and without fee is hereby granted, provided X * that the above copyright notice appear in all copies and that both that X * copyright notice and this permission notice appear in supporting X * documentation, and that the name of Digital Equipment Corporation not be X * used in advertising or publicity pertaining to distribution of the X * software without specific, written prior permission. X \*/ X X#include "list.h" X#include "room.h" X Xtypedef struct _RoomRec { X StringToken name; X Boolean active; X unsigned visibility; X int numApps; X int numLocalApps; X ListPtr contents; X Opaque priv; X RoomFeedbackFunc feedback; X} RoomRec; X Xtypedef struct _RoomAppInfoRec { X AppPtr pApp; X AppStatePtr pDefault; X AppStatePtr pReal; X AppStatePtr pLocal; X} RoomAppInfoRec,*RoomAppInfoPtr; X#define NullRoomAppInfo ((RoomAppInfoPtr)NULL) X X /* macros to make room.c more readable */ X#define _HasLocalState(r,ri) ((ri)->pLocal!=NullAppState) X#define _GetVisibleState(r,ri) ((ri)->pLocal!=NullAppState?\ X (ri)->pLocal:\ X ((ri)->pDefault)) X X#define _HasLocalApps(r) ((r)->numLocalApps>0) X#define _NoLocalApps(r) ((r)->numLocalApps<1) X X#define _Feedback(r,w,a) if ((r)->feedback!=(RoomFeedbackFunc)NULL) {\ X ((*(r)->feedback)(r,w,a));\ X } X X#define _IsActive(r) ((r)->active) X#define _IsInactive(r) (!(r)->active) X X#define _IsVisible(r) ((r)->visibility&roomVisible) X#define _IsHidden(r) (!_IsVisible(r)) X#define _WhenActive(r) ((r)->visibility&roomWhenActive) X#define _WhenNonEmpty(r) ((r)->visibility&roomWhenNonEmpty) X#define _Always(r) ((r)->visibility&roomAlways) X X#define _SetVisible(r) ((r)->visibility|=roomVisible) X#define _SetHidden(r) ((r)->visibility&=(~roomVisible)) X X#define _RealStateIsWrong(r,ri,v) \ X (_IsActive(r)&&(!asRealMatchesProfile((ri)->pReal,(v)))) X#define _CheckRealState(r,ri) {\ X AppStatePtr vis= _GetVisibleState(r,ri);\ X if (_RealStateIsWrong(r,ri,vis)) {\ X appSetCurrent((ri)->pApp,vis,False);\ X }} X X#define _LocalAppGone(pr) {\ X (pr)->numLocalApps--;\ X if ((!_Always(pr))&&_IsVisible(pr)&&\ X _WhenNonEmpty(pr)&&_NoLocalApps(pr)) {\ X if ((!_WhenActive(pr))||(_IsInactive(pr))) {\ X _SetHidden(pr);\ X _Feedback(pr,roomFBHidden,NullApp);\ X }\ X }} X X#define _LocalAppAdded(pr) {\ X (pr)->numLocalApps++;\ X if (_WhenNonEmpty(pr)&&_IsHidden(pr)) {\ X _SetVisible(pr);\ X _Feedback(pr,roomFBVisible,NullApp);\ X }} X X#endif /* ROOMSTR_H */ END_OF_FILE if test 3304 -ne `wc -c <'./lib/roomstr.h'`; then echo shar: \"'./lib/roomstr.h'\" unpacked with wrong size! fi # end of './lib/roomstr.h' fi if test -f './utils/hash.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'./utils/hash.h'\" else echo shar: Extracting \"'./utils/hash.h'\" \(2370 characters\) sed "s/^X//" >'./utils/hash.h' <<'END_OF_FILE' X#ifndef HASH_H X#define HASH_H 1 X X /*\ X * $Header: hash.h,v 5.0 90/01/10 06:50:48 erik Exp $ X * X * COPYRIGHT 1990 X * DIGITAL EQUIPMENT CORPORATION X * MAYNARD, MASSACHUSETTS X * ALL RIGHTS RESERVED. X * X * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND X * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. X * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE X * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED X * WARRANTY. X * X * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT X * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN X * ADDITION TO THAT SET FORTH ABOVE. X * X * Permission to use, copy, modify, and distribute this software and its X * documentation for any purpose and without fee is hereby granted, provided X * that the above copyright notice appear in all copies and that both that X * copyright notice and this permission notice appear in supporting X * documentation, and that the name of Digital Equipment Corporation not be X * used in advertising or publicity pertaining to distribution of the X * software without specific, written prior permission. X \*/ X X#include "storage.h" X Xtypedef struct _HashTableRec *HashTablePtr; X#define NullHashTable ((HashTablePtr)NULL) X Xtypedef Boolean (*HashIterFunc)(/* row, key, pData, arg */); X Xextern HashTablePtr htCreate(/* size, keyType, dataType */); Xextern void htDestroy(/* table */); X Xextern GenData htAdd(/* table, key, data */); Xextern GenData htLookup(/* table, key */); Xextern GenData htRemove(/* table, key */); X Xextern int htSize(/* table */); Xextern int htNumStored(/* table */); X Xextern Boolean htResize(/* table, newSize */); Xextern Boolean htConvertKeys(/* table, cvtFunc, keyDesc */); Xextern Boolean htConvertData(/* table, cvtFunc, dataDesc */); Xextern Boolean htChangeHashFunc(/* table, newFunc */); X Xextern void htIterate(/* table, pFunc, arg */); X Xextern Boolean _htInitIter(/* table, ppData */); Xextern Boolean _htIterNext(/* table, pState, ppData */); Xextern void htEndIterator(/* table, state */); X X#define htIterator(t,k,d,s) \ X if (_htInitIter((t),&(s))) \ X while (_htIterNext((t),(Opaque)(s),(GenKey *)&(k),(GenData *)&(d))) X X#endif /* HASH_H */ END_OF_FILE if test 2370 -ne `wc -c <'./utils/hash.h'`; then echo shar: \"'./utils/hash.h'\" unpacked with wrong size! fi # end of './utils/hash.h' fi if test -f './utils/list.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'./utils/list.h'\" else echo shar: Extracting \"'./utils/list.h'\" \(2236 characters\) sed "s/^X//" >'./utils/list.h' <<'END_OF_FILE' X#ifndef LIST_H X#define LIST_H 1 X X /*\ X * $Header: list.h,v 5.0 90/01/10 06:50:58 erik Exp $ X * X * COPYRIGHT 1990 X * DIGITAL EQUIPMENT CORPORATION X * MAYNARD, MASSACHUSETTS X * ALL RIGHTS RESERVED. X * X * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND X * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. X * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE X * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED X * WARRANTY. X * X * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT X * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN X * ADDITION TO THAT SET FORTH ABOVE. X * X * Permission to use, copy, modify, and distribute this software and its X * documentation for any purpose and without fee is hereby granted, provided X * that the above copyright notice appear in all copies and that both that X * copyright notice and this permission notice appear in supporting X * documentation, and that the name of Digital Equipment Corporation not be X * used in advertising or publicity pertaining to distribution of the X * software without specific, written prior permission. X \*/ X X#include "storage.h" X Xtypedef struct _ListRec *ListPtr; Xtypedef Comparison (*ListSortFunc)(/* key1, key2 */); X#define NullList ((ListPtr)NULL) X#define NullListSortFunc ((ListSortFunc)NULL) X Xextern unsigned listDebug; X Xextern ListPtr lCreate(/* size, sortFunc, keyType, dataType */); Xextern void lDestroy(/* pList */); X Xextern int lNItems(/* pList */); X Xextern Boolean lAdd(/* pList, key, data */); Xextern Boolean lStore(/* pList, key, data */); Xextern Boolean lRemove(/* pList, key */); Xextern Boolean lRemoveAll(/* pList */); Xextern Boolean lLookup(/* pList, key, pNItems, ppData */); X Xextern void lIterate(/* pList, pFunc, arg */); X Xextern Boolean _lInitIter(/* pList, ppData */); Xextern Boolean _lIterNext(/* pList, pState, ppData */); Xextern void lEndIterator(/* pList, state */); X X#define lIterator(l,k,d,s) \ X if (_lInitIter((l),&s)) \ X while (_lIterNext((l),&(s),(GenKey *)&(k),(GenData *)&(d))) X X#endif /* LIST_H */ END_OF_FILE if test 2236 -ne `wc -c <'./utils/list.h'`; then echo shar: \"'./utils/list.h'\" unpacked with wrong size! fi # end of './utils/list.h' fi if test -f './utils/machdep.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'./utils/machdep.h'\" else echo shar: Extracting \"'./utils/machdep.h'\" \(2466 characters\) sed "s/^X//" >'./utils/machdep.h' <<'END_OF_FILE' X#ifndef MACHDEP_H X#define MACHDEP_H 1 X X /*\ X * $Header: machdep.h,v 5.1 90/01/11 17:32:57 erik Exp $ X * X * COPYRIGHT 1990 X * DIGITAL EQUIPMENT CORPORATION X * MAYNARD, MASSACHUSETTS X * ALL RIGHTS RESERVED. X * X * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND X * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. X * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE X * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED X * WARRANTY. X * X * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT X * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN X * ADDITION TO THAT SET FORTH ABOVE. X * X * Permission to use, copy, modify, and distribute this software and its X * documentation for any purpose and without fee is hereby granted, provided X * that the above copyright notice appear in all copies and that both that X * copyright notice and this permission notice appear in supporting X * documentation, and that the name of Digital Equipment Corporation not be X * used in advertising or publicity pertaining to distribution of the X * software without specific, written prior permission. X \*/ X X /*\ X * This has only been tested (recently) for VAXen and MIPSEL. X * Any other definitions in this file are a best-shot, and provided X * as a convenience. We'd appreciate it if you could send us mail X * to give us correct values for any of these. X \*/ X X#define mdLSBFirst 0 X#define mdMSBFirst 1 X X#if (defined vax)||(defined i386) X X#define mdByteOrder mdLSBFirst X#define mdBitOrder mdLSBFirst X#define mdIntSize 32 X#define mdHasAlloca 1 X X#define MACHINE_KNOWN X#endif X X#if (defined MIPSEL)||(defined sun)||(defined ibm032)||(defined apollo) X X#define mdByteOrder mdLSBFirst X#define mdBitOrder mdLSBFirst X#define mdIntSize 32 X#define mdHasAlloca 1 X X#define MACHINE_KNOWN X#endif X X#ifndef MACHINE_KNOWN XERROR -- define your machine!! X#endif /* MACHINE_KNOWN */ X Xtypedef char mdINT8; Xtypedef unsigned char mdCARD8; X X#if mdIntSize == 32 Xtypedef short mdINT16; Xtypedef unsigned short mdCARD16; Xtypedef int mdINT32; Xtypedef unsigned int mdCARD32; X#elif mdIntSize == 16 Xtypedef int mdINT16; Xtypedef unsigned int mdCARD16; Xtypedef long mdINT32; Xtypedef unsigned long mdCARD32; X#else XERROR -- weird integer size X#endif /* mdIntSize */ X X#endif /* MACHDEP_H */ END_OF_FILE if test 2466 -ne `wc -c <'./utils/machdep.h'`; then echo shar: \"'./utils/machdep.h'\" unpacked with wrong size! fi # end of './utils/machdep.h' fi if test -f './utils/storage.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'./utils/storage.h'\" else echo shar: Extracting \"'./utils/storage.h'\" \(2439 characters\) sed "s/^X//" >'./utils/storage.h' <<'END_OF_FILE' X#ifndef STORAGE_H X#define STORAGE_H 1 X X /*\ X * $Header: storage.h,v 5.0 90/01/10 06:51:17 erik Exp $ X * X * COPYRIGHT 1990 X * DIGITAL EQUIPMENT CORPORATION X * MAYNARD, MASSACHUSETTS X * ALL RIGHTS RESERVED. X * X * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND X * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. X * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE X * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED X * WARRANTY. X * X * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT X * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN X * ADDITION TO THAT SET FORTH ABOVE. X * X * Permission to use, copy, modify, and distribute this software and its X * documentation for any purpose and without fee is hereby granted, provided X * that the above copyright notice appear in all copies and that both that X * copyright notice and this permission notice appear in supporting X * documentation, and that the name of Digital Equipment Corporation not be X * used in advertising or publicity pertaining to distribution of the X * software without specific, written prior permission. X \*/ X X /*\ X * Declarations for generic storage structure keys and X * data. X \*/ X Xtypedef unsigned long GenKey; Xtypedef unsigned long GenData; X Xtypedef int (*HashFunc)(/* key */); Xtypedef GenKey (*KeyConvertFunc)(/* oldKey */); Xtypedef GenData (*DataConvertFunc)(/* oldData */); Xtypedef Boolean (*GenIterFunc)(/* key, data, arg */); X Xtypedef struct _GenKeyDescRec *GenKeyDescPtr; Xtypedef struct _GenDataDescRec *GenDataDescPtr; X X#define NullGenKeyDesc ((GenKeyDescPtr)NULL) X#define NullGenDataDesc ((GenDataDescPtr)NULL) X Xextern int genHashString(/* key */); Xextern GenKey genReplaceStringData(/* oldData */); Xextern GenData genDupStringData(/* data */); Xextern Comparison genCompareStringKey(/* key1, key2 */); X Xextern GenKeyDescPtr genStringKeyType; Xextern GenKeyDescPtr genFreedStringKeyType; Xextern GenKeyDescPtr genIntegerKeyType; Xextern GenKeyDescPtr genDefaultKeyType; X Xextern GenDataDescPtr genFreedStringDataType; Xextern GenDataDescPtr genPointerDataType; Xextern GenDataDescPtr genFreedPointerDataType; Xextern GenDataDescPtr genIntegerDataType; Xextern GenDataDescPtr genDefaultDataType; X X#endif /* ifndef STORAGE_H */ END_OF_FILE if test 2439 -ne `wc -c <'./utils/storage.h'`; then echo shar: \"'./utils/storage.h'\" unpacked with wrong size! fi # end of './utils/storage.h' fi if test -f './utils/storagestr.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'./utils/storagestr.h'\" else echo shar: Extracting \"'./utils/storagestr.h'\" \(2607 characters\) sed "s/^X//" >'./utils/storagestr.h' <<'END_OF_FILE' X#ifndef STORAGESTR_H X#define STORAGESTR_H 1 X X /*\ X * $Header: storagestr.h,v 5.0 90/01/10 06:51:20 erik Exp $ X * X * COPYRIGHT 1990 X * DIGITAL EQUIPMENT CORPORATION X * MAYNARD, MASSACHUSETTS X * ALL RIGHTS RESERVED. X * X * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND X * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. X * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE X * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED X * WARRANTY. X * X * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT X * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN X * ADDITION TO THAT SET FORTH ABOVE. X * X * Permission to use, copy, modify, and distribute this software and its X * documentation for any purpose and without fee is hereby granted, provided X * that the above copyright notice appear in all copies and that both that X * copyright notice and this permission notice appear in supporting X * documentation, and that the name of Digital Equipment Corporation not be X * used in advertising or publicity pertaining to distribution of the X * software without specific, written prior permission. X \*/ X X#include "storage.h" X Xtypedef Comparison (*CompareKeyFunc)(/* key1, key2 */); Xtypedef GenKey (*StoreKeyFunc)(/* key */); Xtypedef void (*RemoveKeyFunc)(/* key */); Xtypedef GenData (*StoreDataFunc)(/* data */); Xtypedef GenData (*ReplaceDataFunc)(/* newData, oldData */); Xtypedef GenData (*RemoveDataFunc)(/* data */); Xtypedef Boolean (*StorageIterateFunc)(/* key, pData, arg */); X Xtypedef struct _GenKeyDescRec { X HashFunc dfltHash; X CompareKeyFunc compare; X StoreKeyFunc store; X RemoveKeyFunc remove; X GenKey null; X} GenKeyDescRec; X Xtypedef struct _GenDataDescRec { X StoreDataFunc store; X ReplaceDataFunc replace; X RemoveDataFunc remove; X GenData null; X} GenDataDescRec; X X#define _genCompareKey(pkt,k1,k2) \ X ((pkt)->compare?(*(pkt)->compare)((k1),(k2)):\ X ((k1)>(k2)?Greater:((k1)<(k2)?Less:Equal))) X#define _genStoreKey(pkt,k) ((pkt)->store?(*(pkt)->store)(k):(k)) X#define _genRemoveKey(pkt,k) { if ((pkt)->remove) (*(pkt)->remove)(k); } X#define _genNullKey(pkt) ((pkt)->null) X X#define _genStoreData(pdt,d) ((pdt)->store?(*(pdt)->store)(d):(d)) X#define _genReplaceData(pdt,nd,pod) \ X ((pdt)->replace?(*(pdt)->replace)((nd),(pod)):\ X (nd)) X#define _genRemoveData(pdt,d) ((pdt)->remove?(*(pdt)->remove)((d)):(d)) X#define _genNullData(pdt) ((pdt)->null) X X#endif END_OF_FILE if test 2607 -ne `wc -c <'./utils/storagestr.h'`; then echo shar: \"'./utils/storagestr.h'\" unpacked with wrong size! fi # end of './utils/storagestr.h' fi if test -f './wallpaper/wallpaper.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'./wallpaper/wallpaper.c'\" else echo shar: Extracting \"'./wallpaper/wallpaper.c'\" \(4061 characters\) sed "s/^X//" >'./wallpaper/wallpaper.c' <<'END_OF_FILE' X#define MAXROOMS 100 X X /*\ X * $Header: wallpaper.c,v 5.0 90/01/10 07:05:05 erik Exp $ X * X * COPYRIGHT 1990 X * DIGITAL EQUIPMENT CORPORATION X * MAYNARD, MASSACHUSETTS X * ALL RIGHTS RESERVED. X * X * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND X * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. X * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE X * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED X * WARRANTY. X * X * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT X * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN X * ADDITION TO THAT SET FORTH ABOVE. X * X * Permission to use, copy, modify, and distribute this software and its X * documentation for any purpose and without fee is hereby granted, provided X * that the above copyright notice appear in all copies and that both that X * copyright notice and this permission notice appear in supporting X * documentation, and that the name of Digital Equipment Corporation not be X * used in advertising or publicity pertaining to distribution of the X * software without specific, written prior permission. X \*/ X X#include <stdio.h> X#include <strings.h> X#include <malloc.h> X#include <X11/Xlib.h> X Xtypedef struct _RoomInfoRec { X char *name; X Atom atom; X char *cmd; X} RoomInfoRec, *RoomInfo; X XDisplay *dpy; XRoomInfoRec rooms[MAXROOMS]; Xint numrooms = 0; XAtom ROOMS_CURRENT; X XPunt(str) X char *str; X{ X fprintf(stderr, "%s\n", str); X exit(1); X} X Xchar *MallocACopy(str) X char *str; X{ X return strcpy(malloc((unsigned) strlen(str)+1),str); X} X Xmain(argc, argv) X int argc; X char **argv; X{ X char homeDir[512], buf[1024], *ptr, *ptr2; X char *displayname = NULL; X XEvent event; X int i; X FILE *fid; X Atom oldroom, curroom; X Atom actualtype; X unsigned long actualformat, nitems, bytesafter; X char *propreturn = NULL; X X X for (i=1 ; i<argc ; i++) { X if (argv[i][0] == '-' && argv[i][1] == 'd' && i < argc - 1) { X displayname = argv[++i]; X } else { X Punt("Usage: wallpaper [-display displayname]\n"); X } X } X X strcpy(homeDir, getenv("HOME")); X (void) sprintf(buf, "%s/.wallpaperrc", homeDir); X fid = fopen(buf, "r"); X if (!fid) X Punt(".wallpaperrc not found!\n"); X X dpy = XOpenDisplay(displayname); X if (!dpy) X Punt("Can't open display!"); X displayname = DisplayString(dpy); X X while (fgets(buf, 1024, fid)) { X ptr = index(buf, '\n'); X if (ptr) *ptr = 0; X for (ptr = buf ; *ptr ; ptr++) { X if (*ptr == ' ' || *ptr == '\t') break; X } X if (*ptr == 0) continue; X *ptr++ = 0; X rooms[numrooms].name = MallocACopy(buf); X while (*ptr == ' ' || *ptr == '\t') ptr++; X if (*ptr == 0) continue; X if (!index(ptr, '$')) { X rooms[numrooms].cmd = MallocACopy(ptr); X } else { X rooms[numrooms].cmd = X malloc(strlen(ptr) + 5 * strlen(displayname)); X rooms[numrooms].cmd[0] = 0; X ptr2 = index(ptr, '$'); X while (ptr2) { X *ptr2++ = 0; X strcat(rooms[numrooms].cmd, ptr); X if (strncmp(ptr2, "DISPLAY", 7) == 0) { X strcat(rooms[numrooms].cmd, displayname); X ptr2 += 7; X } X ptr = ptr2; X ptr2 = index(ptr, '$'); X } X strcat(rooms[numrooms].cmd, ptr); X } X rooms[numrooms].atom = XInternAtom(dpy, rooms[numrooms].name, False); X numrooms++; X } X (void) fclose(fid); X X XSelectInput(dpy, DefaultRootWindow(dpy), PropertyChangeMask); X X ROOMS_CURRENT = XInternAtom(dpy, "_XROOMS_CURRENT", False); X X oldroom = 0; X for (;;) { X if (XGetWindowProperty(dpy, DefaultRootWindow(dpy), ROOMS_CURRENT, 0, X 1, False, AnyPropertyType, &actualtype, X &actualformat, &nitems, &bytesafter, X &propreturn) == Success) { X curroom = *((Atom *) propreturn); X if (curroom != oldroom) { X for (i=0 ; i<numrooms ; i++) { X if (rooms[i].atom == curroom) { X system(rooms[i].cmd); X break; X } X } X oldroom = curroom; X } X } X XNextEvent(dpy, &event); X } X} END_OF_FILE if test 4061 -ne `wc -c <'./wallpaper/wallpaper.c'`; then echo shar: \"'./wallpaper/wallpaper.c'\" unpacked with wrong size! fi # end of './wallpaper/wallpaper.c' fi if test -f './xrooms/xrApp.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'./xrooms/xrApp.h'\" else echo shar: Extracting \"'./xrooms/xrApp.h'\" \(3948 characters\) sed "s/^X//" >'./xrooms/xrApp.h' <<'END_OF_FILE' X#ifndef XRAPP_H X#define XRAPP_H 1 X X /*\ X * $Header: xrApp.h,v 5.1 90/01/11 14:09:55 erik Exp $ X * X * COPYRIGHT 1990 X * DIGITAL EQUIPMENT CORPORATION X * MAYNARD, MASSACHUSETTS X * ALL RIGHTS RESERVED. X * X * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND X * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. X * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE X * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED X * WARRANTY. X * X * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT X * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN X * ADDITION TO THAT SET FORTH ABOVE. X * X * Permission to use, copy, modify, and distribute this software and its X * documentation for any purpose and without fee is hereby granted, provided X * that the above copyright notice appear in all copies and that both that X * copyright notice and this permission notice appear in supporting X * documentation, and that the name of Digital Equipment Corporation not be X * used in advertising or publicity pertaining to distribution of the X * software without specific, written prior permission. X \*/ X X#include "app.h" X Xtypedef struct _XAppInfoRec { X Window parent,client; X AppStatePtr pRealState; X struct { X unsigned flags; X WinState state; X int x,y; X unsigned w,h; X } wants; X} XAppInfoRec, *XAppInfoPtr; X#define NullXAppInfo ((XAppInfoPtr)NULL) X X#define StateFlag (1<<0) X#define XFlag (1<<1) X#define YFlag (1<<2) X#define WidthFlag (1<<3) X#define HeightFlag (1<<4) X#define PositionFlags (XFlag|YFlag) X#define SizeFlags (WidthFlag|HeightFlag) X#define GeomFlags (PositionFlags|SizeFlags) X#define AllFlags (StateFlag|GeomFlags) X X#define SetOn(ai,f) ((ai)->wants.flags|=(f)) X#define SetOff(ai,f) ((ai)->wants.flags&=(~(f))) X#define On(ai,f) ((ai)->wants.flags&(f)) X X#define WantsState(ai,s) (On(ai,StateFlag)&&((ai)->wants.state==(s))) X#define WantsX(ai,xv) (On(ai,XFlag)&&((ai)->wants.x==(xv))) X#define WantsY(ai,yv) (On(ai,YFlag)&&((ai)->wants.y==(yv))) X#define WantsWidth(ai,wv) (On(ai,WidthFlag)&&((ai)->wants.w==(wv))) X#define WantsHeight(ai,hv) (On(ai,HeightFlag)&&((ai)->wants.h==(hv))) X#define WantsAny(ai) ((ai)->wants.flags&AllFlags!=0) X X#define SetWantsState(ai,s) (SetOn(ai,StateFlag),(ai)->wants.state=(s)) X#define SetWantsX(ai,xv) (SetOn(ai,XFlag),(ai)->wants.x=(xv)) X#define SetWantsY(ai,yv) (SetOn(ai,YFlag),(ai)->wants.y=(yv)) X#define SetWantsWidth(ai,wv) (SetOn(ai,WidthFlag),(ai)->wants.w=(wv)) X#define SetWantsHeight(ai,hv) (SetOn(ai,HeightFlag),(ai)->wants.h=(hv)) X#define SetWantsNone(ai) ((ai)->wants.flags= 0) X#define SetWantsPos(ai,xv,yv) (SetOn(ai,PositionFlags),(ai)->wants.x=(xv),\ X (ai)->wants.y=(yv)) X#define SetWantsSize(ai,wv,hv) (SetOn(ai,SizeFlags),(ai)->wants.w=(wv),\ X (ai)->wants.h=(hv)) X X#define GotState(ai) (SetOff(ai,StateFlag)) X#define GotX(ai) (SetOff(ai,XFlag)) X#define GotY(ai) (SetOff(ai,YFlag)) X#define GotWidth(ai) (SetOff(ai,WidthFlag)) X#define GotHeight(ai) (SetOff(ai,HeightFlag)) X Xextern unsigned xrAppDebug; Xextern void xraDebugPrint(); X Xextern Boolean xraNonICCCM; Xextern Boolean xraDfltAppsIconic; Xextern Boolean xraDfltAppsTransient; Xextern Boolean xraUseGeometries; Xextern Boolean xraReopenForGeom; Xextern Boolean xraUnmapForGeom,xraUnmapForState; Xextern Boolean xraManageTransients; Xextern Boolean xraManageWithdrawn; X Xextern AppPtr xraLookupWindowApp(/*win*/); X Xextern Boolean xraNonICCCMAppUpdate(/*pApp,pNewState,priv*/); Xextern Boolean xraAppUpdate(/*pApp,pNewState,priv*/); X Xextern void xraAddApp(/*window*/); X Xextern void xraClientResized(/*client,newW,newH*/); Xextern void xraClientMoved(/*client,newX,newY*/); Xextern void xraClientDestroyed(/*client*/); Xextern void xraStateChanged(/*client*/); Xextern void xraInit(); X#endif /* XRAPP_H */ END_OF_FILE if test 3948 -ne `wc -c <'./xrooms/xrApp.h'`; then echo shar: \"'./xrooms/xrApp.h'\" unpacked with wrong size! fi # end of './xrooms/xrApp.h' fi if test -f './xrooms/xrGen.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'./xrooms/xrGen.c'\" else echo shar: Extracting \"'./xrooms/xrGen.c'\" \(2310 characters\) sed "s/^X//" >'./xrooms/xrGen.c' <<'END_OF_FILE' X X /*\ X * $Header: xrGen.c,v 5.0 90/01/10 07:00:50 erik Exp $ X * X * COPYRIGHT 1990 X * DIGITAL EQUIPMENT CORPORATION X * MAYNARD, MASSACHUSETTS X * ALL RIGHTS RESERVED. X * X * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND X * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. X * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE X * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED X * WARRANTY. X * X * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT X * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN X * ADDITION TO THAT SET FORTH ABOVE. X * X * Permission to use, copy, modify, and distribute this software and its X * documentation for any purpose and without fee is hereby granted, provided X * that the above copyright notice appear in all copies and that both that X * copyright notice and this permission notice appear in supporting X * documentation, and that the name of Digital Equipment Corporation not be X * used in advertising or publicity pertaining to distribution of the X * software without specific, written prior permission. X \*/ X X#define DEBUG_VAR xrgenDebug X#include "utils.h" X X#undef True X#undef False X#include "xrGen.h" X XAtom ROOMS_CURRENT, ROOMS_ALL; XAtom ROOMS_REQUEST, ROOMS_ARGUMENT, ROOMS_RETURN; X X/***====================================================================***/ X Xvoid XxrgenInit(dpy) XDisplay *dpy; X{ X uENTRY1("xrgenInit(0x%x)\n",dpy); X ROOMS_ALL= XInternAtom(dpy, "_XROOMS_ALL", False ); X ROOMS_CURRENT= XInternAtom(dpy, "_XROOMS_CURRENT", False ); X ROOMS_REQUEST= XInternAtom(dpy, "_XROOMS_REQUESTS", False ); X ROOMS_ARGUMENT= XInternAtom(dpy, "_XROOMS_ARGUMENT", False ); X ROOMS_RETURN= XInternAtom(dpy, "_XROOMS_RETURN", False ); X uVOIDRETURN; X} X X/***====================================================================***/ X Xvoid XxrgenCleanUp(dpy,root) XDisplay *dpy; XWindow root; X{ X uENTRY2("xrgenCleanUp(0x%x,0x%x)\n",dpy,root); X XDeleteProperty(dpy,root,ROOMS_ALL); X XDeleteProperty(dpy,root,ROOMS_CURRENT); X XDeleteProperty(dpy,root,ROOMS_REQUEST); X XDeleteProperty(dpy,root,ROOMS_ARGUMENT); X uVOIDRETURN; X} END_OF_FILE if test 2310 -ne `wc -c <'./xrooms/xrGen.c'`; then echo shar: \"'./xrooms/xrGen.c'\" unpacked with wrong size! fi # end of './xrooms/xrGen.c' fi if test -f './xrooms/xrProtoIter.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'./xrooms/xrProtoIter.h'\" else echo shar: Extracting \"'./xrooms/xrProtoIter.h'\" \(2290 characters\) sed "s/^X//" >'./xrooms/xrProtoIter.h' <<'END_OF_FILE' X#ifndef XRPROTOITER_H X#define XRPROTOITER_H 1 X X /*\ X * $Header: xrProtoIter.h,v 5.0 90/01/10 07:01:29 erik Exp $ X * X * COPYRIGHT 1990 X * DIGITAL EQUIPMENT CORPORATION X * MAYNARD, MASSACHUSETTS X * ALL RIGHTS RESERVED. X * X * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND X * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. X * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE X * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED X * WARRANTY. X * X * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT X * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN X * ADDITION TO THAT SET FORTH ABOVE. X * X * Permission to use, copy, modify, and distribute this software and its X * documentation for any purpose and without fee is hereby granted, provided X * that the above copyright notice appear in all copies and that both that X * copyright notice and this permission notice appear in supporting X * documentation, and that the name of Digital Equipment Corporation not be X * used in advertising or publicity pertaining to distribution of the X * software without specific, written prior permission. X \*/ X Xextern Boolean _xrpiInitAppStatesIter(/* pApp, pRoom, whichStates, pIState */); Xextern Boolean _xrpiAppStatesIterNext(/* pIState, pApp, ppState */); Xextern void xrpiEndAppStatesIterator(/* pApp, pIState */); X#define xrpiAppStatesIterator(pa,pr,ws,ps,is) \ X if (_xrpiInitAppStatesIter(pa,pr,ws,&is)) \ X while (_xrpiAppStatesIterNext(is,pa,&(ps))) X Xextern Boolean _xrpiInitAppsIter(/* whichApps, pIState, nameOrId */); Xextern Boolean _xrpiAppsIterNext(/* pIState, ppApp */); Xextern void xrpiEndAppsIterator(/* pIState */); X#define xrpiAppsIterator(ws,pa,NorId,is) \ X if (_xrpiInitAppsIter(ws,NorId,&is)) \ X while (_xrpiAppsIterNext(is,&(pa))) X Xextern Boolean _xrpiInitRoomsIter(/* whichRooms, pIState, name */); Xextern Boolean _xrpiRoomsIterNext(/* pIState, ppRoom */); Xextern void xrpiEndRoomsIterator(/* pIState */); X#define xrpiRoomsIterator(ws,pr,nm,is) \ X if (_xrpiInitRoomsIter(ws,nm,&is)) \ X while (_xrpiRoomsIterNext(is,&(pr))) X X#endif /* XRPROTOITER_H */ END_OF_FILE if test 2290 -ne `wc -c <'./xrooms/xrProtoIter.h'`; then echo shar: \"'./xrooms/xrProtoIter.h'\" unpacked with wrong size! fi # end of './xrooms/xrProtoIter.h' fi if test -f './xrooms/xrXawUI.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'./xrooms/xrXawUI.h'\" else echo shar: Extracting \"'./xrooms/xrXawUI.h'\" \(2099 characters\) sed "s/^X//" >'./xrooms/xrXawUI.h' <<'END_OF_FILE' X#ifndef XRXAWUI_H X#define XRXAWUI_H 1 X X /*\ X * $Header: xrXawUI.h,v 5.0 90/01/10 07:01:56 erik Exp $ X * X * COPYRIGHT 1990 X * DIGITAL EQUIPMENT CORPORATION X * MAYNARD, MASSACHUSETTS X * ALL RIGHTS RESERVED. X * X * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND X * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. X * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE X * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED X * WARRANTY. X * X * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT X * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN X * ADDITION TO THAT SET FORTH ABOVE. X * X * Permission to use, copy, modify, and distribute this software and its X * documentation for any purpose and without fee is hereby granted, provided X * that the above copyright notice appear in all copies and that both that X * copyright notice and this permission notice appear in supporting X * documentation, and that the name of Digital Equipment Corporation not be X * used in advertising or publicity pertaining to distribution of the X * software without specific, written prior permission. X \*/ X Xextern Widget xruiTopLevel,xruiPopup,xruiMenu,xruiWinMenu; Xextern Widget xruiPromptWidget; Xextern Widget xruiPromptText; X Xextern Widget xruiScrollW; X Xextern unsigned xawButtonWidth; Xextern unsigned xawButtonCols; X X#define UI_ARGS \ X {"-btnwidth", "buttonWidth", XrmoptionSepArg, (caddr_t)0 },\ X {"-btncols", "buttonCols", XrmoptionSepArg, (caddr_t)0 }, X X#define UI_FIELDS \ X unsigned xawButtonWidth,xawButtonCols; X X#define UI_RESOURCES(t) \ X { "buttonWidth", "Width", XtRInt, sizeof(int),\ X XtOffset(t,xawButtonWidth), XtRImmediate, (caddr_t)0 },\ X { "buttonCols", "ButtonCols", XtRInt, sizeof(int),\ X XtOffset(t,xawButtonCols), XtRImmediate, (caddr_t)4 }, X X#define UI_SETTINGS(s) \ X xawButtonWidth= (s)->xawButtonWidth;\ X xawButtonCols= (s)->xawButtonCols; X X#endif /* XRXAWUI_H */ END_OF_FILE if test 2099 -ne `wc -c <'./xrooms/xrXawUI.h'`; then echo shar: \"'./xrooms/xrXawUI.h'\" unpacked with wrong size! fi # end of './xrooms/xrXawUI.h' fi echo shar: End of archive 2 \(of 14\). cp /dev/null ark2isdone 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