*** ../netlib/pvm3.2.2/conf/KSR1.def	Wed Sep 22 16:10:01 1993
--- conf/KSR1.def	Mon Oct  4 15:08:09 1993
***************
*** 1,6 ****
  ARCHCFLAGS	=	-DNOWAIT3
  ARCHDLIB	=
  ARCHDOBJ	=
! ARCHLIB	=
  HASRANLIB	=	f
  PVM_ARCH	=	KSR1
--- 1,6 ----
  ARCHCFLAGS	=	-DNOWAIT3
  ARCHDLIB	=
  ARCHDOBJ	=
! ARCHLIB	=	-lrpc
  HASRANLIB	=	f
  PVM_ARCH	=	KSR1
*** ../netlib/pvm3.2.2/patches/Contents	Thu Sep 23 16:59:10 1993
--- patches/Contents	Tue Oct 12 10:58:47 1993
***************
*** 1,4 ****
--- 1,33 ----
  
+ patch #3
+ version:
+     3.2.2 -> 3.2.3
+     interoperable with v 3.2.[012].
+ files:
+     patch  conf/KSR1.def
+     patch  patches/Contents
+     patch  src/Makefile.aimk
+     patch  src/global.h
+     patch  src/lpvm.c
+     patch  src/lpvmpack.c
+     patch  src/patchlevel.h
+     patch  src/pvmcruft.c
+     patch  src/pvmd.c
+     patch  src/pvmlog.c
+     patch  src/startup.c
+     patch  src/tdpro.h
+ what:
+     . fixed bug that caused pvmd to hang in locloutput() trying to write
+       to a task (especially on HPPA machines).
+     . fixed bug in pvmd the caused d-d protocol to hang after 64kth packet.
+     . added -lrpc to KSR1 ARCHLIB defs.
+     . declared mctl() static in lpvm.c to avoid conflict with libc func.
+     . added a "fix" for solaris machines (sendto() can return ECHILD) -
+       the pvmd was bailing.
+     . fixed pvm_packf("%f") - pack a float by value.
+     . added new compile option in src, -DSHAREDTMP, to be used when a
+       cluster of machines shares a /tmp directory.  rele. to HPPA (SGI?).
+ 
  patch #2
  version:
      3.2.1 -> 3.2.2
*** ../netlib/pvm3.2.2/src/Makefile.aimk	Wed Sep 22 16:10:05 1993
--- src/Makefile.aimk	Mon Oct  4 16:24:57 1993
***************
*** 21,26 ****
--- 21,27 ----
  #  RSHCOMMAND      for rsh command other than "/usr/ucb/rsh"
  #  RSHNPLL         for number of parallel rsh startups (default is 8)
  #  RSHTIMEOUT      for rsh timeout other than default (60 sec)
+ #  SHAREDTMP       if /tmp is shared between machines (yecch)
  #  SOCKADHASLEN    if struct sockaddr has an sa_len field
  #  SYSVBFUNC       if system uses memcpy() instead of bcopy(), etc.
  #  SYSVSIGNAL      if system has sysV signal handling
***************
*** 121,268 ****
  # .h deps
  archcode.o: $(SDIR)/protoglarp.h
  archcode.o: $(SDIR)/pvmalloc.h
! ddpro.o: $(SDIR)/global.h
! ddpro.o: $(SDIR)/fromlib.h
! ddpro.o: $(SDIR)/tdpro.h
  ddpro.o: $(SDIR)/ddpro.h
! ddpro.o: $(SDIR)/protoglarp.h
! ddpro.o: $(SDIR)/pvmalloc.h
  ddpro.o: $(SDIR)/host.h
- ddpro.o: $(SDIR)/mesg.h
- ddpro.o: $(SDIR)/waitc.h
- ddpro.o: $(SDIR)/task.h
  ddpro.o: $(SDIR)/listmac.h
  ddpro.o: $(SDIR)/pvmmimd.h
! ddpro.o: $(SDIR)/bfunc.h
! host.o: $(SDIR)/protoglarp.h
  host.o: $(SDIR)/global.h
- host.o: $(SDIR)/pvmalloc.h
  host.o: $(SDIR)/host.h
  host.o: $(SDIR)/mesg.h
  host.o: $(SDIR)/pkt.h
! host.o: $(SDIR)/ddpro.h
! host.o: $(SDIR)/bfunc.h
  imalloc.o: $(SDIR)/bfunc.h
  lpvm.o: $(SDIR)/../include/pvm3.h
! lpvm.o: $(SDIR)/global.h
! lpvm.o: $(SDIR)/tdpro.h
  lpvm.o: $(SDIR)/ddpro.h
  lpvm.o: $(SDIR)/pvmalloc.h
  lpvm.o: $(SDIR)/pvmfrag.h
  lpvm.o: $(SDIR)/pvmumbuf.h
! lpvm.o: $(SDIR)/listmac.h
  lpvm.o: $(SDIR)/tvdefs.h
- lpvm.o: $(SDIR)/bfunc.h
  lpvmgen.o: $(SDIR)/../include/pvm3.h
  lpvmgen.o: $(SDIR)/global.h
  lpvmgen.o: $(SDIR)/pvmalloc.h
- lpvmgen.o: $(SDIR)/tdpro.h
  lpvmgen.o: $(SDIR)/pvmumbuf.h
! lpvmgen.o: $(SDIR)/listmac.h
! lpvmgen.o: $(SDIR)/bfunc.h
  lpvmmimd.o: $(SDIR)/../include/pvm3.h
! lpvmmimd.o: $(SDIR)/global.h
! lpvmmimd.o: $(SDIR)/tdpro.h
  lpvmmimd.o: $(SDIR)/ddpro.h
  lpvmmimd.o: $(SDIR)/pvmalloc.h
  lpvmmimd.o: $(SDIR)/pvmfrag.h
- lpvmmimd.o: $(SDIR)/pvmumbuf.h
- lpvmmimd.o: $(SDIR)/listmac.h
  lpvmmimd.o: $(SDIR)/pvmmimd.h
! lpvmmimd.o: $(SDIR)/bfunc.h
  lpvmpack.o: $(SDIR)/../include/pvm3.h
! lpvmpack.o: $(SDIR)/global.h
! lpvmpack.o: $(SDIR)/tdpro.h
  lpvmpack.o: $(SDIR)/ddpro.h
  lpvmpack.o: $(SDIR)/pvmfrag.h
  lpvmpack.o: $(SDIR)/pvmumbuf.h
! lpvmpack.o: $(SDIR)/listmac.h
! lpvmpack.o: $(SDIR)/pvmmimd.h
! lpvmpack.o: $(SDIR)/bfunc.h
  mesg.o: $(SDIR)/protoglarp.h
  mesg.o: $(SDIR)/pvmalloc.h
  mesg.o: $(SDIR)/pvmfrag.h
! mesg.o: $(SDIR)/mesg.h
! mesg.o: $(SDIR)/listmac.h
  nmdclass.o: $(SDIR)/protoglarp.h
  nmdclass.o: $(SDIR)/pvmalloc.h
! nmdclass.o: $(SDIR)/listmac.h
  pkt.o: $(SDIR)/protoglarp.h
  pkt.o: $(SDIR)/pvmalloc.h
- pkt.o: $(SDIR)/pkt.h
  pkt.o: $(SDIR)/pvmdabuf.h
- pkt.o: $(SDIR)/listmac.h
- pkt.o: $(SDIR)/bfunc.h
  pvmalloc.o: $(SDIR)/protoglarp.h
  pvmalloc.o: $(SDIR)/pvmalloc.h
! pvmd.o: $(SDIR)/global.h
! pvmd.o: $(SDIR)/fromlib.h
! pvmd.o: $(SDIR)/tdpro.h
  pvmd.o: $(SDIR)/ddpro.h
  pvmd.o: $(SDIR)/protoglarp.h
  pvmd.o: $(SDIR)/pvmalloc.h
- pvmd.o: $(SDIR)/host.h
  pvmd.o: $(SDIR)/pvmdabuf.h
  pvmd.o: $(SDIR)/pvmfrag.h
! pvmd.o: $(SDIR)/mesg.h
! pvmd.o: $(SDIR)/pkt.h
  pvmd.o: $(SDIR)/task.h
! pvmd.o: $(SDIR)/waitc.h
! pvmd.o: $(SDIR)/listmac.h
  pvmd.o: $(SDIR)/tvdefs.h
! pvmd.o: $(SDIR)/pvmmimd.h
! pvmd.o: $(SDIR)/bfunc.h
  pvmdabuf.o: $(SDIR)/protoglarp.h
  pvmdabuf.o: $(SDIR)/pvmalloc.h
  pvmfrag.o: $(SDIR)/protoglarp.h
  pvmfrag.o: $(SDIR)/pvmalloc.h
- pvmfrag.o: $(SDIR)/pvmfrag.h
- pvmfrag.o: $(SDIR)/listmac.h
  pvmfrag.o: $(SDIR)/pvmdabuf.h
  pvmumbuf.o: $(SDIR)/../include/pvm3.h
  pvmumbuf.o: $(SDIR)/pvmalloc.h
  pvmumbuf.o: $(SDIR)/pvmfrag.h
  pvmumbuf.o: $(SDIR)/pvmumbuf.h
! pvmumbuf.o: $(SDIR)/listmac.h
! pvmumbuf.o: $(SDIR)/bfunc.h
! startup.o: $(SDIR)/global.h
! startup.o: $(SDIR)/fromlib.h
  startup.o: $(SDIR)/ddpro.h
! startup.o: $(SDIR)/tdpro.h
! startup.o: $(SDIR)/protoglarp.h
! startup.o: $(SDIR)/pvmalloc.h
! startup.o: $(SDIR)/mesg.h
  startup.o: $(SDIR)/host.h
  startup.o: $(SDIR)/listmac.h
  startup.o: $(SDIR)/tvdefs.h
! startup.o: $(SDIR)/bfunc.h
! task.o: $(SDIR)/global.h
  task.o: $(SDIR)/ddpro.h
! task.o: $(SDIR)/protoglarp.h
  task.o: $(SDIR)/mesg.h
  task.o: $(SDIR)/pkt.h
  task.o: $(SDIR)/task.h
  task.o: $(SDIR)/waitc.h
! task.o: $(SDIR)/pvmalloc.h
! task.o: $(SDIR)/listmac.h
! task.o: $(SDIR)/bfunc.h
! tdpro.o: $(SDIR)/global.h
! tdpro.o: $(SDIR)/fromlib.h
! tdpro.o: $(SDIR)/tdpro.h
  tdpro.o: $(SDIR)/ddpro.h
  tdpro.o: $(SDIR)/protoglarp.h
  tdpro.o: $(SDIR)/pvmalloc.h
- tdpro.o: $(SDIR)/mesg.h
  tdpro.o: $(SDIR)/task.h
! tdpro.o: $(SDIR)/host.h
  tdpro.o: $(SDIR)/waitc.h
! tdpro.o: $(SDIR)/listmac.h
! tdpro.o: $(SDIR)/bfunc.h
  waitc.o: $(SDIR)/global.h
  waitc.o: $(SDIR)/protoglarp.h
  waitc.o: $(SDIR)/pvmalloc.h
  waitc.o: $(SDIR)/waitc.h
- waitc.o: $(SDIR)/mesg.h
- waitc.o: $(SDIR)/host.h
- waitc.o: $(SDIR)/listmac.h
- waitc.o: $(SDIR)/bfunc.h
--- 122,271 ----
  # .h deps
  archcode.o: $(SDIR)/protoglarp.h
  archcode.o: $(SDIR)/pvmalloc.h
! ddpro.o: $(SDIR)/bfunc.h
  ddpro.o: $(SDIR)/ddpro.h
! ddpro.o: $(SDIR)/fromlib.h
! ddpro.o: $(SDIR)/global.h
  ddpro.o: $(SDIR)/host.h
  ddpro.o: $(SDIR)/listmac.h
+ ddpro.o: $(SDIR)/mesg.h
+ ddpro.o: $(SDIR)/protoglarp.h
+ ddpro.o: $(SDIR)/pvmalloc.h
  ddpro.o: $(SDIR)/pvmmimd.h
! ddpro.o: $(SDIR)/task.h
! ddpro.o: $(SDIR)/tdpro.h
! ddpro.o: $(SDIR)/waitc.h
! host.o: $(SDIR)/bfunc.h
! host.o: $(SDIR)/ddpro.h
  host.o: $(SDIR)/global.h
  host.o: $(SDIR)/host.h
  host.o: $(SDIR)/mesg.h
  host.o: $(SDIR)/pkt.h
! host.o: $(SDIR)/protoglarp.h
! host.o: $(SDIR)/pvmalloc.h
  imalloc.o: $(SDIR)/bfunc.h
  lpvm.o: $(SDIR)/../include/pvm3.h
! lpvm.o: $(SDIR)/bfunc.h
  lpvm.o: $(SDIR)/ddpro.h
+ lpvm.o: $(SDIR)/global.h
+ lpvm.o: $(SDIR)/listmac.h
  lpvm.o: $(SDIR)/pvmalloc.h
  lpvm.o: $(SDIR)/pvmfrag.h
  lpvm.o: $(SDIR)/pvmumbuf.h
! lpvm.o: $(SDIR)/tdpro.h
  lpvm.o: $(SDIR)/tvdefs.h
  lpvmgen.o: $(SDIR)/../include/pvm3.h
+ lpvmgen.o: $(SDIR)/bfunc.h
  lpvmgen.o: $(SDIR)/global.h
+ lpvmgen.o: $(SDIR)/listmac.h
  lpvmgen.o: $(SDIR)/pvmalloc.h
  lpvmgen.o: $(SDIR)/pvmumbuf.h
! lpvmgen.o: $(SDIR)/tdpro.h
  lpvmmimd.o: $(SDIR)/../include/pvm3.h
! lpvmmimd.o: $(SDIR)/bfunc.h
  lpvmmimd.o: $(SDIR)/ddpro.h
+ lpvmmimd.o: $(SDIR)/global.h
+ lpvmmimd.o: $(SDIR)/listmac.h
  lpvmmimd.o: $(SDIR)/pvmalloc.h
  lpvmmimd.o: $(SDIR)/pvmfrag.h
  lpvmmimd.o: $(SDIR)/pvmmimd.h
! lpvmmimd.o: $(SDIR)/pvmumbuf.h
! lpvmmimd.o: $(SDIR)/tdpro.h
  lpvmpack.o: $(SDIR)/../include/pvm3.h
! lpvmpack.o: $(SDIR)/bfunc.h
  lpvmpack.o: $(SDIR)/ddpro.h
+ lpvmpack.o: $(SDIR)/global.h
+ lpvmpack.o: $(SDIR)/listmac.h
  lpvmpack.o: $(SDIR)/pvmfrag.h
  lpvmpack.o: $(SDIR)/pvmumbuf.h
! lpvmpack.o: $(SDIR)/tdpro.h
! mesg.o: $(SDIR)/listmac.h
! mesg.o: $(SDIR)/mesg.h
  mesg.o: $(SDIR)/protoglarp.h
  mesg.o: $(SDIR)/pvmalloc.h
  mesg.o: $(SDIR)/pvmfrag.h
! nmdclass.o: $(SDIR)/listmac.h
  nmdclass.o: $(SDIR)/protoglarp.h
  nmdclass.o: $(SDIR)/pvmalloc.h
! pkt.o: $(SDIR)/bfunc.h
! pkt.o: $(SDIR)/listmac.h
! pkt.o: $(SDIR)/pkt.h
  pkt.o: $(SDIR)/protoglarp.h
  pkt.o: $(SDIR)/pvmalloc.h
  pkt.o: $(SDIR)/pvmdabuf.h
  pvmalloc.o: $(SDIR)/protoglarp.h
  pvmalloc.o: $(SDIR)/pvmalloc.h
! pvmcruft.o: $(SDIR)/global.h
! pvmcruft.o: $(SDIR)/protoglarp.h
! pvmcruft.o: $(SDIR)/pvmalloc.h
! pvmcruft.o: $(SDIR)/tdpro.h
! pvmd.o: $(SDIR)/bfunc.h
  pvmd.o: $(SDIR)/ddpro.h
+ pvmd.o: $(SDIR)/fromlib.h
+ pvmd.o: $(SDIR)/global.h
+ pvmd.o: $(SDIR)/host.h
+ pvmd.o: $(SDIR)/listmac.h
+ pvmd.o: $(SDIR)/mesg.h
+ pvmd.o: $(SDIR)/pkt.h
  pvmd.o: $(SDIR)/protoglarp.h
  pvmd.o: $(SDIR)/pvmalloc.h
  pvmd.o: $(SDIR)/pvmdabuf.h
  pvmd.o: $(SDIR)/pvmfrag.h
! pvmd.o: $(SDIR)/pvmmimd.h
  pvmd.o: $(SDIR)/task.h
! pvmd.o: $(SDIR)/tdpro.h
  pvmd.o: $(SDIR)/tvdefs.h
! pvmd.o: $(SDIR)/waitc.h
  pvmdabuf.o: $(SDIR)/protoglarp.h
  pvmdabuf.o: $(SDIR)/pvmalloc.h
+ pvmfrag.o: $(SDIR)/listmac.h
  pvmfrag.o: $(SDIR)/protoglarp.h
  pvmfrag.o: $(SDIR)/pvmalloc.h
  pvmfrag.o: $(SDIR)/pvmdabuf.h
+ pvmfrag.o: $(SDIR)/pvmfrag.h
  pvmumbuf.o: $(SDIR)/../include/pvm3.h
+ pvmumbuf.o: $(SDIR)/bfunc.h
+ pvmumbuf.o: $(SDIR)/listmac.h
  pvmumbuf.o: $(SDIR)/pvmalloc.h
  pvmumbuf.o: $(SDIR)/pvmfrag.h
  pvmumbuf.o: $(SDIR)/pvmumbuf.h
! startup.o: $(SDIR)/bfunc.h
  startup.o: $(SDIR)/ddpro.h
! startup.o: $(SDIR)/fromlib.h
! startup.o: $(SDIR)/global.h
  startup.o: $(SDIR)/host.h
  startup.o: $(SDIR)/listmac.h
+ startup.o: $(SDIR)/mesg.h
+ startup.o: $(SDIR)/protoglarp.h
+ startup.o: $(SDIR)/pvmalloc.h
  startup.o: $(SDIR)/tvdefs.h
! task.o: $(SDIR)/bfunc.h
  task.o: $(SDIR)/ddpro.h
! task.o: $(SDIR)/global.h
! task.o: $(SDIR)/listmac.h
  task.o: $(SDIR)/mesg.h
  task.o: $(SDIR)/pkt.h
+ task.o: $(SDIR)/protoglarp.h
+ task.o: $(SDIR)/pvmalloc.h
  task.o: $(SDIR)/task.h
  task.o: $(SDIR)/waitc.h
! tdpro.o: $(SDIR)/bfunc.h
  tdpro.o: $(SDIR)/ddpro.h
+ tdpro.o: $(SDIR)/fromlib.h
+ tdpro.o: $(SDIR)/global.h
+ tdpro.o: $(SDIR)/host.h
+ tdpro.o: $(SDIR)/listmac.h
+ tdpro.o: $(SDIR)/mesg.h
  tdpro.o: $(SDIR)/protoglarp.h
  tdpro.o: $(SDIR)/pvmalloc.h
  tdpro.o: $(SDIR)/task.h
! tdpro.o: $(SDIR)/tdpro.h
  tdpro.o: $(SDIR)/waitc.h
! waitc.o: $(SDIR)/bfunc.h
  waitc.o: $(SDIR)/global.h
+ waitc.o: $(SDIR)/host.h
+ waitc.o: $(SDIR)/listmac.h
+ waitc.o: $(SDIR)/mesg.h
  waitc.o: $(SDIR)/protoglarp.h
  waitc.o: $(SDIR)/pvmalloc.h
  waitc.o: $(SDIR)/waitc.h
*** ../netlib/pvm3.2.2/src/global.h	Thu Sep 23 16:59:10 1993
--- src/global.h	Tue Oct 12 10:44:35 1993
***************
*** 32,37 ****
--- 32,40 ----
   *	Generic includes.
   *
  $Log: global.h,v $
+  * Revision 1.4  1993/10/12  14:44:31  manchek
+  * version change
+  *
   * Revision 1.3  1993/09/23  20:53:50  manchek
   * version change
   *
***************
*** 46,52 ****
  
  /* release version */
  
! #define	PVM_VER	"3.2.2"
  
  /* UDPMAXLEN should be set to the largest UDP message length
     your system can handle. */
--- 49,55 ----
  
  /* release version */
  
! #define	PVM_VER	"3.2.3"
  
  /* UDPMAXLEN should be set to the largest UDP message length
     your system can handle. */
*** ../netlib/pvm3.2.2/src/lpvm.c	Wed Sep 22 16:10:06 1993
--- src/lpvm.c	Mon Oct  4 16:30:24 1993
***************
*** 32,37 ****
--- 32,44 ----
   *	Libpvm core for unix environment.
   *
  $Log: lpvm.c,v $
+  * Revision 1.4  1993/10/04  20:29:05  manchek
+  * mksocks() and pvm_start_pvmd() now use pvmdsockfile(), not TDSOCKNAME.
+  * made pvm_useruid global for pvmcruft.c
+  *
+  * Revision 1.3  1993/10/04  19:10:22  manchek
+  * mctl() conflicts with mctl(2) - declare static for now
+  *
   * Revision 1.2  1993/09/16  21:36:20  manchek
   * pvm_start_pvmd() was freeing the return string from pvmgetpvmd()
   *
***************
*** 118,123 ****
--- 125,131 ----
  extern char *inadport_decimal();
  extern char *inadport_hex();
  char *pvmgetpvmd();
+ char *pvmdsockfile();
  
  
  /***************
***************
*** 189,194 ****
--- 197,203 ----
  int pvmoutcod = 0;
  int pvmtrctid = 0;						/* trace dst and code */
  int pvmtrccod = 0;
+ int pvm_useruid = -1;					/* user's unix uid */
  
  
  /***************
***************
*** 196,207 ****
   **           **
   ***************/
  
! static char rcsid[] = "$Id: lpvm.c,v 1.2 1993/09/16 21:36:20 manchek Exp $";
  static int debugmask = 0;				/* which debugging info */
  static int mxfersingle = 1;				/* mxfer returns after single frag */
  static char pvmtxt[512];				/* scratch for error log */
  static struct sockaddr_in pvmourinet;	/* our host ip addr */
- static int pvm_useruid = -1;			/* user's unix uid */
  static int pvmrouteopt = PvmAllowDirect;/* task-task routing style */
  static struct ttpcb *ttlist = 0;		/* dll of connected tasks */
  static struct ttpcb *topvmd = 0;		/* default route (to pvmd) */
--- 205,215 ----
   **           **
   ***************/
  
! static char rcsid[] = "$Id: lpvm.c,v 1.4 1993/10/04 20:29:05 manchek Exp $";
  static int debugmask = 0;				/* which debugging info */
  static int mxfersingle = 1;				/* mxfer returns after single frag */
  static char pvmtxt[512];				/* scratch for error log */
  static struct sockaddr_in pvmourinet;	/* our host ip addr */
  static int pvmrouteopt = PvmAllowDirect;/* task-task routing style */
  static struct ttpcb *ttlist = 0;		/* dll of connected tasks */
  static struct ttpcb *topvmd = 0;		/* default route (to pvmd) */
***************
*** 638,643 ****
--- 646,652 ----
  *	is received.
  */
  
+ static int
  mctl(up)
  	struct umbuf *up;
  {
***************
*** 1325,1331 ****
  /*	mksocs()
  *
  *	Make socket for talking to pvmd.  Connect to address advertized
! *	in TDSOCKNAME file.
  *
  *	Returns 0 if okay, else error code.
  */
--- 1334,1340 ----
  /*	mksocs()
  *
  *	Make socket for talking to pvmd.  Connect to address advertized
! *	in pvmd socket-name file.
  *
  *	Returns 0 if okay, else error code.
  */
***************
*** 1348,1358 ****
  	*/
  
  	if (!(p = getenv("PVMSOCK"))) {
! 		sprintf(buf, TDSOCKNAME, pvm_useruid);
! 		if ((d = open(buf, O_RDONLY, 0)) == -1) {
! 			pvmlogperror(buf);
  			goto bail;
  		}
  
  		try = 3;
  		do {
--- 1357,1370 ----
  	*/
  
  	if (!(p = getenv("PVMSOCK"))) {
! 		if (!(p = pvmdsockfile())) {
! 			pvmlogerror("mksocs() pvmdsockfile() failed\n");
  			goto bail;
  		}
+ 		if ((d = open(p, O_RDONLY, 0)) == -1) {
+ 			pvmlogperror(p);
+ 			goto bail;
+ 		}
  
  		try = 3;
  		do {
***************
*** 1871,1877 ****
  	char **argv;	/* args for pvmd or null */
  	int block;		/* if true, don't return until add hosts are started */
  {
! 	char buf[128];
  	struct stat sb;
  	int cc;
  	char *fn;			/* file to exec */
--- 1883,1889 ----
  	char **argv;	/* args for pvmd or null */
  	int block;		/* if true, don't return until add hosts are started */
  {
! 	char *sfn;
  	struct stat sb;
  	int cc;
  	char *fn;			/* file to exec */
***************
*** 1885,1893 ****
  		return lpvmerr("pvm_start_pvmd", PvmSysErr);
  	}
  
! 	(void)sprintf(buf, TDSOCKNAME, pvm_useruid);
  
! 	if (stat(buf, &sb) != -1)
  		return lpvmerr("pvm_start_pvmd", PvmDupHost);
  
  	fn = pvmgetpvmd();
--- 1897,1908 ----
  		return lpvmerr("pvm_start_pvmd", PvmSysErr);
  	}
  
! 	if (!(sfn = pvmdsockfile())) {
! 		pvmlogerror("pvm_start_pvmd() pvmdsockfile() failed\n");
! 		return lpvmerr("pvm_start_pvmd", PvmSysErr);
! 	}
  
! 	if (stat(sfn, &sb) != -1)
  		return lpvmerr("pvm_start_pvmd", PvmDupHost);
  
  	fn = pvmgetpvmd();
***************
*** 1913,1919 ****
  
  	PVM_FREE(av);
  
! 	for (cc = 8; cc > 0 && stat(buf, &sb) == -1; cc--)
  		sleep(1);
  
  	if (cc <= 0) {
--- 1928,1934 ----
  
  	PVM_FREE(av);
  
! 	for (cc = 8; cc > 0 && stat(sfn, &sb) == -1; cc--)
  		sleep(1);
  
  	if (cc <= 0) {
*** ../netlib/pvm3.2.2/src/lpvmpack.c	Mon Aug 30 19:29:33 1993
--- src/lpvmpack.c	Mon Oct  4 15:21:21 1993
***************
*** 32,37 ****
--- 32,40 ----
   *	Typed packing/unpacking, message buffer manip.
   *
  $Log: lpvmpack.c,v $
+  * Revision 1.2  1993/10/04  19:20:22  manchek
+  * fixed vpackf() - floats get passed as doubles, must unpack that way
+  *
   * Revision 1.1  1993/08/30  23:26:48  manchek
   * Initial revision
   *
***************
*** 100,106 ****
   **           **
   ***************/
  
! static char rcsid[] = "$Id: lpvmpack.c,v 1.1 1993/08/30 23:26:48 manchek Exp $";
  
  
  /***************************
--- 103,109 ----
   **           **
   ***************/
  
! static char rcsid[] = "$Id: lpvmpack.c,v 1.2 1993/10/04 19:20:22 manchek Exp $";
  
  
  /***************************
***************
*** 2326,2332 ****
--- 2329,2339 ----
  							((void*)dp, cnt, std, sizeof(double));
  				} else {
  					if (isv) {
+ /*
  						tf = va_arg(ap, float);
+ */
+ 						td = va_arg(ap, double);
+ 						tf = td;
  						fp = &tf;
  					} else
  						fp = va_arg(ap, float *);
*** ../netlib/pvm3.2.2/src/patchlevel.h	Thu Sep 23 16:59:10 1993
--- src/patchlevel.h	Tue Oct 12 10:44:03 1993
***************
*** 1,3 ****
  
! #define PATCHLEVEL 2
  
--- 1,3 ----
  
! #define PATCHLEVEL 3
  
*** ../netlib/pvm3.2.2/src/pvmcruft.c	Mon Aug 30 19:29:33 1993
--- src/pvmcruft.c	Mon Oct  4 16:28:52 1993
***************
*** 32,37 ****
--- 32,40 ----
   *	Missing links and other wonk.
   *
  $Log: pvmcruft.c,v $
+  * Revision 1.2  1993/10/04  20:28:27  manchek
+  * added pvmdsockfile() function
+  *
   * Revision 1.1  1993/08/30  23:26:50  manchek
   * Initial revision
   *
***************
*** 57,75 ****
  #include "global.h"
  #include "protoglarp.h"
  #include "pvmalloc.h"
  
  
  /***************
!  **  Private  **
   **           **
   ***************/
  
! static char rcsid[] = "$Id: pvmcruft.c,v 1.1 1993/08/30 23:26:50 manchek Exp $";
  
  
- char *getenv();
  
  
  int
  pvmput32(p, n)
  	char *p;
--- 60,86 ----
  #include "global.h"
  #include "protoglarp.h"
  #include "pvmalloc.h"
+ #include "tdpro.h"
  
  
  /***************
!  **  Globals  **
   **           **
   ***************/
  
! char *getenv();
  
+ extern int pvm_useruid;				/* from pvmd.c or lpvm.c */
  
  
+ /***************
+  **  Private  **
+  **           **
+  ***************/
  
+ static char rcsid[] = "$Id: pvmcruft.c,v 1.2 1993/10/04 20:28:27 manchek Exp $";
+ 
+ 
  int
  pvmput32(p, n)
  	char *p;
***************
*** 460,463 ****
--- 471,504 ----
  	return pp;
  }
  
+ 
+ /*	pvmdsockfile()
+ *
+ *	Returns name of file where pvmd advertises its sockaddr.
+ *	Assumes global pvm_useruid is set before calling.
+ */
+ 
+ char *
+ pvmdsockfile()
+ {
+ 	static char buf[160];
+ 
+ 	char hna[128];
+ 	char *p;
+ 
+ #ifdef	SHAREDTMP
+ 	if (gethostname(hna, sizeof(hna)-1) == -1) {
+ 		pvmlogerror("pvmdsockfile() can't gethostname()\n");
+ 		return (char*)0;
+ 	}
+ 	if (p = CINDEX(hna, '.'))
+ 		*p = 0;
+ 	(void)sprintf(buf, TDSOCKNAME, pvm_useruid, hna);
+ 
+ #else
+ 	(void)sprintf(buf, TDSOCKNAME, pvm_useruid);
+ #endif
+ 
+ 	return buf;
+ }
  
*** ../netlib/pvm3.2.2/src/pvmd.c	Thu Sep 23 16:59:10 1993
--- src/pvmd.c	Tue Oct 12 10:19:00 1993
***************
*** 32,37 ****
--- 32,49 ----
   *	Mr. pvm daemon.
   *
  $Log: pvmd.c,v $
+  * Revision 1.8  1993/10/12  14:18:37  manchek
+  * fixed bug in locloutput() - hung if write() returned 0
+  *
+  * Revision 1.7  1993/10/04  20:27:42  manchek
+  * renamed useruid to pvm_useruid for compat with libpvm
+  *
+  * Revision 1.6  1993/10/04  19:17:45  manchek
+  * on Solaris, sendto() can return ECHILD.  Hahahahahaha!!!
+  *
+  * Revision 1.5  1993/10/04  19:12:25  manchek
+  * hd_txseq wasn't wrapped properly with NEXTSEQNUM
+  *
   * Revision 1.4  1993/09/23  20:36:19  manchek
   * fixed broken mca lookup
   *
***************
*** 173,179 ****
  int runstate = 0;				/* pvmd run state */
  int tidhmask = TIDHOST;			/* mask for host field of tids */
  int tidlmask = TIDLOCAL;		/* mask for local field of tids */
! int useruid = -1;				/* our uid */
  char *username = 0;				/* our loginname */
  
  
--- 185,191 ----
  int runstate = 0;				/* pvmd run state */
  int tidhmask = TIDHOST;			/* mask for host field of tids */
  int tidlmask = TIDLOCAL;		/* mask for local field of tids */
! int pvm_useruid = -1;			/* our uid */
  char *username = 0;				/* our loginname */
  
  
***************
*** 182,188 ****
   **           **
   ***************/
  
! static char rcsid[] = "$Id: pvmd.c,v 1.4 1993/09/23 20:36:19 manchek Exp $";
  static int *deads = 0;			/* circ queue of dead pids */
  static char pvmtxt[512];		/* scratch for error log */
  static int ndead = 0;			/* len of deads */
--- 194,200 ----
   **           **
   ***************/
  
! static char rcsid[] = "$Id: pvmd.c,v 1.8 1993/10/12 14:18:37 manchek Exp $";
  static int *deads = 0;			/* circ queue of dead pids */
  static char pvmtxt[512];		/* scratch for error log */
  static int ndead = 0;			/* len of deads */
***************
*** 210,216 ****
  	struct passwd *pe;
  	char hna[128];
  
! 	if ((useruid = getuid()) == -1) {
  		pvmlogerror("main() can't getuid()\n");
  		pvmbailout(0);
  	}
--- 222,228 ----
  	struct passwd *pe;
  	char hna[128];
  
! 	if ((pvm_useruid = getuid()) == -1) {
  		pvmlogerror("main() can't getuid()\n");
  		pvmbailout(0);
  	}
***************
*** 217,223 ****
  
  	pvmlogopen();
  
! 	if (pe = getpwuid(useruid))
  		username = STRALLOC(pe->pw_name);
  	else
  		pvmlogerror("main() can't getpwuid\n");
--- 229,235 ----
  
  	pvmlogopen();
  
! 	if (pe = getpwuid(pvm_useruid))
  		username = STRALLOC(pe->pw_name);
  	else
  		pvmlogerror("main() can't getpwuid\n");
***************
*** 1044,1050 ****
  			if ((cc = sendto(netsock, cp, len, 0,
  					(struct sockaddr*)&hp->hd_sad, sizeof(hp->hd_sad))) == -1
  			&& errno != EINTR
! 			&& errno != ENOBUFS) {
  				pvmlogperror("netoutput() sendto");
  				pvmbailout(0);
  			}
--- 1056,1066 ----
  			if ((cc = sendto(netsock, cp, len, 0,
  					(struct sockaddr*)&hp->hd_sad, sizeof(hp->hd_sad))) == -1
  			&& errno != EINTR
! 			&& errno != ENOBUFS
! #ifdef	IMA_SUN4SOL2
! 			&& errno != ECHILD	/* life, don't talk to me about life... */
! #endif
! 			) {
  				pvmlogperror("netoutput() sendto");
  				pvmbailout(0);
  			}
***************
*** 1276,1282 ****
  		TVCLEAR(&pp2->pk_at);
  		pp2->pk_nrt = 0;
  		pp2->pk_hostd = hp;
! 		pp2->pk_seq = hp->hd_txseq++;
  		LISTPUTBEFORE(hp->hd_opq, pp2, pk_link, pk_rlink);
  		hp->hd_nop++;
  		LISTPUTAFTER(opq, pp2, pk_tlink, pk_trlink);
--- 1292,1299 ----
  		TVCLEAR(&pp2->pk_at);
  		pp2->pk_nrt = 0;
  		pp2->pk_hostd = hp;
! 		pp2->pk_seq = hp->hd_txseq;
! 		hp->hd_txseq = NEXTSEQNUM(hp->hd_txseq);
  		LISTPUTBEFORE(hp->hd_opq, pp2, pk_link, pk_rlink);
  		hp->hd_nop++;
  		LISTPUTAFTER(opq, pp2, pk_tlink, pk_trlink);
***************
*** 1692,1698 ****
  				}
  #endif /*IMA_CM5*/
  			}
! 		}
  	}
  
  	if (tp->t_txq->pk_link == tp->t_txq) {
--- 1709,1717 ----
  				}
  #endif /*IMA_CM5*/
  			}
! 
! 		} else
! 			break;
  	}
  
  	if (tp->t_txq->pk_link == tp->t_txq) {
***************
*** 2851,2857 ****
  		TVCLEAR(&pp->pk_at);
  		pp->pk_nrt = 0;
  		pp->pk_hostd = hp;
! 		pp->pk_seq = hp->hd_txseq++;
  		pp->pk_ack = 0;
  		LISTPUTBEFORE(hp->hd_opq, pp, pk_link, pk_rlink);
  		hp->hd_nop++;
--- 2870,2877 ----
  		TVCLEAR(&pp->pk_at);
  		pp->pk_nrt = 0;
  		pp->pk_hostd = hp;
! 		pp->pk_seq = hp->hd_txseq;
! 		hp->hd_txseq = NEXTSEQNUM(hp->hd_txseq);
  		pp->pk_ack = 0;
  		LISTPUTBEFORE(hp->hd_opq, pp, pk_link, pk_rlink);
  		hp->hd_nop++;
***************
*** 2881,2887 ****
  	TVCLEAR(&pp->pk_at);
  	pp->pk_nrt = 0;
  	pp->pk_hostd = hp;
! 	pp->pk_seq = hp->hd_txseq++;
  	pp->pk_ack = 0;
  	LISTPUTBEFORE(hp->hd_opq, pp, pk_link, pk_rlink);
  	hp->hd_nop++;
--- 2901,2908 ----
  	TVCLEAR(&pp->pk_at);
  	pp->pk_nrt = 0;
  	pp->pk_hostd = hp;
! 	pp->pk_seq = hp->hd_txseq;
! 	hp->hd_txseq = NEXTSEQNUM(hp->hd_txseq);
  	pp->pk_ack = 0;
  	LISTPUTBEFORE(hp->hd_opq, pp, pk_link, pk_rlink);
  	hp->hd_nop++;
*** ../netlib/pvm3.2.2/src/pvmlog.c	Mon Aug 30 19:29:34 1993
--- src/pvmlog.c	Mon Oct  4 16:31:54 1993
***************
*** 32,37 ****
--- 32,41 ----
   *	Error logging fac.
   *
  $Log: pvmlog.c,v $
+  * Revision 1.2  1993/10/04  20:31:21  manchek
+  * renamed useruid to pvm_useruid for compat with libpvm.
+  * added alternate logfile name if SHAREDTMP is defined
+  *
   * Revision 1.1  1993/08/30  23:26:51  manchek
   * Initial revision
   *
***************
*** 41,55 ****
  #include <errno.h>
  #include <sys/types.h>
  #include <fcntl.h>
! /*
! #include <netinet/in.h>
! */
  
  #ifndef PVMDLOGMAX
  #define PVMDLOGMAX 65536			/* (approx) max chars to log to file */
  #endif
  
  #define	PVMDLOGFILE	"/tmp/pvml.%d"	/* log file name */
  
  
  /***************
--- 45,67 ----
  #include <errno.h>
  #include <sys/types.h>
  #include <fcntl.h>
! #ifdef	SYSVSTR
! #include <string.h>
! #define	CINDEX(s,c)	strchr(s,c)
! #else
! #include <strings.h>
! #define	CINDEX(s,c)	index(s,c)
! #endif
  
  #ifndef PVMDLOGMAX
  #define PVMDLOGMAX 65536			/* (approx) max chars to log to file */
  #endif
  
+ #ifdef	SHAREDTMP
+ #define	PVMDLOGFILE	"/tmp/pvml.%d.%s"	/* log file name */
+ #else
  #define	PVMDLOGFILE	"/tmp/pvml.%d"	/* log file name */
+ #endif
  
  
  /***************
***************
*** 63,69 ****
  
  extern int mytid;					/* from pvmd.c */
  extern int myunixpid;				/* from pvmd.c */
! extern int useruid;					/* from pvmd.c */
  
  int log_fd = -1;					/* error log file */
  int log_how = 1;					/* how much error logging we can do */
--- 75,81 ----
  
  extern int mytid;					/* from pvmd.c */
  extern int myunixpid;				/* from pvmd.c */
! extern int pvm_useruid;				/* from pvmd.c */
  
  int log_fd = -1;					/* error log file */
  int log_how = 1;					/* how much error logging we can do */
***************
*** 74,80 ****
   **           **
   ***************/
  
! static char rcsid[] = "$Id: pvmlog.c,v 1.1 1993/08/30 23:26:51 manchek Exp $";
  static char pvmtxt[2048];			/* scratch for error log */
  
  
--- 86,92 ----
   **           **
   ***************/
  
! static char rcsid[] = "$Id: pvmlog.c,v 1.2 1993/10/04 20:31:21 manchek Exp $";
  static char pvmtxt[2048];			/* scratch for error log */
  
  
***************
*** 136,145 ****
  
  pvmlogopen()
  {
! 	char buf[32];
  
  	if (!(log_how & 2)) {
! 		sprintf(buf, PVMDLOGFILE, useruid);
  		if ((log_fd = open(buf, O_WRONLY|O_TRUNC|O_CREAT|O_APPEND, 0600)) != -1)
  			log_how |= 2;
  	}
--- 148,169 ----
  
  pvmlogopen()
  {
! 	char buf[160];
! 	char hna[128];
! 	char *p;
  
  	if (!(log_how & 2)) {
! #ifdef	SHAREDTMP
! 		if (gethostname(hna, sizeof(hna)-1) == -1) {
! 			pvmlogerror("pvmlogopen() can't gethostname()\n");
! 			return 0;
! 		}
! 		if (p = CINDEX(hna, '.'))
! 			*p = 0;
! 		(void)sprintf(buf, PVMDLOGFILE, pvm_useruid, hna);
! #else
! 		(void)sprintf(buf, PVMDLOGFILE, pvm_useruid);
! #endif
  		if ((log_fd = open(buf, O_WRONLY|O_TRUNC|O_CREAT|O_APPEND, 0600)) != -1)
  			log_how |= 2;
  	}
*** ../netlib/pvm3.2.2/src/startup.c	Mon Aug 30 19:29:34 1993
--- src/startup.c	Mon Oct  4 16:30:42 1993
***************
*** 32,37 ****
--- 32,40 ----
   *	Exec more pvmds.  It's good for you.
   *
  $Log: startup.c,v $
+  * Revision 1.2  1993/10/04  20:30:30  manchek
+  * mksocks() now uses pvmdsockfile() instead of TDSOCKNAME
+  *
   * Revision 1.1  1993/08/30  23:26:51  manchek
   * Initial revision
   *
***************
*** 66,72 ****
  #include "global.h"
  #include "fromlib.h"
  #include "ddpro.h"
- #include "tdpro.h"
  #include "protoglarp.h"
  #include "pvmalloc.h"
  #include "mesg.h"
--- 69,74 ----
***************
*** 112,117 ****
--- 114,120 ----
  extern char *inadport_hex();
  extern void pvmbailout();
  extern char *pvmgetrpvmd();
+ char *pvmdsockfile();
  
  extern int debugmask;				/* from pvmd.c */
  extern char *debugger;				/* from pvmd.c */
***************
*** 132,138 ****
  extern int pprwid;					/* from pvmd.c */
  extern int runstate;				/* from pvmd.c */
  extern int tidhmask;				/* from pvmd.c */
- extern int useruid;					/* from pvmd.c */
  extern char *username;				/* from pvmd.c */
  
  
--- 135,140 ----
***************
*** 141,147 ****
   **           **
   ***************/
  
! static char rcsid[] = "$Id: startup.c,v 1.1 1993/08/30 23:26:51 manchek Exp $";
  static char pvmtxt[1024];		/* scratch for error log */
  
  
--- 143,149 ----
   **           **
   ***************/
  
! static char rcsid[] = "$Id: startup.c,v 1.2 1993/10/04 20:30:30 manchek Exp $";
  static char pvmtxt[1024];		/* scratch for error log */
  
  
***************
*** 160,165 ****
--- 162,168 ----
  	struct hostd *hp0 = hosts->ht_hosts[0];
  	struct sockaddr_in sin;
  	char buf[128];
+ 	char *sfn;
  	int d;
  #ifndef NOSOCKOPT
  	int bsz;
***************
*** 251,268 ****
  	*/
  
  	p = inadport_hex(&sin);
! 	(void)sprintf(buf, TDSOCKNAME, useruid);
! 	if ((d = open(buf, O_CREAT|O_EXCL|O_WRONLY|O_TRUNC, 0600)) == -1) {
  		if (errno == EEXIST) {
  #ifndef	OVERLOADHOST
  			(void)sprintf(pvmtxt,
! 					"mksocs() %s exists.  pvmd already running?\n", buf);
  			pvmlogerror(pvmtxt);
  			return 1;
  #endif
  
  		} else {
! 			pvmlogperror(buf);
  			pvmlogerror("mksocs() can't write address file\n");
  			return 1;
  		}
--- 254,276 ----
  	*/
  
  	p = inadport_hex(&sin);
! 
! 	if (!(sfn = pvmdsockfile())) {
! 		pvmlogerror("mksocs() pvmdsockfile() failed\n");
! 		pvmbailout(0);
! 	}
! 
! 	if ((d = open(sfn, O_CREAT|O_EXCL|O_WRONLY|O_TRUNC, 0600)) == -1) {
  		if (errno == EEXIST) {
  #ifndef	OVERLOADHOST
  			(void)sprintf(pvmtxt,
! 					"mksocs() %s exists.  pvmd already running?\n", sfn);
  			pvmlogerror(pvmtxt);
  			return 1;
  #endif
  
  		} else {
! 			pvmlogperror(sfn);
  			pvmlogerror("mksocs() can't write address file\n");
  			return 1;
  		}
***************
*** 271,290 ****
  		cc = write(d, p, strlen(p));
  		if (cc != strlen(p)) {
  			if (cc == -1) {
! 				pvmlogperror(buf);
  				pvmlogerror("mksocs() can't write address file\n");
  
  			} else {
  				(void)sprintf(pvmtxt,
! 						"mksocs() aargh, short write on %s: %d\n", buf, cc);
  				pvmlogerror(pvmtxt);
  				pvmlogerror("mksocs() is the partition full?\n");
  			}
  			(void)close(d);
! 			(void)unlink(buf);
  			return 1;
  		}
! 		loclsnam = STRALLOC(buf);
  		(void)close(d);
  	}
  
--- 279,298 ----
  		cc = write(d, p, strlen(p));
  		if (cc != strlen(p)) {
  			if (cc == -1) {
! 				pvmlogperror(sfn);
  				pvmlogerror("mksocs() can't write address file\n");
  
  			} else {
  				(void)sprintf(pvmtxt,
! 						"mksocs() aargh, short write on %s: %d\n", sfn, cc);
  				pvmlogerror(pvmtxt);
  				pvmlogerror("mksocs() is the partition full?\n");
  			}
  			(void)close(d);
! 			(void)unlink(sfn);
  			return 1;
  		}
! 		loclsnam = STRALLOC(sfn);
  		(void)close(d);
  	}
  
*** ../netlib/pvm3.2.2/src/tdpro.h	Mon Aug 30 19:29:35 1993
--- src/tdpro.h	Mon Oct  4 16:31:05 1993
***************
*** 32,37 ****
--- 32,40 ----
   *	Task-pvmd protocol
   *
  $Log: tdpro.h,v $
+  * Revision 1.2  1993/10/04  20:30:50  manchek
+  * added alternate TDSOCKNAME if SHAREDTMP is defined
+  *
   * Revision 1.1  1993/08/30  23:26:52  manchek
   * Initial revision
   *
***************
*** 51,57 ****
--- 54,64 ----
  #define	MAXHDR		((DDFRAGHDR>TDFRAGHDR?DDFRAGHDR:TDFRAGHDR) \
  					+(DDMSGHDR>TTMSGHDR?DDMSGHDR:TTMSGHDR))
  
+ #ifdef	SHAREDTMP
+ #define	TDSOCKNAME	"/tmp/pvmd.%d.%s"	/* file with task->pvmd sockaddr */
+ #else
  #define	TDSOCKNAME	"/tmp/pvmd.%d"	/* file with task->pvmd sockaddr */
+ #endif
  
  #define	TM_CONNECT	1		/* task connects */
  #define	TM_CONN2	2		/* 2nd round of connect */
