summaryrefslogtreecommitdiffstats
path: root/contrib/cvs/contrib
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>2002-12-02 03:13:37 +0000
committerpeter <peter@FreeBSD.org>2002-12-02 03:13:37 +0000
commitc88e7301411c002ff913342f1619967f7c3b58e7 (patch)
tree41e3ca13c2d66973453a5c0ea9b349da9618bfdb /contrib/cvs/contrib
parent64d3246a13e0c323164816b3820e24af7b8f003e (diff)
parent3dc96f7243ece1d1f7f87b03334f840415e0db63 (diff)
downloadFreeBSD-src-c88e7301411c002ff913342f1619967f7c3b58e7.zip
FreeBSD-src-c88e7301411c002ff913342f1619967f7c3b58e7.tar.gz
This commit was generated by cvs2svn to compensate for changes in r107484,
which included commits to RCS files with non-trunk default branches.
Diffstat (limited to 'contrib/cvs/contrib')
-rw-r--r--contrib/cvs/contrib/ChangeLog32
-rw-r--r--contrib/cvs/contrib/Makefile.am13
-rw-r--r--contrib/cvs/contrib/Makefile.in108
-rw-r--r--contrib/cvs/contrib/README115
-rw-r--r--contrib/cvs/contrib/check_cvs.in755
-rwxr-xr-xcontrib/cvs/contrib/cvs_acls.in11
-rwxr-xr-xcontrib/cvs/contrib/debug_check_log.sh13
7 files changed, 932 insertions, 115 deletions
diff --git a/contrib/cvs/contrib/ChangeLog b/contrib/cvs/contrib/ChangeLog
index f97ab64..5811d88 100644
--- a/contrib/cvs/contrib/ChangeLog
+++ b/contrib/cvs/contrib/ChangeLog
@@ -1,3 +1,35 @@
+2002-11-21 Larry Jones <lawrence.jones@eds.com>
+
+ * .cvsignore: Add check_cvs.
+
+ * check_cvs.in: New script contributed by Donald Sharp.
+ * Makefile.am (contrib_SCRIPTS): Add check_cvs.
+ * Makefile.in: Regenerated.
+ * README: Add check_cvs and other missing scripts, alphabetize.
+
+2002-11-08 Derek Price <derek@ximbiot.com>
+
+ * debug_check_log.sh: Simplify some code. Attempt to default to
+ src/check.log before falling back to ./check.log.
+
+2002-09-24 Derek Price <derek@ximbiot.com>
+
+ * Makefile.in: Regenerated using Automake 1.6.3.
+
+2002-09-24 Derek Price <derek@ximbiot.com>
+
+ * Makefile.in: Regenerated.
+
+2002-05-20 Derek Price <oberon@umich.edu>
+
+ * cvs_acls.in: Add note about using checkoutlist with avail
+ in the commentary's INSTALLATION section.
+ (Original patch from Ville Skyttä <ville.skytta@xemacs.org>.)
+
+2002-04-30 Derek Price <oberon@umich.edu>
+
+ * Makefile.in: Regenerated with automake 1.6.
+
2002-03-21 Derek Price <oberon@umich.edu>
* Makefile.am (install-data-local): Import a patch from RedHat which
diff --git a/contrib/cvs/contrib/Makefile.am b/contrib/cvs/contrib/Makefile.am
index 6972be8..77e56d9 100644
--- a/contrib/cvs/contrib/Makefile.am
+++ b/contrib/cvs/contrib/Makefile.am
@@ -13,21 +13,10 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
-# DISTFILES = \
-# ChangeLog README .cvsignore intro.doc \
-# Makefile.in clmerge.pl cln_hist.pl commit_prep.pl cvs2vendor.sh \
-# cvs_acls.pl cvscheck.sh cvscheck.man cvshelp.man debug_check_log.sh \
-# descend.sh \
-# descend.man dirfns.shar log.pl log_accum.pl mfpipe.pl rcs-to-cvs.sh \
-# rcs2log.sh rcslock.pl sccs2rcs.csh rcs2sccs.sh
-
-# files installed in $(pkgdatadir)
-#
-# CONTRIB_FILES = README intro.doc cvscheck.man
-
contribdir = $(pkgdatadir)/contrib
contrib_SCRIPTS = \
+ check_cvs \
clmerge \
cln_hist \
commit_prep \
diff --git a/contrib/cvs/contrib/Makefile.in b/contrib/cvs/contrib/Makefile.in
index 0a7bc14..75eba60 100644
--- a/contrib/cvs/contrib/Makefile.in
+++ b/contrib/cvs/contrib/Makefile.in
@@ -1,6 +1,7 @@
-# Makefile.in generated automatically by automake 1.5 from Makefile.am.
+# Makefile.in generated by automake 1.6.3 from Makefile.am.
+# @configure_input@
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
# Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -26,19 +27,6 @@
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
-
-# DISTFILES = \
-# ChangeLog README .cvsignore intro.doc \
-# Makefile.in clmerge.pl cln_hist.pl commit_prep.pl cvs2vendor.sh \
-# cvs_acls.pl cvscheck.sh cvscheck.man cvshelp.man debug_check_log.sh \
-# descend.sh \
-# descend.man dirfns.shar log.pl log_accum.pl mfpipe.pl rcs-to-cvs.sh \
-# rcs2log.sh rcslock.pl sccs2rcs.csh rcs2sccs.sh
-
-# files installed in $(pkgdatadir)
-#
-# CONTRIB_FILES = README intro.doc cvscheck.man
-
SHELL = @SHELL@
srcdir = @srcdir@
@@ -69,9 +57,13 @@ AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_HEADER = $(INSTALL_DATA)
transform = @program_transform_name@
@@ -81,22 +73,26 @@ POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
+
+EXEEXT = @EXEEXT@
+OBJEXT = @OBJEXT@
+PATH_SEPARATOR = @PATH_SEPARATOR@
AMTAR = @AMTAR@
AWK = @AWK@
CC = @CC@
CSH = @CSH@
DEPDIR = @DEPDIR@
-EXEEXT = @EXEEXT@
+EDITOR = @EDITOR@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
KRB4 = @KRB4@
LN_S = @LN_S@
-OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PERL = @PERL@
PR = @PR@
PS2PDF = @PS2PDF@
RANLIB = @RANLIB@
ROFF = @ROFF@
+STRIP = @STRIP@
TEXI2DVI = @TEXI2DVI@
VERSION = @VERSION@
YACC = @YACC@
@@ -108,6 +104,7 @@ install_sh = @install_sh@
contribdir = $(pkgdatadir)/contrib
contrib_SCRIPTS = \
+ check_cvs \
clmerge \
cln_hist \
commit_prep \
@@ -159,17 +156,17 @@ CLEANFILES = $(bin_SCRIPTS) $(contrib_SCRIPTS)
SUFFIXES = .sh
subdir = contrib
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h $(top_builddir)/src/options.h
-CONFIG_CLEAN_FILES = clmerge cln_hist commit_prep cvs_acls log log_accum \
- mfpipe pvcs2rcs rcslock sccs2rcs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = check_cvs clmerge cln_hist commit_prep cvs_acls log \
+ log_accum mfpipe pvcs2rcs rcslock sccs2rcs
SCRIPTS = $(contrib_SCRIPTS)
DIST_SOURCES =
DATA = $(contrib_DATA)
-DIST_COMMON = README ChangeLog Makefile.am Makefile.in clmerge.in \
- cln_hist.in commit_prep.in cvs_acls.in log.in log_accum.in \
- mfpipe.in pvcs2rcs.in rcslock.in sccs2rcs.in
+DIST_COMMON = README ChangeLog Makefile.am Makefile.in check_cvs.in \
+ clmerge.in cln_hist.in commit_prep.in cvs_acls.in log.in \
+ log_accum.in mfpipe.in pvcs2rcs.in rcslock.in sccs2rcs.in
all: all-am
.SUFFIXES:
@@ -178,59 +175,59 @@ $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu contrib/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) && \
- CONFIG_HEADERS= CONFIG_LINKS= \
- CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+check_cvs: $(top_builddir)/config.status check_cvs.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
clmerge: $(top_builddir)/config.status clmerge.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= CONFIG_LINKS= $(SHELL) ./config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
cln_hist: $(top_builddir)/config.status cln_hist.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= CONFIG_LINKS= $(SHELL) ./config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
commit_prep: $(top_builddir)/config.status commit_prep.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= CONFIG_LINKS= $(SHELL) ./config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
cvs_acls: $(top_builddir)/config.status cvs_acls.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= CONFIG_LINKS= $(SHELL) ./config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
log: $(top_builddir)/config.status log.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= CONFIG_LINKS= $(SHELL) ./config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
log_accum: $(top_builddir)/config.status log_accum.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= CONFIG_LINKS= $(SHELL) ./config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
mfpipe: $(top_builddir)/config.status mfpipe.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= CONFIG_LINKS= $(SHELL) ./config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
pvcs2rcs: $(top_builddir)/config.status pvcs2rcs.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= CONFIG_LINKS= $(SHELL) ./config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
rcslock: $(top_builddir)/config.status rcslock.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= CONFIG_LINKS= $(SHELL) ./config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
sccs2rcs: $(top_builddir)/config.status sccs2rcs.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= CONFIG_LINKS= $(SHELL) ./config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+contribSCRIPT_INSTALL = $(INSTALL_SCRIPT)
install-contribSCRIPTS: $(contrib_SCRIPTS)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(contribdir)
@list='$(contrib_SCRIPTS)'; for p in $$list; do \
- f="`echo $$p|sed '$(transform)'`"; \
- if test -f $$p; then \
- echo " $(INSTALL_SCRIPT) $$p $(DESTDIR)$(contribdir)/$$f"; \
- $(INSTALL_SCRIPT) $$p $(DESTDIR)$(contribdir)/$$f; \
- elif test -f $(srcdir)/$$p; then \
- echo " $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(contribdir)/$$f"; \
- $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(contribdir)/$$f; \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ if test -f $$d$$p; then \
+ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+ echo " $(contribSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(contribdir)/$$f"; \
+ $(contribSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(contribdir)/$$f; \
else :; fi; \
done
uninstall-contribSCRIPTS:
@$(NORMAL_UNINSTALL)
@list='$(contrib_SCRIPTS)'; for p in $$list; do \
- f="`echo $$p|sed '$(transform)'`"; \
+ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
echo " rm -f $(DESTDIR)$(contribdir)/$$f"; \
rm -f $(DESTDIR)$(contribdir)/$$f; \
done
uninstall-info-am:
+contribDATA_INSTALL = $(INSTALL_DATA)
install-contribDATA: $(contrib_DATA)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(contribdir)
@list='$(contrib_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f="`echo $$p | sed -e 's|^.*/||'`"; \
- echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(contribdir)/$$f"; \
- $(INSTALL_DATA) $$d$$p $(DESTDIR)$(contribdir)/$$f; \
+ echo " $(contribDATA_INSTALL) $$d$$p $(DESTDIR)$(contribdir)/$$f"; \
+ $(contribDATA_INSTALL) $$d$$p $(DESTDIR)$(contribdir)/$$f; \
done
uninstall-contribDATA:
@@ -243,22 +240,26 @@ uninstall-contribDATA:
tags: TAGS
TAGS:
-
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
top_distdir = ..
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
- @for file in $(DISTFILES); do \
- if test -f $$file; then d=.; else d=$(srcdir); fi; \
+ @list='$(DISTFILES)'; for file in $$list; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- $(mkinstalldirs) "$(distdir)/$$dir"; \
+ dir="/$$dir"; \
+ $(mkinstalldirs) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
fi; \
if test -d $$d/$$file; then \
- cp -pR $$d/$$file $(distdir) \
- || exit 1; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
@@ -283,6 +284,7 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
@@ -291,7 +293,7 @@ clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
- -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
+ -rm -f Makefile $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
diff --git a/contrib/cvs/contrib/README b/contrib/cvs/contrib/README
index 8a93f8f..b6e33f7 100644
--- a/contrib/cvs/contrib/README
+++ b/contrib/cvs/contrib/README
@@ -28,11 +28,20 @@ would presumably be willing to list your software.
An attempt at a table of Contents for this directory:
README This file.
- log A perl script suitable for including in your
- $CVSROOT/CVSROOT/loginfo file for logging commit
- changes. Includes the RCS revision of the change
- as part of the log.
- Contributed by Kevin Samborn <samborn@sunrise.com>.
+
+ check_cvs A perl script to check an entire repository for
+ corruption.
+ Contributed by Donald Sharp <sharpd@cisco.com>.
+
+ clmerge A perl script to handle merge conflicts in GNU
+ style ChangeLog files .
+ Contributed by Tom Tromey <tromey@busco.lanl.gov>.
+
+ cln_hist A perl script to compress your
+ $CVSROOT/CVSROOT/history file, as it can grow quite
+ large after extended use.
+ Contributed by David G. Grubbs <dgg@ksr.com>
+
commit_prep A perl script, to be combined with log_accum.pl, to
log_accum provide for a way to combine the individual log
messages of a multi-directory "commit" into a
@@ -41,33 +50,30 @@ An attempt at a table of Contents for this directory:
committing the correct revision of the file.
Read the comments carefully.
Contributed by David Hampton <hampton@cisco.com>.
- mfpipe Another perl script for logging. Allows you to
- pipe the log message to a file and/or send mail
- to some alias.
- Contributed by John Clyne <clyne@niwot.scd.ucar.edu>.
- rcs-to-cvs Script to import sources that may have been under
- RCS control already.
- Contributed by Per Cederqvist <ceder@lysator.liu.se>.
+
+ cvs2vendor A shell script to move changes from a repository
+ that was started without a vendor branch to one
+ that has a vendor branch.
+ Contributed by Greg A. Woods <woods@planix.com>.
+
+ cvs_acls A perl script that implements Access Control Lists
+ by using the "commitinfo" hook provided with the
+ "cvs commit" command.
+ Contributed by David G. Grubbs <dgg@ksr.com>.
+
cvscheck Identifies files added, changed, or removed in a
cvscheck.man checked out CVS tree; also notices unknown files.
Contributed by Lowell Skoog <fluke!lowell@uunet.uu.net>
+
cvshelp.man An introductory manual page written by Lowell Skoog
<fluke!lowell@uunet.uu.net>. It is most likely
out-of-date relative to CVS 1.3, but still may be
useful.
- dirfns A shar file which contains some code that might
- help your system support opendir/readdir/closedir,
- if it does not already.
- Copied from the C-News distribution.
- rcslock A perl script that can be added to your commitinfo
- file that tries to determine if your RCS file is
- currently locked by someone else, as might be the
- case for a binary file.
- Contributed by John Rouillard <rouilj@cs.umb.edu>.
- cvs_acls A perl script that implements Access Control Lists
- by using the "commitinfo" hook provided with the
- "cvs commit" command.
- Contributed by David G. Grubbs <dgg@ksr.com>.
+
+ debug_check_log A shell script to help analyze sanity check failures.
+ Contributed by Derek R. Price
+ <derek.price@openavenue.com>
+
descend A shell script that can be used to recursively
descend.man descend through a directory. In CVS 1.2, this was
very useful, since many of the commands were not
@@ -75,30 +81,53 @@ An attempt at a table of Contents for this directory:
the commands are recursive. However, this may still
come in handy.
Contributed by Lowell Skoog <fluke!lowell@uunet.uu.net>
- cln_hist A perl script to compress your
- $CVSROOT/CVSROOT/history file, as it can grow quite
- large after extended use.
- Contributed by David G. Grubbs <dgg@ksr.com>
- sccs2rcs A C-shell script that can convert (some) SCCS files
- into RCS files, retaining the info contained in the
- SCCS file (like dates, author, and log message).
- Contributed by Ken Cox <kenstir@viewlogic.com>.
+
+ dirfns A shar file which contains some code that might
+ help your system support opendir/readdir/closedir,
+ if it does not already.
+ Copied from the C-News distribution.
+
intro.doc A user's view of what you need to know to get
started with CVS.
Contributed by <Steven.Pemberton@cwi.nl>.
+
+ log A perl script suitable for including in your
+ $CVSROOT/CVSROOT/loginfo file for logging commit
+ changes. Includes the RCS revision of the change
+ as part of the log.
+ Contributed by Kevin Samborn <samborn@sunrise.com>.
+
+ log_accum See commit_prep.
+
+ mfpipe Another perl script for logging. Allows you to
+ pipe the log message to a file and/or send mail
+ to some alias.
+ Contributed by John Clyne <clyne@niwot.scd.ucar.edu>.
+
+ pvcs2rcs A perl script to convert a PVCS tree to an RCS tree.
+
+ rcs-to-cvs Script to import sources that may have been under
+ RCS control already.
+ Contributed by Per Cederqvist <ceder@lysator.liu.se>.
+
+ rcs2log A shell script to create a ChangeLog-format file
+ given only a set of RCS files.
+ Contributed by Paul Eggert <eggert@twinsun.com>.
+
rcs2sccs A shell script to convert simple RCS files into
SCCS files, originally gleaned off the network
somewhere (originally by "kenc") and modified by
Jerry Jelinek <jerry@rmtc.Central.Sun.COM> and
Brian Berliner <berliner@sun.com> to increase
robustness and add support for one-level of branches.
- rcs2log A shell script to create a ChangeLog-format file
- given only a set of RCS files.
- Contributed by Paul Eggert <eggert@twinsun.com>.
- clmerge A perl script to handle merge conflicts in GNU
- style ChangeLog files .
- Contributed by Tom Tromey <tromey@busco.lanl.gov>.
- cvs2vendor A shell script to move changes from a repository
- that was started without a vendor branch to one
- that has a vendor branch.
- Contributed by Greg A. Woods <woods@planix.com>
+
+ rcslock A perl script that can be added to your commitinfo
+ file that tries to determine if your RCS file is
+ currently locked by someone else, as might be the
+ case for a binary file.
+ Contributed by John Rouillard <rouilj@cs.umb.edu>.
+
+ sccs2rcs A C-shell script that can convert (some) SCCS files
+ into RCS files, retaining the info contained in the
+ SCCS file (like dates, author, and log message).
+ Contributed by Ken Cox <kenstir@viewlogic.com>.
diff --git a/contrib/cvs/contrib/check_cvs.in b/contrib/cvs/contrib/check_cvs.in
new file mode 100644
index 0000000..2053864
--- /dev/null
+++ b/contrib/cvs/contrib/check_cvs.in
@@ -0,0 +1,755 @@
+#! @PERL@ -w
+########################################################################
+# Copyright (c) 2000, 2001 by Donald Sharp <sharpd@cisco.com>
+# All Rights Reserved
+#
+# Permission is granted to copy and/or distribute this file, with or
+# without modifications, provided this notice is preserved.
+#
+########################################################################
+
+=head1 check_cvs.pl
+
+ Script to check the integrity of the Repository
+
+=head1 SYNOPSIS
+
+ check_cvs.pl
+
+=head1 DESCRIPTION
+
+ This script will search through a repository and determine if
+ any of the files in it are corrupted.
+
+ Please do not run this script inside of the repository itself,
+ it will cause it too fail.
+
+ Also it currently can only be run over the entire repository,
+ so only point your CVSROOT at the actual CVSROOT.
+
+=head1 OPTIONS
+
+ There are no options.
+
+=head1 EXAMPLES
+
+ setenv CVSROOT /release/111/cvs
+
+ # To see more verbose output
+ setenv CVSDEBUGEDIT 1
+
+ check_cvs.pl
+
+=head1 SEE ALSO
+
+ None
+
+=cut
+
+######################################################################
+# MODULES #
+######################################################################
+use strict;
+
+use File::Find;
+use File::Basename;
+use File::Path;
+use Cwd;
+
+######################################################################
+# GLOBALS #
+######################################################################
+
+my @list_of_broken_files;
+my @extra_files;
+my $verbose = 0;
+
+my $total_revisions;
+my $total_interesting_revisions;
+my $total_files;
+
+######################################################################
+# SUBROUTINES #
+######################################################################
+
+######################################################################
+#
+# NAME :
+# main
+#
+# PURPOSE :
+# To search the repository for broken files
+#
+# PARAMETERS :
+# NONE
+#
+# GLOBALS :
+# $ENV{ CVSROOT } - The CVS repository to search through
+# $ENV{ CVSDEBUGEDIT } - Turn on Debugging.
+# @list_of_broken_files - The list of files that need to
+# be fixed.
+# $verbose - is verbose mode on?
+# $total_revisions - The number of revisions considered
+# $total_interesting_revisions - The number of revisions used
+# $total_files - The total number of files looked at.
+#
+# RETURNS :
+# A list of broken files
+#
+# COMMENTS :
+# Do not run this script inside the repository. Choose
+# a nice safe spot( like /tmp ) outside of the repository.
+#
+######################################################################
+my $directory_to_look_at;
+
+select (STDOUT); $| = 1; # make unbuffered
+
+$total_revisions = 0;
+$total_interesting_revisions = 0;
+$total_files = 0;
+
+if( !exists( $ENV{ CVSROOT } ) )
+{
+ die( "The script should be run with the CVSROOT environment variable set" );
+}
+
+if( exists( $ENV{ CVSDEBUGEDIT } ) )
+{
+ $verbose = 1;
+ print( "Verbose Mode Turned On\n" );
+}
+
+$directory_to_look_at = $ENV{ CVSROOT };
+if( -l $directory_to_look_at )
+{
+ $directory_to_look_at = readlink( $directory_to_look_at );
+}
+
+print( "Processing: $directory_to_look_at\n" ) if( $verbose );
+find( \&process_file, $directory_to_look_at );
+
+my $num_files = @list_of_broken_files;
+print( "List of corrupted files\n" ) if( $num_files > 0 );
+foreach my $broken ( @list_of_broken_files )
+{
+ print( "**** File: $broken\n" );
+}
+
+$num_files = @extra_files;
+print( "List of Files That Don't belong in Repository:\n" ) if( $num_files > 0 );
+foreach my $extra ( @extra_files )
+{
+ print( "**** File: $extra\n" );
+}
+print( "Total Files: $total_files\n" );
+print( "Total Revisions: $total_revisions Interesting Revisions: $total_interesting_revisions\n" );
+
+######################################################################
+#
+# NAME :
+# process_file
+#
+# PURPOSE :
+# This function is called by the find function, it's purpose
+# is to decide if it is important to look at a file or not.
+# We only care about files that have the ,v at the end.
+#
+# PARAMETERS :
+# NONE
+#
+# GLOBALS :
+# $ENV{ CVSROOT } - The CVS repository to search through
+#
+# RETURNS :
+# NONE
+#
+# COMMENTS :
+# NONE
+#
+######################################################################
+sub process_file
+{
+ my $path = $File::Find::name;
+
+ $total_files += 1;
+ $path =~ s/^$directory_to_look_at\///;
+
+ print( "\tProcessing File: $path\n" ) if( $verbose );
+ if( $path =~ /,v$/ )
+ {
+ $path =~ s/,v$//;
+ look_at_cvs_file( $path );
+ }
+ elsif( ! -d $File::Find::name )
+ {
+ my $save = 0;
+ my @ignore_files = ( 'CVS\/fileattr$',
+ '^CVSROOT\/modules',
+ '^CVSROOT\/.#modules',
+ '^CVSROOT\/loginfo',
+ '^CVSROOT\/.#loginfo',
+ '^CVSROOT\/rcsinfo',
+ '^CVSROOT\/.#rcsinfo',
+ '^CVSROOT\/editinfo',
+ '^CVSROOT\/.#editinfo',
+ '^CVSROOT\/commitinfo',
+ '^CVSROOT\/.#commitinfo',
+ '^CVSROOT\/taginfo',
+ '^CVSROOT\/.#taginfo',
+ '^CVSROOT\/notify',
+ '^CVSROOT\/.#notify',
+ '^CVSROOT\/checkoutlist',
+ '^CVSROOT\/.#checkoutlist',
+ '^CVSROOT\/cvswrappers',
+ '^CVSROOT\/.#cvswrappers',
+ '^CVSROOT\/val-tags',
+ '^CVSROOT\/.#val-tags',
+ '^CVSROOT\/verifymsg',
+ '^CVSROOT\/.#verifymsg',
+ '^CVSROOT\/config',
+ '^CVSROOT\/.#config',
+ '^CVSROOT\/history',
+ '^CVSROOT\/cvsignore',
+ '^CVSROOT\/.#cvsignore' );
+
+ foreach my $ignore ( @ignore_files )
+ {
+ if( $path =~ /$ignore/ )
+ {
+ $save = 1;
+ last;
+ }
+ }
+
+ if( !$save )
+ {
+ push( @extra_files, $path );
+ }
+ }
+}
+
+######################################################################
+#
+# NAME :
+# look_at_cvs_file
+#
+# PURPOSE :
+# To decide if a file is broken or not. The algorithm is:
+# a) Get the revision history for the file.
+# - If that fails the file is broken, save the fact
+# and continue processing other files.
+# - If that succeeds we have a list of revisions.
+# b) For Each revision try to retrieve that version
+# - If that fails the file is broken, save the fact
+# and continue processing other files.
+# c) Continue on
+#
+# PARAMETERS :
+# $file - The file to look at.
+#
+# GLOBALS :
+# NONE
+#
+# RETURNS :
+# NONE
+#
+# COMMENTS :
+# We have to handle Attic files in a special manner.
+# Basically remove the Attic from the string if it
+# exists at the end of the $path variable.
+#
+######################################################################
+sub look_at_cvs_file
+{
+ my( $file ) = @_;
+ my( $name, $path, $suffix ) = fileparse( $file );
+
+ if( $path =~ s/Attic\/$// )
+ {
+ $file = $path . $name;
+ }
+
+ my $revisions = get_history( $name );
+
+ if( !defined( $revisions ) )
+ {
+ print( "\t$file is corrupted, this was determined via a cvs log command\n" ) if( $verbose );
+ push( @list_of_broken_files, $file );
+ return();
+ }
+
+ my @int_revisions = find_interesting_revisions( @$revisions );
+
+ foreach my $revision ( @int_revisions )
+ {
+ print( "\t\tLooking at Revision: $revision\n" ) if( $verbose );
+ if( !check_revision( $file, $revision ) )
+ {
+ print( "\t$file is corrupted in revision: $revision\n" ) if( $verbose );
+ push( @list_of_broken_files, $file );
+ return();
+ }
+ }
+
+}
+
+######################################################################
+#
+# NAME :
+# get_history
+#
+# PURPOSE :
+# To retrieve a array of revision numbers.
+#
+# PARAMETERS :
+# $file - The file to retrieve the revision numbers for
+#
+# GLOBALS :
+# NONE
+#
+# RETURNS :
+# On Success - Reference to the list of revision numbers
+# On Failure - undef.
+#
+# COMMENTS :
+# The $_ is saved off because The File::find functionality
+# expects the $_ to not have been changed.
+# The -N option for the rlog command means to spit out
+# tags or branch names.
+#
+######################################################################
+sub get_history
+{
+ my( $file ) = @_;
+ my @revisions;
+ my $revision;
+
+ my $save_ = $_;
+
+ open( FILE, "rlog -N '$file' 2>&1 |" ) or die( "unable to run rlog, help" );
+
+ while( <FILE> )
+ {
+ if( ( $revision ) = /^revision (.*)$/ )
+ {
+ push( @revisions, $revision );
+ }
+ }
+
+ $_ = $save_;
+
+ if( !close( FILE ) )
+ {
+ return( undef );
+ }
+
+ return( \@revisions );
+}
+
+######################################################################
+#
+# NAME :
+# check_revision
+#
+# PURPOSE :
+# Given a file and a revision number ensure that we can
+# check out that file
+#
+# PARAMETERS :
+# $file - The file to look at.
+# $revision - The revision to look at.
+#
+# GLOBALS :
+# NONE
+#
+# RETURNS :
+# If we can get the File - 1
+# If we can not get the File - 0
+#
+# COMMENTS :
+# cvs command line options are as followed:
+# -l - Do not log this command in the history file. I am
+# doing this because we will literaly be looking at
+# thousands of files with *lots* of revisions.
+# -n - Do not run any checkout program as specified by the -o
+# option in the modules file
+# -p - Put all output to standard out.
+# -r - The revision of the file that we would like to look at.
+# Please note that cvs will return 0 for being able to successfully
+# read the file and 1 for failure to read the file.
+#
+######################################################################
+sub check_revision
+{
+ my( $file, $revision ) = @_;
+
+ my $cwd = getcwd();
+ chdir( "/tmp" );
+
+ my $ret_code = 0xffff & system( "cvs -l co -n -p -r $revision '$file' > /dev/null 2>&1" );
+
+ chdir( $cwd );
+ return( 1 ) if ( $ret_code == 0 );
+ return( 0 );
+
+ return( $ret_code );
+}
+
+######################################################################
+#
+# NAME :
+# find_interesting_revisions
+#
+# PURPOSE :
+# CVS stores information in a logical manner. We only really
+# need to look at some interestin revisions. These are:
+# The first version
+# And the last version on every branch.
+# This is because cvs stores changes descending from
+# main line. ie suppose the last version on mainline is 1.6
+# version 1.6 of the file is stored in toto. version 1.5
+# is stored as a diff between 1.5 and 1.6. 1.4 is stored
+# as a diff between 1.5 and 1.4.
+# branches are stored a little differently. They are
+# stored in ascending order. Suppose there is a branch
+# on 1.4 of the file. The first branches revision number
+# would be 1.4.1.1. This is stored as a diff between
+# version 1.4 and 1.4.1.1. The 1.4.1.2 version is stored
+# as a diff between 1.4.1.1 and 1.4.1.2. Therefore
+# we are only interested in the earliest revision number
+# and the highest revision number on a branch.
+#
+# PARAMETERS :
+# @revisions - The list of revisions to find interesting ones
+#
+# GLOBALS :
+# NONE
+#
+# RETURNS :
+# @new_revisions - The list of revisions that we find interesting
+#
+# COMMENTS :
+#
+######################################################################
+sub find_interesting_revisions
+{
+ my( @revisions ) = @_;
+ my @new_revisions;
+ my %branch_revision;
+ my $branch_number;
+ my $branch_rev;
+ my $key;
+ my $value;
+
+ START_OVER:
+ foreach my $revision( @revisions )
+ {
+ my $start_over = 0;
+ ( $branch_number, $branch_rev ) = branch_split( $revision );
+
+ #if the number of elements in the branch is 1
+ #and the new branch is less than the old branch
+ if( elements_in_branch( $branch_number ) == 1 )
+ {
+ ( $start_over,
+ %branch_revision ) = find_int_mainline_revision( $branch_number,
+ $branch_rev,
+ %branch_revision );
+ next START_OVER if( $start_over );
+ }
+
+ %branch_revision = find_int_branch_revision( $branch_number,
+ $branch_rev,
+ %branch_revision );
+
+ }
+
+ %branch_revision = remove_duplicate_branches( %branch_revision );
+
+ while( ( $key, $value ) = each ( %branch_revision ) )
+ {
+ push( @new_revisions, $key . "." . $value );
+ }
+
+ my $nrc;
+ my $rc;
+
+ $rc = @revisions;
+ $nrc = @new_revisions;
+
+ $total_revisions += $rc;
+ $total_interesting_revisions += $nrc;
+
+ print( "\t\tTotal Revisions: $rc Interesting Revisions: $nrc\n" ) if( $verbose );
+
+ return( @new_revisions );
+}
+
+########################################################################
+#
+# NAME :
+# remove_duplicate_branches
+#
+# PURPOSE :
+# To remove from the list of branches that we are interested
+# in duplication that will cause cvs to check a revision multiple
+# times. For Instance revision 1.1.1.1 should be prefered
+# to be checked over revision 1.1, as that v1.1.1.1 can
+# only be retrieved by going through v1.1. Therefore
+# we should remove v1.1 from the list of branches that
+# are interesting.
+#
+# PARAMETERS :
+# %branch_revisions - The hash of the interesting revisions
+#
+# GLOBALS :
+# NONE
+#
+# RETURNS :
+# %branch_revisions - The hash of the modified interesting revisions
+#
+# COMMENTS :
+# NONE
+#
+########################################################################
+sub remove_duplicate_branches
+{
+ my( %branch_revisions ) = @_;
+ my $key;
+ my $value;
+ my $branch_comp;
+ my $branch;
+
+
+ RESTART:
+ {
+ my @keys = keys( %branch_revisions );
+ while( ( $key, $value ) = each ( %branch_revisions ) )
+ {
+ $branch_comp = $key . "." . $value;
+ foreach $branch ( @keys )
+ {
+ if( $branch eq $key )
+ {
+ next;
+ }
+ if( elements_in_branch( $branch_comp ) ==
+ elements_in_branch( $branch ) - 1 )
+ {
+ if( $branch =~ /^$branch_comp/ )
+ {
+ delete( $branch_revisions{ $key } );
+ goto RESTART;
+ }
+ }
+ }
+ }
+ }
+
+ return( %branch_revisions );
+}
+
+######################################################################
+#
+# NAME :
+# find_int_branch_revision
+#
+# PURPOSE :
+# To Find a interesting branch revision.
+# Algorithm:
+# If the $branch_revision exists in the interesting branch
+# hash and the new $branch_rev is less than currently saved
+# one replace it with the new $branch_rev.
+# else if the $branch_revision doesn't exist in the interesting
+# branch hash, then just store the $branch_number and $branch_rev
+#
+# PARAMETERS :
+# $branch_number - The branch that we are looking at
+# $branch_rev - The particular revision we are looking
+# at on the $branch_number.
+# %branch_revision - The hash storing the interesting branches
+# and the revisions on them.
+#
+# GLOBALS :
+# NONE
+#
+# RETURNS :
+# %branch_revision - The modified hash that stores interesting
+# branches.
+#
+# COMMENTS :
+# NONE
+#
+######################################################################
+sub find_int_branch_revision
+{
+ my( $branch_number, $branch_rev, %branch_revision ) = @_;
+
+ if( exists( $branch_revision{ $branch_number } ) )
+ {
+ if( $branch_rev > $branch_revision{ $branch_number } )
+ {
+ $branch_revision{ $branch_number } = $branch_rev;
+ }
+ }
+ else
+ {
+ $branch_revision{ $branch_number } = $branch_rev;
+ }
+
+ return( %branch_revision );
+}
+
+######################################################################
+#
+# NAME :
+# find_int_mainline_revision
+#
+# PURPOSE :
+# To Find a interesting mainline revision.
+# Algorithm:
+# if the $branch_number is less then a branch number
+# with one element in it, then delete the old branch_number
+# and return.
+# if the $branch_number is greater than a branch number
+# then return, and tell the calling function that we
+# should skip this element, as that it's not important.
+# if the $branch_number is the same as a branch number
+# with one element in it, then check to see if the
+# $branch_rev is less than the stored branch rev if
+# it is replace with new $branch_rev. Else ignore revision
+#
+# PARAMETERS :
+# $branch_number - The branch that we are looking at
+# $branch_rev - The particular revision we are looking
+# at on the $branch_number.
+# %branch_revision - The hash storing the interesting branches
+# and the revisions on them.
+#
+# GLOBALS :
+# NONE
+#
+# RETURNS :
+# ( $skip, %branch_revision ) -
+# $skip - 1 if we need to ignore this particular $branch_number
+# $branch_rev combo. Else 0.
+# %branch_revision - The modified hash that stores interesting
+# branches.
+#
+# COMMENTS :
+# NONE
+#
+######################################################################
+sub find_int_mainline_revision
+{
+ my( $branch_number, $branch_rev, %branch_revision ) = @_;
+
+ foreach my $key ( keys %branch_revision )
+ {
+ if( elements_in_branch( $key ) == 1 )
+ {
+ if( $branch_number < $key )
+ {
+ delete( $branch_revision{ $key } );
+ next;
+ }
+
+ if( $branch_number > $key )
+ {
+ return( 1, %branch_revision );
+ }
+ if( ( exists( $branch_revision{ $branch_number } ) ) &&
+ ( $branch_rev < $branch_revision{ $branch_number } ) )
+ {
+ $branch_revision{ $branch_number } = $branch_rev;
+ return( 1, %branch_revision );
+ }
+ }
+ }
+
+ return( 0, %branch_revision );
+}
+
+######################################################################
+#
+# NAME :
+# elements_in_branch
+#
+# PURPOSE :
+# Determine the number of elements in a revision number
+# Elements are defined by numbers seperated by ".".
+# the revision 1.2.3.4 would have 4 elements
+# the revision 1.2.4.5.6.7 would have 6 elements
+#
+# PARAMETERS :
+# $branch - The revision to look at.
+#
+# GLOBALS :
+# NONE
+#
+# RETURNS :
+# $count - The number of elements
+#
+# COMMENTS :
+# NONE
+#
+######################################################################
+sub elements_in_branch
+{
+ my( $branch ) = @_;
+ my @split_rev;
+
+ @split_rev = split /\./, $branch;
+
+ my $count = @split_rev;
+ return( $count );
+}
+
+######################################################################
+#
+# NAME :
+# branch_split
+#
+# PURPOSE :
+# To split up a revision number up into the branch part and
+# the number part. For Instance:
+# 1.1.1.1 - is split 1.1.1 and 1
+# 2.1 - is split 2 and 1
+# 1.3.4.5.7.8 - is split 1.3.4.5.7 and 8
+#
+# PARAMETERS :
+# $revision - The revision to look at.
+#
+# GLOBALS :
+# NONE
+#
+# RETURNS :
+# ( $branch, $revision ) -
+# $branch - The branch part of the revision number
+# $revision - The revision part of the revision number
+#
+# COMMENTS :
+# NONE
+#
+######################################################################
+sub branch_split
+{
+ my( $revision ) = @_;
+ my $branch;
+ my $version;
+ my @split_rev;
+ my $count;
+
+ @split_rev = split /\./, $revision;
+
+ my $numbers = @split_rev;
+ @split_rev = reverse( @split_rev );
+ $branch = pop( @split_rev );
+ for( $count = 0; $count < $numbers - 2 ; $count++ )
+ {
+ $branch .= "." . pop( @split_rev );
+ }
+
+ return( $branch, pop( @split_rev ) );
+}
diff --git a/contrib/cvs/contrib/cvs_acls.in b/contrib/cvs/contrib/cvs_acls.in
index b33f6ff..d151d9e 100755
--- a/contrib/cvs/contrib/cvs_acls.in
+++ b/contrib/cvs/contrib/cvs_acls.in
@@ -19,7 +19,16 @@
#
# 2. Install this file as /usr/local/bin/cvs_acls and make it executable.
#
-# 3. Create a file named $CVSROOT/CVSROOT/avail.
+# 3. Create a file named CVSROOT/avail and optionally add it to
+# CVSROOT/checkoutlist and check it in. See the CVS manual's
+# administrative files section about checkoutlist. Typically:
+#
+# $ cvs checkout CVSROOT
+# $ cd CVSROOT
+# [ create the avail file ]
+# [ add avail to checkoutlist ]
+# $ cvs add avail
+# $ cvs commit -m 'Added avail for use with cvs_acls.' avail checkoutlist
#
# ==== FORMAT OF THE avail FILE:
#
diff --git a/contrib/cvs/contrib/debug_check_log.sh b/contrib/cvs/contrib/debug_check_log.sh
index f14b26d..4f8df1e 100755
--- a/contrib/cvs/contrib/debug_check_log.sh
+++ b/contrib/cvs/contrib/debug_check_log.sh
@@ -184,14 +184,15 @@ fi
# set default arg
if test $# -eq 0; then
- dcl_argvar=dcl_default
- dcl_default=check.log
-else
- dcl_argvar=@
+ if test -f src/check.log && test -r src/check.log; then
+ set src/check.log
+ else
+ set check.log
+ fi
fi
-eval for file in \"\$$dcl_argvar\"\; do \
- process_check_log \$file\; \
+for file in "$@"; do
+ process_check_log $file;
done
exit 0
OpenPOWER on IntegriCloud