[comp.sources.unix] v19i017: A software configuration management system, Part04/33

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

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



#! /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 4 (of 33)."
# Contents:  man/man1/rcs2afs.1 man/man3/affiles.3 man/man3/aflock.3
#   man/man3/afsetops.3 man/man3/afsets.3 src/Makefile
#   src/afs/afsymtab.c src/afs/lcs.main.c src/misc/Makefile
#   src/shape/sighand.c src/vc/vadm.h src/vc/vadm_utils.c src/vc/vl.c
#   src/vc/vl.h tutorial/trouble.ms
# Wrapped by rsalz@papaya.bbn.com on Thu Jun  1 19:26:51 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'man/man1/rcs2afs.1' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'man/man1/rcs2afs.1'\"
else
echo shar: Extracting \"'man/man1/rcs2afs.1'\" \(3547 characters\)
sed "s/^X//" >'man/man1/rcs2afs.1' <<'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: rcs2afs.1[1.0] Thu Feb 23 19:01:44 1989 uli@coma published $
X... 
X... Log for /u/shape/dist-tape/bin/rcs2afs.1[1.0]
X... 	Thu Feb 23 19:01:44 1989 uli@coma published $
X...  --- empty log message ---
X...
X.UC
X.TH RCS2AFS 1 rcs2afs
X.SH NAME
Xrcs2afs \- convert an RCS file into an AFS file
X.SH SYNOPSIS
X\fBrcs2afs\fR [\ \fI-hq\fR\ ]\ [\ \fI-preserve\fR\ ]\ [\ \fI-mode\fR\ mode ]\ [\ \fI-incremental\fR\ ] name\|.\|.
X.SH DESCRIPTION
X.PP
X\fBrcs2afs\fR is a tool for converting an existing RCS file into an
XAFS file. Comment leader and symbolic names are preserved. Existing busy
Xversions are temorarily saved and restored after completion.
X.PP
XThe following \fIoptions\fR are recognized:
X.IP "\fB\-h\fR"
Xprint shorthand instructions about using \fBrcs2afs\fR.
X.PP
X.IP "\fB\-q\fR"
Xquiet operation. No messages are printed on standard output. If any
Xerror occurs during execution, \fBrcs2afs\fR assumes a fatal error
Xand exits (sometimes ungracefully). Otherwise the user will be
Xinformed and must confirm the continuation.
X.PP
X.IP "\fB\-preserve\fR"
XCauses \fBrcs2afs\fR to preserve RCS version numbering. If this option
Xis not given, AFS version numbering is used, especially no holes
Xappear in version numbering.
X.PP
X.IP "\fB\-mode\fR mode"
XCauses \fBrcs2afs\fR to save AFS versions with mode \fImode\fR. If this
Xoption is not given, \fI mode \fR defaults to 644.
X.PP
X.IP "\fB\-incremental\fR"
XCauses \fBrcs2afs\fR to convert only those RCS version that are
Xnot member of its AFS counterpart. If this option is not given,
Xthe existing AFS file will be deleted and the entire RCS file 
Xis converted. \fBThis option is currently not implemented\fR. 
X.RE
X.SH SEE ALSO
Xsave(1), retrv(1), vl(1), vadm(1), csh(1), chmod(1), af_intro(3), 
Xaf_archive(5)
X.PP
XRecommended reading: A. Mahler, A. Lampen, \fI\(lqAn Integrated
XToolkit for Engineering Software Configurations\(rq\fR, Proceedings of
Xthe ACM SIGSOFT/SIGPLAN Software Engineering Symposium on Practical
XSoftware Development Environments
X.SH BUGS
X\fBRcs2afs\fR gives up on branches in RCS files.
X.br
XBecause \fBrcs2afs\fR is implemented as a csh(1) script, it's execution
Xis painfully slow. Other bugs are yet unknown. Please report any bugs
Xto the author.
X.SH NOTES
XA converter for sccs archives is yet unavailable. To convert
Xsccs archive files use first sccstorcs(8).
X.SH AUTHOR
XUli Pralle
X.br
XTechnical University Berlin
X.sp
X\fIUUCP:\fR		uli@coma.uucp (unido!coma!uli)
X.br
X\fIBITNET:\fR	uli@db0tui62
END_OF_FILE
if test 3547 -ne `wc -c <'man/man1/rcs2afs.1'`; then
    echo shar: \"'man/man1/rcs2afs.1'\" unpacked with wrong size!
fi
# end of 'man/man1/rcs2afs.1'
fi
if test -f 'man/man3/affiles.3' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'man/man3/affiles.3'\"
else
echo shar: Extracting \"'man/man3/affiles.3'\" \(3578 characters\)
sed "s/^X//" >'man/man3/affiles.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_FILES 3 "" \n(dy.\n(mo.\n(yr
X.SH NAME
Xaf_files \(em filesystem primitives for attributed software objects
X.SH SYNOPSIS
X\fB#include <stdio.h>
X.br
X#include <afs.h>
X.sp
Xaf_crkey (syspath, name, type, key)
X.br
Xchar	*syspath, *name, *type;
X.br
XAf_key	*key;
X.sp
XFILE *af_open (key, mode)
X.br
XAf_key	*key;
X.br
Xchar	*mode;
X.sp
Xaf_close (filedes)
X.br
XFILE	*filedes;
X.sp
Xaf_link (srckey, destkey);
X.br
XAf_key	*srckey, *destkey;
X.sp
Xaf_rm (key);
X.br
XAf_key	*key;
X.sp
Xaf_restore (key, restoredkey)
X.br
XAf_key	*key, *restoredkey;
X.SH DESCRIPTION
X\fIAf_crkey\fR creates an object key for a regular \s-1UNIX\s+1
Xfile identified by name, type and system path.
XIf the named \s-1UNIX\s+1 file does not exist, an empty file is created.
XUse \fIaf_dropkey\fR to free the allocated memory associated with
X\fIkey\fR.
X.PP
X\fIAf_open\fR opens the ASO pointed to by \fIkey\fR.
XA pointer to the corresponding FILE-structure is returned.
X\fIMode\fR has to be \(lqr[+]\(rq, \(lqw[+]\(rq or \(lqa[+]\(rq,
Xsee \fIfopen(3)\fR for further details.
XUpon error, \fIaf_open\fR returns NULL.
X.PP
X\fIAf_close\fR closes an ASO (see \fIfclose(3)\fR).
X.PP
X\fBNote:\fR Non-busy ASOs can only be opened with mode \(lqr\(rq.
XIf a non-busy ASO is opened, it will be placed
Xin a temporary file due to storage of versions as deltas.
XThis temporary file will be removed on execution of the corresponding
X\fIaf_close\fR.
X.PP
X\fIAf_link\fR ... 
X.PP
X\fIAf_rm\fR removes the specified ASO. Multiple links to ASOs
Xare not supported yet, so that \fIaf_rm\fR always does a physical
Xremoval.
XYou have to have a lock (see af_lock(3)) set on the ASO that
Xshall be deleted by \fIaf_rm\fR.
XASOs with the state attribute set to \fBaccessed\fR or
X\fBfrozen\fR cannot be removed.
XBe careful, if you keep multiple keys of one object (perhaps in different
Xsets) \fIaf_rm\fR invalidates \fBall\fR keys of the removed object.
X.PP
X\Af_restore\fR is used to restore formerly saved derived ASOs
Xinto their old location. This function cannot be applied to
Xsource objects. \fIAf_restore\fR returns the key of the restored version
Xin the buffer \fIrestoredkey\fR.
X.SH SEE ALSO
Xfopen(3), fclose(3), af_dropkey(3), af_lock(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.
X.SH BUGS
X\fIAf_link\fR is not yet implemented.
X.LP
X\fIAf_open\fR and \fIaf_restore\fR may not be able to update the
Xaccess date of the specified ASO. This error is ignored internally.
X
END_OF_FILE
if test 3578 -ne `wc -c <'man/man3/affiles.3'`; then
    echo shar: \"'man/man3/affiles.3'\" unpacked with wrong size!
fi
# end of 'man/man3/affiles.3'
fi
if test -f 'man/man3/aflock.3' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'man/man3/aflock.3'\"
else
echo shar: Extracting \"'man/man3/aflock.3'\" \(3088 characters\)
sed "s/^X//" >'man/man3/aflock.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_LOCK 3 "" \n(dy.\n(mo.\n(yr
X.SH NAME
Xaf_lock \(em mechanism for reserving update rights in the Attribute Filesystem
X.SH SYNOPSIS
X\fB#include <afs.h>
X.sp
XAf_user *af_lock (key, locker, mode)
X.br
XAf_key	*key;
X.br
XAf_user	*locker;
X.br
Xint	mode;
X.sp
XAf_user *af_unlock (key, mode)
X.br
XAf_key	*key;
X.br
Xint	mode;
X.sp
XAf_user *af_testlock (key, mode)
X.br
XAf_key	*key;
X.br
Xint	mode;
X.br
X.SH DESCRIPTION
XThis manual page describes the interface to the AFS locking mechanism.
XA lock can either be set for a whole line of development (mode
X\fIAF_GLOBALLOCK\fR) or for a single version (mode \fIAF_VERSIONLOCK\fR).
XLocking the busy version is equivalent to setting a global lock on
Xa line of development.
XA new version can only be generated (see \fIaf_saverev\fR)
Xif the line of development was previously locked for updating.
XOnly one user can have the update permission for a line of development.
XThis mechanism avoids concurrent updates in one line of development.
XAny ASO can only be removed (see \fIaf_rm\fR) if it has
Xbeen locked previously.
X.PP
X\fIAf_lock\fR reserves the update permission
Xfor the user identified by \fIlocker\fR.
XOn successful completion a buffer identical to \fIlocker\fR is returned,
Xa NULL pointer otherwise.
X.PP 
X\fIAf_unlock\fR cancels a formerly established reservation of update rights.
XOnly the \fIowner\fR or the \fIlocker\fR of an ASO (identified by the
XAf_user structure that was given to the corresponding call of \fIaf_lock\fR)
Xare allowed to do this.
XOn successful completion, \fIaf_unlock\fR returns a buffer containing the
Xidentification of the former \fIlocker\fR.
XThis may be empty, if the ASO had not been locked.
XUpon error, a NULL pointer is returned.
X.PP
X\fRAf_testlock\fR returns a buffer containing an identification of the
Xcurrent locker of the specified ASO.
XIt returns an empty buffer, if no lock is set.
X.SH SEE ALSO
Xaf_saverev(3)
X.SH DIAGNOSTICS
X\fIAf_lock\fR and \fIaf_unlock\fR return \-1 on error and \fIaf_errno\fR
Xis set to indicate the error number.
END_OF_FILE
if test 3088 -ne `wc -c <'man/man3/aflock.3'`; then
    echo shar: \"'man/man3/aflock.3'\" unpacked with wrong size!
fi
# end of 'man/man3/aflock.3'
fi
if test -f 'man/man3/afsetops.3' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'man/man3/afsetops.3'\"
else
echo shar: Extracting \"'man/man3/afsetops.3'\" \(3072 characters\)
sed "s/^X//" >'man/man3/afsetops.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_SETOPS 3 "" \n(dy.\n(mo.\n(yr
X.SH NAME
Xaf_setops \(em complex operations on keysets
X.SH SYNOPSIS
X\fB#include <afs.h>
X.sp
Xaf_sortset (set1, attrname)
X.br
XAf_set	*set1;
X.br
Xchar	*attrname;
X.sp
Xaf_subset (set, attrbuf, subset)
X.br
XAf_set	*set, subset;
X.br
XAf_attrs *attrbuf;
X.sp
Xaf_copyset (source, destination)
X.br
XAf_set	*source, *destination;
X.sp
Xaf_intersect (set1, set2, newset)
X.br
XAf_set	*set1, *set2, *newset;
X.sp
Xaf_union (set1, set2, newset);
X.br
XAf_set	*set1, *set2, *newset;
X.sp
Xaf_diff (set1, set2, newset)
X.br
XAf_set	*set1, *set2, *newset;
X.SH DESCRIPTION
X\fIAf_sortset\fR sorts a given set of object keys by the values of
Xthe named attribute.
XThe set is sorted in increasing order.
XIn \fIafs.h\fR you can find a list of attribute names, that denote the
Xstandard attributes. All other attribute names are presumed to be
Xuser defined attributes.
XWhile sorting by the values of an user defined attribute, all ASOs
Xthat do not have the named attribute are added at the end of the resulting
X(sorted) set.
X.br
XThe length of the given attribute name is limited. This limit is
Xdefined by the constant \fIAF_UDANAMLEN\fR in \fIafs.h\fR.
X.PP
X\fIAf_subset\fR does a retrieve operation (similar to \fIaf_find(3)\fR)
Xon a given set of object keys.
XThe retrieve arguments are passed in \fIattrbuf\fR which should be
Xinitialized by \fIaf_initattrs(3)\fR before.
X.PP
X\fIAf_copyset\fR is for copying sets (really! =:-).
X.PP
XWith \fIaf_intersect\fR, \fIaf_union\fR and \fIaf_diff\fR you can
Xbuild the intersection, the union or the difference between two sets.
X.PP
XSets generated by \fIaf_subset, af_intersect, af_union\fR of
X\fIaf_diff\fR should be released by \fIaf_dropset\fR as soon as they
Xare not used any longer.
X.SH SEE ALSO
Xaf_retrieve (3)
X.SH DIAGNOSTICS
XUpon error, \-1 is returned and \fIaf_errno\fR is set to the corresponding
Xerror number.
X.SH BUGS
XSorting by user defined attributes bases on a simple text comparison.
X.PP
XA given hostname is ignored during \fIaf_subset\fR.
END_OF_FILE
if test 3072 -ne `wc -c <'man/man3/afsetops.3'`; then
    echo shar: \"'man/man3/afsetops.3'\" unpacked with wrong size!
fi
# end of 'man/man3/afsetops.3'
fi
if test -f 'man/man3/afsets.3' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'man/man3/afsets.3'\"
else
echo shar: Extracting \"'man/man3/afsets.3'\" \(3043 characters\)
sed "s/^X//" >'man/man3/afsets.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_SETS 3 "" \n(dy.\n(mo.\n(yr
X.SH NAME
Xaf_sets \(em simple operations on keysets
X.SH SYNOPSIS
X\fB#include <afs.h>
X.sp
Xaf_initset (set)
X.br
XAf_set	*set;
X.sp
Xaf_dropset (set)
X.br
XAf_set	*set;
X.sp
Xaf_nrofkeys (set)
X.br
XAf_set	*set;
X.sp
Xaf_setgkey (set, position, key)
X.br
XAf_set	*set;
X.br
Xint	position;
X.br
XAf_key	*key;
X.sp
Xaf_setaddkey (set, position, key)
X.br
XAf_set	*set;
X.br
Xint	position;
X.br
XAf_key	*key;
X.sp
Xaf_setrmkey (set, key)
X.br
XAf_set	*set;
X.br
XAf_key	*key;
X.sp
Xaf_setposrmkey (set, position)
X.br
XAf_set	*set;
X.br
Xint	position;
X.SH DESCRIPTION
X\fIAf_initset\fR creates an empty set of filekeys.
X.PP
X\fIAf_dropset\fR drops the given set of files and frees all memory that
Xhas been allocated while building the set.
X.PP
X\fIAf_nrofkeys\fR returns the number of keys in the given fileset.
X.PP
X\fIAf_setgkey\fR delivers the filekey that is stored at position
X\fIposition\fR in the identified set.
XThe result is passed in the buffer \fIkey\fR.
XTypically you use \fIaf_setgkey\fR to run through a set and perform
Xa special action on each key.
XThe following code sequence does this job:
X.nf
X	\fC...
X	for (i = 0; i < af_nrofkeys (&set); i++) {
X		af_setgkey (&set, i, &key);
X		/* process key */
X		...
X	}\fR
X.fi
X.PP
X\fIAf_setaddkey\fR introduces a new filekey to an existing set at the given
Xposition.
XThe constant \fIAF_LASTPOS\fR given as \fIposition\fR argument
Xleads to adding the new filekey at the end of the set.
X.PP
X\fIAf_setrmkey (af_setposrmkey)\fR removes the given filekey (the filekey at
Xposition \fIposition\fR) from the specified set.
X.br
X\fBNote:\fR Holes that are generated by deleting single keys from a set
Xare immediately eliminated by condensing the set. This means, that
Xthe position of any key in a set may change because of deletion of
Xanother key.
X.SH SEE ALSO
Xaf_retrieve (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.
X
X
END_OF_FILE
if test 3043 -ne `wc -c <'man/man3/afsets.3'`; then
    echo shar: \"'man/man3/afsets.3'\" unpacked with wrong size!
fi
# end of 'man/man3/afsets.3'
fi
if test -f 'src/Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/Makefile'\"
else
echo shar: Extracting \"'src/Makefile'\" \(3517 characters\)
sed "s/^X//" >'src/Makefile' <<'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#
X#  This is the overall Makefile for the shape-toolkit !
X#
X#  Edit this file in order to get all system dependent Macro
X#  definitions suitable for your system.
X#
X
X# Define the location in your file system.
X# BASEDIR shall be the directory where you loaded the tape.
X# Do not modify SRCDIR, INCLUDEDIR and LIBDIR.
XBASEDIR = /u/shape
XSRCDIR = $(BASEDIR)/src
XINCLUDEDIR = $(BASEDIR)/src/inc
XLIBDIR = $(BASEDIR)/lib
X
X# Where and by whom shall the whole stuff be installed ?
XINSTALDIR = /usr/local
XINSTALLIBDIR = /usr/local/lib
XINSTALINCDIR = /usr/local/include
XINSTALOWNER = bin
XINSTALGROUP = bin
X
X# Which kind of UNIX system do you work on ?
X# known systems are:   BSD_4_3  SUNOS_4_0   ULTRIX_2_0
XSYSTEM = BSD_4_3
X
X# Does your system have a syslog facility for protocolling messages ?
X# (-DSYSLOG works on BSD_4_3 and on SUNOS sytems, *not* on ULTRIX)
X#
X# Does your system support ndbm, or only dbm ?
X# ULTRIX systems support only dbm, so that you have to define "-DOLDDBM".
X# Together with -DOLDDBM you have to set CLIBS = -ldbm
X
XDEFINES = -DSYSLOG
XCLIBS =
X# DEFINES = -DSYSLOG -DOLDDBM
X# CLIBS = -ldbm
X
X# Ready !!
X# Now save this Makefile and run "make" to build the toolkit.
X# If you want to install it, run "make install".
X
XBUCKS = $$
X
XCC = cc -DCFFLGS='"$(BUCKS)Flags: <$<> $(CFLAGS) $$"'
X
XCFLAGS = -g -D$(SYSTEM) $(DEFINES) -I$(INCLUDEDIR)
XLDFLAGS = -s
X
Xxxx:
X	cd $(SRCDIR)/afs;\
X	make -f $(SRCDIR)/Makefile -f Makefile.distribution all
X	cd $(SRCDIR)/misc;\
X	make "BASE=$(BASEDIR)" "SYSTEM=$(SYSTEM)" "CONFIG=$(DEFINES)" \
X	"CLIBS=$(CLIBS)" "INSTALDIR=$(LIBDIR)" "INSTALOWNER=$(INSTALOWNER)" \
X	"INSTALGROUP=$(INSTALGROUP)" install
X	cd $(SRCDIR)/vc;\
X	make "BASE=$(BASEDIR)" "SYSTEM=$(SYSTEM)" "CONFIG=$(DEFINES)" \
X	"CLIBS=$(CLIBS)" "INSTALDIR=$(INSTALDIR)" \
X	"INSTALOWNER=$(INSTALOWNER)" "INSTALGROUP=$(INSTALGROUP)" all
X	cd $(SRCDIR)/shape;\
X	make -f $(SRCDIR)/Makefile -f Makefile.distribution all
X
Xinstallation:
X	cd $(SRCDIR)/afs;\
X	make -f $(SRCDIR)/Makefile -f Makefile.distribution install
X	cd $(SRCDIR)/misc;\
X	make "BASE=$(BASEDIR)" "SYSTEM=$(SYSTEM)" "CONFIG=$(DEFINES)" \
X	"CLIBS=$(CLIBS)" "INSTALDIR=$(INSTALLIBDIR)" \
X	"INSTALOWNER=$(INSTALOWNER)" \
X	"INSTALGROUP=$(INSTALGROUP)" install
X	cd $(SRCDIR)/vc;\
X	make "BASE=$(BASEDIR)" "SYSTEM=$(SYSTEM)" "CONFIG=$(DEFINES)" \
X	"CLIBS=$(CLIBS)" "INSTALDIR=$(INSTALDIR)" \
X	"INSTALOWNER=$(INSTALOWNER)" \
X	"INSTALGROUP=$(INSATLGROUP)" install
X	cd $(SRCDIR)/shape;\
X	make -f $(SRCDIR)/Makefile -f Makefile.distribution install
X
END_OF_FILE
if test 3517 -ne `wc -c <'src/Makefile'`; then
    echo shar: \"'src/Makefile'\" unpacked with wrong size!
fi
# end of 'src/Makefile'
fi
if test -f 'src/afs/afsymtab.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/afs/afsymtab.c'\"
else
echo shar: Extracting \"'src/afs/afsymtab.c'\" \(2986 characters\)
sed "s/^X//" >'src/afs/afsymtab.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/*
X *	Shape/AFS
X *
X *	afsymtab.c -- manage symbol table for AFS
X *
X *	Author: Andreas Lampen, TU-Berlin (andy@coma.UUCP)
X *					  (andy@db0tui62.BITNET)
X *
X *	$Header: afsymtab.c[1.3] Wed Feb 22 16:28:20 1989 andy@coma published $
X *
X *	EXPORT:
X *      af_entersym - add symbol to symtable
X *      af_enterhost - add hostname to symtable
X */
X
X#include <stdio.h>
X#include <string.h>
X#ifdef SUNOS_4_0
X#include <strings.h>
X#endif
X
X#include "typeconv.h"
X#include "afsys.h"
X#include "afs.h"
X#include "afarchive.h"
X
X#ifdef MEMDEBUG
Xextern FILE *memprot;
X#endif
X
X/*==========================================================================
X *	definition of hashtable for symbols
X *
X *==========================================================================*/
X
X/* af_symhash should be local; "EXPORT" only for debugging reasons */
XEXPORT Af_hash af_symhash;
X
XEXPORT char *af_entersym (symbol)
X     char *symbol;
X{
X  static bool hinit = FALSE; /* indicate if hashtable is yet initialized */
X  int af_fhash ();
X  char *foundsym;
X#ifdef MEMDEBUG
X  char *retsym;
X#endif
X
X  if (symbol == (char *)0)
X    return (symbol);
X
X  if (!hinit)
X    {
X      /* the reserves symbols could be added to the hashtable here */
X      /* but I don't think that it's worthwhile */
X      (void) af_hashinit (&af_symhash, AF_MAXSYMS, af_fhash);
X      hinit = TRUE;
X    }
X
X  /* if symbol is known */
X  if ((foundsym = af_symlookup (&af_symhash, symbol, (Af_revlist *)0,
X				(Af_revlist **)0)) != (char *)0)
X    return (foundsym);
X
X#ifdef MEMDEBUG
X  retsym = af_hashsym (&af_symhash, symbol, (Af_revlist *)0);
X  fprintf (memprot, "SymTab (%s)\n", symbol);
X  return (retsym);
X#else
X  return (af_hashsym (&af_symhash, symbol, (Af_revlist *)0));
X#endif
X}
X
XEXPORT char *af_enterhost (hostname)
X     char *hostname;
X{
X  char *hostsym;
X
X  hostsym = af_gethostname();
X
X  if (strcmp (hostname, hostsym))
X    return (af_entersym (hostname));
X  else
X    return (hostsym);
X}
END_OF_FILE
if test 2986 -ne `wc -c <'src/afs/afsymtab.c'`; then
    echo shar: \"'src/afs/afsymtab.c'\" unpacked with wrong size!
fi
# end of 'src/afs/afsymtab.c'
fi
if test -f 'src/afs/lcs.main.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/afs/lcs.main.c'\"
else
echo shar: Extracting \"'src/afs/lcs.main.c'\" \(3187 characters\)
sed "s/^X//" >'src/afs/lcs.main.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/* ================================================== */
X/* ================================================== */
X/*                                                    */
X/* MODULE-NAME: main        KEY : ma                  */
X/*                                                    */
X/* ORIGINAL                                           */
X/* AUTHOR : sibylle         DATE: 06/05/87            */
X/*                                                    */
X/* LAST UPDATE                                        */
X/* AUTHOR :                 DATE:                     */
X/*                                                    */
X/* VERSION: 1.3                                       */
X/*                                                    */
X/* ================================================== */
X/*                                                    */
X/* PURPOSE:                                           */
X/*                Prozeduraufruf                      */
X/*                                                    */
X/* SPECIALITIES:                                      */
X/*                Aufruf erfolgt nicht mehr ueber     */
X/*                main;                               */
X/*                Aufrufparameter sind Strings        */
X/*                statt Files                         */
X/*                                                    */
X/* EXCEPTIONS, ERRORS:                                */
X/*                                                    */
X/* ================================================== */
X/*                                                    */
X/*
X * $Header: lcs.main.c[1.0] Wed Feb 22 16:14:28 1989 shape@coma save $
X */
X
X# include "predef.h"
X# include <stdio.h>
X# include <sys/types.h>
X
Xextern Bool cd_init_delta();
Xextern Bool cd_comp_delta();
X
XEXPORT lcs (sourcestr, targetstr, sourcesz, targetsz, deltafn)
X     char *sourcestr, *targetstr;
X     long sourcesz, targetsz;
X     char *deltafn;
X{
X  if (cd_init_delta(sourcestr, targetstr, sourcesz, targetsz))
X    {  
X      if (cd_comp_delta(deltafn))
X	return(0);
X      else
X	return (-1);
X    }
X  else
X    return (-1);
X}
X
X
X
X
X
X
X
X
END_OF_FILE
if test 3187 -ne `wc -c <'src/afs/lcs.main.c'`; then
    echo shar: \"'src/afs/lcs.main.c'\" unpacked with wrong size!
fi
# end of 'src/afs/lcs.main.c'
fi
if test -f 'src/misc/Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/misc/Makefile'\"
else
echo shar: Extracting \"'src/misc/Makefile'\" \(3539 characters\)
sed "s/^X//" >'src/misc/Makefile' <<'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#
X# $Header: Makefile[1.1] Thu Feb 23 21:24:10 1989 axel@coma published $
X#
X# Log for /u/shape/dist-tape/src/misc/Makefile[1.0]
X# 	Thu Feb 23 21:24:10 1989 axel@coma save $
X#  --- empty log message ---
X#  Makefile[1.1] Thu Feb 23 21:24:10 1989 axel@coma published $
X#  --- empty log message ---
X#
X#
X#  Makefile for Utility Library of shape & version control system
X#  (used only for porting and installing)
X
X#
X#  general part
X
X# ---> define operating system
X# known systems are:   BSD_4_3   SUNOS_4_0   ULTRIX_2_0
XSYSTEM = BSD_4_3 
X
X# ---> define config
X# any combination of:
X#	-DSYSLOG  -- the syslog facility shall be used for protocoling errors
X#	-DOLDDBM  -- use "dbm" instead of "ndbm" (don't forget to set -ldbm)
X#define c libraries
X#	"CLIBS = -ldbm" is necessary when compiling with -DOLDDBM
XCONFIG =
XCLIBS =
X
X# ---> define locations of sources and executables
XBASE = /u/shape
XSRCDIR = $(BASE)/src/misc
XLIBDIR = $(BASE)/lib
XINCLUDEDIR = $(BASE)/src/inc
X
X# define anything you like here (e.g. /usr/local)
XINSTALDIR = $(BASE)/lib
XINSTALOWNER = shape
XINSTALGROUP = unib
XBUCKS = $$
X
XCC = cc -DCFFLGS='"$(BUCKS)Flags: <$<> $(CFLAGS) $$"'
X
XCFLAGS = -g -D$(SYSTEM) $(CONFIG) -I$(INCLUDEDIR)
XLDFLAGS = -g
X
X#
X#  Product definition part
X
XPRODUCT = libutil
XPROGS = libutil.a
XVERSION = utilversion
XVERSIONPROTO = /u/shape/lib/version.c
XINTEGRATOR = shape
X
X#
X#  Product definition part
X#
X
XMODULES = citeattr.c \
X	  ParseArgs.c \
X	  pdbutil.c \
X	  hash.c
X
XDEFINES = anames.h \
X	  ParseArgs.h \
X	  hash.h
X
XCOMPONENTS = $(MODULES) $(DEFINES)
X
XLIBSRC  = $(MODULES)
XLIBOBJS =  ParseArgs.o pdbutil.o hash.o citeattr.o
X
XAFSINC = $(INCLUDEDIR)
X
Xall: $(PROGS)
X
Xlibutil.a: $(LIBOBJS) $(VERSION).o
X	ar ruv $@ $(LIBOBJS) $(VERSION).o; \
X	ranlib $@
X
Xclean:
X	rm -f $(LIBOBJS) $(PROGS)
X
Xinstall: all
X	@echo installing $(PROGS) in $(INSTALDIR); \
X	install -c -m 644 $(PROGS) $(INSTALDIR); \
X	ranlib $(INSTALDIR)/$(PROGS)
X
Xdepend:
X	$(CC) -M $(CFLAGS) $(MODULES) | \
X	sed -e '/\/usr\/include/d' -e 's.$(BASE).$$(BASE).g' | sort \
X	| uniq > makedep
X	echo '/^# DO NOT DELETE THIS LINE/+1,$$d' >eddep
X	echo '$$r makedep' >>eddep
X	echo 'w' >>eddep
X	cp Makefile Makefile.bak
X	ex - Makefile < eddep
X	rm makedep eddep
X
X
X# DO NOT DELETE THIS LINE
XParseArgs.o: ./ParseArgs.h
XParseArgs.o: ParseArgs.c
Xciteattr.o: $(BASE)/src/inc/afs.h
Xciteattr.o: $(BASE)/src/inc/afsapp.h
Xciteattr.o: $(BASE)/src/inc/afsys.h
Xciteattr.o: $(BASE)/src/inc/typeconv.h
Xciteattr.o: ./anames.h
Xciteattr.o: citeattr.c
Xhash.o: ./hash.h
Xhash.o: hash.c
Xpdbutil.o: pdbutil.c
END_OF_FILE
if test 3539 -ne `wc -c <'src/misc/Makefile'`; then
    echo shar: \"'src/misc/Makefile'\" unpacked with wrong size!
fi
# end of 'src/misc/Makefile'
fi
if test -f 'src/shape/sighand.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/shape/sighand.c'\"
else
echo shar: Extracting \"'src/shape/sighand.c'\" \(3504 characters\)
sed "s/^X//" >'src/shape/sighand.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: sighand.c,v 3.1 89/02/20 16:26:46 wolfgang Exp $";
X#endif
X#ifndef lint
Xstatic char *ConfFlg = CFFLGS;	/* should be defined from within Makefile */
X#endif
X/*
X * $Log:	sighand.c,v $
X * Revision 3.1  89/02/20  16:26:46  wolfgang
X * NET-RELEASE
X * 
X * Revision 3.0  89/01/24  11:37:00  wolfgang
X * New System Generation
X * 
X * Revision 1.6  89/01/18  14:43:22  wolfgang
X * changes for lint
X * 
X * Revision 1.5  89/01/03  13:13:54  wolfgang
X * changes done for lint
X * 
X * Revision 1.4  88/12/21  15:13:02  wolfgang
X * changes done for lint
X * 
X * Revision 1.3  88/09/22  16:18:01  wolfgang
X * calls of shape_cleanup() added.
X * 
X * Revision 1.2  88/08/19  10:18:09  wolfgang
X * This version is part of a release
X * 
X */
X
X#include <signal.h>
X#include <stdio.h>
X#include "shape.h"
X
Xextern int cleanup_links();
Xextern struct linkreg *link_reg;
Xextern int errexit();
X
Xcatch_sigs () {
X/*
X * Setup signal handlers for various signals. Previous handlers
X * are saved. On receipt of a signal, the 
X * original handler for this signal will be invoked after specified
X * action has been taken.
X */
X#ifdef ULTRIX_2_0
Xvoid
X#else
Xint
X#endif
Xdie1(), die2(), die3(), die4(), die5(), die6(), 
X       die7(), die8(), die9(), die10(),
X       die11(), die12(), die13(), die14(), die15();
X
X  (void) signal (SIGINT, die2);
X  (void) signal (SIGBUS, die10);
X  (void) signal (SIGSEGV, die11);
X  (void) signal (SIGFPE, die8);
X  (void) signal (SIGTERM, die15);
X}
X
X#ifdef ULTRIX_2_0    
Xvoid
X#endif
Xdie2 () {
X  (void) signal(SIGINT,SIG_IGN);
X  errexit(23,"\0");
X}
X
X#ifdef ULTRIX_2_0    
Xvoid
X#endif
Xdie8 () {
X  (void) signal(SIGINT,SIG_IGN);
X  fprintf(stderr, "Oh! Oh! .... this was a floating exception -- goodbye.\n"); 
X  af_cleanup ();
X  cleanup_links(link_reg);
X  exit (1);
X}
X
X#ifdef ULTRIX_2_0    
Xvoid
X#endif
Xdie10 () {
X  fprintf(stderr, "Oh! Oh! .... this was a buserror -- goodbye.\n");
X  fprintf(stderr, "Dumping core.\n");
X  af_cleanup ();
X  cleanup_links(link_reg);
X  (void) kill (getpid(), SIGQUIT);
X}
X
X#ifdef ULTRIX_2_0    
Xvoid
X#endif
Xdie11 () {
X  (void) signal(SIGINT,SIG_IGN);
X  fprintf(stderr, 
X	  "Oh! Oh! .... this was a segmentation violation -- goodbye.\n");
X  fprintf(stderr, "Dumping core.\n");
X  af_cleanup ();
X  cleanup_links(link_reg);
X  (void) kill (getpid(), SIGQUIT);
X}
X
X#ifdef ULTRIX_2_0    
Xvoid
X#endif
Xdie15 () {
X  (void) signal(SIGINT,SIG_IGN);
X  af_cleanup();
X  cleanup_links(link_reg);
X  exit(1);
X}
X
END_OF_FILE
if test 3504 -ne `wc -c <'src/shape/sighand.c'`; then
    echo shar: \"'src/shape/sighand.c'\" unpacked with wrong size!
fi
# end of 'src/shape/sighand.c'
fi
if test -f 'src/vc/vadm.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/vc/vadm.h'\"
else
echo shar: Extracting \"'src/vc/vadm.h'\" \(2970 characters\)
sed "s/^X//" >'src/vc/vadm.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: vadm.h[3.6] Thu Feb 23 18:14:07 1989 axel@coma published $
X *
X * Log for /u/shape/dist-tape/src/vc/vadm.h[3.4]
X * 	Thu Feb 23 18:14:07 1989 axel@coma published $
X *  --- empty log message ---
X *  vadm.h[3.5] Thu Feb 23 18:14:07 1989 axel@coma published $
X *  --- empty log message ---
X *  vadm.h[3.6] Thu Feb 23 18:14:07 1989 axel@coma published $
X *  --- empty log message ---
X */
X
X
X/* miscellaneous */
X#define MAIL "/usr/ucb/mail -s 'Your lock on %s was broken by %s' "
X
X/* options */
X#define Vopt_help 01
X#define Vopt_binary 02
X#define Vopt_version 010000
X#define Vopt_no_confirm 020000
X#define Vopt_quiet 040000
X
X/* actions */
X#define Varg_reserve 01
X#define Varg_unreserve 02
X#define Varg_symname 04
X#define Varg_delete 010
X#define Varg_promote 020
X#define Varg_unpromote 040
X#define Varg_change_note 0100
X#define Varg_change_description 0200
X#define Varg_set_note 0400
X#define Varg_set_description 01000
X#define Varg_lock 02000
X#define Varg_unlock 04000
X#define Varg_chmod 010000
X#define Varg_chown 020000
X#define Varg_chaut 040000
X#define Varg_setuda 0100000
X#define Varg_unsetuda 0200000
X#define Varg_setattrs 0400000
X#define Varg_setc_symbol 01000000
X#define Varg_set_intent 02000000
X
X#define SetBit(x,b) ((x) |= (b))
X#define ClearBit(x,b) ((x) &= ~(b))
X#define IsBitSet(x,b) ((x) & (b))
X#define IsBitCleared(x,b) !(IsBitSet((x),(b)))
X
X#define SetOption(b) SetBit(options, (b))
X#define ClearOption(b) ClearBit(options, (b))
X#define IsOptionSet(b) IsBitSet (options, (b))
X#define IsOptionCleared(b) IsBitCleared (options, (b))
X
X#define SetAction(b) SetBit(actions, (b))
X#define ClearAction(b) ClearBit(actions, (b))
X#define IsActionSet(b) IsBitSet (actions, (b))
X#define IsActionCleared(b) IsBitCleared (actions, (b))
X
Xstruct vc_vlist {
X  char from_version_set, to_version_set;
X  int from_generation;
X  int from_revision;
X  int to_generation;
X  int to_revision;
X  struct vc_vlist *next;
X};
X
END_OF_FILE
if test 2970 -ne `wc -c <'src/vc/vadm.h'`; then
    echo shar: \"'src/vc/vadm.h'\" unpacked with wrong size!
fi
# end of 'src/vc/vadm.h'
fi
if test -f 'src/vc/vadm_utils.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/vc/vadm_utils.c'\"
else
echo shar: Extracting \"'src/vc/vadm_utils.c'\" \(3317 characters\)
sed "s/^X//" >'src/vc/vadm_utils.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: vadm_utils.c[3.3] Thu Feb 23 18:14:24 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/vadm_utils.c[3.0]
X * 	Thu Feb 23 18:14:24 1989 axel@coma published $
X *  --- empty log message ---
X *  vadm_utils.c[3.1] Thu Feb 23 18:14:24 1989 axel@coma published $
X *  --- empty log message ---
X *  vadm_utils.c[3.2] Thu Feb 23 18:14:24 1989 axel@coma save $
X *  --- empty log message ---
X *  vadm_utils.c[3.3] Thu Feb 23 18:14:24 1989 axel@coma published $
X *  --- empty log message ---
X */
X
X#include <stdio.h>
X#include <strings.h>
X#include <afs.h>
X  
X#include "vadm.h"
X#include "afsapp.h"
X#include "vadmdefs.h"
X
Xextern char *malloc();
X
X/**/
Xint GetGenerationNumber (version)
X     char *version;
X{
X  /*
X   * Returns the generation number (as an int) from a version specification
X   * (as a string), e.g.: 2.1 ==> 2
X   */
X  register int i;
X  char tmp[80];
X    
X  if ( (!version) || (! *version) || (*version == '.') ) return -1;
X
X  i = 0;
X  while (*version) {
X    if (*version == '.') {
X      tmp[i] = '\0';
X      return atoi(tmp);
X    }
X    else {
X      tmp[i] = *version;
X      version++; i++;
X    }
X  }
X  return atoi(tmp);
X}
X
X/**/
Xint GetRevisionNumber (version)
X     char *version;
X{
X  /*
X   * Returns the revision number (as an int) from a version specification
X   * (as a string), e.g.: 2.1 ==> 2
X   */
X  register int i;
X  char tmp[80];
X  register char *cp;
X  
X  if ( (!version) || (! *version) ) return -1;
X
X  if (! (cp = rindex (version, '.'))) return -1;
X
X  cp++;
X
X  if (!*cp) return -1;		/* version_num was: any.\0 */
X  
X  i = 0;
X  while (*cp) {
X    tmp[i] = *cp;
X    cp++; i++;
X  }
X  tmp[i] = '\0';
X  return atoi(tmp);
X}
X
Xlogmsg (msg) char *msg; {
X  if (!IsOptionSet(Vopt_quiet)) {
X    fprintf (stdout, "%s\n", msg);
X  }
X}
X
Xlogwng (msg) char *msg; {
X  if (!IsOptionSet(Vopt_quiet)) {
X    fprintf (stdout, "Warning: %s\n", msg);
X  }
X}
X
Xlogerr (msg) char *msg; {
X  fprintf (stderr, "%s: %s\n", progname, msg);
X}
X
XSfunc_t interrupt_action () { /* is executed by appropriate signal handler */
X
X  if (ask_confirm ("\nDo you really want to quit this ?", "yes"))
X    exit (1);
X  else
X    return;
X}
END_OF_FILE
if test 3317 -ne `wc -c <'src/vc/vadm_utils.c'`; then
    echo shar: \"'src/vc/vadm_utils.c'\" unpacked with wrong size!
fi
# end of 'src/vc/vadm_utils.c'
fi
if test -f 'src/vc/vl.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/vc/vl.c'\"
else
echo shar: Extracting \"'src/vc/vl.c'\" \(3518 characters\)
sed "s/^X//" >'src/vc/vl.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: vl.c[3.6] Thu Feb 23 18:14:43 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/vl.c[3.1]
X * 	Thu Feb 23 18:14:43 1989 axel@coma published $
X *  --- empty log message ---
X *  vl.c[3.2] Thu Feb 23 18:14:43 1989 axel@coma published $
X *  --- empty log message ---
X *  vl.c[3.4] Thu Feb 23 18:14:43 1989 axel@coma published $
X *  --- empty log message ---
X *  vl.c[3.5] Thu Feb 23 18:14:43 1989 axel@coma save $
X *  --- empty log message ---
X *  vl.c[3.6] Thu Feb 23 18:14:43 1989 axel@coma published $
X *  --- empty log message ---
X */
X
X#include <stdio.h>
X#include <strings.h>
X
X#include "ParseArgs.h"
X#include "vl.h"
X
X/*
X * global variables
X */
Xchar vl_cwd[1024];			/* current working dir */
X
Xmain (ac, av)
X     int ac;
X     char **av;
X{
X  register int i;
X  int newac;
X  char **newav;
X  register char *cp;
X  extern char *getwd();
X  register int retcode;
X  extern char **rearrange_args();
X
X  retcode = 0;
X  (void)getwd (vl_cwd);			/* get cur working dir */
X  
X  PutProgramName ((cp = rindex (av[0], '/')) ? ++cp : av[0]);
X
X  CheckProgramName ((cp = rindex (av[0], '/')) ? ++cp : av[0]);	
X  /* if I'm vlog set option -L */
X  
X  if (ac == 1) {
X    InitReportVersion ();
X    retcode = ReportVersionInfo ("");
X  }
X  else {
X    extern OptDesc odesc[];
X    
X    ParseArgs (ac, av, &newac, &newav, odesc);
X
X    InitReportVersion ();
X    
X    if (!newac) {
X      if (IsOptionSet(VL_O_LOGMSG)) {
X	fprintf (stderr, "%s: Option -L requires a version name\n",
X		 GetProgramName());
X	exit (1);
X      }
X      retcode = ReportVersionInfo ("");
X    }
X    else { 
X
X      /*
X       * if one argument is a directory and another argument
X       * is a file then the non local filenames must be preceeded by
X       * its pathnames on output. Also do files first and
X       * then directories, separated by a string containing the
X       * path.
X       */
X      if (a_dir_and_a_file (newac, newav)) {
X	newav = rearrange_args (newac, newav); /* first files then dirs */
X      }
X
X      for (i = 0; i < newac; i++) {
X	retcode = ReportVersionInfo (newav[i]);
X      }
X    }
X  }
X  
X  FlushInfo();
X  exit (retcode);
X}
X
X/*ARGSUSED*/
Xhandle_R_option (o, a) char *o, *a; {
X  extern char *version();
X
X  printf ("This is %s version %s.\n", GetProgramName(), version ());
X  printf ("AFS version %s.\n", af_version());
X  exit (0);
X}
END_OF_FILE
if test 3518 -ne `wc -c <'src/vc/vl.c'`; then
    echo shar: \"'src/vc/vl.c'\" unpacked with wrong size!
fi
# end of 'src/vc/vl.c'
fi
if test -f 'src/vc/vl.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/vc/vl.h'\"
else
echo shar: Extracting \"'src/vc/vl.h'\" \(3371 characters\)
sed "s/^X//" >'src/vc/vl.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: vl.h[3.3] Thu Feb 23 18:14:45 1989 axel@coma published $
X *
X * Log for /u/shape/dist-tape/src/vc/vl.h[3.1]
X * 	Thu Feb 23 18:14:45 1989 axel@coma published $
X *  --- empty log message ---
X *  vl.h[3.2] Thu Feb 23 18:14:45 1989 axel@coma published $
X *  --- empty log message ---
X *  vl.h[3.3] Thu Feb 23 18:14:45 1989 axel@coma published $
X *  --- empty log message ---
X */
X
X
X#include "afsapp.h"
X
X#define VL_O_LONGOUTPUT		01L
X#define VL_O_GROUPOUTPUT	02L
X#define VL_O_VERSIONSTATE	04L
X#define VL_O_LISTUDA		010L
X#define VL_O_LISTUDALONG 	020L
X#define VL_O_UDAGIVEN		040L
X#define VL_O_VERSIONNUM		0100L
X#define VL_O_STATEGIVEN		0200L
X#define VL_O_BEQUIET		0400L
X#define VL_O_LOGMSG		01000L
X#define VL_O_HISTLOG		02000L
X#define VL_O_HISTLOGPLUS	04000L
X#define VL_O_ALL		010000L
X#define VL_O_AUTHOR		020000L
X#define VL_O_OWNER		040000L
X#define VL_O_LISTHIDDENUDAS	0100000L
X#define VL_O_LISTHIDDEN         0200000L
X#define VL_O_LISTBINARY         0400000L
X#define VL_O_LASTVERS           01000000L
X#define NO_ID -1
X
X/*
X * external definition from everywhere
X */
Xextern char *malloc();
X
X/*
X * external definitions from vlopt.c
X */
Xextern int IsOptionSet ();
Xextern int IsOptionCleared ();
Xextern int SetOption ();
Xextern int ClearOption ();
Xextern int Usage ();
Xextern int LongUsage ();
Xextern int multicol_output_is_possible ();
X
X/*
X * External definitions from vlmisc.c
X */
Xextern char *GetVersionState();
Xextern char *GetVersionId();
Xextern int VinfoCleanup();
Xextern char *GetMode();
Xextern char *GetUserInfo();
Xextern char *GetDate();
Xextern int HasPathName();
Xextern int HasExtension();
Xextern int IsDirectory();
Xextern int FileExists();
Xextern int CopyUdattrs();
Xextern int GetGenerationNumber();
Xextern int GetRevisionNumber();
Xextern int PutProgramName();
Xextern char *GetProgramName();
Xextern void PutVersionStates();
Xextern char *GetVersionStates();
Xextern void PutUdattrs();
Xextern char **GetUdattrs();
Xextern void PutVersionNumber();
Xextern char *GetVersionNumber();
Xextern void ScanVersionStates();
Xextern int MatchesVersionStates();
Xextern void PutAuthorIdentifications();
Xextern char *GetAuthoridFromAuthor();
Xextern void PutOnwerIdentifications();
Xextern char *GetOwneridFromOwner();
X/*
X * External definitions from vldovl.c
X */
Xextern int ReportVersionInfo();
Xextern void FlushInfo();
X
END_OF_FILE
if test 3371 -ne `wc -c <'src/vc/vl.h'`; then
    echo shar: \"'src/vc/vl.h'\" unpacked with wrong size!
fi
# end of 'src/vc/vl.h'
fi
if test -f 'tutorial/trouble.ms' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'tutorial/trouble.ms'\"
else
echo shar: Extracting \"'tutorial/trouble.ms'\" \(3001 characters\)
sed "s/^X//" >'tutorial/trouble.ms' <<'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.NH 1
XTrouble shooting
X.PP
XRemember that the current version of the shape toolkit is a beta test
Xrelease that surely has some bugs every here and there.
XSo don't be too angry if you detect a malfunction and please help
Xus to improve the shape toolkit for further releases.
X.PP
XIf you have trouble with the data in the AFS archives, have a
Xlook at the program \fIafsrepair\fR that is shipped together
Xwith the toolkit.
XThis program checks archive files in your AFS subdirectory for
Xinconsistencies and tries to repair them if necessary.
X.PP
XIf this does not help, or if your
Xproblems concern other pieces of the shape toolkit than the object base,
Xplease inform us by e-mail to
X.sp
X.nf
X	\fCshape-bugs@coma.uucp\fR or
X	\fCshape-bugs@db0tui62.bitnet\fR
X.fi
X.sp
Xor by paper mail to
X.sp
X.nf
X	Tech. Univ. Berlin
X	Wilfried Koch
X	Sekr. FR 5-6 
X	Franklinstr. 28/29
X	D-1000 Berlin 10, West Germany
X.fi
X.sp
X.LP
XYour bug report should contain
X.IP \(bu 0.2i
Xthe name and version of the program that caused the trouble (you
Xget the version number by calling the appropriate program with
Xthe option -version, eg. \fCshape -version\fR),
X.IP \(bu
Xthe error message,
X.IP \(bu
Xa short history how the bug was detected (which toolkit commands were
Xinvolved in your work shortly before the error occurred),
X.IP \(bu
Xyour shapefile and \- if present \- the core file, and
Xa short description of your working environment
X.RE
XWhen working with emacs-shapetools, the command \fCB\fR
Xpops up a mail template for your bug report.
XWe will be happy about every report on existing bugs, that helps us to
Xmake shape a reliable tool.
X.PP
XIf you have any wishes or suggestions concerning the shape toolkit,
Xdo not hesitate to send a letter to
X.sp
X.nf
X	\fCshape-wishes@coma.uucp\fR or
X	\fCshape-wishes@db0tui62.bitnet\fR
X.fi
X.sp
XAgain, there is a command in emacs-shapetools (\fCW\fR) that pops up a
Xmail template for sending your list of wishes to us.
END_OF_FILE
if test 3001 -ne `wc -c <'tutorial/trouble.ms'`; then
    echo shar: \"'tutorial/trouble.ms'\" unpacked with wrong size!
fi
# end of 'tutorial/trouble.ms'
fi
echo shar: End of archive 4 \(of 33\).
cp /dev/null ark4isdone
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.