[comp.sources.bugs] SHAPE - Official Patch

wolfgang@coma.UUCP (Wolfgang Obst) (07/10/89)

Here are the first official patches for the shape-toolkit.
Besides the fixing of several bugs, one enhancement of shape is included:
a special macro `hosttype' is supported for people working with a network
file system on different machines.
If this macro is set to a certain value, e.g.:

	hosttype = vax_ultrix_2_0

this value is used to mark the derived objects rather than the hostname.
So derived objects are `up to date' even if you change the host.
Make sure that your hosts are *really* compatible!! If you are working
with incompatible hosts (e.g. VAXEN and SUNS), you should use the
VARIANT SECTION within the Shapefile to define different variants and
define the value of `hosttype' dependent of the activated variant.

The shell archive below contains 4 files

	      sh_3.11.pat1
	      sh_3.11.pat2
	      sh_3.11.pat3
	      vc_3.31.pat1

Apply the patches sh_3.11.pat{1,2,3} within the subdirectory
.../src/shape, the patches vc_3.31.pat1 within the subdirectory
.../src/vc using the patch(1) command.

Keep on shapin'
-Wolfgang

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Wolfgang Obst  					TU Berlin FB-20 Sekr. FR 5-6
UUCP: {unido!}coma!wolfgang			Franklinstr. 28/29
BITNET: wolfgang@db0tui62		 	D-1000 Berlin (West) 10
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

-------------------------------- 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 (not csh) to create:
#	sh_3.11.pat1
#	sh_3.11.pat2
#	sh_3.11.pat3
#	vc_3.31.pat1
# This archive created: Mon Jul 10 11:38:04 1989
export PATH; PATH=/bin:/usr/bin:$PATH
if test -f 'sh_3.11.pat1'
then
	echo shar: "will not over-write existing file 'sh_3.11.pat1'"
else
cat << \SHAR_EOF > 'sh_3.11.pat1'
*** /tmp/attr.c	Mon Mar  6 13:08:27 1989
--- attr.c	Fri Mar  3 15:36:14 1989
***************
*** 2467,2477 ****
  /* not yet complete ???? */
  /* a{bc,d,e}f mactches abcf adf & aef not implemented */
    int i,j;
!   char result[128];
    char tmp_result[64];
  
-   static char rechars[] = "^.$?*[]{}";
- 
    j = 0;
    
    for(i = 0; i < strlen(patt); i++)
--- 2467,2475 ----
  /* not yet complete ???? */
  /* a{bc,d,e}f mactches abcf adf & aef not implemented */
    int i,j;
!   static char result[128];
    char tmp_result[64];
  
    j = 0;
    
    for(i = 0; i < strlen(patt); i++)
***************
*** 2494,2504 ****
        }
    }
  tmp_result[j]='\0';
! 
! (void) sprintf(result,"%s%s%s",(!(index(rechars,tmp_result[0]))) ? "^" : "",
! 	tmp_result, (!(index(rechars,tmp_result[strlen(tmp_result) - 1]))) ? 
! 	"$" : "");
!   
  return(result);
  }
  
--- 2492,2498 ----
        }
    }
  tmp_result[j]='\0';
! (void) sprintf(result,"^%s$",tmp_result);
  return(result);
  }
  
*** /tmp/macro.c	Mon Mar  6 13:17:05 1989
--- macro.c	Mon Mar  6 13:21:58 1989
***************
*** 137,143 ****
        line[len-1] = '\0';
        return (line);
      }
! /*NOTREACHED*/
  }
  
  
--- 137,143 ----
        line[len-1] = '\0';
        return (line);
      }
! return(NIL);
  }
  
  
*** /tmp/version.c[1.54]	Thu Mar  9 20:50:08 1989
--- version.c	Thu Mar  9 20:52:35 1989
***************
*** 24,27 ****
   * 		     Tel: +49-30-314-22972
   * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
   */
! char *version () { static char ConfID[] =  "3.11 (Mon Feb 27 11:20:46 MET 1989 by wolfgang@coma )";  return ConfID; }
--- 24,27 ----
   * 		     Tel: +49-30-314-22972
   * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
   */
! char *version () { static char ConfID[] =  "3.11 Patchlevel_1\n\tThu Mar  9 20:51:10 MET 1989 by wolfgang@coma ";  return ConfID; }
SHAR_EOF
fi
if test -f 'sh_3.11.pat2'
then
	echo shar: "will not over-write existing file 'sh_3.11.pat2'"
else
cat << \SHAR_EOF > 'sh_3.11.pat2'
*** misc.c	Tue Jun 13 11:08:10 1989
--- /tmp/misc.c	Tue Jun 13 11:16:32 1989
***************
*** 25,117 ****
   * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
   */
  #ifndef lint
! static char *RCSid = "$Header: misc.c,v 3.5 89/02/21 17:11:54 wolfgang Exp $";
  #endif
- #ifndef lint
- static char *ConfFlg = CFFLGS;	/* should be defined from within Makefile */
- #endif
  /*
!  * $Log:	misc.c,v $
!  * Revision 3.5  89/02/21  17:11:54  wolfgang
!  * append_mtime changed
!  * 
!  * Revision 3.4  89/02/20  16:26:08  wolfgang
!  * NET-RELEASE
!  * 
!  * Revision 3.3  89/02/08  16:19:55  wolfgang
!  * one comment added for lint.
!  * ..
!  * 
!  * Revision 3.2  89/02/08  12:46:32  wolfgang
!  * performance improved.
!  * 
!  * Revision 3.1  89/02/06  14:26:41  wolfgang
!  * bug fixed.
!  * 
!  * Revision 3.0  89/01/24  11:36:12  wolfgang
!  * New System Generation
!  * 
!  * Revision 2.19  89/01/23  16:14:42  wolfgang
!  * inheritance of uda's is now suppressed
!  * 
!  * Revision 2.18  89/01/03  13:12:23  wolfgang
!  * changes done for lint
!  * 
!  * Revision 2.17  88/12/22  12:36:39  wolfgang
!  * dummy procedure free_linklist()m added.
!  * 
!  * Revision 2.16  88/12/21  15:11:10  wolfgang
!  * changes done for lint
!  * 
!  * Revision 2.15  88/12/19  13:21:27  wolfgang
!  * is_in_forcelist added().
!  * 
!  * Revision 2.14  88/11/23  12:35:48  wolfgang
!  * Another dorpkey added.
!  * 
!  * Revision 2.13  88/11/21  20:55:10  wolfgang
!  * changes done for sun
!  * 
!  * Revision 2.12  88/11/09  16:25:59  wolfgang
!  * bugs fixed
!  * 
!  * Revision 2.11  88/11/08  11:05:02  wolfgang
!  * This version is part of a release
!  * 
!  * Revision 2.10  88/11/03  17:29:46  wolfgang
!  * calls of af_dropset added in compare_attrstring().
!  * 
!  * Revision 2.9  88/10/10  16:54:43  wolfgang
!  * changed for the -t option. if (touchflg) nothing is restored.
!  * 
!  * Revision 2.8  88/09/23  15:54:20  wolfgang
!  * bug fixed in get_attr_type (retrn values).
!  * 
!  * Revision 2.7  88/09/22  16:15:06  wolfgang
!  * clleanup_links() changed (now recursive).
!  * 
!  * Revision 2.6  88/09/07  11:23:30  wolfgang
!  * unlinking of tmp file added to cleanup_links().
!  * 
!  * Revision 2.5  88/08/25  16:09:07  wolfgang
!  * Message: ... restored from bpool changed; [busy] is supreesed and if
!  * type = "" the "." is supressed.
!  * 
!  * Revision 2.4  88/08/22  15:30:43  wolfgang
!  * Two types added: syspath & host; are necessary for confid.
!  * 
!  * Revision 2.3  88/08/22  11:24:06  wolfgang
!  * Attribute string changed: added "." between name & type.
!  * 
!  * Revision 2.2  88/08/19  10:05:59  wolfgang
!  * bug fixed; if attrs were too long for bpool file, the identification
!  * of the busy version had not been correct.
!  * Furthermore the format of the string "... version restored ..." has
!  * been changed, so that -2 .-2 for busy Version is supressed.
!  * 
!  * Revision 2.1  88/08/18  13:19:41  wolfgang
!  * minor bug fixes; mtime added to identification string of derived objects
!  * 
   */
  
  #include <sys/types.h>
--- 25,34 ----
   * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
   */
  #ifndef lint
! static char *AFSid = "$__Header$";
  #endif
  /*
!  * $__Log$
   */
  
  #include <sys/types.h>
***************
*** 471,479 ****
       Af_attrs *buf;
       int recdepth;
  {
!   char attributes[MAX_ATTR];
  
!   (void) sprintf(attributes,"%s%s%s%s%s%d%d%d%d",
  	  buf->af_name,
  	  ".",
  	  buf->af_type,
--- 388,406 ----
       Af_attrs *buf;
       int recdepth;
  {
!   char attributes[MAXATTRLENGTH];
!   static char pnt[MAXNAMLEN];
!   char x[MAXNAMLEN];
!   int len = 0;
!   (void) sprintf(x,"%s%s%s%s",buf->af_syspath,buf->af_name,".",buf->af_type);
  
!   if (!strcmp(x,pnt))
!     return;
!   else
!     (void) (strcpy(pnt,x));
!   if (!strcmp(expandmacro("$(hosttype)","")))
!     {
!       (void) sprintf(attributes,"%s%s%s%s%s%d%d%d%d",
  	  buf->af_name,
  	  ".",
  	  buf->af_type,
***************
*** 496,514 ****
   	  buf->af_stime,
  	  buf->af_ltime */
  	  );
  
  /*  i = 0;
    while(buf->af_udattrs[i] != NIL)
      {
!       if ((strlen(attributes) + strlen(buf->af_udattrs[i])) >= MAX_ATTR)
  	errexit(29,NIL);
        (void) strcat(attributes,buf->af_udattrs[i]);
        i++;
      }
  */
!   if ((strlen(attributes) + strlen(longattrs[recdepth])) >= MAX_ATTR)
!     errexit(29,NIL);
! 
    (void) strcat(longattrs[recdepth],attributes);
  
  #ifdef DEBUG_MISC
--- 423,470 ----
   	  buf->af_stime,
  	  buf->af_ltime */
  	  );
+     }
+   else
+     {
+       (void) sprintf(attributes,"%s%s%s%s%s%d%d%d%d",
+ 	  buf->af_name,
+ 	  ".",
+ 	  buf->af_type,
+ 	  expandmacro("$(hosttype)"),
+ 	  buf->af_syspath,
+ 	  buf->af_gen,
+ 	  buf->af_rev,
+ 	  buf->af_state,
+ 	  buf->af_mtime /* ,
+ 	  buf->af_owner.af_username,
+ 	  buf->af_owner.af_userhost,
+ 	  buf->af_author.af_username,
+ 	  buf->af_author.af_userhost,
+ 	  buf->af_locker.af_username,
+ 	  buf->af_locker.af_userhost,
+  	  buf->af_size,
+ 	  buf->af_mode,
+ 	  buf->af_atime,
+ 	  buf->af_ctime,
+  	  buf->af_stime,
+ 	  buf->af_ltime */
+ 	  );
+     }
  
+ 
  /*  i = 0;
    while(buf->af_udattrs[i] != NIL)
      {
!       if ((strlen(attributes) + strlen(buf->af_udattrs[i])) >= MAXATTRLENGTH)
  	errexit(29,NIL);
        (void) strcat(attributes,buf->af_udattrs[i]);
        i++;
      }
  */
!   len = strlen(longattrs[recdepth]);
!   if ((longattrs[recdepth] = realloc(longattrs[recdepth],
! 	     (unsigned) ( len + strlen(attributes) + sizeof(char)))) == NIL)
!     errexit(10,"realloc");
    (void) strcat(longattrs[recdepth],attributes);
  
  #ifdef DEBUG_MISC
***************
*** 524,530 ****
  {
    char time[64];
    /* (void) sprintf(time,"%d",testbuf->af_mtime);
!   (void) strcat(longattrs[recdepth],time); */
  }
  
  
--- 480,486 ----
  {
    char time[64];
    /* (void) sprintf(time,"%d",testbuf->af_mtime);
!      */
  }
  
  
*** version.c	Tue Jun 13 11:35:08 1989
--- /tmp/version.c	Tue Jun 13 11:35:17 1989
***************
*** 24,27 ****
   * 		     Tel: +49-30-314-22972
   * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
   */
! char *version () { static char ConfID[] =  "3.11 Patchlevel_1\n\tThu Mar  9 20:51:10 MET 1989 by wolfgang@coma ";  return ConfID; }
--- 24,27 ----
   * 		     Tel: +49-30-314-22972
   * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
   */
! char *version () { static char ConfID[] =  "3.11 Patchlevel_2\n\tTue Jun 13 11:34:10 MET DST 1989 by wolfgang@coma ";  return ConfID; }
*** /u/shape/shapetools/src/shape/produce.c	Mon Feb 27 17:16:59 1989
--- produce.c	Wed Jun 28 14:55:57 1989
***************
*** 305,312 ****
  			  (void) strcat(comm," ");
  			  j = j + strlen(curdep) + 1;
  			}
- 		      k++;
  		      curdep = cur->deplist[k];
  		    }
  		}
  	      i = i + 2;
--- 305,312 ----
  			  (void) strcat(comm," ");
  			  j = j + strlen(curdep) + 1;
  			}
  		      curdep = cur->deplist[k];
+ 		      k++;
  		    }
  		}
  	      i = i + 2;
SHAR_EOF
fi
if test -f 'sh_3.11.pat3'
then
	echo shar: "will not over-write existing file 'sh_3.11.pat3'"
else
cat << \SHAR_EOF > 'sh_3.11.pat3'
*** /u/shape/shapetools/src/shape/shape.l	Mon Feb 27 18:59:29 1989
--- shape.l	Fri Jun 30 11:00:21 1989
***************
*** 136,142 ****
  Macroname	[0-9a-zA-Z_-]
  Vcl		"::=".*
  Vclass		"vclass"{Layout}*{Ruledef}{Nocomment}
! Macrodef	{Macroname}+{Layout}*"="{Layout}*{Nocomment}
  Rulesecstart	"#%"{Layout}*"RULE-SECTION"{Layout}*
  Rulesecend	"#%"{Layout}*"END-RULE-SECTION"{Layout}*
  Selectionrule	{Rulesecstart}+{Any2}*{Rulesecend}+
--- 136,142 ----
  Macroname	[0-9a-zA-Z_-]
  Vcl		"::=".*
  Vclass		"vclass"{Layout}*{Ruledef}{Nocomment}
! Macrodef	{Layout}*{Macroname}+{Layout}*"="{Layout}*{Nocomment}
  Rulesecstart	"#%"{Layout}*"RULE-SECTION"{Layout}*
  Rulesecend	"#%"{Layout}*"END-RULE-SECTION"{Layout}*
  Selectionrule	{Rulesecstart}+{Any2}*{Rulesecend}+
*** /u/shape/shapetools/src/shape/produce.c	Mon Feb 27 17:16:59 1989
--- produce.c	Fri Jun 30 11:19:59 1989
***************
*** 1126,1131 ****
--- 1126,1133 ----
  
    if (noexflg)
      {
+       if(cmd[0] == '@')
+ 	cmd++;
        printf("%s\n", cmd);
        (void) fflush(stdout);
        reallydone = TRUE;
*** /u/shape/shapetools/src/shape/version.c	Fri Jun 30 11:58:20 1989
--- version.c	Fri Jun 30 12:00:05 1989
***************
*** 24,27 ****
   * 		     Tel: +49-30-314-22972
   * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
   */
! char *version () { static char ConfID[] =  "3.11 Patchlevel_2\n\tTue Jun 13 11:34:10 MET DST 1989 by wolfgang@coma ";  return ConfID; }
--- 24,27 ----
   * 		     Tel: +49-30-314-22972
   * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
   */
! char *version () { static char ConfID[] =  "3.11 Patchlevel_3\n\tThu Mar  9 20:51:10 MET 1989 by wolfgang@coma ";  return ConfID; }
SHAR_EOF
fi
if test -f 'vc_3.31.pat1'
then
	echo shar: "will not over-write existing file 'vc_3.31.pat1'"
else
cat << \SHAR_EOF > 'vc_3.31.pat1'
*** mkattr.c	Thu Mar  9 22:26:51 1989
--- /tmp/mkattr.c[3.8]	Thu Mar  9 22:41:29 1989
***************
*** 1,5 ****
  #ifndef lint
! static char *AFSid = "$Header: mkattr.c[3.6] Thu Feb 23 18:13:34 1989 axel@coma published $";
  #ifdef CFFLGS
  static char *ConfFlg = CFFLGS;
  	/* should be defined from within Makefile */
--- 1,5 ----
  #ifndef lint
! static char *AFSid = "$Header: mkattr.c[3.8] Thu Mar  9 22:41:28 1989 axel@coma published $";
  #ifdef CFFLGS
  static char *ConfFlg = CFFLGS;
  	/* should be defined from within Makefile */
***************
*** 6,18 ****
  #endif
  #endif
  /*
!  * Log for /u/shape/dist-tape/src/vc/mkattr.c[3.2]
!  * 	Thu Feb 23 18:13:34 1989 axel@coma published $
   *  --- empty log message ---
!  *  mkattr.c[3.5] Thu Feb 23 18:13:34 1989 axel@coma published $
   *  --- empty log message ---
!  *  mkattr.c[3.6] Thu Feb 23 18:13:34 1989 axel@coma published $
   *  --- empty log message ---
   */
  
  /*LINTLIBRARY*/
--- 6,24 ----
  #endif
  #endif
  /*
!  * Log for /u/axel/shape/apps/PATCH/mkattr.c[3.2]
!  * 	Thu Mar  9 22:41:28 1989 axel@coma published $
   *  --- empty log message ---
!  *  mkattr.c[3.5] Thu Mar  9 22:41:28 1989 axel@coma published $
   *  --- empty log message ---
!  *  mkattr.c[3.6] Thu Mar  9 22:41:28 1989 axel@coma published $
   *  --- empty log message ---
+  *  mkattr.c[3.7] Thu Mar  9 22:41:28 1989 axel@coma save $
+  *  --- empty log message ---
+  *  mkattr.c[3.8] Thu Mar  9 22:41:28 1989 axel@coma published $
+  *  Corrected the regexp(3) pattern for distinguishing genuine version-numbers
+  *  from symbolic names that contain numbers (e.g. rel1.0a).
+  *  
   */
  
  /*LINTLIBRARY*/
***************
*** 40,46 ****
    char *emsg, *re_comp();
    int genno, revno, rc;
  
!   if (emsg = re_comp("[0-9][0-9]*\\.[0-9][0-9]*")) { /* quite liberal RE */
      logerr (emsg);
      return 0;
    }
--- 46,52 ----
    char *emsg, *re_comp();
    int genno, revno, rc;
  
!   if (emsg = re_comp("^[0-9][0-9]*\\.[0-9][0-9]*$")) { /* quite liberal RE */
      logerr (emsg);
      return 0;
    }
*** dosave.c	Fri Mar 10 20:03:02 1989
--- /tmp/dosave.c[3.22]	Fri Mar 10 20:04:16 1989
***************
*** 1,5 ****
  #ifndef lint
! static char *AFSid = "$Header: dosave.c[3.21] Thu Feb 23 18:13:30 1989 axel@coma published $";
  #ifdef CFFLGS
  static char *ConfFlg = CFFLGS;
  	/* should be defined from within Makefile */
--- 1,5 ----
  #ifndef lint
! static char *AFSid = "$Header: dosave.c[3.22] Fri Mar 10 20:04:16 1989 axel@coma published $";
  #ifdef CFFLGS
  static char *ConfFlg = CFFLGS;
  	/* should be defined from within Makefile */
***************
*** 6,30 ****
  #endif
  #endif
  /*
!  * Log for /u/shape/dist-tape/src/vc/dosave.c[3.8]
!  * 	Thu Feb 23 18:13:30 1989 axel@coma save $
   *  Intention for change:
   *  This is still a test. A minute ago, I was able to set an intention
   *  but now I doubt, that I'll be allowed to set a user defined attribute
   *  to the bus
!  *  dosave.c[3.9] Thu Feb 23 18:13:30 1989 axel@coma save $
   *  Intention for change:
   *  This is still a test. A minute ago, I was able to set an intention
   *  but now I doubt, that I'll be allowed to set a user defined attribute
   *  to the bus
!  *  dosave.c[3.15] Thu Feb 23 18:13:30 1989 axel@coma published $
   *  --- empty log message ---
!  *  dosave.c[3.19] Thu Feb 23 18:13:30 1989 axel@coma published $
   *  --- empty log message ---
!  *  dosave.c[3.20] Thu Feb 23 18:13:30 1989 axel@coma save $
   *  --- empty log message ---
!  *  dosave.c[3.21] Thu Feb 23 18:13:30 1989 axel@coma published $
!  *  --- empty log message ---
   */
  
  #include <strings.h>
--- 6,42 ----
  #endif
  #endif
  /*
!  * Log for /u/axel/shape/apps/PATCH/dosave.c[3.8]
!  * 	Fri Mar 10 20:04:16 1989 axel@coma save $
   *  Intention for change:
   *  This is still a test. A minute ago, I was able to set an intention
   *  but now I doubt, that I'll be allowed to set a user defined attribute
   *  to the bus
!  *  dosave.c[3.9] Fri Mar 10 20:04:16 1989 axel@coma save $
   *  Intention for change:
   *  This is still a test. A minute ago, I was able to set an intention
   *  but now I doubt, that I'll be allowed to set a user defined attribute
   *  to the bus
!  *  dosave.c[3.15] Fri Mar 10 20:04:16 1989 axel@coma published $
   *  --- empty log message ---
!  *  dosave.c[3.19] Fri Mar 10 20:04:16 1989 axel@coma published $
   *  --- empty log message ---
!  *  dosave.c[3.21] Fri Mar 10 20:04:16 1989 axel@coma published $
   *  --- empty log message ---
!  *  dosave.c[3.22] Fri Mar 10 20:04:16 1989 axel@coma published $
!  *  dosave.c[3.23] Fri Mar 10 16:21:55 1989 axel@coma save $
!  *   dosave.c[3.22]:
!  *   In case of 'sbmt' with the -setvnum option, there was a problem when
!  *   a version was unchanged, and the last saved version had status "published".
!  *   sbmt complained about "version number too small". It is a feature of
!  *   AFS, that version numbers of objects with a status > proposed are
!  *   inalterable. "dosave" now sets the version number *before* the status
!  *   is set to published.
!  *   
!  *   Fixed a similar bug as in the previous version. It hit when submitting
!  *   a version with setvnum and no other saved versions exist. I also improved
!  *   SaveAVersion's strange and inconsistent diagnostic behaviour.
!  *  
   */
  
  #include <strings.h>
***************
*** 75,81 ****
    char spath[MAXNAMLEN], origpath[MAXNAMLEN], name[MAXNAMLEN], 
    *afname, *aftype, *afvariant = NULL, str[80], messg[80], *note, 
    *getnote(), *gettxt(), *vnum(), *getattr(), *as;
!   int truth = TRUE;
    Af_attrs reqattrs, busyattrs, sattrs;
    Af_key busy, lastsave, skey, *newkey, ngkey, tmpkey;
    Af_set junkset;
--- 87,93 ----
    char spath[MAXNAMLEN], origpath[MAXNAMLEN], name[MAXNAMLEN], 
    *afname, *aftype, *afvariant = NULL, str[80], messg[80], *note, 
    *getnote(), *gettxt(), *vnum(), *getattr(), *as;
!   int truth = TRUE, chflag = TRUE;
    Af_attrs reqattrs, busyattrs, sattrs;
    Af_key busy, lastsave, skey, *newkey, ngkey, tmpkey;
    Af_set junkset;
***************
*** 154,165 ****
      }
      newkey = &skey;
      ThisTransaction.tr_done = TRUE;
-     if (options & SUBMIT) {
-       af_sstate (newkey, AF_PROPOSED);
-       af_sstate (newkey, AF_PUBLISHED);
-     }
-     (void)sprintf (messg, "saved version %s", vnum (newkey));
-     logmsg (messg);
    }    /* This was handling of newly created archive */
    else {
  #ifdef PROJIMPL
--- 166,171 ----
***************
*** 172,178 ****
  	af_dropkey (&busy);
  	abort_this (FALSE);
        }
!     if (changed (&busy, &lastsave, &truth)) { 
        /* Version alias problem: copy or ref */
        if (options & TXTFSET) {
  	note = gettxt (tfname);
--- 178,184 ----
  	af_dropkey (&busy);
  	abort_this (FALSE);
        }
!     if (chflag = changed (&busy, &lastsave, &truth)) { 
        /* Version alias problem: copy or ref */
        if (options & TXTFSET) {
  	note = gettxt (tfname);
***************
*** 197,239 ****
        newkey = &skey;
        ThisTransaction.tr_done = TRUE;
        af_sudattr (newkey, AF_REMOVE, INTENT);
-       if (options & NEWGEN) {
- 	if (myproject(proj)) {
- 	  af_newgen (newkey, &ngkey);
- 	  (void)sprintf (messg, 
- 		   "saved version %s (aliassed by ",
- 		   vnum (newkey));
- 	  (void)sprintf (messg, "%s%s due to new generation)", messg, vnum(&ngkey)); 
- 	  logmsg (messg);
- 	  af_dropkey (newkey);
- 	  newkey = &ngkey;
- 	  if (options & SUBMIT)
- 	    setpublished (newkey);
- 	}
- 	else {
- 	  logmsg ("You must be project-admin to increase generation number.");
- 	}
-       }
-       else {
- 	(void)sprintf (messg, "saved version %s", vnum (newkey));
- 	logmsg (messg);
- 	if (options & SUBMIT) 
- 	  setpublished (newkey);
-       }
      }
!     else {
        if (options & SUBMIT) {
  	char *intent = (char *)0;
! 	intent = af_rudattr (&busy, INTENT);
! 	note = getnote ("Do you want to comment your modifications ?", truth,
  			FALSE, intent);
  	if (intent) free (intent);
- 	af_sudattr (&busy, AF_REMOVE, INTENT);
- 	setpublished (&lastsave);
- 	(void)sprintf 
- 	  (messg, "%s set to state \"published\" (no changes to be saved)",
- 	   fname);
- 	logmsg (messg);
  	newkey = &lastsave;
        }
        else {
--- 203,215 ----
        newkey = &skey;
        ThisTransaction.tr_done = TRUE;
        af_sudattr (newkey, AF_REMOVE, INTENT);
      }
!     else { /* version is unchanged */
        if (options & SUBMIT) {
  	char *intent = (char *)0;
! 	note = getnote ("Do you want to state a comment ?", truth,
  			FALSE, intent);
  	if (intent) free (intent);
  	newkey = &lastsave;
        }
        else {
***************
*** 253,258 ****
--- 229,244 ----
      as = str;
      af_sudattr (newkey, AF_ADD, as);
    }
+   if (options & NEWGEN) {
+     if (myproject(proj)) {
+       af_newgen (newkey, &ngkey);
+       af_dropkey (newkey);
+       newkey = &ngkey;
+     }
+     else {
+       logmsg ("You must be project-admin to increase generation number.");
+     }
+   }
    if (options & SETVNUM) {
      if (!(mkvno(vnum(newkey)) == newvnum)) { /* do nothing */
        if (af_svnum (newkey, gen(newvnum), rev(newvnum)) < 0) {
***************
*** 262,267 ****
--- 248,257 ----
        }
      }
    }
+   if (options & SUBMIT) setpublished (newkey);
+   (void)sprintf (messg, "%s version %s%s.", (options & SUBMIT) ? "published" :
+ 		 "saved", vnum (newkey), truth ? "" : " (no changes)");
+   logmsg (messg);
    if (options & ATTRDEF) {
      as = getattr (atr_fname, proj, aftype, REWIND);
      af_sudattr (newkey, AF_ADD, as);
*** version.c	Thu Mar  9 22:38:31 1989
--- /tmp/version.c[3.32]	Thu Mar  9 22:42:20 1989
***************
*** 2,7 ****
   *  Prototype version procedure
   */
  char *version () { 
!   static char ConfID[] =  "3.31 (Wed Feb 22 16:31:32 1989 by axel@coma)";
    return ConfID;
  }
--- 2,7 ----
   *  Prototype version procedure
   */
  char *version () { 
!   static char ConfID[] =  "3.31 Patchlevel_1\n\tThu Mar  9 22:34:20 MET 1989 by axel@coma)";
    return ConfID;
  }

*** Makefile	Tue Mar 14 18:14:31 1989
--- /tmp/Makefile[1.3]	Tue Mar 14 18:21:00 1989
***************
*** 1,18 ****
  #
! # $Header: Makefile[1.2] Thu Feb 23 18:13:23 1989 axel@coma published $
  #
! # Log for /u/shape/dist-tape/src/vc/Makefile[1.0]
! # 	Thu Feb 23 18:13:23 1989 axel@coma save $
  #  This Makefile is solely intended for the bootstrap installation
  #  of the SHAPE version-control system. It should be invoked by a 
  #  master Make 'install' process defining the macros BASE, SYSTEM, and
  #  possibly CONFIG from the commandline.
  #  
! #  Makefile[1.1] Thu Feb 23 18:13:23 1989 axel@coma published $
  #  added target 'depend:'. Works very nice.
  #  
! #  Makefile[1.2] Thu Feb 23 18:13:23 1989 axel@coma published $
  #  --- empty log message ---
  #
  #
  #  Makefile for Version Control System
--- 1,22 ----
  #
! # $Header: Makefile[1.3] Tue Mar 14 18:21:00 1989 axel@coma save $
  #
! # Log for /u/axel/shape/apps/PATCH/Makefile[1.0]
! # 	Tue Mar 14 18:21:00 1989 axel@coma save $
  #  This Makefile is solely intended for the bootstrap installation
  #  of the SHAPE version-control system. It should be invoked by a 
  #  master Make 'install' process defining the macros BASE, SYSTEM, and
  #  possibly CONFIG from the commandline.
  #  
! #  Makefile[1.1] Tue Mar 14 18:21:00 1989 axel@coma published $
  #  added target 'depend:'. Works very nice.
  #  
! #  Makefile[1.2] Tue Mar 14 18:21:00 1989 axel@coma published $
  #  --- empty log message ---
+ #  Makefile[1.3] Tue Mar 14 18:21:00 1989 axel@coma save $
+ #  Fixed the rule for the installation. It installed in the wrong place
+ #  and made the wrong (if any) links.
+ #  
  #
  #
  #  Makefile for Version Control System
***************
*** 45,54 ****
  INSTALOWNER = shape
  INSTALGROUP = unib
  
- BUCKS = $$
- 
- CC = cc -DCFFLGS='"$(BUCKS)Flags: <$<> $(CFLAGS) $$"'
- 
  CFLAGS = -g -D$(SYSTEM) $(CONFIG) -I$(INCLUDEDIR)
  LDFLAGS = -g
  
--- 49,54 ----
***************
*** 151,157 ****
  
  install: all
  	@echo -n installing version control system in $(INSTALDIR)...; \
! 	(cd $(BASE)/bin; rm -f save retrv vadm vl sbmt vcat vlog) ; \
  	echo -n .; \
  	install -c -m 755 save $(INSTALDIR); \
  	echo -n .; \
--- 151,157 ----
  
  install: all
  	@echo -n installing version control system in $(INSTALDIR)...; \
! 	(cd $(INSTALDIR); rm -f save retrv vadm vl sbmt vcat vlog) ; \
  	echo -n .; \
  	install -c -m 755 save $(INSTALDIR); \
  	echo -n .; \
***************
*** 161,171 ****
  	echo -n .; \
  	install -c -m 755 vl $(INSTALDIR); \
  	echo -n .; \
  	ln save sbmt; \
  	echo -n .; \
  	ln retrv vcat; \
  	echo -n .; \
! 	ln vl vlog; \
  	echo done
  
  depend:
--- 161,172 ----
  	echo -n .; \
  	install -c -m 755 vl $(INSTALDIR); \
  	echo -n .; \
+ 	(cd $(INSTALDIR); \
  	ln save sbmt; \
  	echo -n .; \
  	ln retrv vcat; \
  	echo -n .; \
! 	ln vl vlog); \
  	echo done
  
  depend:
SHAR_EOF
fi
exit 0
#	End of shell archive

wolfgang@coma.UUCP (Wolfgang Obst) (08/21/89)

Here are the second official patches for the shape-toolkit.
The shell archive below conatins 3 files:

		sh_3.11.pat5
		sh_3.11.pat6
		vc_3.31.pat2

Apply the patches sh_3.11.pat{5,6} within the subdirectory
.../src/shape, the patches vc_3.31.pat2 within the subdirectory
.../src/vc using the patch(1) command.

Keep on shapin'
-Wolfgang

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Wolfgang Obst  					TU Berlin FB-20 Sekr. FR 5-6
UUCP: {unido!}coma!wolfgang			Franklinstr. 28/29
BITNET: wolfgang@db0tui62		 	D-1000 Berlin (West) 10
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
------------------------------- CUT HER -----------------------------------

#! /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 (not csh) to create:
#	SHAPE.PATCH.3
#	sh_3.11.pat5
#	sh_3.11.pat6
#	vc_3.31.pat2
# This archive created: Mon Aug 21 16:51:50 1989
export PATH; PATH=/bin:/usr/bin:$PATH
if test -f 'SHAPE.PATCH.3'
then
	echo shar: "will not over-write existing file 'SHAPE.PATCH.3'"
else
cat << \SHAR_EOF > 'SHAPE.PATCH.3'

SHAR_EOF
fi
if test -f 'sh_3.11.pat5'
then
	echo shar: "will not over-write existing file 'sh_3.11.pat5'"
else
cat << \SHAR_EOF > 'sh_3.11.pat5'
*** rule.c	Thu Aug 10 11:55:58 1989
--- rule.c.new	Thu Aug 10 11:56:12 1989
***************
*** 300,305 ****
--- 300,306 ----
    int jjj = 0;
    int kkk = 0;
    int xx = 0;
+   int xx2;
    int ss = 0;
    int minus = 0;
    Bool src_found = FALSE;
***************
*** 362,367 ****
--- 363,370 ----
  	    {
  	      if((current = ruletab[hasht] = (struct rules *) malloc( sizeof(struct rules))) == (struct rules *)NIL)
  		errexit(10,"malloc");
+ 	      for(xx2 = 0; xx2 < MAXDEPS; xx2++)
+ 		current->deplist[xx2] = NIL;
  	    }
  	  else
  	  {
***************
*** 423,428 ****
--- 426,433 ----
  	      {
  		if((current = current->nextrule = (struct rules *) malloc( sizeof(struct rules))) == (struct rules *)NIL)
  		  errexit(10,"malloc");
+ 		for(xx2 = 0; xx2 < MAXDEPS; xx2++)
+ 		  current->deplist[xx2] = NIL;
  	      }
  	  }
  	}
***************
*** 430,435 ****
--- 435,442 ----
  	{
  	  if((current = stdruletab[lastrule] = (struct rules *) malloc( sizeof(struct rules))) == (struct rules *) NIL)
  	    errexit(10,"malloc");
+ 	  for(xx2 = 0; xx2 < MAXDEPS; xx2++)
+ 	    current->deplist[xx2] = NIL;
  	  overload_stdrule();
  	  implicit_suffs[lastrule] = lastrule;
  	  lastrule++;
*** version.c	Thu Aug 10 12:00:20 1989
--- version.c.new	Thu Aug 10 12:01:39 1989
***************
*** 24,27 ****
   * 		     Tel: +49-30-314-22972
   * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
   */
! char *version () { static char ConfID[] =  "3.11 Patchlevel_4\n\tFri Jul 21 17:35:35 MET DST 1989 by wolfgang@coma ";  return ConfID; }
--- 24,27 ----
   * 		     Tel: +49-30-314-22972
   * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
   */
! char *version () { static char ConfID[] =  "3.11 Patchlevel_5\n\tThu Aug 10 12:01:08 MET DST 1989 by wolfgang@coma ";  return ConfID; }
SHAR_EOF
fi
if test -f 'sh_3.11.pat6'
then
	echo shar: "will not over-write existing file 'sh_3.11.pat6'"
else
cat << \SHAR_EOF > 'sh_3.11.pat6'
Only in /u/shape/shapetools/src/shape: Makefile
Only in /u/shape/shapetools/src/shape: Makefile.distribution
Only in /u/shape/shapetools/src/shape: PATCH
Only in /u/shape/shapetools/src/shape: attr.c.orig
diff -c /u/shape/shapetools/src/shape/inherit.c ./inherit.c
*** /u/shape/shapetools/src/shape/inherit.c	Mon Feb 27 17:17:03 1989
--- ./inherit.c	Fri Aug 18 15:27:18 1989
***************
*** 288,294 ****
      else
      (void) sprintf(attr,"%sversion=%d.%d",attr,AF_BUSYVERS,AF_BUSYVERS); */
    (void) strcat(attr, longattrs[depth]);
!   (void) strcpy(longattrs[depth],attr);
    return(attr);
  }
  
--- 288,298 ----
      else
      (void) sprintf(attr,"%sversion=%d.%d",attr,AF_BUSYVERS,AF_BUSYVERS); */
    (void) strcat(attr, longattrs[depth]);
!   free(longattrs[depth]);
!   if((longattrs[depth] = malloc((unsigned) strlen(attr) +
! 				sizeof(char))) == NIL)
!     errexit(10,"malloc");
!     (void) strcpy(longattrs[depth],attr);
    return(attr);
  }
  
diff -c /u/shape/shapetools/src/shape/macro.c ./macro.c
*** /u/shape/shapetools/src/shape/macro.c	Wed Mar 15 17:01:45 1989
--- ./macro.c	Fri Aug 18 17:14:15 1989
***************
*** 30,108 ****
  #ifndef lint
  static char *ConfFlg = CFFLGS;	/* should be defined from within Makefile */
  #endif
- /*
-  * $Log:	macro.c,v $
-  * Revision 3.2  89/02/20  16:25:49  wolfgang
-  * NET-RELEASE
-  * 
-  * Revision 3.1  89/02/08  12:45:34  wolfgang
-  * performance improved.
-  * 
-  * Revision 3.0  89/01/24  11:35:54  wolfgang
-  * New System Generation
-  * 
-  * Revision 2.19  89/01/03  13:11:05  wolfgang
-  * changes done for lint
-  * 
-  * Revision 2.18  88/12/21  15:03:44  wolfgang
-  * changes done for lint
-  * 
-  * Revision 2.17  88/12/15  16:16:23  wolfgang
-  * bug fixed in get_macros (segmantation violation on sissy (SUN))
-  * 
-  * Revision 2.16  88/11/21  20:56:56  wolfgang
-  * changes done for sun
-  * 
-  * Revision 2.15  88/11/18  15:01:18  wolfgang
-  * bug fixed: ::= indicates no longer a macrodef.
-  * 
-  * Revision 2.14  88/11/04  16:41:58  wolfgang
-  * variant macros no are accumulated.
-  * 
-  * Revision 2.13  88/10/27  16:37:40  wolfgang
-  * bugs fixed (new variant handling).
-  * 
-  * Revision 2.12  88/10/20  13:20:56  wolfgang
-  * bug fixed in get_variant_macro.
-  * 
-  * Revision 2.11  88/10/18  17:41:12  wolfgang
-  * new handling for variants implemented. macro expansion changed.
-  * 
-  * Revision 2.10  88/10/14  17:14:10  wolfgang
-  * new procedure: get_variant_macro added and changes don for new
-  * handling of variants.
-  * 
-  * Revision 2.9  88/10/13  12:03:24  wolfgang
-  * handle_comments changed: white space is now required after #%.
-  * 
-  * Revision 2.8  88/09/16  13:30:57  wolfgang
-  * getlin changed. In continuation lines one leading TAB is now suppressd.
-  * 
-  * Revision 2.7  88/09/09  11:40:31  wolfgang
-  * little bug fixed.
-  * 
-  * Revision 2.6  88/09/08  11:57:51  wolfgang
-  * handle_comments(line) improved: # are allowed in quotes.
-  * 
-  * Revision 2.5  88/09/08  11:48:29  wolfgang
-  * handle_comments improved: kills commenmts if there are no quotes.
-  * 
-  * Revision 2.4  88/09/08  10:32:55  wolfgang
-  * handle_comments(line) added. Now comments are allowed in rule- and
-  * variant-section, respectively.
-  * 
-  * Revision 2.3  88/09/07  11:22:38  wolfgang
-  * get_macros changed; the files are copied into a tmp file which is
-  * the input file for yylex.
-  * 
-  * Revision 2.2  88/08/23  16:33:21  wolfgang
-  * In dump() now \t is supressed for generating confid's (im macrodefinitions
-  * \t is not allowed as first char.
-  * 
-  * Revision 2.1  88/08/19  10:17:33  wolfgang
-  * This version is part of a release
-  * 
-  */
  
  #include <stdio.h>
  #include <sys/types.h>
--- 30,35 ----
***************
*** 118,124 ****
  char *template = "/tmp/shapeXXXXXX";
  FILE *temp;
  
- 
  char *curvpath[8] = {NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL};
  char *errstring;
  int macdepth;
--- 45,50 ----
***************
*** 145,150 ****
--- 71,77 ----
    char line[MAXLINELENGTH];
    char line2[MAXLINELENGTH];
    int len = 0;
+   int off;
    while (fgets(line, MAXLINELENGTH, file))   /* getc ?????  */
      {
        len = strlen(line);
***************
*** 154,160 ****
  	  line[len-1] = '\0';
  	  (void) fgets(line2, MAXLINELENGTH, file);
  	  if(line2[0] == '\t')
! 	    (void) strcat(line,&line2[1]);
  	  else
  	    (void) strcat(line,line2);
  	  len = strlen(line);
--- 81,92 ----
  	  line[len-1] = '\0';
  	  (void) fgets(line2, MAXLINELENGTH, file);
  	  if(line2[0] == '\t')
! 	    {
! 	      off = 0;
! 	      while((line2[off] == '\t') || (line2[off] == ' '))
! 		off++;
! 	      (void) strcat(line,&line2[off]);
! 	    }
  	  else
  	    (void) strcat(line,line2);
  	  len = strlen(line);
***************
*** 226,237 ****
    if (!line)
      return;
  
-   if ((name = malloc(MACRONAM)) == NIL)
-     errexit(10,"malloc");
-   if((value = malloc(MACROVAL)) == NIL)
-     errexit(10,"malloc");
    if((line2 = malloc(MAXLINELENGTH)) == NIL)
      errexit(10,"malloc");
    if (*line != '\t')
      {
        p1 = index(line,'=');
--- 158,166 ----
    if (!line)
      return;
  
    if((line2 = malloc(MAXLINELENGTH)) == NIL)
      errexit(10,"malloc");
+ 
    if (*line != '\t')
      {
        p1 = index(line,'=');
***************
*** 256,264 ****
  	  value = p1;
  	  if (strcmp(name,IMPORT) != 0)
  	    {
- #ifdef DEBUG_MACRO
- printf("name=#%s#\nvalue=#%s#\n\n", name, value);
- #endif DEBUG_MACRO
  	      hashv = hashval(name);
  	      addhash(hashv,name,value);
                if (strcmp(name,"VPATH") == 0)
--- 185,190 ----
***************
*** 286,294 ****
  	    }
  	}
      }
-   free(name);
    free(line2);
!   free(value);
  }
  
  char *expandmacro(inpstring)
--- 212,219 ----
  	    }
  	}
      }
    free(line2);
! 
  }
  
  char *expandmacro(inpstring)
***************
*** 306,315 ****
  char *start;
  char newstr[MAXLINELENGTH];
  char *string;
! char *mist;
  char *variant_macro = NIL;
  Bool dollar;
  dollar = FALSE;
  if (macdepth == 0)
      errstring = inpstring;
  
--- 231,241 ----
  char *start;
  char newstr[MAXLINELENGTH];
  char *string;
! char mist[2048];
  char *variant_macro = NIL;
  Bool dollar;
  dollar = FALSE;
+ 
  if (macdepth == 0)
      errstring = inpstring;
  
***************
*** 318,326 ****
--- 244,256 ----
  if (macdepth == 50)
    errexit(25, errstring);
  
+ if(index(inpstring,'$') == NIL)
+   return(inpstring);
+ 
  newstr[0] = '\0';
  if ((string = malloc((unsigned) (strlen(inpstring) + sizeof(char)))) == NIL)
    errexit(10,"malloc");
+ 
  (void) strcpy(string,inpstring);
  p = string;
  
***************
*** 332,337 ****
--- 262,268 ----
  	  {
  	    list[ii] = p;
  	    ii++;
+ 	    list[ii] = NIL;
  	    dollar = FALSE;
  	  }
    	if (ii > 100)
***************
*** 385,395 ****
  		variant_macro = get_variant_macro(name);
  		if (strcmp(variant_macro,BLUMENKOHL))
  		  {
! 		    mist = expandmacro(variant_macro);
  		    if ((list[ii] =
  			 malloc((unsigned)
  				(strlen(mist) + sizeof(char)))) == NIL)
  		      errexit(10,"malloc");
  		    (void) strcpy(list[ii],mist);
  		    ii++;
  		    if (ii > 100)
--- 316,327 ----
  		variant_macro = get_variant_macro(name);
  		if (strcmp(variant_macro,BLUMENKOHL))
  		  {
! 		    (void) strcpy(mist,expandmacro(variant_macro));
  		    if ((list[ii] =
  			 malloc((unsigned)
  				(strlen(mist) + sizeof(char)))) == NIL)
  		      errexit(10,"malloc");
+ 		    list[ii+1] = NIL;
  		    (void) strcpy(list[ii],mist);
  		    ii++;
  		    if (ii > 100)
***************
*** 408,418 ****
  		    
  		    if ((strcmp(current->name, name) == 0))
  		      {
! 			mist = expandmacro(current->entry);
  			if ((list[ii] =
  			     malloc((unsigned) 
  				    (strlen(mist) + sizeof(char)))) == NIL)
  			  errexit(10,"malloc");
  			(void) strcpy(list[ii],mist);
  			ii++;
  			if (ii > 100)
--- 340,351 ----
  		    
  		    if ((strcmp(current->name, name) == 0))
  		      {
! 			(void) strcpy(mist,expandmacro(current->entry));
  			if ((list[ii] =
  			     malloc((unsigned) 
  				    (strlen(mist) + sizeof(char)))) == NIL)
  			  errexit(10,"malloc");
+ 			list[ii+1] = NIL;
  			(void) strcpy(list[ii],mist);
  			ii++;
  			if (ii > 100)
***************
*** 424,430 ****
        }
    }
  for (j = 0; j < ii; j++)
!      (void) strcat(newstr,list[j]);
  macdepth = 0;
  return newstr;
  } /*end expandmacro */
--- 357,366 ----
        }
    }
  for (j = 0; j < ii; j++)
! {
!   (void) strcat(newstr,list[j]);
! }
! free(string);
  macdepth = 0;
  return newstr;
  } /*end expandmacro */
Only in /u/shape/shapetools/src/shape: macro.c.orig
diff -c /u/shape/shapetools/src/shape/main.c ./main.c
*** /u/shape/shapetools/src/shape/main.c	Mon Feb 27 17:17:01 1989
--- ./main.c	Fri Aug 18 16:05:45 1989
***************
*** 187,193 ****
  #ifdef MEMDEBUG
  memprot = fopen ("memprot", "w");
  #endif
- 
  rebuildflg = FALSE;
  bpoolflg = TRUE;
  
--- 187,192 ----
Only in /u/shape/shapetools/src/shape: misc.c.orig
diff -c /u/shape/shapetools/src/shape/produce.c ./produce.c
*** /u/shape/shapetools/src/shape/produce.c	Fri Jun 30 12:03:00 1989
--- ./produce.c	Fri Aug 18 15:27:35 1989
***************
*** 1116,1126 ****
    Bool ignflg = FALSE;
    char *rc;
    Bool silflg;
! 
    cmd = repl_string(cmd);
    
    silflg = silentflg;
! 
    while((cmd[0] == '\t') || (cmd[0] == ' ') || (cmd[0] == '\n'))
      *cmd++;
  
--- 1116,1128 ----
    Bool ignflg = FALSE;
    char *rc;
    Bool silflg;
!   char *free_cmd_ptr;
!   char *old_cmd;
!   old_cmd = cmd;
    cmd = repl_string(cmd);
    
    silflg = silentflg;
!   free_cmd_ptr = cmd;
    while((cmd[0] == '\t') || (cmd[0] == ' ') || (cmd[0] == '\n'))
      *cmd++;
  
***************
*** 1170,1176 ****
  	    }
  	}
      }
!   free(cmd);
  }
  
  
--- 1172,1179 ----
  	    }
  	}
      }
!   if(old_cmd != free_cmd_ptr)
!     free(free_cmd_ptr);
  }
  
  
Only in /u/shape/shapetools/src/shape: produce.c.orig
Only in /u/shape/shapetools/src/shape: rule.c.orig
Only in /u/shape/shapetools/src/shape: shape.l.orig
Only in .: shape.sh
diff -c /u/shape/shapetools/src/shape/std.c ./std.c
*** /u/shape/shapetools/src/shape/std.c	Mon Feb 27 17:16:50 1989
--- ./std.c	Fri Aug 18 15:27:50 1989
***************
*** 381,387 ****
  	    while (stdrules[i][0] == '\t')
  	      {
  		comm->command = stdrules[i];
! 		if ((comm = comm->nextcmd = (struct cmds *) malloc( sizeof (struct cmds *))) == (struct cmds *) NIL)
  		  errexit(10,"malloc");
  		i++;
  	      }
--- 381,387 ----
  	    while (stdrules[i][0] == '\t')
  	      {
  		comm->command = stdrules[i];
! 		if ((comm = comm->nextcmd = (struct cmds *) malloc( sizeof (struct cmds))) == (struct cmds *) NIL)
  		  errexit(10,"malloc");
  		i++;
  	      }
diff -c /u/shape/shapetools/src/shape/version.c ./version.c
*** /u/shape/shapetools/src/shape/version.c	Thu Aug 10 12:03:41 1989
--- ./version.c	Fri Aug 18 17:20:08 1989
***************
*** 24,27 ****
   * 		     Tel: +49-30-314-22972
   * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
   */
! char *version () { static char ConfID[] =  "3.11 Patchlevel_5\n\tThu Aug 10 12:01:08 MET DST 1989 by wolfgang@coma ";  return ConfID; }
--- 24,27 ----
   * 		     Tel: +49-30-314-22972
   * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
   */
! char *version () { static char ConfID[] =  "3.11 Patchlevel_6\n\tFri Aug 18 17:19:50 MET DST 1989 by wolfgang@coma ";  return ConfID; }
Only in /u/shape/shapetools/src/shape: version.c.orig
Only in .: version.c~
SHAR_EOF
fi
if test -f 'vc_3.31.pat2'
then
	echo shar: "will not over-write existing file 'vc_3.31.pat2'"
else
cat << \SHAR_EOF > 'vc_3.31.pat2'
*** vlmisc.c	Mon Feb 27 17:10:39 1989
--- /tmp/vc/vlmisc.c	Mon Aug 21 11:11:30 1989
***************
*** 148,152 ****
    char *uinfo, *tmp;
    
!   if ((tmp = malloc(MAXNAMLEN + MAXHOSTNAMELEN + 2)) == NULL) {
      fprintf (stderr, "in GetUserInfo: not enough memory\n");
      exit (1);
--- 148,152 ----
    char *uinfo, *tmp;
    
!   if ((tmp = malloc((unsigned) (MAXNAMLEN + MAXHOSTNAMELEN + 2))) == NULL) {
      fprintf (stderr, "in GetUserInfo: not enough memory\n");
      exit (1);
***************
*** 153,157 ****
    }
  
!   if ((uinfo = malloc(20)) == NULL) {
     fprintf (stderr, "in GetUserInfo: not enough memory\n");
      exit (1);
--- 153,157 ----
    }
  
!   if ((uinfo = malloc((unsigned)20)) == NULL) {
     fprintf (stderr, "in GetUserInfo: not enough memory\n");
      exit (1);
***************
*** 283,287 ****
    length += strlen (udas) + 1;	/* plus the new udas */
    length++;
!   if ((cpp = (char **) malloc ((unsigned)(sizeof (char **) * length))) 
        == (char **) NULL) {
      (void)sprintf (error_string, "%s: in AddUdattra(): malloc", Progname);
--- 283,287 ----
    length += strlen (udas) + 1;	/* plus the new udas */
    length++;
!   if ((cpp = (char **) malloc ((unsigned)(sizeof (char *) * length))) 
        == (char **) NULL) {
      (void)sprintf (error_string, "%s: in AddUdattra(): malloc", Progname);
***************
*** 616,621 ****
    }
  
!   files = (char **) NULL;
!   dirs = (char **) NULL;
    
    av = tav;
--- 616,621 ----
    }
  
!   *files = (char *) NULL;
!   *dirs = (char *) NULL;
    
    av = tav;
*** /u/shape/shapetools/src/vc/version.c	Wed Mar 15 17:02:21 1989
--- /tmp/vc/version.c	Mon Aug 21 17:17:12 1989
***************
*** 29,33 ****
   */
  char *version () { 
!   static char ConfID[] =  "3.31 Patchlevel_1\n\tThu Mar  9 22:34:20 MET 1989 by axel@coma)";
    return ConfID;
  }
--- 29,33 ----
   */
  char *version () { 
!   static char ConfID[] =  "3.31 Patchlevel_2\n\tMon Aug 21 17:16:16 MET DST 1989 by uli@coma)";
    return ConfID;
  }
SHAR_EOF
fi
exit 0
#	End of shell archive