Subject: Patch #7 for face v1.5.

From: richb@stard (Rich Burridge)
Date: Thu, 24 Oct 1991 14:28:18 -0500

This is patch #7 for v1.5 of faces. It consists of a set of diffs to apply
to the faces source. See the installation instructions below on how to apply
this patch.

This patch mainly just includes diffs and patches that various people have
sent me. The changes from Rex Di Bona for the way faces does faces directory
lookups will be in the next version.

--------

For people with anonymous ftp, I've put a copy of the latest faces.tar.Z and
 faces.patch7.Z in pub/faces/incoming on iuvax.cs.indiana.edu. Steve can you
move them to the appropriate places please?

This and previous patches are also available from the automatic mail archive
server using the usually method.

My Sun internal anon ftp server is down at the momment. Sun people should
Iftp to iuvax (see above).

---------

Changes made in this patch:

v1.5 - patchlevel 7 - 24th October 1991.

       - Adjustments needed to get the X11 and XView versions working under
         Suns' SVR4 O/S. For future reference, the following definitions
         had to be uncommented (and set appropriately) in the Makefile, to
         get the X11 version of faces working:

         HASPOLL, NOGETHOSTNAME, NOINDEX, NOSELECT, SVR4LIBS, SYSV,
         X11INCDIR and X11LIBDIR.

       - From Jim R. Oldroyd <[email-masked]>
         Various changes to get faces working on two SysV machines:

         * Added in a new Makefile definition TOPIX, which should be
           uncommented if compiling faces on Sequoia's fault-tolerant,
           multi-processor operating system.

         * Definition of which compiler and compiler flags not being
           passed to makes in subdirectories.
 
         * MAXPATHLEN used, but not defined.  (This is in none of the headers
           in our /usr/include/*.h /usr/include/sys/*.h
 
       - From Jim R. Oldroyd <[email-masked]>
         From Stephen Martin <[email-masked]>
         We noticed that if you had mail, and read it and deleted it
         all with ELM, the faces would not revert to "No mail".
 
         It turns out that this is due to the fact that ELM doesn't
         delete the spool file - it leaves it empty.  But, ELM also
         resets the mail spool file's utime when it exits.  You were
         testing the st_mtime and doing nothing if there was no change.

         Our quick fix was to change the test to whether or not the
         size has changed.  (I know, you could delete mail, and get new,
         and the size doesn't change, but this is unlikely). A better fix
         would be neater...

       - From Steve Kinzler <[email-masked]>
         Patch for faces/filters/fs2ikon.  "pbmpaste" was eliminated in the
         latest release of the pbmplus filters.  This new version should be
         backwards compatible.

--------

How to install this patch.

You should use Larry Wall's patch program to apply these diffs. Assuming the
patch file is called faces.patch7, then you should do the following:

cd faces_src                 # directory where your faces source files are.
patch -p0 <faces.patch7
make x11                     # Or xview, sunview or news.
make install                 # You might have to be super-user.
          
------CUT HERE------faces.patch7------CUT HERE------

------- patchlevel.h -------
Prereq: 6
*** /tmp/da000xT	Thu Jan  1 10:00:00 1970
--- patchlevel.h	Thu Oct 24 10:44:08 1991
***************
*** 14,17 ****
   *  reported to me then an attempt will be made to fix them.
   */
  
! #define  PATCHLEVEL  6
--- 14,17 ----
   *  reported to me then an attempt will be made to fix them.
   */
  
! #define  PATCHLEVEL  7

------- main.c -------
*** /tmp/da000xd	Thu Jan  1 10:00:00 1970
--- main.c	Thu Oct 17 14:17:11 1991
***************
*** 344,354 ****
  int *boolval ;
  {
    char *val, tempstr[MAXLINE] ;
!   int n ;
  
    if ((val = get_resource(rtype)) == NULL) return(0) ;
    STRCPY(tempstr, val) ;
!   for (n = 0; n < strlen(tempstr); n++)
      if (isupper(tempstr[n])) tempstr[n] = tolower(tempstr[n]) ;
    if (EQUAL(tempstr, "true")) *boolval = TRUE ;
    else                        *boolval = FALSE ;
--- 344,355 ----
  int *boolval ;
  {
    char *val, tempstr[MAXLINE] ;
!   int len, n ;
  
    if ((val = get_resource(rtype)) == NULL) return(0) ;
    STRCPY(tempstr, val) ;
!   len = strlen(tempstr) ;
!   for (n = 0; n < len; n++)
      if (isupper(tempstr[n])) tempstr[n] = tolower(tempstr[n]) ;
    if (EQUAL(tempstr, "true")) *boolval = TRUE ;
    else                        *boolval = FALSE ;

------- mon.c -------
*** /tmp/da000xg	Thu Jan  1 10:00:00 1970
--- mon.c	Thu Oct 24 11:47:51 1991
***************
*** 23,40 ****
  #endif /* SYSV32 || hpux */
  #include <sys/types.h>
  #include <sys/stat.h>
! #if !defined(mips) || defined(ultrix)
  #include <sys/time.h>
  #else
  #ifdef SYSTYPE_BSD43
  #include <sys/time.h>
  #else
  #include <bsd/sys/time.h>
! #endif
! #endif
  #include <sys/file.h>
  #ifndef NOUTIME
  #include <utime.h>
  #endif /*!NOUTIME*/
  
  #include "faces.h"
--- 23,51 ----
  #endif /* SYSV32 || hpux */
  #include <sys/types.h>
  #include <sys/stat.h>
! #if ( !defined(mips) && !defined(TOPIX) ) || defined(ultrix)
  #include <sys/time.h>
  #else
  #ifdef SYSTYPE_BSD43
  #include <sys/time.h>
  #else
+ #ifndef TOPIX
  #include <bsd/sys/time.h>
! #else
! #include <sys/bsd_time.h>
! #endif /*TOPIX*/
! #endif /*SYSTYPE_BSD43*/
! #endif /*( !defined(mips) && !defined(TOPIX) ) || defined(ultrix)*/
  #include <sys/file.h>
  #ifndef NOUTIME
+ #ifndef TOPIX
  #include <utime.h>
+ #else
+ struct utimbuf {
+   time_t actime ;
+   time_t modtime ;
+ } ;
+ #endif /*TOPIX*/
  #endif /*!NOUTIME*/
  
  #include "faces.h"
***************
*** 330,335 ****
--- 341,347 ----
  #ifdef RAND
    int ctrla = 0 ;
  #endif /*RAND*/
+   static int first = 1 ;    /* First time through. */
  
    column = row = 0 ;        /* Start in top left corner of pixrect. */
    mboxshrunk = 0 ;
***************
*** 348,362 ****
      }
  
  /*  See if there is any work to do. If the file hasn't changed, then no need
!  *  to do anything but exit.
   */
  
!   if (buf.st_mtime == lastmtime)
      {
        show_display(FALSE) ;
        return ;
      }
  
    lastmtime = buf.st_mtime ;
  
    if (buf.st_size > lastsize ||
--- 360,376 ----
      }
  
  /*  See if there is any work to do. If the file hasn't changed, then no need
!  *  to do anything but exit. A size check is now done, because the Elm mailer
!  *  resets the files' mtime.
   */
  
!   if (!first && buf.st_size == lastsize)
      {
        show_display(FALSE) ;
        return ;
      }
  
+   first = 0 ;
    lastmtime = buf.st_mtime ;
  
    if (buf.st_size > lastsize ||

------- rec.c -------
*** /tmp/da000xi	Thu Jan  1 10:00:00 1970
--- rec.c	Thu Oct 17 14:22:46 1991
***************
*** 137,143 ****
    if (x_face)
      {
        temp->faceimage = (unsigned char *) Malloc(strlen(face_buf)+1) ;
!       STRCPY(temp->faceimage, face_buf) ;
      }
    else temp->faceimage = NULL ;
    STRCPY(temp->ts, timestamp) ;
--- 137,143 ----
    if (x_face)
      {
        temp->faceimage = (unsigned char *) Malloc(strlen(face_buf)+1) ;
!       STRCPY((char *) temp->faceimage, face_buf) ;
      }
    else temp->faceimage = NULL ;
    STRCPY(temp->ts, timestamp) ;

------- faces.h -------
*** /tmp/da000xk	Thu Jan  1 10:00:00 1970
--- faces.h	Thu Oct 24 11:12:19 1991
***************
*** 55,61 ****
  #define  FPUTS         (void) fputs
  #define  FREE          (void) free
  #define  FSEEK         (void) fseek
- #define  GETHOSTNAME   (void) gethostname
  #define  GET_SUN_ICON  (void) get_sun_icon
  #define  IOCTL         (void) ioctl
  #define  PCLOSE        (void) pclose
--- 55,60 ----
***************
*** 138,143 ****
--- 137,151 ----
  #define  CLEARMEM(arg, len)  memset(arg, '\0', len)
  #endif /*USE_BZERO*/
  
+ #ifdef   NOGETHOSTNAME
+ #include <sys/utsname.h>
+ #include <sys/systeminfo.h>
+ 
+ #define  GETHOSTNAME(name, len)  sysinfo(SI_HOSTNAME, name, len)
+ #else
+ #define  GETHOSTNAME(name, len)  (void) gethostname(name, len)
+ #endif /*NOGETHOSTNAME*/
+ 
  #define  EQUAL(str,val)  !strncmp(str,val,strlen(val))
  #define  ICONHEIGHT      64   /* Default height of individual face icons. */
  #define  ICONWIDTH       64   /* Default width of individual face icons. */
***************
*** 170,175 ****
--- 178,187 ----
  #define  index        strchr
  #define  rindex       strrchr
  #endif /*NOINDEX*/
+ 
+ #ifdef NOMAXPATHLEN
+ #define  MAXPATHLEN   1024
+ #endif /*NOMAXPATHLEN*/
  
  #ifdef NOUTIME
  #include <sys/types.h>

------- README -------
*** /tmp/da000xm	Thu Jan  1 10:00:00 1970
--- README	Thu Oct 24 12:02:44 1991
***************
*** 1,7 ****
  
  README for faces, the visual list monitor.
  
! Version 1.5.4 - July 1991.
  
  Permission is given to distribute these sources, as long as the
  copyright messages are not removed, and no monies are exchanged. 
--- 1,7 ----
  
  README for faces, the visual list monitor.
  
! Version 1.5.7 - October 1991.
  
  Permission is given to distribute these sources, as long as the
  copyright messages are not removed, and no monies are exchanged. 
***************
*** 155,161 ****
--- 155,163 ----
  NEWSLIBDIR    - NeWS only: location of the NeWS libraries.
  NISLOOKUP     - uncomment to use Sun NIS (formerly YP) to look for hosts.
  NODOMAINS     - uncomment if you don't want full host domain names.
+ NOGETHOSTNAME - uncomment if you don't have the gethostname() call.
  NOINDEX       - uncomment if you don't have the index() function.
+ NOMAXPATHLEN  - uncomment if your system doesn't define MAXPATHLEN.
  NOSELECT      - uncomment if your machine doesn't have the select() call.
  NOUTIME       - uncomment if your system doesn't have a utime() library call.
  PERIOD        - alternate period in seconds before recheck.
***************
*** 167,173 ****
--- 169,177 ----
  SGILIBS       - uncomment if you are using a Silicon Graphics machine.
  SPOOLDIR      - alternate directory for spoolfiles.
  SPOOLFILE     - alternate default spoolfile to monitor.
+ SVR4LIBS      - uncomment and set if building under SVR4.
  SYSV          - uncomment if you are running Unix System V.
+ TOPIX         - uncomment if building under Sequoia's operating system.
  TTEXT         - SunView only: uncomment on SunOS v3.x systems.
  UPDATE        - alternate mail alias for faces database updating.
  USE_BZERO     - uncomment if your system has bzero instead of memset.
***************
*** 435,443 ****
--- 439,451 ----
    John Mackin,
    Chris Maltby,
    Lindsay F. Marshall,
+   Stephen Martin,
    John B. Melby,
    Steven M. Miller,
+   Kate Morris,
    Sjoerd Mullender, 
+   Dan Nydick,
+   Jim R. Oldroyd,
    Paolo Petta,
    Howard Pelling,
    Bruno Pillard,

------- x11.c -------
*** /tmp/da000xo	Thu Jan  1 10:00:00 1970
--- x11.c	Thu Oct 24 11:24:04 1991
***************
*** 18,24 ****
   
  #include <stdio.h>
  #include <ctype.h>
! #if !defined(mips) || defined(ultrix)
  #include <sys/types.h>
  #include <sys/time.h>
  #include <sys/param.h>
--- 18,24 ----
   
  #include <stdio.h>
  #include <ctype.h>
! #if ( !defined(mips) && !defined(TOPIX) ) || defined(ultrix)
  #include <sys/types.h>
  #include <sys/time.h>
  #include <sys/param.h>
***************
*** 27,36 ****
  #include <sys/types.h>
  #include <sys/time.h>
  #else
  #include <bsd/sys/types.h>
  #include <bsd/sys/time.h>
! #endif
! #endif
  #include "faces.h"
  #include "extern.h"
  
--- 27,40 ----
  #include <sys/types.h>
  #include <sys/time.h>
  #else
+ #ifndef TOPIX
  #include <bsd/sys/types.h>
  #include <bsd/sys/time.h>
! #else
! #include <sys/bsd_time.h>
! #endif /*TOPIX*/
! #endif /*SYSTYPE_BSD43*/
! #endif /*( !defined(mips) && !defined(TOPIX) ) || defined(ultrix)*/
  #include "faces.h"
  #include "extern.h"

------- TODO -------
*** /tmp/da000xq	Thu Jan  1 10:00:00 1970
--- TODO	Thu Oct 24 11:52:58 1991
***************
*** 351,354 ****
--- 351,391 ----
  *   Integrate the compface and xface directories into one set of sources that
      do both jobs.
  
+ *   From Jim R. Oldroyd <[email-masked]>
+     An option to get faces to read a single email message containing the
+     X-Face on the stdin, and to produce the face-update email, containing the
+     48x48x1 on the stdout. (I.e., like -U, but output not mailed.)
+     This will allow users to install a separate update scheme, even if the
+     administration won't allow a `facemaker' alias!
+ 
+ *   From Rex Monty Di Bona <[email-masked]>
+     When we looked at the faces program, we decided that the directory
+     searching was bogus. We already had a complete hierarchy from those
+     good old V8 days that was addressed as
+     domain/domain/domain/domain/user/48x48x1. We also changed the lookup
+     search to be user then community then facepath,
+     ie...
+ 
+     for (iu = 0; iuser[iu] != NULL; iu++)
+         for (ic = 0; icomm[ic] != NULL; ic++)
+           for (id = 0; facepath[id] != NULL; id++)
+           {  
+ 
+     which is what we believe is a closer reflection of how a 'normal person'
+     would look things up. This reduces the directory search at each level,
+     as we now have smaller directories.
+ 
+     It also, we believe, makes it easier to add new users/domains, and to
+     have links (oz is a link to au/oz for historical reasons :-)
+ 
+     We also search 'backwards' in the hierarchy, so the more exact match
+     is found first.
+ 
+     For those concerned with efficiency, the directories that are used most
+     often, ie, the local machine, would be kept in 'cache' by the machine.
+     Since the directories are now smaller, the directory search should be
+     performed faster too.
+ 
+     [Will implement in a future version of faces - richb].
+ 
  *   Optimise.

------- Makefile.dist -------
*** /tmp/da000xs	Thu Jan  1 10:00:00 1970
--- Makefile.dist	Thu Oct 24 11:17:35 1991
***************
*** 130,135 ****
--- 130,140 ----
  #
  #NODOMAINS	= -DNODOMAINS
  #------------------------------------------------------------------------
+ #  If your system doesn't have the gethostname() system call, then this
+ #  might be a useful alternative. This is needed for SVR4 machines.
+ #
+ #NOGETHOSTNAME  = -DNOGETHOSTNAME
+ #------------------------------------------------------------------------
  #  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
***************
*** 138,143 ****
--- 143,154 ----
  #
  #NOINDEX         = -DNOINDEX
  #--------------------------------------------------------------------------
+ #  It appears that not every Unix system defines MAXPATHLEN, which indicates
+ #  the maximum length of a Unix pathname. If your system doesn't, then
+ #  you need to uncomment this definition.
+ #
+ #NOMAXPATHLEN    = -DNOMAXPATHLEN
+ #--------------------------------------------------------------------------
  #  Not every version of Unix (in particular System V derivitives) has the
  #  select() system call. If your machine doesn't have this call, then you
  #  need to uncomment the following definition.
***************
*** 197,202 ****
--- 208,219 ----
  #
  #SPOOLFILE       = -DSPOOLFILE=\"/usr/richb/Mail/pending\"
  #--------------------------------------------------------------------------
+ #  If you are trying to build faces on an SVR4 machine, then you should
+ #  uncomment the following entry, and set SVR4LIBS to the list of SVR4
+ #  specific libraries needed to link reve.
+ #
+ #SVR4LIBS     = -lnsl -lsocket -lgen
+ #--------------------------------------------------------------------------
  #  If you are running on a Unix System V machine, then you should uncomment
  #  the next definition.
  #
***************
*** 207,212 ****
--- 224,233 ----
  #
  #TTEXT          = -DNO_PR_TTEXT
  #------------------------------------------------------------------------
+ #  Uncomment if building faces under Sequoia's operating system.
+ #
+ #TOPIX          = -DTOPIX
+ #--------------------------------------------------------------------------
  #  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
***************
*** 260,266 ****
  #  Options for submakes
  #
  MAKEOPTS	= $(MFLAGS) BINDIR=$(BINDIR) LIBDIR=$(LIBDIR) \
! 			    MANDIR=$(MANDIR) NOINDEX=$(NOINDEX)
  
  #
  # Override DEBUG on the command line as `DEBUG=-DDEBUG' to enable various
--- 281,288 ----
  #  Options for submakes
  #
  MAKEOPTS	= $(MFLAGS) BINDIR=$(BINDIR) LIBDIR=$(LIBDIR) \
! 			    MANDIR=$(MANDIR) CC=$(CC) \
! 			    NOINDEX=$(NOINDEX) SYSV=$(SYSV)
  
  #
  # Override DEBUG on the command line as `DEBUG=-DDEBUG' to enable various
***************
*** 275,283 ****
  		  $(DNSLOOKUP) $(DONTSHOWNO) $(DONTSHOWTIME) $(DONTSHOWUSER) \
  		  $(CFACEDIR) $(FMONTYPE) $(HASPOLL) $(INVERT) \
  		  $(NAMEUNKNOWN) $(NEWSINCDIR) $(NISLOOKUP) $(NODOMAINS) \
! 		  $(NOINDEX) $(NOSELECT) $(NOUTIME) $(PERIOD) $(PLP) $(RAND) \
! 		  $(REVORDER) $(SELTYPE) $(SGIDEF) $(SPOOLDIR) $(SPOOLFILE) \
! 		  $(SYSV) $(TTEXT) $(UPDATE) $(USE_BZERO) $(USE_GETWD) \
  		  $(X11R3) $(X11INCDIR) $(XVIEWINCDIR) $(DEBUG)
  CCOMP		= -O
  CFLAGS		= $(CCOMP) $(CDEFS)
--- 297,306 ----
  		  $(DNSLOOKUP) $(DONTSHOWNO) $(DONTSHOWTIME) $(DONTSHOWUSER) \
  		  $(CFACEDIR) $(FMONTYPE) $(HASPOLL) $(INVERT) \
  		  $(NAMEUNKNOWN) $(NEWSINCDIR) $(NISLOOKUP) $(NODOMAINS) \
! 		  $(NOGETHOSTNAME) $(NOINDEX) $(NOMAXPATHLEN) $(NOSELECT) \
! 		  $(NOUTIME) $(PERIOD) $(PLP) $(RAND) $(REVORDER) \
! 		  $(SELTYPE) $(SGIDEF) $(SPOOLDIR) $(SPOOLFILE) $(SYSV) \
! 		  $(TTEXT) $(TOPIX) $(UPDATE) $(USE_BZERO) $(USE_GETWD) \
  		  $(X11R3) $(X11INCDIR) $(XVIEWINCDIR) $(DEBUG)
  CCOMP		= -O
  CFLAGS		= $(CCOMP) $(CDEFS)
***************
*** 371,377 ****
  		(cd compface; $(MAKE) $(MAKEOPTS))
  		(cd filters; $(MAKE) $(MAKEOPTS))
  		$(CC) -o xfaces $(CFLAGS) $(STDOBJS) x11.o \
! 						$(STDLIBS) $(X11LIBS)
  		-cp xfaces faces
  
  xview:		$(STDOBJS) xview.o
--- 394,400 ----
  		(cd compface; $(MAKE) $(MAKEOPTS))
  		(cd filters; $(MAKE) $(MAKEOPTS))
  		$(CC) -o xfaces $(CFLAGS) $(STDOBJS) x11.o \
! 					$(STDLIBS) $(X11LIBS) $(SVR4LIBS)
  		-cp xfaces faces
  
  xview:		$(STDOBJS) xview.o
***************
*** 378,384 ****
  		(cd compface; $(MAKE) $(MAKEOPTS))
  		(cd filters; $(MAKE) $(MAKEOPTS))
  		$(CC) -o xvfaces $(CFLAGS) $(STDOBJS) xview.o \
! 						$(STDLIBS) $(XVIEWLIBS)
  		-cp xvfaces faces
  
  tables:
--- 401,407 ----
  		(cd compface; $(MAKE) $(MAKEOPTS))
  		(cd filters; $(MAKE) $(MAKEOPTS))
  		$(CC) -o xvfaces $(CFLAGS) $(STDOBJS) xview.o \
! 					$(STDLIBS) $(XVIEWLIBS) $(SVR4LIBS)
  		-cp xvfaces faces
  
  tables:

------- CHANGES -------
*** /tmp/da000xu	Thu Jan  1 10:00:00 1970
--- CHANGES	Thu Oct 24 12:00:50 1991
***************
*** 15,20 ****
--- 15,64 ----
  Faces change history.
  =====================
  
+ v1.5 - patchlevel 7 - 24th October 1991.
+ 
+        - Adjustments needed to get the X11 and XView versions working under
+          Suns' SVR4 O/S. For future reference, the following definitions
+          had to be uncommented (and set appropriately) in the Makefile, to
+          get the X11 version of faces working:
+ 
+          HASPOLL, NOGETHOSTNAME, NOINDEX, NOSELECT, SVR4LIBS, SYSV,
+          X11INCDIR and X11LIBDIR.
+ 
+        - From Jim R. Oldroyd <[email-masked]>
+          Various changes to get faces working on two SysV machines:
+ 
+          * Added in a new Makefile definition TOPIX, which should be
+            uncommented if compiling faces on Sequoia's fault-tolerant,
+            multi-processor operating system.
+ 
+          * Definition of which compiler and compiler flags not being
+            passed to makes in subdirectories.
+ 
+          * MAXPATHLEN used, but not defined.  (This is in none of the headers
+            in our /usr/include/*.h /usr/include/sys/*.h
+ 
+        - From Jim R. Oldroyd <[email-masked]>
+          From Stephen Martin <[email-masked]>
+          We noticed that if you had mail, and read it and deleted it
+          all with ELM, the faces would not revert to "No mail".
+ 
+          It turns out that this is due to the fact that ELM doesn't
+          delete the spool file - it leaves it empty.  But, ELM also
+          resets the mail spool file's utime when it exits.  You were
+          testing the st_mtime and doing nothing if there was no change.
+ 
+          Our quick fix was to change the test to whether or not the
+          size has changed.  (I know, you could delete mail, and get new,
+          and the size doesn't change, but this is unlikely). A better fix
+          would be neater...
+ 
+        - From Steve Kinzler <[email-masked]>
+          Patch for faces/filters/fs2ikon.  "pbmpaste" was eliminated in the
+          latest release of the pbmplus filters.  This new version should be
+          backwards compatible.
+ 
+ 
  v1.5 - patchlevel 6 - 11th September 1991.
  
         - Added a new subdirectory to the faces distribution called xface.

------- fs2ikon -------
*** /tmp/da000yQ	Thu Jan  1 10:00:00 1970
--- filters/fs2ikon	Thu Oct 24 11:46:55 1991
***************
*** 30,36 ****
  	set `sed -n -e 2p -e 2q $file.pbm`
  	yo=`expr '(' 48 - $2 ')' / 2`
  	pbmmake 48 48 |
! 	    pbmpaste -replace $file.pbm 0 $yo |
  	    pbmtoicon 
      else
  	ppmscale -height 48 $file.pgm | ppmtopgm | pgmtopbm > $file.pbm
--- 30,36 ----
  	set `sed -n -e 2p -e 2q $file.pbm`
  	yo=`expr '(' 48 - $2 ')' / 2`
  	pbmmake 48 48 |
! 	    pnmpaste $file.pbm 0 $yo |
  	    pbmtoicon 
      else
  	ppmscale -height 48 $file.pgm | ppmtopgm | pgmtopbm > $file.pbm
***************
*** 37,43 ****
  	set `sed -n -e 2p -e 2q $file.pbm`
  	xo=`expr '(' 48 - $1 ')' / 2`
  	pbmmake 48 48 |
! 	    pbmpaste -replace $file.pbm $xo 0 |
  	    pbmtoicon
      fi |
  	sed -e 1,2d -e '20s/$/,/' |
--- 37,43 ----
  	set `sed -n -e 2p -e 2q $file.pbm`
  	xo=`expr '(' 48 - $1 ')' / 2`
  	pbmmake 48 48 |
! 	    pnmpaste $file.pbm $xo 0 |
  	    pbmtoicon
      fi |
  	sed -e 1,2d -e '20s/$/,/' |

------- Makefile -------
*** /tmp/da000yS	Thu Jan  1 10:00:00 1970
--- filters/Makefile	Fri Oct 18 04:43:31 1991
***************
*** 12,18 ****
  #  to the comments or the code of this program, but if reported
  #  to me then an attempt will be made to fix them.
  
! # BINDIR and NOINDEX are expected to be overridden by the calling Makefile
  
  #--------------------------------------------------------------------------
  BINDIR		= /usr/local/bin
--- 12,19 ----
  #  to the comments or the code of this program, but if reported
  #  to me then an attempt will be made to fix them.
  
! # BINDIR, NOINDEX and SYSV are expected to be overridden by the calling
! # Makefile
  
  #--------------------------------------------------------------------------
  BINDIR		= /usr/local/bin
***************
*** 23,33 ****
  #
  #NOINDEX	= -DNOINDEX
  #--------------------------------------------------------------------------
  
  BINARIES	= icon2ikon ikon2icon rs2icon
  
  CC		= cc
! CDEFS		= $(NOINDEX)
  CCOMP		= -g
  CFLAGS		= $(CCOMP) $(CDEFS)
  
--- 24,39 ----
  #
  #NOINDEX	= -DNOINDEX
  #--------------------------------------------------------------------------
+ #  If you are running on a Unix System V machine, then you should uncomment
+ #  the next definition.
+ #
+ #SYSV           = -DSYSV32
+ #--------------------------------------------------------------------------
  
  BINARIES	= icon2ikon ikon2icon rs2icon
  
  CC		= cc
! CDEFS		= $(NOINDEX) $(SYSV)
  CCOMP		= -g
  CFLAGS		= $(CCOMP) $(CDEFS)

------- icon2ikon.c -------
*** /tmp/da000yU	Thu Jan  1 10:00:00 1970
--- filters/icon2ikon.c	Fri Oct 18 04:37:57 1991
***************
*** 17,23 ****
   */
  
  #include <stdio.h>
! #ifdef SYSV32 || hpux
  #include <string.h>
  #else
  #include <strings.h>
--- 17,23 ----
   */
  
  #include <stdio.h>
! #if defined(SYSV32) || defined(hpux)
  #include <string.h>
  #else
  #include <strings.h>

------- Makefile -------
*** /tmp/da000yj	Thu Jan  1 10:00:00 1970
--- compface/Makefile	Fri Oct 18 04:44:07 1991
***************
*** 12,17 ****
--- 12,24 ----
  #  either to the comments or the code of this program, but if reported
  #  to me, then an attempt will be made to fix them.
  
+ # SYSV is expected to be overridden by the calling Makefile.
+ #--------------------------------------------------------------------------
+ #  If you are running on a Unix System V machine, then you should uncomment
+ #  the next definition.
+ #
+ #SYSV           = -DSYSV32
+ #--------------------------------------------------------------------------
  # BINDIR, LIBDIR, and MANDIR are expected to be overridden by the
  # calling Makefile
  
***************
*** 34,40 ****
  OTHERS		= README $(NAME).1 $(NAME).3 Makefile
  
  CC		= cc
! CFLAGS		= -g
  
  all:		$(NAME) $(UNNAME)
  
--- 41,49 ----
  OTHERS		= README $(NAME).1 $(NAME).3 Makefile
  
  CC		= cc
! CDEFS		= $(SYSV)
! CCOMP		= -g
! CFLAGS		= $(CDEFS) $(CCOMP)
  
  all:		$(NAME) $(UNNAME)
  
***************
*** 46,52 ****
  
  $(LIBNAME) :	$(OBJECTS)
  		ar rc $(LIBNAME) $(OBJECTS)
! 		ranlib $(LIBNAME)
  
  lint :
  		lint -abchx $(SOURCES)
--- 55,61 ----
  
  $(LIBNAME) :	$(OBJECTS)
  		ar rc $(LIBNAME) $(OBJECTS)
! 		-ranlib $(LIBNAME)
  
  lint :
  		lint -abchx $(SOURCES)

------- cmain.c -------
*** /tmp/da000yn	Thu Jan  1 10:00:00 1970
--- compface/cmain.c	Thu Oct 17 15:09:20 1991
***************
*** 37,44 ****
  extern char *sys_errlist[];
  
  extern void exit P((int)) ;
- extern char *strcat P((char *, char *)) ;
- extern char *strcpy P((char *, char *)) ;
  
  #define ERR ((errno < sys_nerr) ? sys_errlist[errno] : "")
  #define INITERR(s) {(void)strcpy(fbuf, cmdname); (void)strcat(fbuf, ": ");\
--- 37,42 ----

------- uncmain.c -------
*** /tmp/da000yp	Thu Jan  1 10:00:00 1970
--- compface/uncmain.c	Fri Oct 18 04:31:48 1991
***************
*** 37,44 ****
  extern char *sys_errlist[];
  
  extern void exit P((int)) ;
- extern char *strcat P((char *, char *)) ;
- extern char *strcpy P(()) ;
  
  #define ERR ((errno < sys_nerr) ? sys_errlist[errno] : "")
  #define INITERR(s) {(void)strcpy(fbuf, cmdname); (void)strcat(fbuf, ": ");\
--- 37,42 ----