home *** CD-ROM | disk | FTP | other *** search
- Subject: v19i024: A software configuration management system, Part11/33
- Newsgroups: comp.sources.unix
- Sender: sources
- Approved: rsalz@uunet.UU.NET
-
- Submitted-by: Axel Mahler <unido!coma!axel>
- Posting-number: Volume 19, Issue 24
- Archive-name: shape/part11
-
-
-
- #! /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 11 (of 33)."
- # Contents: man/man1/retrv.1 man/man1/vcat.1 src/afs/afstore.c
- # src/inc/afsys.h src/vc/Makefile
- # Wrapped by rsalz@papaya.bbn.com on Thu Jun 1 19:27:00 1989
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'man/man1/retrv.1' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'man/man1/retrv.1'\"
- else
- echo shar: Extracting \"'man/man1/retrv.1'\" \(9516 characters\)
- sed "s/^X//" >'man/man1/retrv.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: retrv.1[3.2] Thu Feb 23 18:13:43 1989 axel@coma published $
- X...
- X... Log for /u/shape/dist-tape/src/vc/retrv.1[3.0]
- X... Thu Feb 23 18:13:43 1989 axel@coma published $
- X... --- empty log message ---
- X... retrv.1[3.1] Thu Feb 23 18:13:43 1989 axel@coma published $
- X... --- empty log message ---
- X... retrv.1[3.2] Thu Feb 23 18:13:43 1989 axel@coma published $
- X... --- empty log message ---
- X...
- X.TH RETRV 1 retrv \n(dy.\n(mo.\n(yr
- X.SH NAME
- Xretrv \- retrieve a revision of a file
- X.SH SYNOPSIS
- X.IP \fBretrv\fR\ [\ \fIoptions\fR\ ]\fR\ files\ \.\|. 0.5i
- X.IP \fBvcat\fR\ [\ \fIoptions\fR\ ]\fR\ files\ \.\|.
- X.IP \fIOptions:\fR \w'\fIOptions:++\fR'u
- X[\ \fB\-fhlmqt\fR\ ] [\ \fB\-V\ \fI<version>\ \fR] [\ \fB\-a\ \fIafile\fR\ ]
- X[\ \fB\-date\ \fI<date>\ \fR] [\ \fB\-dest\fI\ path\fR\ ]
- X.br
- X[\ \fB\-g\ \fIgeneration\ \fR]
- X[\ \fB\-n\ \fIauthor\fR\ ] [\ \fB\-p\ \fIprojectname\fR\ ]
- X[\ \fB\-s\ \fIstate\fR\ ]
- X.SH DESCRIPTION
- X.PP
- X\fBRetrv\fR retrieves a specified, previously saved version of a file from
- Xthe version object base.
- XUnless otherwise
- Xspecified by the project context (\fB\-p\fR), the archive is expected to
- Xreside in the AFS subdirectory. The retrieved version will be created
- Xin the current directory. Retrieve tries to be careful if an
- Xattempt is made to overwrite an existing busy-version: unless \fB\-f\fR
- Xis specified, \fBretrv\fR will ask the caller for permission.
- XIf no busy version exists, one is created with the same modes as the
- Xformerly saved version. If a busy version exists, its modes are preserved
- Xunless
- X\fB\-m\fR is given.
- X.PP
- X\fIVersion attributes\fR that are cited within the text of a stored revision
- Xare expanded by default. Attribute citation expressions are left unchanged
- Xif a revision is retrieved with the \fB\-lock\fR option.
- X.PP
- XIf the program is invoked as \fBvcat\fR, the specified version(s)
- Xwill be printed on standard output. No status change of the
- Xobject base will
- Xoccur in this case. The \fB\-t\fR switch of the \fBretrv\fR command
- Xcorresponds to \fBvcat\fR.
- X.PP
- XThere's a number of ways to specify which version shall be retrieved.
- XWith \fB\-V\fR an explicit version can be selected.
- XAnother kind of argument to \fB\-V\fR
- Xcould be a symbolic name that was assigned to
- Xthe desired version by use of the \-n option of \fBsave\fR.
- XObject names may also be given in \fIbound version notation\fR,
- Xi.e. a notation that identifies a particular version of an object (e.g.
- X\fCmkattr.c[2.4]\fR). It is also possible to use a previously assigned
- X\fIsymbolic name\fR rather than a numerical
- Xversion identification (e.g. \fCmkattr.c[tools-V4R3]\fR). Make sure
- Xto escape the bracket-symbols as these usually have meaning to the
- Xshell.
- X.PP
- XAlternatively,
- Xversions
- Xcan be selected by supplying certain attribute values to \fBretrv\fR, such as
- Xthe name of the author, the version state, a generation number or a
- Xset of user defined attributes, possibly describing a variant. In case
- Xthat more than one version has the desired attributes, the newest
- Xof them is selected.
- XThis behaviour can be turned off by setting the \fB\-x\fR switch (exact!) which
- Xindicates that the supplied version specification should match exactly
- Xone version. \fB\-V\fR implies \fB\-x\fR.
- X.PP
- XAny combination of the selection options implies a conjunctive
- Xsearch expression.
- X.LP
- XIn complete detail, \fBretrv\fR can be invoked with the following options:
- X.IP \fB\-f\fR \w'\fB\-V\ \fI<version>\fR'u
- Xforces the reinstallation of the specified version as busy version without
- Xasking the user, even if a writable (possibly unsaved) busy version
- Xexists. This option should be used together with \fB\-x\fR.
- X.IP "\fB\-h\fR"
- Xprints brief instructions about using this program.
- X.IP \fB\-lock\fR
- Xtries to reserve the privilege to add a new version to an object
- Xhistory, thus preventing multiple programmers working upon the same
- Xobject base from interfering with each other by saving concurrent updates.
- XThis simple mechanism is for use in small development projects, that do
- X\fInot\fR employ the scheme of private, experimental archives for each
- Xparticipating programmer, and one centralized \fIproject library\fR where
- Xindividual work results are collected.
- XWhen setting a new lock on an object history, the requesting user
- Xis prompted for an optional description of the planned changes.
- X.IP \fB\-m\fR
- Xreinstalls the new busy version with the file modes that were in effect
- Xwhen the specified version was saved.
- X.IP \fB\-q\fR
- Xquiet operation. No messages are printed on standard output.
- XIf a current busy version exists, it will not be overwritten by
- Xthe specified version unless \fB\-f\fR is set. This option is useful for
- Xbatch operation.
- X.IP \fB\-t\fR
- Xprint the contents of the specified version on standard output.
- XThe current busy version is not affected. See also \fBvcat\fR.
- X.IP \fB\-version\fR
- Xprint version identification for this program.
- X.IP \fB\-x\fR
- Xrequire an exact match of the version specification. In case that a
- Xversion specification matches more than one version in the archive
- X(e.g. if no options are supplied at all), \fBretrv\fR by default selects the
- X\fInewest\fR of them. With \fB\-x\fR set, the retrieve operation \fIfails\fR
- Xif more than one version matches the given version specification.
- X.IP \fB\-V\ \fI<version>\fR
- Xexplicitly select the version determined by \fIversion\fR. \fIVersion\fR
- Xcan be of the form \fIgeneration\.revision\fR (e.g. 9.4) or it
- Xcan be a unique symbolic name that was previously assigned to a version
- Xby use of the \-n option of \fBsave\fR (e.g. \fCrelease4\fR).
- X.IP \fB\-a\ \fIafile\fR
- Xselect versions that conform to the attribute specification in \fIafile\fR.
- XAttributes must be given in the form \fIname=value\fR
- Xwith one attribute specification per line and no white-space.
- XThe attribute value is optional, however, the \fIequal\fR symbol must
- Xbe present. If the \fB\-a\fR option is omitted, \fBretrv\fR searches
- Xthe environment for a variable \fIRETRATTRS\fR. If this variable
- Xis absent, no user defined attributes will be used to determine the
- Xversion to be selected.
- X.IP \fB\-date\ \fI<date>\fR
- X.IP \fB\-d\ \fI<date>\fR
- Xselects the newest version that was saved \fIbefore\fR the date given
- Xby \fIdate\fR. The date specification has the form \fIYY/MM/DD[/HH:MM]\fR.
- XThe brackets indicate that the daytime specification is optional.
- XThe option \fB\-d\fR is shorthand for \fB\-date\fR.
- X.IP \fB\-dest\fI\ path\fR
- Xretrieves the specified version from the object base and installs
- Xa \fIcopy\fR it in the directory denoted by \fIpath\fR. As this
- Xdirectory may be a long way apart from the directory containing
- Xthe AFS archives, this copy of the retrieved version is separated
- Xfrom its history and subsequently \fIunrelated\fR to the object
- Xhistory it came from. Proper object histories require a constant
- Xspatial relationship of any busy versions and the corresponding
- Xarchives. This relationship requires the archives to reside
- Xin a subdirectory
- Xnamed \fIAFS\fR.
- X.IP \fB\-g\ \fIgeneration\fR
- Xselects the newest version that was saved during generation \fIgeneration\fR.
- X.IP \fB\-n\ \fIauthor\fR
- Xselects the newest version that was saved by the user \fIauthor\fR.
- X.IP \fB\-p\ \fIprojectname\fR
- Xestablishes a \fIproject context\fR for the retrieve operation.
- XThe project context defines the extent of the search space to be
- Xconsidered by \fIretrv\fR, the permissions of the user issuing
- Xthe command and a number of other parameters.
- X.br
- XProject support is not implemented in the current version and so
- Xthis option has no effect yet.
- X.IP \fB\-s\ \fIstate\fR
- Xselects the newest version that has the given \fIstate. State\fR may
- Xbe either of \fIbusy, saved, proposed, published, accessed, \fRor\fI
- Xfrozen\fR.
- X.SH FILES
- XAll revisions of documents are retrieved from archive files located
- Xin the subdirectory
- XAFS.
- X.SH SEE ALSO
- Xsave(1), rsrv(1), sbmt(1), shape(1), vadm(1), vl(1),
- Xaf_intro(3), af_archive(5)
- X.SH BUGS
- XProject support is yet unimplemented.
- X.PP
- XSupport of user-defined attributes is rudimentary. Specification of such
- Xattributes must be syntactically correct.
- X.PP
- X\fBretrv\fR neither reads the \fIShapefile\fR nor the \fIMakefile\fR and
- Xconsequently sticks with the 'individual document level' rather than to
- Xsupport handling of entire systems or subsystems (higer level targets
- Xin \fI{Shape,Make}file\fRs).
- X.SH AUTHOR
- XAxel Mahler
- X.br
- XTechnical University Berlin
- X.sp
- X\fIUUCP:\fR axel@coma.uucp (unido!coma!axel)
- X.br
- X\fIBITNET:\fR axel@db0tui62
- END_OF_FILE
- if test 9516 -ne `wc -c <'man/man1/retrv.1'`; then
- echo shar: \"'man/man1/retrv.1'\" unpacked with wrong size!
- fi
- # end of 'man/man1/retrv.1'
- fi
- if test -f 'man/man1/vcat.1' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'man/man1/vcat.1'\"
- else
- echo shar: Extracting \"'man/man1/vcat.1'\" \(9516 characters\)
- sed "s/^X//" >'man/man1/vcat.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: retrv.1[3.2] Thu Feb 23 18:13:43 1989 axel@coma published $
- X...
- X... Log for /u/shape/dist-tape/src/vc/retrv.1[3.0]
- X... Thu Feb 23 18:13:43 1989 axel@coma published $
- X... --- empty log message ---
- X... retrv.1[3.1] Thu Feb 23 18:13:43 1989 axel@coma published $
- X... --- empty log message ---
- X... retrv.1[3.2] Thu Feb 23 18:13:43 1989 axel@coma published $
- X... --- empty log message ---
- X...
- X.TH RETRV 1 retrv \n(dy.\n(mo.\n(yr
- X.SH NAME
- Xretrv \- retrieve a revision of a file
- X.SH SYNOPSIS
- X.IP \fBretrv\fR\ [\ \fIoptions\fR\ ]\fR\ files\ \.\|. 0.5i
- X.IP \fBvcat\fR\ [\ \fIoptions\fR\ ]\fR\ files\ \.\|.
- X.IP \fIOptions:\fR \w'\fIOptions:++\fR'u
- X[\ \fB\-fhlmqt\fR\ ] [\ \fB\-V\ \fI<version>\ \fR] [\ \fB\-a\ \fIafile\fR\ ]
- X[\ \fB\-date\ \fI<date>\ \fR] [\ \fB\-dest\fI\ path\fR\ ]
- X.br
- X[\ \fB\-g\ \fIgeneration\ \fR]
- X[\ \fB\-n\ \fIauthor\fR\ ] [\ \fB\-p\ \fIprojectname\fR\ ]
- X[\ \fB\-s\ \fIstate\fR\ ]
- X.SH DESCRIPTION
- X.PP
- X\fBRetrv\fR retrieves a specified, previously saved version of a file from
- Xthe version object base.
- XUnless otherwise
- Xspecified by the project context (\fB\-p\fR), the archive is expected to
- Xreside in the AFS subdirectory. The retrieved version will be created
- Xin the current directory. Retrieve tries to be careful if an
- Xattempt is made to overwrite an existing busy-version: unless \fB\-f\fR
- Xis specified, \fBretrv\fR will ask the caller for permission.
- XIf no busy version exists, one is created with the same modes as the
- Xformerly saved version. If a busy version exists, its modes are preserved
- Xunless
- X\fB\-m\fR is given.
- X.PP
- X\fIVersion attributes\fR that are cited within the text of a stored revision
- Xare expanded by default. Attribute citation expressions are left unchanged
- Xif a revision is retrieved with the \fB\-lock\fR option.
- X.PP
- XIf the program is invoked as \fBvcat\fR, the specified version(s)
- Xwill be printed on standard output. No status change of the
- Xobject base will
- Xoccur in this case. The \fB\-t\fR switch of the \fBretrv\fR command
- Xcorresponds to \fBvcat\fR.
- X.PP
- XThere's a number of ways to specify which version shall be retrieved.
- XWith \fB\-V\fR an explicit version can be selected.
- XAnother kind of argument to \fB\-V\fR
- Xcould be a symbolic name that was assigned to
- Xthe desired version by use of the \-n option of \fBsave\fR.
- XObject names may also be given in \fIbound version notation\fR,
- Xi.e. a notation that identifies a particular version of an object (e.g.
- X\fCmkattr.c[2.4]\fR). It is also possible to use a previously assigned
- X\fIsymbolic name\fR rather than a numerical
- Xversion identification (e.g. \fCmkattr.c[tools-V4R3]\fR). Make sure
- Xto escape the bracket-symbols as these usually have meaning to the
- Xshell.
- X.PP
- XAlternatively,
- Xversions
- Xcan be selected by supplying certain attribute values to \fBretrv\fR, such as
- Xthe name of the author, the version state, a generation number or a
- Xset of user defined attributes, possibly describing a variant. In case
- Xthat more than one version has the desired attributes, the newest
- Xof them is selected.
- XThis behaviour can be turned off by setting the \fB\-x\fR switch (exact!) which
- Xindicates that the supplied version specification should match exactly
- Xone version. \fB\-V\fR implies \fB\-x\fR.
- X.PP
- XAny combination of the selection options implies a conjunctive
- Xsearch expression.
- X.LP
- XIn complete detail, \fBretrv\fR can be invoked with the following options:
- X.IP \fB\-f\fR \w'\fB\-V\ \fI<version>\fR'u
- Xforces the reinstallation of the specified version as busy version without
- Xasking the user, even if a writable (possibly unsaved) busy version
- Xexists. This option should be used together with \fB\-x\fR.
- X.IP "\fB\-h\fR"
- Xprints brief instructions about using this program.
- X.IP \fB\-lock\fR
- Xtries to reserve the privilege to add a new version to an object
- Xhistory, thus preventing multiple programmers working upon the same
- Xobject base from interfering with each other by saving concurrent updates.
- XThis simple mechanism is for use in small development projects, that do
- X\fInot\fR employ the scheme of private, experimental archives for each
- Xparticipating programmer, and one centralized \fIproject library\fR where
- Xindividual work results are collected.
- XWhen setting a new lock on an object history, the requesting user
- Xis prompted for an optional description of the planned changes.
- X.IP \fB\-m\fR
- Xreinstalls the new busy version with the file modes that were in effect
- Xwhen the specified version was saved.
- X.IP \fB\-q\fR
- Xquiet operation. No messages are printed on standard output.
- XIf a current busy version exists, it will not be overwritten by
- Xthe specified version unless \fB\-f\fR is set. This option is useful for
- Xbatch operation.
- X.IP \fB\-t\fR
- Xprint the contents of the specified version on standard output.
- XThe current busy version is not affected. See also \fBvcat\fR.
- X.IP \fB\-version\fR
- Xprint version identification for this program.
- X.IP \fB\-x\fR
- Xrequire an exact match of the version specification. In case that a
- Xversion specification matches more than one version in the archive
- X(e.g. if no options are supplied at all), \fBretrv\fR by default selects the
- X\fInewest\fR of them. With \fB\-x\fR set, the retrieve operation \fIfails\fR
- Xif more than one version matches the given version specification.
- X.IP \fB\-V\ \fI<version>\fR
- Xexplicitly select the version determined by \fIversion\fR. \fIVersion\fR
- Xcan be of the form \fIgeneration\.revision\fR (e.g. 9.4) or it
- Xcan be a unique symbolic name that was previously assigned to a version
- Xby use of the \-n option of \fBsave\fR (e.g. \fCrelease4\fR).
- X.IP \fB\-a\ \fIafile\fR
- Xselect versions that conform to the attribute specification in \fIafile\fR.
- XAttributes must be given in the form \fIname=value\fR
- Xwith one attribute specification per line and no white-space.
- XThe attribute value is optional, however, the \fIequal\fR symbol must
- Xbe present. If the \fB\-a\fR option is omitted, \fBretrv\fR searches
- Xthe environment for a variable \fIRETRATTRS\fR. If this variable
- Xis absent, no user defined attributes will be used to determine the
- Xversion to be selected.
- X.IP \fB\-date\ \fI<date>\fR
- X.IP \fB\-d\ \fI<date>\fR
- Xselects the newest version that was saved \fIbefore\fR the date given
- Xby \fIdate\fR. The date specification has the form \fIYY/MM/DD[/HH:MM]\fR.
- XThe brackets indicate that the daytime specification is optional.
- XThe option \fB\-d\fR is shorthand for \fB\-date\fR.
- X.IP \fB\-dest\fI\ path\fR
- Xretrieves the specified version from the object base and installs
- Xa \fIcopy\fR it in the directory denoted by \fIpath\fR. As this
- Xdirectory may be a long way apart from the directory containing
- Xthe AFS archives, this copy of the retrieved version is separated
- Xfrom its history and subsequently \fIunrelated\fR to the object
- Xhistory it came from. Proper object histories require a constant
- Xspatial relationship of any busy versions and the corresponding
- Xarchives. This relationship requires the archives to reside
- Xin a subdirectory
- Xnamed \fIAFS\fR.
- X.IP \fB\-g\ \fIgeneration\fR
- Xselects the newest version that was saved during generation \fIgeneration\fR.
- X.IP \fB\-n\ \fIauthor\fR
- Xselects the newest version that was saved by the user \fIauthor\fR.
- X.IP \fB\-p\ \fIprojectname\fR
- Xestablishes a \fIproject context\fR for the retrieve operation.
- XThe project context defines the extent of the search space to be
- Xconsidered by \fIretrv\fR, the permissions of the user issuing
- Xthe command and a number of other parameters.
- X.br
- XProject support is not implemented in the current version and so
- Xthis option has no effect yet.
- X.IP \fB\-s\ \fIstate\fR
- Xselects the newest version that has the given \fIstate. State\fR may
- Xbe either of \fIbusy, saved, proposed, published, accessed, \fRor\fI
- Xfrozen\fR.
- X.SH FILES
- XAll revisions of documents are retrieved from archive files located
- Xin the subdirectory
- XAFS.
- X.SH SEE ALSO
- Xsave(1), rsrv(1), sbmt(1), shape(1), vadm(1), vl(1),
- Xaf_intro(3), af_archive(5)
- X.SH BUGS
- XProject support is yet unimplemented.
- X.PP
- XSupport of user-defined attributes is rudimentary. Specification of such
- Xattributes must be syntactically correct.
- X.PP
- X\fBretrv\fR neither reads the \fIShapefile\fR nor the \fIMakefile\fR and
- Xconsequently sticks with the 'individual document level' rather than to
- Xsupport handling of entire systems or subsystems (higer level targets
- Xin \fI{Shape,Make}file\fRs).
- X.SH AUTHOR
- XAxel Mahler
- X.br
- XTechnical University Berlin
- X.sp
- X\fIUUCP:\fR axel@coma.uucp (unido!coma!axel)
- X.br
- X\fIBITNET:\fR axel@db0tui62
- END_OF_FILE
- if test 9516 -ne `wc -c <'man/man1/vcat.1'`; then
- echo shar: \"'man/man1/vcat.1'\" unpacked with wrong size!
- fi
- # end of 'man/man1/vcat.1'
- fi
- if test -f 'src/afs/afstore.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/afs/afstore.c'\"
- else
- echo shar: Extracting \"'src/afs/afstore.c'\" \(9385 characters\)
- sed "s/^X//" >'src/afs/afstore.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 * afstore.c -- interface to archives and binary pools
- X *
- X * Author: Andreas Lampen, TU-Berlin (andy@coma.UUCP)
- X * (andy@db0tui62.BITNET)
- X *
- X * $Header: afstore.c[1.5] Wed Feb 22 16:28:15 1989 andy@coma published $
- X *
- X * EXPORT:
- X * af_bldfile -- build file containing data of version
- X * af_newvers -- get attribute buffer for new version
- X * af_delvers -- delete version
- X * af_addvers -- add version
- X * af_updtvers -- update attribute buffer of version
- X * af_detlist -- detach archive or binary pool
- X */
- X
- X#include <stdio.h>
- X#include <string.h>
- X#ifdef SUNOS_4_0
- X#include <strings.h>
- X#endif
- X#include <sys/time.h>
- X#include <sys/types.h>
- X#include <sys/stat.h>
- X
- X#include "typeconv.h"
- X#include "afsys.h"
- X#include "afs.h"
- X#include "afarchive.h"
- X
- X/*=========================================================================
- X * af_arlock -- lock archive
- X *
- X *=========================================================================*/
- X
- XLOCAL af_arlock (list)
- X Af_revlist *list;
- X{
- X struct stat ibuf;
- X char lckfilename [MAXNAMLEN*4];
- X FILE *lckfd;
- X
- X if (stat (list->af_arfilename, &ibuf) == ERROR) /* no archive file present */
- X {
- X /* if there should be an archive file */
- X if (list->af_lastmod != (time_t) 0)
- X FAIL ("arlock", "archive file lost", AF_EINTERNAL, ERROR);
- X }
- X else
- X {
- X /* if archive has changed since last read */
- X if (list->af_lastmod != (time_t) af_cvttime (ibuf.st_mtime))
- X FAIL ("arlock", "", AF_EARCHANGED, ERROR);
- X }
- X
- X (void) strcpy (lckfilename, list->af_arfilename);
- X lckfilename [strlen (lckfilename) - sizeof (char)] = AF_LCKEXT;
- X if (stat (lckfilename, &ibuf) == ERROR) /* no lock file present */
- X {
- X /* create lockfile */
- X if ((lckfd = fopen (lckfilename, "w")) == (FILE *)0)
- X SFAIL ("arlock", "fopen (lockfile)", AF_ESYSERR, ERROR);
- X (void) fclose (lckfd);
- X af_reglckfile (lckfilename);
- X return (AF_OK);
- X }
- X
- X sleep (AF_LOCKTIMEOUT);
- X
- X if (stat (lckfilename, &ibuf) == ERROR) /* no lock file present */
- X {
- X if ((lckfd = fopen (lckfilename, "w")) == (FILE *)0)
- X SFAIL ("arlock", "fopen (lockfile)", AF_ESYSERR, ERROR);
- X (void) fclose (lckfd);
- X af_reglckfile (lckfilename);
- X return (AF_OK);
- X }
- X else
- X FAIL ("arlock", "", AF_EARLOCKED, ERROR);
- X}
- X
- X/*=========================================================================
- X * af_arunlock -- unlock archive
- X *
- X *=========================================================================*/
- X
- XLOCAL af_arunlock (list)
- X Af_revlist *list;
- X{
- X char lckfilename [MAXNAMLEN*4];
- X struct stat ibuf;
- X
- X (void) strcpy (lckfilename, list->af_arfilename);
- X lckfilename [strlen (lckfilename) - sizeof (char)] = AF_LCKEXT;
- X
- X /* update list descriptor */
- X if (stat (list->af_arfilename, &ibuf) != ERROR)
- X list->af_lastmod = (time_t) af_cvttime (ibuf.st_mtime);
- X
- X if (af_unlink (lckfilename) == ERROR)
- X FAIL ("af_arunlock", "lock file lost", AF_EINTERNAL, ERROR);
- X return (AF_OK);
- X}
- X
- X/*=========================================================================
- X * af_bldfile
- X *
- X *=========================================================================*/
- X
- XEXPORT af_bldfile (key, name)
- X Af_key *key;
- X char *name;
- X{
- X struct timeval tvp[2];
- X
- X if (key->af_ldes->af_extent & AF_BPOOL)
- X {
- X /* get file from binary pool */
- X if (af_cpfile (af_bpfilename (CATTR(key).af_syspath, VATTR(key).af_hashname), VATTR(key).af_fsize, name) == ERROR)
- X FAIL ("bldfile", "cpfile", AF_ESYSERR, ERROR);
- X /*** set modification and access date ***/
- X tvp[0].tv_sec = VATTR(key).af_atime;
- X tvp[0].tv_usec = 0;
- X tvp[1].tv_sec = VATTR(key).af_mtime;
- X tvp[1].tv_usec = 0;
- X if (utimes (name, tvp) == ERROR)
- X FAIL ("bldfile", "utimes", AF_ESYSERR, ERROR);
- X (void) af_uchmod (name, (int) VATTR(key).af_mode);
- X }
- X else
- X {
- X /* get data from archive file */
- X if (af_readdata (key->af_ldes) == ERROR)
- X return (ERROR);
- X
- X if (af_undodelta (key, name) == ERROR)
- X return (ERROR);
- X }
- X return (AF_OK);
- X}
- X
- X
- X/*=========================================================================
- X * af_newvers
- X *
- X *=========================================================================*/
- X
- XEXPORT af_newvers (list, key, mode)
- X Af_revlist *list;
- X Af_key *key;
- X int mode;
- X{
- X if (mode != AF_SOURCE)
- X FAIL ("newvers", "invalid mode", AF_EINTERNAL, ERROR);
- X
- X key->af_ldes = list;
- X /* if revision list is full */
- X if ((key->af_lpos = af_gfreepos (list)) == ERROR)
- X FAIL ("newvers", "too many new revisions", AF_EINTERNAL, ERROR);
- X
- X /* get data from archive */
- X if (af_readdata (list) == ERROR)
- X return (ERROR);
- X
- X return (AF_OK);
- X}
- X
- X
- X
- X/*=========================================================================
- X * af_delvers -- delete version
- X *
- X *=========================================================================*/
- X
- XEXPORT af_delvers (key)
- X Af_key *key;
- X{
- X char *busyname;
- X
- X /* if key points to a file in a binary pool */
- X if (key->af_ldes->af_extent & AF_BPOOL)
- X return (af_delbpentry (key));
- X
- X /* if "key" points to a busy version */
- X if (af_arlock (key->af_ldes) == ERROR)
- X return (ERROR);
- X
- X if (VATTR(key).af_state == AF_BUSY)
- X {
- X VATTR(key).af_predgen = AF_NOVNUM;
- X VATTR(key).af_predrev = AF_NOVNUM;
- X VATTR(key).af_lckname = (char *)0;
- X VATTR(key).af_lckhost = (char *)0;
- X VATTR(key).af_ltime = AF_NOTIME;
- X /* remove busy file */
- X busyname = af_gbusname (CATTR(key).af_syspath, VATTR(key).af_name, VATTR(key).af_type);
- X (void) af_unlink (busyname);
- X af_hashfree (&(VATTR(key).af_uhtab));
- X }
- X else
- X /* remove delta */
- X {
- X /* read data section of archive */
- X if (af_readdata (key->af_ldes) == ERROR)
- X return (ERROR);
- X
- X key->af_ldes->af_datasize -= VATTR(key).af_notesize;
- X if (VATTR(key).af_repr == AF_DELTA)
- X key->af_ldes->af_datasize -= VATTR(key).af_dsize;
- X else
- X key->af_ldes->af_datasize -= VATTR(key).af_fsize;
- X
- X (void) af_rmdelta (key);
- X }
- X
- X /* clear "valid" bit */
- X VATTR(key).af_class &= ~AF_VALID;
- X
- X key->af_ldes->af_nrevs--;
- X
- X if (af_writearchive (key->af_ldes) == ERROR)
- X {
- X (void) af_arunlock (key->af_ldes);
- X return (ERROR);
- X }
- X else
- X return (af_arunlock (key->af_ldes));
- X}
- X
- X/*=========================================================================
- X * af_addvers -- add version
- X *
- X *=========================================================================*/
- X
- XEXPORT af_addvers (key)
- X Af_key *key;
- X{
- X /* this function should only be used for archives (not for bpools */
- X /* I know, it is not very well-designed but ... */
- X if (key->af_ldes->af_extent & AF_BPOOL)
- X FAIL ("addvers", "cannot apply on binary pools", AF_EINTERNAL, ERROR);
- X if (af_arlock (key->af_ldes) == ERROR)
- X return (ERROR);
- X if (af_writearchive (key->af_ldes) == ERROR)
- X {
- X (void) af_arunlock (key->af_ldes);
- X return (ERROR);
- X }
- X else
- X return (af_arunlock (key->af_ldes));
- X}
- X
- X/*=========================================================================
- X * af_updtvers -- update attribute buffer of version
- X *
- X *=========================================================================*/
- X
- XEXPORT af_updtvers (key, mode)
- X Af_key *key;
- X int mode;
- X{
- X if (mode & (AF_ALLVERS | AF_CHANGE))
- X {
- X /* update time of last status change (ctime) for all versions */
- X /* not yet implemented (update ctime) */
- X }
- X else
- X {
- X if (mode & AF_CHANGE) /* update ctime only for this version */
- X VATTR(key).af_ctime = (time_t) af_acttime ();
- X }
- X
- X if (key->af_ldes->af_extent & AF_BPOOL)
- X return (af_rplbpentry (key, key, key));
- X else
- X {
- X if (af_arlock (key->af_ldes) == ERROR)
- X return (ERROR);
- X if (af_writearchive (key->af_ldes) == ERROR)
- X {
- X (void) af_arunlock (key->af_ldes);
- X return (ERROR);
- X }
- X else
- X return (af_arunlock (key->af_ldes));
- X }
- X}
- X
- X/*=========================================================================
- X * af_detlist -- detach archive or binary pool
- X *
- X *=========================================================================*/
- X
- XEXPORT af_detlist (list)
- X Af_revlist *list;
- X{
- X if (list->af_extent & AF_BPOOL)
- X return (af_detbpool (list));
- X else
- X return (af_detarchive (list));
- X}
- X
- END_OF_FILE
- if test 9385 -ne `wc -c <'src/afs/afstore.c'`; then
- echo shar: \"'src/afs/afstore.c'\" unpacked with wrong size!
- fi
- # end of 'src/afs/afstore.c'
- fi
- if test -f 'src/inc/afsys.h' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/inc/afsys.h'\"
- else
- echo shar: Extracting \"'src/inc/afsys.h'\" \(9500 characters\)
- sed "s/^X//" >'src/inc/afsys.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 * Shape/AFS
- X *
- X * afsys.h - Internal type and Constant-Definitions for the
- X * Attribute-Filesystem
- X *
- X * Author: Andreas Lampen (andy@coma.UUCP
- X * andy@db0tui62.BITNET)
- X *
- X * $Header: afsys.h[1.5] Wed Feb 22 16:29:46 1989 andy@coma published $
- X */
- X
- X#ifndef _AFSYS_
- X#define _AFSYS_
- X
- X/*=========================================================================
- X * Installation dependent constants
- X *=========================================================================*/
- X
- X#include <stdio.h>
- X#include <sys/types.h>
- X#ifndef MAXNAMLEN
- X#include <sys/dir.h>
- X#endif
- X#include <sys/param.h>
- X
- X#ifndef _TYPECONV_
- X# ifdef ULTRIX_2_0
- X# define Uid_t int
- X# define Gid_t int
- X# else
- X# define Uid_t uid_t
- X# define Gid_t gid_t
- X# endif
- X#endif
- X
- X#ifdef ULTRIX_2_0
- X#define MAXHOSTNAMELEN 64
- X#endif
- X
- X/*=========================================================================
- X * general constants
- X *=========================================================================*/
- X
- X#ifndef TRUE
- X#define TRUE 1
- X#endif
- X#ifndef FALSE
- X#define FALSE 0
- X#endif
- X
- X#define ERROR -1
- X#define LOCAL static
- X#define EXPORT
- X#define bool short
- X
- X/*=========================================================================
- X * Hash stuff
- X *=========================================================================*/
- X
- Xtypedef struct Af_hshent Af_hashent;
- X
- Xtypedef struct Af_hsh Af_hash;
- X
- Xstruct Af_hsh { int hsize, /* No. of slots in hashtable */
- X (*fhash)(); /* Pointer to hash-function */
- X Af_hashent *hashtb; /* Anchor of hashtable */
- X };
- X
- X/*=========================================================================
- X * Internal Type Definitions
- X *=========================================================================*/
- X
- X/**** buffer for version-independent attributes ****/
- Xtypedef struct {
- X char *af_host; /* hostname */
- X char *af_syspath; /* system path (incl. host) */
- X char *af_ownname; /* name of owner */
- X char *af_ownhost; /* host of owner */
- X } Af_cattrs;
- X
- X/**** buffer for version-dependent attributes ****/
- Xtypedef struct {
- X char *af_name; /* filename */
- X char *af_type; /* filename extension (type) */
- X int af_gen; /* generation number */
- X int af_rev; /* revision number */
- X char *af_variant; /* variant string */
- X short af_state; /* version state (see below) */
- X short af_class; /* file class */
- X char *af_auname; /* name of author */
- X char *af_auhost; /* host of author */
- X u_short af_mode; /* protection (from inode) */
- X char *af_lckname; /* name of locker */
- X char *af_lckhost; /* host of locker */
- X time_t af_mtime; /* date of last modification */
- X time_t af_atime; /* date of last access */
- X time_t af_ctime; /* date of last status change*/
- X time_t af_stime; /* save date */
- X time_t af_ltime; /* date of last lock change */
- X off_t af_notesize; /* size of note */
- X char *af_note; /* modification note */
- X int af_udanum; /* number of uda entries */
- X Af_hash af_uhtab; /* hash table for udefattrs */
- X short af_repr; /* kind of representation */
- X off_t af_fsize; /* size of file */
- X off_t af_dsize; /* size of delta */
- X char *af_data; /* ptr to chunk or delta */
- X char *af_hashname; /* name of associated file */
- X short af_nlinks; /* # of links to attrbuf */
- X int af_succgen, /* physical */
- X af_succrev; /* successor */
- X int af_predgen, /* physical */
- X af_predrev; /* predecessor */
- X } Af_vattrs;
- X
- X/**** Descriptor for revision list ****/
- Xtypedef struct rvlist Af_revlist;
- X
- Xstruct rvlist {
- X char *af_arfilename; /* filename of archive */
- X time_t af_lastmod; /* last mod. of archive file */
- X char *af_busyfilename; /* filename of busy version */
- X short af_nrevs; /* number of revs in list */
- X short af_listlen; /* total length of list */
- X off_t af_datasize; /* size of data-segment */
- X short af_extent; /* extent of revision list */
- X Af_cattrs af_cattrs; /* version-independent attrs */
- X Af_vattrs *af_list; /* pointer to revision list */
- X int af_refcount; /* number of keys in use */
- X char *af_mem; /* list of ptrs to alloc. mem. */
- X Af_revlist *af_next; /* index of next freelist entry */
- X };
- X
- X/*=========================================================================
- X * More Hash stuff
- X *=========================================================================*/
- X
- Xstruct Af_hshent { char *symbol;
- X Af_revlist *revlist;
- X Af_hashent *next;
- X };
- X
- X/*=========================================================================
- X * Internal Installation dependent constants
- X *=========================================================================*/
- X
- X#define AF_MAXSYMS 211 /* size of hashtable for symbols */
- X#define AF_MAXUDAS 61 /* size of hashtable for user defined attrs */
- X#define AF_SEGLEN 32 /* size of segment for (re-)allocation */
- X
- X/**** "syntactical sugar" for user defined attributes ****/
- X#define AF_UDANAMDEL '=' /* Delimiter for UDA name in archive */
- X#define AF_UDAVALDEL '\01' /* Delimiter for UDA values in arch. */
- X
- X/**** UNIX Environment ****/
- X#define AF_TMPDIR "/tmp" /* location of archive files */
- X#define AF_SUBDIR "AFS" /* subdirectory for archives */
- X#define AF_ARCHEXT 'A' /* extension for archive names */
- X#define AF_DATAEXT 'D' /* extension for datafile names */
- X#define AF_LCKEXT 'L' /* extension for lock files */
- X#define AF_ARCHTMP 'T' /* extension for temp archive names */
- X#define AF_DATATMP 'U' /* extension for temp datafile names */
- X#define AF_ERRLOG "/tmp/AFSerrlog" /* Error Log file */
- X
- X/**** file locking ****/
- X#define AF_LOCKTIMEOUT (unsigned) 1 /* wait 1 sec when archive is locked */
- X
- X/*=========================================================================
- X * Internal Constant Definitions
- X *=========================================================================*/
- X
- X/**** general ****/
- X
- X#define AF_READ 0
- X#define AF_WRITE 1
- X#define AF_RDWR 2
- X
- X/**** representation types ****/
- X
- X#define AF_CHUNK 0
- X#define AF_DELTA 1
- X#define AF_FILE 2 /* version resides in an own file (busy version) */
- X
- X/**** Version numbering ****/
- X
- X#define AF_INITGEN 1
- X#define AF_INITREV 0
- X
- X/**** Modes for archive manipulation ****/
- X
- X#define AF_CHANGE 01
- X#define AF_ALLVERS 02
- X
- X/**** Environment interaction ****/
- X
- X#define AF_ENVBPSIZE "AFSBPSIZ" /* name of environment variable defining */
- X /* max. number of files in bin. pool */
- X#define AF_MAXBPSIZE 64 /* max # of files in binary pool if no */
- X /* environment variable is present */
- X
- X/**** Permissions for checkperm ****/
- X
- X#define AF_OWNER 0001
- X#define AF_AUTHOR 0002
- X#define AF_LOCKHOLDER 0004
- X#define AF_WORLD 0010
- X
- X#define AF_REMOTE -2
- X
- X/*=========================================================================
- X * Useful macros
- X *=========================================================================*/
- X
- X#define CATTR(keyp) keyp->af_ldes->af_cattrs
- X#define VATTR(keyp) keyp->af_ldes->af_list[keyp->af_lpos]
- X
- X/* compare filekeys -- returnes 0 if equal (like strcmp) */
- X#define af_keycmp(key1,key2) (((key1)->af_ldes != (key2)->af_ldes) || ((key1)->af_lpos != (key2)->af_lpos))
- X
- X/* report error and return */
- X#define FAIL(msg1,msg2,errcd,retcd) { af_err (msg1, msg2, errcd); return (retcd); }
- X#define SFAIL(msg1,msg2,errcd,retcd) { af_serr (msg1, msg2, errcd); return (retcd); }
- X
- X/* convert nil pointer to empty string */
- X#define NOTNIL(str) (str ? str : "")
- X
- X/*=========================================================================
- X * Declarations
- X *=========================================================================*/
- X
- Xchar *af_malloc(), *af_realloc(), *af_gtmpname(), *af_gethostname();
- Xchar *af_entersym(), *af_replsym(), *af_garname(), *af_gbusname();
- Xchar *af_bpfilename();
- Xchar *af_rbphashname(), *af_unixname(), *af_gbpname(), *af_uniqpath();
- Xchar *af_hashsym(), *af_symlookup(), *af_vallookup(), *af_enterhost();
- Xvoid af_frmemlist(), af_serr(), af_err(), af_wng();
- Xvoid af_free(), af_frmemlist(), af_regtmpfile(), af_unregtmpfile();
- Xoff_t af_retfsize();
- XUid_t af_getuid(), getuid();
- XGid_t af_getgid();
- X#endif
- END_OF_FILE
- if test 9500 -ne `wc -c <'src/inc/afsys.h'`; then
- echo shar: \"'src/inc/afsys.h'\" unpacked with wrong size!
- fi
- # end of 'src/inc/afsys.h'
- fi
- if test -f 'src/vc/Makefile' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/vc/Makefile'\"
- else
- echo shar: Extracting \"'src/vc/Makefile'\" \(9367 characters\)
- sed "s/^X//" >'src/vc/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.2] Thu Feb 23 18:13:23 1989 axel@coma published $
- X#
- X# Log for /u/shape/dist-tape/src/vc/Makefile[1.0]
- X# Thu Feb 23 18:13:23 1989 axel@coma save $
- X# This Makefile is solely intended for the bootstrap installation
- X# of the SHAPE version-control system. It should be invoked by a
- X# master Make 'install' process defining the macros BASE, SYSTEM, and
- X# possibly CONFIG from the commandline.
- X#
- X# Makefile[1.1] Thu Feb 23 18:13:23 1989 axel@coma published $
- X# added target 'depend:'. Works very nice.
- X#
- X# Makefile[1.2] Thu Feb 23 18:13:23 1989 axel@coma published $
- X# --- empty log message ---
- X#
- X#
- X# Makefile for 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/vc
- XLIBDIR = $(BASE)/lib
- XINCLUDEDIR = $(BASE)/src/inc
- X
- X# define anything you like here (e.g. /usr/local)
- XINSTALDIR = $(BASE)/bin
- XINSTALOWNER = shape
- XINSTALGROUP = unib
- X
- 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#
- X
- XCOMPONENTS = $(MANUALS) $(MODULES) $(DEFINES)
- X
- XMODULES = \
- X doretrv.c \
- X dosave.c \
- X mkattr.c \
- X project.c \
- X retrv.c \
- X save.c \
- X sighand.c \
- X util.c \
- X vl.c \
- X vldovl.c \
- X vlmisc.c \
- X vlopt.c \
- X vadm.c \
- X vadm_utils.c \
- X vadm_note.c \
- X vadm_delete.c \
- X vadm_promote.c \
- X vadm_reserve.c \
- X vadm_symname.c \
- X vadm_gkeys.c \
- X vc_call.c \
- X vc_files.c \
- X vc_keyboardIo.c \
- X vc_lock.c
- X
- XDEFINES = \
- X afsapp.h \
- X locks.h \
- X retrv.h \
- X save.h \
- X typeconv.h \
- X vl.h \
- X vadm.h \
- X vadmdefs.h \
- X vc_sysdep.h
- X
- XMANUALS = \
- X retrv.1 \
- X save.1 \
- X vadm.1 \
- X vcintro.1 \
- X vl.1
- X
- XPRODUCT = vccommands
- XSUBPRODUCTS = \
- X $(BASE)/lib/libafs \
- X $(BASE)/lib/libutil
- X
- X
- XAFSLIB = $(BASE)/lib/libafs.a
- XUTLIB = $(BASE)/lib/libutil.a
- X
- XAFSINC = $(BASE)/src/inc
- X
- XPROGS = save retrv vl vadm
- XVERSION = version
- X
- XSAVESRC = save.c dosave.c vc_lock.c mkattr.c $(COMMONSRC)
- XSAVEOBJS = save.o dosave.o vc_lock.o mkattr.o
- XRETRSRC = retrv.c doretrv.c mkattr.c vc_lock.c $(COMMONSRC)
- XRETROBJS = retrv.o doretrv.o mkattr.o vc_lock.o
- XVLSRC = vl.c vlmisc.c vldovl.c vlopt.c mkattr.c $(VERSION).c
- XVLOBJS = vl.o vlmisc.o vldovl.o vlopt.o mkattr.o
- XVLINC = vl.h afs_huda.h
- XVADMOBJS = vadm.o vadm_utils.o vadm_note.o vadm_delete.o vadm_promote.o\
- X vadm_symname.o vadm_reserve.o vadm_gkeys.o vc_call.o vc_files.o\
- X vc_keyboardIo.o vc_lock.o util.o sighand.o mkattr.o
- XVADMSRC = vadm.c vadm_utils.c vadm_note.c vadm_delete.c vadm_promote.c\
- X vadm_symname.c vadm_reserve.c vadm_gkeys.c vc_call.c vc_files.c\
- X vc_keyboardIo.c vc_lock.c util.c sighand.c mkattr.c $(COMMONSRC)
- XVADMINC = vadm.h vadmdefs.h vc_sysdep.h
- XCOMMON = project.o sighand.o util.o $(VERSION).o
- XCOMMONSRC = project.c sighand.c util.c $(VERSION).c
- XALLOBJS = $(SAVEOBJS) $(RETROBJS) $(VLOBJS) $(COMMON)
- X
- Xall: save retrv vl vadm
- X
- Xsave: $(SAVEOBJS) $(COMMON) $(AFSLIB) $(UTLIB)
- X cc $(LDFLAGS) -o $@ $(SAVEOBJS) $(COMMON) $(UTLIB) $(AFSLIB) $(CLIBS)
- X
- Xretrv: $(RETROBJS) $(COMMON) $(AFSLIB) $(UTLIB)
- X cc $(LDFLAGS) -o $@ $(RETROBJS) $(COMMON) $(UTLIB) $(AFSLIB) $(CLIBS)
- X
- Xvl: $(VLOBJS) $(AFSLIB) $(UTLIB)
- X cc $(LDFLAGS) -o $@ $(VLOBJS) $(VERSION).o $(UTLIB) $(AFSLIB) $(CLIBS)
- X
- Xvadm: $(VADMOBJS) $(AFSLIB) $(UTLIB)
- X cc $(LDFLAGS) -o $@ $(VADMOBJS) $(VERSION).o $(UTLIB) $(AFSLIB) \
- X $(CLIBS)
- X
- Xinstall: all
- X @echo -n installing version control system in $(INSTALDIR)...; \
- X (cd $(BASE)/bin; rm -f save retrv vadm vl sbmt vcat vlog) ; \
- X echo -n .; \
- X install -c -m 755 save $(INSTALDIR); \
- X echo -n .; \
- X install -c -m 755 retrv $(INSTALDIR); \
- X echo -n .; \
- X install -c -m 755 vadm $(INSTALDIR); \
- X echo -n .; \
- X install -c -m 755 vl $(INSTALDIR); \
- X echo -n .; \
- X ln save sbmt; \
- X echo -n .; \
- X ln retrv vcat; \
- X echo -n .; \
- X ln vl vlog; \
- X echo done
- 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
- Xdoretrv.o: $(BASE)/src/inc/afs.h
- Xdoretrv.o: $(BASE)/src/inc/afsys.h
- Xdoretrv.o: ./afsapp.h
- Xdoretrv.o: ./locks.h
- Xdoretrv.o: ./project.h
- Xdoretrv.o: ./retrv.h
- Xdoretrv.o: ./typeconv.h
- Xdoretrv.o: doretrv.c
- Xdosave.o: $(BASE)/src/inc/afs.h
- Xdosave.o: $(BASE)/src/inc/afsys.h
- Xdosave.o: ./afsapp.h
- Xdosave.o: ./locks.h
- Xdosave.o: ./project.h
- Xdosave.o: ./save.h
- Xdosave.o: ./typeconv.h
- Xdosave.o: dosave.c
- Xmkattr.o: $(BASE)/src/inc/afs.h
- Xmkattr.o: $(BASE)/src/inc/afsys.h
- Xmkattr.o: ./afsapp.h
- Xmkattr.o: ./retrv.h
- Xmkattr.o: ./typeconv.h
- Xmkattr.o: mkattr.c
- Xproject.o: ./project.h
- Xproject.o: project.c
- Xretrv.o: $(BASE)/src/inc/ParseArgs.h
- Xretrv.o: $(BASE)/src/inc/afs.h
- Xretrv.o: $(BASE)/src/inc/afsys.h
- Xretrv.o: ./afsapp.h
- Xretrv.o: ./project.h
- Xretrv.o: ./retrv.h
- Xretrv.o: ./typeconv.h
- Xretrv.o: retrv.c
- Xsave.o: $(BASE)/src/inc/ParseArgs.h
- Xsave.o: ./afsapp.h
- Xsave.o: ./project.h
- Xsave.o: ./save.h
- Xsave.o: ./typeconv.h
- Xsave.o: save.c
- Xsighand.o: $(BASE)/src/inc/afs.h
- Xsighand.o: $(BASE)/src/inc/afsys.h
- Xsighand.o: ./afsapp.h
- Xsighand.o: ./typeconv.h
- Xsighand.o: sighand.c
- Xutil.o: $(BASE)/src/inc/afs.h
- Xutil.o: $(BASE)/src/inc/afsys.h
- Xutil.o: ./afsapp.h
- Xutil.o: ./locks.h
- Xutil.o: ./project.h
- Xutil.o: ./typeconv.h
- Xutil.o: util.c
- Xvadm.o: $(BASE)/src/inc/ParseArgs.h
- Xvadm.o: $(BASE)/src/inc/afs.h
- Xvadm.o: $(BASE)/src/inc/afsys.h
- Xvadm.o: ./afsapp.h
- Xvadm.o: ./typeconv.h
- Xvadm.o: ./vadm.h
- Xvadm.o: vadm.c
- Xvadm_delete.o: $(BASE)/src/inc/afs.h
- Xvadm_delete.o: $(BASE)/src/inc/afsys.h
- Xvadm_delete.o: ./afsapp.h
- Xvadm_delete.o: ./locks.h
- Xvadm_delete.o: ./typeconv.h
- Xvadm_delete.o: ./vadm.h
- Xvadm_delete.o: vadm_delete.c
- Xvadm_gkeys.o: $(BASE)/src/inc/afs.h
- Xvadm_gkeys.o: $(BASE)/src/inc/afsys.h
- Xvadm_gkeys.o: ./afsapp.h
- Xvadm_gkeys.o: ./typeconv.h
- Xvadm_gkeys.o: ./vadm.h
- Xvadm_gkeys.o: vadm_gkeys.c
- Xvadm_note.o: $(BASE)/src/inc/afs.h
- Xvadm_note.o: $(BASE)/src/inc/afsys.h
- Xvadm_note.o: ./afsapp.h
- Xvadm_note.o: ./locks.h
- Xvadm_note.o: ./typeconv.h
- Xvadm_note.o: ./vadm.h
- Xvadm_note.o: ./vc_sysdep.h
- Xvadm_note.o: vadm_note.c
- Xvadm_promote.o: $(BASE)/src/inc/afs.h
- Xvadm_promote.o: $(BASE)/src/inc/afsys.h
- Xvadm_promote.o: ./afsapp.h
- Xvadm_promote.o: ./locks.h
- Xvadm_promote.o: ./typeconv.h
- Xvadm_promote.o: ./vadm.h
- Xvadm_promote.o: vadm_promote.c
- Xvadm_reserve.o: $(BASE)/src/inc/afs.h
- Xvadm_reserve.o: $(BASE)/src/inc/afsys.h
- Xvadm_reserve.o: ./afsapp.h
- Xvadm_reserve.o: ./locks.h
- Xvadm_reserve.o: ./typeconv.h
- Xvadm_reserve.o: ./vadm.h
- Xvadm_reserve.o: vadm_reserve.c
- Xvadm_symname.o: $(BASE)/src/inc/afs.h
- Xvadm_symname.o: $(BASE)/src/inc/afsys.h
- Xvadm_symname.o: ./afsapp.h
- Xvadm_symname.o: ./project.h
- Xvadm_symname.o: ./typeconv.h
- Xvadm_symname.o: ./vadm.h
- Xvadm_symname.o: vadm_symname.c
- Xvadm_utils.o: $(BASE)/src/inc/afs.h
- Xvadm_utils.o: $(BASE)/src/inc/afsys.h
- Xvadm_utils.o: ./afsapp.h
- Xvadm_utils.o: ./typeconv.h
- Xvadm_utils.o: ./vadm.h
- Xvadm_utils.o: ./vadmdefs.h
- Xvadm_utils.o: vadm_utils.c
- Xvc_call.o: ./afsapp.h
- Xvc_call.o: ./typeconv.h
- Xvc_call.o: vc_call.c
- Xvc_files.o: $(BASE)/src/inc/afs.h
- Xvc_files.o: $(BASE)/src/inc/afsys.h
- Xvc_files.o: ./afsapp.h
- Xvc_files.o: ./locks.h
- Xvc_files.o: ./typeconv.h
- Xvc_files.o: ./vc_sysdep.h
- Xvc_files.o: vc_files.c
- Xvc_keyboardIo.o: ./afsapp.h
- Xvc_keyboardIo.o: ./typeconv.h
- Xvc_keyboardIo.o: vc_keyboardIo.c
- Xvc_lock.o: $(BASE)/src/inc/afs.h
- Xvc_lock.o: $(BASE)/src/inc/afsys.h
- Xvc_lock.o: ./afsapp.h
- Xvc_lock.o: ./typeconv.h
- Xvc_lock.o: vc_lock.c
- Xvl.o: $(BASE)/src/inc/ParseArgs.h
- Xvl.o: ./afsapp.h
- Xvl.o: ./typeconv.h
- Xvl.o: ./vl.h
- Xvl.o: vl.c
- Xvldovl.o: $(BASE)/src/inc/afs.h
- Xvldovl.o: $(BASE)/src/inc/afsys.h
- Xvldovl.o: ./afsapp.h
- Xvldovl.o: ./typeconv.h
- Xvldovl.o: ./vl.h
- Xvldovl.o: vldovl.c
- Xvlmisc.o: $(BASE)/src/inc/afs.h
- Xvlmisc.o: $(BASE)/src/inc/afsys.h
- Xvlmisc.o: ./afsapp.h
- Xvlmisc.o: ./typeconv.h
- Xvlmisc.o: ./vl.h
- Xvlmisc.o: vlmisc.c
- Xvlopt.o: $(BASE)/src/inc/ParseArgs.h
- Xvlopt.o: ./afsapp.h
- Xvlopt.o: ./typeconv.h
- Xvlopt.o: ./vl.h
- Xvlopt.o: vlopt.c
- END_OF_FILE
- if test 9367 -ne `wc -c <'src/vc/Makefile'`; then
- echo shar: \"'src/vc/Makefile'\" unpacked with wrong size!
- fi
- # end of 'src/vc/Makefile'
- fi
- echo shar: End of archive 11 \(of 33\).
- cp /dev/null ark11isdone
- 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
-