kent@ssbell.IMD.Sterling.COM (Kent Landfield) (01/15/90)
Submitted-by: wsl.dec.com!mikey (Mike Yang) Posting-number: Volume 5, Issue 56 Archive-name: xrooms/part06 #! /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 6 (of 14)." # Contents: ./Makefile ./lib/Makefile ./xrooms/xrProtoArgs.c # ./xrooms/xrProtoIter.c ./xrooms/xrXUtils.c # Wrapped by kent@ssbell on Sun Jan 14 21:57:52 1990 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f './Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'./Makefile'\" else echo shar: Extracting \"'./Makefile'\" \(10206 characters\) sed "s/^X//" >'./Makefile' <<'END_OF_FILE' X# Makefile generated by imake - do not edit! X# $XConsortium: imake.c,v 1.37 88/10/08 20:08:30 jim Exp $ X X########################################################################### X# X Window System Makefile generated from template file Imake.tmpl X# $XConsortium: Imake.tmpl,v 1.91 88/10/23 22:37:10 jim Exp $ X# X# Do not change the body of the imake template file. Server-specific X# parameters may be set in the appropriate .macros file; site-specific X# parameters (but shared by all servers) may be set in site.def. If you X# make any changes, you'll need to rebuild the makefiles using X# "make World" (at best) or "make Makefile; make Makefiles" (at least) in X# the top level directory. X# X# If your C preprocessor doesn't define any unique symbols, you'll need X# to set BOOTSTRAPCFLAGS when rebuilding imake (usually when doing X# "make Makefile", "make Makefiles", or "make World"). X# X# If you absolutely can't get imake to work, you'll need to set the X# variables at the top of each Makefile as well as the dependencies at the X# bottom (makedepend will do this automatically). X# X X########################################################################### X# platform-specific configuration parameters - edit Mips.macros to change X X# platform: $XConsortium: Vax.macros,v 1.49 88/10/23 11:01:02 jim Exp $ X XBOOTSTRAPCFLAGS = X AS = as X CC = cc X CPP = /lib/cpp X LD = ld X LINT = lint X INSTALL = install X TAGS = ctags X RM = rm -f X MV = mv X LN = ln -s X RANLIB = ranlib XRANLIBINSTFLAGS = -t X AR = ar clq X LS = ls X LINTOPTS = -axz X LINTLIBFLAG = -C X MAKE = make XSTD_CPP_DEFINES = X STD_DEFINES = X X########################################################################### X# site-specific configuration parameters - edit site.def to change X X# site: $XConsortium: site.def,v 1.16 88/10/12 10:30:24 jim Exp $ X XSYSLAST_LIBRARIES = -ldnet X X########################################################################### X# definitions common to all Makefiles - do not edit X X SHELL = /bin/sh X X DESTDIR = X USRLIBDIR = $(DESTDIR)/usr/lib X BINDIR = $(DESTDIR)/usr/bin/X11 X INCDIR = $(DESTDIR)/usr/include/X11 X ADMDIR = $(DESTDIR)/usr/adm X LIBDIR = $(USRLIBDIR)/X11 X LINTLIBDIR = $(USRLIBDIR)/lint X FONTDIR = $(LIBDIR)/fonts X XINITDIR = $(LIBDIR)/xinit X XDMDIR = $(LIBDIR)/xdm X UWMDIR = $(LIBDIR)/uwm X AWMDIR = $(LIBDIR)/awm X TWMDIR = $(LIBDIR)/twm X MANPATH = $(DESTDIR)/usr/local/man X MANSOURCEPATH = $(MANPATH)/man X MANDIR = $(MANSOURCEPATH)1 X LIBMANDIR = $(MANSOURCEPATH)3 X XAPPLOADDIR = $(LIBDIR)/app-defaults X X INSTBINFLAGS = -m 0755 X INSTUIDFLAGS = -m 4755 X INSTLIBFLAGS = -m 0664 X INSTINCFLAGS = -m 0444 X INSTMANFLAGS = -m 0444 X INSTAPPFLAGS = -m 0444 X INSTKMEMFLAGS = -m 0755 X FCFLAGS = -t X CDEBUGFLAGS = -O X X PATHSEP = / X DEPEND = $(DEPENDSRC)/makedepend X IMAKE = $(IMAKESRC)/imake X RGB = $(RGBSRC)/rgb X FC = $(BDFTOSNFSRC)/bdftosnf X MKFONTDIR = $(MKFONTDIRSRC)/mkfontdir X MKDIRHIER = $(SCRIPTSSRC)/mkdirhier.sh X X CFLAGS = $(CDEBUGFLAGS) $(INCLUDES) $(STD_DEFINES) $(DEFINES) X LINTFLAGS = $(LINTOPTS) $(INCLUDES) $(STD_DEFINES) $(DEFINES) -DLINT X LDFLAGS = $(CDEBUGFLAGS) $(SYS_LIBRARIES) $(SYSAUX_LIBRARIES) X TOP = ../../../../../../a10c/pk/V2max/x11 X CLIENTSRC = $(TOP)/clients X DEMOSRC = $(TOP)/demos X LIBSRC = $(TOP)/lib X FONTSRC = $(TOP)/fonts X INCLUDESRC = $(TOP)/X11 -I$(TOP) X SERVERSRC = $(TOP)/server X UTILSRC = $(TOP)/util X SCRIPTSSRC = $(UTILSRC)/scripts X EXAMPLESRC = $(TOP)/examples X CONTRIBSRC = $(TOP)/contrib X DOCSRC = $(TOP)/doc X RGBSRC = $(TOP)/rgb X DEPENDSRC = $(UTILSRC)/makedepend X IMAKESRC = $(UTILSRC)/imake X IRULESRC = $(UTILSRC)/imake.includes X XLIBSRC = $(LIBSRC)/X X XMUSRC = $(LIBSRC)/Xmu X TOOLKITSRC = $(LIBSRC)/Xt X AWIDGETSRC = $(LIBSRC)/Xaw X OLDXLIBSRC = $(LIBSRC)/oldX X BDFTOSNFSRC = $(FONTSRC)/bdftosnf X MKFONTDIRSRC = $(FONTSRC)/mkfontdir X EXTENSIONSRC = $(TOP)/extensions X EXTENSIONLIB = $(EXTENSIONSRC)/lib/libXext.a X XLIB = $(XLIBSRC)/libX11.a X XMULIB = $(XMUSRC)/libXmu.a X OLDXLIB = $(OLDXLIBSRC)/liboldX.a X XTOOLLIB = $(TOOLKITSRC)/libXt.a X XAWLIB = $(AWIDGETSRC)/libXaw.a X LINTXLIB = $(XLIBSRC)/llib-lX11.ln X LINTXMU = $(XMUSRC)/llib-lXmu.ln X LINTXTOOL = $(TOOLKITSRC)/llib-lXt.ln X LINTXAW = $(AWIDGETSRC)/llib-lXaw.ln X INCLUDES = -I$(TOP) X MACROFILE = Mips.macros X ICONFIGFILES = $(IRULESRC)/Imake.tmpl \ X $(IRULESRC)/$(MACROFILE) $(IRULESRC)/site.def X IMAKE_DEFINES = X IMAKE_CMD = $(NEWTOP)$(IMAKE) -TImake.tmpl -I$(NEWTOP)$(IRULESRC) \ X -s Makefile $(IMAKE_DEFINES) X RM_CMD = $(RM) *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a \ X .emacs_* tags TAGS make.log MakeOut X X########################################################################### X# rules: $XConsortium: Imake.rules,v 1.71 88/10/23 22:46:34 jim Exp $ X X########################################################################### X# start of Imakefile X X# X# Make file for font libraries X# X SUBDIRS = utils lib xrooms xrset X X CDEBUGFLAGS = -g X X UTIL_DEFINES = -DDEBUG_ON -DENTRY_TRACKING_ON -DASSERTIONS_ON X Xall:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X (cd $$i ; echo "making all in $$i"; \ X $(MAKE) 'CDEBUGFLAGS=$(CDEBUGFLAGS)' 'UTIL_DEFINES=$(UTIL_DEFINES)' $(MFLAGS)); \ X done X Xdepend:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X (cd $$i ; echo "depending in $$i"; \ X $(MAKE) $(MFLAGS) depend ); \ X done X Xlintlib:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X (cd $$i ; echo "making lint subdirs for lintlib and lintlib in $$i"; \ X $(MAKE) $(MFLAGS) DESTDIR='$(DESTDIR)' \ X LINTOPTS='$(LINTOPTS)' lintlib ); \ X done X Xinstall.ln:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X (cd $$i ; echo "making lint subdirs for install.ln and install.ln in $$i"; \ X $(MAKE) $(MFLAGS) DESTDIR='$(DESTDIR)' \ X LINTOPTS='$(LINTOPTS)' install.ln ); \ X done X X########################################################################### X# Imake.tmpl common rules for all Makefiles - do not edit X Xemptyrule:: X Xclean:: X $(RM_CMD) \#* X XMakefile:: $(IMAKE) X XMakefile:: Imakefile \ X $(IRULESRC)/Imake.tmpl \ X $(IRULESRC)/Imake.rules \ X $(IRULESRC)/site.def \ X $(IRULESRC)/$(MACROFILE) X -@if [ -f Makefile ]; then \ X echo "$(RM) Makefile.bak; $(MV) Makefile Makefile.bak"; \ X $(RM) Makefile.bak; $(MV) Makefile Makefile.bak; \ X else exit 0; fi X $(IMAKE_CMD) -DTOPDIR=$(TOP) X X$(IMAKE): X @echo "making $@"; \ X cd $(IMAKESRC); $(MAKE) BOOTSTRAPCFLAGS=$(BOOTSTRAPCFLAGS) X Xtags:: X $(TAGS) -w *.[ch] X $(TAGS) -xw *.[ch] > TAGS X X########################################################################### X# rules for building in SUBDIRS - do not edit X Xinstall:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X (cd $$i ; echo "installing in $$i"; \ X $(MAKE) $(MFLAGS) \ X DESTDIR='$(DESTDIR)' install ); \ X done X Xinstall.man:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X (cd $$i ; echo "installing man pages in $$i"; \ X $(MAKE) $(MFLAGS) \ X DESTDIR='$(DESTDIR)' install.man ); \ X done X Xclean:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X (cd $$i ; echo "cleaning in $$i"; \ X $(MAKE) $(MFLAGS) RM_CMD='$(RM_CMD)' clean ); \ X done X Xtags:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X (cd $$i ; echo "tagging in $$i"; \ X $(MAKE) $(MFLAGS) TAGS='$(TAGS)' tags ); \ X done X XMakefiles:: $(IMAKE) X XMakefiles:: X @case '${MFLAGS}' in *[ik]*) set +e;; esac; \ X for i in $(SUBDIRS) ;\ X do \ X echo "Making Makefiles in $$i..."; \ X case "$$i" in \ X ./?*/?*/?*/?*) newtop=../../../../ sub=subsubsubsub;; \ X ./?*/?*/?*) newtop=../../../ sub=subsubsub;; \ X ./?*/?*) newtop=../../ sub=subsub;; \ X ./?*) newtop=../ sub=sub;; \ X */?*/?*/?*) newtop=../../../../ sub=subsubsubsub;; \ X */?*/?*) newtop=../../../ sub=subsubsub;; \ X */?*) newtop=../../ sub=subsub;; \ X *) newtop=../ sub=sub;; \ X esac; \ X $(MAKE) $${sub}dirMakefiles NEWTOP=$$newtop \ X MAKEFILE_SUBDIR=$$i;\ X done X XsubdirMakefiles: X $(RM) $(MAKEFILE_SUBDIR)/Makefile.bak X -@if [ -f $(MAKEFILE_SUBDIR)/Makefile ]; then \ X echo "$(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak"; \ X $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak; \ X else exit 0; fi X cd $(MAKEFILE_SUBDIR); $(IMAKE_CMD) -DTOPDIR=../$(TOP); \ X $(MAKE) $(MFLAGS) Makefiles X XsubsubdirMakefiles: X $(RM) $(MAKEFILE_SUBDIR)/Makefile.bak X -@if [ -f $(MAKEFILE_SUBDIR)/Makefile ]; then \ X echo "$(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak"; \ X $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak; \ X else exit 0; fi X cd $(MAKEFILE_SUBDIR); $(IMAKE_CMD) -DTOPDIR=../../$(TOP); \ X $(MAKE) $(MFLAGS) Makefiles X XsubsubsubdirMakefiles: X $(RM) $(MAKEFILE_SUBDIR)/Makefile.bak X -@if [ -f $(MAKEFILE_SUBDIR)/Makefile ]; then \ X echo "$(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak"; \ X $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak; \ X else exit 0; fi X cd $(MAKEFILE_SUBDIR); $(IMAKE_CMD) -DTOPDIR=../../../$(TOP); \ X $(MAKE) $(MFLAGS) Makefiles X XsubsubsubsubdirMakefiles: X $(RM) $(MAKEFILE_SUBDIR)/Makefile.bak X -@if [ -f $(MAKEFILE_SUBDIR)/Makefile ]; then \ X echo "$(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak"; \ X $(MV) $(MAKEFILE_SUBDIR)/Makefile $(MAKEFILE_SUBDIR)/Makefile.bak; \ X else exit 0; fi X cd $(MAKEFILE_SUBDIR); $(IMAKE_CMD) -DTOPDIR=../../../../$(TOP); \ X $(MAKE) $(MFLAGS) Makefiles X X########################################################################### X# dependencies generated by makedepend X END_OF_FILE if test 10206 -ne `wc -c <'./Makefile'`; then echo shar: \"'./Makefile'\" unpacked with wrong size! fi # end of './Makefile' fi if test -f './lib/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'./lib/Makefile'\" else echo shar: Extracting \"'./lib/Makefile'\" \(9387 characters\) sed "s/^X//" >'./lib/Makefile' <<'END_OF_FILE' X# Makefile generated by imake - do not edit! X# $XConsortium: imake.c,v 1.37 88/10/08 20:08:30 jim Exp $ X X########################################################################### X# X Window System Makefile generated from template file Imake.tmpl X# $XConsortium: Imake.tmpl,v 1.91 88/10/23 22:37:10 jim Exp $ X# X# Do not change the body of the imake template file. Server-specific X# parameters may be set in the appropriate .macros file; site-specific X# parameters (but shared by all servers) may be set in site.def. If you X# make any changes, you'll need to rebuild the makefiles using X# "make World" (at best) or "make Makefile; make Makefiles" (at least) in X# the top level directory. X# X# If your C preprocessor doesn't define any unique symbols, you'll need X# to set BOOTSTRAPCFLAGS when rebuilding imake (usually when doing X# "make Makefile", "make Makefiles", or "make World"). X# X# If you absolutely can't get imake to work, you'll need to set the X# variables at the top of each Makefile as well as the dependencies at the X# bottom (makedepend will do this automatically). X# X X########################################################################### X# platform-specific configuration parameters - edit Mips.macros to change X X# platform: $XConsortium: Vax.macros,v 1.49 88/10/23 11:01:02 jim Exp $ X XBOOTSTRAPCFLAGS = X AS = as X CC = cc X CPP = /lib/cpp X LD = ld X LINT = lint X INSTALL = install X TAGS = ctags X RM = rm -f X MV = mv X LN = ln -s X RANLIB = ranlib XRANLIBINSTFLAGS = -t X AR = ar clq X LS = ls X LINTOPTS = -axz X LINTLIBFLAG = -C X MAKE = make XSTD_CPP_DEFINES = X STD_DEFINES = X X########################################################################### X# site-specific configuration parameters - edit site.def to change X X# site: $XConsortium: site.def,v 1.16 88/10/12 10:30:24 jim Exp $ X XSYSLAST_LIBRARIES = -ldnet X X########################################################################### X# definitions common to all Makefiles - do not edit X X SHELL = /bin/sh X X DESTDIR = X USRLIBDIR = $(DESTDIR)/usr/lib X BINDIR = $(DESTDIR)/usr/bin/X11 X INCDIR = $(DESTDIR)/usr/include/X11 X ADMDIR = $(DESTDIR)/usr/adm X LIBDIR = $(USRLIBDIR)/X11 X LINTLIBDIR = $(USRLIBDIR)/lint X FONTDIR = $(LIBDIR)/fonts X XINITDIR = $(LIBDIR)/xinit X XDMDIR = $(LIBDIR)/xdm X UWMDIR = $(LIBDIR)/uwm X AWMDIR = $(LIBDIR)/awm X TWMDIR = $(LIBDIR)/twm X MANPATH = $(DESTDIR)/usr/local/man X MANSOURCEPATH = $(MANPATH)/man X MANDIR = $(MANSOURCEPATH)1 X LIBMANDIR = $(MANSOURCEPATH)3 X XAPPLOADDIR = $(LIBDIR)/app-defaults X X INSTBINFLAGS = -m 0755 X INSTUIDFLAGS = -m 4755 X INSTLIBFLAGS = -m 0664 X INSTINCFLAGS = -m 0444 X INSTMANFLAGS = -m 0444 X INSTAPPFLAGS = -m 0444 X INSTKMEMFLAGS = -m 0755 X FCFLAGS = -t X CDEBUGFLAGS = -O X X PATHSEP = / X DEPEND = $(DEPENDSRC)/makedepend X IMAKE = $(IMAKESRC)/imake X RGB = $(RGBSRC)/rgb X FC = $(BDFTOSNFSRC)/bdftosnf X MKFONTDIR = $(MKFONTDIRSRC)/mkfontdir X MKDIRHIER = $(SCRIPTSSRC)/mkdirhier.sh X X CFLAGS = $(CDEBUGFLAGS) $(INCLUDES) $(STD_DEFINES) $(DEFINES) X LINTFLAGS = $(LINTOPTS) $(INCLUDES) $(STD_DEFINES) $(DEFINES) -DLINT X LDFLAGS = $(CDEBUGFLAGS) $(SYS_LIBRARIES) $(SYSAUX_LIBRARIES) X TOP = /usr/src/X11 X CLIENTSRC = $(TOP)/clients X DEMOSRC = $(TOP)/demos X LIBSRC = $(TOP)/lib X FONTSRC = $(TOP)/fonts X INCLUDESRC = $(TOP)/X11 -I$(TOP) X SERVERSRC = $(TOP)/server X UTILSRC = $(TOP)/util X SCRIPTSSRC = $(UTILSRC)/scripts X EXAMPLESRC = $(TOP)/examples X CONTRIBSRC = $(TOP)/contrib X DOCSRC = $(TOP)/doc X RGBSRC = $(TOP)/rgb X DEPENDSRC = $(UTILSRC)/makedepend X IMAKESRC = $(UTILSRC)/imake X IRULESRC = $(UTILSRC)/imake.includes X XLIBSRC = $(LIBSRC)/X X XMUSRC = $(LIBSRC)/Xmu X TOOLKITSRC = $(LIBSRC)/Xt X AWIDGETSRC = $(LIBSRC)/Xaw X OLDXLIBSRC = $(LIBSRC)/oldX X BDFTOSNFSRC = $(FONTSRC)/bdftosnf X MKFONTDIRSRC = $(FONTSRC)/mkfontdir X EXTENSIONSRC = $(TOP)/extensions X EXTENSIONLIB = $(EXTENSIONSRC)/lib/libXext.a X XLIB = $(XLIBSRC)/libX11.a X XMULIB = $(XMUSRC)/libXmu.a X OLDXLIB = $(OLDXLIBSRC)/liboldX.a X XTOOLLIB = $(TOOLKITSRC)/libXt.a X XAWLIB = $(AWIDGETSRC)/libXaw.a X LINTXLIB = $(XLIBSRC)/llib-lX11.ln X LINTXMU = $(XMUSRC)/llib-lXmu.ln X LINTXTOOL = $(TOOLKITSRC)/llib-lXt.ln X LINTXAW = $(AWIDGETSRC)/llib-lXaw.ln X INCLUDES = -I$(TOP) X MACROFILE = Mips.macros X ICONFIGFILES = $(IRULESRC)/Imake.tmpl \ X $(IRULESRC)/$(MACROFILE) $(IRULESRC)/site.def X IMAKE_DEFINES = X IMAKE_CMD = $(NEWTOP)$(IMAKE) -TImake.tmpl -I$(NEWTOP)$(IRULESRC) \ X -s Makefile $(IMAKE_DEFINES) X RM_CMD = $(RM) *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a \ X .emacs_* tags TAGS make.log MakeOut X X########################################################################### X# rules: $XConsortium: Imake.rules,v 1.71 88/10/23 22:46:34 jim Exp $ X X########################################################################### X# start of Imakefile X X LIBSRCS = appstate.c ashash.c app.c room.c profscan.c names.c X LIBOBJS = appstate.o ashash.o app.o room.o profscan.o names.o X APPSRCS = apps.c rooms.c nameprof.c profile.c profparser.y X APPOBJS = apps.o rooms.o nameprof.o profile.o profparser.o X SRCS = $(LIBSRCS) $(APPSRCS) X OBJS = $(LIBOBJS) $(APPOBJS) X INCLUDES = -I../utils -I. X X CDEBUGFLAGS = -g X X UTIL_DEFINES = -DDEBUG_ON -DENTRY_TRACKING_ON -DASSERTIONS_ON X X DEFINES = $(STD_DEFINES) $(UTIL_DEFINES) X Xall:: librooms.a X Xlibrooms.a: $(OBJS) X $(RM) $@ X $(AR) $@ $(OBJS) X $(RANLIB) $@ X Xdepend:: $(DEPEND) X Xdepend:: X $(DEPEND) -s "# DO NOT DELETE" -- $(CFLAGS) -- $(SRCS) X X$(DEPEND): X @echo "making $@"; \ X cd $(DEPENDSRC); $(MAKE) X X########################################################################### X# Imake.tmpl common rules for all Makefiles - do not edit X Xemptyrule:: X Xclean:: X $(RM_CMD) \#* X XMakefile:: $(IMAKE) X XMakefile:: Imakefile \ X $(IRULESRC)/Imake.tmpl \ X $(IRULESRC)/Imake.rules \ X $(IRULESRC)/site.def \ X $(IRULESRC)/$(MACROFILE) X -@if [ -f Makefile ]; then \ X echo "$(RM) Makefile.bak; $(MV) Makefile Makefile.bak"; \ X $(RM) Makefile.bak; $(MV) Makefile Makefile.bak; \ X else exit 0; fi X $(IMAKE_CMD) -DTOPDIR=$(TOP) X X$(IMAKE): X @echo "making $@"; \ X cd $(IMAKESRC); $(MAKE) BOOTSTRAPCFLAGS=$(BOOTSTRAPCFLAGS) X Xtags:: X $(TAGS) -w *.[ch] X $(TAGS) -xw *.[ch] > TAGS X X########################################################################### X# empty rules for directories that do not have SUBDIRS - do not edit X Xinstall:: X @echo "install done" X Xinstall.man:: X @echo "install.man done" X XMakefiles:: X X########################################################################### X# dependencies generated by makedepend X X# DO NOT DELETE X Xappstate.o: ../utils/utils.h /usr/include/stdio.h /usr/include/string.h Xappstate.o: ../utils/machdep.h appstatestr.h appstate.h Xashash.o: ../utils/utils.h /usr/include/stdio.h /usr/include/string.h Xashash.o: ../utils/machdep.h ../utils/storagestr.h ../utils/storage.h Xashash.o: ashash.h ../utils/hash.h appstate.h Xapp.o: ../utils/utils.h /usr/include/stdio.h /usr/include/string.h Xapp.o: ../utils/machdep.h appstr.h ../utils/list.h ../utils/storage.h app.h Xapp.o: appstate.h ../utils/strtbl.h ashash.h ../utils/hash.h Xroom.o: ../utils/utils.h /usr/include/stdio.h /usr/include/string.h Xroom.o: ../utils/machdep.h app.h appstate.h ../utils/strtbl.h roomstr.h Xroom.o: ../utils/list.h ../utils/storage.h room.h Xprofscan.o: /usr/include/X11/Xlib.h /usr/include/sys/types.h Xprofscan.o: /usr/include/X11/X.h /usr/include/X11/Xutil.h ../utils/utils.h Xprofscan.o: /usr/include/stdio.h /usr/include/string.h ../utils/machdep.h Xprofscan.o: appstate.h profile.h scanstr.h profscan.h /usr/include/ctype.h Xnames.o: ../utils/utils.h /usr/include/stdio.h /usr/include/string.h Xnames.o: ../utils/machdep.h /usr/include/ctype.h namesstr.h ../utils/regex.h Xnames.o: names.h Xapps.o: ../utils/utils.h /usr/include/stdio.h /usr/include/string.h Xapps.o: ../utils/machdep.h ../utils/hash.h ../utils/storage.h Xapps.o: ../utils/strtbl.h rooms.h room.h app.h appstate.h apps.h profile.h Xrooms.o: ../utils/utils.h /usr/include/stdio.h /usr/include/string.h Xrooms.o: ../utils/machdep.h ../utils/strtbl.h ../utils/hash.h Xrooms.o: ../utils/storage.h apps.h app.h appstate.h rooms.h room.h profile.h Xnameprof.o: ../utils/utils.h /usr/include/stdio.h /usr/include/string.h Xnameprof.o: ../utils/machdep.h ../utils/strtbl.h ../utils/list.h Xnameprof.o: ../utils/storage.h nameprof.h names.h Xprofile.o: ../utils/utils.h /usr/include/stdio.h /usr/include/string.h Xprofile.o: ../utils/machdep.h apps.h app.h appstate.h ../utils/strtbl.h Xprofile.o: rooms.h room.h profilestr.h profile.h profscan.h names.h Xprofile.o: nameprof.h Xprofparser.o: ../utils/utils.h /usr/include/stdio.h /usr/include/string.h Xprofparser.o: ../utils/machdep.h profparser.h ../utils/strtbl.h appstate.h Xprofparser.o: rooms.h room.h app.h apps.h profile.h profscan.h names.h Xprofparser.o: nameprof.h END_OF_FILE if test 9387 -ne `wc -c <'./lib/Makefile'`; then echo shar: \"'./lib/Makefile'\" unpacked with wrong size! fi # end of './lib/Makefile' fi if test -f './xrooms/xrProtoArgs.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'./xrooms/xrProtoArgs.c'\" else echo shar: Extracting \"'./xrooms/xrProtoArgs.c'\" \(9601 characters\) sed "s/^X//" >'./xrooms/xrProtoArgs.c' <<'END_OF_FILE' X X /*\ X * $Header: xrProtoArgs.c,v 5.2 90/01/11 15:17:44 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 <X11/Xlib.h> X#include <X11/cursorfont.h> X#include <X11/Xutil.h> X X#define DEBUG_VAR xrpaDebug X#include "utils.h" X#include "hash.h" X X#include "appstate.h" X#include "apps.h" X#include "rooms.h" X X#include "xrDebug.h" X#include "xrXUtils.h" X#include "xrApp.h" X#include "xrGen.h" X#include "xrProtoArgs.h" X#include "xrooms.h" X X X/***====================================================================***/ X Xstatic xrpaSelectInfoRec xrpaLastPress= { NullApp,0,0,0,0,0 }; Xstatic RoomPtr xrpaLastRoom= NullRoom; X Xstatic RoomPtr XxrpaGetLastRoom() X{ X uENTRY("xrpaGetLastRoom()\n"); X uRETURN(xrpaLastRoom); X} X Xstatic void XxrpaSetLastRoom(pRoom) XRoomPtr pRoom; X{ X uENTRY1("xrpaSetLastRoom(%s)\n",roomText(pRoom)); X xrpaLastRoom= pRoom; X uVOIDRETURN; X} X XAppPtr XxrpaGetLastApp() X{ X uENTRY("xrpaGetLastApp()\n"); X uRETURN(xrpaLastPress.pApp); X} X Xstatic void XxrpaSetLastApp(pApp) XAppPtr pApp; X{ X uENTRY1("xrpaSetLastApp(%s)\n",appText(pApp)); X xrpaLastPress.pApp= pApp; X xrpaLastPress.x= xrpaLastPress.y= 1; X xrpaLastPress.button= 1; X xrpaLastPress.dx= xrpaLastPress.dy= 0; X uVOIDRETURN; X} X X/***====================================================================***/ X Xstatic void XxrpaFindSectorAndDelta(win,x1,y1,x2,y2,pPressInfo) XWindow win; Xint x1,y1; Xint x2,y2; XxrpaSelectInfoPtr pPressInfo; X{ XWindow rootRtrn,kidRtrn; Xint realX,realY; Xint realWidth,realHeight; Xunsigned borderRtrn,depthRtrn; Xint xSector= 1; Xint ySector= 1; Xint dx= 0; Xint dy= 0; X X uENTRY6("xrpaFindSectorAndDelta(0x%x,%d,%d,%d,%d,0x%x)\n",win, X x1,y1,x2,y2,pPressInfo); X X if (XGetGeometry(xroomsDpy,win,&rootRtrn,&realX,&realY, X &realWidth,&realHeight, X &borderRtrn,&depthRtrn)) { X XTranslateCoordinates(xroomsDpy,rootRtrn,win,x1,y1,&realX,&realY, X &kidRtrn); X x1= realX; y1= realY; X XTranslateCoordinates(xroomsDpy,rootRtrn,win,x2,y2,&realX,&realY, X &kidRtrn); X x2= realX; y2= realY; X uDEBUG4(WATCH_EVENTS,"translated coordinates: (%d,%d) -> (%d,%d)\n", X x1,y1,x2,y2); X uDEBUG2(WATCH_EVENTS,"window is %dx%d\n",realWidth,realHeight); X realWidth/=3; realHeight/= 3; X if (x1<=realWidth) xSector= 1; X else if (x1<=(realWidth*2)) xSector= 0; X else xSector= -1; X if (y1<=realHeight) ySector= 1; X else if (y1<=(realHeight*2)) ySector= 0; X else ySector= -1; X X dx= x1-x2; X if (dx>realWidth) dx= 1; X else if (dx<(-realWidth)) dx= -1; X else dx= 0; X X dy= y1-y2; X if (dy>realHeight) dy= 1; X else if (dy<(-realHeight)) dy= -1; X else dy= 0; X } X if (pPressInfo!=NullSelectInfo) { X pPressInfo->x= xSector; X pPressInfo->y= ySector; X pPressInfo->dx= dx; X pPressInfo->dy= dy; X } X uVOIDRETURN; X} X X/***====================================================================***/ X X/* X * Routine to let user select a window using the mouse, lifted from dsimple.c X * with stuff to locate client window added. X */ X XAppPtr XxrpaSelectApp(pInfo) XxrpaSelectInfoPtr pInfo; X{ Xint status; XCursor cursor; XXEvent event; XWindow targetWin= None; Xint buttons= 0; Xint button,x1,y1,x2,y2; X X uENTRY1("xrpaSelectApp(0x%x)\n",pInfo); X /* Make the target cursor */ X cursor = XCreateFontCursor(xroomsDpy, XC_crosshair); X X do { X /* Grab the pointer using target cursor, letting it roam all over */ X status = XGrabPointer(xroomsDpy, xroomsRoot, False, X ButtonPressMask|ButtonReleaseMask, GrabModeSync, X GrabModeAsync, xroomsRoot, cursor, CurrentTime); X } while (status!=GrabSuccess); X X /* Let the user select a window... */ X while ((targetWin == None) || (buttons != 0)) { X /* allow one more event */ X XAllowEvents(xroomsDpy,SyncPointer, CurrentTime); X XWindowEvent(xroomsDpy,xroomsRoot,ButtonPressMask|ButtonReleaseMask, X &event); X switch (event.type) { X case ButtonPress: X if (targetWin == None) { X targetWin = event.xbutton.subwindow; /* window selected */ X button= event.xbutton.button; X x1= event.xbutton.x; X y1= event.xbutton.y; X if ((targetWin == None)||(buttons>1)) X targetWin = xroomsRoot; X } X buttons++; X break; X case ButtonRelease: X /* there may have been some down before we started */ X if (buttons > 0) X buttons--; X if (event.xbutton.button==button) { X x2= event.xbutton.x; X y2= event.xbutton.y; X } X break; X } X } X X XUngrabPointer(xroomsDpy, CurrentTime); /* Done with pointer */ X X if (targetWin!=xroomsRoot) { X Window tmpWin= targetWin; X X tmpWin= xruFindClientWindowAbove(targetWin,(WinState *)NULL); X if (tmpWin==None) X tmpWin= xruFindClientWindow(targetWin,(WinState *)NULL); X if (tmpWin!=None) { X AppPtr pApp= xraLookupWindowApp(tmpWin); X if ((pInfo!=NullSelectInfo)&&(pApp!=NullApp)) { X pInfo->pApp= pApp; X pInfo->button= button; X xrpaFindSectorAndDelta(tmpWin,x1,y1,x2,y2,pInfo); X } X uRETURN(pApp); X } X } X uRETURN(NullApp); X} X X X/***====================================================================***/ X Xunsigned XxrpaLastParts() X{ Xunsigned parts= 0; X X uENTRY("xrpaLastParts()\n"); X if (xrpaLastPress.x<0) parts|= XR_X_PART|XR_X_NEGATIVE; X else if (xrpaLastPress.x>0) parts|= XR_X_PART; X X if (xrpaLastPress.y<0) parts|= XR_Y_PART|XR_Y_NEGATIVE; X else if (xrpaLastPress.y>0) parts|= XR_Y_PART; X X if (xrpaLastPress.dx!=0) X parts|= XR_WIDTH_PART; X if (xrpaLastPress.dy!=0) X parts|= XR_HEIGHT_PART; X uDEBUG4(WATCH_EVENTS,"press at (%d,%d), delta was (%d,%d)\n", X xrpaLastPress.x,xrpaLastPress.y, X xrpaLastPress.dx,xrpaLastPress.dy); X uDEBUG1(WATCH_EVENTS,"parts= 0x%x\n",parts); X uRETURN(parts); X} X X/***====================================================================***/ X XAppPtr XxrpaGetApp(which,name) Xunsigned which; Xchar *name; X{ XStringToken nameToken; XAppPtr pApp= NullApp; X X uENTRY2("xrpaGetApp(0x%x,%s)\n",which,uStringText(name)); X if ((which==XR_QUERY_APP)||(which==XR_QUERY_MULT_APPS)) X pApp= xrpaSelectApp(&xrpaLastPress); X else if (which==XR_LAST_APP) pApp= xrpaGetLastApp(); X else if (which==XR_NAMED_APP) { X if (stGetTokenIfExists(name,&nameToken)) { X pApp= LookupApp(nameToken); X } X xrpaSetLastApp(pApp); X } X else if (which==XR_WINDOW_APP) { X Window winId; X if (sscanf(name,"0x%x",&winId)==1) { X winId= xruFindClientWindow(winId,(WinState *)NULL); X if (winId!=None) { X pApp= xraLookupWindowApp(winId); X if (pApp!=NullApp) X xrpaSetLastApp(pApp); X } X } X else pApp= NullApp; X } X else if (which==XR_ALL_APPS) { X pApp= NullApp; X } X uRETURN(pApp); X} X X/***====================================================================***/ X XRoomPtr XxrpaGetRoom(which,name) Xunsigned which; Xchar *name; X{ XStringToken nameToken; XRoomPtr pRoom= NullRoom; X X uENTRY2("xrpaGetRoom(0x%x,%s)\n",which,uStringText(name)); X if (which&XR_QUERY_ROOM) { X /* not implemented yet */ X pRoom= GetCurrentRoom(); X xrpaSetLastRoom(pRoom); X } X else if (which&XR_CURRENT_ROOM) { X pRoom= GetCurrentRoom(); X xrpaSetLastRoom(pRoom); X } X else if (which&XR_LAST_ROOM) X pRoom= xrpaGetLastRoom(); X else if (which&XR_NAMED_ROOM) { X if (stGetTokenIfExists(name,&nameToken)) { X pRoom= LookupRoom(nameToken); X } X if ((pRoom==NullRoom)&&(which&XR_CREATE_ROOM)) { X nameToken= stGetToken(name); X pRoom= CreateRoom(nameToken); X } X xrpaSetLastRoom(pRoom); X } X else if (which&XR_ALL_ROOMS) { X pRoom= NullRoom; X } X uRETURN(pRoom); X} X X/***====================================================================***/ X XAppStatePtr XxrpaGetState(which,pApp,pRoom) Xunsigned which; XAppPtr pApp; XRoomPtr pRoom; X{ XAppStatePtr pState= NullAppState; X X uENTRY3("xrpaGetState(0x%x,%s,%s)\n",which,appText(pApp), X roomText(pRoom)); X X if (pApp!=NullApp) { X if (which&XR_QUERY_STATE) { X which= xrpDfltBoltState; X } X if (which&(XR_DFLT_STATE|XR_ALL_STATES)) X pState= appGetDefault(pApp); X else if ((which&XR_LOCAL_STATE)&&(pRoom!=NullRoom)) { X pState= appSetRoomState(pApp,roomName(pRoom),appGetDefault(pApp), X False); X if (appIsActive(pApp)) X roomCheckAppStates(pRoom,pApp); X } X else if ((which&XR_VISIBLE_STATE)&&(pRoom!=NullRoom)) { X if (appIsActive(pApp)) X pState= roomGetVisibleState(pRoom,pApp); X else { X pState= appGetRoomState(pApp,roomName(pRoom)); X if (pState==NullAppState) { X pState= appGetDefault(pApp); X } X } X } X else pState= NullAppState; X } X uRETURN(pState); X} X END_OF_FILE if test 9601 -ne `wc -c <'./xrooms/xrProtoArgs.c'`; then echo shar: \"'./xrooms/xrProtoArgs.c'\" unpacked with wrong size! fi # end of './xrooms/xrProtoArgs.c' fi if test -f './xrooms/xrProtoIter.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'./xrooms/xrProtoIter.c'\" else echo shar: Extracting \"'./xrooms/xrProtoIter.c'\" \(10937 characters\) sed "s/^X//" >'./xrooms/xrProtoIter.c' <<'END_OF_FILE' X X /*\ X * $Header: xrProtoIter.c,v 5.1 90/01/11 15:18:07 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 <X11/Xlib.h> X#define DEBUG_VAR xrpiDebug X#include "utils.h" X X#include "appstate.h" X#include "apps.h" X#include "rooms.h" X X#include "xrGen.h" X#include "xrProtoArgs.h" X#include "xrProtoIter.h" X X/***====================================================================***/ X/*** ITERATE ACROSS SELECTED STATES OF AN APPLICATION ***/ X/***====================================================================***/ X Xtypedef struct _xrpiIterState { X unsigned flags; X unsigned which; X Opaque pending; X Opaque pIState; X} xrpiIterStateRec,*xrpiIterStatePtr; X#define NullIterState ((xrpiIterStatePtr)NULL) X X#define xrpiFreeMe ((unsigned)(1<<1)) X#define xrpiInUse ((unsigned)(1<<2)) X#define xrpiSinglePending ((unsigned)(1<<3)) X#define xrpiIterInProgress ((unsigned)(1<<4)) X Xstatic xrpiIterStateRec dfltASIterState; X X/***====================================================================***/ X XBoolean X_xrpiInitAppStatesIter(pApp, pRoom, whichStates, ppIState) XAppPtr pApp; XRoomPtr pRoom; Xunsigned whichStates; XOpaque *ppIState; X{ XBoolean ok= True; XxrpiIterStatePtr pIState; XStringToken rmName; X X uENTRY4("_xrpiInitAppStatesIter(%s,%s,0x%x,0x%x)\n",appText(pApp), X roomText(pRoom),whichStates,ppIState); X if ((pApp==NullApp)||(ppIState==(Opaque *)NULL)) { X uRETURN(False); X } X if (pRoom==NullRoom) { X pRoom= GetCurrentRoom(); X if (pRoom==NullRoom) { X uRETURN(False); X } X } X rmName= roomName(pRoom); X if (!(dfltASIterState.flags&xrpiInUse)) { X pIState= &dfltASIterState; X pIState->flags= xrpiInUse; X } X else { X pIState= uTypedAlloc(xrpiIterStateRec); X if (pIState==NullIterState) { X uRETURN(False); X } X pIState->flags= xrpiInUse|xrpiFreeMe; X } X pIState->pIState= (Opaque)NULL; X pIState->pending= (Opaque)NULL; X if (whichStates&XR_ALL_STATES) { X if (whichStates&XR_DESTROY_LOCAL_STATES) { X AppStatePtr pState= roomGetVisibleState(pRoom,pApp); X if (pState!=NullAppState) { X appSetDefault(pApp,pState,False); X } X appRemoveAllRoomStates(pApp); X } X else { X if (_appInitIter(pApp,&pIState->pIState)) X pIState->flags|= xrpiIterInProgress; X } X } X X switch (whichStates&XR_WHICH_MASK) { X case XR_QUERY_STATE: /* not implemented */ X case XR_VISIBLE_STATE: X pIState->pending= (Opaque)roomGetVisibleState(pRoom,pApp); X if (pIState->pending!=(Opaque)NULL) X pIState->flags|= xrpiSinglePending; X else ok= False; X break; X case XR_LOCAL_STATE: X pIState->pending= (Opaque)appGetRoomState(pApp,rmName); X if ((pIState->pending==(Opaque)NULL)&& X (whichStates&XR_CREATE_LOCAL_STATES)) { X pIState->pending= (Opaque)appGetDefault(pApp); X pIState->pending= (Opaque)appSetRoomState(pApp,rmName, X (AppStatePtr)pIState->pending, X False); X } X if (pIState->pending==(Opaque)NULL) X pIState->flags|= xrpiSinglePending; X else ok= False; X break; X case XR_ALL_STATES: X case XR_DFLT_STATE: X pIState->pending= (Opaque)appGetDefault(pApp); X pIState->flags|= xrpiSinglePending; X break; X default: X ok= False; X break; X } X *ppIState= (Opaque)pIState; X uRETURN(ok); X} X X/***====================================================================***/ X XBoolean X_xrpiAppStatesIterNext( inState, pApp, ppState ) XOpaque inState; XAppPtr pApp; XAppStatePtr *ppState; X{ XxrpiIterStatePtr pIState= (xrpiIterStatePtr)inState; XBoolean ok; XStringToken name; X X uENTRY3("_xrpiAppStatesIterNext(0x%x,%s,0x%x)\n",pIState,appText(pApp), X ppState); X if (pIState->flags&xrpiSinglePending) { X *ppState= (AppStatePtr)pIState->pending; X pIState->flags&= (~xrpiSinglePending); X uRETURN(True); X } X if (pIState->flags&xrpiIterInProgress) { X ok= _appIterNext(pApp,&pIState->pIState,&name,ppState); X if (!ok) { X pIState->flags&= (~xrpiIterInProgress); X } X uRETURN(ok); X } X uRETURN(False); X} X X/***====================================================================***/ X Xvoid XxrpiEndAppStatesIterator( pApp, inState ) XAppPtr pApp; XOpaque inState; X{ XxrpiIterStatePtr pIState= (xrpiIterStatePtr)inState; X X uENTRY1("xrpiEndAppStatesIterator( 0x%x )\n",pIState); X if ( pIState!= NullIterState ) { X pIState->flags&= (~xrpiSinglePending); X pIState->pending= (Opaque)NULL; X if (pIState->pIState!=(Opaque)NULL) { X pIState->flags&= (~xrpiIterInProgress); X appEndIterator(pApp,pIState->pIState); X pIState->pIState= (Opaque)NULL; X } X pIState->flags&= (~xrpiInUse); X if (pIState->flags&xrpiFreeMe) { X uFree((Opaque)pIState); X } X } X uVOIDRETURN; X} X X/***====================================================================***/ X Xstatic xrpiIterStateRec dfltAppIterState; X XBoolean X_xrpiInitAppsIter( whichApps, nameOrId, ppIState ) Xunsigned whichApps; Xchar *nameOrId; XOpaque *ppIState; X{ XBoolean ok= True; XxrpiIterStatePtr pIState; X X uENTRY3("_xrpiInitAppsIter(0x%x,0x%x,%s)\n",whichApps,uStringText(nameOrId), X ppIState); X if (!(dfltAppIterState.flags&xrpiInUse)) { X pIState= &dfltAppIterState; X pIState->flags= xrpiInUse; X } X else { X pIState= uTypedAlloc(xrpiIterStateRec); X if (pIState==NullIterState) { X uRETURN(False); X } X pIState->flags= xrpiInUse|xrpiFreeMe; X } X pIState->pIState= (Opaque)NULL; X pIState->which= whichApps; X pIState->pending= (Opaque)NULL; X X if (whichApps==XR_ALL_APPS) { X ok= _AppsInitIter(AllApps,&pIState->pIState); X if (ok) pIState->flags|= xrpiIterInProgress; X } X else if (whichApps==XR_ACTIVE_APPS) { X ok= _AppsInitIter(ActiveApps,&pIState->pIState); X if (ok) pIState->flags|= xrpiIterInProgress; X } X else { X pIState->pending= (Opaque)xrpaGetApp(whichApps,nameOrId); X if (pIState->pending!=(Opaque)NULL) X pIState->flags|= xrpiSinglePending; X else ok= False; X } X *ppIState= (Opaque)pIState; X uRETURN(ok); X} X X/***====================================================================***/ X XBoolean X_xrpiAppsIterNext( inState, ppApp ) XOpaque inState; XAppPtr *ppApp; X{ XxrpiIterStatePtr pIState= (xrpiIterStatePtr)inState; XBoolean ok; X X uENTRY2("_xrpiAppsIterNext(0x%x,0x%x)\n",pIState,ppApp); X if (pIState->flags&xrpiSinglePending) { X *ppApp= (AppPtr)pIState->pending; X if (pIState->which==XR_QUERY_MULT_APPS) { X pIState->pending=(Opaque)xrpaGetApp(XR_QUERY_MULT_APPS,NullString); X if (pIState->pending==(Opaque)NULL) { X pIState->flags&= (~xrpiSinglePending); X } X } X else pIState->flags&= (~xrpiSinglePending); X uRETURN(True); X } X if (pIState->flags&xrpiIterInProgress) { X ok= _AppsIterNext(pIState->pIState,ppApp); X if (!ok) { X pIState->flags&= (~xrpiIterInProgress); X } X uRETURN(ok); X } X uRETURN(False); X} X X/***====================================================================***/ X Xvoid XxrpiEndAppsIterator( inState ) XOpaque inState; X{ XxrpiIterStatePtr pIState= (xrpiIterStatePtr)inState; X X uENTRY1("xrpiEndAppsIterator( 0x%x )\n",pIState); X if ( pIState!= NullIterState ) { X pIState->flags&= (~xrpiSinglePending); X pIState->pending= (Opaque)NULL; X if (pIState->pIState!=(Opaque)NULL) { X pIState->flags&= (~xrpiIterInProgress); X AppsEndIterator(pIState->pIState); X pIState->pIState= (Opaque)NULL; X } X pIState->flags&= (~xrpiInUse); X if (pIState->flags&xrpiFreeMe) { X uFree((Opaque)pIState); X } X } X} X X/***====================================================================***/ X Xstatic xrpiIterStateRec dfltRoomsIterState; X XBoolean X_xrpiInitRoomsIter( whichRooms, name, ppIState) Xunsigned whichRooms; Xchar *name; XOpaque *ppIState; X{ XBoolean ok= True; XxrpiIterStatePtr pIState; X X uENTRY3("_xrpiInitRoomsIter(0x%x,%s,0x%x)\n",whichRooms,uStringText(name), X ppIState); X if (!(dfltRoomsIterState.flags&xrpiInUse)) { X pIState= &dfltRoomsIterState; X pIState->flags= xrpiInUse; X } X else { X pIState= uTypedAlloc(xrpiIterStateRec); X if (pIState==NullIterState) { X uRETURN(False); X } X pIState->flags= xrpiInUse|xrpiFreeMe; X } X pIState->pIState= (Opaque)NULL; X pIState->pending= (Opaque)NULL; X X if ((whichRooms==XR_ALL_ROOMS)||(whichRooms==XR_VISIBLE_ROOMS)) { X ok= _RoomsInitIter(&pIState->pIState); X if (ok) pIState->flags|= xrpiIterInProgress; X pIState->which= whichRooms; X } X else { X pIState->pending= (Opaque)xrpaGetRoom(whichRooms,name); X if (pIState->pending!=(Opaque)NULL) X pIState->flags|= xrpiSinglePending; X else ok= False; X } X *ppIState= (Opaque)pIState; X uRETURN(ok); X} X X/***====================================================================***/ X XBoolean X_xrpiRoomsIterNext( inState, ppRoom ) XOpaque inState; XRoomPtr *ppRoom; X{ XxrpiIterStatePtr pIState= (xrpiIterStatePtr)inState; XBoolean ok; X X uENTRY2("_xrpiRoomsIterNext(0x%x,0x%x)\n",pIState,ppRoom); X if (pIState->flags&xrpiSinglePending) { X *ppRoom= (RoomPtr)pIState->pending; X pIState->flags&= (~xrpiSinglePending); X uRETURN(True); X } X if (pIState->flags&xrpiIterInProgress) { X if (pIState->which==XR_ALL_ROOMS) X ok= _RoomsIterNext(pIState->pIState,ppRoom); X else ok= _RoomsIterNextVisible(pIState->pIState,ppRoom); X if (!ok) { X pIState->flags&= (~xrpiIterInProgress); X } X uRETURN(ok); X } X uRETURN(False); X} X X/***====================================================================***/ X Xvoid XxrpiEndRoomsIterator( inState ) XOpaque inState; X{ XxrpiIterStatePtr pIState= (xrpiIterStatePtr)inState; X X uENTRY1("xrpiEndRoomsIterator( 0x%x )\n",pIState); X if ( pIState!= NullIterState ) { X pIState->flags&= (~xrpiSinglePending); X pIState->pending= (Opaque)NULL; X if (pIState->pIState!=(Opaque)NULL) { X pIState->flags&= (~xrpiIterInProgress); X RoomsEndIterator(pIState->pIState); X pIState->pIState= (Opaque)NULL; X } X pIState->flags&= (~xrpiInUse); X if (pIState->flags&xrpiFreeMe) { X uFree((Opaque)pIState); X } X } X} X END_OF_FILE if test 10937 -ne `wc -c <'./xrooms/xrProtoIter.c'`; then echo shar: \"'./xrooms/xrProtoIter.c'\" unpacked with wrong size! fi # end of './xrooms/xrProtoIter.c' fi if test -f './xrooms/xrXUtils.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'./xrooms/xrXUtils.c'\" else echo shar: Extracting \"'./xrooms/xrXUtils.c'\" \(10879 characters\) sed "s/^X//" >'./xrooms/xrXUtils.c' <<'END_OF_FILE' X X /*\ X * $Header: xrXUtils.c,v 5.0 90/01/10 07:01:42 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 <X11/Xproto.h> X#include <X11/Xlib.h> X#include <X11/Xatom.h> X#include <X11/Xutil.h> X X#define DEBUG_VAR xruDebug X#include "utils.h" X#include "appstate.h" X X#include "xrDebug.h" X#include "xrooms.h" X#include "xrXUtils.h" X X/***====================================================================***/ X XBoolean xruFindFakeRoot; XBoolean xruFindFakeState; X X/***====================================================================***/ X XBoolean XxruGetChildren(window, children, nChildren) XWindow window; XWindow **children; Xint *nChildren; X{ XWindow rtrnRoot,rtrnParent; X X uENTRY3("xruGetChildren(0x%x,0x%x,0x%x)\n",window,children,nChildren); X if (XQueryTree(xroomsDpy, window, &rtrnRoot, &rtrnParent, children, X nChildren)) { X uRETURN(True); X } X uRETURN(False); X} X X X/***====================================================================***/ X XWindow XxruGetParent(window) XWindow window; X{ XWindow rtrnRoot,rtrnParent; XWindow *children= NULL; Xint nChildren; X X uENTRY1("xruGetParent(0x%x)\n",window); X if (XQueryTree(xroomsDpy,window,&rtrnRoot,&rtrnParent,&children, X &nChildren)) { X if ((nChildren>0)&&(children)) X (void)XFree (children); X uRETURN(rtrnParent); X } X uRETURN(None); X} X X/***====================================================================***/ X X/* X * Find the window manager root window (the parent of the reparented X * application windows). For most window managers, this is simply X * RootWindow(dpy, screen). For dxwm, this is it's full-screen X * pseudo-root. X * X * To find the window manager root window, X * 1. If DEC_WM_DECORATION_GEOMETRY is not an interned atom, return X * RootWindow(dpy, screen) X * 2. Look for a direct child of RootWindow(dpy, screen) that is X * full-screen and has override_redirect = True. [=top] X * 3. If top does not exist, return RootWindow(dpy, screen). X * 4. If top does not have a single, full-screen child, return X * RootWindow(dpy, screen). [=WmRoot] X * 5. Otherwise, return WmRoot. X * X */ X X XWindow XxruWMRoot(dpy, root, xdw, xdh) XDisplay *dpy; XWindow root; Xint xdw, xdh; X{ X Atom dec_wm; X Window top, ig_win, *children; X int numchildren, i; X XWindowAttributes xwa; X X dec_wm = XInternAtom(dpy, "DEC_WM_DECORATION_GEOMETRY", True); X if (dec_wm == None) X return root; X XQueryTree(dpy, root, &ig_win, &ig_win, &children, &numchildren); X top = NULL; X for (i=0; i<numchildren; i++) { X XGetWindowAttributes(dpy, children[i], &xwa); X if (xwa.x == 0 && xwa.y == 0 && X xwa.width == xdw && X xwa.height == xdh && X xwa.border_width == 0 && X xwa.override_redirect && (xwa.map_state==IsViewable)) { X top = children[i]; X break; X } X } X if (!top) X return root; X XQueryTree(dpy, top, &ig_win, &ig_win, &children, &numchildren); X for (i=0; i<numchildren; i++) { X XGetWindowAttributes(dpy, children[i], &xwa); X if (xwa.x == 0 && xwa.y == 0 && X xwa.width == xdw && X xwa.height == xdh && X xwa.border_width == 0 && X !xwa.override_redirect) { X return children[i]; X } X } X return root; X} X X/***====================================================================***/ X XWindow XxruWMRootWindow(dpy, screen) XDisplay *dpy; Xint screen; X{ X return xruWMRoot(dpy, RootWindow(dpy, screen), X XDisplayWidth(dpy, screen), XDisplayHeight(dpy, screen)); X} X X/***====================================================================***/ X X/* X * Find the "root" window; the window in which the window manager puts X * decorated windows. Almost always the real root window (except for X * things like dxwm.) X */ XWindow XxruFindRoot() X{ X uENTRY("xruFindRoot()\n"); X if (xruFindFakeRoot) { X uRETURN(xruWMRootWindow(xroomsDpy,xroomsScreenIndex)); X } X uRETURN(XRootWindow(xroomsDpy,xroomsScreenIndex)); X} X X/***====================================================================***/ X X/* X * Return the iconic state for the window. If it doesn't have one, X * return asInactive. X */ X XWinState XxruGetState(window,lookForName) XWindow window; XBoolean lookForName; X{ XAtom actualType; Xunsigned long actualFormat, nItems, bytesAfter; Xchar *propRtrn; XWinState result; X X uENTRY2("xruGetState(0x%x,%s)\n",window,booleanText(lookForName)); X if (XGetWindowProperty(xroomsDpy, window, WM_STATE, 0, 1, False, X AnyPropertyType, &actualType, &actualFormat, X &nItems, &bytesAfter, &propRtrn)==Success) { X if ((actualType != None)&&(nItems>0)) { X bcopy(propRtrn, (char *) &result, sizeof(int)); X XFree(propRtrn); X uRETURN(result); X } X } X X if ((lookForName)&&(XGetWindowProperty(xroomsDpy,window,XA_WM_NAME,0,1, X False,AnyPropertyType, &actualType, &actualFormat, X &nItems, &bytesAfter, &propRtrn)==Success)) { X X if ((actualType != None)&&(nItems>0)) { X uDEBUG2(WATCH_APPS,"window 0x%x has name \"%s\"but no state\n", X window,propRtrn); X if (propRtrn!=NullString) X XFree(propRtrn); X if (xruFindFakeState) { X XWindowAttributes xwa; X XGetWindowAttributes(xroomsDpy,window,&xwa); X if (!xwa.override_redirect) { X if (xwa.map_state==IsViewable) result= asNormal; X else result= asIconic; X } X else result= asInactive; X uDEBUG1(WATCH_APPS,"faking %s state\n",asWinStateText(result)); X } X else { X XSelectInput(xroomsDpy, window, PropertyChangeMask); X result= xruGetState(window,False); X uDEBUG2(WATCH_APPS,"second attempt at 0x%x returns %d\n", X window,result); X } X uRETURN(result); X } X } X uRETURN(asInactive); X} X X/***====================================================================***/ X X XBoolean XxruIsTransient(window) XWindow window; X{ XAtom actualType; Xunsigned long actualFormat, nItems, bytesAfter; Xchar *propRtrn; X X uENTRY1("xruIsTransient(0x%x)\n",window); X if (XGetWindowProperty(xroomsDpy, window, XA_WM_TRANSIENT_FOR, 0, 1, False, X AnyPropertyType, &actualType, &actualFormat, X &nItems, &bytesAfter, &propRtrn)==Success) { X if ((actualType != None)&&(nItems>0)) { X if (propRtrn!=NullString) XFree(propRtrn); X uRETURN(True); X } X } X uRETURN(False); X} X X/***====================================================================***/ X XWindow XxruFindClientWindowAbove(window, pState) XWindow window; XWinState *pState; X{ XWinState state; X X uENTRY2("xruFindClientWindowAbove(0x%x,0x%x)\n",window,pState); X do { X state= xruGetState(window,True); X if (state != asInactive) { X if (pState!=(WinState *)NULL) X *pState = state; X uRETURN(window); X } X window= xruGetParent(window); X } while ((window!=None)&&(window!=xroomsRoot)&&(window!=xroomsRealRoot)); X X uRETURN(None); X} X X/***====================================================================***/ X XWindow XxruFindClientWindow(window, pState) XWindow window; XWinState *pState; X{ XWinState state; XWindow *children; Xint i,nChildren; XWindow result; X X uENTRY2("xruFindClientWindow(0x%x,0x%x)\n",window,pState); X state= xruGetState(window,True); X if (state != asInactive) { X if (pState!=(WinState *)NULL) X *pState = state; X uRETURN(window); X } X X result= NULL; X if (xruGetChildren(window, &children, &nChildren)) { X for (i=0;(i<nChildren)&&(!result); i++) { X result= xruFindClientWindow(children[i], pState); X } X X if (nChildren) X XFree((char *) children); X } X uRETURN(result); X} X X/***====================================================================***/ X XBoolean XxruGetPropertyString(dpy, window, name, pRtrn) XDisplay *dpy; XWindow window; XAtom name; Xchar **pRtrn; X{ XAtom actualtype; Xunsigned long actualformat, nitems, bytesafter; Xchar *propreturn = NULL; Xchar *ptr, buf[20]; XXSizeHints *pHints; Xint i; X X if (pRtrn!=(char **)NULL) X *pRtrn= NullString; X if (name == None) X return False; X if (XGetWindowProperty(dpy, window, name, 0, 99999, False, X AnyPropertyType, &actualtype, &actualformat, X &nitems, &bytesafter, &propreturn)==Success) { X if (bytesafter > 0) { X uWarning("Far too big a property was stored.\n"); X return False; X } X if ((actualtype == None)||(propreturn==NULL)) { X uDEBUG(WATCH_APPS,"property not found\n"); X return False; X } X } X else { X uDEBUG(WATCH_APPS,"XGetWindowProperty failed\n"); X return False; X } X X if (actualtype == XA_STRING) { X for (i=nitems * actualformat / 8 , ptr=propreturn ; i > 0 ; i--, ptr++) X if (*ptr == 0) *ptr = ' '; X if (pRtrn!=(char **)NULL) X *pRtrn= propreturn; X return True; X } X else if (actualtype == XA_WM_SIZE_HINTS) { X pHints= (XSizeHints *)propreturn; X if ((pHints->flags & (USSize | USPosition))&&(pRtrn!=(char **)NULL)) { X *pRtrn= propreturn = (char *) malloc(30); X *propreturn = 0; X if (pHints->flags & USSize) X sprintf(propreturn, "%dx%d", pHints->width, pHints->height); X if (pHints->flags & USPosition) { X sprintf(buf, "+%d+%d", pHints->x, pHints->y); X strcat(propreturn, buf); X } X } X (void)XFree(pHints); X return True; X } X else if (actualtype == WM_STATE) { X WinState result; X bcopy(propreturn, (char *) &result, sizeof(int)); X XFree(propreturn); X if (pRtrn!=(char **)NULL) { X ptr= asWinStateText(result); X *pRtrn = uStringDup(ptr); X } X return True; X } X else { X XFree(propreturn); X return(True); X } X} X X/***====================================================================***/ X Xint XxruIgnoreErrors(dpy, event) XDisplay *dpy; XXErrorEvent *event; X{ X if ((event->request_code == X_GetProperty)|| X (event->request_code == X_MapWindow)|| X (event->request_code == X_QueryTree)) { X if (DEBUG_VAR&WATCH_ERRORS) X _XPrintDefaultError(dpy, event, stderr); X return 0; X } X _XPrintDefaultError(dpy, event, stderr); X return 0; X} X X END_OF_FILE if test 10879 -ne `wc -c <'./xrooms/xrXUtils.c'`; then echo shar: \"'./xrooms/xrXUtils.c'\" unpacked with wrong size! fi # end of './xrooms/xrXUtils.c' fi echo shar: End of archive 6 \(of 14\). cp /dev/null ark6isdone 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