From: mwp@iconix.oz.au (Michael Paddon)
Subject: Patches for MH 6.7.2 on SGI IRIX 4.0.5
Organization: Iconix Pty Ltd (World Headquarters)
Date: Thu, 17 Dec 1992 05:20:08 GMT

For those who may be having trouble...

I recently upgraded our MH installation to 6.7.2. As expected, MH
didn't compile (or work) quite right out of the box. These patches
bring the code up to a state where everything works right.

Current configuration:

-------------------------------------------------------------------------------
version: MH 6.7.2 #13[UCI] (krakatoa) of Tue Dec 15 17:56:56 EST 1992
options: [ATTVIBUG] [ATZ] [DUMB] [FOLDPROT='"0700"'] [IRIX] [LOCKF]
         [MHRC] [MORE='"/usr/bsd/more"'] [MSGPROT='"0600"'] [NTOHLSWAP]
         [OVERHEAD] [POP] [POP2] [POPSERVICE='"pop-3"'] [RPOP] [SENDMTS]
         [SMTP] [SOCKETS] [SPRINTFTYPE=int] [SYS5] [SYS5DIR]
         [TYPESIG='void'] [TZNAME] [UK]
-------------------------------------------------------------------------------

Our MH file looks like this:

-------------------------------------------------------------------------------
#
# MH config for Iconix (SGI IRIX 4.0.5F)
#

bin			/local/bin
etc			/local/lib/mh
mail		/usr/mail
mandir		/local/man
chown		/bin/chown
remove		/bin/rm -f
mts			sendmail/smtp
pop			on
options		ATTVIBUG ATZ DUMB FOLDPROT='"0700"' IRIX LOCKF MHRC MORE='"/usr/bsd/more"' MSGPROT='"0600"' NTOHLSWAP OVERHEAD POP2 POPSERVICE='"pop-3"' RPOP SOCKETS SYS5 SYS5DIR TYPESIG='void' TZNAME UK
cc			cc
ccoptions	-cckr -signed -O
curses		-lcurses
ldoptions	-O
ldoptlibs	-lsun -lc_s
sprintf		int
ranlib		off
-------------------------------------------------------------------------------

Also you'll need to apply these patches:

-------------------------------------------------------------------------------
*** ./conf/makefiles/support/pop.dist	Tue Dec 15 14:38:04 1992
--- ./conf/makefiles/support/pop	Tue Dec 15 17:32:59 1992
***************
*** 195,200 ****
--- 195,201 ----
  
  unclean:;	-rm -f z* _* :* core eddep makedep MAKEPOP
  
+ .c:;
  
  ##############################################################################
  #	Dependencies
*** ./conf/makefiles/support/bboards.dist	Tue Dec 15 14:42:12 1992
--- ./conf/makefiles/support/bboards	Tue Dec 15 17:32:50 1992
***************
*** 260,265 ****
--- 260,266 ----
  
  unclean:;	-rm -f z* _* :* core eddep makedep MAKEBB
  
+ .c:;
  
  ##############################################################################
  #	Dependencies
*** ./conf/makefiles/zotnet/mf.dist	Tue Dec 15 14:46:01 1992
--- ./conf/makefiles/zotnet/mf	Tue Dec 15 17:33:26 1992
***************
*** 172,177 ****
--- 172,178 ----
  
  unclean:;	-rm -f z* _* :* core eddep makedep MAKEMF
  
+ .c:;
  
  ##############################################################################
  #	Dependencies
*** ./conf/makefiles/uip.dist	Tue Dec 15 14:43:37 1992
--- ./conf/makefiles/uip	Tue Dec 15 17:32:12 1992
***************
*** 1270,1275 ****
--- 1270,1276 ----
  #
  #    If other includes are read, modify this rule to reflect this
  
+ .c:;
  
  ##############################################################################
  #	Dependencies
*** ./h/local.h.dist	Tue Dec  8 11:22:32 1992
--- ./h/local.h	Tue Dec  8 11:34:02 1992
***************
*** 8,14 ****
--- 8,18 ----
  
  #ifndef	BSD42
  #ifndef NDIR
+ #ifdef IRIX
+ #include <dirent.h>
+ #else
  #include <dir.h>
+ #endif IRIX
  #else	NDIR
  #include <ndir.h>
  #endif  NDIR
*** ./h/mh.h.dist	Tue Dec  8 12:56:29 1992
--- ./h/mh.h	Tue Dec  8 12:56:50 1992
***************
*** 344,350 ****
  
  /* miscellaneous */
  
! #if !defined(BSD42) && !defined(hpux) && !defined(ncr)
  #define	rename(f1,f2)	(link (f1, f2) != NOTOK ? unlink (f1) : NOTOK)
  #endif	not BSD42
  
--- 344,350 ----
  
  /* miscellaneous */
  
! #if !defined(BSD42) && !defined(hpux) && !defined(ncr) && !defined(IRIX)
  #define	rename(f1,f2)	(link (f1, f2) != NOTOK ? unlink (f1) : NOTOK)
  #endif	not BSD42
  
*** ./sbr/makedir.c.dist	Tue Dec  8 11:00:10 1992
--- ./sbr/makedir.c	Tue Dec  8 11:20:09 1992
***************
*** 19,24 ****
--- 19,29 ----
  #include <sys/param.h>
  #include <sys/file.h>
  #endif BDS42
+ #ifdef IRIX
+ #include <unistd.h>
+ #include <errno.h>
+ #include <sys/param.h>
+ #endif
  #ifdef	SYS5DIR
  #include <sys/types.h>
  #include <sys/stat.h>
*** ./support/pop/syslog.c.dist	Tue Dec 15 14:22:43 1992
--- ./support/pop/syslog.c	Tue Dec 15 14:22:59 1992
***************
*** 1,4 ****
! #if !defined (BSD43) && !defined(hpux)
  #ifndef lint
  static char SccsId[] =	"@(#)syslog.c	4.1 (Berkeley) 5/27/83";
  #endif
--- 1,4 ----
! #if !defined (BSD43) && !defined(hpux) && !defined(IRIX)
  #ifndef lint
  static char SccsId[] =	"@(#)syslog.c	4.1 (Berkeley) 5/27/83";
  #endif
*** ./support/pop/popd.c.dist	Wed Dec 16 13:16:21 1992
--- ./support/pop/popd.c	Wed Dec 16 13:23:59 1992
***************
*** 163,171 ****
      if (bind (sd, (struct sockaddr *) isock, sizeof *isock) == NOTOK)
  	padios ("socket", "unable to bind");
  
! #ifdef	SIGCHLD
      (void) signal (SIGCHLD, chldser);
! #endif	SIGCHLD
      (void) listen (sd, SOMAXCONN);
  #ifdef	FAST
      popinit ();
--- 163,174 ----
      if (bind (sd, (struct sockaddr *) isock, sizeof *isock) == NOTOK)
  	padios ("socket", "unable to bind");
  
! #if defined (SIGCHLD) && !defined (IRIX)
      (void) signal (SIGCHLD, chldser);
! #endif defined (SIGCHLD) && !defined (IRIX)
! #ifdef IRIX
! 	(void) signal (SIGCLD,SIG_IGN);
! #endif
      (void) listen (sd, SOMAXCONN);
  #ifdef	FAST
      popinit ();
***************
*** 185,193 ****
  	switch (fork ()) {
  	    case OK: 
  		(void) close (sd);
! #ifdef	SIGCHLD
  		(void) signal (SIGCHLD, SIG_DFL);
! #endif	SIGCHLD
  		server (fd, osock);
  		_exit (0);
  
--- 188,196 ----
  	switch (fork ()) {
  	    case OK: 
  		(void) close (sd);
! #if defined (SIGCHLD) && !defined (IRIX)
  		(void) signal (SIGCHLD, SIG_DFL);
! #endif defined (SIGCHLD) && !defined (IRIX)
  		server (fd, osock);
  		_exit (0);
  
***************
*** 331,337 ****
  
  /* ARGSUSED */
  
! #ifdef	SIGCHLD
  
  static int chldser (sig, code, sc)
  int	sig;
--- 334,340 ----
  
  /* ARGSUSED */
  
! #if defined(SIGCHLD) && !defined (IRIX)
  
  static int chldser (sig, code, sc)
  int	sig;
***************
*** 344,350 ****
  	continue;
  }
  
! #endif	SIGCHLD
  
  /*  */
  
--- 347,353 ----
  	continue;
  }
  
! #endif defined(SIGCHLD) && !defined (IRIX)
  
  /*  */

-------------------------------------------------------------------------------

Good luck! I'm happy to answer questions and I'd appreciate hearing of
any problem areas I missed, but I must point out that I don't support these
patches.

                                     Michael

-------------------------------------------------------------------------------

        II
       IIII
  IIIII    IIIII    Michael Paddon
  IIIIII  IIIIII
  IIIIIIIIIIIIII    Iconix Pty Ltd           Email: mwp@iconix.oz.au
  IIII     IIIII    851 Dandenong Road,
  IIIII    IIIII    East Malvern,
  IIIII    IIIII    Victoria, 3145,          Telephone: +61 3 571 4244
  IIIII    IIIII    Australia.               Facsimile: +61 3 571 5346
  IIIII    IIIII
  IIIII    IIIII    You totally killed us, you evil metal dickweeds!
  III        III               --- Bill and Ted's Bogus Journey
  IIIIIIIIIIIIII