richb@sunchat.UUCP (Rich Burridge) (12/12/88)
The next three messages contain the latest version of faces, a visual mail/printer monitor.Could you please place them in your archives. This is the second general release of a face server for monitoring mail and print jobs. It is based on the Bell Labs v8 vismon program, and this version is vismon compatible, but is not derived from AT&T sources. This version contains drivers for SunView and NeWS graphics systems. Permission is given to distribute these sources, as long as the copyright messages are not removed, and no monies are exchanged. See the README and manual page for more details. Save the subsequent messages in a new directory, strip off the beginning down to and including the CUT HERE line, unpack with sh, then type "make sunview" for the SunView version or "make news" for the NeWS version. Then install with "make install". Note that you might need super-user permission to do this successfully. Create your face directory, hostname sub-directories username ikons/icons, machine and people tables, and you're set. Note that if you are compiling faces under v3.x of the SunOS, then there is a line in the Makefile starting with OSTYPE, that needs to be uncommented. If anybody can work out what needs to be done to fix the problem of the window/icon always moving back to the initial position (see the BUGS section of the man page), then I'll be very pleased to hear from them. If you already have your face scanned in and iconised and would like to add it to the library I'm building up, please feel free to email it to me. Bugs, flames and suggestions to me please. Acknowledgements. Thanks go to Guy Harris for the basis of the latest manual page, Dave Lemke for many excellent suggestions including the animated postscript faces, to Andrew Nicholson for help with some of the trickier NeWS code, to Dan Heller for writing the 'watch' program which was consulted in the early days, to Rob Pike for sending me a copy of the Pike/Presotto paper "Face the Nation", which I used to get vismon compatibility, and to everybody else who suggested enhancements, and fixed bugs in the previous version. Rich. Rich Burridge, DOMAIN: richb@sunaus.oz.au PHONE: +61 2 413 2666 UUCP: {uunet,mcvax,ukc}!munnari!sunaus.oz!richb
richb@sunchat.UUCP (Rich Burridge) (12/12/88)
This is the second general release of a face server for monitoring mail and print jobs. It is based on the Bell Labs v8 vismon program, and this version is vismon compatible, but is not derived from AT&T sources. This version contains drivers for SunView and NeWS graphics systems. Permission is given to distribute these sources, as long as the copyright messages are not removed, and no monies are exchanged. See the README and manual page for more details. Save this, and subsequent messages in a new directory, strip off the beginning down to and including the CUT HERE line, unpack with sh, then type "make sunview" for the SunView version or "make news" for the NeWS version. Then install with "make install". Note that you might need super-user permission to do this successfully. Create your face directory, hostname sub-directories username ikons/icons, machine and people tables, and you're set. Note that if you are compiling faces under v3.x of the SunOS, then there is a line in the Makefile starting with OSTYPE, that needs to be uncommented. If anybody can work out what needs to be done to fix the problem of the window/icon always moving back to the initial position (see the BUGS section of the man page), then I'll be very pleased to hear from them. If you already have your face scanned in and iconised and would like to add it to the library I'm building up, please feel free to email it to me. Bugs, flames and suggestions to me please. Acknowledgements. Thanks go to Guy Harris for the basis of the latest manual page, Dave Lemke for many excellent suggestions including the animated postscript faces, to Andrew Nicholson for help with some of the trickier NeWS code, to Dan Heller for writing the 'watch' program which was consulted in the early days, to Rob Pike for sending me a copy of the Pike/Presotto paper "Face the Nation", which I used to get vismon compatibility, and to everybody else who suggested enhancements, and fixed bugs in the previous version. Rich Burridge - December 1988. ------CUT HERE------CUT HERE------ #! /bin/sh # this is a shell archive, meaning: # 1. Remove everything above the #! /bin/sh line # 2. Save the resulting text in a file. # 3. Execute the file with /bin/sh to create the files: # README # faces.1 # faces.ps # machine.tab # people.tab # Makefile # extern.h # faces.h # patchlevel.h # noface.icon # nomail.icon # noprint.icon # nopaper.icon # This archive created: Sun Dec 11 15:16:23 EST 1988 # # export PATH; PATH=/bin:$PATH # if [ -f README ] then echo shar: will not over-write existing file README else echo shar: extracting 'README', 2703 characters cat > README <<'Funky_Stuff' README for faces, the visual mail and print monitor. Version 1.3 December 1988. Permission is given to distribute these sources, as long as the copyright messages are not removed, and no monies are exchanged. This is the second general release of a "faces" server for monitoring mail or print jobs. It contains graphical interfaces for SunView and NeWS. The X11 and blit versions are being worked on. Expect them in the near future. Faces has three different modes of operation: The default will monitor for new mail. Only the last ten messages are displayed. In its iconic form, it is also possible to display the timestamp of each message, and the open window format can give the username. The second choice is to monitor the whole of a mail file. The icon and open window display the appropriate faces, and dynamically change size as a new check is made and if the mail file has altered size. In the iconic form, a timestamp of the last message plus the number of mail messages from this person are optional display parameters. The final option allows this program to monitor a given print queue. This will generate a single face icon showing the job at the top of the print queue, and a text message will display the number of messages to be printed. Opening the window will show all the jobs in the queue with the owners' name and the size of the job in bytes. Faces is based on the AT&T v8 face server called vismon, but is not derived from vismon sources. With this version comes vismon compatibility. Note that this has resulted in a few changes from the way faces v1.1 worked. Please see the manual pages for details. There is a face directory, and under that are directories which are hostnames. Under that are username directories, and this is where the face images are placed. The face images are currently stored in one of three ways: 1. NeWS .ps format, called face.ps. 2. Sun icon format, called sun.icon. 3. Blit ikon format, called 48x48x1. The NeWS .ps allow for animation with the users' face. These files are drawn when the rest of the static faces have been displayed. They will be redrawn every time the mail or print queue is recheck or when the faces window or icon is damaged. See the manual page for details on the conditions imposed on these NeWS .ps files. By default, after every sixty seconds, faces will recheck the mail file or the print queue. If the mail spool file has changed size, it will produce a chain of records for which it has face icons. I welcome bug reports and suggestions for improvements. Rich. Rich Burridge, DOMAIN: richb@sunaus.oz.au PHONE: +61 2 413 2666 UUCP: {uunet,mcvax,ukc}!munnari!sunaus.oz!richb Funky_Stuff len=`wc -c < README` if [ $len != 2703 ] ; then echo error: README was $len bytes long, should have been 2703 fi fi # end of overwriting check if [ -f faces.1 ] then echo shar: will not over-write existing file faces.1 else echo shar: extracting 'faces.1', 6804 characters cat > faces.1 <<'Funky_Stuff' .\" @(#)faces.1 1.2 88/12/11 .TH FACES 1L "2 December 1988" .SH NAME faces \- visual mail and print face server for the Sun workstation .SH SYNOPSIS .B "faces [ .B \-P .I printer ] [ .B \-a ] [ .B \-b .I background ] [ .B \-f .I facedir ] [ .B \-i ] [ .B \-n ] [ .B \-p .I period ] [ .B \-s .I spoolfile ] [ .B \-t ] [ .B \-u ] [ .B \-v ] [ .B \-Wi ] [ .B \-Wp .I x y ] [ .B \-WP .I x y ] .SH DESCRIPTION .B faces is a window based tool for monitoring mail or print queues. It contains graphical interfaces for SunView and NeWS. It has three different modes of operation: .LP The default will monitor for new mail. Only the last ten messages are displayed. In its iconic form, it is also possible to display the timestamp of each message, and the open window format can give the username. .LP The second choice is to monitor the whole of a mail file. The icon and open window display the appropriate faces, and dynamically change size as a new check is made and if the mail file has altered size. In the iconic form, a timestamp of the last message plus the number of mail messages from this person are optional display parameters. .LP The final option allows this program to monitor a given print queue. This will generate a single face icon showing the job at the top of the print queue, and a text message will display the number of messages to be printed. Opening the window will show all the jobs in the queue with the owners' name and the size of the job in bytes. .LP There are special displays for no mail, no faces found, no print jobs, and no paper in the printer. .LP .B faces is based on the AT&T v8 program .B vismon. This program is not derived from .B vismon source. .LP There is a special faces directory containing a fixed three-level hierarchy, which by default is .I /usr/local/faces. The first level is a machine name, the second level a user name, and the third level is the actual face image, which can be stored in three formats. If the file is named .I 48x48x1 then it is a Blit ikon, and if it is called .I sun.icon then the image is stored in Sun icon format, and if the file is named .I face.ps then it contains executable NeWS code. .LP To access the face for a mail name .I machine!uid take the result of the first successful open from the following list of files: .LP /usr/local/faces/machine/uid/face.ps .br /usr/local/faces/machine/uid/sun.icon .br /usr/local/faces/machine/uid/48x48x1 .br /usr/local/faces/misc./uid/face.ps .br /usr/local/faces/misc./uid/sun.icon .br /usr/local/faces/misc./uid/48x48x1 .br /usr/local/faces/machine/unknown/face.ps .br /usr/local/faces/machine/unknown/sun.icon .br /usr/local/faces/machine/unknown/48x48x1 .br /usr/local/faces/misc./unknown/face.ps .br /usr/local/faces/misc./unknown/sun.icon .br /usr/local/faces/misc./unknown/48x48x1 .LP The directory .I misc. hold faces for generic users such as .I root and .I uucp. .LP Faces information is administered by a pair of ASCII files that associate related machines and faces. The machine table .I machine.tab attaches machines to communities; the line .LP stard=sunaus .LP puts the machine .I stard in community .I sunaus. The people table associates a community/alias pair, with a real username. .LP sunaus/rburridge=richb .LP causes the alias .I rburridge to be translated into the real username .I richb for the community .I sunaus .LP Domain name structure would be handled in the same way. For example: .LP sunaus.sun.oz=sunaus .LP would map the full domain name in the community .I sunaus. .LP If the faces directory hierarchy is not found, then a blank face image will be used. .LP Note that you still need to use .I mailtool or some other mail reading utility to actually read the mail that this program monitors; .I faces simply displays who the mail is from. .LP When new mail arrives, .B faces will beep and flash appropriately, depending upon the set parameters in the users .I .mailrc file. .LP If you are using the NeWS version and creating face images of the .I face.ps form, then the following points should be noted: .LP All graphics operations should be performed on the unit square. .br The final image will be translated to a 64 x 64 square image at .br the appropriate position in the faces display. .br .SH OPTIONS .TP .BI \-P " printer" Printer name to monitor. If this and a mail spool file are given with the -s option, .B faces will monitor the print queue. .TP .B \-a Monitor the whole of the specified mail file. The icon and open window display the appropriate faces, and dynamically change size as a new check is made and if the mail file has altered size. .TP .BI \-b " background" Sun icon file containing an alternate background pattern. The default is root grey. .TP .BI \-f " facedir" Use an alternate name for the faces directory. The default is .BR /usr/local/faces . .TP .B \-i Invert the faces images before displaying them. For use by people who started SunView with the .B \-i option. .TP .B \-n Do not display the number of messages from this person. The default is to display, and a count is shown at the bottom right corner of the face for this person. .TP .BI \-p " period" The period in seconds before the mail spool file or the print queue is scanned again for new mail. The default is 60 seconds. .TP .BI \-s " spoolfile" Use an alternate mail spool file to monitor. The default is .BI /var/spool/mail/ username where .I username is the name of the user currently logged in. .TP .B \-t Do not display a timestamp of the last message from this person. The default is to display, and a timestamp is shown at the bottom left corner of the face for this person. .TP .B \-u Do not display the username on the face icon. The default is to display, and the username will appear over the face icon, when the window is opened. .TP .B \-v Print the version number of this release of the .B faces program. .TP .B \-Wi Start the .B faces program up in iconic form. SunView automatically uses this flag, but the NeWS version will also. .TP .BI \-Wp " x y" Start the open window position at .I x y .TP .BI \-WP " x y" Start the icon position at .I x y .SH FILES .TP .B /var/spool/mail directory for system mailboxes .TP .B /.mailrc mail startup file .TP .B /usr/local/faces main directory containing the face icons. .TP .B /usr/local/faces/people.tab people/file equivalences .TP .B /usr/local/faces/machine.tab machine/community equivalences .SH BUGS The machine and people table lookup is hopelessly inefficient and will need to be improved as the faces database gets larger. .br If the window/icon for the NeWS version is moved, then the window or icon is redrawn at the original position. .SH AUTHOR Rich Burridge, DOMAIN: richb@sunaus.oz.au .nf PHONE: +61 2 413 2666 UUCP: {uunet,mcvax,ukc}!munnari!sunaus.oz!richb .fi Funky_Stuff len=`wc -c < faces.1` if [ $len != 6804 ] ; then echo error: faces.1 was $len bytes long, should have been 6804 fi fi # end of overwriting check if [ -f faces.ps ] then echo shar: will not over-write existing file faces.ps else echo shar: extracting 'faces.ps', 3760 characters cat > faces.ps <<'Funky_Stuff' % These are NeWS dependent graphics routines used by faces. % % @(#)faces.ps 1.3 88/12/11 % % Copyright (c) Rich Burridge - Sun Microsystems Australia. % All rights reserved. % % Permission is given to distribute these sources, as long as the % copyright messages are not removed, and no monies are exchanged. % % No responsibility is taken for any errors or inaccuracies inherent % either to the comments or the code of this program, but if reported % to me, then an attempt will be made to fix them. /ClearBox % x y width height canvas => - { setcanvas rectpath 0 setgray fill } def /DoPixrects % width height canvas => - { dup setcanvas 3 1 roll 0 0 4 -2 roll rectpath reshapecanvas } def /ExecFile % psfile width height x y => - { Frame /Iconic? get { Frame /IconCanvas get } { Frame /ClientCanvas get } ifelse setcanvas translate scale (r) file cvx exec } def /InitFont % - => - { /Font /Courier findfont 7 scalefont def } def /MakeFrame % wx wy width height ix iy iconic => - { [ /IsIcon /IconY /IconX /FrameHeight /FrameWidth /FrameY /FrameX ] { exch def } forall /DIED 100 def /PAINTED 101 def /ClientHeight FrameHeight 10 sub def /ClientWidth FrameWidth 10 sub def /IconHeight FrameHeight def /IconWidth FrameWidth def /PR framebuffer newcanvas def PR /Transparent false put PR /Mapped false put PR /Retained true put /MPR framebuffer newcanvas def MPR /Transparent false put MPR /Mapped false put MPR /Retained true put /Frame framebuffer /new DefaultWindow send def { /IconX IconX def /IconY IconY def /BorderTop 5 def /BorderLeft 5 def /BorderBottom 5 def /BorderRight 5 def /ControlSize 0 def /ForkPaintClient? false def /destroy { DIED typedprint DestroyFrame DestroyClient } def /flipiconic { PAINTED typedprint /unmap self send /Iconic? Iconic? not def IconX null eq { FrameX FrameY FrameHeight add IconHeight sub /move self send } if ZoomProc /map self send } def /PaintClient { gsave 1 fillcanvas ClientWidth ClientHeight scale 0 setgray Invert PR imagemaskcanvas grestore } def /PaintIcon { gsave 1 fillcanvas IconWidth IconHeight scale 0 setgray Invert MPR imagemaskcanvas grestore } def } Frame send IsIcon 1 eq { /flipiconic Frame send } if } def /MakeText % string x y canvas => - { setcanvas Font setfont 1 setgray moveto show } def /MoveImage % srccanvas width height x y destcanvas => - { setcanvas gsave translate scale imagecanvas grestore } def /SetBackground % - => - { PR setcanvas 0.88 fillcanvas 5 setrasteropcode clippath fill MPR setcanvas 0.88 fillcanvas 5 setrasteropcode clippath fill } def /ShiftImage % dx dy width height canvas => - { setcanvas 0 0 4 -2 roll rectpath copyarea } def /ShowDisplay % framewidth frameheight iconwidth iconheight => - { [ /IconHeight /IconWidth /ClientHeight /ClientWidth ] { exch def } forall /FrameHeight ClientHeight 10 add def /FrameWidth ClientWidth 10 add def FrameX FrameY FrameWidth FrameHeight /reshape Frame send Frame /IconWidth IconWidth put Frame /IconHeight IconHeight put /ShapeIconCanvas Frame send /painticon Frame send Frame /ClientHeight ClientHeight put Frame /ClientWidth ClientWidth put /ShapeClientCanvas Frame send /paintclient Frame send /map Frame send } def Funky_Stuff len=`wc -c < faces.ps` if [ $len != 3760 ] ; then echo error: faces.ps was $len bytes long, should have been 3760 fi fi # end of overwriting check if [ -f machine.tab ] then echo shar: will not over-write existing file machine.tab else echo shar: extracting 'machine.tab', 383 characters cat > machine.tab <<'Funky_Stuff' stard=sunaus extra=sunaus sunchat=sunaus garfield=sunaus tom=sunaus felix=sunaus sunk=sunaus sunsa=sunaus misaus=sunaus maverick=sunaus misaus1=sunaus nimbin=sunaus redgum=sunaus palette=sunaus sunwa=sunaus sunact=sunaus basset=basser castor.cs.su.oz=basser cluster.cs.su.oz=basser orwell=basser sarad=basser sasha=basser sunrise=basser gris=softway softway.sw.oz=softway arakis=sun Funky_Stuff len=`wc -c < machine.tab` if [ $len != 383 ] ; then echo error: machine.tab was $len bytes long, should have been 383 fi fi # end of overwriting check if [ -f people.tab ] then echo shar: will not over-write existing file people.tab else echo shar: extracting 'people.tab', 1663 characters cat > people.tab <<'Funky_Stuff' sunaus/rallen=bob sunaus/ballen=bob sunaus/bbaker=bruceb sunaus/mbosch=mike sunaus/eddy=eddie sunaus/eevans=eddie sunaus/ggrell=grell sunaus/gene=grell sunaus/jingall=johni sunaus/ijeffery=ian sunaus/glynne=gjl sunaus/tmcentee=tim sunaus/jnoonan=johnn sunaus/apappas=arie sunaus/jennie=jenny sunaus/jrendell=jenny sunaus/gsearle=gjs sunaus/gsitters=greg sunaus/bscott=brad sunaus/rstewart=ruth sunaus/jteasdale=jim sunaus/loraine=lori sunaus/lorraine=lori sunaus/lunicomb=lori sunaus/pvrbancich=paula sunaus/swoodhead=simon sunaus/jy=yo sunaus/jyoung=yo sunaus/rboden=richard sunaus/rbodin=richard sunaus/rburridge=richb sunaus/rich=richb sunaus/mcunningham=mary sunaus/sduchesne=sue sunaus/mfredericks=max sunaus/mfredricks=max sunaus/bgeneralis=bill sunaus/shulbert=susanh sunaus/susan=susanh sunaus/gmason=gregm sunaus/vmickan=val sunaus/trogge=tony sunaus/andy=aspiers sunaus/bwiggins=bruce sunaus/ryeap=ron sunaus/cbreen=colinb sunaus/rdesalis=roger sunaus/mfort=markf sunaus/mark=markg sunaus/mgurvis=markg sunaus/mnegri=manuel sunaus/npettitt=noel sunaus/jraine=john sunaus/paul=paulr sunaus/prosham=paulr sunaus/gsweigert=geo sunaus/rbowman=robb sunaus/bbowman=robb sunaus/krees=kim sunaus/mikes=mslee sunaus/gshepherd=george sunaus/aweller=andrew sunaus/kbeavan=kevin sunaus/rbradford=rhonda sunaus/ckeith=colin sunaus/mmccann=mmc sunaus/ksterry=kaylene sunaus/rwilliams=rex sunaus/gdonin=gary sunaus/dshea=dennis sunaus/doshea=dennis sunaus/hprotoolis=harry sunaus/rschrader=robert sunaus/bschrader=robert sunaus/bobs=robert sunaus/jvermeulen=jeff sunaus/MAILER-DAEMON=mailer-daemon sunaus/Mailer-Daemon=mailer-daemon sunaus/mailer-daemon=mailer-daemon Funky_Stuff len=`wc -c < people.tab` if [ $len != 1663 ] ; then echo error: people.tab was $len bytes long, should have been 1663 fi fi # end of overwriting check if [ -f Makefile ] then echo shar: will not over-write existing file Makefile else echo shar: extracting 'Makefile', 4323 characters cat > Makefile <<'Funky_Stuff' # # Makefile for faces, an icon face server, plus associated software. # # @(#)Makefile 1.1 88/12/04 # # Copyright (c) Rich Burridge. # Sun Microsystems, Australia - All rights reserved. # # Permission is given to distribute these sources, as long as the # copyright messages are not removed, and no monies are exchanged. # # Version 1.3 - December 1988. # # No responsibility is taken for any errors inherent either # to the comments or the code of this program, but if reported # to me then an attempt will be made to fix them. # #------------------------------------------------------------------ # There are various command line options with the faces program. # They can also be defined at compile time. If they are not present # here, then sensible default values are used. The values given # below are the defaults, except for the spoolfile name where the # default is obtained from the users' passwd entry. # # # Monitor type (0 = monitor all, 1 = monitor new, 2 = monitor printer). # FMONTYPE = -DFMONTYPE=1 # # Alternate background pattern instead of root gray. # BACKGROUND = -DBACKGROUND=\"\" # # Different directory for face icons, # FACEDIR = /usr/local/faces FACEPARAM = -DFACEDIR=\"$(FACEDIR)\" # # If nonzero, then display face images in reverse video. # INVERT = -DINVERT=0 # # Period in seconds for checking for new mail or print jobs, # PERIOD = -DPERIOD=60 # # If nonzero, do not show number of messages on the face icon, # DONTSHOWNO = -DDONTSHOWNO=0 # # Alternative spoolfile to monitor, # eg: SPOOLFILE = -DSPOOLFILE=\"/usr/richb/Mail/pending\" # #SPOOLFILE = # # If nonzero, do not show timestamp on the face icon. # DONTSHOWTIME = -DDONTSHOWTIME=0 # # If nonzero, do not show username on the face icon. # DONTSHOWUSER = -DDONTSHOWUSER=0 #------------------------------------------------------------------- VARIABLES = $(FMONTYPE) $(BACKGROUND) $(FACEPARAM) \ $(INVERT) $(PERIOD) $(DONTSHOWNO) $(SPOOLFILE) \ $(DONTSHOWTIME) $(DONTSHOWUSER) BINARIES = ps_faces sv_faces BINDIR = /usr/local/bin FACES = facedir LIBDIR = /usr/local/lib NEWSFILE = -DNEWSGIVEN -DNEWSFILE=\"$(LIBDIR)/faces.ps\" MANDIR = /usr/man/man$(MANSECT) MANSECT = l # # If you are compiling faces under v3.x of SunOS, then uncomment this line. #OSTYPE = -DSUNOS3.x CFLAGS = -g $(NEWSFILE) $(OSTYPE) $(VARIABLES) HDRS = extern.h faces.h patchlevel.h IMAGES = noface.icon nomail.icon noprint.icon nopaper.icon PSLIBS = $$NEWSHOME/lib/libcps.a PSOBJS = get.o main.o mon.o news.o rec.o PSSRCS = get.c main.c mon.c news.c rec.c SVLIBS = -lsuntool -lsunwindow -lpixrect SVOBJS = get.o main.o mon.o rec.o sunview.o SVSRCS = get.c main.c mon.c rec.c sunview.c OTHERS = README faces.1 faces.ps machine.tab people.tab Makefile SRCS = get.c main.c mon.c news.c rec.c sunview.c all: sunview news news: ps_faces cp ps_faces faces sunview: sv_faces cp sv_faces faces ps_faces: $(PSOBJS) cc -o ps_faces $(CFLAGS) $(PSOBJS) $(PSLIBS) sv_faces: $(SVOBJS) cc -o sv_faces $(CFLAGS) $(SVOBJS) $(SVLIBS) install: $(BINARIES) install -s -m 751 faces $(BINDIR) install -c -m 644 faces.ps $(LIBDIR) install -c -m 644 machine.tab $(FACEDIR) install -c -m 644 people.tab $(FACEDIR) install -c -m 644 faces.1 $(MANDIR)/faces.$(MANSECT) backup:; cp -r $(SRCS) $(HDRS) $(IMAGES) $(OTHERS) $(FACES) backdir clean:; rm -f *.o $(BINARIES) faces core lint:; lint -DNEWSGIVEN -DNEWSFILE=\"$(LIBDIR)/faces.ps\" $(PSSRCS) lint $(SVSRCS) $(SVLIBS) shar:; shar.script $(OTHERS) $(HDRS) $(IMAGES) > archive.1 shar.script $(SRCS) > archive.2 shar.script $(FACES) > archive.3 create: SCCS -sccs create $(SRCS) $(HDRS) $(IMAGES) $(OTHERS) SCCS: mkdir SCCS chmod 755 SCCS get.o: get.c faces.h extern.h patchlevel.h main.o: main.c faces.h Makefile mon.o: mon.c faces.h extern.h news.o: news.c faces.h extern.h rec.o: rec.c faces.h extern.h sunview.o: sunview.c extern.h $(IMAGES) Funky_Stuff len=`wc -c < Makefile` if [ $len != 4323 ] ; then echo error: Makefile was $len bytes long, should have been 4323 fi fi # end of overwriting check if [ -f extern.h ] then echo shar: will not over-write existing file extern.h else echo shar: extracting 'extern.h', 3566 characters cat > extern.h <<'Funky_Stuff' /* @(#)extern.h 1.2 88/12/11 * * Contains the external variable definitions used by faces. * * Copyright (c) Rich Burridge. * Sun Microsystems, Australia - All rights reserved. * * Permission is given to distribute these sources, as long as the * copyright messages are not removed, and no monies are exchanged. * * No responsibility is taken for any errors or inaccuracies inherent * either to the comments or the code of this program, but if * reported to me then an attempt will be made to fix them. */ extern char *get_field(), *getname() ; extern int do_check() ; struct recinfo *rec_exists() ; extern struct comminfo *communities ; /* Community alias/username chain. */ extern struct comminfo *clast ; /* End of chain of community records. */ extern struct machinfo *machines ; /* Known machine/communities. */ extern struct machinfo *mlast ; /* End of chain of machine records. */ extern struct psinfo *psrecs ; /* List of news.ps animation files. */ extern struct psinfo *plast ; /* End of chain of NeWS animation files. */ extern struct recinfo *recs ; /* Mail messages being monitored. */ extern struct recinfo *last ; /* End of the chain of mail records. */ extern struct stat buf ; /* Buffer for stat call for file existence. */ extern long lastsize ; /* Last known size of the mail folder. */ extern enum gr_type gtype ; /* Indicates what graphics system is being used. */ extern enum mon_type mtype ; /* What type of monitoring we should do. */ extern char bgicon[] ; /* Alternate background pattern. */ extern char community[] ; /* Community name ("real" host name). */ extern char facedir[] ; /* Directory containing face images. */ extern char iconname[] ; /* Name of the icon file for this person. */ extern char machfile[] ; /* Name of the machine/community file. */ extern char nextline[] ; /* Next line from users mail spool file. */ extern char peopfile[] ; /* Name of the people/username file. */ extern char printer[] ; /* Printer name to monitor. */ extern char progname[] ; /* Name of this program. */ extern char spoolfile[] ; /* Full pathname of users current mail. */ extern int beeps ; /* Number of beeps for arrival of new mail. */ extern int column ; /* Column number for next icon. */ extern int dontshowno ; /* Set if no. of messages shouldn't be shown. */ extern int dontshowtime ; /* Set if timestamp shouldn't be shown. */ extern int dontshowuser ; /* Set if username shouldn't be shown. */ extern int facetype ; /* Type of face file found. */ extern int firsttime ; /* Zeroised after first mail/printer check. */ extern int flashes ; /* Number of flashes for arrival of new mail. */ extern int height ; /* Height in pixels of faces display. */ extern int iconic ; /* Start as an icon if set. */ extern int invert ; /* Set if to use reverse video. */ extern int ix ; /* Initial X position of the icon. */ extern int iy ; /* Initial Y position of the icon. */ extern int newmail ; /* Set if there is new mail this time around. */ extern int noicons ; /* Number of faces this time around. */ extern int period ; /* Period in seconds for checking new mail. */ extern int row ; /* Row number for next icon. */ extern int width ; /* Width in pixels of faces display. */ extern int wx ; /* Initial X position of the window. */ extern int wy ; /* Initial Y position of the window. */ Funky_Stuff len=`wc -c < extern.h` if [ $len != 3566 ] ; then echo error: extern.h was $len bytes long, should have been 3566 fi fi # end of overwriting check if [ -f faces.h ] then echo shar: will not over-write existing file faces.h else echo shar: extracting 'faces.h', 4482 characters cat > faces.h <<'Funky_Stuff' /* @(#)faces.h 1.3 88/12/09 * * Contains all the global definitions used by faces. * * Copyright (c) Rich Burridge - Sun Microsystems Australia. * All rights reserved. * * Permission is given to distribute these sources, as long as the * copyright messages are not removed, and no monies are exchanged. * * No responsibility is taken for any errors or inaccuracies inherent * either to the comments or the code of this program, but if * reported to me then an attempt will be made to fix them. */ #include <stdio.h> #include <sys/fcntl.h> #include <sys/types.h> #include <sys/file.h> #include <sys/stat.h> #include <sys/time.h> #include <pwd.h> #include <strings.h> #define FCLOSE (void) fclose /* To make lint happy. */ #define FFLUSH (void) fflush #define FGETS (void) fgets #define FPRINTF (void) fprintf #define FSEEK (void) fseek #define GETHOSTNAME (void) gethostname #define GET_SUN_ICON (void) get_sun_icon #define IOCTL (void) ioctl #define PUTC (void) putc #define SELECT (void) select #define SSCANF (void) sscanf #define SPRINTF (void) sprintf #define STRCAT (void) strcat #define STRCPY (void) strcpy #define STRNCAT (void) strncat #define STRNCPY (void) strncpy #define UNLINK (void) unlink /* The types of display. */ enum disp_type { BOTH, ICON, WINDOW } ; /* Field extraction options. */ enum field_type { HOSTNAME, TIMESTAMP, USERNAME } ; /* Different types of possible face images. */ enum icon_type { NOMAIL, NOPAPER, NOPRINT, ORDINARY } ; /* Text justification within face display. */ enum just_type { LEFT, RIGHT } ; /* Different types of file monitoring performed by this program. */ enum mon_type { MONALL, MONNEW, MONPRINTER } ; /* Different graphics systems appropriate one set in gtype. */ enum gr_type { SUNVIEW, NEWS } ; /* Determine order for face type lookup. */ #define NEWSTYPE 0 #define SUNTYPE 1 #define BLITTYPE 2 /* NeWS return event values. */ #define DIED 100 /* Faces has been zapped. */ #define PAINTED 101 /* Canvas/Icon needs repainting. */ #define BLITHEIGHT 48 /* Maximum number of lines in a blit icon. */ #define EQUAL(str,val) !strncmp(str,val,strlen(val)) #define ICONHEIGHT 64 /* Height of individual face icons. */ #define ICONWIDTH 64 /* Width of individual face icons. */ #define INC argc-- ; argv++ ; #define MAXLINE 200 /* Maximum length for character strings. */ #define MAXTYPES 3 /* Maximum number of different face types. */ #define NO_PER_ROW 10 /* Number of faces per row. */ char *getenv(), *malloc(), *sprintf() ; struct machinfo /* Machine/community record. */ { char *machine ; /* Machine name. */ char *community ; /* Community it belongs to. */ struct machinfo *next ; /* Pointer to next record. */ } ; struct comminfo /* Community alias/username records. */ { char *community ; /* Community name. */ struct peopinfo *people ; /* Chain of alias/usernames. */ struct comminfo *next ; /* Pointer to next record. */ } ; struct peopinfo /* Username/alias record. */ { char *alias ; /* Alias for this user. */ char *username ; /* Real username. */ struct peopinfo *next ; /* Pointer to next record. */ } ; struct psinfo /* News.ps animation records. */ { char *name ; /* Full pathname of news.ps file. */ int row ; /* Row number where animation will occur. */ int column ; /* Column number where animation will occur. */ struct psinfo *next ; /* Pointer to next record. */ } ; struct recinfo /* Mail/print information record. */ { char *community ; /* Community name for this person. */ char *iconname ; /* Name of iconfile for this person. */ char *username ; /* User name for this person. */ int total ; /* Total number of messages/print jobs. */ int size ; /* Total size in bytes of print job. */ char ts[6] ; /* Latest timestamp for this user. */ struct recinfo *next ; /* Pointer to next record. */ } ; Funky_Stuff len=`wc -c < faces.h` if [ $len != 4482 ] ; then echo error: faces.h was $len bytes long, should have been 4482 fi fi # end of overwriting check if [ -f patchlevel.h ] then echo shar: will not over-write existing file patchlevel.h else echo shar: extracting 'patchlevel.h', 560 characters cat > patchlevel.h <<'Funky_Stuff' /* @(#)patchlevel.h 1.1 88/12/04 * * This is the current patch level for this version of faces. * * Copyright (c) Rich Burridge. * Sun Microsystems, Australia - All rights reserved. * * Permission is given to distribute these sources, as long as the * copyright messages are not removed, and no monies are exchanged. * * No responsibility is taken for any errors or inaccuracies inherent * either to the comments or the code of this program, but if * reported to me then an attempt will be made to fix them. */ #define PATCHLEVEL 0 Funky_Stuff len=`wc -c < patchlevel.h` if [ $len != 560 ] ; then echo error: patchlevel.h was $len bytes long, should have been 560 fi fi # end of overwriting check if [ -f noface.icon ] then echo shar: will not over-write existing file noface.icon else echo shar: extracting 'noface.icon', 1933 characters cat > noface.icon <<'Funky_Stuff' /* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16 */ 0x0000,0x1FA0,0x0000,0x0000,0x0000,0x7FFC,0x0000,0x0000, 0x0000,0xFEFF,0x0000,0x0000,0x0001,0xBFBF,0xC000,0x0000, 0x0001,0xEFFA,0xE000,0x0000,0x0002,0x00FF,0xF800,0x0000, 0x0002,0x007F,0xFF80,0x0000,0x0000,0x001F,0x7E00,0x0000, 0x000C,0x001F,0xFFC0,0x0000,0x0000,0x0015,0xFFC0,0x0000, 0x0030,0x001F,0xFFF0,0x0000,0x0070,0x000F,0xFEB0,0x0000, 0x00C0,0x0007,0xFFF8,0x0000,0x00E0,0x0007,0xFFE8,0x0000, 0x01E0,0x0003,0xFFF8,0x0000,0x03C0,0x0001,0xFFF8,0x0000, 0x03E0,0x0001,0xFFF8,0x0000,0x07C0,0x0000,0xFFF0,0x0000, 0x0FF8,0x0000,0xBFF8,0x0000,0x0FE0,0x0000,0xFFF8,0x0000, 0x1FF0,0x0000,0x7FF8,0x0000,0x1FF0,0x0000,0xFFF8,0x0000, 0x1FF0,0x0000,0xFFF8,0x0000,0x1FD0,0x0000,0xFFF0,0x0000, 0x0FE0,0x0001,0xFFF0,0x0000,0x1FA0,0x0000,0x3FF0,0x0000, 0x0320,0x0000,0x1FE0,0x0000,0x0B80,0x0000,0x1F80,0x0000, 0x0180,0x0000,0x1780,0x0000,0x0080,0x0000,0x1F00,0x0000, 0x0000,0x0000,0x1F00,0x0000,0x0180,0x0000,0x0E00,0x0000, 0x0380,0x0000,0x1E00,0x0000,0x0180,0x0000,0x0FC0,0x0000, 0x0080,0x0000,0x1F80,0x0000,0x01C0,0x0000,0x0F80,0x0000, 0x00C0,0x0000,0x7F80,0x0000,0x0040,0x0000,0x7F00,0x0000, 0x0060,0x0000,0xCE00,0x0000,0x0004,0x0001,0x6000,0x0000, 0x0000,0x0003,0xF800,0x0000,0x0002,0x0001,0xA000,0x0000, 0x0000,0x0007,0xC000,0x0000,0x0002,0x000F,0x4000,0x0000, 0x0000,0x804B,0xC000,0x0000,0x0002,0xBBFE,0x8000,0x0000, 0x0000,0x8FFB,0xC000,0x0000,0x0001,0x7ABF,0xC000,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 Funky_Stuff len=`wc -c < noface.icon` if [ $len != 1933 ] ; then echo error: noface.icon was $len bytes long, should have been 1933 fi fi # end of overwriting check if [ -f nomail.icon ] then echo shar: will not over-write existing file nomail.icon else echo shar: extracting 'nomail.icon', 1933 characters cat > nomail.icon <<'Funky_Stuff' /* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16 */ 0x0001,0xFFFF,0xFFC0,0x0000,0x0002,0xB000,0x0030,0x0000, 0x0003,0x5800,0x0008,0x0000,0x0006,0xADFF,0xFFC8,0x0000, 0x0005,0x54FF,0xFFE4,0x0000,0x000A,0xAAFF,0xFFF2,0x0000, 0x000D,0x567F,0xFFF2,0x0000,0x000A,0xAA7F,0xFFFA,0x0000, 0x000D,0x557F,0xFFF9,0x0000,0x000A,0xAB7F,0xFFF9,0x0000, 0x000D,0x557F,0xFFF9,0x0000,0x000A,0xAB3F,0xFFF1,0x0000, 0x000D,0x5500,0x0001,0x0000,0x000A,0xAB00,0x0001,0x0000, 0x000D,0x5500,0xFE01,0x0000,0x000A,0xAB03,0xFF81,0x0000, 0x000D,0x5507,0xFFC1,0x0000,0x000A,0xAB0F,0xFFE1,0x0000, 0x000D,0x551F,0xFFF1,0x0000,0x000A,0xAB1F,0xFFF1,0x0000, 0x000D,0x553F,0xFFF9,0x0000,0x000A,0xAB3F,0xFFF9,0x0000, 0x000D,0x553F,0xFFF9,0x0000,0x000A,0xAB3F,0xFFF9,0x0000, 0x0FFD,0x553F,0xFFF9,0x0000,0x3FFA,0xAB3F,0xFFF9,0x0000, 0x7FFD,0x553F,0xFFF9,0x0000,0xFFFA,0xAB3F,0xFFF9,0x0000, 0xFFFD,0x551F,0xFFF1,0x0000,0xFFFA,0xAB1F,0xFFF1,0x0000, 0xFFFD,0x550F,0xFFE1,0x0000,0xFFFA,0xAB07,0xFFC1,0x0000, 0xFFFD,0xD503,0xFF81,0x0000,0xFFFB,0xEB00,0xFE01,0x0000, 0x3FFD,0xF500,0x0001,0x0000,0x3FFB,0xFB00,0x0001,0x0000, 0x0FFD,0xFD0F,0xFFE1,0x0000,0x0FFB,0xFB1F,0xFFD1,0x0000, 0x03FD,0xFD3F,0xF7C9,0x0000,0x00FF,0xFF7F,0xF8C5,0x0000, 0x003F,0xFD7F,0xFC45,0x0000,0x001F,0xFF7F,0xFE05,0x0000, 0x0007,0xF560,0x3F85,0x0000,0x0003,0xF760,0x0FE5,0x0000, 0x0000,0xFD40,0x01F5,0x0000,0x0000,0x3F40,0x00FD,0x0000, 0x0000,0x0760,0x003D,0x0000,0x0000,0x03E0,0x000F,0x0000, 0x0000,0x0000,0x0000,0x0000,0x00FF,0xFFFF,0xFFFF,0xFF80, 0x00FF,0xFFFF,0xFFFF,0xFF80,0x00BB,0xFFFF,0xFFFD,0xF180, 0x009B,0xFFFF,0xFFFF,0xFD80,0x009B,0x8FFC,0xBC71,0xFD80, 0x00AB,0x77FD,0x5BBD,0xFD80,0x00AB,0x77FD,0x5FBD,0xFD80, 0x00B3,0x77FD,0x5C3D,0xFD80,0x00B3,0x77FD,0x5BBD,0xFD80, 0x00BB,0x77FD,0x5BBD,0xFD80,0x00BB,0x8FFD,0x5C3D,0xFD80, 0x00FF,0xFFFF,0xFFFF,0xFF80,0x00FF,0xFFFF,0xFFFF,0xFF80, 0x00FF,0xFFFF,0xFFFF,0xFF80,0x0000,0x0000,0x0000,0x0000 Funky_Stuff len=`wc -c < nomail.icon` if [ $len != 1933 ] ; then echo error: nomail.icon was $len bytes long, should have been 1933 fi fi # end of overwriting check if [ -f noprint.icon ] then echo shar: will not over-write existing file noprint.icon else echo shar: extracting 'noprint.icon', 1933 characters cat > noprint.icon <<'Funky_Stuff' /* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16 */ 0x0000,0x0000,0x0000,0x0000,0x00FF,0xFFFF,0xFFFF,0xFFE0, 0x0080,0x0000,0x0000,0x0010,0x0080,0x0000,0x0000,0x0010, 0x0080,0x0000,0x0000,0x0010,0x0080,0x0000,0x0000,0x0010, 0x0080,0x0000,0x0000,0x0010,0x0080,0x0000,0x0000,0x0010, 0x0080,0x0000,0x0000,0x0010,0x0080,0x0000,0x0000,0x0010, 0x00FF,0xFFFF,0xFFFF,0xFFF0,0x0090,0x0400,0x0000,0x8010, 0x0091,0xE400,0x0000,0x8010,0x0092,0x1400,0x1FF8,0x8010, 0x0092,0x1400,0x1008,0x8010,0x0092,0x1400,0x1008,0x8010, 0x0093,0xF400,0x1FF8,0x8010,0x0092,0xD400,0x1008,0x8010, 0x0092,0x1400,0x1FF8,0x8010,0x0091,0xE400,0x0000,0x8020, 0x0090,0x0400,0x0000,0x8040,0x00FF,0xFFFF,0xFFFF,0xC080, 0x3FFF,0xFFFF,0xFFFF,0xE100,0x3880,0x0000,0x0000,0x7E00, 0x3880,0x0000,0x0000,0x1FFC,0x3880,0x0000,0x0000,0x1FFC, 0x3F80,0x0FEF,0xEFCF,0xE100,0x0080,0x0000,0x0000,0x01FC, 0x0080,0x0FEF,0xEFCF,0xE100,0x0F80,0x0000,0x0000,0x0100, 0x0880,0x0FEF,0xEFCF,0xE100,0x0F80,0x0000,0x0000,0x0100, 0x0080,0x0000,0x0000,0x0100,0x00FF,0xFFFF,0xFFFF,0xFF00, 0x0040,0x0000,0x0000,0x0200,0x0040,0x0000,0x0000,0x0200, 0x003F,0xFFFF,0xFFFF,0xFC00,0x001C,0x0000,0x0001,0xC000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000,0x00FF,0xFFFF,0xFFFF,0xFF80, 0x00FF,0xFFFF,0xFFFF,0xFF80,0x00FF,0xFFFF,0xBFF7,0xFF80, 0x00FF,0xFFFF,0xFFF7,0xFF80,0x00A7,0x8FFE,0x3C74,0xF180, 0x009B,0x77FF,0xBBB3,0x6E80,0x00BB,0x77FF,0xBBB7,0x6F80, 0x00BB,0x77FF,0xBBB7,0x7180,0x00BB,0x77FF,0xBBB7,0x7E80, 0x00BB,0x77FF,0xBBB3,0x6E80,0x00BB,0x8FFF,0xBC74,0xF180, 0x00FF,0xFFFF,0xBFFF,0xFF80,0x00FF,0xFFFD,0xBFFF,0xFF80, 0x00FF,0xFFFE,0x7FFF,0xFF80,0x00FF,0xFFFF,0xFFFF,0xFF80 Funky_Stuff len=`wc -c < noprint.icon` if [ $len != 1933 ] ; then echo error: noprint.icon was $len bytes long, should have been 1933 fi fi # end of overwriting check if [ -f nopaper.icon ] then echo shar: will not over-write existing file nopaper.icon else echo shar: extracting 'nopaper.icon', 1973 characters cat > nopaper.icon <<'Funky_Stuff' /* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16 */ 0xC000,0x0000,0x0000,0x0003,0xE000,0x0000,0x0000,0x0007, 0x7000,0x0000,0x0000,0x000E,0x3800,0x0000,0x0000,0x001C, 0x1C00,0x0000,0x0000,0x0038,0x0E00,0x0000,0x0000,0x0070, 0x0700,0x0000,0x0000,0x00E0,0x0380,0x0000,0x0000,0x01C0, 0x01C0,0x0000,0x0000,0x0380,0x00E0,0x0000,0x0000,0x0700, 0x0070,0x0000,0x0000,0x0E00,0x0038,0x0000,0x0000,0x1C00, 0x001C,0x0000,0x0000,0x3800,0x000E,0x0000,0x0000,0x7000, 0x0007,0x0000,0x0000,0xE000,0x0003,0x8000,0x0001,0xC000, 0x0001,0xC000,0x0003,0x8000,0x0000,0xE000,0x0007,0x0000, 0x0000,0x7000,0x000E,0x0000,0x0000,0x7FFF,0xFFFF,0xC000, 0x0000,0xBC00,0x0038,0x2000,0x0001,0x1E00,0x0070,0x1000, 0x0002,0x0F00,0x00E0,0x0800,0x0004,0x0780,0x01C0,0x0400, 0x0004,0x05C0,0x0380,0x0400,0x0008,0x42E0,0x0700,0x0200, 0x0008,0xE270,0x0E00,0x0200,0x0009,0xF238,0x1C00,0x0200, 0x0009,0xF21C,0x3800,0x0200,0x0009,0xF20E,0x7000,0x0200, 0x0009,0xF207,0xE000,0x0200,0x0009,0xF203,0xC000,0x0200, 0x0008,0xE203,0xC000,0x0200,0x0008,0x4207,0xE000,0x0200, 0x0004,0x040E,0x7000,0x0400,0x0004,0x041C,0x3800,0x0400, 0x0006,0x0838,0x1C00,0x0800,0x0007,0x1070,0x0E00,0x1000, 0x0002,0xA0E0,0x0700,0x2000,0x0002,0x7FFF,0xFFFF,0xC000, 0x0002,0x0380,0x01C2,0x0000,0x0002,0x0700,0x00E1,0x0000, 0x0003,0x0E00,0x0071,0x0000,0x0001,0x1C00,0x0039,0x0000, 0x0001,0x3800,0x001C,0x8000,0x0000,0xF000,0x000E,0x8000, 0x0000,0xE000,0x0007,0x8000,0x0001,0xC000,0x0003,0x8000, 0x0003,0x8000,0x0001,0xC000,0x0007,0x8000,0x0000,0xE000, 0x000E,0x4030,0x0000,0x7000,0x001C,0x41FC,0x0000,0x7800, 0x0038,0x4F02,0x003C,0x5C00,0x0070,0x5401,0xC1C2,0x2E00, 0x00E0,0x6000,0x3F01,0xC700,0x01C0,0x0000,0x0000,0x0380, 0x0380,0x0000,0x0000,0x01C0,0x0700,0x0000,0x0000,0x00E0, 0x0E00,0x0000,0x0000,0x0070,0x1C00,0x0000,0x0000,0x0038, 0x3800,0x0000,0x0000,0x001C,0x7000,0x0000,0x0000,0x000E, 0xE000,0x0000,0x0000,0x0007,0xC000,0x0000,0x0000,0x0003 Funky_Stuff len=`wc -c < nopaper.icon` if [ $len != 1973 ] ; then echo error: nopaper.icon was $len bytes long, should have been 1973 fi fi # end of overwriting check
richb@sunchat.UUCP (Rich Burridge) (12/12/88)
------CUT HERE------CUT HERE------ #! /bin/sh # this is a shell archive, meaning: # 1. Remove everything above the #! /bin/sh line # 2. Save the resulting text in a file. # 3. Execute the file with /bin/sh to create the files: # get.c # main.c # mon.c # news.c # rec.c # sunview.c # This archive created: Sun Dec 11 15:16:29 EST 1988 # # export PATH; PATH=/bin:$PATH # if [ -f get.c ] then echo shar: will not over-write existing file get.c else echo shar: extracting 'get.c', 10551 characters cat > get.c <<'Funky_Stuff' /*LINTLIBRARY*/ #ifndef lint static char sccsid[] = "@(#)get.c 1.2 88/12/09" ; #endif /* Extraction routines used by faces. * * Copyright (c) Rich Burridge - Sun Microsystems Australia. * All rights reserved. * * Permission is given to distribute these sources, as long as the * copyright messages are not removed, and no monies are exchanged. * * No responsibility is taken for any errors on inaccuracies inherent * either to the comments or the code of this program, but if reported * to me, then an attempt will be made to fix them. */ #include "faces.h" #include "extern.h" #include "patchlevel.h" get_blit_ikon(name, buf) /* Load blit ikon file. */ char *name ; unsigned short buf[256] ; { FILE *fin ; char *ptr ; int i, j, temp ; if ((fin = fopen(name, "r")) == NULL) return(-1) ; for (i = 0; i < BLITHEIGHT; i++) { FGETS(nextline, MAXLINE, fin) ; ptr = nextline ; for (j = 0; j < 3; j++) { while (*ptr == ' ' || *ptr == '\t') ptr++ ; SSCANF(ptr,"0x%X",&temp) ; buf[i*4+j] = (short) temp ; ptr = index(ptr,',') ; ptr++ ; } buf[i*4+3] = 0 ; } for (i = BLITHEIGHT; i < ICONHEIGHT; i++) for (j = 0; j < 4; j++) buf[i*4+j] = 0 ; FCLOSE(fin) ; return(0) ; } char * get_field(ftype,line) /* Get field option from given line. */ enum field_type ftype ; char *line ; { char *ptr1, *ptr2 ; char str1[5],str2[MAXLINE],str3[4],str4[4],str5[3],str6[9],str7[5] ; SSCANF(line,"%s %s %s %s %s %s %s", str1,str2,str3,str4,str5,str6,str7) ; switch ((int) ftype) { case HOSTNAME : if ((ptr2 = rindex(str2,'!')) != NULL) { ptr1 = str2 ; *ptr2 = '\0' ; while (ptr2 != ptr1) { *ptr2-- ; if (*ptr2 == '!') return(ptr2+1) ; } return(ptr2) ; } else if ((ptr2 = index(str2,'@')) != NULL) return(ptr2+1) ; else return(NULL) ; case TIMESTAMP : str6[5] = '\0' ; return(str6) ; case USERNAME : if ((ptr2 = rindex(str2,'!')) != NULL) return(ptr2+1) ; else if ((ptr2 = index(str2,'@')) != NULL) { ptr1 = str2 ; *ptr2 = '\0' ; while (ptr2 != ptr1) { *ptr2-- ; if (*ptr2 == '@') return(ptr2+1) ; } return(ptr2) ; } else return(str2) ; } /*NOTREACHED*/ } get_icon(dirname, buf) /* Read in ikon or .icon file. */ char *dirname ; unsigned short buf[256] ; { /* Attempts to open the correct face file. * If the face file is face.ps, then another record is added to the list * of NeWS .ps files to animate at a later time. * If this is 48x48x1 or sun.icon, and the open is successful, then the * face image is read into buf. * -1 is returned on failure. */ char *ptr ; ptr = rindex(dirname,'/') ; /* Find last slash in iconname. */ if (EQUAL(ptr+1,"face.ps")) if (get_news_icon(dirname) == 0) return NEWSTYPE ; if (EQUAL(ptr+1,"sun.icon")) if (get_sun_icon(dirname, buf) == 0) return SUNTYPE ; if (EQUAL(ptr+1,"48x48x1")) if (get_blit_ikon(dirname, buf) == 0) return BLITTYPE ; return -1 ; } get_news_icon(name) /* Create record for news.ps file. */ char *name ; { FILE *fin ; if (gtype != NEWS) return -1 ; if ((fin = fopen(name, "r")) == NULL) return -1 ; FCLOSE(fin) ; add_ps_rec(row, column, name) ; return 0 ; } get_options(argc,argv) /* Read and process command line options. */ int argc ; char *argv[] ; { char next[MAXLINE] ; /* The next command line parameter. */ INC ; while (argc > 0) { if (argv[0][0] == '-') switch (argv[0][1]) { case 'P' : mtype = MONPRINTER ; /* Monitor printer queue. */ INC ; getparam(printer, argv, "-P needs printer name") ; break ; case 'a' : mtype = MONALL ; /* Monitor all of the spoolfile. */ break ; case 'b' : INC ; /* Alternate background pattern. */ getparam(bgicon, argv, "-b needs background icon") ; break ; case 'f' : INC ; /* New directory for face icons. */ getparam(facedir, argv, "-f needs face directory") ; SPRINTF(machfile, "%s/machine.tab", facedir) ; SPRINTF(peopfile, "%s/people.tab", facedir) ; break ; case 'i' : invert = 1 ; /* Reverse video. */ break ; case 'n' : dontshowno = 1 ; /* Don't show number of messages. */ break ; case 'p' : INC ; /* No. of seconds between checks. */ getparam(next, argv, "-p needs period time") ; period = atoi(next) ; /* No. of seconds between checks. */ break ; case 's' : INC ; /* Alternative spoolfile. */ getparam(spoolfile, argv, "-s needs spool directory") ; break ; case 't' : dontshowtime = 1 ; /* Do not show timestamps. */ break ; case 'u' : dontshowuser = 1 ; /* Do not show usernames. */ break ; case 'v' : FPRINTF(stderr, "%s version 1.3.%1d\n", progname, PATCHLEVEL) ; exit(1) ; /* SunView windowing arguments. -Wp, -WP and -Wi are used in the NeWS * implementation to initially position the window and icon. */ case 'W' : switch (argv[0][2]) { case 'H' : break ; /* -WH, no sub-args follow */ case 'i' : iconic = 1 ; break ; /* -Wi, start as an icon. */ case 'g' : /* -Wg, set default color. */ case 'n' : break ; /* -Wn, no label at all */ case 'h' : /* -Wh, height */ case 'I' : /* -WI "icon filename" */ case 'l' : /* -Wl "some window label" */ case 'L' : /* -Wl "some icon label" */ case 't' : /* Font filename */ case 'T' : /* Icon font filename */ case 'w' : INC ; /* Width, in columns. */ break ; case 'p' : INC ; /* -Wp xnum ynum */ getparam(next, argv, "-Wp needs x coordinate") ; wx = atoi(next) ; ler-daemon else if [ ! -d mailer-daemon ] then echo shar: creating directory mailer-daemon mkdir mailer-daemon fi echo shar: entering directory mailer-daemon cd mailer-daemon if [ -f 48x48x1 ] then echo shar: will not over-write existing file 48x48x1 else echo shar: extracting '48x48x1', 1056 characters cat > 48x48x1 <<'Funky_Stuff' 0x0001,0xFFFF,0xFFC0, 0x0002,0xB000,0x0030, 0x0003,0x5800,0x0008, 0x0006,0xADFF,0xFFC8, 0x0005,0x54FF,0xFFE4, 0x000A,0xAAF7,0xFDF2, 0x020D,0x5673,0xF9F2, 0x060A,0xAA61,0xF0FA, 0x0E0D,0x5568,0xE8F9, 0x1E0A,0xAB71,0xF1F9, 0x0E0D,0x557F,0xFFF9, 0x0A0A,0xAB3F,0xFFF1, 0x080D,0x5500,0x0001, 0x080A,0xAB00,0x0001, 0x080D,0x5500,0x9E01, 0x0DEA,0xAB03,0x9F81, 0x073D,0x5507,0x83C1, 0x001A,0xAB0F,0x81E1, 0x001D,0x551F,0x80F1, 0x000A,0xAB1F,0x80F1, 0x000D,0x553F,0x80F9, 0x000A,0xAB3F,0x80F9, 0x000D,0x553F,0x80F9, 0x000A,0xAB3F,0x80F9, 0x0FFD,0x553F,0x81F9, 0x3FFA,0xAB3F,0x83F9, 0x7FFD,0x553F,0x9FF9, 0xFFFA,0xAB3F,0x9FF9, 0xFFFD,0x551F,0x9FF1, 0xFFFA,0xAB1F,0x9FF1, 0xFFFD,0x550F,0x9FE1, 0xFFFA,0xAB07,0x9FC1, 0xFFFD,0xD503,0x9F81, 0x7FFB,0xEB00,0x9E01, 0x3FFD,0xF500,0x0001, 0x1FFB,0xFB00,0x0001, 0x0FFD,0xFD0F,0xFFE1, 0x07FB,0xFB1F,0xFFD1, 0x01FD,0xFD3F,0xF7C9, 0x00FF,0xFF7F,0xF8C5, 0x003F,0xFD7F,0xFC45, 0x001F,0xFF7F,0xFE05, 0x0007,0xF540,0x3F85, 0x0003,0xF740,0x0FC5, 0x0000,0xFD40,0x01F5, 0x0000,0x3F40,0x007D, 0x0000,0x0740,0x003D, 0x0000,0x01C0,0x000F, Funky_Stuff len=`wc -c < 48x48x1` if [ $len != 1056 ] ; then echo error: 48x48x1 was $len bytes long, should have been 1056 fi fi # end of overwriting check cd .. echo shar: done with directory mailer-daemon fi if [ -f net ] then echo shar: can not write a directory over file net else if [ ! -d net ] then echo shar: creating directory net mkdir net fi echo shar: entering directory net cd net if [ -f 48x48x1 ] then echo shar: will not over-write existing file 48x48x1 else echo shar: extracting '48x48x1', 1056 characters cat > 48x48x1 <<'Funky_Stuff' 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0020,0x0000,0x0000, 0x0070,0x0100,0x0000, 0x00F8,0x0300,0x0000, 0x0020,0x7FFC,0x0000, 0x0010,0x8303,0xE200, 0x000F,0x0101,0x2600, 0x0009,0x0001,0x3F00, 0x0009,0x0001,0xE600, 0x000F,0x0002,0x0200, 0x0010,0x8014,0x0000, 0x00A0,0x5018,0x0000, 0x00C0,0x301C,0x0000, 0x00E0,0x7020,0x0000, 0x0000,0x0840,0x4000, 0x0000,0x05E0,0xC000, 0x0000,0x033F,0xFF00, 0x0000,0x1120,0xC000, 0x00E0,0x31E0,0x4000, 0x00C0,0xFF20,0x0000, 0x00A1,0x3010,0x0000, 0x001E,0x100E,0x0000, 0x0012,0x000C,0x0700, 0x0012,0x000A,0x0300, 0x001E,0x0001,0x0500, 0x00A1,0x0000,0x8800, 0x00C0,0x8000,0x9000, 0x00E0,0x4101,0xE000, 0x0000,0x2181,0x2000, 0x0000,0x1FFF,0x2000, 0x0000,0x0181,0xE000, 0x0000,0x0101,0x0000, 0x0000,0x0002,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, Funky_Stuff len=`wc -c < 48x48x1` if [ $len != 1056 ] ; then echo error: 48x48x1 was $len bytes long, should have been 1056 fi fi # end of overwriting check cd .. echo shar: done with directory net fi if [ -f root ] then echo shar: can not write a directory over file root else if [ ! -d root ] then echo shar: creating directory root mkdir root fi echo shar: entering directory root cd root if [ -f 48x48x1 ] then echo shar: will not over-write existing file 48x48x1 else echo shar: extracting '48x48x1', 1056 characters cat > 48x48x1 <<'Funky_Stuff' 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x1EE4,0x0000, 0x0000,0x1B04,0x0000, 0x0000,0x1F74,0x0000, 0x0000,0x1F64,0x0000, 0x0000,0x1FA4,0x0000, 0x0000,0x1704,0x0000, 0x0000,0x1FE4,0x0000, 0x0000,0x1EE4,0x0000, 0x0000,0x1FE4,0x0000, 0x0000,0x1FE4,0x0000, 0x0000,0x1EC4,0x0000, 0x0000,0x17F4,0x0000, 0x0000,0x37F6,0x0000, 0x0000,0x3FEB,0x0000, 0x0000,0xFF7F,0x0000, 0x0000,0xFF7F,0xE000, 0x0001,0xFFE7,0xF000, 0x000F,0xE7F1,0x9800, 0x001F,0x0631,0xC800, 0x0036,0x0C30,0x6400, 0x0024,0x1830,0x6600, 0x0064,0x3C10,0x2200, 0x0064,0x3410,0x2200, 0x004C,0x2438,0x7200, 0x004E,0x242C,0xDA00, 0x004A,0x6424,0x8A00, 0x0012,0x4426,0x8800, 0x0012,0x4460,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, Funky_Stuff len=`wc -c < 48x48x1` if [ $len != 1056 ] ; then echo error: 48x48x1 was $len bytes long, should have been 1056 fi fi # end of overwriting check cd .. echo shar: done with directory root fi if [ -f sys ] then echo shar: can not write a directory over file sys else if [ ! -d sys ] then echo shar: creating directory sys mkdir sys fi echo shar: entering directory sys cd sys if [ -f 48x48x1 ] then echo shar: will not over-write existing file 48x48x1 else echo shar: extracting '48x48x1', 1056 characters cat > 48x48x1 <<'Funky_Stuff' 0x0000,0x0200,0x0000, 0x0000,0x0004,0x0000, 0x0000,0x080A,0x0000, 0x0000,0x008A,0x2000, 0x0000,0x016A,0xD000, 0x0002,0x0091,0x2000, 0x0000,0x0080,0x2000, 0x0020,0x004E,0x4000, 0x0000,0x439F,0x3800, 0x0000,0xA41F,0x0400, 0x0088,0xA39F,0x3800, 0x0016,0xAD4E,0x4000, 0x0009,0x1280,0x2000, 0x0008,0x0291,0x2000, 0x0004,0xE56A,0xD100, 0x0039,0xF38A,0x2000, 0x0241,0xF04A,0x0000, 0x0039,0xF384,0x0400, 0x0004,0xE400,0x0000, 0x0008,0x0200,0x2000, 0x0009,0x1240,0x0000, 0x0016,0xADA0,0x0000, 0x0008,0xAAA2,0x0000, 0x0000,0xB6AD,0x0000, 0x0000,0x4912,0x1000, 0x0000,0x0802,0x0000, 0x0020,0x04E4,0x0000, 0x0200,0x39F3,0x8800, 0x0008,0x41F0,0x4000, 0x0814,0x39F3,0x8000, 0x0114,0x44E4,0x0000, 0x12D5,0xA802,0x0800, 0x0122,0x4912,0x0000, 0x0100,0x56AD,0x0000, 0x209C,0x88A2,0x0000, 0x073E,0x70A0,0x2000, 0x083E,0x0840,0x0000, 0x073E,0x7000,0x0000, 0x009C,0x8000,0x0000, 0x0100,0x4000,0x0000, 0x0122,0x4200,0x0000, 0x02D5,0xA000,0x0000, 0x0114,0x4000,0x0000, 0x0014,0x0800,0x0000, 0x0008,0x0000,0x0000, 0x0000,0x4000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, Funky_Stuff len=`wc -c < 48x48x1` if [ $len != 1056 ] ; then echo error: 48x48x1 was $len bytes long, should have been 1056 fi fi # end of overwriting check cd .. echo shar: done with directory sys fi if [ -f unknown ] then echo shar: can not write a directory over file unknown else if [ ! -d unknown ] then echo shar: creating directory unknown mkdir unknown fi echo shar: entering directory unknown cd unknown if [ -f 48x48x1 ] then echo shar: will not over-write existing file 48x48x1 else echo shar: extracting '48x48x1', 1056 characters cat > 48x48x1 <<'Funky_Stuff' 0x0000,0x01FF,0xC000, 0x7C00,0x1FFF,0xE000, 0x8200,0xFFFF,0xE000, 0x8207,0xFFFF,0xF000, 0x620F,0xFFFF,0xFF80, 0x040F,0xFFFF,0xFFE0, 0x080F,0xFFFF,0xFFF0, 0x100F,0xFFFF,0xF7F0, 0x2007,0xFFFF,0xF7F0, 0x0007,0xFFFF,0x8FE0, 0x2007,0xFFFE,0x7F80, 0x2007,0xFFF9,0xFE00, 0x000D,0xFFE7,0xFE00, 0x103E,0x7F9F,0xFE00, 0x007F,0x807F,0xFE00, 0x20FF,0xFFFF,0xFE00, 0x81FF,0xFFFF,0xFE00, 0x01FF,0xFFFB,0x8E00, 0x81FF,0xFFE1,0xF600, 0x21FF,0xFFE7,0xF600, 0x09FF,0xFFFF,0x0600, 0x00FF,0xFFFC,0x7F80, 0x0877,0xF7F0,0x3FC0, 0x2007,0xF7E0,0x1FC0, 0x0003,0xE7E0,0x7FC0, 0x4001,0xC3C3,0xFFC0, 0x1000,0x800F,0xFF80, 0x0407,0x803F,0xFF80, 0x0007,0x83FF,0xFF80, 0x00BF,0xFBFF,0xFF80, 0x00A0,0x1FFF,0xFF80, 0x00BF,0xFFFF,0xFF80, 0x0001,0xFFFF,0xFF80, 0x0001,0xF7FF,0xF180, 0x001F,0xFFFF,0xCFC0, 0x007E,0xFFFC,0x3FE0, 0x01FF,0x3FC3,0xFFF8, 0x07FF,0xDF3F,0xFFFE, 0x0FFF,0xF0FF,0xFFFF, 0x1FFF,0xCFFF,0xFFFF, 0x3FFF,0xDFFF,0xFFFF, 0x3FFF,0xD9FF,0xFFFF, 0x7FFF,0xD9FF,0xFFFF, 0x7FFF,0xDFFF,0xFFFF, 0xFFFF,0xBFC0,0x07FF, 0xFFFF,0xBFDF,0xF7FF, 0xFFFF,0xBFDF,0xF7FF, 0xFFFF,0xBFDF,0xF7FF, Funky_Stuff len=`wc -c < 48x48x1` if [ $len != 1056 ] ; then echo error: 48x48x1 was $len bytes long, should have been 1056 fi fi # end of overwriting check cd .. echo shar: done with directory unknown fi if [ -f uucp ] then echo shar: can not write a directory over file uucp else if [ ! -d uucp ] then echo shar: creating directory uucp mkdir uucp fi echo shar: entering directory uucp cd uucp if [ -f 48x48x1 ] then echo shar: will not over-write existing file 48x48x1 else echo shar: extracting '48x48x1', 1056 characters cat > 48x48x1 <<'Funky_Stuff' 0x0000,0x0000,0x0000, 0x0000,0x0000,0x3FE0, 0x0000,0x0000,0xE000, 0x0000,0x0001,0x8000, 0x0000,0x0003,0x0000, 0x0200,0x0007,0xE000, 0x0008,0x001E,0x1800, 0x1000,0x0074,0x0800, 0x0040,0x00C4,0x0800, 0x0001,0x0184,0x0800, 0x4200,0x0106,0x1800, 0x0010,0x0201,0xE000, 0x0000,0x0000,0x0000, 0x4000,0x0000,0x0000, 0x0400,0x0000,0x0000, 0x0020,0x3F00,0x0000, 0x4400,0xF5C0,0x0000, 0x0023,0xAAF0,0x0000, 0x020F,0x5558,0x0000, 0x003A,0xAAAE,0x0000, 0x20F5,0x5557,0x8000, 0x03AA,0xAAAA,0xC000, 0x0F55,0x5555,0x7000, 0x3EAA,0xA0AA,0xBC00, 0x7755,0x1F15,0x5600, 0xEBAA,0x71CA,0xAB80, 0xD5D1,0xC071,0x55E0, 0xAAE7,0x001C,0xABB0, 0xD57C,0x0007,0x177C, 0x6070,0x0011,0xCEEE, 0x3FC0,0x0020,0x7DD7, 0x0000,0x1140,0x1DAB, 0x0000,0x0001,0x0795, 0x0000,0x0000,0x01C3, 0x0000,0x0004,0x007E, 0x0001,0x0020,0x0800, 0x0000,0x1100,0x0020, 0x0000,0x0000,0x1000, 0x0000,0x0000,0x4040, 0x0010,0x0000,0x0080, 0x0000,0x2004,0x0100, 0x0000,0x0110,0x0200, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x2000, 0x0020,0x0002,0x0000, 0x0000,0x0020,0x0000, 0x0001,0x0400,0x0000, 0x0000,0x0000,0x0000, Funky_Stuff len=`wc -c < 48x48x1` if [ $len != 1056 ] ; then echo error: 48x48x1 was $len bytes long, should have been 1056 fi fi # end of overwriting check cd .. echo shar: done with directory uucp fi cd .. echo shar: done with directory misc. fi if [ -f people.tab ] then echo shar: will not over-write existing file people.tab else echo shar: extracting 'people.tab', 1663 characters cat > people.tab <<'Funky_Stuff' sunaus/rallen=bob sunaus/ballen=bob sunaus/bbaker=bruceb sunaus/mbosch=mike sunaus/eddy=eddie sunaus/eevans=eddie sunaus/ggrell=grell sunaus/gene=grell sunaus/jingall=johni sunaus/ijeffery=ian sunaus/glynne=gjl sunaus/tmcentee=tim sunaus/jnoonan=johnn sunaus/apappas=arie sunaus/jennie=jenny sunaus/jrendell=jenny sunaus/gsearle=gjs sunaus/gsitters=greg sunaus/bscott=brad sunaus/rstewart=ruth sunaus/jteasdale=jim sunaus/loraine=lori sunaus/lorraine=lori sunaus/lunicomb=lori sunaus/pvrbancich=paula sunaus/swoodhead=simon sunaus/jy=yo sunaus/jyoung=yo sunaus/rboden=richard sunaus/rbodin=richard sunaus/rburridge=richb sunaus/rich=richb sunaus/mcunningham=mary sunaus/sduchesne=sue sunaus/mfredericks=max sunaus/mfredricks=max sunaus/bgeneralis=bill sunaus/shulbert=susanh sunaus/susan=susanh sunaus/gmason=gregm sunaus/vmickan=val sunaus/trogge=tony sunaus/andy=aspiers sunaus/bwiggins=bruce sunaus/ryeap=ron sunaus/cbreen=colinb sunaus/rdesalis=roger sunaus/mfort=markf sunaus/mark=markg sunaus/mgurvis=markg sunaus/mnegri=manuel sunaus/npettitt=noel sunaus/jraine=john sunaus/paul=paulr sunaus/prosham=paulr sunaus/gsweigert=geo sunaus/rbowman=robb sunaus/bbowman=robb sunaus/krees=kim sunaus/mikes=mslee sunaus/gshepherd=george sunaus/aweller=andrew sunaus/kbeavan=kevin sunaus/rbradford=rhonda sunaus/ckeith=colin sunaus/mmccann=mmc sunaus/ksterry=kaylene sunaus/rwilliams=rex sunaus/gdonin=gary sunaus/dshea=dennis sunaus/doshea=dennis sunaus/hprotoolis=harry sunaus/rschrader=robert sunaus/bschrader=robert sunaus/bobs=robert sunaus/jvermeulen=jeff sunaus/MAILER-DAEMON=mailer-daemon sunaus/Mailer-Daemon=mailer-daemon sunaus/mailer-daemon=mailer-daemon Funky_Stuff len=`wc -c < people.tab` if [ $len != 1663 ] ; then echo error: people.tab was $len bytes long, should have been 1663 fi fi # end of overwriting check if [ -f sunaus ] then echo shar: can not write a directory over file sunaus else if [ ! -d sunaus ] then echo shar: creating directory sunaus mkdir sunaus fi echo shar: entering directory sunaus cd sunaus if [ -f richb ] then echo shar: can not write a directory over file richb else if [ ! -d richb ] then echo shar: creating directory richb mkdir richb fi echo shar: entering directory richb cd richb if [ -f face.ps ] then echo shar: will not over-write existing file face.ps else echo shar: extracting 'face.ps', 782 characters cat > face.ps <<'Funky_Stuff' /Icon findfont 1 scalefont setfont .1 .25 .9 .75 rectpath 1 setgray fill 0 setgray .1 .25 moveto (\056) show .002 sleep 1 setgray .1 .25 moveto (\056) show 0 setgray .1 .25 moveto (\057) show .002 sleep 1 setgray .1 .25 moveto (\057) show 0 setgray .1 .25 moveto (\060) show .002 sleep 1 setgray .1 .25 moveto (\060) show 0 setgray .1 .25 moveto (\061) show .002 sleep 1 setgray .1 .25 moveto (\061) show 0 setgray .1 .25 moveto (\062) show .002 sleep 1 setgray .1 .25 moveto (\062) show 0 setgray .1 .25 moveto (\061) show .002 sleep 1 setgray .1 .25 moveto (\061) show 0 setgray .1 .25 moveto (\060) show .002 sleep 1 setgray .1 .25 moveto (\060) show 0 setgray .1 .25 moveto (\057) show .002 sleep 1 setgray .1 .25 moveto (\057) show 0 setgray .1 .25 moveto (\056) show Funky_Stuff len=`wc -c < face.ps` if [ $len != 782 ] ; then echo error: face.ps was $len bytes long, should have been 782 fi fi # end of overwriting check cd .. echo shar: done with directory richb fi cd .. echo shar: done with directory sunaus fi cd .. echo shar: done with directory facedir fi if (EQUAL(nextline, "set")) { ptr = index(nextline, ' ') ; if (EQUAL(ptr+1, "flash")) { ptr = index(nextline, '=') ; SSCANF(ptr+1, "%d", &flashes) ; } else if (EQUAL(ptr+1, "bell")) { ptr = index(nextline, '=') ; SSCANF(ptr+1, "%d", &beeps) ; } } } FCLOSE(fd) ; } Funky_Stuff len=`wc -c < main.c` if [ $len != 10551 ] ; then echo error: main.c was $len bytes long, should have been 10551 fi fi # end of overwriting check if [ -f mon.c ] then echo shar: will not over-write existing file mon.c else echo shar: extracting 'mon.c', 8937 characters cat > mon.c <<'Funky_Stuff' /*LINTLIBRARY*/ #ifndef lint static char sccsid[] = "@(#)mon.c 1.4 88/12/11" ; #endif /* Monitoring routines used by the faces program. * * Copyright (c) Rich Burridge - Sun Microsystems Australia. * All rights reserved. * * Permission is given to distribute these sources, as long as the * copyright messages are not removed, and no monies are exchanged. * * No responsibility is taken for any errors on inaccuracies inherent * either to the comments or the code of this program, but if reported * to me, then an attempt will be made to fix them. */ #include "faces.h" #include "extern.h" adjust() /* Adjust the row and column position. */ { struct psinfo *this ; if (mtype != MONNEW) { if (++column == NO_PER_ROW) { column = 0 ; row++ ; } return ; } if (psrecs != NULL) /* Adjust animation positions for MONNEW */ { this = psrecs ; /* Point to beginning of chain. */ while (this != NULL) { this->column++ ; /* Adjust column position. */ if (facetype == NEWSTYPE && this->next == NULL) this->column-- ; /* Reset for brand new animate record. */ this = this->next ; } } } do_check() /* Perform another check of the appropriate type. */ { switch ((int) mtype) { case MONALL : do_mail(MONALL) ; /* Monitor all of the mail file. */ break ; case MONNEW : do_mail(MONNEW) ; /* Monitor new mail only. */ break ; case MONPRINTER : do_printer() ; /* Monitor the print queue. */ break ; } firsttime = 0 ; } do_mail(mtype) /* Monitor a mail file for new or all mail. */ enum mon_type mtype ; { char host[MAXLINE] ; /* Pointer to host name from the "From" line. */ char *ptr ; /* Pointer to extract field. */ char realname[MAXLINE] ; /* Real username for this user. */ char ts[MAXLINE] ; /* Pointer to time stamp from the "From" line. */ char user[MAXLINE] ; /* Pointer to user name from the "From" line. */ FILE *fp ; /* File descriptor for users mail spool file. */ struct recinfo *crec ; /* Pointer to current mail record for updating. */ column = row = 0 ; /* Start in top left corner of pixrect. */ newmail = 0 ; /* Assume no new mail. */ noicons = 0 ; if (mtype == MONNEW) make_pixrect(NO_PER_ROW) ; if (stat(spoolfile,&buf) == -1) { lastsize = 0 ; if (mtype == MONNEW) show_display() ; /* Show new mail. */ else make_display() ; /* Output icons and tidyup chain of records. */ return ; } if (buf.st_size > lastsize) newmail = 1 ; /* New mail found. */ if (mtype == MONNEW) if (buf.st_size <= lastsize) /* Is the size of mail folder bigger? */ { lastsize = buf.st_size ; /* No: save new size and exit. */ show_display() ; return ; } if ((fp = fopen(spoolfile,"r")) == NULL) /* Open spoolfile. */ { if (mtype == MONNEW) show_display() ; /* Show new mail. */ else make_display() ; /* Output icons and tidyup chain of records. */ return ; } if (mtype == MONNEW) FSEEK(fp, lastsize, 0) ; lastsize = buf.st_size ; while (fgets(nextline,MAXLINE,fp) != NULL) if (EQUAL(nextline,"From ")) { host[0] = user[0] = ts[0] = '\0' ; if ((ptr = get_field(HOSTNAME,nextline)) != NULL) STRCPY(host, ptr) ; if ((ptr = get_field(USERNAME,nextline)) != NULL) STRCPY(user, ptr) ; if ((ptr = get_field(TIMESTAMP,nextline)) != NULL) STRCPY(ts, ptr) ; h_to_c(host, community) ; /* Turn hostname into community name. */ a_to_u(community, user, realname) ; make_iconname(community, realname) ; if (mtype == MONNEW) { add_face(BOTH, ORDINARY, iconname) ; if (!dontshowtime) text(ICON, LEFT, ts) ; if (!dontshowuser) text(WINDOW, LEFT, realname) ; adjust() ; } else { if ((crec = rec_exists(community, realname)) != NULL) { STRCPY(crec->ts, ts) ; if (!crec->total) noicons++ ; crec->total++ ; } else add_record(community, realname, ts, 0) ; } } FCLOSE(fp) ; if (mtype == MONNEW) show_display() ; /* Show new mail. */ else make_display() ; /* Output icons and tidyup chain of records. */ } do_printer() /* Monitor printer queue. */ { struct recinfo *this, *next ; FILE *fp ; /* File descriptor for users mail spool file. */ char command[MAXLINE] ; /* Lpq system call for this printer. */ char owner[MAXLINE] ; /* Owner of job in the print queue. */ char tempname[MAXLINE] ; /* Temporary unique filename. */ int size ; /* Size of this print job in bytes. */ noicons = 0 ; SPRINTF(tempname,"/tmp/faces%04d",getpid()) ; SPRINTF(command,"lpq -P %s > %s",printer,tempname) ; if (system(command)) { FPRINTF(stderr,"%s: system call for printer %s stats failed.\n", progname,printer) ; return ; } if ((fp = fopen(tempname,"r")) == NULL) /* Open spoolfile. */ { FPRINTF(stderr,"%s: couldn't open printer stats in %s.\n", progname,tempname) ; return ; } column = row = 0 ; /* Start in top left corner of pixrect. */ FGETS(nextline,MAXLINE,fp) ; if (EQUAL(nextline,"no entries")) { make_pixrect(1) ; /* Just the "no print" icon. */ add_face(BOTH, NOPRINT, "") ; /* Set to "no print" icon. */ } else if (EQUAL(nextline,"Printer Error: may need attention!")) { make_pixrect(1) ; /* Just the "no paper" icon. */ add_face(BOTH, NOPAPER, "") ; /* Set to "no paper" icon. */ text(BOTH, LEFT, printer) ; /* Output printer name. */ } else { FGETS(nextline,MAXLINE,fp) ; /* Skip the next line. */ while (fgets(nextline,MAXLINE,fp) != NULL) { SSCANF(&nextline[7], "%s", owner) ; SSCANF(&nextline[60], "%d", &size) ; h_to_c("", community) ; make_iconname(community, owner) ; add_record("",owner,"",size) ; } make_pixrect(noicons) ; this = recs ; while (this != NULL) { next = this->next ; add_face(WINDOW, ORDINARY, this->iconname) ; SPRINTF(nextline, "%1d", this->size) ; if (!dontshowuser) text(WINDOW, LEFT, this->username) ; /* Owner. */ text(WINDOW, RIGHT, nextline) ; /* Size. */ if (this == recs) { add_face(ICON, ORDINARY, this->iconname) ; SPRINTF(nextline, "%1d %s", noicons, (noicons == 1 ? "job" : "jobs")) ; text(ICON, RIGHT, nextline) ; /* Number of jobs. */ } adjust() ; /* Adjust column and row. */ remove_record(this) ; this = next ; } recs = last = NULL ; } FCLOSE(fp) ; UNLINK(tempname) ; show_display() ; } make_pixrect(count) /* Make window pixrect the correct size. */ int count ; { int c, r ; /* Size in columns and rows of window display. */ r = ((count-1) / NO_PER_ROW) + 1 ; /* Number of rows of faces. */ c = NO_PER_ROW ; /* Full width display. */ if (count <= 10) { r = 1 ; /* One row. */ c = count ; /* Of 'count' columns. */ } height = r * ICONHEIGHT ; /* Height of the icon display. */ width = c * ICONWIDTH ; /* Width of the icon display. */ create_pixrects(width, height) ; } make_display() /* Output icons and tidyup chain of records. */ { int count ; /* Name of faces in icon display. */ struct recinfo *this, *next ; count = noicons ; /* Number of faces to display. */ if (!count) count = 1 ; /* Always one "no mail" icon. */ make_pixrect(count) ; if (!noicons) add_face(BOTH, NOMAIL, "") ; else { this = recs ; while (this != NULL) { next = this->next ; add_face(BOTH, ORDINARY, this->iconname) ; if (!dontshowno) { SPRINTF(nextline, "%1d", this->total) ; text(ICON, RIGHT, nextline) ; } if (!dontshowtime) text(ICON, LEFT, this->ts) ; if (!dontshowuser) text(WINDOW, LEFT, this->username) ; adjust() ; remove_record(this) ; this = next ; } recs = last = NULL ; } show_display() ; /* Display the latest set of faces. */ } Funky_Stuff len=`wc -c < mon.c` if [ $len != 8937 ] ; then echo error: mon.c was $len bytes long, should have been 8937 fi fi # end of overwriting check if [ -f news.c ] then echo shar: will not over-write existing file news.c else echo shar: extracting 'news.c', 10648 characters cat > news.c <<'Funky_Stuff' /*LINTLIBRARY*/ #ifndef lint static char sccsid[] = "@(#)news.c 1.3 88/12/11" ; #endif /* NeWS dependent graphics routines used by faces, * the visual mail and print job monitor. * * Copyright (c) Rich Burridge - Sun Microsystems Australia. * All rights reserved. * * Permission is given to distribute these sources, as long as the * copyright messages are not removed, and no monies are exchanged. * * No responsibility is taken for any errors on inaccuracies inherent * either to the comments or the code of this program, but if reported * to me, then an attempt will be made to fix them. */ #include "faces.h" #include "extern.h" #include <sundev/kbd.h> #include <sundev/kbio.h> #ifdef SUNOS3.x int fullmask ; /* Full mask of file descriptors to check on. */ int readmask ; /* Readmask used in select call. */ #else fd_set fullmask ; /* Full mask of file descriptors to check on. */ fd_set readmask ; /* Readmask used in select call. */ #endif SUNOS3.x int kbdfd ; /* File descriptor for the keyboard. */ int psfd ; /* NeWS connection file descriptor. */ unsigned short ibuf[256] ; /* Ikon/icon image buffer. */ extern FILE *PostScript ; extern FILE *PostScriptInput ; add_face(display, itype, name) /* Add this icon to the display. */ enum disp_type display ; enum icon_type itype ; char *name ; { char face[MAXLINE] ; /* Canvas containing face (Source). */ switch ((int) itype) { case NOMAIL : STRCPY(face, "NomailIcon") ; break ; case NOPAPER : STRCPY(face, "NopaperIcon") ; break ; case NOPRINT : STRCPY(face, "NoprintIcon") ; break ; case ORDINARY : if ((facetype = get_icon(name, ibuf)) != -1) switch (facetype) { case BLITTYPE : case SUNTYPE : load_icon("Curface") ; STRCPY(face, "CurfaceIcon") ; case NEWSTYPE : break ; } else STRCPY(face, "NofaceIcon") ; break ; } if (display == ICON) if (mtype == MONPRINTER) adjust_image("MPR", face, 0, 0) ; else adjust_image("MPR", face, row, column) ; else if (display == WINDOW) adjust_image("PR", face, row, column) ; else { adjust_image("MPR", face, row, column) ; adjust_image("PR", face, row, column) ; } FFLUSH(PostScript) ; } adjust_image(dest, face, row, column) char *dest, *face ; int row, column ; { switch ((int) mtype) { case MONNEW : FPRINTF(PostScript, "%d 0 %d %d %s ShiftImage\n", ICONWIDTH, (NO_PER_ROW-1)*ICONWIDTH, ICONHEIGHT, dest) ; if (facetype == NEWSTYPE) { FPRINTF(PostScript, "%d %d %d %d %s ClearBox\n", column*ICONWIDTH, row*ICONHEIGHT, ICONWIDTH, ICONHEIGHT, dest) ; return ; } case MONALL : case MONPRINTER : FPRINTF(PostScript,"%s %d %d %d %d %s MoveImage\n", face, ICONWIDTH, ICONHEIGHT, column*ICONWIDTH, row*ICONHEIGHT, dest) ; } } beep_flash(beeps, flashes) /* Perform visual feedback. */ int beeps, flashes ; { int i, x ; if (beeps) for (i = 0; i < beeps; i++) { x = KBD_CMD_BELL ; IOCTL(kbdfd, KIOCCMD, &x) ; usleep(250000) ; x = KBD_CMD_NOBELL ; IOCTL(kbdfd, KIOCCMD, &x) ; usleep(250000) ; } } create_pixrects(width, height) /* Create pixrects for the face images. */ { int h, i, j, w ; if (mtype == MONNEW && !firsttime) return ; FPRINTF(PostScript,"%d %d PR DoPixrects\n", width, height) ; h = height ; w = width ; if (mtype == MONPRINTER) { h = ICONHEIGHT ; w = ICONWIDTH ; } FPRINTF(PostScript,"%d %d MPR DoPixrects\n", w, h) ; if (strlen(bgicon)) { for (i = 0; i < (height / 64); i++) for (j = 0; j < (width / 64); j++) { FPRINTF(PostScript,"BackgroundIcon %d %d %d %d PR MoveImage\n", ICONWIDTH, ICONHEIGHT, j, i) ; FPRINTF(PostScript,"BackgroundIcon %d %d %d %d MPR MoveImage\n", ICONWIDTH, ICONHEIGHT, j, i) ; } } else FPRINTF(PostScript,"SetBackground\n") ; } do_news_ps(psrecs) /* Display chain of NeWS animations. */ struct psinfo *psrecs ; { struct psinfo *next, *this ; this = psrecs ; /* Point to beginning of NeWS records. */ while (this != NULL) { next = this->next ; if ((mtype != MONNEW) || (this->column < NO_PER_ROW)) { FPRINTF(PostScript, "(%s) %d %d %d %d ExecFile\n", this->name, ICONWIDTH, ICONHEIGHT, this->column*ICONWIDTH, this->row*ICONHEIGHT) ; FFLUSH(PostScript) ; } this = next ; } } init_ws_type() { if (ps_open_PostScript() < 0) return -1 ; if (send_ps_file(NEWSFILE) == -1) { FPRINTF(stderr,"%s: cannot open %s\n", progname, NEWSFILE) ; FCLOSE(PostScript) ; return(-1) ; } FFLUSH(PostScript) ; if (ferror(PostScript)) { FCLOSE(PostScript) ; return(-1) ; } if (invert) FPRINTF(PostScript, "/Invert false def\n") ; else FPRINTF(PostScript, "/Invert true def\n") ; gtype = NEWS ; return(0) ; } load_icon(name) char *name ; { int i, j ; FPRINTF(PostScript,"/%sIcon 64 64 1 { } { <\n", name) ; for (i = 0; i < 32; i++) { for (j = 0; j < 8; j++) FPRINTF(PostScript,"%.4X ", ibuf[i*8+j]) ; FPRINTF(PostScript,"\n") ; } FPRINTF(PostScript,"> } buildimage def\n") ; } /*ARGSUSED*/ make_frame(argc,argv) int argc ; char *argv[] ; { if ((kbdfd = open("/dev/kbd", 0)) == -1) { FPRINTF(stderr,"%s: can't open keyboard.\n", progname) ; exit(1) ; } psfd = fileno(PostScriptInput) ; #ifdef SUNOS3.x fullmask = 1 << psfd ; #else FD_ZERO(&fullmask) ; FD_SET(psfd, &fullmask) ; #endif SUNOS3.x if (strlen(bgicon)) if (get_sun_icon(bgicon, ibuf) == 0) load_icon("Background") ; FPRINTF(PostScript,"%d %d %d %d %d %d %d MakeFrame\n", wx, wy, NO_PER_ROW*ICONWIDTH+10, ICONHEIGHT*10+10, ix, iy, iconic) ; FPRINTF(PostScript,"InitFont\n") ; width = NO_PER_ROW * ICONWIDTH ; height = ICONHEIGHT ; } make_icon() { if (get_sun_icon("noface.icon", ibuf) == 0) load_icon("Noface") ; if (get_sun_icon("nomail.icon", ibuf) == 0) load_icon("Nomail") ; if (get_sun_icon("nopaper.icon", ibuf) == 0) load_icon("Nopaper") ; if (get_sun_icon("noprint.icon", ibuf) == 0) load_icon("Noprint") ; } send_ps_file(fname) char *fname ; { FILE *stream ; int c ; if ((stream = fopen(fname,"r")) == NULL) return -1 ; while ((c = getc(stream)) != EOF) PUTC(c,PostScript) ; FCLOSE(stream) ; return 0 ; } show_display() /* Show the latest set of mail icon faces. */ { if (mtype != MONPRINTER) FPRINTF(PostScript,"%d %d %d %d ShowDisplay\n", width, height, width, height) ; else FPRINTF(PostScript,"%d %d %d %d ShowDisplay\n", width, height, ICONWIDTH, ICONHEIGHT) ; if (newmail) beep_flash(beeps, flashes) ; if (psrecs != NULL) do_news_ps(psrecs) ; FFLUSH(PostScript) ; } start_tool() { int type ; /* Value from NeWS server. */ struct psinfo *next, *this ; /* For removing current chain of records. */ struct timeval tval ; tval.tv_usec = 0 ; tval.tv_sec = period ; for (;;) { readmask = fullmask ; #ifdef SUNOS3.x SELECT(32, &readmask, 0, 0, &tval) ; if (readmask && (1 << psfd)) #else SELECT(FD_SETSIZE, &readmask, (fd_set *) 0, (fd_set *) 0, &tval) ; if (FD_ISSET(psfd, &readmask)) #endif SUNOS3.x { if (pscanf(PostScriptInput, "%d", &type) == EOF) exit(1) ; switch (type) { case DIED : exit(0) ; case PAINTED : if (psrecs != NULL) do_news_ps(psrecs) ; } } else { this = psrecs ; /* Point to beginning of NeWS records. */ if (mtype != MONNEW) { while (this != NULL) { next = this->next ; if (this->name != NULL) free(this->name) ; free((char *) this) ; /* Remove this record. */ this = next ; } psrecs = plast = NULL ; } do_check() ; /* Check the mail/printer again. */ } } } text(display,just,str) enum disp_type display ; enum just_type just ; char *str ; { int i, len ; int c, r ; /* Column and row position for this face. */ int x, y ; /* Position of start of this text string. */ char line[MAXLINE] ; /* PostScript text string to be builtup. */ char tpr ; /* Indicator for destination offscreen canvas. */ c = column ; r = row ; switch ((int) display) { case BOTH : text(ICON, just, str) ; text(WINDOW, just, str) ; return ; case ICON : tpr = 'M' ; /* MPR canvas. */ if (mtype != MONALL) c = r = 0 ; break ; case WINDOW : tpr = ' ' ; /* PR canvas. */ } len = strlen(str) ; /* Character length of text. */ if (len > 10) { len = 10 ; str[10] = '\0' ; /* Maximum of 10 characters. */ } line[0] = '\0' ; for (i = 0; i < len; i++) switch (str[i]) { case '\\' : STRCAT(line,"\\\\") ; break ; case '(' : STRCAT(line,"\\(") ; break ; case ')' : STRCAT(line,"\\)") ; break ; default : STRNCAT(line,&str[i],1) ; } switch ((int) just) { case LEFT : x = c*ICONWIDTH+2 ; y = r*ICONHEIGHT+2 ; break ; case RIGHT : x = (c+1)*ICONWIDTH-(len*6)-2 ; y = r*ICONHEIGHT+2 ; } FPRINTF(PostScript,"%d %d %d %d %cPR ClearBox\n", x, y, len*6+2, 10, tpr) ; FPRINTF(PostScript,"(%s) %d %d %cPR MakeText\n", line, x, y, tpr) ; } Funky_Stuff len=`wc -c < news.c` if [ $len != 10648 ] ; then echo error: news.c was $len bytes long, should have been 10648 fi fi # end of overwriting check if [ -f rec.c ] then echo shar: will not over-write existing file rec.c else echo shar: extracting 'rec.c', 6808 characters cat > rec.c <<'Funky_Stuff' /*LINTLIBRARY*/ #ifndef lint static char sccsid[] = "@(#)rec.c 1.2 88/12/09" ; #endif /* Record handling routines used by the faces program. * * Copyright (c) Rich Burridge - Sun Microsystems Australia. * All rights reserved. * * Permission is given to distribute these sources, as long as the * copyright messages are not removed, and no monies are exchanged. * * No responsibility is taken for any errors on inaccuracies inherent * either to the comments or the code of this program, but if reported * to me, then an attempt will be made to fix them. */ #include "faces.h" #include "extern.h" char * Malloc(n) int n ; { char *val ; if ((val = malloc((unsigned) n)) == NULL) FPRINTF(stderr,"%s: Out of memory.\n",progname) ; return val ; } add_alias(crec, username, alias) /* Add new alias to hostnames' list. */ struct comminfo *crec ; char *username, *alias ; { struct peopinfo *cptemp, *ptemp ; ptemp = (struct peopinfo *) Malloc(sizeof(struct peopinfo)) ; ptemp->alias = (char *) Malloc(strlen(alias)) ; STRCPY(ptemp->alias, alias) ; ptemp->username = (char *) Malloc(strlen(username)) ; STRCPY(ptemp->username, username) ; ptemp->next = NULL ; if (crec->people == NULL) crec->people = ptemp ; else { cptemp = crec->people ; while (cptemp != NULL) if (cptemp->next == NULL) { cptemp->next = ptemp ; return ; } else cptemp = cptemp->next ; } } add_machine(machine, community) /* Add new machine to list. */ char *machine, *community ; { struct machinfo *temp ; temp = (struct machinfo *) Malloc(sizeof(struct machinfo)) ; temp->machine = (char *) Malloc(strlen(machine)) ; STRCPY(temp->machine, machine) ; temp->community = (char *) Malloc(strlen(community)) ; STRCPY(temp->community, community) ; temp->next = NULL ; if (machines == NULL) machines = mlast = temp ; /* Start chain. */ else if (mlast != NULL) { mlast->next = temp ; /* Add record to existing chain. */ mlast = temp ; /* Point to end of chain. */ } } add_ps_rec(row, column, name) /* Add record for later animation. */ int row, column ; char *name ; { struct psinfo *temp ; temp = (struct psinfo *) Malloc(sizeof(struct psinfo)) ; temp->name = (char *) Malloc(strlen(name)) ; STRCPY(temp->name, name) ; temp->row = row ; temp->column = column ; temp->next = NULL ; if (psrecs == NULL) psrecs = plast = temp ; /* Start chain. */ else if (plast != NULL) { plast->next = temp ; /* Add record to existing chain. */ plast = temp ; } } add_record(community, username, timestamp, size) char *community, *username, *timestamp ; int size ; { struct recinfo *temp ; temp = (struct recinfo *) Malloc(sizeof(struct recinfo)) ; temp->community = (char *) Malloc(strlen(community)) ; STRCPY(temp->community, community) ; temp->username = (char *) Malloc(strlen(username)) ; STRCPY(temp->username, username) ; temp->iconname = (char *) Malloc(strlen(iconname)) ; STRCPY(temp->iconname, iconname) ; STRCPY(temp->ts, timestamp) ; temp->size = size ; temp->total = 1 ; temp->next = NULL ; noicons++ ; if (recs == NULL) recs = last = temp ; /* Start chain. */ else { last->next = temp ; /* Add record to existing chain. */ last = temp ; /* Point to the end of the chain. */ } } check_comm(hostname, username, alias) /* Check community list. */ char *hostname, *username, *alias ; { struct comminfo *ctemp ; ctemp = communities ; /* Try and find machine record for hostname. */ while (ctemp != NULL) if (EQUAL(ctemp->community, hostname)) { add_alias(ctemp, username, alias) ; return ; } else ctemp = ctemp->next ; ctemp = (struct comminfo *) Malloc(sizeof(struct comminfo)) ; ctemp->community = (char *) Malloc(strlen(hostname)) ; STRCPY(ctemp->community, hostname) ; ctemp->people = NULL ; ctemp->next = NULL ; if (communities == NULL) communities = clast = ctemp ; /* Start chain. */ else { clast->next = ctemp ; /* Add record to existing chain. */ clast = ctemp ; /* Point to end of chain. */ } add_alias(ctemp, username, alias) ; } read_aliases() /* Setup the hostname aliases subchains. */ { char alias[MAXLINE] ; /* Alias for this community/username. */ char hostname[MAXLINE] ; /* This records' hostname. */ char username[MAXLINE] ; /* This records real username. */ char *ptr1, *ptr2 ; FILE *fd ; if ((fd = fopen(peopfile, "r")) == NULL) /* Open people file. */ { FPRINTF(stderr,"%s: cannot open %s\n", progname, peopfile) ; return ; } while (fgets(nextline, MAXLINE, fd) != NULL) { ptr1 = index(nextline, '/') ; STRNCPY(hostname, nextline, (int) (ptr1-nextline)) ; hostname[(int) (ptr1-nextline)] = '\0' ; ptr2 = index(nextline, '=') ; STRNCPY(alias, ptr1+1, (int) (ptr2-ptr1-1)) ; alias[(int) (ptr2-ptr1-1)] = '\0' ; STRNCPY(username, ptr2+1, strlen(ptr2)-2) ; username[strlen(ptr2)-2] = '\0' ; check_comm(hostname, username, alias) ; } FCLOSE(fd) ; } read_machines() /* Setup the chain of machine/community records. */ { char community[MAXLINE] ; /* This records' community. */ char machine[MAXLINE] ; /* This records' machine name. */ char *ptr ; FILE *fd ; if ((fd = fopen(machfile, "r")) == NULL) /* Open machine file. */ { FPRINTF(stderr,"%s: cannot open %s\n", progname, machfile) ; return ; } while (fgets(nextline, MAXLINE, fd) != NULL) { ptr = index(nextline, '=') ; STRNCPY(machine, nextline, (int) (ptr-nextline)) ; machine[(int) (ptr-nextline)] = '\0' ; STRNCPY(community, ptr+1, strlen(ptr)-2) ; community[strlen(ptr)-2] = '\0' ; add_machine(machine, community) ; } FCLOSE(fd) ; } struct recinfo * rec_exists(community,username) /* Check if record exists for mail item. */ char *community, *username ; { struct recinfo *temp ; /* Pointer to mail records used for chaining. */ temp = recs ; while (temp != NULL) { if (EQUAL(temp->username, username) && EQUAL(temp->community, community)) return(temp) ; /* Record found. */ temp = temp->next ; /* Point to next record. */ } return(NULL) ; } remove_record(thisrec) /* Remove this record from the chain. */ struct recinfo *thisrec ; { if (thisrec->community != NULL) free(thisrec->community) ; if (thisrec->username != NULL) free(thisrec->username) ; if (thisrec->iconname != NULL) free(thisrec->iconname) ; free((char *) thisrec) ; } Funky_Stuff len=`wc -c < rec.c` if [ $len != 6808 ] ; then echo error: rec.c was $len bytes long, should have been 6808 fi fi # end of overwriting check if [ -f sunview.c ] then echo shar: will not over-write existing file sunview.c else echo shar: extracting 'sunview.c', 9881 characters cat > sunview.c <<'Funky_Stuff' /*LINTLIBRARY*/ #ifndef lint static char sccsid[] = "@(#)sunview.c 1.1 88/12/04" ; #endif /* SunView dependent graphics routines used by faces, * the visual mail and print job monitor. * * Copyright (c) Rich Burridge - Sun Microsystems Australia. * All rights reserved. * * Permission is given to distribute these sources, as long as the * copyright messages are not removed, and no monies are exchanged. * * No responsibility is taken for any errors or inaccuracies inherent * either to the comments or the code of this program, but if reported * to me, then an attempt will be made to fix them. */ #include "faces.h" #include "extern.h" #include <stdio.h> #include <suntool/sunview.h> #include <suntool/canvas.h> #define ICON_SET (void) icon_set #define NOTIFY_SET_ITIMER_FUNC (void) notify_set_itimer_func #define PR_DESTROY (void) pr_destroy #define PR_REPLROP (void) pr_replrop #define PR_ROP (void) pr_rop #ifdef SUNOS3.x #define PR_TTEXT (void) pf_ttext #else #define PR_TTEXT (void) pr_ttext #endif SUNOS3.x #define PW_ROP (void) pw_rop #define WIN_BELL (void) win_bell #define WINDOW_SET (void) window_set #define SMALLFONT "/usr/lib/fonts/fixedwidthfonts/screen.r.7" #define ITIMER_NULL ((struct itimerval *) 0) int repaint_proc() ; Canvas canvas ; Frame frame ; Icon faces_icon ; Pixfont *sfont ; /* Small font for timestamp and count. */ Pixrect *mpr, *pr ; /* Pointers to current pixrects. */ Pixrect *old_mpr, *old_pr ; /* Pointers to previous pixrects. */ Pixrect *background ; /* Pointer to background pattern or gray. */ Pixwin *fpw, *pw ; Rect *temprect ; int ffd ; /* File descriptor of faces frame. */ short gray_image[] = { 0x8000, 0x8000, 0x2000, 0x2000 } ; mpr_static(gray_pr, 4, 4, 1, gray_image) ; short noface_image[] = { #include "noface.icon" } ; mpr_static(noface_pr, 64, 64, 1, noface_image) ; short nomail_image[] = { #include "nomail.icon" } ; mpr_static(nomail_pr, 64, 64, 1, nomail_image) ; short nopaper_image[] = { #include "nopaper.icon" } ; mpr_static(nopaper_pr, 64, 64, 1, nopaper_image) ; short noprint_image[] = { #include "noprint.icon" } ; mpr_static(noprint_pr, 64, 64, 1, noprint_image) ; add_face(display, itype, name) enum disp_type display ; enum icon_type itype ; char *name ; { Pixrect *face_pr ; unsigned short buf[256] ; /* Ikon/icon image. */ unsigned short *ptr ; int freeit ; /* Set if we should destroy this pixrect. */ int i ; freeit = 0 ; switch ((int) itype) { case NOMAIL : face_pr = &nomail_pr ; break ; case NOPAPER : face_pr = &nopaper_pr ; break ; case NOPRINT : face_pr = &noprint_pr ; break ; case ORDINARY : if (get_icon(name, buf) == -1) face_pr = &noface_pr ; else { face_pr = mem_create(64, 64, 1) ; ptr = (unsigned short *) ((struct mpr_data *) face_pr->pr_data)->md_image ; for (i = 0; i < 256; i++) ptr[i] = buf[i] ; freeit = 1 ; } break ; } if (display == ICON) if (mtype == MONPRINTER) adjust_image(mpr, face_pr, 0, 0) ; else adjust_image(mpr, face_pr, row, column) ; else if (display == WINDOW) adjust_image(pr, face_pr, row, column) ; else { adjust_image(mpr, face_pr, row, column) ; adjust_image(pr, face_pr, row, column) ; } if (freeit) PR_DESTROY(face_pr) ; } adjust_image(fpr, face_pr, row, column) /* Place new face in memory pixrect. */ Pixrect *fpr, *face_pr ; int row, column ; { switch ((int) mtype) { case MONNEW : PR_ROP(fpr, 64, 0, 640-64, 64, PIX_SRC, fpr, 0, 0) ; case MONALL : case MONPRINTER : PR_ROP(fpr, column*ICONWIDTH, row*ICONHEIGHT, ICONWIDTH, ICONHEIGHT, PIX_SRC, face_pr, 0, 0) ; } } Notify_value check_mail() { do_check() ; } beep_flash(beeps, flashes) /* Perform visual feedback. */ int beeps, flashes ; { static struct timeval btime = { 0, 250000 } ; /* Beep timer. */ int bfd ; /* File descriptor for faces window, or -1. */ Pixwin *bpw ; /* Pixwin pointer for faces window, or 0. */ if (beeps || flashes) do { bfd = beeps > 0 ? ffd : -1 ; bpw = flashes > 0 ? fpw : (Pixwin *) 0 ; WIN_BELL(bfd, btime, bpw) ; SELECT(0, (fd_set *) 0, (fd_set *) 0, (fd_set *) 0, &btime) ; beeps-- ; flashes-- ; } while (beeps > 0) ; } create_pixrects(width, height) /* Create pixrects for the face images. */ int width, height ; { old_pr = pr ; pr = mem_create(width, height, 1) ; PR_REPLROP(pr, 0, 0, width, height, PIX_SRC, background, 0, 0) ; faces_icon = (Icon) window_get(frame, FRAME_ICON) ; old_mpr = (Pixrect *) icon_get(faces_icon, ICON_IMAGE) ; if (mtype == MONPRINTER) mpr = mem_create(ICONWIDTH, ICONHEIGHT, 1) ; else { mpr = mem_create(width, height, 1) ; PR_REPLROP(mpr, 0, 0, width, height, PIX_SRC, background, 0, 0) ; } if (mtype == MONNEW && old_pr != NULL) PR_ROP(pr, 0, 0, width, height, PIX_SRC, old_pr, 0, 0) ; if (mtype == MONNEW && old_mpr != NULL) PR_ROP(mpr, 0, 0, width, height, PIX_SRC, old_mpr, 0, 0) ; } init_ws_type() { gtype = SUNVIEW ; return 0 ; } make_frame(argc,argv) int argc ; char *argv[] ; { unsigned short buf[256] ; /* For background pattern. */ unsigned short *ptr ; int i ; if (strlen(bgicon)) { if (get_sun_icon(bgicon, buf) == 0) background = &gray_pr ; background = mem_create(64, 64, 1) ; ptr = (unsigned short *) ((struct mpr_data *) background->pr_data)->md_image ; for (i = 0; i < 256; i++) ptr[i] = buf[i] ; } else background = &gray_pr ; frame = window_create((Window) 0, FRAME, FRAME_ICON, faces_icon, FRAME_SHOW_LABEL, FALSE, FRAME_SUBWINDOWS_ADJUSTABLE, FALSE, FRAME_NO_CONFIRM, TRUE, WIN_WIDTH, NO_PER_ROW * ICONWIDTH + 10, WIN_HEIGHT, ICONHEIGHT * 10 + 10, FRAME_ARGS, argc,argv, 0) ; fpw = (Pixwin *) window_get(frame, WIN_PIXWIN) ; ffd = (int) window_get(frame, WIN_FD) ; canvas = window_create(frame, CANVAS, CANVAS_REPAINT_PROC, repaint_proc, CANVAS_RETAINED, TRUE, 0) ; pw = canvas_pixwin(canvas) ; sfont = pf_open(SMALLFONT) ; width = NO_PER_ROW * ICONWIDTH ; height = ICONHEIGHT ; } make_icon() { if (mtype == MONPRINTER) faces_icon = icon_create(ICON_IMAGE, &noprint_pr, 0) ; else faces_icon = icon_create(ICON_IMAGE, &nomail_pr, 0) ; } /*ARGSUSED*/ repaint_proc(canvas, pw, repaint_area) Canvas canvas ; Pixwin *pw ; Rectlist *repaint_area ; { PW_ROP(pw, 0, 0, width, height, PIX_SRC, pr, 0, 0) ; } show_display() /* Show the latest set of mail icon faces. */ { if (invert) /* Invert the memory pixrects before displaying. */ { PR_ROP(pr, 0, 0, width, height, PIX_NOT(PIX_DST), pr, 0, 0) ; PR_ROP(mpr, 0, 0, width, height, PIX_NOT(PIX_DST), pr, 0, 0) ; } if (mtype != MONPRINTER) { temprect = (Rect *) icon_get(faces_icon, ICON_IMAGE_RECT) ; temprect->r_height = height ; temprect->r_width = width ; ICON_SET(faces_icon, ICON_HEIGHT, height, ICON_WIDTH, width, ICON_IMAGE_RECT, temprect, ICON_IMAGE, mpr, 0) ; } else ICON_SET(faces_icon, ICON_IMAGE, mpr, 0) ; WINDOW_SET(frame, FRAME_ICON, faces_icon, 0) ; temprect = (Rect *) window_get(frame, FRAME_OPEN_RECT) ; temprect->r_height = height+10 ; temprect->r_width = width+10 ; WINDOW_SET(frame, FRAME_OPEN_RECT, temprect, 0) ; PW_ROP(pw, 0, 0, width, height, PIX_SRC, pr, 0, 0) ; if (newmail) beep_flash(beeps, flashes) ; if (old_pr) PR_DESTROY(old_pr) ; if (old_mpr) PR_DESTROY(old_mpr) ; } start_tool() { struct itimerval tval ; tval.it_interval.tv_usec = 0 ; tval.it_interval.tv_sec = period ; tval.it_value.tv_usec = 0 ; tval.it_value.tv_sec = period ; NOTIFY_SET_ITIMER_FUNC(frame, check_mail, ITIMER_REAL, &tval, ITIMER_NULL) ; window_main_loop(frame) ; } text(display, just, str) enum disp_type display ; enum just_type just ; char *str ; { int len ; int c, r ; /* Column and row position for this face. */ int x, y ; /* Position of start of this text string. */ Pixrect *tpr ; c = column ; r = row ; switch ((int) display) { case BOTH : text(ICON, just, str) ; text(WINDOW, just, str) ; return ; case ICON : tpr = mpr ; if (mtype != MONALL) c = r = 0 ; break ; case WINDOW : tpr = pr ; } len = strlen(str) ; /* Character length of text. */ if (len > 10) { len = 10 ; str[10] = '\0' ; /* Maximum of 10 characters. */ } switch ((int) just) { case LEFT : x = c*ICONWIDTH+2 ; y = (r+1)*ICONHEIGHT-2 ; break ; case RIGHT : x = (c+1)*ICONWIDTH-(len*6)-2 ; y = (r+1)*ICONHEIGHT-2 ; } PR_ROP(tpr, x, y-9, len*6+2, 10, PIX_CLR, (Pixrect *) NULL, 0, 0) ; PR_TTEXT(tpr, x, y, PIX_SRC ^ PIX_NOT(PIX_DST), sfont, str) ; } Funky_Stuff len=`wc -c < sunview.c` if [ $len != 9881 ] ; then echo error: sunview.c was $len bytes long, should have been 9881 fi fi # end of overwriting check
richb@sunchat.UUCP (Rich Burridge) (12/12/88)
------CUT HERE------CUT HERE------ #! /bin/sh # this is a shell archive, meaning: # 1. Remove everything above the #! /bin/sh line # 2. Save the resulting text in a file. # 3. Execute the file with /bin/sh to create the files: # facedir (directory) # This archive created: Sun Dec 11 15:16:32 EST 1988 # # export PATH; PATH=/bin:$PATH # if [ -f facedir ] then echo shar: can not write a directory over file facedir else if [ ! -d facedir ] then echo shar: creating directory facedir mkdir facedir fi echo shar: entering directory facedir cd facedir if [ -f machine.tab ] then echo shar: will not over-write existing file machine.tab else echo shar: extracting 'machine.tab', 383 characters cat > machine.tab <<'Funky_Stuff' stard=sunaus extra=sunaus sunchat=sunaus garfield=sunaus tom=sunaus felix=sunaus sunk=sunaus sunsa=sunaus misaus=sunaus maverick=sunaus misaus1=sunaus nimbin=sunaus redgum=sunaus palette=sunaus sunwa=sunaus sunact=sunaus basset=basser castor.cs.su.oz=basser cluster.cs.su.oz=basser orwell=basser sarad=basser sasha=basser sunrise=basser gris=softway softway.sw.oz=softway arakis=sun Funky_Stuff len=`wc -c < machine.tab` if [ $len != 383 ] ; then echo error: machine.tab was $len bytes long, should have been 383 fi fi # end of overwriting check if [ -f misc. ] then echo shar: can not write a directory over file misc. else if [ ! -d misc. ] then echo shar: creating directory misc. mkdir misc. fi echo shar: entering directory misc. cd misc. if [ -f acsnet ] then echo shar: can not write a directory over file acsnet else if [ ! -d acsnet ] then echo shar: creating directory acsnet mkdir acsnet fi echo shar: entering directory acsnet cd acsnet if [ -f 48x48x1 ] then echo shar: will not over-write existing file 48x48x1 else echo shar: extracting '48x48x1', 1056 characters cat > 48x48x1 <<'Funky_Stuff' 0x0008,0x6000,0x0000, 0x000C,0x5000,0x0000, 0x000A,0x4800,0x0000, 0x000D,0x5400,0x0000, 0x000A,0xDA00,0x0000, 0x0005,0x5A00,0x0000, 0x0002,0xAA00,0x0000, 0x0001,0x7400,0x0000, 0x0003,0xE400,0x0000, 0x0006,0x2600,0x0000, 0x00FC,0x0A00,0x0000, 0x0301,0x0600,0x0000, 0x0700,0x0A00,0x0000, 0x06C0,0x1600,0x0000, 0x0300,0x0C00,0x0000, 0x01FF,0x9400,0x0000, 0x0001,0xA800,0x0000, 0x0003,0x1800,0x0000, 0x0002,0x3000,0x0000, 0x0006,0x6000,0x0000, 0x000C,0xA000,0x0000, 0x0008,0x6000,0x0000, 0x0018,0xA000,0x0000, 0x0010,0x6000,0x0000, 0x03F0,0x2000,0x0000, 0x0607,0x5000,0x0000, 0x043C,0x5000,0x0000, 0x0561,0xD800,0x0000, 0x076A,0x0800,0x0000, 0x03EA,0x1400,0x0000, 0x003E,0x0C00,0x0000, 0x0010,0x1600,0x0000, 0x0070,0x0B00,0x0000, 0x01F0,0x0580,0x0000, 0x01FF,0x02C0,0x0000, 0x01F8,0x7160,0x0000, 0x0080,0xFAB0,0x0000, 0x00C1,0x8158,0x0000, 0x0063,0x00AC,0x0000, 0x003B,0x0056,0x0000, 0x003E,0x002B,0x0000, 0x002B,0x0015,0x8000, 0x0035,0x0002,0xC007, 0x001B,0x8001,0x600D, 0x7FF5,0x80C0,0xBFF9, 0xAFFF,0x80E0,0x5543, 0xFA00,0x00F8,0x001E, 0x1FFF,0xFFCF,0xFFF0, Funky_Stuff len=`wc -c < 48x48x1` if [ $len != 1056 ] ; then echo error: 48x48x1 was $len bytes long, should have been 1056 fi fi # end of overwriting check cd .. echo shar: done with directory acsnet fi if [ -f adm ] then echo shar: can not write a directory over file adm else if [ ! -d adm ] then echo shar: creating directory adm mkdir adm fi echo shar: entering directory adm cd adm if [ -f 48x48x1 ] then echo shar: will not over-write existing file 48x48x1 else echo shar: extracting '48x48x1', 1056 characters cat > 48x48x1 <<'Funky_Stuff' 0x01FF,0xF801,0xFFF0, 0x0200,0x17E2,0x0020, 0x0400,0x2844,0x0050, 0x0800,0x50BF,0xFFA0, 0x1000,0xA940,0x0250, 0x2001,0x5280,0x05A0, 0x7FFE,0xAD00,0x0A50, 0x0001,0x5200,0x15F8, 0x7FFE,0xAC00,0x2A10, 0x0001,0x57FF,0xD528, 0x7FFE,0xA801,0x2A50, 0x0001,0x5002,0xD5A8, 0x7FFE,0xA805,0x2A50, 0x0001,0x500A,0xD5A8, 0x7FFE,0xA815,0x2A50, 0x0001,0x57EA,0xD5A8, 0x7FFE,0xA815,0x2A50, 0x0001,0x57EA,0xD5A8, 0x7FFE,0xA815,0x2A50, 0x0001,0x57EA,0xD5A8, 0x7FFE,0xA815,0x2A50, 0x0001,0x57EA,0xD5A8, 0x7FFE,0xA815,0x2A50, 0x0001,0x57EA,0xD5A8, 0x7FFE,0xA815,0x2A50, 0x0001,0x57EA,0xD5A0, 0x7FFE,0xA815,0x2A40, 0x0001,0x57EA,0xD580, 0x7FFE,0xA815,0x2A00, 0x0001,0x57EA,0xD400, 0x7FFE,0xA815,0xFFF8, 0x0001,0x57EA,0x0010, 0x7FFE,0xA814,0x0028, 0x0001,0x57E8,0x0057, 0x7FFE,0xAB10,0x00AB, 0x0001,0x55E0,0x0155, 0x7FFE,0xA97F,0xFEA9, 0x0001,0x5180,0x0151, 0x7FFE,0xA17F,0xFEA1, 0x0001,0x4200,0x0142, 0xFFFF,0x84FF,0xFF84, 0x8000,0x8880,0x0088, 0x8520,0x9099,0x2E90, 0x85A0,0xA0A5,0x24A0, 0x8560,0xC0A5,0x24C0, 0x8520,0x8098,0xC480, 0x4001,0x0040,0x0100, 0x3FFE,0x003F,0xFE00, Funky_Stuff len=`wc -c < 48x48x1` if [ $len != 1056 ] ; then echo error: 48x48x1 was $len bytes long, should have been 1056 fi fi # end of overwriting check cd .. echo shar: done with directory adm fi if [ -f bin ] then echo shar: can not write a directory over file bin else if [ ! -d bin ] then echo shar: creating directory bin mkdir bin fi echo shar: entering directory bin cd bin if [ -f 48x48x1 ] then echo shar: will not over-write existing file 48x48x1 else echo shar: extracting '48x48x1', 1056 characters cat > 48x48x1 <<'Funky_Stuff' 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0046,0x230C,0x4600, 0x0049,0x2492,0x4900, 0x0049,0x2492,0x4900, 0x0049,0x2492,0x4900, 0x0046,0x230C,0x4600, 0x0000,0x0000,0x0000, 0x0031,0x1862,0x3100, 0x0049,0x2492,0x4900, 0x0049,0x2492,0x4900, 0x0049,0x2492,0x4900, 0x0031,0x1862,0x3100, 0x0000,0x0000,0x0000, 0x0048,0xC48C,0x3100, 0x0049,0x2492,0x4900, 0x0049,0x2492,0x4900, 0x0049,0x2492,0x4900, 0x0048,0xC48C,0x3100, 0x0000,0x0000,0x0000, 0x0031,0x230C,0x4600, 0x0049,0x2492,0x4900, 0x0049,0x2492,0x4900, 0x0049,0x2492,0x4900, 0x0031,0x230C,0x4600, 0x0000,0x0000,0x0000, 0x0046,0x2462,0x3100, 0x0049,0x2492,0x4900, 0x0049,0x2492,0x4900, 0x0049,0x2492,0x4900, 0x0046,0x2462,0x3100, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, Funky_Stuff len=`wc -c < 48x48x1` if [ $len != 1056 ] ; then echo error: 48x48x1 was $len bytes long, should have been 1056 fi fi # end of overwriting check cd .. echo shar: done with directory bin fi if [ -f daemon ] then echo shar: can not write a directory over file daemon else if [ ! -d daemon ] then echo shar: creating directory daemon mkdir daemon fi echo shar: entering directory daemon cd daemon if [ -f 48x48x1 ] then echo shar: will not over-write existing file 48x48x1 else echo shar: extracting '48x48x1', 1056 characters cat > 48x48x1 <<'Funky_Stuff' 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0440,0x0000, 0x0000,0x0820,0x0000, 0x0000,0x0820,0x0000, 0x0000,0x0C60,0x1000, 0x0000,0x0FE0,0x3800, 0x0000,0x07C0,0x3800, 0x0004,0x0540,0x7C00, 0x0014,0x07C0,0x1000, 0x0054,0x0380,0x1000, 0x0054,0x03C0,0x1000, 0x0058,0x07E0,0x1000, 0x0068,0x0FE1,0xA000, 0x0008,0x1FF2,0x6000, 0x000F,0xFFF2,0x2000, 0x000F,0xF7FA,0x6000, 0x0004,0x07D9,0xE000, 0x0002,0x07D8,0x2000, 0x0002,0x07D8,0x2000, 0x0002,0x07D8,0x4000, 0x0001,0x07F8,0x4000, 0x0001,0x07F0,0x8000, 0x0001,0x0FEF,0x0000, 0x0000,0x8FE0,0x0000, 0x0000,0x9EC0,0x0000, 0x0000,0x9CC0,0x0000, 0x0000,0x58E0,0x0000, 0x0000,0x4C60,0x0000, 0x0000,0x4420,0x0000, 0x0000,0x0C60,0x0000, 0x0000,0x1CE0,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, Funky_Stuff len=`wc -c < 48x48x1` if [ $len != 1056 ] ; then echo error: 48x48x1 was $len bytes long, should have been 1056 fi fi # end of overwriting check cd .. echo shar: done with directory daemon fi if [ -f mailer-daemon ] then echo shar: can not write a directory over file mailer-daemon else if [ ! -d mailer-daemon ] then echo shar: creating directory mailer-daemon mkdir mailer-daemon fi echo shar: entering directory mailer-daemon cd mailer-daemon if [ -f 48x48x1 ] then echo shar: will not over-write existing file 48x48x1 else echo shar: extracting '48x48x1', 1056 characters cat > 48x48x1 <<'Funky_Stuff' 0x0001,0xFFFF,0xFFC0, 0x0002,0xB000,0x0030, 0x0003,0x5800,0x0008, 0x0006,0xADFF,0xFFC8, 0x0005,0x54FF,0xFFE4, 0x000A,0xAAF7,0xFDF2, 0x020D,0x5673,0xF9F2, 0x060A,0xAA61,0xF0FA, 0x0E0D,0x5568,0xE8F9, 0x1E0A,0xAB71,0xF1F9, 0x0E0D,0x557F,0xFFF9, 0x0A0A,0xAB3F,0xFFF1, 0x080D,0x5500,0x0001, 0x080A,0xAB00,0x0001, 0x080D,0x5500,0x9E01, 0x0DEA,0xAB03,0x9F81, 0x073D,0x5507,0x83C1, 0x001A,0xAB0F,0x81E1, 0x001D,0x551F,0x80F1, 0x000A,0xAB1F,0x80F1, 0x000D,0x553F,0x80F9, 0x000A,0xAB3F,0x80F9, 0x000D,0x553F,0x80F9, 0x000A,0xAB3F,0x80F9, 0x0FFD,0x553F,0x81F9, 0x3FFA,0xAB3F,0x83F9, 0x7FFD,0x553F,0x9FF9, 0xFFFA,0xAB3F,0x9FF9, 0xFFFD,0x551F,0x9FF1, 0xFFFA,0xAB1F,0x9FF1, 0xFFFD,0x550F,0x9FE1, 0xFFFA,0xAB07,0x9FC1, 0xFFFD,0xD503,0x9F81, 0x7FFB,0xEB00,0x9E01, 0x3FFD,0xF500,0x0001, 0x1FFB,0xFB00,0x0001, 0x0FFD,0xFD0F,0xFFE1, 0x07FB,0xFB1F,0xFFD1, 0x01FD,0xFD3F,0xF7C9, 0x00FF,0xFF7F,0xF8C5, 0x003F,0xFD7F,0xFC45, 0x001F,0xFF7F,0xFE05, 0x0007,0xF540,0x3F85, 0x0003,0xF740,0x0FC5, 0x0000,0xFD40,0x01F5, 0x0000,0x3F40,0x007D, 0x0000,0x0740,0x003D, 0x0000,0x01C0,0x000F, Funky_Stuff len=`wc -c < 48x48x1` if [ $len != 1056 ] ; then echo error: 48x48x1 was $len bytes long, should have been 1056 fi fi # end of overwriting check cd .. echo shar: done with directory mailer-daemon fi if [ -f net ] then echo shar: can not write a directory over file net else if [ ! -d net ] then echo shar: creating directory net mkdir net fi echo shar: entering directory net cd net if [ -f 48x48x1 ] then echo shar: will not over-write existing file 48x48x1 else echo shar: extracting '48x48x1', 1056 characters cat > 48x48x1 <<'Funky_Stuff' 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0020,0x0000,0x0000, 0x0070,0x0100,0x0000, 0x00F8,0x0300,0x0000, 0x0020,0x7FFC,0x0000, 0x0010,0x8303,0xE200, 0x000F,0x0101,0x2600, 0x0009,0x0001,0x3F00, 0x0009,0x0001,0xE600, 0x000F,0x0002,0x0200, 0x0010,0x8014,0x0000, 0x00A0,0x5018,0x0000, 0x00C0,0x301C,0x0000, 0x00E0,0x7020,0x0000, 0x0000,0x0840,0x4000, 0x0000,0x05E0,0xC000, 0x0000,0x033F,0xFF00, 0x0000,0x1120,0xC000, 0x00E0,0x31E0,0x4000, 0x00C0,0xFF20,0x0000, 0x00A1,0x3010,0x0000, 0x001E,0x100E,0x0000, 0x0012,0x000C,0x0700, 0x0012,0x000A,0x0300, 0x001E,0x0001,0x0500, 0x00A1,0x0000,0x8800, 0x00C0,0x8000,0x9000, 0x00E0,0x4101,0xE000, 0x0000,0x2181,0x2000, 0x0000,0x1FFF,0x2000, 0x0000,0x0181,0xE000, 0x0000,0x0101,0x0000, 0x0000,0x0002,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, Funky_Stuff len=`wc -c < 48x48x1` if [ $len != 1056 ] ; then echo error: 48x48x1 was $len bytes long, should have been 1056 fi fi # end of overwriting check cd .. echo shar: done with directory net fi if [ -f root ] then echo shar: can not write a directory over file root else if [ ! -d root ] then echo shar: creating directory root mkdir root fi echo shar: entering directory root cd root if [ -f 48x48x1 ] then echo shar: will not over-write existing file 48x48x1 else echo shar: extracting '48x48x1', 1056 characters cat > 48x48x1 <<'Funky_Stuff' 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x1EE4,0x0000, 0x0000,0x1B04,0x0000, 0x0000,0x1F74,0x0000, 0x0000,0x1F64,0x0000, 0x0000,0x1FA4,0x0000, 0x0000,0x1704,0x0000, 0x0000,0x1FE4,0x0000, 0x0000,0x1EE4,0x0000, 0x0000,0x1FE4,0x0000, 0x0000,0x1FE4,0x0000, 0x0000,0x1EC4,0x0000, 0x0000,0x17F4,0x0000, 0x0000,0x37F6,0x0000, 0x0000,0x3FEB,0x0000, 0x0000,0xFF7F,0x0000, 0x0000,0xFF7F,0xE000, 0x0001,0xFFE7,0xF000, 0x000F,0xE7F1,0x9800, 0x001F,0x0631,0xC800, 0x0036,0x0C30,0x6400, 0x0024,0x1830,0x6600, 0x0064,0x3C10,0x2200, 0x0064,0x3410,0x2200, 0x004C,0x2438,0x7200, 0x004E,0x242C,0xDA00, 0x004A,0x6424,0x8A00, 0x0012,0x4426,0x8800, 0x0012,0x4460,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, Funky_Stuff len=`wc -c < 48x48x1` if [ $len != 1056 ] ; then echo error: 48x48x1 was $len bytes long, should have been 1056 fi fi # end of overwriting check cd .. echo shar: done with directory root fi if [ -f sys ] then echo shar: can not write a directory over file sys else if [ ! -d sys ] then echo shar: creating directory sys mkdir sys fi echo shar: entering directory sys cd sys if [ -f 48x48x1 ] then echo shar: will not over-write existing file 48x48x1 else echo shar: extracting '48x48x1', 1056 characters cat > 48x48x1 <<'Funky_Stuff' 0x0000,0x0200,0x0000, 0x0000,0x0004,0x0000, 0x0000,0x080A,0x0000, 0x0000,0x008A,0x2000, 0x0000,0x016A,0xD000, 0x0002,0x0091,0x2000, 0x0000,0x0080,0x2000, 0x0020,0x004E,0x4000, 0x0000,0x439F,0x3800, 0x0000,0xA41F,0x0400, 0x0088,0xA39F,0x3800, 0x0016,0xAD4E,0x4000, 0x0009,0x1280,0x2000, 0x0008,0x0291,0x2000, 0x0004,0xE56A,0xD100, 0x0039,0xF38A,0x2000, 0x0241,0xF04A,0x0000, 0x0039,0xF384,0x0400, 0x0004,0xE400,0x0000, 0x0008,0x0200,0x2000, 0x0009,0x1240,0x0000, 0x0016,0xADA0,0x0000, 0x0008,0xAAA2,0x0000, 0x0000,0xB6AD,0x0000, 0x0000,0x4912,0x1000, 0x0000,0x0802,0x0000, 0x0020,0x04E4,0x0000, 0x0200,0x39F3,0x8800, 0x0008,0x41F0,0x4000, 0x0814,0x39F3,0x8000, 0x0114,0x44E4,0x0000, 0x12D5,0xA802,0x0800, 0x0122,0x4912,0x0000, 0x0100,0x56AD,0x0000, 0x209C,0x88A2,0x0000, 0x073E,0x70A0,0x2000, 0x083E,0x0840,0x0000, 0x073E,0x7000,0x0000, 0x009C,0x8000,0x0000, 0x0100,0x4000,0x0000, 0x0122,0x4200,0x0000, 0x02D5,0xA000,0x0000, 0x0114,0x4000,0x0000, 0x0014,0x0800,0x0000, 0x0008,0x0000,0x0000, 0x0000,0x4000,0x0000, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000, Funky_Stuff len=`wc -c < 48x48x1` if [ $len != 1056 ] ; then echo error: 48x48x1 was $len bytes long, should have been 1056 fi fi # end of overwriting check cd .. echo shar: done with directory sys fi if [ -f unknown ] then echo shar: can not write a directory over file unknown else if [ ! -d unknown ] then echo shar: creating directory unknown mkdir unknown fi echo shar: entering directory unknown cd unknown if [ -f 48x48x1 ] then echo shar: will not over-write existing file 48x48x1 else echo shar: extracting '48x48x1', 1056 characters cat > 48x48x1 <<'Funky_Stuff' 0x0000,0x01FF,0xC000, 0x7C00,0x1FFF,0xE000, 0x8200,0xFFFF,0xE000, 0x8207,0xFFFF,0xF000, 0x620F,0xFFFF,0xFF80, 0x040F,0xFFFF,0xFFE0, 0x080F,0xFFFF,0xFFF0, 0x100F,0xFFFF,0xF7F0, 0x2007,0xFFFF,0xF7F0, 0x0007,0xFFFF,0x8FE0, 0x2007,0xFFFE,0x7F80, 0x2007,0xFFF9,0xFE00, 0x000D,0xFFE7,0xFE00, 0x103E,0x7F9F,0xFE00, 0x007F,0x807F,0xFE00, 0x20FF,0xFFFF,0xFE00, 0x81FF,0xFFFF,0xFE00, 0x01FF,0xFFFB,0x8E00, 0x81FF,0xFFE1,0xF600, 0x21FF,0xFFE7,0xF600, 0x09FF,0xFFFF,0x0600, 0x00FF,0xFFFC,0x7F80, 0x0877,0xF7F0,0x3FC0, 0x2007,0xF7E0,0x1FC0, 0x0003,0xE7E0,0x7FC0, 0x4001,0xC3C3,0xFFC0, 0x1000,0x800F,0xFF80, 0x0407,0x803F,0xFF80, 0x0007,0x83FF,0xFF80, 0x00BF,0xFBFF,0xFF80, 0x00A0,0x1FFF,0xFF80, 0x00BF,0xFFFF,0xFF80, 0x0001,0xFFFF,0xFF80, 0x0001,0xF7FF,0xF180, 0x001F,0xFFFF,0xCFC0, 0x007E,0xFFFC,0x3FE0, 0x01FF,0x3FC3,0xFFF8, 0x07FF,0xDF3F,0xFFFE, 0x0FFF,0xF0FF,0xFFFF, 0x1FFF,0xCFFF,0xFFFF, 0x3FFF,0xDFFF,0xFFFF, 0x3FFF,0xD9FF,0xFFFF, 0x7FFF,0xD9FF,0xFFFF, 0x7FFF,0xDFFF,0xFFFF, 0xFFFF,0xBFC0,0x07FF, 0xFFFF,0xBFDF,0xF7FF, 0xFFFF,0xBFDF,0xF7FF, 0xFFFF,0xBFDF,0xF7FF, Funky_Stuff len=`wc -c < 48x48x1` if [ $len != 1056 ] ; then echo error: 48x48x1 was $len bytes long, should have been 1056 fi fi # end of overwriting check cd .. echo shar: done with directory unknown fi if [ -f uucp ] then echo shar: can not write a directory over file uucp else if [ ! -d uucp ] then echo shar: creating directory uucp mkdir uucp fi echo shar: entering directory uucp cd uucp if [ -f 48x48x1 ] then echo shar: will not over-write existing file 48x48x1 else echo shar: extracting '48x48x1', 1056 characters cat > 48x48x1 <<'Funky_Stuff' 0x0000,0x0000,0x0000, 0x0000,0x0000,0x3FE0, 0x0000,0x0000,0xE000, 0x0000,0x0001,0x8000, 0x0000,0x0003,0x0000, 0x0200,0x0007,0xE000, 0x0008,0x001E,0x1800, 0x1000,0x0074,0x0800, 0x0040,0x00C4,0x0800, 0x0001,0x0184,0x0800, 0x4200,0x0106,0x1800, 0x0010,0x0201,0xE000, 0x0000,0x0000,0x0000, 0x4000,0x0000,0x0000, 0x0400,0x0000,0x0000, 0x0020,0x3F00,0x0000, 0x4400,0xF5C0,0x0000, 0x0023,0xAAF0,0x0000, 0x020F,0x5558,0x0000, 0x003A,0xAAAE,0x0000, 0x20F5,0x5557,0x8000, 0x03AA,0xAAAA,0xC000, 0x0F55,0x5555,0x7000, 0x3EAA,0xA0AA,0xBC00, 0x7755,0x1F15,0x5600, 0xEBAA,0x71CA,0xAB80, 0xD5D1,0xC071,0x55E0, 0xAAE7,0x001C,0xABB0, 0xD57C,0x0007,0x177C, 0x6070,0x0011,0xCEEE, 0x3FC0,0x0020,0x7DD7, 0x0000,0x1140,0x1DAB, 0x0000,0x0001,0x0795, 0x0000,0x0000,0x01C3, 0x0000,0x0004,0x007E, 0x0001,0x0020,0x0800, 0x0000,0x1100,0x0020, 0x0000,0x0000,0x1000, 0x0000,0x0000,0x4040, 0x0010,0x0000,0x0080, 0x0000,0x2004,0x0100, 0x0000,0x0110,0x0200, 0x0000,0x0000,0x0000, 0x0000,0x0000,0x2000, 0x0020,0x0002,0x0000, 0x0000,0x0020,0x0000, 0x0001,0x0400,0x0000, 0x0000,0x0000,0x0000, Funky_Stuff len=`wc -c < 48x48x1` if [ $len != 1056 ] ; then echo error: 48x48x1 was $len bytes long, should have been 1056 fi fi # end of overwriting check cd .. echo shar: done with directory uucp fi cd .. echo shar: done with directory misc. fi if [ -f people.tab ] then echo shar: will not over-write existing file people.tab else echo shar: extracting 'people.tab', 1663 characters cat > people.tab <<'Funky_Stuff' sunaus/rallen=bob sunaus/ballen=bob sunaus/bbaker=bruceb sunaus/mbosch=mike sunaus/eddy=eddie sunaus/eevans=eddie sunaus/ggrell=grell sunaus/gene=grell sunaus/jingall=johni sunaus/ijeffery=ian sunaus/glynne=gjl sunaus/tmcentee=tim sunaus/jnoonan=johnn sunaus/apappas=arie sunaus/jennie=jenny sunaus/jrendell=jenny sunaus/gsearle=gjs sunaus/gsitters=greg sunaus/bscott=brad sunaus/rstewart=ruth sunaus/jteasdale=jim sunaus/loraine=lori sunaus/lorraine=lori sunaus/lunicomb=lori sunaus/pvrbancich=paula sunaus/swoodhead=simon sunaus/jy=yo sunaus/jyoung=yo sunaus/rboden=richard sunaus/rbodin=richard sunaus/rburridge=richb sunaus/rich=richb sunaus/mcunningham=mary sunaus/sduchesne=sue sunaus/mfredericks=max sunaus/mfredricks=max sunaus/bgeneralis=bill sunaus/shulbert=susanh sunaus/susan=susanh sunaus/gmason=gregm sunaus/vmickan=val sunaus/trogge=tony sunaus/andy=aspiers sunaus/bwiggins=bruce sunaus/ryeap=ron sunaus/cbreen=colinb sunaus/rdesalis=roger sunaus/mfort=markf sunaus/mark=markg sunaus/mgurvis=markg sunaus/mnegri=manuel sunaus/npettitt=noel sunaus/jraine=john sunaus/paul=paulr sunaus/prosham=paulr sunaus/gsweigert=geo sunaus/rbowman=robb sunaus/bbowman=robb sunaus/krees=kim sunaus/mikes=mslee sunaus/gshepherd=george sunaus/aweller=andrew sunaus/kbeavan=kevin sunaus/rbradford=rhonda sunaus/ckeith=colin sunaus/mmccann=mmc sunaus/ksterry=kaylene sunaus/rwilliams=rex sunaus/gdonin=gary sunaus/dshea=dennis sunaus/doshea=dennis sunaus/hprotoolis=harry sunaus/rschrader=robert sunaus/bschrader=robert sunaus/bobs=robert sunaus/jvermeulen=jeff sunaus/MAILER-DAEMON=mailer-daemon sunaus/Mailer-Daemon=mailer-daemon sunaus/mailer-daemon=mailer-daemon Funky_Stuff len=`wc -c < people.tab` if [ $len != 1663 ] ; then echo error: people.tab was $len bytes long, should have been 1663 fi fi # end of overwriting check if [ -f sunaus ] then echo shar: can not write a directory over file sunaus else if [ ! -d sunaus ] then echo shar: creating directory sunaus mkdir sunaus fi echo shar: entering directory sunaus cd sunaus if [ -f richb ] then echo shar: can not write a directory over file richb else if [ ! -d richb ] then echo shar: creating directory richb mkdir richb fi echo shar: entering directory richb cd richb if [ -f face.ps ] then echo shar: will not over-write existing file face.ps else echo shar: extracting 'face.ps', 782 characters cat > face.ps <<'Funky_Stuff' /Icon findfont 1 scalefont setfont .1 .25 .9 .75 rectpath 1 setgray fill 0 setgray .1 .25 moveto (\056) show .002 sleep 1 setgray .1 .25 moveto (\056) show 0 setgray .1 .25 moveto (\057) show .002 sleep 1 setgray .1 .25 moveto (\057) show 0 setgray .1 .25 moveto (\060) show .002 sleep 1 setgray .1 .25 moveto (\060) show 0 setgray .1 .25 moveto (\061) show .002 sleep 1 setgray .1 .25 moveto (\061) show 0 setgray .1 .25 moveto (\062) show .002 sleep 1 setgray .1 .25 moveto (\062) show 0 setgray .1 .25 moveto (\061) show .002 sleep 1 setgray .1 .25 moveto (\061) show 0 setgray .1 .25 moveto (\060) show .002 sleep 1 setgray .1 .25 moveto (\060) show 0 setgray .1 .25 moveto (\057) show .002 sleep 1 setgray .1 .25 moveto (\057) show 0 setgray .1 .25 moveto (\056) show Funky_Stuff len=`wc -c < face.ps` if [ $len != 782 ] ; then echo error: face.ps was $len bytes long, should have been 782 fi fi # end of overwriting check cd .. echo shar: done with directory richb fi cd .. echo shar: done with directory sunaus fi cd .. echo shar: done with directory facedir fi