[comp.protocols.appletalk] CAP 6.0 patch 26 & 27, CAP 6.1 progress report

djh@cs.mu.oz.au (David Hornsby) (06/13/91)

Progress towards CAP 6.1, (6.0 with all patches applied) is
currently on temporary hold. There are a variety of reasons:

    * testing of ULTRIX packet filter code is waiting on
      a patch for ULTRIX 4.1 (may also be needed for 4.0).
      To save time, ask your Customer Support Centre for
      the "patched net_common.o" or upgrade to ULTRIX 4.2
    
    * addition of the Phase 2 code to the enet driver is
      underway at Rutgers. The 4.0.3/le0 problem delayed
      testing, as have other work commitments.
    
    * some people have requested that particular AUFS
      pecularities be resolved. The enclosed patch 27
      addresses one problem, the other relates to fixed
      directory IDs and is being investigated.

There isn't a new timeline yet, if you have been waiting
eagerly for 6.1, I would suggest that it would be better
to go with 6.0 and patches.

The management apologises for the delay :-)

 - David
------------------------
The enclosed shar file contains patches 26 and 27. They are
also available via FTP from munnari.OZ.AU and rutgers.edu

patch 26: change the "very very obsolete" tell() to the
	equivalent lseek() call.

patch 27: maintain the original Macintosh file Created and
	Modified times on a file copy to an AUFS server (to
	emulate the behaviour of other AppleShare servers).
	If the file is edited as either a UNIX or Mac file,
	the Modified time is updated correctly. This patch
	is loosely based on code by Henry N. Holtzman
	<holtzman@friskies.media.mit.edu> and email from
	David N. Blank <dnb@meshugge.media.mit.edu>. My
	thanks to both.

	The .finderinfo files produced are compatible with
	unmodified servers and the various AufsTools utils.

	WARNING: patch 27 modifies an include file. You need
	to add USE_MAC_DATES in the m4.features script and
	then remake CAP, starting with 'make include'

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of shell archive."
# Contents:  cap60.patch026 cap60.patch027
# Wrapped by djh@munnari.OZ.AU on Thu Jun 13 22:41:31 1991
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'cap60.patch026' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'cap60.patch026'\"
else
echo shar: Extracting \"'cap60.patch026'\" \(1752 characters\)
sed "s/^X//" >'cap60.patch026' <<'END_OF_FILE'
XPatch #:	26
XType:		update
XPriority:	low
XAffects:	OS without obsoleted tell()
XReported:	Robert Elz <kre@munnari.OZ.AU>
XReported:	Heather Ebey <heather@sdcc4.ucsd.edu>
XArchived:	munnari.OZ.AU	mac/cap.patches/cap60.patch026
XSummary:	"tell() is very very obsolete", replace with lseek()
XFile:		cap60/applications/aufs/afpdt.c
X
X*** applications/aufs/afpdt.c.orig	Wed Mar 13 21:21:03 1991
X--- applications/aufs/afpdt.c		Thu Jun 13 20:45:38 1991
X***************
X*** 1,7 ****
X  /*
X!  * $Author: djh $ $Date: 91/03/13 20:19:13 $
X!  * $Header: afpdt.c,v 2.2 91/03/13 20:19:13 djh Exp $
X!  * $Revision: 2.2 $
X  */
X  
X  /*
X--- 1,7 ----
X  /*
X!  * $Author: djh $ $Date: 1991/06/13 10:45:20 $
X!  * $Header: /mac/src/cap60/applications/aufs/RCS/afpdt.c,v 2.3 1991/06/13 10:45:20 djh Rel djh $
X!  * $Revision: 2.3 $
X  */
X  
X  /*
X***************
X*** 359,365 ****
X        }
X        return(-1);
X      }
X!     floc = tell(dt->dt_afd) - ((off_t)sizeof(afr)); /* remember where we are */
X      afr.afr_pdirlen = ntohl(afr.afr_pdirlen);
X      afr.afr_fnamlen = ntohl(afr.afr_fnamlen);
X  
X--- 359,366 ----
X        }
X        return(-1);
X      }
X!     /* remember where we are */
X!     floc = lseek(dt->dt_afd, 0L, 1) - ((off_t)sizeof(afr));
X      afr.afr_pdirlen = ntohl(afr.afr_pdirlen);
X      afr.afr_fnamlen = ntohl(afr.afr_fnamlen);
X  
X*** README.orig		Thu Jun 13 20:49:05 1991
X--- README		Thu Jun 13 20:49:18 1991
X***************
X*** 3,9 ****
X  	       (For use with AppleTalk/Ethernet bridge)
X  
X  	o RELEASE NOTES
X! 	o CAP Distribution 6.0, Patch Level 25, May 1991
X  
X  Introduction
X  ------------
X--- 3,9 ----
X  	       (For use with AppleTalk/Ethernet bridge)
X  
X  	o RELEASE NOTES
X! 	o CAP Distribution 6.0, Patch Level 26, June 1991
X  
X  Introduction
X  ------------
END_OF_FILE
if test 1752 -ne `wc -c <'cap60.patch026'`; then
    echo shar: \"'cap60.patch026'\" unpacked with wrong size!
fi
# end of 'cap60.patch026'
fi
if test -f 'cap60.patch027' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'cap60.patch027'\"
else
echo shar: Extracting \"'cap60.patch027'\" \(7969 characters\)
sed "s/^X//" >'cap60.patch027' <<'END_OF_FILE'
XPatch #:	27
XType:		operational change
XPriority:	none
XModification:	maintain Mac create/modify times on file copy
XSubmitted:	David Hornsby <djh@munnari.OZ.AU>
XArchived:	munnari.OZ.AU	mac/cap.patches/cap60.patch027
XSummary:	extend .finderinfo files to store date information
XWARNING:	patch 27 modifies include file, 'make include' required
XFile:		cap60/Configure
XFile:		cap60/netat/macfile.h
XFile:		cap60/applications/aufs/afpos.c
XFile:		cap60/applications/aufs/afposfi.c
X
X*** Configure.orig	Thu Jun 13 21:29:46 1991
X--- Configure		Thu Jun 13 21:31:37 1991
X***************
X*** 1,7 ****
X  #!/bin/sh
X! # $Author: djh $ $Date: 1991/05/29 12:23:59 $
X! # $Header: /mac/src/cap60/RCS/Configure,v 2.10 1991/05/29 12:23:59 djh Rel djh $
X! # $Revision: 2.10 $
X  # CAP configuration shell script.  This ain't perfect, but it's a start.
X  # Execute with /bin/sh Configure if your system won't run it (ksh is okay too)
X  # 
X--- 1,7 ----
X  #!/bin/sh
X! # $Author: djh $ $Date: 1991/06/13 11:31:28 $
X! # $Header: /mac/src/cap60/RCS/Configure,v 2.11 1991/06/13 11:31:28 djh Rel djh $
X! # $Revision: 2.11 $
X  # CAP configuration shell script.  This ain't perfect, but it's a start.
X  # Execute with /bin/sh Configure if your system won't run it (ksh is okay too)
X  # 
X***************
X*** 460,465 ****
X--- 460,468 ----
X  #
X  # + ULTRIX_SECURITY adds ULTRIX enhanced security to aufs
X  # define(`specialcflags',concat(specialcflags,` -DULTRIX_SECURITY'))
X+ #
X+ # + USE_MAC_DATES maintains Mac Create/Modify dates on file copy
X+ # define(`specialcflags',concat(specialcflags,` -DUSE_MAC_DATES'))
X  #
X  EOT0
X  result=0
X*** netat/macfile.h.orig	Thu Feb 28 23:43:38 1991
X--- netat/macfile.h		Thu Jun 13 21:15:17 1991
X***************
X*** 1,7 ****
X  /*
X!  * $Author: djh $ $Date: 91/02/15 22:59:20 $
X!  * $Header: macfile.h,v 2.1 91/02/15 22:59:20 djh Rel $
X!  * $Revision: 2.1 $
X  */
X  
X  /*
X--- 1,7 ----
X  /*
X!  * $Author: djh $ $Date: 1991/06/13 11:14:52 $
X!  * $Header: /mac/src/cap60/netat/RCS/macfile.h,v 2.2 1991/06/13 11:14:52 djh Rel djh $
X!  * $Revision: 2.2 $
X  */
X  
X  /*
X***************
X*** 51,56 ****
X--- 51,65 ----
X    byte fi_macfilename[32+1];	/* possible macintosh file name */
X    byte fi_comln;		/* comment length */
X    byte fi_comnt[MAXCLEN+1];	/* comment string */
X+ #ifdef USE_MAC_DATES
X+   byte fi_datemagic;		/* sanity check */
X+ #define FI_MDATE 0x01		/* mtime & utime are valid */
X+ #define FI_CDATE 0x02		/* ctime is valid */
X+   byte fi_datevalid;		/* validity flags */
X+   byte fi_ctime[4];		/* mac file create time */
X+   byte fi_mtime[4];		/* mac file modify time */
X+   byte fi_utime[4];		/* (real) time mtime was set */
X+ #endif USE_MAC_DATES
X  } FileInfo;
X  
X  /* Atribute flags */
X*** applications/aufs/afpos.c.orig	Wed May 29 19:15:37 1991
X--- applications/aufs/afpos.c		Thu Jun 13 21:17:33 1991
X***************
X*** 1,7 ****
X  /*
X!  * $Author: djh $ $Date: 1991/05/29 09:15:27 $
X!  * $Header: /mac/src/cap60/applications/aufs/RCS/afpos.c,v 2.9 1991/05/29 09:15:27 djh Exp djh $
X!  * $Revision: 2.9 $
X   */
X  
X  /*
X--- 1,7 ----
X  /*
X!  * $Author: djh $ $Date: 1991/06/13 11:17:11 $
X!  * $Header: /mac/src/cap60/applications/aufs/RCS/afpos.c,v 2.10 1991/06/13 11:17:11 djh Rel djh $
X!  * $Revision: 2.10 $
X   */
X  
X  /*
X***************
X*** 1274,1283 ****
X    /* pick out the earliest date for mac creation time */
X    sometime = (buf.st_mtime > buf.st_ctime) ? buf.st_ctime : buf.st_mtime;
X    fdp->fdp_cdate = (sometime > buf.st_atime) ? buf.st_atime : sometime;
X!   /* pick the later of status change and modification for */
X!   /* mac modified */
X    fdp->fdp_mdate = (buf.st_mtime < buf.st_ctime) ? buf.st_ctime : buf.st_mtime;
X  
X    fdp->fdp_bdate = 0;
X    fdp->fdp_zero = 0;			/* zero the zero byte (?) */
X  #ifdef SHORT_NAMES
X--- 1274,1291 ----
X    /* pick out the earliest date for mac creation time */
X    sometime = (buf.st_mtime > buf.st_ctime) ? buf.st_ctime : buf.st_mtime;
X    fdp->fdp_cdate = (sometime > buf.st_atime) ? buf.st_atime : sometime;
X!   /* pick the later of status change and modification for mac modified */
X    fdp->fdp_mdate = (buf.st_mtime < buf.st_ctime) ? buf.st_ctime : buf.st_mtime;
X  
X+ #ifdef USE_MAC_DATES
X+   { time_t when;
X+     OSGetCDate(ipdir,fn,&fdp->fdp_cdate);
X+     if (OSGetMDate(ipdir,fn,&sometime,&when) == noErr)
X+ 	if (fdp->fdp_mdate < (when+5)) /* fuzz factor */
X+ 	  fdp->fdp_mdate = sometime;
X+   }
X+ #endif USE_MAC_DATES
X+ 
X    fdp->fdp_bdate = 0;
X    fdp->fdp_zero = 0;			/* zero the zero byte (?) */
X  #ifdef SHORT_NAMES
X***************
X*** 1607,1617 ****
X  {
X    word bm = fdp->fdp_fbitmap;
X  
X    if (bm & (FP_FINFO|FP_ATTR|FP_PDOS))
X      OSSetFA(ipdir,fn,fdp->fdp_fbitmap,fdp);
X    return(noErr);
X  }
X- 
X  
X  /*
X   * OSSetDirParms
X--- 1615,1629 ----
X  {
X    word bm = fdp->fdp_fbitmap;
X  
X+ #ifdef USE_MAC_DATES
X+   if (bm & (FP_FINFO|FP_ATTR|FP_PDOS|FP_CDATE|FP_MDATE))
X+ #else  USE_MAC_DATES
X    if (bm & (FP_FINFO|FP_ATTR|FP_PDOS))
X+ #endif USE_MAC_DATES
X      OSSetFA(ipdir,fn,fdp->fdp_fbitmap,fdp);
X+ 
X    return(noErr);
X  }
X  
X  /*
X   * OSSetDirParms
X*** applications/aufs/afposfi.c.orig	Thu Feb 28 23:44:27 1991
X--- applications/aufs/afposfi.c		Thu Jun 13 21:21:22 1991
X***************
X*** 1,7 ****
X  /*
X!  * $Author: djh $ $Date: 91/02/15 21:08:41 $
X!  * $Header: afposfi.c,v 2.1 91/02/15 21:08:41 djh Rel $
X!  * $Revision: 2.1 $
X  */
X  
X  /*
X--- 1,7 ----
X  /*
X!  * $Author: djh $ $Date: 1991/06/13 11:21:02 $
X!  * $Header: /mac/src/cap60/applications/aufs/RCS/afposfi.c,v 2.2 1991/06/13 11:21:02 djh Rel djh $
X!  * $Revision: 2.2 $
X  */
X  
X  /*
X***************
X*** 556,561 ****
X--- 556,578 ----
X      else
X        fi->fi_attr &= ~attr;
X    }
X+ 
X+ #ifdef USE_MAC_DATES
X+   if (bm & FP_CDATE) {
X+     fi->fi_datemagic = FI_MAGIC;
X+     fi->fi_datevalid |= FI_CDATE;
X+     bcopy(&fdp->fdp_cdate,fi->fi_ctime,sizeof(fi->fi_ctime));
X+   }
X+   if (bm & FP_MDATE) {
X+     time_t when;
X+     time(&when);
X+     fi->fi_datemagic = FI_MAGIC;
X+     fi->fi_datevalid |= FI_MDATE;
X+     bcopy(&when,fi->fi_utime,sizeof(fi->fi_utime));
X+     bcopy(&fdp->fdp_mdate,fi->fi_mtime,sizeof(fi->fi_mtime));
X+   }
X+ #endif USE_MAC_DATES
X+ 
X    if (bm & FP_FINFO) {
X      bcopy(fdp->fdp_finfo,fi->fi_fndr,FINFOLEN);
X      if (!(bm & FP_PDOS))	/* setting finder info BUT NOT PRODOS */
X***************
X*** 566,572 ****
X--- 583,593 ----
X      if (!(bm & FP_FINFO))	/* setting PRODOS info BUT NOT finder */
X        mapPDOS2FNDR(fdp,fi);	/* derive suitable fdCreator & fdType */
X  
X+ #ifdef USE_MAC_DATES
X+   if (bm & (FP_ATTR|FP_FINFO|FP_PDOS|FP_CDATE|FP_MDATE))
X+ #else  USE_MAC_DATES
X    if (bm & (FP_ATTR|FP_FINFO|FP_PDOS))
X+ #endif USE_MAC_DATES
X      WriteFA(pdir,fn,fi);
X    return(noErr);
X  }
X***************
X*** 631,636 ****
X--- 652,689 ----
X    bcopy(fi->fi_comnt,cs,*cl);
X    return(noErr);
X  }
X+ 
X+ #ifdef USE_MAC_DATES
X+ OSGetCDate(pdir,fn,cdate)
X+ IDirP pdir;
X+ char *fn;
X+ time_t *cdate;
X+ {
X+   FileInfo *fi;
X+   
X+   fi = os_getfi(pdir,fn);
X+   if (fi->fi_datemagic != FI_MAGIC || (!(fi->fi_datevalid & FI_CDATE)))
X+     return(-1);
X+   bcopy(fi->fi_ctime,cdate,sizeof(fi->fi_ctime));
X+   return(noErr);
X+ }
X+ 
X+ OSGetMDate(pdir,fn,mdate,udate)
X+ IDirP pdir;
X+ char *fn;
X+ time_t *mdate;
X+ time_t *udate;
X+ {
X+   FileInfo *fi;
X+   
X+   fi = os_getfi(pdir,fn);
X+   if (fi->fi_datemagic != FI_MAGIC || (!(fi->fi_datevalid & FI_MDATE)))
X+     return(-1);
X+   bcopy(fi->fi_mtime,mdate,sizeof(fi->fi_mtime));
X+   bcopy(fi->fi_utime,udate,sizeof(fi->fi_utime));
X+   return(noErr);
X+ }
X+ #endif USE_MAC_DATES
X  
X  /*
X   * Establish the mac file name after a os_move
X*** README.orig		Thu Jun 13 21:12:40 1991
X--- README		Thu Jun 13 21:12:59 1991
X***************
X*** 3,9 ****
X  	       (For use with AppleTalk/Ethernet bridge)
X  
X  	o RELEASE NOTES
X! 	o CAP Distribution 6.0, Patch Level 26, June 1991
X  
X  Introduction
X  ------------
X--- 3,9 ----
X  	       (For use with AppleTalk/Ethernet bridge)
X  
X  	o RELEASE NOTES
X! 	o CAP Distribution 6.0, Patch Level 27, June 1991
X  
X  Introduction
X  ------------
END_OF_FILE
if test 7969 -ne `wc -c <'cap60.patch027'`; then
    echo shar: \"'cap60.patch027'\" unpacked with wrong size!
fi
# end of 'cap60.patch027'
fi
echo shar: End of shell archive.
exit 0