[comp.sources.unix] v19i016: A software configuration management system, Part03/33

rsalz@uunet.uu.net (Rich Salz) (06/02/89)

Submitted-by: Axel Mahler <unido!coma!axel>
Posting-number: Volume 19, Issue 16
Archive-name: shape/part03



#! /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 archive 3 (of 33)."
# Contents:  man/man3/afattrs.3 man/man3/afudattrs.3
#   man/man8/afsrepair.8 src/afs/afsrepair.h src/afs/afstates.c
#   src/afs/typeconv.h src/inc/ParseArgs.h src/inc/afsapp.h
#   src/inc/typeconv.h src/misc/hash.h src/shape/Makefile.bsd43
#   src/shape/Makefile.sunos40 src/shape/Makefile.ultrix20
#   src/shape/string.c src/vc/Shapefile src/vc/afsapp.h
#   src/vc/project.c src/vc/retrv.h src/vc/typeconv.h
# Wrapped by rsalz@papaya.bbn.com on Thu Jun  1 19:26:49 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'man/man3/afattrs.3' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'man/man3/afattrs.3'\"
else
echo shar: Extracting \"'man/man3/afattrs.3'\" \(2369 characters\)
sed "s/^X//" >'man/man3/afattrs.3' <<'END_OF_FILE'
X...
X... Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
X...  and U. Pralle
X... 
X... This software is published on an as-is basis. There is ABSOLUTELY NO
X... WARRANTY for any part of this software to work correctly or as described
X... in the manuals. We do not accept any liability for any kind of damage
X... caused by use of this software, such as loss of data, time, money, or 
X... effort.
X... 
X... Permission is granted to use, copy, modify, or distribute any part of
X... this software as long as this is done without asking for charge, and
X... provided that this copyright notice is retained as part of the source
X... files. You may charge a distribution fee for the physical act of
X... transferring a copy, and you may at your option offer warranty
X... protection in exchange for a fee.
X... 
X... Direct questions to: Tech. Univ. Berlin
X... 		     Wilfried Koch
X... 		     Sekr. FR 5-6 
X... 		     Franklinstr. 28/29
X... 		     D-1000 Berlin 10, West Germany
X... 
X... 		     Tel: +49-30-314-22972
X... 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
X... 
X.TH AF_ATTRS 3 "" \n(dy.\n(mo.\n(yr
X.SH NAME
Xaf_attrs \(em return simple attributes of ASOs
X.SH SYNOPSIS
X\fB#include <afs.h>
X.sp
Xchar *af_rname (key)
X.br
XAf_key	*key;
X.sp
Xchar *af_rtype (key)
X.br
XAf_key	*key;
X.sp
Xchar *af_rsyspath (key)
X.br
XAf_key	*key;
X.sp
Xaf_rgen (key)
X.br
XAf_key	*key;
X.sp
Xaf_rrev (key)
X.br
XAf_key	*key;
X.sp
Xaf_gattrs (key, attrbuf)
X.br
XAf_key	   *key;
X.br
XAf_attrs	*attrbuf;
X.SH DESCRIPTION
XThe functions \fIaf_rname, af_rtype\fR and \fIaf_rsyspath\fR
Xare used for reading name, type or system path of the ASO
Xpointed to by key.
XA pointer to a buffer allocated by \fImalloc(3)\fR containing the
Xresult is returned. Use \fIfree(3)\fR to make the space available
Xfor further allocation.
X.PP
X\fIAf_rgen\fR and \fIaf_rrev\fR return generation or revision number of
Xthe identified ASO.
X.PP
X\fIAf_gattrs\fR returns the complete attribute buffer (\fIattrbuf\fR)
Xof the ASO identified by \fIkey\fR.
XThe user defined attributes contained in the attribute buffer reside
Xin memory allocated by \fImalloc(3)\fR.
XUse \fIfree(3)\fR on the pointers \fIattrbuf.af_udattrs[i]\fR (for each
Xoccupied slot) to make the space available for further allocation.
X.SH SEE ALSO
Xfree(3)
X.SH DIAGNOSTICS
XUpon error, \-1 is returned and \fIaf_errno\fR is set to the corresponding
Xerror number
X
X
END_OF_FILE
if test 2369 -ne `wc -c <'man/man3/afattrs.3'`; then
    echo shar: \"'man/man3/afattrs.3'\" unpacked with wrong size!
fi
# end of 'man/man3/afattrs.3'
fi
if test -f 'man/man3/afudattrs.3' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'man/man3/afudattrs.3'\"
else
echo shar: Extracting \"'man/man3/afudattrs.3'\" \(2453 characters\)
sed "s/^X//" >'man/man3/afudattrs.3' <<'END_OF_FILE'
X...
X... Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
X...  and U. Pralle
X... 
X... This software is published on an as-is basis. There is ABSOLUTELY NO
X... WARRANTY for any part of this software to work correctly or as described
X... in the manuals. We do not accept any liability for any kind of damage
X... caused by use of this software, such as loss of data, time, money, or 
X... effort.
X... 
X... Permission is granted to use, copy, modify, or distribute any part of
X... this software as long as this is done without asking for charge, and
X... provided that this copyright notice is retained as part of the source
X... files. You may charge a distribution fee for the physical act of
X... transferring a copy, and you may at your option offer warranty
X... protection in exchange for a fee.
X... 
X... Direct questions to: Tech. Univ. Berlin
X... 		     Wilfried Koch
X... 		     Sekr. FR 5-6 
X... 		     Franklinstr. 28/29
X... 		     D-1000 Berlin 10, West Germany
X... 
X... 		     Tel: +49-30-314-22972
X... 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
X... 
X.TH AF_UDATTRS 3 "" \n(dy.\n(mo.\n(yr
X.SH NAME
Xaf_udattrs \(em read and modify user defined attributes 
X.SH SYNOPSIS
X\fB#include <afs.h>
X.sp
Xaf_sudattr (key, mode, attr)
X.br
XAf_key	*key;
X.br
Xint	mode;
X.br
Xchar	*attr;
X.sp
Xchar *af_rudattr (key, attrname);
X.br
XAf_key	*key;
X.br
Xchar	*attrname;
X.SH DESCRIPTION
X\fIAf_sudattr\fR is used to manipulate the
Xuser defined attributes of ASOs.
XUser defined attributes are strings of the following form:
X.RS
X\fBname\fR[\fB=value\fR] .
X.RE
X.PP
XFor manipulating user defined attributes you have three modes:
X.IP AF_ADD
Xadd value(s) to entry if name is present or add entry otherwise.
X.IP AF_REMOVE
Xremove user defined attribute.
X.IP AF_REPLACE
Xreplace an existing user defined attribute (fails, if no appropriate
Xattribute exists).
X.RE
X.PP
X\fIAf_rudattr\fR returns a pointer to the list of values of a the
Xuser defined attribute identified by \fIattrname\fR.
XMultiple values are separated by a newline ('\\n').
XIf no corresponding entry is found, af_rudattr returns a nil pointer.
X.br
XThe user defined attribute returned by \fIaf_rudattr\fR resides in memory
Xallocated by \fImalloc(3)\fR.
XUse \fIfree(3)\fR to make the space available for further allocation.
X.SH SEE ALSO
Xfree (3)
X.SH DIAGNOSTICS
XUpon error, \-1 or a nil pointer (depending on the return type) is returned
Xand \fIaf_errno\fR is set to the corresponding error number.
END_OF_FILE
if test 2453 -ne `wc -c <'man/man3/afudattrs.3'`; then
    echo shar: \"'man/man3/afudattrs.3'\" unpacked with wrong size!
fi
# end of 'man/man3/afudattrs.3'
fi
if test -f 'man/man8/afsrepair.8' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'man/man8/afsrepair.8'\"
else
echo shar: Extracting \"'man/man8/afsrepair.8'\" \(2797 characters\)
sed "s/^X//" >'man/man8/afsrepair.8' <<'END_OF_FILE'
X...
X... Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
X...  and U. Pralle
X... 
X... This software is published on an as-is basis. There is ABSOLUTELY NO
X... WARRANTY for any part of this software to work correctly or as described
X... in the manuals. We do not accept any liability for any kind of damage
X... caused by use of this software, such as loss of data, time, money, or 
X... effort.
X... 
X... Permission is granted to use, copy, modify, or distribute any part of
X... this software as long as this is done without asking for charge, and
X... provided that this copyright notice is retained as part of the source
X... files. You may charge a distribution fee for the physical act of
X... transferring a copy, and you may at your option offer warranty
X... protection in exchange for a fee.
X... 
X... Direct questions to: Tech. Univ. Berlin
X... 		     Wilfried Koch
X... 		     Sekr. FR 5-6 
X... 		     Franklinstr. 28/29
X... 		     D-1000 Berlin 10, West Germany
X... 
X... 		     Tel: +49-30-314-22972
X... 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
X... 
X.TH AFSREPAIR 8 "" \n(dy.\n(mo.\n(yr
X.SH NAME
Xafsrepair \- repair corrupted AFS archive files
X.SH SYNOPSIS
X.B afsrepair
X.RB [ \-l
X.IR "verbosity level" ]
X.RB [ \-v ]
Xfile1 ...
X.SH DESCRIPTION
X\fIAfsrepair\fR checks the archive files for a given
X.UX
Xfile for inconsistencies.
XIf a corrupted archive file is found, \fIafsrepair\fR tries to
Xrepair it by reconstructing missing parts and eliminating inconsistencies.
X\fIAfsrepair\fR is interactive and (hopefully) self explanatory.
XWhen giving the filename \fIbinary_pool\fR as argument, \fIafsrepair\fR
Xtries it's hand at a binary pool.
X.LP
XThe \f(BI\-l\fR option indicates the level of verbosity.
X.IP 0 0.2i
Xsilent.
X.br
XIn this case, \fIafsrepair\fR tries to repair corrupted archive
Xfiles without human assistance. 
X.IP 1
Xnormal (default).
X.br
XThis level causes \fIafsrepair\fR to consult the caller what to do, when
Xit determines any inconsistencies or missing information
Xwhile scanning an archive file.
X.IP 2
Xverbose.
X.br
XThis level of verbosity serves for manipulating archive files
Xthan for repairing them.
XIt shall be used only by \fIvery experienced\fR users.
XFor nearly every item in the archive file, \fIafsrepair\fR asks the caller
Xfor confirmation or modification. Beware, this level of verbosity can be
Xvery annoying when the archive file is big.
X.RE
X.LP
XThe \f(BI\-v\fR option causes \fIafsrepair\fR to print its current
Xversion number. No file processing is done.
X.SH SEE ALSO
Xafarchive(5)
X.SH BUGS
XDates appear in internal form (seconds from 1970) rather than in human
Xreadable form.
X.LP
XIn Phase 6 (check connectivity), some checks are still missing.
X.SH AUTHOR
XAndreas Lampen, TU Berlin
X.br
X.ta 0.7i 
XUUCP:	unido!coma!andy
X.br
XBITNET:	andy@db0tui62
END_OF_FILE
if test 2797 -ne `wc -c <'man/man8/afsrepair.8'`; then
    echo shar: \"'man/man8/afsrepair.8'\" unpacked with wrong size!
fi
# end of 'man/man8/afsrepair.8'
fi
if test -f 'src/afs/afsrepair.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/afs/afsrepair.h'\"
else
echo shar: Extracting \"'src/afs/afsrepair.h'\" \(2502 characters\)
sed "s/^X//" >'src/afs/afsrepair.h' <<'END_OF_FILE'
X/*
X * Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
X *  and U. Pralle
X * 
X * This software is published on an as-is basis. There is ABSOLUTELY NO
X * WARRANTY for any part of this software to work correctly or as described
X * in the manuals. We do not accept any liability for any kind of damage
X * caused by use of this software, such as loss of data, time, money, or 
X * effort.
X * 
X * Permission is granted to use, copy, modify, or distribute any part of
X * this software as long as this is done without asking for charge, and
X * provided that this copyright notice is retained as part of the source
X * files. You may charge a distribution fee for the physical act of
X * transferring a copy, and you may at your option offer warranty
X * protection in exchange for a fee.
X * 
X * Direct questions to: Tech. Univ. Berlin
X * 		     Wilfried Koch
X * 		     Sekr. FR 5-6 
X * 		     Franklinstr. 28/29
X * 		     D-1000 Berlin 10, West Germany
X * 
X * 		     Tel: +49-30-314-22972
X * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
X */
X/*
X * AFS-test -- type definitions for archive repair tool
X *
X *	Author:	Andreas Lampen (andy@coma.UUCP
X *				andy@db0tui62.BITNET)
X *
X *	$Header: afsrepair.h[1.2] Wed Feb 22 16:28:06 1989 andy@coma published $
X */
X
X/*** levels ***/
X#define SILENT     0
X#define NORMAL     1
X#define VERBOSE    2
X#define EVERYTHING 3
X
X#define MAXREVS 256
X#define MAXUDAS 256
X
Xtypedef struct {
X  char    *string;
X  int     curPos;
X  int     length;
X} Input;
X
Xtypedef struct {
X  off_t   datasize;
X  int     noOfRevisions;
X  char    *host;
X  char    *syspath;
X  char    *name;
X  char    *type;
X  char    *ownerName;
X  char    *ownerHost;
X} ConstAttrs;
X
Xtypedef struct {
X  int     generation;
X  int     revision;
X  int     state;
X  u_short mode;
X  char    *variant;
X  char    *authorName;
X  char    *authorHost;
X  char    *lockerName;
X  char    *lockerHost;
X  time_t  lockTime;
X  time_t  modTime;
X  time_t  accessTime;
X  time_t  statChangeTime;
X  time_t  saveTime;
X  int     representation;
X  off_t   fileSize;
X  off_t   deltaSize;
X  int     succGen;
X  int     succRev;
X  int     predGen;
X  int     predRev;
X} Revision;
X
Xtypedef struct {
X  int     generation;
X  int     revision;
X  int     size;
X  char    *uda[MAXUDAS];
X} Udas;
X
Xtypedef struct {
X  int     generation;
X  int     revision;
X  off_t   size;
X  char    *contents;
X} Note;
X
Xtypedef struct {
X  int     generation;
X  int     revision;
X  int     representation;
X  off_t   size;
X  char    *contents;
X} Data;
X
X
END_OF_FILE
if test 2502 -ne `wc -c <'src/afs/afsrepair.h'`; then
    echo shar: \"'src/afs/afsrepair.h'\" unpacked with wrong size!
fi
# end of 'src/afs/afsrepair.h'
fi
if test -f 'src/afs/afstates.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/afs/afstates.c'\"
else
echo shar: Extracting \"'src/afs/afstates.c'\" \(2730 characters\)
sed "s/^X//" >'src/afs/afstates.c' <<'END_OF_FILE'
X/*
X * Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
X *  and U. Pralle
X * 
X * This software is published on an as-is basis. There is ABSOLUTELY NO
X * WARRANTY for any part of this software to work correctly or as described
X * in the manuals. We do not accept any liability for any kind of damage
X * caused by use of this software, such as loss of data, time, money, or 
X * effort.
X * 
X * Permission is granted to use, copy, modify, or distribute any part of
X * this software as long as this is done without asking for charge, and
X * provided that this copyright notice is retained as part of the source
X * files. You may charge a distribution fee for the physical act of
X * transferring a copy, and you may at your option offer warranty
X * protection in exchange for a fee.
X * 
X * Direct questions to: Tech. Univ. Berlin
X * 		     Wilfried Koch
X * 		     Sekr. FR 5-6 
X * 		     Franklinstr. 28/29
X * 		     D-1000 Berlin 10, West Germany
X * 
X * 		     Tel: +49-30-314-22972
X * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
X */
X/*LINTLIBRARY*/
X/*
X *	Shape/AFS
X *
X *	afstates.c - operations on version states
X *
X *	Author: Andreas Lampen, TU-Berlin (andy@coma.UUCP
X *					   andy@db0tui62.BITNET)
X *
X *	$Header: afstates.c[1.3] Wed Feb 22 16:28:10 1989 andy@coma published $
X *
X *	EXPORT:
X *	af_rstate -- return version state
X *	af_sstate -- set revision state
X */
X
X#include <stdio.h>
X
X#include "typeconv.h"
X#include "afsys.h"
X#include "afs.h"
X
X/*====================================================================
X *    af_rstate -- return version state
X *
X *====================================================================*/
X
XEXPORT af_rstate (key)
X     Af_key *key;
X{
X  if (af_keytest (key))
X    SFAIL ("rstate", "", AF_EINVKEY, ERROR);
X  if (VATTR(key).af_class & AF_DERIVED)
X    SFAIL ("rstate", "", AF_EDERIVED, ERROR);
X
X  return ((int) VATTR(key).af_state);
X}
X
X/*====================================================================
X *    af_sstate -- set version state
X *
X *====================================================================*/
X
XEXPORT af_sstate (key, state)
X     Af_key 	*key;
X     int        state;
X{
X  if (af_keytest (key))
X    SFAIL ("sstate", "", AF_EINVKEY, ERROR);
X  if (VATTR(key).af_class & AF_DERIVED)
X    SFAIL ("sstate", "", AF_EDERIVED, ERROR);
X
X  if (af_checkperm (key, AF_OWNER | AF_AUTHOR | AF_LOCKHOLDER) == ERROR)
X    return (ERROR);
X
X  if ((state < AF_SAVED) || (state > AF_FROZEN) ||
X      (abs(VATTR(key).af_state - state) == 1))
X    {
X      VATTR(key).af_state = state;
X    }
X  else
X    SFAIL ("sstate", "", AF_ESTATE, ERROR);
X  /* save changes */
X  if (af_updtvers (key, AF_CHANGE) == ERROR)
X    return (ERROR);
X  
X  return (AF_OK);
X} /* af_sstate */
END_OF_FILE
if test 2730 -ne `wc -c <'src/afs/afstates.c'`; then
    echo shar: \"'src/afs/afstates.c'\" unpacked with wrong size!
fi
# end of 'src/afs/afstates.c'
fi
if test -f 'src/afs/typeconv.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/afs/typeconv.h'\"
else
echo shar: Extracting \"'src/afs/typeconv.h'\" \(2337 characters\)
sed "s/^X//" >'src/afs/typeconv.h' <<'END_OF_FILE'
X/*
X * Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
X *  and U. Pralle
X * 
X * This software is published on an as-is basis. There is ABSOLUTELY NO
X * WARRANTY for any part of this software to work correctly or as described
X * in the manuals. We do not accept any liability for any kind of damage
X * caused by use of this software, such as loss of data, time, money, or 
X * effort.
X * 
X * Permission is granted to use, copy, modify, or distribute any part of
X * this software as long as this is done without asking for charge, and
X * provided that this copyright notice is retained as part of the source
X * files. You may charge a distribution fee for the physical act of
X * transferring a copy, and you may at your option offer warranty
X * protection in exchange for a fee.
X * 
X * Direct questions to: Tech. Univ. Berlin
X * 		     Wilfried Koch
X * 		     Sekr. FR 5-6 
X * 		     Franklinstr. 28/29
X * 		     D-1000 Berlin 10, West Germany
X * 
X * 		     Tel: +49-30-314-22972
X * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
X */
X/*
X * $Header: typeconv.h[1.1] Thu Feb 23 18:13:59 1989 axel@coma published $
X *
X * Log for /u/shape/dist-tape/src/vc/typeconv.h[1.0]
X * 	Thu Feb 23 18:13:59 1989 axel@coma published $
X *  --- empty log message ---
X *  typeconv.h[1.1] Thu Feb 23 18:13:59 1989 axel@coma published $
X *  --- empty log message ---
X */
X
X
X#ifndef _TYPECONV_
X#define _TYPECONV_
X#if !(defined (ULTRIX_2_0) | defined (BSD_4_3) | defined (SUNOS_4_0)) 
X#define BSD_4_3
X#endif
X
X#ifdef ULTRIX_2_0
X#ifndef Sfunc_t
X#define Sfunc_t void        /* type of function argument to signal call */
X#endif
X#ifndef Size_t
X#define Size_t unsigned      /* used for args to malloc(), fread() etc. */
X#endif
X#ifndef Uid_t
X#define Uid_t int            /* used for user-id types */
X#endif
X#ifndef Gid_t
X#define Gid_t int            /* used for user-id types */
X#endif
X#endif
X
X#ifdef BSD_4_3
X#ifndef Sfunc_t
X#define Sfunc_t int
X#endif Sfunc_t
X#ifndef Size_t
X#define Size_t int
X#endif Size_t
X#ifndef Uid_t
X#define Uid_t uid_t
X#endif Uid_t
X#ifndef Gid_t
X#define Gid_t gid_t
X#endif Gid_t
X#endif
X
X#ifdef SUNOS_4_0
X#ifndef Sfunc_t
X#define Sfunc_t int
X#endif Sfunc_t
X#ifndef Size_t
X#define Size_t int
X#endif Size_t
X#ifndef Uid_t
X#define Uid_t uid_t
X#endif Uid_t
X#ifndef Gid_t
X#define Gid_t gid_t
X#endif Gid_t
X#endif
X#endif _TYPECONV_
END_OF_FILE
if test 2337 -ne `wc -c <'src/afs/typeconv.h'`; then
    echo shar: \"'src/afs/typeconv.h'\" unpacked with wrong size!
fi
# end of 'src/afs/typeconv.h'
fi
if test -f 'src/inc/ParseArgs.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/inc/ParseArgs.h'\"
else
echo shar: Extracting \"'src/inc/ParseArgs.h'\" \(2402 characters\)
sed "s/^X//" >'src/inc/ParseArgs.h' <<'END_OF_FILE'
X/*
X * Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
X *  and U. Pralle
X * 
X * This software is published on an as-is basis. There is ABSOLUTELY NO
X * WARRANTY for any part of this software to work correctly or as described
X * in the manuals. We do not accept any liability for any kind of damage
X * caused by use of this software, such as loss of data, time, money, or 
X * effort.
X * 
X * Permission is granted to use, copy, modify, or distribute any part of
X * this software as long as this is done without asking for charge, and
X * provided that this copyright notice is retained as part of the source
X * files. You may charge a distribution fee for the physical act of
X * transferring a copy, and you may at your option offer warranty
X * protection in exchange for a fee.
X * 
X * Direct questions to: Tech. Univ. Berlin
X * 		     Wilfried Koch
X * 		     Sekr. FR 5-6 
X * 		     Franklinstr. 28/29
X * 		     D-1000 Berlin 10, West Germany
X * 
X * 		     Tel: +49-30-314-22972
X * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
X */
X/*
X * Copyright (C) 1988 Technische Universitaet Berlin
X * 
X * This is a pre-release !
X * 
X * This software is published on an as-is basis. There is ABSOLUTELY NO
X * WARRANTY for any part of this software to work correctly or as described
X * in the manuals. No responsibility or liability for any damage caused
X * by using this software.
X * 
X * No part of this software may be redistributed or used commercially by 
X * any means or in any form.
X * 
X * Direct questions to: Tech. Univ. Berlin
X * 			Wilfried Koch
X * 			Sekr. FR 5-6 
X * 			Franklinstr. 28/29
X * 			D-1000 Berlin 10, West Germany
X * 
X * 			Tel: +49-30-314-22972
X * 			E-mail: shape@coma.uucp or shape@db0tui62.bitnet
X */
X/*
X * $Header: ParseArgs.h,v 2.0 88/06/29 16:14:40 axel Stable $
X *
X * $Log:	ParseArgs.h,v $
X * Revision 2.0  88/06/29  16:14:40  axel
X * New System Generation
X * 
X * Revision 1.1  88/06/07  17:10:03  axel
X * This version is part of a release
X * 
X */
X
X/*  LAST EDIT: Fri Feb 19 15:26:39 1988 by Uli Pralle (coma!uli)  */
X/*
X * ParseArgs.h
X */
X
Xtypedef struct optdesc OptDesc;
X
Xstruct optdesc {
X  char *opt_name;		/* name of option */
X  int opt_kind;			/* kind: SWITCH, HAS_ARG, HAS_OPT_ARG */
X  int (*opt_handler)();		/* Function called if opt is detected */
X};
X
X#define OPT_IS_SWITCH	1
X#define OPT_HAS_ARG	2
X#define OPT_HAS_OPT_ARG 3
X#define OPT_IS_ARG      4
END_OF_FILE
if test 2402 -ne `wc -c <'src/inc/ParseArgs.h'`; then
    echo shar: \"'src/inc/ParseArgs.h'\" unpacked with wrong size!
fi
# end of 'src/inc/ParseArgs.h'
fi
if test -f 'src/inc/afsapp.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/inc/afsapp.h'\"
else
echo shar: Extracting \"'src/inc/afsapp.h'\" \(2874 characters\)
sed "s/^X//" >'src/inc/afsapp.h' <<'END_OF_FILE'
X/*
X * Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
X *  and U. Pralle
X * 
X * This software is published on an as-is basis. There is ABSOLUTELY NO
X * WARRANTY for any part of this software to work correctly or as described
X * in the manuals. We do not accept any liability for any kind of damage
X * caused by use of this software, such as loss of data, time, money, or 
X * effort.
X * 
X * Permission is granted to use, copy, modify, or distribute any part of
X * this software as long as this is done without asking for charge, and
X * provided that this copyright notice is retained as part of the source
X * files. You may charge a distribution fee for the physical act of
X * transferring a copy, and you may at your option offer warranty
X * protection in exchange for a fee.
X * 
X * Direct questions to: Tech. Univ. Berlin
X * 		     Wilfried Koch
X * 		     Sekr. FR 5-6 
X * 		     Franklinstr. 28/29
X * 		     D-1000 Berlin 10, West Germany
X * 
X * 		     Tel: +49-30-314-22972
X * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
X */
X/*
X * $Header: afsapp.h[3.10] Thu Feb 23 18:13:25 1989 axel@coma published $
X *
X * Log for /u/shape/dist-tape/src/vc/afsapp.h[3.7]
X * 	Thu Feb 23 18:13:25 1989 axel@coma published $
X *  --- empty log message ---
X *  afsapp.h[3.9] Thu Feb 23 18:13:25 1989 axel@coma published $
X *  --- empty log message ---
X *  afsapp.h[3.10] Thu Feb 23 18:13:25 1989 axel@coma published $
X *  --- empty log message ---
X */
X
X
X/*
X *  The following definitions are used by most version control
X *  commands.
X */
X
X#ifndef _TYPES_
X#include <sys/types.h>
X#define _TYPES_
X#endif
X#ifndef _TIME_
X#include <sys/time.h>
X#define _TIME_
X#endif
X#ifndef MAXNAMLEN
X#include <sys/dir.h>
X#endif
X#include <setjmp.h>
X#include "typeconv.h"
X
Xstruct Transaction {
X  char tr_fname[MAXNAMLEN];
X  int tr_done;
X  int tr_seqno;
X  int tr_rc;
X  jmp_buf tr_env;
X};
X
X#ifndef TRUE
X#define TRUE 1
X#endif
X#ifndef FALSE
X#define FALSE 0
X#endif
X
X#define fail(x) ((x) == -1)
X#define min(x,y) (((x) <= (y)) ? (x) : (y)) 
X#define gen(x) (((x) >> 16) & 0x0000FFFF)
X#define rev(x) ((x) & 0x0000FFFF)
X#define vc_testlock_g(k) vc_testlock ((k), AF_GLOBALLOCK)
X#define vc_testlock_v(k) vc_testlock ((k), AF_VERSIONLOCK)
X#define vc_lock_g(k,u) vc_lock ((k), (u), AF_GLOBALLOCK)
X#define vc_lock_v(k,u) vc_lock ((k), (u), AF_VERSIONLOCK)
X#define vc_unlock_g(k) vc_unlock ((k), AF_GLOBALLOCK)
X#define vc_unlock_v(k) vc_unlock ((k), AF_VERSIONLOCK)
X
X#define NOSHELL 127
X
X#define MAXTMPF 5
X#define MAXSETS 64
X#define MAXKEYS 64
X#define MAXATTRBUFS 64
X
X#define TYPEF 1
X#define AFSET 2
X#define AFKEY 3
X#define AFATTRS 4
X#define NEXT 1
X#define REWIND 2
X
X#define SYMNAME  "__SymbolicName__"
X#define CLEAD  "__Clead__"
X#define CLEADMAXLEN 32
X#define INTENT "__Intent__=Intention for change:\n"
X#define EMPTYINTENT "--- no intent expressed ---"
X#define EMPTYNOTE "--- empty log message ---"
X
END_OF_FILE
if test 2874 -ne `wc -c <'src/inc/afsapp.h'`; then
    echo shar: \"'src/inc/afsapp.h'\" unpacked with wrong size!
fi
# end of 'src/inc/afsapp.h'
fi
if test -f 'src/inc/typeconv.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/inc/typeconv.h'\"
else
echo shar: Extracting \"'src/inc/typeconv.h'\" \(2337 characters\)
sed "s/^X//" >'src/inc/typeconv.h' <<'END_OF_FILE'
X/*
X * Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
X *  and U. Pralle
X * 
X * This software is published on an as-is basis. There is ABSOLUTELY NO
X * WARRANTY for any part of this software to work correctly or as described
X * in the manuals. We do not accept any liability for any kind of damage
X * caused by use of this software, such as loss of data, time, money, or 
X * effort.
X * 
X * Permission is granted to use, copy, modify, or distribute any part of
X * this software as long as this is done without asking for charge, and
X * provided that this copyright notice is retained as part of the source
X * files. You may charge a distribution fee for the physical act of
X * transferring a copy, and you may at your option offer warranty
X * protection in exchange for a fee.
X * 
X * Direct questions to: Tech. Univ. Berlin
X * 		     Wilfried Koch
X * 		     Sekr. FR 5-6 
X * 		     Franklinstr. 28/29
X * 		     D-1000 Berlin 10, West Germany
X * 
X * 		     Tel: +49-30-314-22972
X * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
X */
X/*
X * $Header: typeconv.h[1.1] Thu Feb 23 18:13:59 1989 axel@coma published $
X *
X * Log for /u/shape/dist-tape/src/vc/typeconv.h[1.0]
X * 	Thu Feb 23 18:13:59 1989 axel@coma published $
X *  --- empty log message ---
X *  typeconv.h[1.1] Thu Feb 23 18:13:59 1989 axel@coma published $
X *  --- empty log message ---
X */
X
X
X#ifndef _TYPECONV_
X#define _TYPECONV_
X#if !(defined (ULTRIX_2_0) | defined (BSD_4_3) | defined (SUNOS_4_0)) 
X#define BSD_4_3
X#endif
X
X#ifdef ULTRIX_2_0
X#ifndef Sfunc_t
X#define Sfunc_t void        /* type of function argument to signal call */
X#endif
X#ifndef Size_t
X#define Size_t unsigned      /* used for args to malloc(), fread() etc. */
X#endif
X#ifndef Uid_t
X#define Uid_t int            /* used for user-id types */
X#endif
X#ifndef Gid_t
X#define Gid_t int            /* used for user-id types */
X#endif
X#endif
X
X#ifdef BSD_4_3
X#ifndef Sfunc_t
X#define Sfunc_t int
X#endif Sfunc_t
X#ifndef Size_t
X#define Size_t int
X#endif Size_t
X#ifndef Uid_t
X#define Uid_t uid_t
X#endif Uid_t
X#ifndef Gid_t
X#define Gid_t gid_t
X#endif Gid_t
X#endif
X
X#ifdef SUNOS_4_0
X#ifndef Sfunc_t
X#define Sfunc_t int
X#endif Sfunc_t
X#ifndef Size_t
X#define Size_t int
X#endif Size_t
X#ifndef Uid_t
X#define Uid_t uid_t
X#endif Uid_t
X#ifndef Gid_t
X#define Gid_t gid_t
X#endif Gid_t
X#endif
X#endif _TYPECONV_
END_OF_FILE
if test 2337 -ne `wc -c <'src/inc/typeconv.h'`; then
    echo shar: \"'src/inc/typeconv.h'\" unpacked with wrong size!
fi
# end of 'src/inc/typeconv.h'
fi
if test -f 'src/misc/hash.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/misc/hash.h'\"
else
echo shar: Extracting \"'src/misc/hash.h'\" \(2315 characters\)
sed "s/^X//" >'src/misc/hash.h' <<'END_OF_FILE'
X/*
X * Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
X *  and U. Pralle
X * 
X * This software is published on an as-is basis. There is ABSOLUTELY NO
X * WARRANTY for any part of this software to work correctly or as described
X * in the manuals. We do not accept any liability for any kind of damage
X * caused by use of this software, such as loss of data, time, money, or 
X * effort.
X * 
X * Permission is granted to use, copy, modify, or distribute any part of
X * this software as long as this is done without asking for charge, and
X * provided that this copyright notice is retained as part of the source
X * files. You may charge a distribution fee for the physical act of
X * transferring a copy, and you may at your option offer warranty
X * protection in exchange for a fee.
X * 
X * Direct questions to: Tech. Univ. Berlin
X * 		     Wilfried Koch
X * 		     Sekr. FR 5-6 
X * 		     Franklinstr. 28/29
X * 		     D-1000 Berlin 10, West Germany
X * 
X * 		     Tel: +49-30-314-22972
X * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
X */
X/*
X * $Header: hash.h[2.1] Thu Feb 23 21:24:22 1989 axel@coma published $
X *
X * Log for /u/shape/dist-tape/src/misc/hash.h[1.1]
X * 	Thu Feb 23 21:24:22 1989 axel@coma save $
X *  --- empty log message ---
X *  hash.h[2.0] Thu Feb 23 21:24:22 1989 axel@coma published $
X *  --- empty log message ---
X *  hash.h[2.1] Thu Feb 23 21:24:22 1989 axel@coma published $
X *  --- empty log message ---
X */
X
X/*
X * $Header: hash.h,v 2.0 88/06/29 16:14:46 axel Stable $
X *
X * $Log:	hash.h,v $
X * Revision 2.0  88/06/29  16:14:46  axel
X * New System Generation
X * 
X * Revision 1.1  88/06/07  17:10:11  axel
X * This version is part of a release
X * 
X */
X
X#define NAMSZ 64   /* estimated max-size of names */
X#define DEFHSIZE 521 /* default size of hashtable */
X
X#define TRUE 1
X#define FALSE 0
X
Xtypedef struct hashent Hashent;		 
X
Xtypedef struct hash Hash;
X
Xstruct hashent { char    symbol[NAMSZ],
X		         symval[NAMSZ];
X		 Hashent *next;
X	       };
X
Xstruct hash { int     hsize,       /* No. of slots in hashtable */
X		      (*fhash)();  /* Pointer to hash-function */
X	      char    *cur_symval; /* Pointer to value of last retrvd. sym */
X#ifdef CCOL
X	      int     collcnt;
X#endif
X	      int     symcount;
X	      Hashent *hashtb;     /* Anchor of hashtable */
X	       };
X
END_OF_FILE
if test 2315 -ne `wc -c <'src/misc/hash.h'`; then
    echo shar: \"'src/misc/hash.h'\" unpacked with wrong size!
fi
# end of 'src/misc/hash.h'
fi
if test -f 'src/shape/Makefile.bsd43' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/shape/Makefile.bsd43'\"
else
echo shar: Extracting \"'src/shape/Makefile.bsd43'\" \(2367 characters\)
sed "s/^X//" >'src/shape/Makefile.bsd43' <<'END_OF_FILE'
X#
X# Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
X#  and U. Pralle
X# 
X# This software is published on an as-is basis. There is ABSOLUTELY NO
X# WARRANTY for any part of this software to work correctly or as described
X# in the manuals. We do not accept any liability for any kind of damage
X# caused by use of this software, such as loss of data, time, money, or effort.
X# 
X# Permission is granted to use, copy, modify, or distribute any part of
X# this software as long as this is done without asking for charge, and
X# provided that this copyright notice is retained as part of the source
X# files. You may charge a distribution fee for the physical act of
X# transferring a copy, and you may at your option offer warranty
X# protection in exchange for a fee.
X# 
X# Direct questions to: Tech. Univ. Berlin
X# 		     Wilfried Koch
X# 		     Sekr. FR 5-6 
X# 		     Franklinstr. 28/29
X# 		     D-1000 Berlin 10, West Germany
X# 
X# 		     Tel: +49-30-314-22972
X# 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
X# 
X#  Configuration definition part
X
XCC = cc -DCFFLGS='"$$Flags: $(CFLAGS) $$"'
XCFLAGS = -g -I$(INCLUDEDIR) -D$(SYSTEM) -D(OLDDBM)
X
X#  Product definition part
X
XHEADER = shape.h $(INCLUDEDIR)/afs.h 
X
XCOMPONENTS = \
X	README \
X	Makefile \
X	attr.c \
X	attr.h \
X	error.c \
X	files.c \
X	files.h \
X	hash.c \
X	hash.h \
X	inherit.c \
X	shape.l \
X	macro.c \
X	macro.h \
X	main.c \
X	shape.h \
X	misc.c \
X	produce.c \
X	rule.c \
X	rule.h \
X	select.c \
X	selrule.c \
X	selrule.h \
X	shape.1 \
X	shapeopt.c \
X	sighand.c \
X	std.c \
X	std.h \
X	string.c \
X	varsec.c \
X	varsec.h \
X	vpath.c
X
XPRODUCT = shape
XPROGS = shape
X
XSHAPOBJS = main.o shape.o hash.o macro.o rule.o files.o error.o produce.o std.o selrule.o attr.o varsec.o select.o vpath.o misc.o sighand.o shapeopt.o inherit.o string.o version.o
X
X#  Product dependencies
X
Xall: shape
X
Xshape: $(SHAPOBJS) $(LIBDIR)/libafs.s $(LIBDIR)/libutil.a
X	cc -g -o $@ $(SHAPOBJS) $(LIBDIR)/libafs.s $(LIBDIR)/libutil.a -ll
X$(SHAPOBJS):	$(HEADER)
Xmacro.o:	$(HEADER) macro.h
Xhash.o:		$(HEADER) hash.h
Xrule.o: 	$(HEADER) rule.h
Xselrule.o:	$(HEADER) selrule.h
Xstd.o:		$(HEADER) std.h
Xvarsec.o:	$(HEADER) varsec.h
Xattr.o:		$(HEADER) attr.h
Xfiles.o:	$(HEADER) files.h
Xversion.o:	version.c
X
XClean:
X	rm shape *.o core
X
Xinstall: all
X	@-for i in $(PROGS); \
X	do \
X	echo installing $$i in $(INSTALDIR); \
X	install -c $$i $(INSTALDIR);\
X	done;
END_OF_FILE
if test 2367 -ne `wc -c <'src/shape/Makefile.bsd43'`; then
    echo shar: \"'src/shape/Makefile.bsd43'\" unpacked with wrong size!
fi
# end of 'src/shape/Makefile.bsd43'
fi
if test -f 'src/shape/Makefile.sunos40' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/shape/Makefile.sunos40'\"
else
echo shar: Extracting \"'src/shape/Makefile.sunos40'\" \(2583 characters\)
sed "s/^X//" >'src/shape/Makefile.sunos40' <<'END_OF_FILE'
X#
X# Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
X#  and U. Pralle
X# 
X# This software is published on an as-is basis. There is ABSOLUTELY NO
X# WARRANTY for any part of this software to work correctly or as described
X# in the manuals. We do not accept any liability for any kind of damage
X# caused by use of this software, such as loss of data, time, money, or effort.
X# 
X# Permission is granted to use, copy, modify, or distribute any part of
X# this software as long as this is done without asking for charge, and
X# provided that this copyright notice is retained as part of the source
X# files. You may charge a distribution fee for the physical act of
X# transferring a copy, and you may at your option offer warranty
X# protection in exchange for a fee.
X# 
X# Direct questions to: Tech. Univ. Berlin
X# 		     Wilfried Koch
X# 		     Sekr. FR 5-6 
X# 		     Franklinstr. 28/29
X# 		     D-1000 Berlin 10, West Germany
X# 
X# 		     Tel: +49-30-314-22972
X# 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
X# 
XAFSLIB = /u/shape/lib/libafs.a
XUTILLIB = /u/shape/lib/libutil.a
XAFSINC = /u/shape/src/inc
XINSTALDIR = /u/shape/bin
X
X# OS sould be one of the following ULTRIX_2_0 SUNOS_4_0 BSD_4_3
X
XOS = SUNOS_4_0
X
X#  Configuration definition part
X
XCC = cc -DCFFLGS='"$$Flags: $(CFLAGS) $$"'
XCFLAGS = -g -I$(AFSINC) -D$(OS)
XLDFLAGS =  -Bstatic
X
X#  Product definition part
X
XHEADER = shape.h $(AFSINC)/afs.h 
X
XCOMPONENTS = \
X	README \
X	Makefile.bsd43 \
X	Makefile.sunos40 \
X	Makefile.ultrix20 \
X	attr.c \
X	attr.h \
X	error.c \
X	files.c \
X	files.h \
X	hash.c \
X	hash.h \
X	inherit.c \
X	shape.l \
X	macro.c \
X	macro.h \
X	main.c \
X	shape.h \
X	misc.c \
X	produce.c \
X	rule.c \
X	rule.h \
X	select.c \
X	selrule.c \
X	selrule.h \
X	shape.1 \
X	shapeopt.c \
X	sighand.c \
X	std.c \
X	std.h \
X	string.c \
X	varsec.c \
X	varsec.h \
X	vpath.c
X
XPRODUCT = shape
XPROGS = shape
X
XSHAPOBJS = main.o shape.o hash.o macro.o rule.o files.o error.o produce.o std.o selrule.o attr.o varsec.o select.o vpath.o misc.o sighand.o shapeopt.o inherit.o string.o version.o
X
X#  Product dependencies
X
Xall: shape
X
Xshape: $(SHAPOBJS) $(AFSLIB) $(UTILLIB)
X	cc -g $(LDFLAGS) -o $@ $(SHAPOBJS) $(UTILLIB) $(AFSLIB) -ll
X$(SHAPOBJS):	$(HEADER)
Xmacro.o:	$(HEADER) macro.h
Xhash.o:		$(HEADER) hash.h
Xrule.o: 	$(HEADER) rule.h
Xselrule.o:	$(HEADER) selrule.h
Xstd.o:		$(HEADER) std.h
Xvarsec.o:	$(HEADER) varsec.h
Xattr.o:		$(HEADER) attr.h
Xfiles.o:	$(HEADER) files.h
Xversion.o:	version.c
X
XClean:
X	rm shape *.o core
X
Xinstall: all
X	@-for i in $(PROGS); \
X	do \
X	echo installing $$i in $(INSTALDIR); \
X	install -c $$i $(INSTALDIR);\
X	done;
END_OF_FILE
if test 2583 -ne `wc -c <'src/shape/Makefile.sunos40'`; then
    echo shar: \"'src/shape/Makefile.sunos40'\" unpacked with wrong size!
fi
# end of 'src/shape/Makefile.sunos40'
fi
if test -f 'src/shape/Makefile.ultrix20' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/shape/Makefile.ultrix20'\"
else
echo shar: Extracting \"'src/shape/Makefile.ultrix20'\" \(2568 characters\)
sed "s/^X//" >'src/shape/Makefile.ultrix20' <<'END_OF_FILE'
X#
X# Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
X#  and U. Pralle
X# 
X# This software is published on an as-is basis. There is ABSOLUTELY NO
X# WARRANTY for any part of this software to work correctly or as described
X# in the manuals. We do not accept any liability for any kind of damage
X# caused by use of this software, such as loss of data, time, money, or effort.
X# 
X# Permission is granted to use, copy, modify, or distribute any part of
X# this software as long as this is done without asking for charge, and
X# provided that this copyright notice is retained as part of the source
X# files. You may charge a distribution fee for the physical act of
X# transferring a copy, and you may at your option offer warranty
X# protection in exchange for a fee.
X# 
X# Direct questions to: Tech. Univ. Berlin
X# 		     Wilfried Koch
X# 		     Sekr. FR 5-6 
X# 		     Franklinstr. 28/29
X# 		     D-1000 Berlin 10, West Germany
X# 
X# 		     Tel: +49-30-314-22972
X# 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
X# 
XAFSLIB = /u/shape/lib/libafs.a
XUTILLIB = /u/shape/lib/libutil.a
XAFSINC = /u/shape/src/inc
XINSTALDIR = /u/shape/bin
X
X# OS sould be one of the following ULTRIX_2_0 SUNOS_4_0 BSD_4_3
X
XOS = ULTRIX_2_0
X
X#  Configuration definition part
X
XCC = cc -DCFFLGS='"$$Flags: $(CFLAGS) $$"'
XCFLAGS = -g -I$(AFSINC) -D$(OS) -DOLDDBM
X
X#  Product definition part
X
XHEADER = shape.h $(AFSINC)/afs.h 
X
XCOMPONENTS = \
X	README \
X	Makefile.bsd43 \
X	Makefile.sunos40 \
X	Makefile.ultrix20 \
X	attr.c \
X	attr.h \
X	error.c \
X	files.c \
X	files.h \
X	hash.c \
X	hash.h \
X	inherit.c \
X	shape.l \
X	macro.c \
X	macro.h \
X	main.c \
X	shape.h \
X	misc.c \
X	produce.c \
X	rule.c \
X	rule.h \
X	select.c \
X	selrule.c \
X	selrule.h \
X	shape.1 \
X	shapeopt.c \
X	sighand.c \
X	std.c \
X	std.h \
X	string.c \
X	varsec.c \
X	varsec.h \
X	vpath.c
X
XPRODUCT = shape
XPROGS = shape
X
XSHAPOBJS = main.o shape.o hash.o macro.o rule.o files.o error.o produce.o std.o selrule.o attr.o varsec.o select.o vpath.o misc.o sighand.o shapeopt.o inherit.o string.o version.o
X
X#  Product dependencies
X
Xall: shape
X
Xshape: $(SHAPOBJS) $(AFSLIB) $(UTILLIB)
X	cc -g -o $@ $(SHAPOBJS) $(UTILLIB) $(AFSLIB) -ldbm -ll
X$(SHAPOBJS):	$(HEADER)
Xmacro.o:	$(HEADER) macro.h
Xhash.o:		$(HEADER) hash.h
Xrule.o: 	$(HEADER) rule.h
Xselrule.o:	$(HEADER) selrule.h
Xstd.o:		$(HEADER) std.h
Xvarsec.o:	$(HEADER) varsec.h
Xattr.o:		$(HEADER) attr.h
Xfiles.o:	$(HEADER) files.h
Xversion.o:	version.c
X
XClean:
X	rm shape *.o core
X
Xinstall: all
X	@-for i in $(PROGS); \
X	do \
X	echo installing $$i in $(INSTALDIR); \
X	install -c $$i $(INSTALDIR);\
X	done;
END_OF_FILE
if test 2568 -ne `wc -c <'src/shape/Makefile.ultrix20'`; then
    echo shar: \"'src/shape/Makefile.ultrix20'\" unpacked with wrong size!
fi
# end of 'src/shape/Makefile.ultrix20'
fi
if test -f 'src/shape/string.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/shape/string.c'\"
else
echo shar: Extracting \"'src/shape/string.c'\" \(2833 characters\)
sed "s/^X//" >'src/shape/string.c' <<'END_OF_FILE'
X/*
X * Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
X *  and U. Pralle
X * 
X * This software is published on an as-is basis. There is ABSOLUTELY NO
X * WARRANTY for any part of this software to work correctly or as described
X * in the manuals. We do not accept any liability for any kind of damage
X * caused by use of this software, such as loss of data, time, money, or 
X * effort.
X * 
X * Permission is granted to use, copy, modify, or distribute any part of
X * this software as long as this is done without asking for charge, and
X * provided that this copyright notice is retained as part of the source
X * files. You may charge a distribution fee for the physical act of
X * transferring a copy, and you may at your option offer warranty
X * protection in exchange for a fee.
X * 
X * Direct questions to: Tech. Univ. Berlin
X * 		     Wilfried Koch
X * 		     Sekr. FR 5-6 
X * 		     Franklinstr. 28/29
X * 		     D-1000 Berlin 10, West Germany
X * 
X * 		     Tel: +49-30-314-22972
X * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
X */
X#ifndef lint
Xstatic char *RCSid = "$Header: string.c,v 3.1 89/02/14 21:20:31 wolfgang Exp $";
X#endif
X#ifndef lint
Xstatic char *ConfFlg = CFFLGS;	/* should be defined from within Makefile */
X#endif
X/*
X * $Log:	string.c,v $
X * Revision 3.1  89/02/14  21:20:31  wolfgang
X * bug fixed in repl_string
X * 
X * Revision 3.0  89/01/24  11:37:12  wolfgang
X * New System Generation
X * 
X * Revision 1.4  89/01/03  13:14:09  wolfgang
X * changes done for lint
X * 
X * Revision 1.3  88/11/18  15:04:02  wolfgang
X * modul names are only expanded if dir is a vpath dir
X * 
X * Revision 1.2  88/08/12  08:58:29  wolfgang
X * This version is part of a release
X * 
X */
X
X#include "shape.h"
X
Xextern Bool is_vpath_dir();
X
Xchar *pathlist[MAXPATHLIST][2];
Xint lastpath;
X
X
Xchar *repl_string(inpstring)
X     char *inpstring;
X{
X  /* replaces "[ \t]<file>[ \t\0" with "[ \t]<dir/file>[ \t\0] */
X
X  int i;
X  int j;
X  int k;
X  int l;
X  int xx;
X  char *l1;
X  char l2[2048];
X
X  if ((l1 = malloc(2048)) == NIL)
X    errexit(10,"malloc");
X
X  l1[0] = '\0';
X  l2[0] = '\0';
X
X  if (lastpath == 0)
X    return(inpstring);
X
X  k = strlen(inpstring);
X
X  (void) strcpy(l1,inpstring);
X
X  for ( i = lastpath-1; i >= 0; i--)
X    {
X      if (strcmp(pathlist[i][1],"&$"))
X	{
X	  l = strlen(pathlist[i][0]);
X	  for(j = 0; j <= k; j++)
X	    {
X	      if(((l1[j - 1] == ' ') || (l1[j - 1] == '\t')) &&
X		 ((l1[j + l]) == ' '|| (l1[j + l] == '\t') ||
X		  (l1[j + l] == '\0')))
X		{
X		  if(!strncmp(&l1[j],pathlist[i][0],l))
X		    {
X		      for (xx = 0; xx < j; xx++)
X			l2[xx] = l1[xx];
X		      l2[j] = '\0';
X		      (void) strcat(l2,pathlist[i][1]);
X		      (void) strcat(l2,&l1[j+l]);
X		      l2[strlen(l2)] = '\0';
X		      (void) strcpy(l1,l2);
X		      l2[0] = '\0';
X		    }
X		}
X	      k = strlen(l1);
X	    }
X	}
X    }
X  return(l1);
X}
END_OF_FILE
if test 2833 -ne `wc -c <'src/shape/string.c'`; then
    echo shar: \"'src/shape/string.c'\" unpacked with wrong size!
fi
# end of 'src/shape/string.c'
fi
if test -f 'src/vc/Shapefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/vc/Shapefile'\"
else
echo shar: Extracting \"'src/vc/Shapefile'\" \(2953 characters\)
sed "s/^X//" >'src/vc/Shapefile' <<'END_OF_FILE'
X#
X# Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
X#  and U. Pralle
X# 
X# This software is published on an as-is basis. There is ABSOLUTELY NO
X# WARRANTY for any part of this software to work correctly or as described
X# in the manuals. We do not accept any liability for any kind of damage
X# caused by use of this software, such as loss of data, time, money, or effort.
X# 
X# Permission is granted to use, copy, modify, or distribute any part of
X# this software as long as this is done without asking for charge, and
X# provided that this copyright notice is retained as part of the source
X# files. You may charge a distribution fee for the physical act of
X# transferring a copy, and you may at your option offer warranty
X# protection in exchange for a fee.
X# 
X# Direct questions to: Tech. Univ. Berlin
X# 		     Wilfried Koch
X# 		     Sekr. FR 5-6 
X# 		     Franklinstr. 28/29
X# 		     D-1000 Berlin 10, West Germany
X# 
X# 		     Tel: +49-30-314-22972
X# 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
X# 
X#  $Header: Makefile,v 1.15 88/04/06 15:00:18 axel Exp $
X#
X# Shapefile for AFS
X#
X# $__Header$
X#
X# $__Log$
X#
X
Xinclude ../config/rules.sh
Xinclude product-definition.sh
X
X#
X#  Product dependencies
X#
X
Xall: $(RULE) +$(SYSTEM) +$(QUALITY) +$(COMPILER) save retrv vl vadm
X
Xone: $(RULE) +$(SYSTEM) +$(QUALITY) +$(COMPILER) $(TN)
X
Xrelease: rel +$(SYSTEM) +final +$(COMPILER) @newrel @publish \
X	save retrv vl vadm
X
Xtrelease: rel +$(SYSTEM) +final +$(COMPILER) \
X	save retrv vl vadm
X
Xsave: $(SAVEOBJS) $(COMMON) $(AFSLIB) $(UTLIB)
X	cc $(LDFLAGS) -o $@ $(SAVEOBJS) $(COMMON) $(UTLIB) $(AFSLIB) 
X
Xretrv: $(RETROBJS) $(COMMON) $(AFSLIB) $(UTLIB)
X	cc $(LDFLAGS) -o $@ $(RETROBJS) $(COMMON) $(UTLIB) $(AFSLIB)
X
Xvl: $(VLOBJS) $(AFSLIB) $(UTLIB)
X	cc $(LDFLAGS) -o $@ $(VLOBJS) $(VERSION).o $(UTLIB) $(AFSLIB)
X
Xvadm: $(VADMOBJS) $(AFSLIB) $(UTLIB)
X	cc $(LDFLAGS) -o $@ $(VADMOBJS) $(VERSION).o $(UTLIB) $(AFSLIB)
X
X#
X# Metatargets
X#
X
X@save:
X	save -q $(COMPONENTS)
X
X@publish:
X	sbmt -q $(COMPONENTS) -n $(RELNAME)
X
X@sunset: vsave $(COMPONENTS)
X	rsh troll -l shape '(cd src/vc; rm -f $(COMPONENTS) )';
X	rcp $(COMPONENTS) shape@troll:src/vc
X
X@vaxset: vsave $(COMPONENTS)
X	rsh chaos -l shape '(cd src/vc; rm -f $(COMPONENTS) )';
X	rcp $(COMPONENTS) shape@chaos:src/vc
X
X@newrel:
X	cp $(VERSIONPROTO) $(VERSION).c ; \
X	sbmt -fq $(VERSION).c -n $(RELNAME)
X
X@bclean:
X	rm -f AFS/?B*
X
X@echocomp:
X	@echo $(COMPONENTS)
X
Xlint: +$(SYSTEM) +$(QUALITY) lintsave lintretrv lintvadm lintvl
X
Xlintsave: $(SAVESRC)
X	@echo checking '"save"'; \
X	lint $(SWITCHES) $(SAVESRC)
X
Xlintretrv: $(RETRSRC)
X	@echo checking '"retrv"'; \
X	lint $(SWITCHES) $(RETRSRC)
X
Xlintvadm: $(VADMSRC)
X	@echo checking '"vadm"'; \
X	lint $(SWITCHES) $(VADMSRC)
X
Xlintvl: $(VLSRC)
X	@echo checking '"vl"'; \
X	lint $(SWITCHES) $(VLSRC)
X
Xdepend: $(RULE) +$(SYSTEM)
X	$(CC) -M $(CFLAGS) $(MODULES) | grep -v /usr/include | \
X	sort | uniq | sed -e 's, ./, ,g' -e 's.$(BASE).$$(BASE).g' > deps
X
Xinclude deps
END_OF_FILE
if test 2953 -ne `wc -c <'src/vc/Shapefile'`; then
    echo shar: \"'src/vc/Shapefile'\" unpacked with wrong size!
fi
# end of 'src/vc/Shapefile'
fi
if test -f 'src/vc/afsapp.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/vc/afsapp.h'\"
else
echo shar: Extracting \"'src/vc/afsapp.h'\" \(2874 characters\)
sed "s/^X//" >'src/vc/afsapp.h' <<'END_OF_FILE'
X/*
X * Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
X *  and U. Pralle
X * 
X * This software is published on an as-is basis. There is ABSOLUTELY NO
X * WARRANTY for any part of this software to work correctly or as described
X * in the manuals. We do not accept any liability for any kind of damage
X * caused by use of this software, such as loss of data, time, money, or 
X * effort.
X * 
X * Permission is granted to use, copy, modify, or distribute any part of
X * this software as long as this is done without asking for charge, and
X * provided that this copyright notice is retained as part of the source
X * files. You may charge a distribution fee for the physical act of
X * transferring a copy, and you may at your option offer warranty
X * protection in exchange for a fee.
X * 
X * Direct questions to: Tech. Univ. Berlin
X * 		     Wilfried Koch
X * 		     Sekr. FR 5-6 
X * 		     Franklinstr. 28/29
X * 		     D-1000 Berlin 10, West Germany
X * 
X * 		     Tel: +49-30-314-22972
X * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
X */
X/*
X * $Header: afsapp.h[3.10] Thu Feb 23 18:13:25 1989 axel@coma published $
X *
X * Log for /u/shape/dist-tape/src/vc/afsapp.h[3.7]
X * 	Thu Feb 23 18:13:25 1989 axel@coma published $
X *  --- empty log message ---
X *  afsapp.h[3.9] Thu Feb 23 18:13:25 1989 axel@coma published $
X *  --- empty log message ---
X *  afsapp.h[3.10] Thu Feb 23 18:13:25 1989 axel@coma published $
X *  --- empty log message ---
X */
X
X
X/*
X *  The following definitions are used by most version control
X *  commands.
X */
X
X#ifndef _TYPES_
X#include <sys/types.h>
X#define _TYPES_
X#endif
X#ifndef _TIME_
X#include <sys/time.h>
X#define _TIME_
X#endif
X#ifndef MAXNAMLEN
X#include <sys/dir.h>
X#endif
X#include <setjmp.h>
X#include "typeconv.h"
X
Xstruct Transaction {
X  char tr_fname[MAXNAMLEN];
X  int tr_done;
X  int tr_seqno;
X  int tr_rc;
X  jmp_buf tr_env;
X};
X
X#ifndef TRUE
X#define TRUE 1
X#endif
X#ifndef FALSE
X#define FALSE 0
X#endif
X
X#define fail(x) ((x) == -1)
X#define min(x,y) (((x) <= (y)) ? (x) : (y)) 
X#define gen(x) (((x) >> 16) & 0x0000FFFF)
X#define rev(x) ((x) & 0x0000FFFF)
X#define vc_testlock_g(k) vc_testlock ((k), AF_GLOBALLOCK)
X#define vc_testlock_v(k) vc_testlock ((k), AF_VERSIONLOCK)
X#define vc_lock_g(k,u) vc_lock ((k), (u), AF_GLOBALLOCK)
X#define vc_lock_v(k,u) vc_lock ((k), (u), AF_VERSIONLOCK)
X#define vc_unlock_g(k) vc_unlock ((k), AF_GLOBALLOCK)
X#define vc_unlock_v(k) vc_unlock ((k), AF_VERSIONLOCK)
X
X#define NOSHELL 127
X
X#define MAXTMPF 5
X#define MAXSETS 64
X#define MAXKEYS 64
X#define MAXATTRBUFS 64
X
X#define TYPEF 1
X#define AFSET 2
X#define AFKEY 3
X#define AFATTRS 4
X#define NEXT 1
X#define REWIND 2
X
X#define SYMNAME  "__SymbolicName__"
X#define CLEAD  "__Clead__"
X#define CLEADMAXLEN 32
X#define INTENT "__Intent__=Intention for change:\n"
X#define EMPTYINTENT "--- no intent expressed ---"
X#define EMPTYNOTE "--- empty log message ---"
X
END_OF_FILE
if test 2874 -ne `wc -c <'src/vc/afsapp.h'`; then
    echo shar: \"'src/vc/afsapp.h'\" unpacked with wrong size!
fi
# end of 'src/vc/afsapp.h'
fi
if test -f 'src/vc/project.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/vc/project.c'\"
else
echo shar: Extracting \"'src/vc/project.c'\" \(2333 characters\)
sed "s/^X//" >'src/vc/project.c' <<'END_OF_FILE'
X/*
X * Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
X *  and U. Pralle
X * 
X * This software is published on an as-is basis. There is ABSOLUTELY NO
X * WARRANTY for any part of this software to work correctly or as described
X * in the manuals. We do not accept any liability for any kind of damage
X * caused by use of this software, such as loss of data, time, money, or 
X * effort.
X * 
X * Permission is granted to use, copy, modify, or distribute any part of
X * this software as long as this is done without asking for charge, and
X * provided that this copyright notice is retained as part of the source
X * files. You may charge a distribution fee for the physical act of
X * transferring a copy, and you may at your option offer warranty
X * protection in exchange for a fee.
X * 
X * Direct questions to: Tech. Univ. Berlin
X * 		     Wilfried Koch
X * 		     Sekr. FR 5-6 
X * 		     Franklinstr. 28/29
X * 		     D-1000 Berlin 10, West Germany
X * 
X * 		     Tel: +49-30-314-22972
X * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
X */
X#ifndef lint
Xstatic char *AFSid = "$Header: project.c[1.4] Thu Feb 23 18:13:39 1989 axel@coma published $";
X#ifdef CFFLGS
Xstatic char *ConfFlg = CFFLGS;
X	/* should be defined from within Makefile */
X#endif
X#endif
X/*
X * Log for /u/shape/dist-tape/src/vc/project.c[1.2]
X * 	Thu Feb 23 18:13:39 1989 axel@coma published $
X *  --- empty log message ---
X *  project.c[1.3] Thu Feb 23 18:13:39 1989 axel@coma published $
X *  --- empty log message ---
X *  project.c[1.4] Thu Feb 23 18:13:39 1989 axel@coma published $
X *  --- empty log message ---
X */
X
X/*LINTLIBRARY*/
X
X#include "project.h"
X
X/*ARGSUSED*/
XGetProject (pname, pstruct) Project *pstruct; char *pname; {
X/*
X * Try to find information about a project. If pname is anything but 
X * a NULL pointer, try to find information about a project of this name.
X * If pname is NULL, search the environment for variable "SHAPEPRJ"
X * (specified in project.h). If there isn't such a variable, look for
X * a ".Project"-file in the user's home directory.
X * GetProject returns an error indication, if pname was given but no
X * project data can be found. A NULL pointer is returned if no project
X * information could be found in the remaining cases (indicating local
X * or small operation).
X */
X  return NULL;   /* This is yet a stub */
X}
END_OF_FILE
if test 2333 -ne `wc -c <'src/vc/project.c'`; then
    echo shar: \"'src/vc/project.c'\" unpacked with wrong size!
fi
# end of 'src/vc/project.c'
fi
if test -f 'src/vc/retrv.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/vc/retrv.h'\"
else
echo shar: Extracting \"'src/vc/retrv.h'\" \(2436 characters\)
sed "s/^X//" >'src/vc/retrv.h' <<'END_OF_FILE'
X/*
X * Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
X *  and U. Pralle
X * 
X * This software is published on an as-is basis. There is ABSOLUTELY NO
X * WARRANTY for any part of this software to work correctly or as described
X * in the manuals. We do not accept any liability for any kind of damage
X * caused by use of this software, such as loss of data, time, money, or 
X * effort.
X * 
X * Permission is granted to use, copy, modify, or distribute any part of
X * this software as long as this is done without asking for charge, and
X * provided that this copyright notice is retained as part of the source
X * files. You may charge a distribution fee for the physical act of
X * transferring a copy, and you may at your option offer warranty
X * protection in exchange for a fee.
X * 
X * Direct questions to: Tech. Univ. Berlin
X * 		     Wilfried Koch
X * 		     Sekr. FR 5-6 
X * 		     Franklinstr. 28/29
X * 		     D-1000 Berlin 10, West Germany
X * 
X * 		     Tel: +49-30-314-22972
X * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
X */
X/*
X * $Header: retrv.h[3.2] Thu Feb 23 18:13:50 1989 axel@coma published $
X *
X * Log for /u/shape/dist-tape/src/vc/retrv.h[3.0]
X * 	Thu Feb 23 18:13:50 1989 axel@coma published $
X *  --- empty log message ---
X *  retrv.h[3.1] Thu Feb 23 18:13:50 1989 axel@coma published $
X *  --- empty log message ---
X *  retrv.h[3.2] Thu Feb 23 18:13:50 1989 axel@coma published $
X *  --- empty log message ---
X */
X
X
X#ifndef _TYPES_
X#include <sys/types.h>
X#define _TYPES_
X#endif
X#ifndef _TIME_
X#include <sys/time.h>
X#define _TIME_
X#endif
X#ifndef MAXNAMLEN
X#include <sys/dir.h>
X#endif
X#include "afsapp.h"
X
Xstruct Vdesc {
X  int  v_genno,
X       v_state,
X       v_vno;
X  time_t v_time;
X  char v_attrf[MAXNAMLEN], 
X       v_spec[80], 
X       v_pname[80],
X       v_aunam[MAXNAMLEN],
X       v_auhost[MAXHOSTNAMELEN];
X};
X
X#define ATTRDEF 01
X#define QUIETPLEASE 02
X#define FORCE 04
X#define TYPEOUT 010
X#define TONAME "vcat"
X#define PROJCSET 020
X#define VSPECSET 040
X#define GENSET 0100
X#define AUNSET 0200
X#define STATSET 0400
X#define XACT 01000
X#define DATESET 02000
X#define KEEPMODE 04000
X#define LOCKIT 010000
X#define COPY 020000
X
X#define WDOVRBS "Date spec. disables selection of busy version. (warning)"
X#define EINVALPROJ "No such project:"
X#define NORESTORE "%s not restored"
X#define RTRATTR "RTRATTRS"
X
X/* permission statuus for doretrv */
X#define DOIT 01
X#define DENIED 02
X#define RECREATE 04
END_OF_FILE
if test 2436 -ne `wc -c <'src/vc/retrv.h'`; then
    echo shar: \"'src/vc/retrv.h'\" unpacked with wrong size!
fi
# end of 'src/vc/retrv.h'
fi
if test -f 'src/vc/typeconv.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/vc/typeconv.h'\"
else
echo shar: Extracting \"'src/vc/typeconv.h'\" \(2337 characters\)
sed "s/^X//" >'src/vc/typeconv.h' <<'END_OF_FILE'
X/*
X * Copyright (C) 1989, 1990 W. Koch, A. Lampen, A. Mahler, W. Obst,
X *  and U. Pralle
X * 
X * This software is published on an as-is basis. There is ABSOLUTELY NO
X * WARRANTY for any part of this software to work correctly or as described
X * in the manuals. We do not accept any liability for any kind of damage
X * caused by use of this software, such as loss of data, time, money, or 
X * effort.
X * 
X * Permission is granted to use, copy, modify, or distribute any part of
X * this software as long as this is done without asking for charge, and
X * provided that this copyright notice is retained as part of the source
X * files. You may charge a distribution fee for the physical act of
X * transferring a copy, and you may at your option offer warranty
X * protection in exchange for a fee.
X * 
X * Direct questions to: Tech. Univ. Berlin
X * 		     Wilfried Koch
X * 		     Sekr. FR 5-6 
X * 		     Franklinstr. 28/29
X * 		     D-1000 Berlin 10, West Germany
X * 
X * 		     Tel: +49-30-314-22972
X * 		     E-mail: shape@coma.uucp or shape@db0tui62.bitnet
X */
X/*
X * $Header: typeconv.h[1.1] Thu Feb 23 18:13:59 1989 axel@coma published $
X *
X * Log for /u/shape/dist-tape/src/vc/typeconv.h[1.0]
X * 	Thu Feb 23 18:13:59 1989 axel@coma published $
X *  --- empty log message ---
X *  typeconv.h[1.1] Thu Feb 23 18:13:59 1989 axel@coma published $
X *  --- empty log message ---
X */
X
X
X#ifndef _TYPECONV_
X#define _TYPECONV_
X#if !(defined (ULTRIX_2_0) | defined (BSD_4_3) | defined (SUNOS_4_0)) 
X#define BSD_4_3
X#endif
X
X#ifdef ULTRIX_2_0
X#ifndef Sfunc_t
X#define Sfunc_t void        /* type of function argument to signal call */
X#endif
X#ifndef Size_t
X#define Size_t unsigned      /* used for args to malloc(), fread() etc. */
X#endif
X#ifndef Uid_t
X#define Uid_t int            /* used for user-id types */
X#endif
X#ifndef Gid_t
X#define Gid_t int            /* used for user-id types */
X#endif
X#endif
X
X#ifdef BSD_4_3
X#ifndef Sfunc_t
X#define Sfunc_t int
X#endif Sfunc_t
X#ifndef Size_t
X#define Size_t int
X#endif Size_t
X#ifndef Uid_t
X#define Uid_t uid_t
X#endif Uid_t
X#ifndef Gid_t
X#define Gid_t gid_t
X#endif Gid_t
X#endif
X
X#ifdef SUNOS_4_0
X#ifndef Sfunc_t
X#define Sfunc_t int
X#endif Sfunc_t
X#ifndef Size_t
X#define Size_t int
X#endif Size_t
X#ifndef Uid_t
X#define Uid_t uid_t
X#endif Uid_t
X#ifndef Gid_t
X#define Gid_t gid_t
X#endif Gid_t
X#endif
X#endif _TYPECONV_
END_OF_FILE
if test 2337 -ne `wc -c <'src/vc/typeconv.h'`; then
    echo shar: \"'src/vc/typeconv.h'\" unpacked with wrong size!
fi
# end of 'src/vc/typeconv.h'
fi
echo shar: End of archive 3 \(of 33\).
cp /dev/null ark3isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 33 archives.
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0
-- 
Please send comp.sources.unix-related mail to rsalz@uunet.uu.net.