Path: utzoo!attcan!uunet!allbery From: rburridge@Sun.COM (Rich Burridge) Newsgroups: comp.sources.misc Subject: v13i073: Faces v1.4.5: a visual list monitor for mail etc.. (Part 4 of 7). Message-ID: <95763@uunet.UU.NET> Date: 2 Jul 90 23:55:15 GMT Sender: allbery@uunet.UU.NET Lines: 1072 Approved: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc) Posting-number: Volume 13, Issue 73 Submitted-by: rburridge@Sun.COM (Rich Burridge) Archive-name: faces-1.4.5/part04 ------CUT HERE------faces.part4------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: # CHANGES # README # TODO # MANIFEST # FILES # Makefile # This archive created: Fri Jun 29 10:45:12 EST 1990 # # export PATH; PATH=/bin:$PATH # if [ -f CHANGES ] then echo shar: will not over-write existing file CHANGES else echo shar: extracting 'CHANGES', 5936 characters cat > CHANGES <<'Funky_Stuff' Faces change history. --------------------- v1.4 - patchlevel 0. - started 7th June 1990. released to volunteers for various enhancements. v1.4 - patchlevel 1 - 19th June 1990. copy sent to James Ashton for uncompression enhancements. v1.4 - patchlevel 2 - 20th June 1990. copy sent to various people for internal testing. v1.4 - patchlevel 3 - 21st June 1990. version made available internally via anon ftp and the mail server. also made available via fetchfile in Australia for beta testing. v1.4 - patchlevel 4 - 26th June 1990. * From Pat Lashley made several adjustments to the Makefile to get "make install" to work properly. * From Steve Piette added a missing i from an int (nt) declaration in xview.c. * included a new version of the face_update script. This version logs an entry for each update in a logfile (var/log/facelog by default. The script also has support for the "old" style of the faces database, where the username was the ikon. * created a manual page for face_update (face_update.1). Updated MANIFEST, FILES and Makefile to reflect this change. * From Pat Lashley the NeWS version has been fixed. The NeWS PostScript code has been converted to use cps, and a faces_cps.cps file has been generated. The news.c C frontend, has been rewritten to use the new cps routines. The NeWS code has been changed to be more object oriented. * From Cameron Humphries From Chris Maltby From Rich McAllister From Hakon Lie From Darryl K. Ramm From Tony Landells Need to include in get.c * From Rick Gunderson On the Sun386i version under SunView, the default icons were scrambled because of byte ordering problems in the load_icon routine. The icons loaded with get_blit_ikon were okay because I defined the REVORDER flag in the Makefile so the image gets massaged when it is loaded. I fixed this by redefining the interface to load_icon (but only when REVORDER is defined) by adding a flag to tell load_icon if the image had not already been ``massaged''. * From Rick Gunderson From Tony Landells The FACEDIR make variable is undefined for make install FACEDIR (for make install) clashes with FACEDIR (-D option). * From John Fong With each mail message, stop looking for From: lines once you've found one. * From Chris Maltby With the default mail option, the spy (unknown) ikon should display the correct username. * When no faces database is found, the noface ikon should display the correct username. * Added support for the "old" style of face database. This is where the username is not a directory, but the ikon in 48x48x1 format. * If the spool file was non existent then the icon was blank instead of NOMAIL. * The -a option used with the -U option was supplying the facemaker alias with the wrong filename to update. * From Darryl K. Ramm Make install, clean etc did not work because Pyramid make does not predifine $(MAKE). The declaration 'MAKE=make' fixes this. * From Darryl K. Ramm The mv commands in install should be a cp because it makes restarting install easier should it fall over half way through. * From Darryl K. Ramm faces/compface/compface.h: Needs #include on Pyramid not . * From Darryl K. Ramm x11.c: Pyramid's cc warns about illegal operation on geometry. if (!geometry) should be if (geometry[0] != '\0') * The icon dimensions should be imagewidth and imageheight in case the user has given the -w and -h command line options. * From Chris Maltby There is no mention in the manual about having to press DEL to clear the open window display with the default mail option. * From Tony Landells The programs in the filters directory never get built. Make install correctly does this now. * In the -a -U mode, when an "on-the-fly" face was found, faces would attempt to send mail to update the database each time the spoolfile was checked. The internal record chaining was incorrect, and a new garbage collection routine has been written. * From Chris Maltby A rewrite of the faces manual page to provide the most important information on the first page. * the X11 version now correctly displays on the icon. * From Chris Maltby Some machines don't automatically define popen() to return a FILE *. * the X11 version no longer puts out the ICCCM protocol error message when it's deleted. v1.4 - patchlevel 5 - 29th June 1990. * From John Togasaki From John Fong The definition in the Makefile for CFACEDIR was incorrect. The use of CFACEDIR in main.c should be FACEDIR instead. * From John Togasaki The definition for MANDIR in the main Makefile is incorrect. [Posted to comp.sources.misc] Funky_Stuff len=`wc -c < CHANGES` if [ $len != 5936 ] ; then echo error: CHANGES was $len bytes long, should have been 5936 fi fi # end of overwriting check if [ -f README ] then echo shar: will not over-write existing file README else echo shar: extracting 'README', 13270 characters cat > README <<'Funky_Stuff' README for faces, the visual list monitor. Version 1.4 June 1990. Permission is given to distribute these sources, as long as the copyright messages are not removed, and no monies are exchanged. ------------------------------------------------------------------------- CONTENTS: 1. What is faces? 2. Getting started. 3. Face formats. 4. How do I get a face image icon? 5. How to include your compressed face image with mail. 6. Automatically updating the faces database. 7. Acknowledgements. ------------------------------------------------------------------------ 1. What is faces? ----------------- This is the third general release of a "faces" server for monitoring a list visually. Typically this is a list of incoming mail messages, jobs in the print queue or users on a system. Faces has five different modes of operation: (a) The default will monitor for new mail. By default, only the last ten messages are displayed. Using the left mouse button it is possible to toggle the text in the faces window. This will either be the username or the time the mail message arrived. The icon shows the image of the last message to arrive. (b) You can monitor the whole of a mail file. The open window will automatically adjust it's size to correctly show the face icons. The open window options are the username or the timestamp and number of message from that user. The icon will display the image of the last message, and a count of the total number of messages in the spool file or mail folder. (c) Monitoring a given print queue. This will generate a single face icon showing the job at the top of the print queue, and the text message will display the printer name plus the number of jobs to be printed. Opening the window will show images of all the jobs in the queue. The text on each image can be toggled, choices being the owners' name and the size of the job in bytes. (d) Monitoring users on a machine. For each user, a face image is displayed. Text can be either the username or the time they logged on. The iconic form displays the total number of users. (e) Custom monitoring. You can specify a program or shell script to run. The standard output from this program will be read by the faces program, and the appropriate faces displayed using the information provided. The format of this face information is given in the faces manual page. Included with this release, is the ability to include a face image with your mail message using an X-Face header line (plus continuation lines). Faces expects this line to be in a certain compressed format, and uncompresses it, and displays that image on-the-fly. There is also an option to automatically update the faces database with this new image. 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. This release contains graphical interfaces for NeWS, SunView, X11 and XView. Faces is based on the AT&T v8 face server called vismon, but is not derived from vismon sources. With the previous version came vismon compatibility. Note that that resulted in a few changes from the way faces v1.1 worked. See the manual pages for more details. 2. Getting started. ------------------- You need to specify one of the following four options to compile faces: 1/ make sunview - to make the SunView version. 2/ make news - to make the NeWS version. 3/ make x11 - to make the X11 version. 4/ make xview - to make the XView version. This should then be followed by a make install. You might need super-user permission to do this successfully. Create your face directory, hostname and username sub-directories and appropriate ikons/icons, machine and people tables, and you're set. The manual pages describe this in more detail. A small sample face directory and alias files have been included with this distribution. The Makefile compilation details are setup to default to compiling the SunView version of faces on a Sun4 running SunOS v4.1. Note that there are various compilation definitions that might need uncommenting if you are trying to compile and run it on any other machine or graphics environment or operating system. These are: BACKGROUND - alternate background icon pattern. DONTSHOWNO - don't show number of message on face image. DONTSHOWTIME - don't show timestamp on face image. DONTSHOWUSER - don't show username on face image. FACEDIR - alternate face database directory. FMONTYPE - default monitoring type. INVERT - inverse video. NEWSINCDIR - NeWS only: location of the NeWS #include files. NEWSLIBDIR - NeWS only: location of the NeWS libraries. NODOMAINS - uncomment if you don't want full host domain names. NOINDEX - uncomment if you don't have the index() function. PERIOD - alternate period in seconds before recheck. REVORDER - byte reversal for little-endian machines. SELTYPE - uncomment for old select(2) calls. SPOOLFILE - alternate default spoolfile to monitor. TTEXT - SunView only: uncomment on SunOS v3.x systems. UPDATE - alternate mail alias for faces database updating. X11INCDIR - X11 only: location of the X11 #include files. X11LIBDIR - X11 only: location of the X11 libraries. XVIEWINCDIR - XView only: location of the XView #include files. XVIEWLIBDIR - XView only: location of the XView libraries. See the Makefile for a detailed description of each of these definitions. If you need to make other changes in order to get faces to compile and run on your system, please let me know the details (see email address below), and I will try to include them into a future version. 3. Face formats. ---------------- Typically, 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 four ways: (a) NeWS .ps format, called face.ps. (b) Sun icon format, called sun.icon. (c) Blit ikon format, called 48x48x1. (d) X11 xbm format, called face.xbm 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. With this release, faces has support for reading a compressed face image included with the users mail message. This compressed face image consists of a line starting with "X-Face: " followed by compressed face data. This compressed data will be continued over subsequent lines. This X-Face image will have been created by running the compface program on a Blit ikon (48x48x1 format). The X-Face line and it's continuation records should be part of the mail header, but it is recognised that not many mailers can generate these records at the moment, so faces looks for the X-Face in both the mail header and message body. It is initially expected that the X-Face will become part of the users signature file. See the compface manual page for more details, on how to create you compressed image, and section 5 below, on how to get it included with your mail. 4. How do I get a face image icon? ---------------------------------- In order to get a real representation of your face, you will have had to have sat down in front of a video camera attached to some kind of scanning system. These facilities have been available at recent Usenix conferences in the US (the FaceSaver project), and at the last couple of Australian Unix User Group conferences. I expect EUUG has done something similar. This face image then needs to be converted into a 48x48x1 ikon. In the filters sub-directory of the faces distribution is a shell script that uses several utilities from the PBM toolkit to achieve this. The PBM (Portable BitMap) toolkit is an excellent set of programs to convert from one graphics format to another, and manipulate the resulting images. PBM was written by Jef Poskanzer, and is available from the sources archives on uunet, and other places. It was also distributed on the X11R4 contribution tape. When you have a 48x48x1 ikon, you then need to run the compface program on it. See the compface/compface.1 manual page for more details. 5. How to include your compressed face image with mail. ------------------------------------------------------- Faces is capable of recognising the compressed face image anywhere in the mail message (header or body), but the best place to put it is in the mail header (out of the way). It is suggested that each user store the compressed image (generated by compface) in a file called .face in their home directory. For example, my .face file contains: *7O.<19S{MCsaxxe=iCc*y5!i:>e,K40m^btp"<`~gNx5>o?eJMzUng=j]%KybY \/VaZ/3a4pD%#rGu7D4@L Note that there is no initial "X-Face:" and leading spaces have been removed from each line. To automatically include this into a header into an Elm mail message, just add the following line to your .elm/elmheaders file: X-Face: `cat $HOME/.face` In v7.1.2 (version 7.1 - patchlevel #2), the Mush mail program will look for the existence of a .face file (in the above format) in the users home directory, and generate a similar header. For users of other mailers, it is suggested that the X-Face: line[s] be added to your .signature file. Note that in this case, the initial line should have "X-Face: " prepended, and second and subsequent lines should start with at least one whitespace character. 6. Automatically updating the faces database. --------------------------------------------- The -U command line option to the faces program allows you to automatically update your faces database with these "on-the-fly" X-Face: images. Note, that this alias is not automatically installed for you as this might be a security risk on your system. If the -U option is given, then every time a new X-Face: image is found, a copy of the converted blit ikon format data is sent to a certain mail address. The subject line for this mail message is the name of the file that should be created (or overwritten) in the faces database. By default this mail alias is called "facemaker" but can be altered in the Makefile. You would then need to add the following alias to your /etc/aliases (usr/lib/aliases) file: facemaker: "|/usr/local/bin/face_update" This face_update program is a shell script, and is included with this distributions. For it to work correctly, the faces directory should be owned by 'daemon' (with read/write permissions), and readable by the rest of the world. 7. Acknowledgements. -------------------- Special thanks go to: James Ashton for the mail header face compression / uncompression code. Pat Lashley for fixing up the NeWS version; modifying it to use cps, and improving the quality of the NeWS code. Chris Maltby for the parsefrom routine used to extract the username and hostname from the "From " and "From:"lines. Chris also supplied a shell script to convert Usenix FaceSaver images to 48x48x1 ikons, and a rewrite of the faces manual page.. Hal Stern for the face_update shell script. Dan Heller and Bart Schaefer for adding support for .face files in their latest patch to v7.1 of the mush mailer. Guy Harris for the basis of the previous manual page. Dave Lemke for many excellent suggestions and help with the original version of the X11 code. Heather Rose for suggesting the animated NeWS faces. Andrew Nicholson for help with some of the trickier NeWS code in the previous version. Rob Pike for sending me a copy of the Pike/Presotto paper "Face the Nation", which I used to get vismon compatibility. Jonathan Bowen for suggesting the rusers monitoring addition. C.P. Lai for the Sun386i icon code plus numerous bug reports. Jim Knutson for improving the previous version of the hostname and username parsing. Dave Cohrs for several fixes and enhancements, the addition of X11 bitmap support, and generally sorting out most of the problems with the X11 version. Greg Dudek for an alternative version of "on-the-fly" X-Face imaging which hasn't been used. Also thanks to Jeremy Cook, John Machin, Neil Crellin, Mark Andrews, Sjoerd Mullender, Cameron Humphries, Rick Gunderson, Rich McAllister, Hakon Lie, John Fong, Chris Maltby, Darryl K. Ramm, Steve Piette, Tony Landells and Pat Lashley for various bug reports, fixes and suggestions for improvement. ---------------------------------------------------------------------------- Suggestions for further improvement would be most welcome, plus bug reports and comments. Rich Burridge, DOMAIN: richb@Aus.Sun.COM PHONE: +61 2 413 2666 ACSnet: richb@sunaus.sun.oz.au Funky_Stuff len=`wc -c < README` if [ $len != 13270 ] ; then echo error: README was $len bytes long, should have been 13270 fi fi # end of overwriting check if [ -f TODO ] then echo shar: will not over-write existing file TODO else echo shar: extracting 'TODO', 4511 characters cat > TODO <<'Funky_Stuff' 1/ From Lindsay F. Marshall The domain name munging (i..e a.b.c -> b.c -> c) doesnt seem to work at all, and of course its the wrong way round for the uk anyway. 2/ Alias file people.tab should be capable of understanding: sunaus/richb=sun/rburridge or some such format. 3/ From Ian Donaldson Is it possible to have the faces cleared automatically once the mail has been read? I'm clearing by clicking on the window at the moment. 4/ From Pat Lashley Have you given any thought to how to support multiple windowing systems at execution time? I am currently using the sun386i version of architecture independant /vol trees to make locally installed programs available transparently to both sun386i and sun3 users; but this does not address the possibility of a single user who sometimes uses SunView, sometimes NeWS, sometimes X, etc.. I have considered retaining the names sv_faces, x11_faces, etc., with a customized version of start_applic which would determine which windowing system is in use, and envoke the appropriate binary. The difficulty is in how to determine which system is in use. 5/ From: Chris Orgill, cho%cs.aber.ac.uk@uunet.uu.net How about allowing the Sunview version to use arbitrary size Sun icons ? 6/ From Lindsay F. Marshall There is a byte-order assumption somewhere that screws up any X bitmaps read in from a file - why dont you use the procedure provided by the system rather than writing your own?? That copes with the problems correctly. 7/ The NeWS version needs to be finished. Remaining problems are: (a) There are two warnings on compiling news.c, due to FILE operations being performed on PSFILE variables. (b) The new input functionality (click left mouse and Del) has to be added in. 8/ With the XView version, add a Properties pinup window which would allow you to change the various monitoring options on the fly. 9/ Add in audio capabilities. 10/ From Pat Lashley There is no reason that FaceSaver images couldn't be parsed by faces and sent to NeWS with the appropriate transformation matrix to squeeze it down to icon size. Let the NeWS PostScript interpreter do the bit compression/dithering. 11/ If an X-Face is found inside a piece of mail that has been forwarded inside another mail item, and the -U option is set, then it is possible to update the wrong face in the faces database. The only clean solution to this, is if faces only recognises X-Face lines in the mail header. 12/ From Pat Lashley An entry of the form `+domainname=community' in the machines.tab file to indicate that if a hostname is found without domain specifier, and it doesn't match any other machines.tab entry, and YP (oops, NIS) access to a server for `domain' is available, and the host matches a key in that domain, consider it part of the indicated community. `+=community' indicates that the current NIS domain should be used. This should probably be enabled by a compile-time option for those who don't run NIS. 13/ From Pat Lashley An option to display unknown users individually with the username, instead of clustered under a single `unknown' user. Really hot would be some way to specify this on a per-community basis... 14/ From Pat Lashley Multiple face directory hierarchies. I.e: `-f $HOME/facedir -f /import/group/facedir -f /import/global/facedir ...' The order of specification would indicate the search order. 15/ From Pat Lashley Accept SIGHUP as an indication that various internal databases should be updated from the files (i.e. machines.tab), and that the display should be immediatly updated to reflect current state instead of waiting for the polling period to end. 16/ From Pat Lashley Accept SIGALRM as an indication that the current polling period should be immediatly terminated, and the display updated. 17/ From Pat Lashley More internal comments and a general design document. 18/ Provide a template of what each of the independent graphics routine do, to aid porting to new graphics environments. 19/ Add an option to disable flashing and beeping when new mail arrives. 20/ Optimise. Funky_Stuff len=`wc -c < TODO` if [ $len != 4511 ] ; then echo error: TODO was $len bytes long, should have been 4511 fi fi # end of overwriting check if [ -f MANIFEST ] then echo shar: will not over-write existing file MANIFEST else echo shar: extracting 'MANIFEST', 2803 characters cat > MANIFEST <<'Funky_Stuff' This file tells you in which part of the faces distribution each file appeared. Filename. | Part # -------------------------------------------------- README | 4 MANIFEST | 4 FILES | 4 CHANGES | 4 TODO | 4 Makefile | 4 faces.1 | 5 face_update.1 | 5 face_update | 4 main.c | 1 get.c | 2 mon.c | 1 parsefrom.c | 2 rec.c | 1 news.c | 2 faces_cps.cps | 5 sunview.c | 2 xview.c | 3 x11.c | 3 extern.h | 3 faces.h | 3 patchlevel.h | 3 noface.icon | 5 nomail.icon | 5 noprint.icon | 5 nopaper.icon | 5 nousers.icon | 5 compface/Makefile | 7 compface/README | 7 compface/compface.1 | 7 compface/compface.3 | 7 compface/arith.c | 7 compface/compface.c | 7 compface/compress.c | 7 compface/file.c | 7 compface/gen.c | 7 compface/main.c | 7 compface/compface.h | 7 compface/data.h | 7 facedir/machine.tab | 6 facedir/people.tab | 6 facedir/misc./acsnet/48x48x1 | 6 facedir/misc./adm/48x48x1 | 6 facedir/misc./bin/48x48x1 | 6 facedir/misc./daemon/48x48x1 | 6 facedir/misc./mailer-daemon/48x48x1 | 6 facedir/misc./net/48x48x1 | 6 facedir/misc./root/48x48x1 | 6 facedir/misc./sys/48x48x1 | 6 facedir/misc./unknown/48x48x1 | 6 facedir/misc./uucp/48x48x1 | 6 facedir/sunaus/richb/48x48x1 | 6 filters/Makefile | 6 filters/fs2ikon | 6 filters/icon2ikon.c | 6 filters/ikon2icon.c | 6 filters/rs2icon.c | 6 Funky_Stuff len=`wc -c < MANIFEST` if [ $len != 2803 ] ; then echo error: MANIFEST was $len bytes long, should have been 2803 fi fi # end of overwriting check if [ -f FILES ] then echo shar: will not over-write existing file FILES else echo shar: extracting 'FILES', 3815 characters cat > FILES <<'Funky_Stuff' The file describes all the files that make up the faces distribution. Directory faces: the visual monitor for mail and other things. -------------------------------------------------------------- README - describes what faces is, and how to get started. MANIFEST - tells you what archive part each file was posted in. FILES - what you're reading now. CHANGES - change history. Will be updated with each new patch. TODO - suggested enhancements. Volunteers anyone? Makefile - used to build faces on Unix systems. faces.1 - the faces manual page (tbl + troff/nroff -man format). face_update - shell script to automatically update the faces database. face_update.1 - the face_update manual page (troff/nroff -man format) main.c - STANDARD SOURCE FILES: includes declarations and main(). get.c - routines to get information, objects, icons etc.. mon.c - monitoring routines for mail, print, users etc.. parsefrom.c - routine to extract user and host names from the From line. rec.c - various record manipulation routines. news.c - INDEPENDENT GRAPHICS FILES: NeWS C interface. faces_cps.cps - cps PostScript code used by the NeWS version. sunview.c - Sun SunView graphics routines. xview.c - X11 XView toolkit graphics routines. x11.c - X11 (Xlib) graphics routines. extern.h - External declarations. faces.h - Macro and constant definitions. patchlevel.h - Current patchlevel for this release of faces. noface.icon - STANDARD ICONS: no faces available. nomail.icon - currently no mail in spoolfile. noprint.icon - no jobs on print queue. nopaper.icon - no paper in printer. nousers.icon - no users on machine. Sub-directory compface: face ikon compression/uncompression. ------------------------------------------------------------ compface/Makefile - used to build the compface programs and library. compface/README - overview of the compface kit. compface/compface.1 - manual page for [un]compface programs. compface/compface.3 - manual page for [un]compface library routines. compface/arith.c - compface source files. compface/compface.c compface/compress.c compface/file.c compface/gen.c compface/main.c compface/compface.h - compface include files. compface/data.h Sub-directory facedir: sample face database and alias files. ------------------------------------------------------------ facedir/machine.tab - sample machine alias file. facedir/people.tab - sample people alias file. facedir/misc./acsnet/48x48x1 - SAMPLE ICONS: user acsnet facedir/misc./adm/48x48x1 adm facedir/misc./bin/48x48x1 bin facedir/misc./daemon/48x48x1 daemon facedir/misc./mailer-daemon/48x48x1 mailer-daemon facedir/misc./net/48x48x1 net facedir/misc./root/48x48x1 root facedir/misc./sys/48x48x1 sys facedir/misc./unknown/48x48x1 unknown facedir/misc./uucp/48x48x1 uucp facedir/sunaus/richb/48x48x1 richb@sunaus Sub-directory filters: sample filters to convert from one format to another. ---------------------------------------------------------------------------- filters/Makefile - used to build the filters. filters/fs2ikon - Usenix FaceSaver to blit ikon (48x48x1). filters/icon2ikon.c - Sun icon to blit ikon. filters/ikon2icon.c - Blit ikon to Sun icon. filters/rs2icon.c - Sun rasterfile to Sun icon (64x64 portion thereof). Funky_Stuff len=`wc -c < FILES` if [ $len != 3815 ] ; then echo error: FILES was $len bytes long, should have been 3815 fi fi # end of overwriting check if [ -f Makefile ] then echo shar: will not over-write existing file Makefile else echo shar: extracting 'Makefile', 10910 characters cat > Makefile <<'Funky_Stuff' # # Makefile for faces, an icon face server, plus associated software. # # Graphical versions for NeWS, SunView, X11 and XView. # # @(#)Makefile 1.15 90/06/29 # # 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 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 small changes needed when compiling faces on # different systems. These have been isolated here, and should be # uncommented and set accordingly, if needed. # #======================================================================== # Faces displays a background pattern in its' window. When the window # is not completely full, this gives the appearance of trying to blend # in with the background. By default, this is a root gray color, but you # can specify an alternate pattern to use here. # #BACKGROUND = -DBACKGROUND=\"\" #------------------------------------------------------------------------ # If you do not want to show the number of messages on the face icon, # then uncomment the next line. # #DONTSHOWNO = -DDONTSHOWNO #------------------------------------------------------------------------ # If you do not want to show the timestamp on the face icon, then # uncomment the next line. # #DONTSHOWTIME = -DDONTSHOWTIME #------------------------------------------------------------------------ # If you do not want to show the username on the face icon, then # uncomment the next line. # #DONTSHOWUSER = -DDONTSHOWUSER #------------------------------------------------------------------------ # By default, faces looks for the face images in /usr/local/faces. If # you wish to specify an alternate location, then these two lines should # be uncommented and set appropriately. # FACEDIR = /usr/local/faces CFACEDIR = -DFACEDIR=\"$(FACEDIR)\" #------------------------------------------------------------------------ # It is possible to determine what type of monitoring faces does at # run time with different command line options, but it is also possible # to define it at compile time. # # Monitor type (0 = mail (all), 1 = mail (new), 2 = print queue). # 3 = custom prog, 4 = users). # #FMONTYPE = -DFMONTYPE=1 #------------------------------------------------------------------------ # Some users on monochrome screens display everything in reverse video. # If you would like faces to do the same, then this line needs to be # uncommented. # #INVERT = -DINVERT #------------------------------------------------------------------------ # If you are compiling the NeWS version, then the following two lines # should be uncommented, and set appropriately. # #NEWSINCDIR = -I$(OPENWINHOME)/include #NEWSLIBDIR = -L$(OPENWINHOME)/lib #------------------------------------------------------------------------ # If you don't want faces to use full domain names for extracting face # icons, then you should uncomment the NODOMAINS definition below. # #NODOMAINS = -DNODOMAINS #------------------------------------------------------------------------ # By default, faces will check the "From " line first for username and # hostname, and then the "From:" line. # Not all machines have the index() string library function. If you # don't have this function then you should uncomment the NOINDEX # definition below. # #NOINDEX = -DNOINDEX #-------------------------------------------------------------------------- # By default, faces rechecks for new mail or print jobs every sixty # seconds. If you would like to specify an alternate period, then uncomment # the following line and set appropriately. # #PERIOD = -DPERIOD=30 #------------------------------------------------------------------------ # Faces is designed to work on a big-endian machine by default. If you # are compiling for a little-endian machine (such as the Sun 386i), then # you need to uncomment the following line. # #REVORDER = -DREVORDER #------------------------------------------------------------------------ # If you not running under a BSD4.3 derived system, the parameters # to the select call are different, and this definition should be # uncommented. You need to uncomment this for SunOS v3.x. # #SELTYPE = -DNO_43SELECT #------------------------------------------------------------------------ # If faces is setup to monitor mail, then the name of the default # spoolfile is /usr/spool/mail/username. An alternative spoolfile name # can be given by uncommenting the following line and setting # appropriately. # #SPOOLFILE = -DSPOOLFILE=\"/usr/richb/Mail/pending\" #------------------------------------------------------------------------ # If you are running SunOS v3.x, then pr_ttext doesn't exist, and # you must uncomment this definition. # #TTEXT = -DNO_PR_TTEXT #------------------------------------------------------------------------ # If the -U command line option is given to faces, then mail is sent to # a special mail alias. This alias is really a shell script, which will # take the given information, and try to update the faces database. By # default that alias is called "facemaker", but it is possible to give an # alternative alias here. This might be useful if a collection of machines # were remotely mounting the faces database from a file server. # #UPDATE = -DUPDATE=\"facemaker@fileserver\" #------------------------------------------------------------------------ # If you are compiling the X11 version and the X11 include and # library files are not in a standard place, then the following # two lines should be uncommented, and set appropriately. # #X11INCDIR = -I$(OPENWINHOME)/include #X11LIBDIR = -L$(OPENWINHOME)/lib #------------------------------------------------------------------------ # If you are compiling the XView version, then the following two lines # should be uncommented, and set appropriately. # #XVIEWINCDIR = -I$(OPENWINHOME)/include #XVIEWLIBDIR = -L$(OPENWINHOME)/lib # #======================================================================= # # Default locations where faces files will be installed. # You might wish to alter these values. # BINDIR = /usr/local/bin LIBDIR = /usr/local/lib MANDIR = /usr/man MANSECT = l # # Options for submakes # MAKEOPTS = $(MFLAGS) BINDIR=$(BINDIR) LIBDIR=$(LIBDIR) MANDIR=$(MANDIR) # # Compilation flags and standard macro definitions. # CDEFS = $(BACKGROUND) $(DONTSHOWNO) $(DONTSHOWTIME) \ $(DONTSHOWUSER) $(CFACEDIR) $(FMONTYPE) $(INVERT) \ $(NEWSINCDIR) $(NODOMAINS) $(NOINDEX) $(PERIOD) \ $(REVORDER) $(SELTYPE) $(SPOOLFILE) $(TTEXT) $(UPDATE) \ $(X11INCDIR) $(XVIEWINCDIR) CCOMP = -g CFLAGS = $(CCOMP) $(CDEFS) # #======================================================================= BINARIES = psfaces svfaces xfaces xvfaces CC = cc MAKE = make STDSRCS = get.c main.c mon.c parsefrom.c rec.c STDOBJS = get.o main.o mon.o parsefrom.o rec.o STDLIBS = compface/libcompface.a COMPFACE = compface FACES = facedir FILTERS = filters GSRCS = news.c sunview.c x11.c xview.c HDRS = extern.h faces.h patchlevel.h IMAGES = noface.icon nomail.icon noprint.icon nopaper.icon \ nousers.icon OTHERS = CHANGES README TODO MANIFEST FILES \ faces.1 face_update.1 faces_cps.cps Makefile face_update SFILES1 = mon.c main.c rec.c SFILES2 = get.c parsefrom.c news.c sunview.c SFILES3 = xview.c x11.c $(HDRS) SFILES4 = CHANGES README TODO MANIFEST FILES Makefile SFILES5 = faces.1 face_update.1 faces_cps.cps face_update $(IMAGES) SFILES6 = $(FACES) $(FILTERS) SFILES7 = $(COMPFACE) NEWSLIBS = $(NEWSLIBDIR) -lcps SVIEWLIBS = -lsuntool -lsunwindow -lpixrect X11LIBS = $(X11LIBDIR) -lX11 XVIEWLIBS = $(XVIEWLIBDIR) -lxview -lolgx -lX11 help: @echo @echo "You need to specify one of the following options:" @echo @echo " make sunview - to make the SunView version." @echo " make news - to make the NeWS version." @echo " make x11 - to make the X11 version." @echo " make xview - to make the XView version." @echo @echo "This should be followed by:" @echo @echo " make install" @echo " make clean" @echo all: $(BINARIES) news: $(STDOBJS) news.o faces_cps.h (cd compface; $(MAKE) $(MAKEOPTS)) (cd filters; $(MAKE) $(MAKEOPTS)) $(CC) -o psfaces $(CFLAGS) $(STDOBJS) news.o \ $(STDLIBS) $(NEWSLIBS) -cp psfaces faces sunview: $(STDOBJS) sunview.o (cd compface; $(MAKE) $(MAKEOPTS)) (cd filters; $(MAKE) $(MAKEOPTS)) $(CC) -o svfaces $(CFLAGS) $(STDOBJS) sunview.o \ $(STDLIBS) $(SVIEWLIBS) -cp svfaces faces x11: $(STDOBJS) x11.o (cd compface; $(MAKE) $(MAKEOPTS)) (cd filters; $(MAKE) $(MAKEOPTS)) $(CC) -o xfaces $(CFLAGS) $(STDOBJS) x11.o \ $(STDLIBS) $(X11LIBS) -cp xfaces faces xview: $(STDOBJS) xview.o (cd compface; $(MAKE) $(MAKEOPTS)) (cd filters; $(MAKE) $(MAKEOPTS)) $(CC) -o xvfaces $(CFLAGS) $(STDOBJS) xview.o \ $(STDLIBS) $(XVIEWLIBS) -cp xvfaces faces install: (cd compface; $(MAKE) $(MAKEOPTS) install) (cd filters; $(MAKE) $(MAKEOPTS) install) install -s -m 751 faces $(BINDIR) install -c -m 755 face_update $(BINDIR) install -c -m 644 machine.tab $(FACEDIR) install -c -m 644 people.tab $(FACEDIR) install -c -m 644 faces.1 \ $(MANDIR)/man$(MANSECT)/faces.$(MANSECT) install -c -m 644 face_update.1 \ $(MANDIR)/man$(MANSECT)face_update.$(MANSECT) clean: (cd compface; $(MAKE) $(MAKEOPTS) clean) (cd filters; $(MAKE) $(MAKEOPTS) clean) rm -f *.o Part* *~ $(BINARIES) faces core lint: lint-news lint-sunview lint-x11 lint-xview lint-news:; lint $(CDEFS) $(STDSRCS) news.c $(NEWSLIBS) lint-sunview:; lint $(CDEFS) $(STDSRCS) sunview.c $(SVIEWLIBS) lint-x11:; lint $(CDEFS) $(STDSRCS) x11.c lint-xview:; lint $(CDEFS) $(STDSRCS) xview.c shar:; shar.script $(SFILES1) > Part1 shar.script $(SFILES2) > Part2 shar.script $(SFILES3) > Part3 shar.script $(SFILES4) > Part4 shar.script $(SFILES5) > Part5 shar.script $(SFILES6) > Part6 shar.script $(SFILES7) > Part7 create: SCCS -sccs create $(STDSRCS) $(GSRCS) $(HDRS) $(IMAGES) $(OTHERS) SCCS: mkdir SCCS chmod 755 SCCS faces_cps.h: faces_cps.cps cps $< get.o: get.c faces.h extern.h patchlevel.h main.o: main.c faces.h $(IMAGES) mon.o: mon.c faces.h extern.h news.o: news.c faces.h extern.h faces_cps.h rec.o: rec.c faces.h extern.h sunview.o: sunview.c faces.h extern.h x11.o: x11.c faces.h extern.h xview.o: xview.c faces.h extern.h Funky_Stuff len=`wc -c < Makefile` if [ $len != 10910 ] ; then echo error: Makefile was $len bytes long, should have been 10910 fi fi # end of overwriting check