mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
Import cvs-1.11.15
This commit is contained in:
parent
c8ae5f0562
commit
10bfecb8b5
134 changed files with 21049 additions and 9518 deletions
|
|
@ -1,4 +1,88 @@
|
|||
Authors of GNU CVS
|
||||
|
||||
Um, yeah. There were lots of 'em. See the "Credits" section of the
|
||||
README file and the individual ChangeLog files for more.
|
||||
The conflict-resolution algorithms and much of the administrative file
|
||||
definitions of CVS were based on the original package written by Dick Grune
|
||||
at Vrije Universiteit in Amsterdam <dick@cs.vu.nl>, and posted to
|
||||
comp.sources.unix in the volume 6 release sometime in 1986. This original
|
||||
version was a collection of shell scripts. I am thankful that Dick made
|
||||
his work available.
|
||||
|
||||
Brian Berliner from Prisma, Inc. (now at Sun Microsystems, Inc.)
|
||||
<berliner@sun.com> converted the original CVS shell scripts into reasonably
|
||||
fast C and added many, many features to support software release control
|
||||
functions. See the manual page in the "man" directory. A copy of the
|
||||
USENIX article presented at the Winter 1990 USENIX Conference, Washington
|
||||
D.C., is included in the "doc" directory.
|
||||
|
||||
Jeff Polk from BSDI <polk@bsdi.com> converted the CVS 1.2
|
||||
sources into much more readable and maintainable C code. He also added a
|
||||
whole lot of functionality and modularity to the code in the process.
|
||||
See the bottom of the NEWS file (from about 1992).
|
||||
|
||||
david d `zoo' zuhn <zoo@armadillo.com> contributed the working base code
|
||||
for CVS 1.4 Alpha. His work carries on from work done by K. Richard Pixley
|
||||
and others at Cygnus Support. The CVS 1.4 upgrade is due in large part to
|
||||
Zoo's efforts.
|
||||
|
||||
David G. Grubbs <dgg@odi.com> contributed the CVS "history" and "release"
|
||||
commands. As well as the ever-so-useful "-n" option of CVS which tells CVS
|
||||
to show what it would do, without actually doing it. He also contributed
|
||||
support for the .cvsignore file.
|
||||
|
||||
The Free Software Foundation (GNU) contributed most of the portability
|
||||
framework that CVS now uses. This can be found in the "configure" script,
|
||||
the Makefile's, and basically most of the "lib" directory.
|
||||
|
||||
K. Richard Pixley, Cygnus Support <rich@cygnus.com> contributed many bug
|
||||
fixes/enhancement as well as completing early reviews of the CVS 1.3 manual
|
||||
pages.
|
||||
|
||||
Roland Pesch, then of Cygnus Support <roland@wrs.com> contributed
|
||||
brand new cvs(1) and cvs(5) manual pages. Thanks to him for saving us
|
||||
from poor use of our language!
|
||||
|
||||
Paul Sander, HaL Computer Systems, Inc. <paul@hal.com> wrote and
|
||||
contributed the code in lib/sighandle.c. I added support for POSIX, BSD,
|
||||
and non-POSIX/non-BSD systems.
|
||||
|
||||
Jim Kingdon and others at Cygnus Support <info@cygnus.com> wrote the
|
||||
remote repository access code.
|
||||
|
||||
Larry Jones and Derek Price <derek@ximbiot.com> have been maintaining and
|
||||
enhancing CVS for some years. Mark D. Baushke <mdb@cvshome.org> came on in
|
||||
2003.
|
||||
|
||||
There have been many, many contributions not listed here. Consult the
|
||||
individual ChangeLog files in each directory for a more complete idea.
|
||||
|
||||
In addition to the above contributors, the following Beta testers
|
||||
deserve special mention for their support. This is only a partial
|
||||
list; if you have helped in this way and would like to be listed, let
|
||||
bug-cvs know (as described in the Cederqvist manual).
|
||||
|
||||
Mark D. Baushke <mdb@cisco.com>
|
||||
Per Cederqvist <ceder@signum.se>
|
||||
J.T. Conklin <jtc@cygnus.com>
|
||||
Vince DeMarco <vdemarco@fdcsrvr.cs.mci.com>
|
||||
Paul Eggert <eggert@twinsun.com>
|
||||
Lal George <george@research.att.com>
|
||||
Dean E. Hardi <Dean.E.Hardi@ccmail.jpl.nasa.gov>
|
||||
Mike Heath <mike@pencom.com>
|
||||
Jim Kingdon <kingdon@cygnus.com>
|
||||
Bernd Leibing <bernd.leibing@rz.uni-ulm.de>
|
||||
Benedict Lofstedt <benedict@tusc.com.au>
|
||||
Dave Love <d.love@dl.ac.uk>
|
||||
Robert Lupton the Good <rhl@astro.princeton.edu>
|
||||
Tom McAliney <tom@hilco.com>
|
||||
Eberhard Mattes <mattes@azu.informatik.uni-stuttgart.de>
|
||||
Jim Meyering <meyering@comco.com>
|
||||
Thomas Mohr <mohr@lts.sel.alcatel.de>
|
||||
Thomas Nilsson <thoni@softlab.se>
|
||||
Raye Raskin <raye.raskin@lia.com>
|
||||
Harlan Stenn <harlan@landmark.com>
|
||||
Gunnar Tornblom <gunnar.tornblom@senet.abb.se>
|
||||
Greg A. Woods <woods@planix.com>
|
||||
|
||||
Many contributors have added code to the "contrib" directory. See the
|
||||
README file there for a list of what is available. There is also a
|
||||
contributed GNU Emacs CVS-mode in tools/pcl-cvs.
|
||||
|
|
|
|||
|
|
@ -15,16 +15,6 @@ similar file for the unix-like operating systems (not yet, at least).
|
|||
This file also might contain some platform-specific bugs.
|
||||
|
||||
|
||||
* Need more work on the procedure for fixing it if a binary file is
|
||||
accidentally added in text mode (sanity.sh test cases, better
|
||||
documentation, probably update and/or admin -kb should update
|
||||
the -k setting in CVS/Entries).
|
||||
|
||||
|
||||
* Wrappers (-t/-f) do not work client/server, and there are a variety of other
|
||||
bugs and annoyances with wrappers.
|
||||
|
||||
|
||||
* If your login name contains a space or various other characters
|
||||
(particularly an issue on Windows), CVS will have trouble (it will
|
||||
write invalid RCS files, probably). The fix would be to have CVS
|
||||
|
|
@ -42,6 +32,21 @@ provide a "Option-read-write" request which sends -w, in addition to
|
|||
"Global_option -r" which sends -r.
|
||||
|
||||
|
||||
* Symbolic links to files will not work with or without LockDir. In the
|
||||
repository, you should avoid using symbolic links to files since this issue
|
||||
can cause data loss. Symlinks are only a problem when writing files. If your
|
||||
repository does not allow any write access, symlinks are not a problem.
|
||||
|
||||
|
||||
* Symbolic links to directories will not work with LockDir. In the
|
||||
repository, you should avoid using symbolic links to directories if
|
||||
you intend to use LockDir as the correct directory will NOT be locked
|
||||
by CVS during write. Directory symlinks are not recommended, but should work
|
||||
as long as LockDir is not being used. Symlinks are only a problem when
|
||||
writing files. If your repository does not allow any write access, symlinks
|
||||
are never a problem, whether or not LockDir is in use.
|
||||
|
||||
|
||||
* "make remotecheck" sometimes fails on test 187a3 with
|
||||
cvs server: in directory .:
|
||||
cvs [server aborted]: *PANIC* administration files missing
|
||||
|
|
@ -59,49 +64,13 @@ file's description.
|
|||
users who try to add the same directory at nearly the same time.
|
||||
|
||||
|
||||
* 'cvs admin' dumped core when files were missing from working directory
|
||||
(and from the repository)?
|
||||
|
||||
|
||||
* The following bug was reported against CVS 1.9:
|
||||
|
||||
Create a module named test with a file named test in it.
|
||||
|
||||
cactus:sfavor> cvs get test
|
||||
cvs checkout: Updating test
|
||||
U test/test
|
||||
cactus:sfavor> cd test
|
||||
cactus:sfavor> cvs get test
|
||||
cvs checkout: cannot chdir to test: Not a directory
|
||||
cvs checkout: ignoring module test
|
||||
Exit 1
|
||||
cactus:sfavor> cvs update
|
||||
cvs update: Updating .
|
||||
rcs.c:2139: failed assertion `rev == NULL || isdigit (*rev)'
|
||||
Abort (core dumped)
|
||||
Exit 134
|
||||
|
||||
|
||||
* pcl-cvs doesn't like it when you try to check in a file which isn't
|
||||
up-to-date. The messages produced by the server perhaps don't match
|
||||
what pcl-cvs is looking for.
|
||||
|
||||
|
||||
* From: billr@mpd.tandem.com (Bill Robertson)
|
||||
Subject: Problem with rtag and the -D option
|
||||
Date: Fri, 17 Mar 1995 10:53:29 -0600 (CST)
|
||||
|
||||
I have been trying to use the -D option to specify a date for tagging, but
|
||||
rtag does not recognize the -D option. It is documented to do so and I've
|
||||
tested the use of -D with cvs update and cvs diff and it works fine there.
|
||||
|
||||
* From: "Charles M. Hannum" <mycroft@ai.mit.edu>
|
||||
To: info-cvs@prep.ai.mit.edu
|
||||
Subject: Still one more bug
|
||||
Date: Sat, 25 Feb 1995 17:01:15 -0500
|
||||
|
||||
mycroft@duality [1]; cd /usr/src/lib/libc
|
||||
mycroft@duality [1]; cvs diff -c2 '-D1 day ago' -Dnow
|
||||
mycroft@duality [1]; cvs diff -C2 '-D1 day ago' -Dnow
|
||||
cvs server: Diffing .
|
||||
cvs server: Diffing DB
|
||||
cvs [server aborted]: could not chdir to DB: No such file or directory
|
||||
|
|
@ -229,3 +198,36 @@ file's description.
|
|||
|
||||
Send me a PGP-signed message if you want the password to use the machine
|
||||
where the problem showed up.
|
||||
|
||||
* CVS does not always seem to be waiting to the next filesystem timestamp
|
||||
quanta after commits. So far this has only shown up in testing under the BSDI
|
||||
OS. The symptoms are that ocassionally CVS will not notice that modified files
|
||||
are modified, though the file must be modified within a short time after the
|
||||
commit, probably milliseconds or seconds, for this symptom to be noticed. One
|
||||
suspected cause is that one of the calls to sleep_past() is being called with
|
||||
an incorrect value, though this does not explain why symptoms have only been
|
||||
noticed under BSDI.
|
||||
|
||||
* Spaces in arguments to `cvs diff' are currently split on spaces and tabs
|
||||
before being passed to diff. This can often cause diff to abort since it can
|
||||
no longer interpret its options string and if it can, coincidentally,
|
||||
interpret its option string, then the problem may be output in unexpected
|
||||
formats.
|
||||
|
||||
* `release' of a project subdir does not remove the `subdir' entry from
|
||||
`./CVS/Entries'.
|
||||
|
||||
* The Windows Microsoft Visual C++ project files are out of date, but the
|
||||
project can still be built under Windows using `nmake'. See the INSTALL
|
||||
file for more.
|
||||
|
||||
* Status
|
||||
|
||||
/*-------.
|
||||
| Stable |
|
||||
`-------*/
|
||||
|
||||
/*-------------------------.
|
||||
| Sane for full scale use. |
|
||||
`-------------------------*/
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,825 @@
|
|||
2004-04-13 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note validation of paths passed to the client.
|
||||
|
||||
2004-04-07 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Clarify relative-path up-reference article.
|
||||
|
||||
2004-04-07 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note ignoring of method options in CVSROOTs.
|
||||
|
||||
2004-04-06 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* TODO (196, 217, 219, 220, 222, 226): Remove completed items.
|
||||
(230): New item.
|
||||
|
||||
2004-04-06 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note this change.
|
||||
* configure.in: Do not try and use TMP, TEMP, or TMPDIR as default
|
||||
temporary directories.
|
||||
* configure: Regenerated.
|
||||
|
||||
2004-04-04 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note Cygwin handles paths like X:\.
|
||||
|
||||
2004-04-02 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note Windows ISDIRSEP fix.
|
||||
|
||||
2004-04-02 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* INSTALL: Instruct users to use the Workspace file and not the project
|
||||
file for MSVC++.
|
||||
(Patch from Conrad T. Pino <conrad@pino.com>.)
|
||||
|
||||
2004-04-02 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Make some notes as to client/serverness of changes.
|
||||
|
||||
2004-04-02 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note relative path fix.
|
||||
|
||||
2004-04-01 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Record run race removal.
|
||||
|
||||
2004-03-31 Mark D. Baushke <mdb@cvshome.org>
|
||||
|
||||
* cvs.spec.in (BuildRequires): Do not fail if info DIR file does
|
||||
not exist. (Not everyone has an install-info that generates the
|
||||
dir file that we want deleted.)
|
||||
(Report from Geoff Beier <geoff@caradas.com>.)
|
||||
|
||||
2004-03-25 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note failure of Cygwin to convert back slashes to slashes.
|
||||
|
||||
2004-03-25 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvs.spec.in (BuildRoot): Use a more unique directory name.
|
||||
|
||||
2004-03-22 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* INSTALL: Note compilation & --without-gssapi requirement for HPPA
|
||||
with HP-UX 11.11.
|
||||
(Report from Nicolas Vervelle <nicolas.vervelle@steria.com>.)
|
||||
|
||||
2004-03-20 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note resurrection fixes.
|
||||
|
||||
2004-03-18 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Back out previous NEWS change at Larry Jones' suggestion.
|
||||
|
||||
2004-03-17 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in (--enable-password-authentication-client): Correct
|
||||
error message text.
|
||||
* NEWS: Note this change.
|
||||
* configure: Regenerated.
|
||||
|
||||
2004-03-15 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note cvs release + Kerberos fix.
|
||||
|
||||
2004-03-15 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Correct grammar in help text.
|
||||
* configure: Regenerated.
|
||||
|
||||
2004-03-15 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* macintosh/.cvsignore: Complete pruning of directory started in 1999.
|
||||
|
||||
2004-03-14 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note resurrection fix.
|
||||
|
||||
2004-03-14 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note error & status message corrections.
|
||||
|
||||
2004-03-14 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note diff of added files against arbitrary revisions fix.
|
||||
|
||||
2004-03-12 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note Larry's recent documentation fixes.
|
||||
|
||||
2004-03-03 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note that directories and files named `CVS' are now also
|
||||
rejected by import.
|
||||
|
||||
2004-02-25 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Update dying gasp note.
|
||||
|
||||
2004-02-25 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note `cvs release' Entries corruption fix.
|
||||
|
||||
2004-02-20 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note that the dying gasp check has now been completely removed.
|
||||
|
||||
2004-02-17 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note spec file fix.
|
||||
* cvs.spec: Update to avoid the error checking algorithm's of more
|
||||
recent version of RPM.
|
||||
|
||||
2004-02-17 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note recent commenting of src/checkout.c and Mark's leak fixes.
|
||||
|
||||
2004-02-12 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note Mark D. Baushke's recent memory leak plugs.
|
||||
|
||||
2004-02-12 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note Ville Skyttä's other recent man page patch.
|
||||
|
||||
2004-02-12 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note Ville Skyttä's recent man page patch.
|
||||
|
||||
2004-02-11 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note :fork: segfault avoidance.
|
||||
|
||||
2004-02-11 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note readability improvements.
|
||||
|
||||
2004-02-10 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note dying gasp check.
|
||||
|
||||
2004-02-10 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note flow control pipe race fix.
|
||||
|
||||
2004-02-10 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* BUGS: Note problems building with MSVC++ under Windows and
|
||||
workaround.
|
||||
* INSTALL: Ditto.
|
||||
|
||||
2004-02-10 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvsnt.mak: Add stack.c and stack.h in order to compile under Windows.
|
||||
* NEWS: Note Windows fixes.
|
||||
* README: Update copyright notice.
|
||||
|
||||
2004-02-09 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note new tests in sanity.sh.
|
||||
|
||||
2004-02-06 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* README: Undo accidental overwrite.
|
||||
|
||||
2004-02-04 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note that alias module recursion is now more comprehensive.
|
||||
|
||||
2004-02-03 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note case insensitive client directory case preservation.
|
||||
|
||||
2004-02-02 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note new join-rm tests.
|
||||
|
||||
2004-02-02 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note removal from the server of support for case insensitive
|
||||
clients.
|
||||
|
||||
2004-01-30 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note man page fix.
|
||||
|
||||
2004-01-30 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note contrib/log_accum tidy.
|
||||
|
||||
2004-01-25 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note Kerberos 4 fix.
|
||||
|
||||
2004-01-22 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note recent infinite alias loop fix.
|
||||
|
||||
2004-01-22 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* INSTALL: Remove a note about an Automake bug that has been fixed for
|
||||
quite awhile.
|
||||
|
||||
2004-01-22 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* INSTALL: s/Automake 1.7.5/Automake 1.7.9/.
|
||||
|
||||
2004-01-14 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note Larrys recent mktemp.sh inclusion, documentation reorg,
|
||||
and zlib code fix.
|
||||
|
||||
2003-12-23 Larry Jones <lawrence.jones@ugsplm.com>
|
||||
|
||||
* Makefile.am: Add mktemp.sh to EXTRA_DIST.
|
||||
* Makefile.in: Regenerated.
|
||||
|
||||
* configure.in: Get mktemp.sh from $srcdir.
|
||||
* configure: Regenerated.
|
||||
(Reported by Matt Selsky <selsky@columbia.edu>.)
|
||||
|
||||
2003-12-18 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Add since 1.11.11 section.
|
||||
* configure.in: Update for dev 1.11.11.1.
|
||||
* configure: Regenerated.
|
||||
|
||||
2003-12-18 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Update for release 1.11.11.
|
||||
* configure: Regenerated.
|
||||
|
||||
2003-12-18 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note syslog of root attempts.
|
||||
|
||||
2003-12-18 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note that pserver can no longer run as root.
|
||||
|
||||
2003-12-07 Mark D. Baushke <mdb@cvshome.org>
|
||||
|
||||
* configure.in (AC_SYS_LARGEFILE): Remove. More work is needed
|
||||
before AC_SYS_LARGEFILE will work on all platforms.
|
||||
* configure, config.h.in: Regenerated.
|
||||
* NEWS: Remove last note.
|
||||
|
||||
* configure.in (AC_SYS_LARGEFILE): Add. The history file on
|
||||
Solaris boxes can grow beyond 2GB.
|
||||
* configure, config.h.in: Regenerated.
|
||||
* NEWS: Note addition of --disable-largefiles option.
|
||||
|
||||
2003-12-05 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Update to require Automake 1.7.9.
|
||||
|
||||
2003-12-04 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Update for dev version 1.11.10.1.
|
||||
* NEWS: Add Changes since 1.11.10 section.
|
||||
* configure: Regenerated.
|
||||
|
||||
2003-12-04 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Update for release 1.11.10.
|
||||
* configure: Regenerated.
|
||||
|
||||
2003-12-03 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Always AC_LIBOBJ(fncase) when filenames are found to be
|
||||
case insensitive.
|
||||
* configure: Regenerated.
|
||||
|
||||
2003-11-26 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note recase tests.
|
||||
|
||||
2003-11-26 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note new test suite functionality.
|
||||
|
||||
2003-11-25 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note latest case insensitivity fix.
|
||||
|
||||
2003-11-19 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Rename "OTHER ISSUES" to "GENERAL USER ISSUES" and move the
|
||||
note about the Autoconf upgrade to a new "DEVELOPER ISSUES" section.
|
||||
Add a note about upgrading Automake.
|
||||
* aclocal.m4, configure, **/Makefile.in: Regenerated with Automake
|
||||
1.7.9.
|
||||
|
||||
2003-11-18 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Subdivide Changes section into "SERVER SECURITY ISSUES" and
|
||||
"OTHER ISSUES". Note module abspath issue in security section.
|
||||
|
||||
2003-11-10 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* BUGS: Add some detail to the last two notes Mark added.
|
||||
|
||||
2003-11-10 Mark D. Baushke <mdb@cvshome.org>
|
||||
|
||||
* BUGS: Note that symlinks to files will not work with or without
|
||||
LockDir. Note that symlinks to directories will not work with
|
||||
LockDir.
|
||||
|
||||
* NEWS (Changes since 1.11.9): Note symlinked CVSROOT now works.
|
||||
|
||||
2003-11-10 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Require Autoconf 2.58.
|
||||
* INSTALL, NEWS: Note new Autoconf requirements.
|
||||
|
||||
* configure: Regenerated.
|
||||
|
||||
2003-11-04 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Add some more help text for --enable-case-sensitivity.
|
||||
* configure: Regenerated.
|
||||
|
||||
2003-11-03 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Require Automake 1.7.5.
|
||||
|
||||
2003-11-03 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* INSTALL: Add some notes on Autoconf requirements.
|
||||
|
||||
2003-10-31 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* INSTALL: Note Cygwin as an option for building CVS under Windows.
|
||||
|
||||
2003-10-31 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* INSTALL: s/cvsgui/wincvs/.
|
||||
|
||||
2003-10-27 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Move case sensitivity test to the enable-* section and
|
||||
allow override via command line switch.
|
||||
* NEWS: Update last news item to reflect new command line switch.
|
||||
* configure, config.h.in: Regenerated.
|
||||
|
||||
2003-10-27 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Add new test for a case insensitive file system.
|
||||
* configure, config.h.in: Regenerated.
|
||||
* NEWS: Note the above change.
|
||||
|
||||
2003-10-24 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Update recent text about joins to reflect new behavior.
|
||||
|
||||
2003-10-24 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* BUGS: Note that release of a project subdir does not remove the entry
|
||||
from `./CVS/Entries'.
|
||||
|
||||
2003-10-24 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* BUGS: Remove obsolete bug report.
|
||||
(Patch from Paul Edwards <somewhere in Australia>.)
|
||||
|
||||
2003-10-24 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* BUGS: Remove obsolete bug report.
|
||||
(Patch from Paul Edwards <somewhere in Australia>.)
|
||||
|
||||
2003-10-23 Mark D. Baushke <mdb@cvshome.org>
|
||||
|
||||
* NEWS: Note behavior change for cvs update -jrev1 -jrev2.
|
||||
|
||||
2003-10-21 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note Mark's recent admin -m fix.
|
||||
|
||||
2003-10-21 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note the @email{} and @url{} fixes as misc documentation fixes.
|
||||
|
||||
2003-10-14 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note POSIX 1003.1-2001 compatibility of docs and scripts.
|
||||
|
||||
2003-10-14 Derek Price <derek@ximbiot.com>
|
||||
|
||||
Port to pedantic POSIX 1003.1-2001 hosts, such as Debian GNU/Linux
|
||||
testing with _POSIX2_VERSION=200112 in the environment.
|
||||
|
||||
* BUGS: Suggest 'diff -C2', not 'diff -c2'.
|
||||
* FAQ: Suggest 'sort -k 1.2', not 'sort +0.1'.
|
||||
* depcomp: Sync to the depcomp shipped with Automake 1.7.8, as
|
||||
it has the bug fixed and that's better than maintaining our
|
||||
own depcomp.
|
||||
(Patch from Paul Eggert <eggert@twinsun.com>.)
|
||||
|
||||
2003-10-14 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* INSTALL: Add HPPA 2.0 running HP-UX 10.20 for CVS 1.11.9.
|
||||
(Report from Tom Kuiper <kuiper@DSNra.JPL.NASA.gov>.)
|
||||
|
||||
2003-10-10 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS (Changes since 1.11.9): New section.
|
||||
* configure.in: Update package version to 1.11.9.1.
|
||||
* configure: Regenerated.
|
||||
|
||||
2003-10-10 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Update package version to 1.11.9.
|
||||
* configure: Regenerated.
|
||||
|
||||
2003-10-08 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note history reporting fix.
|
||||
|
||||
2003-10-08 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Improve syntax and punctuation of my last entry.
|
||||
|
||||
2003-10-08 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note history fix for clients requesting `P' records.
|
||||
|
||||
2003-10-07 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note case insensitive file lookup fix.
|
||||
|
||||
2003-10-03 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note server ignoring `-l' with a warning.
|
||||
|
||||
2003-10-02 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS (Changes since 1.11.8): Add empty section.
|
||||
* configure.in: Update package version to 1.11.8.1.
|
||||
* configure: Regenerated.
|
||||
|
||||
2003-10-02 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Update package version to 1.11.8.
|
||||
* configure: Regenerated.
|
||||
|
||||
2003-10-02 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note getpass fix.
|
||||
|
||||
2003-09-29 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS (Changes since 1.11.7): Insert empty entry.
|
||||
* configure.in: Update to 1.11.7.1.
|
||||
* configure: Regenerated.
|
||||
|
||||
2003-09-29 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Update package version to 1.11.7.
|
||||
* configure: Regenerated.
|
||||
|
||||
2003-09-29 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note recent fix of the potential segfault during a diff.
|
||||
|
||||
2003-09-26 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* BUGS: Note bug in options passed to diff via `cvs diff'.
|
||||
|
||||
2003-09-12 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note checkoutlist error message handling fix.
|
||||
|
||||
2003-08-27 Larry Jones <lawrence.jones@eds.com>
|
||||
|
||||
* NEWS: Note client/server messages have real command name, client/
|
||||
server updates get logged in history file, history file has "P"
|
||||
record type.
|
||||
|
||||
2003-07-29 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Replace my recent misuse of AH_VERBATIM with a call to
|
||||
AC_DEFINE.
|
||||
* config.h.in, configure: Regenerated.
|
||||
|
||||
2003-07-29 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Do not check for getpassphrase. Define `getpass' to
|
||||
`cvs_getpass' in config.h to avoid conflicts with system decls.
|
||||
* NEWS: Note use of GNULIB getpass.
|
||||
|
||||
* config.h.in, configure: Regenerated.
|
||||
|
||||
2003-07-25 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* INSTALL: Note --without-gssapi required to configure on OS X.
|
||||
|
||||
2003-07-18 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* BUGS: Remove mention of wrappers -t/-f since they are no longer
|
||||
supported.
|
||||
|
||||
2003-07-18 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* Makefile.am (EXTRA_DIST): Add cvs.spec so that RPMs can be built
|
||||
directly from tarballs.
|
||||
* Makefile.in: Regenerated.
|
||||
|
||||
2003-07-18 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* TODO (72): Remove mention of the -i/-o in the modules file since they
|
||||
have been removed.
|
||||
|
||||
2003-06-27 Larry Jones <lawrence.jones@eds.com>
|
||||
|
||||
* NEWS: Note LockDir fix.
|
||||
|
||||
2003-06-23 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Debian Woody has -lkrb4, so check for that.
|
||||
(Patch from Alexey Mahotkin <alexm@hsys.msk.ru>.)
|
||||
|
||||
* config.h.in: Regenerated.
|
||||
* configure: Ditto.
|
||||
|
||||
2003-06-20 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* INSTALL: Add some OS X platforms to the compile list. Correct link to
|
||||
cvsgui.org -> wincvs.org.
|
||||
|
||||
2003-06-09 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvsnt.mak: Rename win32.c to woe32.c in accordance with the GNU
|
||||
convention to avoid implying that we consider the Microsoft Windows
|
||||
Operating Environment any sort of "win".
|
||||
|
||||
2003-06-09 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note short patch fix.
|
||||
|
||||
2003-06-09 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* TODO (45): Combine this with...
|
||||
(30): ...this item (as #30). Remove reference to diff since the
|
||||
modules file is only consulted for the r* commands.
|
||||
|
||||
2003-06-02 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note empty diff change text fix.
|
||||
|
||||
2003-05-29 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Note removal of global -l option.
|
||||
|
||||
2003-05-27 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* AUTHORS: Give Mark an email address.
|
||||
|
||||
2003-05-27 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvs.spec.in: Add some files to doc. Remove redundant %defattr.
|
||||
|
||||
2003-05-27 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS (Changes since 1.11.5): Add missing entry.
|
||||
|
||||
2003-05-27 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* README (Credits): Move...
|
||||
* AUTHORS: ...here and update.
|
||||
|
||||
2003-05-26 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Update CVS version to 1.11.6.1.
|
||||
|
||||
* configure: Regenerated.
|
||||
|
||||
2003-05-25 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Update CVS version to 1.11.6.
|
||||
|
||||
* configure: Regenerated.
|
||||
|
||||
2003-05-25 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* BUGS: Note current intermittant BSDI failures.
|
||||
|
||||
2003-05-22 Larry Jones <lawrence.jones@eds.com>
|
||||
|
||||
* NEWS: Note recent administrative file changes.
|
||||
|
||||
2003-05-21 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* INSTALL: Mention new Automake version.
|
||||
* NEWS: Ditto.
|
||||
|
||||
* Makefile.in: Regenerated.
|
||||
* aclocal.m4: Ditto.
|
||||
* config.h.in: Ditto.
|
||||
* configure: Ditto.
|
||||
|
||||
2003-05-20 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* INSTALL: Using Autoconf version 2.57.
|
||||
* NEWS: Ditto. Reorder NEWS items to put the stuff which it is likely
|
||||
that only developers care about last.
|
||||
* configure: Regenerated with Autoconf 2.57.
|
||||
|
||||
2003-05-09 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Back out all the S_ISSOCK changes I just made and move
|
||||
the equivalent to lib/system.h.
|
||||
|
||||
* configure.in: Regenerated.
|
||||
* config.h.in: Ditto.
|
||||
|
||||
2003-05-09 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Try again, with AC_TRY_LINK this time.
|
||||
|
||||
* configure: Regenerated.
|
||||
|
||||
2003-05-09 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Correct a typo in my last patch.
|
||||
|
||||
* configure: Regenerated.
|
||||
|
||||
2003-05-09 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Add some checks for S_ISSOCK to avoid a problem on
|
||||
SCO OpenServer 5.0.6a.
|
||||
(Reported by Boyd Lynn Gerber <gerberb@zenez.com>.)
|
||||
|
||||
* config.h.in: Regenerated.
|
||||
* configure: Ditto.
|
||||
|
||||
2003-05-01 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* TODO (149): Remove reference to defunct RELATIVE_REPOS macro.
|
||||
|
||||
2003-04-30 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* acinclude.m4 (ACX_WITH_GSSAPI): Fix typo in broken conditional.
|
||||
(Thanks to Alexey Mahotkin <alexm@hsys.msk.ru>.)
|
||||
|
||||
* configure: Regenerated.
|
||||
* aclocal.m4: Ditto.
|
||||
|
||||
2003-04-28 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS (Changes since 1.11.5): Note removal of Checkin.prog and
|
||||
Update.prog functionality.
|
||||
|
||||
2003-04-10 Larry Jones <lawrence.jones@eds.com>
|
||||
|
||||
* aclocal.m4 (AM_MAINTAINER_MODE): New macro to support
|
||||
--enable-maintainer-mode.
|
||||
* configure.in: Use it.
|
||||
* configure: Regenerated.
|
||||
* Makefile.in: Regenerated.
|
||||
* noautomake.sh: Removed; no longer needed.
|
||||
* INSTALL: Remove reference to noautomake.sh, add reference to
|
||||
--enable-maintainer-mode.
|
||||
* Makefile.am: Remove noautomake.sh.
|
||||
* NEWS: Add note about --enable-maintainer-mode and noautomake.sh.
|
||||
* README: Remove noautomake.sh.
|
||||
|
||||
2003-04-01 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* BUGS: Remove a pcl-cvs bug. pcl-cvs is no longer part of the CVS
|
||||
source distribution.
|
||||
|
||||
2003-04-01 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* BUGS: Remove reference to cvs admin SEGV bug Larry Jones fixed
|
||||
on 2003-02-19.
|
||||
|
||||
2003-04-01 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* BUGS: Remove obsolete bug.
|
||||
* configure.in: Tail the BUGS file for status.
|
||||
|
||||
* configure: Regenerated.
|
||||
|
||||
2003-03-28 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in (--with-editor): Quit with an error message when no
|
||||
editor is found. Allow --with-editor to override $EDITOR from the
|
||||
user's environment. Add vim to the list of defaults.
|
||||
|
||||
* configure: Regenerated.
|
||||
|
||||
2003-03-26 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in (--with-editor): Quit with an error message when
|
||||
--without-editor is specified.
|
||||
(Report from Jim Salter <jsalterjim@earthlink.net>.)
|
||||
|
||||
* configure: Regenerated.
|
||||
|
||||
2003-03-24 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Add copyright notice.
|
||||
* Makefile.am: Update copyright notice.
|
||||
|
||||
* Makefile.in: Regenerated.
|
||||
* configure: Ditto.
|
||||
|
||||
2003-03-07 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* TESTS: Document some more global variables.
|
||||
|
||||
2003-03-05 Mark D Baushke <mdb@cvshome.org>
|
||||
|
||||
* NEWS (Changes since 1.11.5): Backout CVS_LOCAL_BRANCH_NUM feature.
|
||||
|
||||
* NEWS (Changes since 1.11.5): Mention CVS_LOCAL_BRANCH_NUM
|
||||
environment varaible.
|
||||
|
||||
2003-02-25 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in (WITH_KRB4): Import KRB4 patch from Redhat 8.0's CVS
|
||||
1.11.2-5 SRPM. It's not the right fix, but it will work until I get
|
||||
around to merging some of the code with WITH_GSSAPI and seperating the
|
||||
bits into separate M4 files.
|
||||
|
||||
* configure: Regenerated.
|
||||
* config.h.in: Ditto.
|
||||
|
||||
2003-02-28 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* acinclude.m4 (ACX_WITH_GSSAPI): Move the checkin from 1/23 to
|
||||
aclocal.m4 to the source, here.
|
||||
|
||||
* aclocal.m4: Regenerated.
|
||||
* configure: Regenerated.
|
||||
|
||||
2003-02-28 Larry Jones <lawrence.jones@eds.com>
|
||||
|
||||
* TODO (206): Done in 1.11.3.
|
||||
(226): Add comment about deadlock.
|
||||
(228, 229): New items.
|
||||
|
||||
2003-02-26 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* mktemp.sh: Actually add file this time.
|
||||
* mktemp.sh: Add copyright notice, some comments, and attempt to return
|
||||
success and error codes.
|
||||
|
||||
2003-02-25 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Add checks for mktemp and sendmail.
|
||||
* mktemp.sh: New file.
|
||||
|
||||
* Makefile.in: Regenerated.
|
||||
* configure: Ditto.
|
||||
|
||||
2003-02-06 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS (Changes since 1.11.5): Note error message corrections.
|
||||
|
||||
2003-01-30 Larry Jones <lawrence.jones@eds.com>
|
||||
|
||||
* FAQ: Update URL for tkCVS info.
|
||||
|
||||
* NEWS (Changes from 1.11.2 to 1.11.3): Add note about fixing watch
|
||||
in server mode.
|
||||
|
||||
2003-01-28 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* INSTALL: Remove a reference to options.h.
|
||||
(Thanks to Jenn Vesperman <jenn@anthill.echidna.id.au> for the report.)
|
||||
|
||||
2003-01-28 Larry Jones <lawrence.jones@eds.com>
|
||||
|
||||
* NEWS: Update for 1.11.5, add notes about bug fixes in older
|
||||
versions.
|
||||
|
||||
2003-01-23 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* aclocal.m4 (WITH_GSSAPI): Check for libcrypt before libroken to
|
||||
satisfy a FreeBSD 4.6 dependency.
|
||||
(Thanks to Jan Ruzicka <jan.ruzicka@comtechmobile.com> for the bug
|
||||
report and a partial fix.)
|
||||
|
||||
* configure: regenerated.
|
||||
|
||||
2003-01-20 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Update the news for the last release to mention that client
|
||||
builds are not affected by the security vulnerability.
|
||||
|
||||
2003-01-20 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Update to dev version 1.11.5.1.
|
||||
* configure: Regenerated.
|
||||
|
||||
2003-01-16 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* NEWS: Add 1.11.4 entry in regards to
|
||||
|
|
@ -8,6 +830,13 @@
|
|||
|
||||
* configure: Regenerated.
|
||||
|
||||
2002-01-16 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in (--with-editor): Look for nano, the GNU GPL pico clone.
|
||||
(Reported by Robin Cook <rcook@wyrms.net>.)
|
||||
|
||||
* configure: Regenerated.
|
||||
|
||||
2002-01-16 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* configure.in: Update to dev version (1.11.4.1).
|
||||
|
|
|
|||
|
|
@ -1897,7 +1897,9 @@ You can branch a branch.
|
|||
Note that according to the official GIC page at
|
||||
http://www.cpsc.ucalgary.ca/redirect/grouplab/projects/gic/
|
||||
GIC is no longer being maintained and tkCVS is recommended
|
||||
instead. For more on tkCVS, see http://www.cyclic.com/tkcvs/
|
||||
instead.
|
||||
|
||||
For more on tkCVS, see http://www.cvshome.org/dev/addontkcvs.html.
|
||||
|
||||
kingdon@cyclic.com
|
||||
|
||||
|
|
@ -4330,7 +4332,7 @@ kingdon@cyclic.com
|
|||
|
||||
You should be able to run:
|
||||
|
||||
sort +0.1 ${dir1}/history ${dir2}/history > history
|
||||
sort -k 1.2 ${dir1}/history ${dir2}/history > history
|
||||
|
||||
If you "diff" a standard history file before and after such a sort,
|
||||
you might see other differences caused by garbage (split lines, nulls,
|
||||
|
|
|
|||
|
|
@ -123,6 +123,8 @@ HPPA:
|
|||
HPPA running HP-UX 9.05 (1.9)
|
||||
HPPA running HP-UX 10.01 (1.7)
|
||||
HPPA running HP-UX 10.20 (1.10.7)
|
||||
HPPA running HP-UX 11.11 (1.11.13) (footnote 12)
|
||||
HPPA 2.0 running HP-UX 10.20 (1.10.9) (footnote 13)
|
||||
NextSTEP 3.3 (1.7)
|
||||
i386 family:
|
||||
Solaris 2.4 using gcc (about 1.4A2)
|
||||
|
|
@ -181,6 +183,9 @@ PowerPC or RS/6000:
|
|||
Lynx 2.3.1 120495 (1.6.86) (footnote 9)
|
||||
Lynx 2.5 (1.9) (footnote 10)
|
||||
MkLinux DR3 GENERIC #6 (1.10.5.1) (presumably LinuxPPC too)
|
||||
Mac OS X Darwin 6.6 Darwin Kernel Version 6.6 (1.11.1p1)
|
||||
Mac OS X Darwin 5.5 Darwin Kernel Version 5.5 (1.11.6) (footnote 12)
|
||||
Mac OS X Darwin 5.5 Darwin Kernel Version 5.5 (1.12.1) (footnote 12)
|
||||
SPARC:
|
||||
Sun SPARC running SunOS 4.1.x (1.10)
|
||||
Sun SPARCstation 10 running Solaris 2.3 using gcc and cc (about 1.4A2)
|
||||
|
|
@ -238,21 +243,33 @@ VAX:
|
|||
ci: RCS/loginfo,v: Invalid argument
|
||||
cvs [init aborted]: failed to checkin n:/safe/CVSROOT/loginfo
|
||||
|
||||
(footnote 12)
|
||||
Need to `configure --without-gssapi' unless you have installed Kerberos 5
|
||||
libraries on the system yourself. For some reason Apple ships OS X with
|
||||
the Kerberos 5 headers installed and not the libraries, which confuses the
|
||||
current configure script. Some HP, BSD, & Sun boxes have similar problems.
|
||||
|
||||
(footnote 13)
|
||||
A build under HP PA-RISC 2.0 will probably not run under PA-RISC 1.1
|
||||
unless "+DAportable" is added to the HP ANSI cc compiler flags.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Building from source code under Unix:
|
||||
|
||||
1) Some combinations of Automake and Autoconf versions may break the CVS build
|
||||
if file timestamps aren't set correctly, so you may wish to run
|
||||
noautomake.sh to set the timestamps and avoid attempting to run the
|
||||
autotools on your system, especially if you are building from source
|
||||
checked out from CVS:
|
||||
1) Some combinations of Automake and Autoconf versions may break the
|
||||
CVS build if file timestamps aren't set correctly and people don't
|
||||
have the same versions the developers do, so the rules to run them
|
||||
automatically aren't included in the generated Makefiles unless you run
|
||||
configure with --enable-maintainer-mode.
|
||||
|
||||
$ ./noautomake.sh --noautoconf
|
||||
The CVS Makefiles and configure script were built using Automake 1.7.9 and
|
||||
Autoconf 2.58, respectively.
|
||||
|
||||
The CVS Makefiles and configure script were built using Automake 1.6.3 and
|
||||
Autoconf 2.53, respectively. Other combinations of autotool versions may
|
||||
or may not work.
|
||||
There is a known bug in Autoconf 2.57 that will prevent the configure
|
||||
scripts it generates from working on some platforms. Other combinations of
|
||||
autotool versions may or may not work. If you get other versions to work,
|
||||
please send a report to <bug-cvs@gnu.org>.
|
||||
|
||||
2) Run "configure":
|
||||
|
||||
|
|
@ -368,10 +385,7 @@ Building from source code under Unix:
|
|||
|
||||
END OF NOTE FOR NDBM GUNK.
|
||||
|
||||
3) Edit src/options.h. The defaults should be reasonable, and in fact
|
||||
if you are lazy you can safely skip this step.
|
||||
|
||||
4) Try to build it:
|
||||
3) Try to build it:
|
||||
|
||||
$ make
|
||||
|
||||
|
|
@ -382,7 +396,7 @@ Building from source code under Unix:
|
|||
compiler information, make output, and anything else you think
|
||||
will be helpful.
|
||||
|
||||
4a) Run the regression tests (optional).
|
||||
3a) Run the regression tests (optional).
|
||||
|
||||
You may also wish to validate the correctness of the new binary by
|
||||
running the regression tests. If they succeed, that is nice to
|
||||
|
|
@ -394,7 +408,7 @@ Building from source code under Unix:
|
|||
|
||||
If you want to run the tests, see the file TESTS for more information.
|
||||
|
||||
5) Install the binaries/documentation:
|
||||
4) Install the binaries/documentation:
|
||||
|
||||
$ make install
|
||||
|
||||
|
|
@ -442,7 +456,11 @@ Building from source code under Windows NT/95/98/2000:
|
|||
|
||||
You may find interesting information in windows-NT/README.
|
||||
|
||||
1) Using Microsoft Visual C++ 5.x, open the project `cvsnt.dsp',
|
||||
* Using Microsoft Visual C++ 5.x (this is currently broken - someone with
|
||||
MVC++ 5.x needs to regenerate the project files, but the builds using `nmake'
|
||||
below will work).
|
||||
|
||||
1) Using Microsoft Visual C++ 5.x, open the project `cvsnt.dsw',
|
||||
in the top directory of the CVS distribution. If you have an older
|
||||
version of Visual C++, take a look at windows-NT/README.
|
||||
2) Choose "Build cvs.exe" from the "Project" menu.
|
||||
|
|
@ -455,7 +473,12 @@ following also works:
|
|||
C:\> vcvars32
|
||||
C:\> nmake /f cvsnt.mak CFG="cvsnt - Win32 Debug"
|
||||
|
||||
* You might also try http://cvsgui.org & http://www.cvsnt.org
|
||||
* Using the Cygwin development environment <http://cygwin.com>, Windows clients
|
||||
and servers can be built using the instructions for building on UNIX. For
|
||||
deploying the CVS server on Windows NT, see the `cygrunsrv' executable that
|
||||
comes with Cygwin.
|
||||
|
||||
* You might also try <http://wincvs.org> & <http://www.cvsnt.org>.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
|
|
@ -467,24 +490,10 @@ For VMS, see README.VMS
|
|||
|
||||
Mac OS X: Builds fine, just like UNIX.
|
||||
|
||||
For older versions of Mac OS, you might try http://cvsgui.org .
|
||||
For older versions of Mac OS, you might try <http://wincvs.org>.
|
||||
|
||||
For a Java client, see jCVS (which is a separate package from CVS
|
||||
itself, but which might be preferable to the Macintosh port mentioned
|
||||
above, for example).
|
||||
|
||||
**** ****
|
||||
|
||||
Builds are breaking on some systems (notably,
|
||||
BSD/OS thor.sdrc.com 4.0.1 BSDI BSD/OS 4.0.1 Kernel #3: Thu Mar 9 11:29:16 EST 2000
|
||||
) due to Automake's dependency tracking code. The work around for this is to
|
||||
comile without it by passing the '--disable-dependency-tracking' option to
|
||||
configure:
|
||||
|
||||
$ ./configure --disable-dependency-tracking
|
||||
|
||||
This will allow a compile but make will no longer be tracking header
|
||||
dependencies. This means that if you make any changes to header files you may
|
||||
have to run 'make clean' before running a 'make' to get everything to compile.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
## Process this file with automake to produce Makefile.in
|
||||
# Master Makefile for the GNU Concurrent Versions System.
|
||||
# Copyright (C) 1986, 1988-1992, 1994, 2000 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
|
||||
# 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -36,8 +38,8 @@ EXTRA_DIST = \
|
|||
cvsnt.dsp \
|
||||
cvsnt.dsw \
|
||||
cvsnt.mak \
|
||||
noautomake.sh
|
||||
|
||||
cvs.spec \
|
||||
mktemp.sh
|
||||
|
||||
|
||||
## MAINTAINER Targets
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
# Makefile.in generated by automake 1.6.3 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.7.9 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
|
|
@ -15,7 +15,9 @@
|
|||
@SET_MAKE@
|
||||
|
||||
# Master Makefile for the GNU Concurrent Versions System.
|
||||
# Copyright (C) 1986, 1988-1992, 1994, 2000 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
|
||||
# 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -26,79 +28,117 @@
|
|||
# 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.
|
||||
SHELL = @SHELL@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
|
||||
bindir = @bindir@
|
||||
sbindir = @sbindir@
|
||||
libexecdir = @libexecdir@
|
||||
datadir = @datadir@
|
||||
sysconfdir = @sysconfdir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
localstatedir = @localstatedir@
|
||||
libdir = @libdir@
|
||||
infodir = @infodir@
|
||||
mandir = @mandir@
|
||||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = .
|
||||
|
||||
ACLOCAL = @ACLOCAL@
|
||||
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@
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
|
||||
EXEEXT = @EXEEXT@
|
||||
OBJEXT = @OBJEXT@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CSH = @CSH@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EDITOR = @EDITOR@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
KRB4 = @KRB4@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MAKE_TARGETS_IN_VPATH_FALSE = @MAKE_TARGETS_IN_VPATH_FALSE@
|
||||
MAKE_TARGETS_IN_VPATH_TRUE = @MAKE_TARGETS_IN_VPATH_TRUE@
|
||||
MKTEMP = @MKTEMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
PR = @PR@
|
||||
PS2PDF = @PS2PDF@
|
||||
RANLIB = @RANLIB@
|
||||
ROFF = @ROFF@
|
||||
SENDMAIL = @SENDMAIL@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
TEXI2DVI = @TEXI2DVI@
|
||||
VERSION = @VERSION@
|
||||
YACC = @YACC@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||
ac_ct_STRIP = @ac_ct_STRIP@
|
||||
ac_prefix_program = @ac_prefix_program@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
bindir = @bindir@
|
||||
build_alias = @build_alias@
|
||||
datadir = @datadir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host_alias = @host_alias@
|
||||
includedir = @includedir@
|
||||
includeopt = @includeopt@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
oldincludedir = @oldincludedir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
|
||||
# Unix source subdirs, where we'll want to run lint and etags:
|
||||
# This is a legacy variable from b4 Automake
|
||||
|
|
@ -124,7 +164,8 @@ EXTRA_DIST = \
|
|||
cvsnt.dsp \
|
||||
cvsnt.dsw \
|
||||
cvsnt.mak \
|
||||
noautomake.sh
|
||||
cvs.spec \
|
||||
mktemp.sh
|
||||
|
||||
subdir = .
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
|
|
@ -133,14 +174,16 @@ CONFIG_HEADER = config.h
|
|||
CONFIG_CLEAN_FILES = cvs.spec emx/Makefile os2/Makefile zlib/Makefile
|
||||
DIST_SOURCES =
|
||||
|
||||
RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \
|
||||
uninstall-info-recursive all-recursive install-data-recursive \
|
||||
install-exec-recursive installdirs-recursive install-recursive \
|
||||
uninstall-recursive check-recursive installcheck-recursive
|
||||
DIST_COMMON = README AUTHORS COPYING COPYING.LIB ChangeLog INSTALL \
|
||||
Makefile.am Makefile.in NEWS TODO acinclude.m4 aclocal.m4 \
|
||||
compile config.h.in configure configure.in cvs.spec.in depcomp \
|
||||
install-sh mdate-sh missing mkinstalldirs
|
||||
RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
|
||||
ps-recursive install-info-recursive uninstall-info-recursive \
|
||||
all-recursive install-data-recursive install-exec-recursive \
|
||||
installdirs-recursive install-recursive uninstall-recursive \
|
||||
check-recursive installcheck-recursive
|
||||
DIST_COMMON = README $(srcdir)/Makefile.in $(srcdir)/configure AUTHORS \
|
||||
COPYING COPYING.LIB ChangeLog INSTALL Makefile.am NEWS TODO \
|
||||
acinclude.m4 aclocal.m4 compile config.h.in configure \
|
||||
configure.in cvs.spec.in depcomp install-sh mdate-sh missing \
|
||||
mkinstalldirs
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
all: config.h
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||
|
|
@ -149,18 +192,18 @@ all: config.h
|
|||
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)
|
||||
|
||||
$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(SHELL) ./config.status --recheck
|
||||
$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
|
||||
$(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
|
||||
cd $(srcdir) && $(AUTOCONF)
|
||||
|
||||
$(ACLOCAL_M4): configure.in acinclude.m4
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4
|
||||
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
|
||||
config.h: stamp-h1
|
||||
|
|
@ -173,7 +216,7 @@ stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
|
|||
@rm -f stamp-h1
|
||||
cd $(top_builddir) && $(SHELL) ./config.status config.h
|
||||
|
||||
$(srcdir)/config.h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && $(AUTOHEADER)
|
||||
touch $(srcdir)/config.h.in
|
||||
|
||||
|
|
@ -243,10 +286,17 @@ tags-recursive:
|
|||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
|
||||
ETAGS = etags
|
||||
ETAGSFLAGS =
|
||||
|
||||
CTAGS = ctags
|
||||
CTAGSFLAGS =
|
||||
|
||||
tags: TAGS
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
|
|
@ -262,9 +312,15 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
|||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
if (etags --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
|
||||
test -f $$subdir/TAGS && \
|
||||
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
||||
|
|
@ -277,13 +333,28 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
|||
|| $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
top_distdir = .
|
||||
|
|
@ -295,13 +366,20 @@ am__remove_distdir = \
|
|||
&& rm -fr $(distdir); }; }
|
||||
|
||||
GZIP_ENV = --best
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
$(am__remove_distdir)
|
||||
mkdir $(distdir)
|
||||
$(mkinstalldirs) $(distdir)/. $(distdir)/contrib $(distdir)/emx $(distdir)/os2 $(distdir)/src $(distdir)/zlib
|
||||
@list='$(DISTFILES)'; for file in $$list; do \
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
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 \
|
||||
|
|
@ -359,12 +437,13 @@ distcheck: dist
|
|||
$(am__remove_distdir)
|
||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
|
||||
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
||||
mkdir $(distdir)/=build
|
||||
mkdir $(distdir)/=inst
|
||||
mkdir $(distdir)/_build
|
||||
mkdir $(distdir)/_inst
|
||||
chmod a-w $(distdir)
|
||||
dc_install_base=`$(am__cd) $(distdir)/=inst && pwd` \
|
||||
&& cd $(distdir)/=build \
|
||||
&& ../configure --srcdir=.. --prefix=$$dc_install_base \
|
||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& cd $(distdir)/_build \
|
||||
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
|
|
@ -372,23 +451,39 @@ distcheck: dist
|
|||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||
&& (test `find $$dc_install_base -type f -print | wc -l` -le 1 \
|
||||
|| { echo "ERROR: files left after uninstall:" ; \
|
||||
find $$dc_install_base -type f -print ; \
|
||||
exit 1; } >&2 ) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||
distuninstallcheck \
|
||||
&& chmod -R a-w "$$dc_install_base" \
|
||||
&& ({ \
|
||||
(cd ../.. && $(mkinstalldirs) "$$dc_destdir") \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||
&& rm -rf "$$dc_destdir" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist-gzip \
|
||||
&& rm -f $(distdir).tar.gz \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
|
||||
$(am__remove_distdir)
|
||||
@echo "$(distdir).tar.gz is ready for distribution" | \
|
||||
sed 'h;s/./=/g;p;x;p;x'
|
||||
distuninstallcheck:
|
||||
@cd $(distuninstallcheck_dir) \
|
||||
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|
||||
|| { echo "ERROR: files left after uninstall:" ; \
|
||||
if test -n "$(DESTDIR)"; then \
|
||||
echo " (check DESTDIR support)"; \
|
||||
fi ; \
|
||||
$(distuninstallcheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
distcleancheck: distclean
|
||||
if test '$(srcdir)' = . ; then \
|
||||
@if test '$(srcdir)' = . ; then \
|
||||
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left after distclean:" ; \
|
||||
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||
$(distcleancheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
check-am: all-am
|
||||
|
|
@ -408,7 +503,7 @@ install-am: all-am
|
|||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
INSTALL_STRIP_FLAG=-s \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
|
@ -416,7 +511,7 @@ mostlyclean-generic:
|
|||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||
-rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
|
|
@ -427,6 +522,7 @@ clean-am: clean-generic mostlyclean-am
|
|||
|
||||
distclean: distclean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
|
@ -449,21 +545,31 @@ installcheck-am:
|
|||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -rf autom4te.cache
|
||||
-rm -rf $(top_srcdir)/autom4te.cache
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am
|
||||
|
||||
uninstall-info: uninstall-info-recursive
|
||||
|
||||
.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \
|
||||
clean-generic clean-recursive dist dist-all dist-bzip2 \
|
||||
dist-gzip distcheck distclean distclean-generic distclean-hdr \
|
||||
distclean-recursive distclean-tags distcleancheck distdir dvi \
|
||||
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
|
||||
clean-generic clean-recursive ctags ctags-recursive dist \
|
||||
dist-all dist-bzip2 dist-gzip distcheck distclean \
|
||||
distclean-generic distclean-hdr distclean-recursive \
|
||||
distclean-tags distcleancheck distdir distuninstallcheck dvi \
|
||||
dvi-am dvi-recursive info info-am info-recursive install \
|
||||
install-am install-data install-data-am install-data-recursive \
|
||||
install-exec install-exec-am install-exec-recursive \
|
||||
|
|
@ -472,9 +578,9 @@ uninstall-info: uninstall-info-recursive
|
|||
installdirs installdirs-am installdirs-recursive \
|
||||
maintainer-clean maintainer-clean-generic \
|
||||
maintainer-clean-recursive mostlyclean mostlyclean-generic \
|
||||
mostlyclean-recursive tags tags-recursive uninstall \
|
||||
uninstall-am uninstall-info-am uninstall-info-recursive \
|
||||
uninstall-recursive
|
||||
mostlyclean-recursive pdf pdf-am pdf-recursive ps ps-am \
|
||||
ps-recursive tags tags-recursive uninstall uninstall-am \
|
||||
uninstall-info-am uninstall-info-recursive uninstall-recursive
|
||||
|
||||
|
||||
.PHONY: localcheck remotecheck
|
||||
|
|
|
|||
362
contrib/cvs/NEWS
362
contrib/cvs/NEWS
|
|
@ -1,17 +1,359 @@
|
|||
Changes since 1.11.4:
|
||||
Changes since 1.11.14:
|
||||
**********************
|
||||
|
||||
* Fixed a security hole by which users with read only access could gain
|
||||
write access. The Common Vulnerabilities and Exposures project (cve.mitre.org)
|
||||
has assigned the name CAN-2003-0015 to this issue. See
|
||||
SERVER SECURITY ISSUES
|
||||
|
||||
* Piped checkouts of paths above $CVSROOT no longer work. Previously, clients
|
||||
could have requested the contents of RCS archive files anywhere on a CVS
|
||||
server.
|
||||
|
||||
CLIENT SECURITY ISSUES
|
||||
|
||||
* Clients now check paths from the server to verify that they are within one of
|
||||
the sandboxes the user requested be updated. Previously, a trojan server
|
||||
could have written or overwritten files anywhere the user had access,
|
||||
presenting a serious security risk.
|
||||
|
||||
GENERAL USER ISSUES
|
||||
|
||||
* Method options (used by WinCVS & CVS 1.12.7+) in CVSROOTs are ignored.
|
||||
|
||||
* Configure no longer checks the $TMPDIR, $TMP, & $TEMP variables to set the
|
||||
default temporary directory.
|
||||
|
||||
* CVS on Cygwin correctly handles X:\ style paths.
|
||||
|
||||
* Import now uses backslash rather than slash on Windows when checking for
|
||||
"CVS" directories to ignore in import commands.
|
||||
|
||||
* Relative paths containing up-references (`..') should now work in
|
||||
client/server mode (client fix).
|
||||
|
||||
* A race condition between the ordering of messages from CVS and messages from
|
||||
called scripts in client/server mode has been removed (server fix).
|
||||
|
||||
* Resurrected files now get their modes and timestamps set correctly and a
|
||||
longstanding bug involving resurrection of an uncommitted removal has been
|
||||
fixed (server fix).
|
||||
|
||||
* Some resurrection (cvs add) status messages have changed slightly.
|
||||
|
||||
* `cvs release' now works with Kerberos or GSSAPI encryption enabled (server
|
||||
fix).
|
||||
|
||||
* File resurrection from a previously existing revision no longer just reports
|
||||
that it works (server fix).
|
||||
|
||||
* Misc error & status message corrections.
|
||||
|
||||
* Diffing of locally added files against arbitrary revisions in an RCS archive
|
||||
is now allowed when a file of the same name exists or used to exist on some
|
||||
branch (server fix).
|
||||
|
||||
* Misc documentation fixes.
|
||||
|
||||
Changes from 1.11.13 to 1.11.14:
|
||||
********************************
|
||||
|
||||
GENERAL USER ISSUES
|
||||
|
||||
* Imports will now always ignore directories and files named `CVS' to avoid
|
||||
violating assumptions made by other parts of CVS.
|
||||
|
||||
* A problem with `cvs release' of subdirs that could corrupt CVS/Entries files
|
||||
has been fixed (client/server).
|
||||
|
||||
* The CVS server's protocol check for unused data from the client is no longer
|
||||
called automatically at program exit in order to avoid potential recursive
|
||||
calls to error when the first close is due to memory allocation or similar
|
||||
problems that cause calls to error() to fail. The check is still made when
|
||||
the server program exits normally.
|
||||
|
||||
* The spec file has been updated to work with more recent versions of RPM.
|
||||
|
||||
* Several memory leaks have been plugged (client/server).
|
||||
|
||||
DEVELOPER ISSUES
|
||||
|
||||
* Misc cosmetic, readability, and commenting fixes.
|
||||
|
||||
Changes from 1.11.12 to 1.11.13:
|
||||
********************************
|
||||
|
||||
GENERAL USER ISSUES
|
||||
|
||||
* Several memory leaks have been plugged.
|
||||
|
||||
* Thanks to Ville Skyttä the man page has a few less spelling errors and is
|
||||
slightly more accurate.
|
||||
|
||||
* An unlikely potential segfault when using the :fork: connection method has
|
||||
been fixed.
|
||||
|
||||
* The CVS server has had the protocol check for unused data from the client
|
||||
partially restored.
|
||||
|
||||
* A fix has been included that should avoid a very rare race condition that
|
||||
could cause a CVS server to exit with a "broken pipe" message.
|
||||
|
||||
* A minor problem with the nmake build file that was preventing the source from
|
||||
compiling under Windows has been fixed.
|
||||
|
||||
* Tests have been added to the test suite.
|
||||
|
||||
DEVELOPER ISSUES
|
||||
|
||||
* Misc cosmetic, readability, and commenting fixes.
|
||||
|
||||
Changes from 1.11.11 to 1.11.12:
|
||||
********************************
|
||||
|
||||
GENERAL USER ISSUES
|
||||
|
||||
* Infinite alias loops in the modules file are now checked for and avoided.
|
||||
|
||||
* Clients on case insensitive systems now preserve the case of directories in
|
||||
CVS/Entries, in addition to files, for use in communications with the CVS
|
||||
server.
|
||||
|
||||
* Some previously untested behavior is now being tested.
|
||||
|
||||
* Server support for case insensitive clients has been removed in favor of the
|
||||
server relying on the client to preserve the case of checked out files, as
|
||||
per the CVS client/server protocol spec. This is not as drastic as it may
|
||||
sound, as all of the current tests still pass without modification when run
|
||||
from a case insensitive client to a case sensitive server. This change
|
||||
disables little previous functionality, enables access to more of the
|
||||
possible namespace to users on systems with case insensitive file systems,
|
||||
fixes a few bugs, and in the end this should provide a major stability
|
||||
improvement.
|
||||
|
||||
* Thanks to Ville Skyttä the man page is a bit more accurate.
|
||||
|
||||
* Thanks to Ville Skyttä some unused variables were removed from the log_accum
|
||||
Perl script in contrib.
|
||||
|
||||
* Thanks to Alexey Mahotkin, a bug that prevented CVS from being compiled with
|
||||
Kerberos 4 authentication enabled has been fixed.
|
||||
|
||||
* A minor bug that caused CVS to fail to report an inifinte alias loop in the
|
||||
modules file when portions of the alias definition contained trailing slashes
|
||||
has been fixed.
|
||||
|
||||
* A bug in the gzip code that could cause heap corruption and segfaults in CVS
|
||||
servers talking to clients less than 1.8 and some modern third-party CVS
|
||||
clients has been fixed.
|
||||
|
||||
* mktemp.sh is now included with the source distribution so that the rcs2log
|
||||
and cvsbug executables may be run on systems which do not contain an
|
||||
implementation of mktemp.
|
||||
|
||||
* Misc documentation fixes.
|
||||
|
||||
Changes from 1.11.10 to 1.11.11:
|
||||
********************************
|
||||
|
||||
SERVER SECURITY ISSUES
|
||||
|
||||
* pserver can no longer be configured to run as root via the
|
||||
$CVSROOT/CVSROOT/passwd file, so if your passwd file is compromised, it no
|
||||
longer leads directly to a root hack. Attempts to root will also be logged
|
||||
via the syslog.
|
||||
|
||||
Changes from 1.11.9 to 1.11.10:
|
||||
*******************************
|
||||
|
||||
SERVER SECURITY ISSUES
|
||||
|
||||
* Malformed module requests could cause the CVS server to attempt to create
|
||||
directories and possibly files at the root of the filesystem holding the CVS
|
||||
repository. Filesystem permissions usually prevent the creation of these
|
||||
misplaced directories, but nevertheless, the CVS server now rejects the
|
||||
malformed requests.
|
||||
|
||||
GENERAL USER ISSUES
|
||||
|
||||
* Case insensitive clients using a case sensitive server can now use a
|
||||
`cvs rm -f file; cvs add FILE' command sequence to add a file with the same
|
||||
name in a new case.
|
||||
|
||||
* CVSROOTs which contain a symlink to a real repository should work.
|
||||
|
||||
* The configure script now tests whether it is building CVS on a case
|
||||
insensitive file system. If it is, CVS assumes that all file systems on this
|
||||
platform will be case insensitive. This is useful for getting the case
|
||||
insensitivity flag set correctly when compiling on Mac OS X and under Cygwin
|
||||
on Windows. Autodetection can be overridden using the
|
||||
--disable-case-sensitivity and --enable-case-sensitivity arguments to
|
||||
configure.
|
||||
|
||||
* A behavior change in `cvs up -jrev1 -jrev2' for modified files with a base
|
||||
revision of rev2 (ie, checked-out version matches rev2 and file has been
|
||||
modified). The operation is no longer ignored and instead is passed to
|
||||
diff3. This will potentially re-apply the diffs between the two revisions to
|
||||
a modified local file. Status messages like from a standard merge have also
|
||||
been added when the file would not or does not change due to this merge
|
||||
request ("[file] already contains the changes between [revisions]...").
|
||||
|
||||
* A bug which could stop `cvs admin -mTAG:message' from recursing has been
|
||||
fixed.
|
||||
|
||||
* Misc documentation cleanup and fixes.
|
||||
|
||||
* Some of the contrib scripts, some of the documentation, and sanity.sh were
|
||||
modified to use and recommend more portable commands rather than using and
|
||||
recommending commands which were not compatible with the POSIX 1003.1-2001
|
||||
specification.
|
||||
|
||||
DEVELOPER ISSUES
|
||||
|
||||
* A new set of tests to test issues specific to case insensitive clients and
|
||||
servers has also been added.
|
||||
|
||||
* Support has been added to the test suite to support testing over a :ext: link
|
||||
to another machine, subject to some stringent requirements. This support can
|
||||
be used, for instance, to test the operation of a case insensitive client
|
||||
against a case sensitive server. Please see the comments in TEST and the
|
||||
src/sanity.sh test script itself for more.
|
||||
|
||||
* We've standardized on Automake 1.7.9 to get a bug fix. See the note below
|
||||
on the Autoconf upgrade for more details.
|
||||
|
||||
* We've standardized on Autoconf version 2.58 to avoid a bug and get at a few
|
||||
new macros. Again, this should only really affect developers, though it is
|
||||
possible that CVS will now compile on a few new platforms. Please see the
|
||||
section of the INSTALL file about using the autotools if you are compiling
|
||||
CVS yourself.
|
||||
|
||||
Changes from 1.11.8 to 1.11.9:
|
||||
|
||||
* CVS now knows how to report, as well as record, `P' record types.
|
||||
|
||||
* When running the `cvs history' command, clients will now send the
|
||||
long-accepted `-e' option, for all records, rather than explicitly requesting
|
||||
`P' record types, a request which servers prior to 1.11.7 will reject with a
|
||||
fatal error message.
|
||||
|
||||
* A problem with locating files requested by case insensitive clients which was
|
||||
accidentally introduced in 1.11.6 as part of a fix for a data loss problem
|
||||
involving `cvs add's from case insensitive clients has been fixed. The
|
||||
relevant error message was `cvs [<command> aborted]: filE,v is ambiguous;
|
||||
could mean FILE,v or file,v'.
|
||||
|
||||
* Attempts to use the global `-l' option, removed from both client and server
|
||||
as of version 1.11.6, will now elicit a warning rather than a fatal error
|
||||
from the server.
|
||||
|
||||
Changes from 1.11.7 to 1.11.8:
|
||||
|
||||
* A problem in the CVS getpass library that could cause passwords to echo on
|
||||
some systems has been fixed.
|
||||
|
||||
Changes from 1.11.6 to 1.11.7:
|
||||
|
||||
* A segfault that could occur in very rare cases where the stat of a file
|
||||
failed during a diff has been fixed.
|
||||
|
||||
* Any user with write privleges to the CVSROOT/checkoutlist file could pass
|
||||
arbitrary format strings directly through to a printf function. This was
|
||||
probably bad and has been fixed. White space at the beginning of error strings
|
||||
in checkoutlist is now ignored properly.
|
||||
|
||||
* In client/server mode, most messages from CVS now contain the actual
|
||||
command name rather than the generic "server".
|
||||
|
||||
* A long-standing bug that prevented most client/server updates from being
|
||||
logged in the history file has been fixed.
|
||||
|
||||
* Updates done via a patch ("P" status) are now logged in the history file
|
||||
by default and the corresponding "P" history record type is now documented.
|
||||
If you're setting the LogHistory option in your CVSROOT/config file, you may
|
||||
want to add "P" to the list of record types.
|
||||
|
||||
* CVS now will always compile and its own getpass() function (originally from
|
||||
GNULIB) in favor of any system one that may exist. This avoids some problems
|
||||
with long passwords on some systems and updates us to POSIX.2 compliance, since
|
||||
getpass() was removed from the POSIX.2 specification.
|
||||
|
||||
* A bug that allowed a write lock to be created in a directory despite
|
||||
there being existing read locks when using LockDir in CVSROOT/config has
|
||||
been fixed.
|
||||
|
||||
* A bug with short patches (`rdiff -s') which caused rdiff to sometimes report
|
||||
differences that did not exist has been fixed.
|
||||
|
||||
* Some minor corrections were made to the diff code to keep diff & rdiff from
|
||||
printing diff headers with empty change texts when two files have different
|
||||
revision numbers but the same content.
|
||||
|
||||
* The global '-l' option, which suppressed history logging, has been removed
|
||||
from both client and server.
|
||||
|
||||
Changes from 1.11.5 to 1.11.6:
|
||||
|
||||
* A warning message is now issued if an administrative file contains
|
||||
more than one DEFAULT entry.
|
||||
|
||||
* An error running a verifymsg script (such as referencing an unset user
|
||||
variable or the script not existing) now causes the verification to
|
||||
fail.
|
||||
|
||||
* Errors in administrative files commands (like unset user variables)
|
||||
are no longer reported unless the command is actually executed.
|
||||
|
||||
* When a file is initially checked out, its last access time is now set
|
||||
to the current time rather than being set to the time the file was last
|
||||
checked in like the modification time is.
|
||||
|
||||
* The Checkin.prog and Update.prog functionality has been removed. This
|
||||
fuctionality previously allowed executables to be specified in the modules file
|
||||
to be run at update and checkin time, but users could edit these files on a per
|
||||
workspace basis, creating a security hole.
|
||||
|
||||
* contrib/rcs2log and src/cvsbug now use the BSD mktemp program to create
|
||||
their temp files and directories on systems which provide it.
|
||||
|
||||
* Corrected the path in a failed write error message.
|
||||
|
||||
* Autoconf and Automake are no longer run automatically unless you run
|
||||
configure with --enable-maintainer-mode. Accordingly, noautomake.sh is
|
||||
no longer needed and has been removed.
|
||||
|
||||
* We've standardized on Automake version 1.7.5 and Autoconf version 2.57 to get
|
||||
at a few new macros. Again, this should only really affect developers. See
|
||||
the section of the INSTALL file about using the autotools if you are compiling
|
||||
CVS yourself.
|
||||
|
||||
Changes from 1.11.4 to 1.11.5:
|
||||
|
||||
* Fixed a security hole in the CVS server by which users with read only access
|
||||
could gain write access. This issue does not affect client builds. The
|
||||
Common Vulnerabilities and Exposures project (cve.mitre.org) has assigned the
|
||||
name CAN-2003-0015 to this issue. See
|
||||
<http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2003-0015> for more
|
||||
information.
|
||||
|
||||
* Fixed some bugs where revision numbers starting with 0 (like 0.3)
|
||||
weren't correctly handled. (CVS doesn't normally use such revision
|
||||
numbers, but users may be able to force it to do so and old RCS files
|
||||
might.)
|
||||
|
||||
Changes from 1.11.3 to 1.11.4:
|
||||
|
||||
* Some minor changes to allow the code to compile on Windows platforms.
|
||||
|
||||
Changes from 1.11.2 to 1.11.3:
|
||||
|
||||
* The tag/rtag code has been fixed to once again lock just a single
|
||||
directory at a time.
|
||||
|
||||
* There was a bug where certain error conditions could cause the server
|
||||
to go into an infinite loop. There was also a bug that caused a
|
||||
compressed connection from an older client to hang on shutdown. These
|
||||
bugs have been fixed.
|
||||
|
||||
* Fixed a bug that caused the server to reject most watch commands.
|
||||
|
||||
* When waiting for another user's lock, the message timestamps are now
|
||||
in UTC rather than the server's local time.
|
||||
|
||||
|
|
@ -24,6 +366,12 @@ sanity.sh to use Autotest and Autoshell. Again, this should only really affect
|
|||
developers. See the section of the INSTALL file about using the autotools if
|
||||
you are compiling CVS yourself.
|
||||
|
||||
* Fixed a bug in the log/rlog code when a revision range crosses a
|
||||
branch point.
|
||||
|
||||
* Fixed a bug where filenames starting with - would be misinterpreted as
|
||||
options when using client/server mode.
|
||||
|
||||
Changes from 1.11.1p1 to 1.11.2:
|
||||
|
||||
* There is a new feature, enabled by RereadLogAfterVerify in CVSROOT/config,
|
||||
|
|
@ -62,6 +410,12 @@ Changes from 1.11.1 to 1.11.1p1:
|
|||
|
||||
Changes from 1.11 to 1.11.1:
|
||||
|
||||
* There was a locking bug in the tag/rtag code that could lose changes
|
||||
made to a file while the tag operation was in progress. This has been
|
||||
fixed, but all of the directories being tagged are now locked for the
|
||||
entire duration of the tag operation rather than only one directory at a
|
||||
time.
|
||||
|
||||
* The "cvs diff" command now accepts the -y/--side=by-side and -T/
|
||||
--initial-tab options. (To use these options with a remote repository,
|
||||
both the client and the server must support them.)
|
||||
|
|
|
|||
|
|
@ -3,6 +3,9 @@
|
|||
Copyright (c) 1993-1994 Brian Berliner
|
||||
Copyright (c) 1992 Brian Berliner and Jeff Polk
|
||||
Copyright (c) 1989-1992, Brian Berliner
|
||||
Copyright (c) 1998-2004 Free Software Foundation,
|
||||
Derek Price,
|
||||
& Ximbiot <http://ximbiot.com>
|
||||
All Rights Reserved
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
|
|
@ -75,7 +78,6 @@ Installation:
|
|||
|
||||
Please read the INSTALL file for installation instructions. Brief summary:
|
||||
|
||||
$ ./noautomake.sh --noautoconf
|
||||
$ ./configure
|
||||
$ make
|
||||
(run the regression tests if desired)
|
||||
|
|
@ -112,87 +114,4 @@ then it will be possible to create one.
|
|||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Credits:
|
||||
|
||||
The conflict-resolution algorithms and much of the administrative file
|
||||
definitions of CVS were based on the original package written by Dick Grune
|
||||
at Vrije Universiteit in Amsterdam <dick@cs.vu.nl>, and posted to
|
||||
comp.sources.unix in the volume 6 release sometime in 1986. This original
|
||||
version was a collection of shell scripts. I am thankful that Dick made
|
||||
his work available.
|
||||
|
||||
Brian Berliner from Prisma, Inc. (now at Sun Microsystems, Inc.)
|
||||
<berliner@sun.com> converted the original CVS shell scripts into reasonably
|
||||
fast C and added many, many features to support software release control
|
||||
functions. See the manual page in the "man" directory. A copy of the
|
||||
USENIX article presented at the Winter 1990 USENIX Conference, Washington
|
||||
D.C., is included in the "doc" directory.
|
||||
|
||||
Jeff Polk from BSDI <polk@bsdi.com> converted the CVS 1.2
|
||||
sources into much more readable and maintainable C code. He also added a
|
||||
whole lot of functionality and modularity to the code in the process.
|
||||
See the bottom of the NEWS file (from about 1992).
|
||||
|
||||
david d `zoo' zuhn <zoo@armadillo.com> contributed the working base code
|
||||
for CVS 1.4 Alpha. His work carries on from work done by K. Richard Pixley
|
||||
and others at Cygnus Support. The CVS 1.4 upgrade is due in large part to
|
||||
Zoo's efforts.
|
||||
|
||||
David G. Grubbs <dgg@odi.com> contributed the CVS "history" and "release"
|
||||
commands. As well as the ever-so-useful "-n" option of CVS which tells CVS
|
||||
to show what it would do, without actually doing it. He also contributed
|
||||
support for the .cvsignore file.
|
||||
|
||||
The Free Software Foundation (GNU) contributed most of the portability
|
||||
framework that CVS now uses. This can be found in the "configure" script,
|
||||
the Makefile's, and basically most of the "lib" directory.
|
||||
|
||||
K. Richard Pixley, Cygnus Support <rich@cygnus.com> contributed many bug
|
||||
fixes/enhancement as well as completing early reviews of the CVS 1.3 manual
|
||||
pages.
|
||||
|
||||
Roland Pesch, then of Cygnus Support <roland@wrs.com> contributed
|
||||
brand new cvs(1) and cvs(5) manual pages. Thanks to him for saving us
|
||||
from poor use of our language!
|
||||
|
||||
Paul Sander, HaL Computer Systems, Inc. <paul@hal.com> wrote and
|
||||
contributed the code in lib/sighandle.c. I added support for POSIX, BSD,
|
||||
and non-POSIX/non-BSD systems.
|
||||
|
||||
Jim Kingdon and others at Cygnus Support <info@cygnus.com> wrote the
|
||||
remote repository access code.
|
||||
|
||||
There have been many, many contributions not listed here. Consult the
|
||||
ChangeLog files in each directory for a more complete idea.
|
||||
|
||||
In addition to the above contributors, the following Beta testers
|
||||
deserve special mention for their support. This is only a partial
|
||||
list; if you have helped in this way and would like to be listed, let
|
||||
bug-cvs know (as described in the Cederqvist manual).
|
||||
|
||||
Mark D. Baushke <mdb@cisco.com>
|
||||
Per Cederqvist <ceder@signum.se>
|
||||
J.T. Conklin <jtc@cygnus.com>
|
||||
Vince DeMarco <vdemarco@fdcsrvr.cs.mci.com>
|
||||
Paul Eggert <eggert@twinsun.com>
|
||||
Lal George <george@research.att.com>
|
||||
Dean E. Hardi <Dean.E.Hardi@ccmail.jpl.nasa.gov>
|
||||
Mike Heath <mike@pencom.com>
|
||||
Jim Kingdon <kingdon@cygnus.com>
|
||||
Bernd Leibing <bernd.leibing@rz.uni-ulm.de>
|
||||
Benedict Lofstedt <benedict@tusc.com.au>
|
||||
Dave Love <d.love@dl.ac.uk>
|
||||
Robert Lupton the Good <rhl@astro.princeton.edu>
|
||||
Tom McAliney <tom@hilco.com>
|
||||
Eberhard Mattes <mattes@azu.informatik.uni-stuttgart.de>
|
||||
Jim Meyering <meyering@comco.com>
|
||||
Thomas Mohr <mohr@lts.sel.alcatel.de>
|
||||
Thomas Nilsson <thoni@softlab.se>
|
||||
Raye Raskin <raye.raskin@lia.com>
|
||||
Harlan Stenn <harlan@landmark.com>
|
||||
Gunnar Tornblom <gunnar.tornblom@senet.abb.se>
|
||||
Greg A. Woods <woods@planix.com>
|
||||
|
||||
Many contributors have added code to the "contrib" directory. See the
|
||||
README file there for a list of what is available. There is also a
|
||||
contributed GNU Emacs CVS-mode in tools/pcl-cvs.
|
||||
Credits: See the AUTHORS file.
|
||||
|
|
|
|||
|
|
@ -206,6 +206,10 @@ miss, but here are a few important ones. I'm leaving off long explanations
|
|||
after the first few since it probably gives you the idea and the data is in
|
||||
sanity.sh.
|
||||
|
||||
Note that the boolean variables contain shell commands which return true or
|
||||
false when executed and are intended to be used like,
|
||||
"if $remote; then ... ; else ... ; fi"
|
||||
|
||||
|
||||
* $testdir = the directory this test is taking place in
|
||||
(CVSROOT=$testdir/cvsroot or CVSROOT=:fork:$testdir/cvsroot)
|
||||
|
|
@ -216,8 +220,11 @@ sanity.sh.
|
|||
* $username = regexp to match a username
|
||||
* $hostname = regexp to match a hostname
|
||||
* $PROG = regexp to match progname in CVS error messages
|
||||
* $remote = 'yes' or 'no', depending on whether the script is running with
|
||||
a remote CVSROOT
|
||||
* $remote = ':' (true) or 'false', depending on whether the script is
|
||||
running with a remote CVSROOT
|
||||
* $keep = ':' (true) or 'false'. When set, the first test run will
|
||||
leave any files and directories it created in $testdir and
|
||||
exit when complete.
|
||||
|
||||
And, of course, some characters like '.' in regexps need to be '\' escaped when
|
||||
you mean them literally. Some characters may be interpreted by the shell,
|
||||
|
|
|
|||
|
|
@ -6,9 +6,10 @@ The "TODO" file! -*-Indented-Text-*-
|
|||
(If done, this should be configurable via commitinfo or some new
|
||||
config file -kingdon, Jun 1995).
|
||||
|
||||
30. Add "rdiff" program option to the modules database (and "diff"
|
||||
too?). (perhaps should think a little harder about what this is
|
||||
trying to accomplish and what the best way is -kingdon, Jul 1997).
|
||||
30. Add "rdiff" & "rtag" program options to the modules database. These
|
||||
commands seem hard to use since these commands deal directly with the
|
||||
RCS ,v files. (perhaps should think a little harder about what this is
|
||||
trying to accomplish and what the best way is -kingdon, Jul 1997).
|
||||
|
||||
31. Think hard about ^C recovery.
|
||||
One particular issue: RCS removes the ,foo.c, file on ^C and CVS
|
||||
|
|
@ -26,10 +27,6 @@ trying to accomplish and what the best way is -kingdon, Jul 1997).
|
|||
PRCS 1.0 was particularly bad the way it handled the "invisible
|
||||
state", but 1.2 is significantly better.
|
||||
|
||||
45. Consider enhancing the "rdiff" and "tag" (rtag??) command support in
|
||||
the module database -- they seem hard to use since these commands
|
||||
deal directly with the RCS ,v files.
|
||||
|
||||
49. cvs xxx commands should be able to deal with files in other
|
||||
directories. I want to do a cvs add foo/bar.c.
|
||||
[[ most commands now use the generic recursion processor, but not all;
|
||||
|
|
@ -56,8 +53,8 @@ trying to accomplish and what the best way is -kingdon, Jul 1997).
|
|||
66. Length of the CVS temporary files must be limited to 14 characters for
|
||||
System-V stupid support. As well as the length on the CVS.adm files.
|
||||
|
||||
72. Consider re-design of the module -o, -i, -t options to use the file
|
||||
system more intuitively.
|
||||
72. Consider re-design of the module -t options to use the file system more
|
||||
intuitively.
|
||||
|
||||
73. Consider an option (in .cvsrc?) to automatically add files that are new
|
||||
and specified to commit.
|
||||
|
|
@ -261,10 +258,6 @@ trying to accomplish and what the best way is -kingdon, Jul 1997).
|
|||
This behavior was not particularly popular and has been since
|
||||
reverted.
|
||||
|
||||
Note also RELATIVE_REPOS in options.h; it needs to be set for
|
||||
changing CVS/Root (not CVS/Repository) to be sufficient in the
|
||||
case where the directory has changed.
|
||||
|
||||
This whole area is a rather bad pile of individual decisions which
|
||||
accumulated over time, some of them probably bad decisions with
|
||||
hindsight. But we didn't get into this mess overnight, and we're
|
||||
|
|
@ -787,10 +780,6 @@ send differences instead of entire files. In the degenerate case
|
|||
(e.g. "cvs diff" without arguments) the required network traffic is
|
||||
reduced to zero, and the client need not even contact the server.
|
||||
|
||||
196. Using a CVSROOT with a trailing slash will confuse CVS. I think
|
||||
we need to add a call to strip_trailing_slashes in root.c
|
||||
(parse_cvsroot), but I haven't considered all of the ramifications.
|
||||
|
||||
197. Analyze the difference between CVS_UNLINK & unlink_file. As far as I
|
||||
can tell, unlink_file aborts in noexec mode and CVS_UNLINK does not. I'm not
|
||||
sure it would be possible to remove even the use of temp files in noexec mode,
|
||||
|
|
@ -825,9 +814,6 @@ and other non-canonical paths confuse CVS. Most of the cases that do
|
|||
work are handled on an ad-hoc basis. We need to come up with a coherent
|
||||
strategy to address path canonicalization and apply it consistently.
|
||||
|
||||
206. Restore directory-at-a-time locking for tag operations instead of
|
||||
locking the entire tree.
|
||||
|
||||
208. Merge enhancements to the diff package back into the original GNU source.
|
||||
|
||||
209. Go through this file and try to:
|
||||
|
|
@ -862,24 +848,12 @@ glibc version.
|
|||
216. Avoid command-line keyword expansion modes overriding binary mode
|
||||
(or make binary mode completely separate from keyword expansion mode).
|
||||
|
||||
217. Fix assertion failures that occur when CVSROOT is a symlink to the
|
||||
actual repository location.
|
||||
|
||||
218. Fix "checkout -d ." in client/server mode.
|
||||
|
||||
219. Fix "checkout -d multi/level/dir" in client/server mode.
|
||||
|
||||
220. Send correct Max-dotdot in client/server mode (broken by change to
|
||||
support multiple repositories).
|
||||
|
||||
221. Handle spaces in file/directory names. (Most, if not all, of the
|
||||
internal infrastructure already handles them correctly, but most of the
|
||||
administrative file interfaces do not.)
|
||||
|
||||
222. Fix assertion failure (*rcsnode == NULL in commit.c, line 2056)
|
||||
when adding a file from a case-insensitive client that matches an Attic
|
||||
file with case differences.
|
||||
|
||||
223. Internationalization support. This probably means using some kind
|
||||
of universal character set (ISO 10646?) internally and converting on
|
||||
input and output, which opens the locale can of worms.
|
||||
|
|
@ -899,13 +873,18 @@ local time string according to the localization settings before printing it.
|
|||
|
||||
225. Add support for --allow-root to server command.
|
||||
|
||||
226. Add support for upgrading read locks to write locks and use it to
|
||||
avoid holding potentially long-term write locks (for example, in tag and
|
||||
commit).
|
||||
|
||||
227. 'cvs release' should use the CVS/Root in the directory being released
|
||||
when such is specified rather than $CVSROOT. In my work directory with no CVS
|
||||
dir, a release of subdirectories causes the released projects to be tested
|
||||
against my $CVSROOT environment variable, which often isn't correct but which
|
||||
can complete without generating error messages if the project also exists in
|
||||
the other CVSROOT. This happens a lot with my copies of the ccvs project.
|
||||
|
||||
228. Consider adding -d to commit ala ci.
|
||||
|
||||
229. Improve the locking code to use a random delay with exponential
|
||||
backoff ala Ethernet and separate the notification interval from the
|
||||
wait interval.
|
||||
|
||||
230. Support for options like compression as part of the CVSROOT might be
|
||||
nice. This should be fairly easy to implement now using the method options.
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ AC_MSG_RESULT([$acx_gssapi_cv_gssapi])
|
|||
# Set up GSSAPI includes for later use. We don't bother to check for
|
||||
# $acx_gssapi_cv_gssapi=no here since that will be caught later.
|
||||
#
|
||||
if test x$acx_gssapi_cv_gssapi = yes; then
|
||||
if test x$acx_gssapi_cv_gssapi = xyes; then
|
||||
# no special includes necessary
|
||||
GSSAPI_INCLUDES=""
|
||||
else
|
||||
|
|
@ -210,8 +210,14 @@ when using GSSAPI.])
|
|||
#
|
||||
AC_SEARCH_LIBS([__dn_expand], [resolv])
|
||||
|
||||
#
|
||||
# crypt Needed by roken under FreeBSD 4.6.
|
||||
#
|
||||
AC_SEARCH_LIBS([crypt], [crypt])
|
||||
|
||||
#
|
||||
# roken Heimdal K 0.3d -lresolv
|
||||
# roken FreeBSD 4.6 -lcrypt
|
||||
#
|
||||
AC_SEARCH_LIBS([roken_gethostbyaddr], [roken])
|
||||
|
||||
|
|
|
|||
264
contrib/cvs/aclocal.m4
vendored
264
contrib/cvs/aclocal.m4
vendored
|
|
@ -1,6 +1,6 @@
|
|||
# aclocal.m4 generated automatically by aclocal 1.6.3 -*- Autoconf -*-
|
||||
# generated automatically by aclocal 1.7.9 -*- Autoconf -*-
|
||||
|
||||
# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# Free Software Foundation, Inc.
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
|
|
@ -98,7 +98,7 @@ AC_MSG_RESULT([$acx_gssapi_cv_gssapi])
|
|||
# Set up GSSAPI includes for later use. We don't bother to check for
|
||||
# $acx_gssapi_cv_gssapi=no here since that will be caught later.
|
||||
#
|
||||
if test x$acx_gssapi_cv_gssapi = yes; then
|
||||
if test x$acx_gssapi_cv_gssapi = xyes; then
|
||||
# no special includes necessary
|
||||
GSSAPI_INCLUDES=""
|
||||
else
|
||||
|
|
@ -223,8 +223,14 @@ when using GSSAPI.])
|
|||
#
|
||||
AC_SEARCH_LIBS([__dn_expand], [resolv])
|
||||
|
||||
#
|
||||
# crypt Needed by roken under FreeBSD 4.6.
|
||||
#
|
||||
AC_SEARCH_LIBS([crypt], [crypt])
|
||||
|
||||
#
|
||||
# roken Heimdal K 0.3d -lresolv
|
||||
# roken FreeBSD 4.6 -lcrypt
|
||||
#
|
||||
AC_SEARCH_LIBS([roken_gethostbyaddr], [roken])
|
||||
|
||||
|
|
@ -280,7 +286,7 @@ fi
|
|||
# This macro actually does too much some checks are only needed if
|
||||
# your package does certain things. But this isn't really a big deal.
|
||||
|
||||
# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
|
|
@ -298,16 +304,9 @@ fi
|
|||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# serial 8
|
||||
# serial 10
|
||||
|
||||
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
|
||||
# written in clear, in which case automake, when reading aclocal.m4,
|
||||
# will think it sees a *use*, and therefore will trigger all it's
|
||||
# C support machinery. Also note that it means that autoscan, seeing
|
||||
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
|
||||
|
||||
|
||||
AC_PREREQ([2.52])
|
||||
AC_PREREQ([2.54])
|
||||
|
||||
# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow
|
||||
# the ones we care about.
|
||||
|
|
@ -333,6 +332,16 @@ if test "`cd $srcdir && pwd`" != "`pwd`" &&
|
|||
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
|
||||
fi
|
||||
|
||||
# test whether we have cygpath
|
||||
if test -z "$CYGPATH_W"; then
|
||||
if (cygpath --version) >/dev/null 2>/dev/null; then
|
||||
CYGPATH_W='cygpath -w'
|
||||
else
|
||||
CYGPATH_W=echo
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([CYGPATH_W])
|
||||
|
||||
# Define the identity of the package.
|
||||
dnl Distinguish between old-style and new-style calls.
|
||||
m4_ifval([$2],
|
||||
|
|
@ -340,8 +349,8 @@ m4_ifval([$2],
|
|||
AC_SUBST([PACKAGE], [$1])dnl
|
||||
AC_SUBST([VERSION], [$2])],
|
||||
[_AM_SET_OPTIONS([$1])dnl
|
||||
AC_SUBST([PACKAGE], [AC_PACKAGE_TARNAME])dnl
|
||||
AC_SUBST([VERSION], [AC_PACKAGE_VERSION])])dnl
|
||||
AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
|
||||
AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
|
||||
|
||||
_AM_IF_OPTION([no-define],,
|
||||
[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
|
||||
|
|
@ -362,19 +371,41 @@ AM_PROG_INSTALL_STRIP
|
|||
# some platforms.
|
||||
AC_REQUIRE([AC_PROG_AWK])dnl
|
||||
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
||||
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
|
||||
|
||||
_AM_IF_OPTION([no-dependencies],,
|
||||
[AC_PROVIDE_IFELSE([AC_PROG_][CC],
|
||||
[AC_PROVIDE_IFELSE([AC_PROG_CC],
|
||||
[_AM_DEPENDENCIES(CC)],
|
||||
[define([AC_PROG_][CC],
|
||||
defn([AC_PROG_][CC])[_AM_DEPENDENCIES(CC)])])dnl
|
||||
AC_PROVIDE_IFELSE([AC_PROG_][CXX],
|
||||
[define([AC_PROG_CC],
|
||||
defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
|
||||
AC_PROVIDE_IFELSE([AC_PROG_CXX],
|
||||
[_AM_DEPENDENCIES(CXX)],
|
||||
[define([AC_PROG_][CXX],
|
||||
defn([AC_PROG_][CXX])[_AM_DEPENDENCIES(CXX)])])dnl
|
||||
[define([AC_PROG_CXX],
|
||||
defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
|
||||
])
|
||||
])
|
||||
|
||||
|
||||
# When config.status generates a header, we must update the stamp-h file.
|
||||
# This file resides in the same directory as the config header
|
||||
# that is generated. The stamp files are numbered to have different names.
|
||||
|
||||
# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
|
||||
# loop where config.status creates the headers, so we can generate
|
||||
# our stamp files there.
|
||||
AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
|
||||
[# Compute $1's index in $config_headers.
|
||||
_am_stamp_count=1
|
||||
for _am_header in $config_headers :; do
|
||||
case $_am_header in
|
||||
$1 | $1:* )
|
||||
break ;;
|
||||
* )
|
||||
_am_stamp_count=`expr $_am_stamp_count + 1` ;;
|
||||
esac
|
||||
done
|
||||
echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
|
||||
|
||||
# Copyright 2002 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
|
|
@ -395,14 +426,14 @@ AC_PROVIDE_IFELSE([AC_PROG_][CXX],
|
|||
# ----------------------------
|
||||
# Automake X.Y traces this macro to ensure aclocal.m4 has been
|
||||
# generated from the m4 files accompanying Automake X.Y.
|
||||
AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.6"])
|
||||
AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"])
|
||||
|
||||
# AM_SET_CURRENT_AUTOMAKE_VERSION
|
||||
# -------------------------------
|
||||
# Call AM_AUTOMAKE_VERSION so it can be traced.
|
||||
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
|
||||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
||||
[AM_AUTOMAKE_VERSION([1.6.3])])
|
||||
[AM_AUTOMAKE_VERSION([1.7.9])])
|
||||
|
||||
# Helper functions for option handling. -*- Autoconf -*-
|
||||
|
||||
|
|
@ -688,9 +719,42 @@ fi
|
|||
INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
|
||||
AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
||||
|
||||
# serial 4 -*- Autoconf -*-
|
||||
# -*- Autoconf -*-
|
||||
# Copyright (C) 2003 Free Software Foundation, Inc.
|
||||
|
||||
# Copyright 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# 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.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# serial 1
|
||||
|
||||
# Check whether the underlying file-system supports filenames
|
||||
# with a leading dot. For instance MS-DOS doesn't.
|
||||
AC_DEFUN([AM_SET_LEADING_DOT],
|
||||
[rm -rf .tst 2>/dev/null
|
||||
mkdir .tst 2>/dev/null
|
||||
if test -d .tst; then
|
||||
am__leading_dot=.
|
||||
else
|
||||
am__leading_dot=_
|
||||
fi
|
||||
rmdir .tst 2>/dev/null
|
||||
AC_SUBST([am__leading_dot])])
|
||||
|
||||
# serial 5 -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -751,18 +815,32 @@ AC_CACHE_CHECK([dependency style of $depcc],
|
|||
# using a relative directory.
|
||||
cp "$am_depcomp" conftest.dir
|
||||
cd conftest.dir
|
||||
# We will build objects and dependencies in a subdirectory because
|
||||
# it helps to detect inapplicable dependency modes. For instance
|
||||
# both Tru64's cc and ICC support -MD to output dependencies as a
|
||||
# side effect of compilation, but ICC will put the dependencies in
|
||||
# the current directory while Tru64 will put them in the object
|
||||
# directory.
|
||||
mkdir sub
|
||||
|
||||
am_cv_$1_dependencies_compiler_type=none
|
||||
if test "$am_compiler_list" = ""; then
|
||||
am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
|
||||
fi
|
||||
for depmode in $am_compiler_list; do
|
||||
# Setup a source with many dependencies, because some compilers
|
||||
# like to wrap large dependency lists on column 80 (with \), and
|
||||
# we should not choose a depcomp mode which is confused by this.
|
||||
#
|
||||
# We need to recreate these files for each test, as the compiler may
|
||||
# overwrite some of them when testing with obscure command lines.
|
||||
# This happens at least with the AIX C compiler.
|
||||
echo '#include "conftest.h"' > conftest.c
|
||||
echo 'int i;' > conftest.h
|
||||
echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf
|
||||
: > sub/conftest.c
|
||||
for i in 1 2 3 4 5 6; do
|
||||
echo '#include "conftst'$i'.h"' >> sub/conftest.c
|
||||
: > sub/conftst$i.h
|
||||
done
|
||||
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
|
||||
|
||||
case $depmode in
|
||||
nosideeffect)
|
||||
|
|
@ -780,13 +858,20 @@ AC_CACHE_CHECK([dependency style of $depcc],
|
|||
# mode. It turns out that the SunPro C++ compiler does not properly
|
||||
# handle `-M -o', and we need to detect this.
|
||||
if depmode=$depmode \
|
||||
source=conftest.c object=conftest.o \
|
||||
depfile=conftest.Po tmpdepfile=conftest.TPo \
|
||||
$SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 &&
|
||||
grep conftest.h conftest.Po > /dev/null 2>&1 &&
|
||||
source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
|
||||
depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
|
||||
$SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
|
||||
>/dev/null 2>conftest.err &&
|
||||
grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
|
||||
grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
|
||||
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
|
||||
am_cv_$1_dependencies_compiler_type=$depmode
|
||||
break
|
||||
# icc doesn't choke on unknown options, it will just issue warnings
|
||||
# (even with -Werror). So we grep stderr for any message
|
||||
# that says an option was ignored.
|
||||
if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
|
||||
am_cv_$1_dependencies_compiler_type=$depmode
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
|
|
@ -797,6 +882,9 @@ else
|
|||
fi
|
||||
])
|
||||
AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
|
||||
AM_CONDITIONAL([am__fastdep$1], [
|
||||
test "x$enable_dependency_tracking" != xno \
|
||||
&& test "$am_cv_$1_dependencies_compiler_type" = gcc3])
|
||||
])
|
||||
|
||||
|
||||
|
|
@ -805,16 +893,8 @@ AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
|
|||
# Choose a directory name for dependency files.
|
||||
# This macro is AC_REQUIREd in _AM_DEPENDENCIES
|
||||
AC_DEFUN([AM_SET_DEPDIR],
|
||||
[rm -f .deps 2>/dev/null
|
||||
mkdir .deps 2>/dev/null
|
||||
if test -d .deps; then
|
||||
DEPDIR=.deps
|
||||
else
|
||||
# MS-DOS does not allow filenames that begin with a dot.
|
||||
DEPDIR=_deps
|
||||
fi
|
||||
rmdir .deps 2>/dev/null
|
||||
AC_SUBST([DEPDIR])
|
||||
[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
|
||||
AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
|
||||
])
|
||||
|
||||
|
||||
|
|
@ -916,7 +996,9 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
|
|||
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
|
||||
])
|
||||
|
||||
# Copyright 2001 Free Software Foundation, Inc. -*- Autoconf -*-
|
||||
# Check to see how 'make' treats includes. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -941,8 +1023,9 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
|
|||
AC_DEFUN([AM_MAKE_INCLUDE],
|
||||
[am_make=${MAKE-make}
|
||||
cat > confinc << 'END'
|
||||
doit:
|
||||
am__doit:
|
||||
@echo done
|
||||
.PHONY: am__doit
|
||||
END
|
||||
# If we don't find an include directive, just comment out the code.
|
||||
AC_MSG_CHECKING([for style of include used by $am_make])
|
||||
|
|
@ -956,7 +1039,7 @@ echo "include confinc" > confmf
|
|||
# In particular we don't look at `^make:' because GNU make might
|
||||
# be invoked under some other name (usually "gmake"), in which
|
||||
# case it prints its new name instead of `make'.
|
||||
if test "`$am_make -s -f confmf 2> /dev/null | fgrep -v 'ing directory'`" = "done"; then
|
||||
if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
|
||||
am__include=include
|
||||
am__quote=
|
||||
_am_result=GNU
|
||||
|
|
@ -970,9 +1053,9 @@ if test "$am__include" = "#"; then
|
|||
_am_result=BSD
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(am__include)
|
||||
AC_SUBST(am__quote)
|
||||
AC_MSG_RESULT($_am_result)
|
||||
AC_SUBST([am__include])
|
||||
AC_SUBST([am__quote])
|
||||
AC_MSG_RESULT([$_am_result])
|
||||
rm -f confinc confmf
|
||||
])
|
||||
|
||||
|
|
@ -1016,7 +1099,7 @@ else
|
|||
fi
|
||||
AC_CONFIG_COMMANDS_PRE(
|
||||
[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
|
||||
AC_MSG_ERROR([conditional \"$1\" was never defined.
|
||||
AC_MSG_ERROR([conditional "$1" was never defined.
|
||||
Usually this means the macro was only invoked conditionally.])
|
||||
fi])])
|
||||
|
||||
|
|
@ -1043,60 +1126,47 @@ AC_PREREQ([2.52])
|
|||
|
||||
# serial 6
|
||||
|
||||
# When config.status generates a header, we must update the stamp-h file.
|
||||
# This file resides in the same directory as the config header
|
||||
# that is generated. We must strip everything past the first ":",
|
||||
# and everything past the last "/".
|
||||
# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
|
||||
AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
|
||||
|
||||
# _AM_DIRNAME(PATH)
|
||||
# -----------------
|
||||
# Like AS_DIRNAME, only do it during macro expansion
|
||||
AC_DEFUN([_AM_DIRNAME],
|
||||
[m4_if(regexp([$1], [^.*[^/]//*[^/][^/]*/*$]), -1,
|
||||
m4_if(regexp([$1], [^//\([^/]\|$\)]), -1,
|
||||
m4_if(regexp([$1], [^/.*]), -1,
|
||||
[.],
|
||||
patsubst([$1], [^\(/\).*], [\1])),
|
||||
patsubst([$1], [^\(//\)\([^/].*\|$\)], [\1])),
|
||||
patsubst([$1], [^\(.*[^/]\)//*[^/][^/]*/*$], [\1]))[]dnl
|
||||
])# _AM_DIRNAME
|
||||
# Add --enable-maintainer-mode option to configure.
|
||||
# From Jim Meyering
|
||||
|
||||
# Copyright 1996, 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
# The stamp files are numbered to have different names.
|
||||
# We could number them on a directory basis, but that's additional
|
||||
# complications, let's have a unique counter.
|
||||
m4_define([_AM_STAMP_Count], [0])
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# 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.
|
||||
|
||||
# _AM_STAMP(HEADER)
|
||||
# -----------------
|
||||
# The name of the stamp file for HEADER.
|
||||
AC_DEFUN([_AM_STAMP],
|
||||
[m4_define([_AM_STAMP_Count], m4_incr(_AM_STAMP_Count))dnl
|
||||
AS_ESCAPE(_AM_DIRNAME(patsubst([$1],
|
||||
[:.*])))/stamp-h[]_AM_STAMP_Count])
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# serial 2
|
||||
|
||||
# _AM_CONFIG_HEADER(HEADER[:SOURCES], COMMANDS, INIT-COMMANDS)
|
||||
# ------------------------------------------------------------
|
||||
# We used to try to get a real timestamp in stamp-h. But the fear is that
|
||||
# that will cause unnecessary cvs conflicts.
|
||||
AC_DEFUN([_AM_CONFIG_HEADER],
|
||||
[# Add the stamp file to the list of files AC keeps track of,
|
||||
# along with our hook.
|
||||
AC_CONFIG_HEADERS([$1],
|
||||
[# update the timestamp
|
||||
echo 'timestamp for $1' >"_AM_STAMP([$1])"
|
||||
$2],
|
||||
[$3])
|
||||
])# _AM_CONFIG_HEADER
|
||||
AC_DEFUN([AM_MAINTAINER_MODE],
|
||||
[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
|
||||
dnl maintainer-mode is disabled by default
|
||||
AC_ARG_ENABLE(maintainer-mode,
|
||||
[ --enable-maintainer-mode enable make rules and dependencies not useful
|
||||
(and sometimes confusing) to the casual installer],
|
||||
USE_MAINTAINER_MODE=$enableval,
|
||||
USE_MAINTAINER_MODE=no)
|
||||
AC_MSG_RESULT([$USE_MAINTAINER_MODE])
|
||||
AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
|
||||
MAINT=$MAINTAINER_MODE_TRUE
|
||||
AC_SUBST(MAINT)dnl
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
# AM_CONFIG_HEADER(HEADER[:SOURCES]..., COMMANDS, INIT-COMMANDS)
|
||||
# --------------------------------------------------------------
|
||||
AC_DEFUN([AM_CONFIG_HEADER],
|
||||
[AC_FOREACH([_AM_File], [$1], [_AM_CONFIG_HEADER(_AM_File, [$2], [$3])])
|
||||
])# AM_CONFIG_HEADER
|
||||
AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
|
||||
|
||||
# serial 2
|
||||
|
||||
|
|
|
|||
|
|
@ -41,10 +41,15 @@
|
|||
/* Define to enable encryption support. */
|
||||
#undef ENCRYPTION
|
||||
|
||||
/* Define if this executable will be running on case insensitive file systems.
|
||||
In the client case, this means that it will request that the server pretend
|
||||
to be case insensitive if it isn't already. */
|
||||
#undef FILENAMES_CASE_INSENSITIVE
|
||||
|
||||
/* When committing or importing files, you must enter a log message. Normally,
|
||||
you can do this either via the -m flag on the command line, the -F flag on
|
||||
the command line, or an editor will be started for you. If you like to use
|
||||
logging templates (the rcsinfo file within the /CVSROOT directory),
|
||||
logging templates (the rcsinfo file within the $CVSROOT/CVSROOT directory),
|
||||
you might want to force people to use the editor even if they specify a
|
||||
message with -m or -F. Enabling FORCE_USE_EDITOR will cause the -m or -F
|
||||
message to be appended to the temp file when the editor is started. */
|
||||
|
|
@ -83,7 +88,7 @@
|
|||
/* Define to 1 if you have the <fcntl.h> header file. */
|
||||
#undef HAVE_FCNTL_H
|
||||
|
||||
/* Define to 1 if your system has a working `fnmatch' function. */
|
||||
/* Define to 1 if your system has a working POSIX `fnmatch' function. */
|
||||
#undef HAVE_FNMATCH
|
||||
|
||||
/* Define to 1 if you have the <fnmatch.h> header file. */
|
||||
|
|
@ -116,9 +121,6 @@
|
|||
/* Define to 1 if you have the `getpagesize' function. */
|
||||
#undef HAVE_GETPAGESIZE
|
||||
|
||||
/* Define to 1 if you have the `getpassphrase' function. */
|
||||
#undef HAVE_GETPASSPHRASE
|
||||
|
||||
/* Define if you have the getspnam function. */
|
||||
#undef HAVE_GETSPNAM
|
||||
|
||||
|
|
@ -155,6 +157,12 @@
|
|||
/* Define to 1 if you have the `krb_get_err_text' function. */
|
||||
#undef HAVE_KRB_GET_ERR_TEXT
|
||||
|
||||
/* Define to 1 if you have the `krb' library (-lkrb). */
|
||||
#undef HAVE_LIBKRB
|
||||
|
||||
/* Define to 1 if you have the `krb4' library (-lkrb4). */
|
||||
#undef HAVE_LIBKRB4
|
||||
|
||||
/* Define to 1 if you have the `nsl' library (-lnsl). */
|
||||
#undef HAVE_LIBNSL
|
||||
|
||||
|
|
@ -470,6 +478,11 @@
|
|||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
#undef const
|
||||
|
||||
/* We want to always use the GNULIB version of getpass which we have in lib,
|
||||
so define getpass to something that won't conflict with any existing system
|
||||
declarations. */
|
||||
#undef getpass
|
||||
|
||||
/* Define to `int' if <sys/types.h> doesn't define. */
|
||||
#undef gid_t
|
||||
|
||||
|
|
|
|||
5576
contrib/cvs/configure
vendored
5576
contrib/cvs/configure
vendored
File diff suppressed because it is too large
Load diff
|
|
@ -1,11 +1,12 @@
|
|||
dnl configure.in for cvs
|
||||
AC_INIT([Concurrent Versions System (CVS)],[1.11.5],[bug-cvs@gnu.org],[cvs])
|
||||
AC_INIT([Concurrent Versions System (CVS)],[1.11.15],[bug-cvs@gnu.org],[cvs])
|
||||
AC_CONFIG_SRCDIR(src/cvs.h)
|
||||
AM_INIT_AUTOMAKE([gnu 1.5 dist-bzip2 no-define])
|
||||
AC_PREREQ(2.53)
|
||||
AM_INIT_AUTOMAKE([gnu 1.7.9 dist-bzip2 no-define])
|
||||
AC_PREREQ(2.58)
|
||||
|
||||
AC_PREFIX_PROGRAM(cvs)
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
AM_MAINTAINER_MODE
|
||||
|
||||
AC_PROG_CC
|
||||
AM_PROG_CC_C_O
|
||||
|
|
@ -71,8 +72,18 @@ AC_EXEEXT
|
|||
|
||||
AC_PATH_PROG(PERL, perl, no)
|
||||
AC_PATH_PROG(CSH, csh, no)
|
||||
AC_PATH_PROG(PR, pr, no)
|
||||
# for contrib/rcs2log.sh & src/cvsbug.in.
|
||||
AC_PATH_PROG(MKTEMP, mktemp, mktemp)
|
||||
if test x"$MKTEMP" = xmktemp; then
|
||||
MKTEMP_SH_FUNCTION=$srcdir/mktemp.sh
|
||||
else
|
||||
MKTEMP_SH_FUNCTION=/dev/null
|
||||
fi
|
||||
AC_SUBST_FILE(MKTEMP_SH_FUNCTION)
|
||||
# for src/cvsbug.in
|
||||
AC_PATH_PROG(SENDMAIL, sendmail, no, [$PATH:/usr/sbin:/usr/lib])
|
||||
# For diff/util.c
|
||||
AC_PATH_PROG(PR, pr, no)
|
||||
if test x"$PR" != xno; then
|
||||
AC_DEFINE_UNQUOTED([PR_PROGRAM], ["$PR"], [Path to the pr utility])
|
||||
fi
|
||||
|
|
@ -174,6 +185,26 @@ AC_REPLACE_FUNCS(\
|
|||
valloc \
|
||||
waitpid \
|
||||
)
|
||||
|
||||
|
||||
|
||||
dnl
|
||||
dnl Begin GNULIB stuff.
|
||||
dnl
|
||||
|
||||
dnl We always want to use the GNULIB getpass, so define its name to something
|
||||
dnl that won't conflict with system declarations.
|
||||
AC_DEFINE([getpass], [cvs_getpass],
|
||||
[We want to always use the GNULIB version of getpass which we have in lib,
|
||||
so define getpass to something that won't conflict with any existing system
|
||||
declarations.])
|
||||
|
||||
dnl
|
||||
dnl End GNULIB stuff.
|
||||
dnl
|
||||
|
||||
|
||||
|
||||
AC_CHECK_FUNCS(\
|
||||
fchdir \
|
||||
fchmod \
|
||||
|
|
@ -183,7 +214,6 @@ AC_CHECK_FUNCS(\
|
|||
getgroups \
|
||||
getopt \
|
||||
getpagesize \
|
||||
getpassphrase \
|
||||
gettimeofday \
|
||||
initgroups \
|
||||
login \
|
||||
|
|
@ -349,18 +379,20 @@ if test -n "$krb_h"; then
|
|||
LDFLAGS=$hold_ldflags
|
||||
else
|
||||
AC_CHECK_LIB(krb,printf,[krb_lib=yes krb_libdir=])
|
||||
AC_CHECK_FUNC(krb_recvauth,[krb_lib=yes krb_libdir=])
|
||||
fi
|
||||
if test -n "$krb_lib"; then
|
||||
AC_DEFINE([HAVE_KERBEROS], 1,
|
||||
[Define if you have MIT Kerberos version 4 available.])
|
||||
test -n "${krb_libdir}" && LIBS="${LIBS} -L${krb_libdir}"
|
||||
LIBS="${LIBS} -lkrb"
|
||||
# Put -L${krb_libdir} in LDFLAGS temporarily so that it appears before
|
||||
# -ldes in the command line. Don't do it permanently so that we honor
|
||||
# the user's setting for LDFLAGS
|
||||
hold_ldflags=$LDFLAGS
|
||||
test -n "${krb_libdir}" && LDFLAGS="$LDFLAGS -L${krb_libdir}"
|
||||
AC_CHECK_LIB(des,printf,[LIBS="${LIBS} -ldes"])
|
||||
AC_CHECK_LIB(krb,krb_recvauth)
|
||||
AC_CHECK_LIB(krb4,krb_recvauth)
|
||||
LDFLAGS=$hold_ldflags
|
||||
if test -n "$krb_incdir"; then
|
||||
includeopt="${includeopt} -I$krb_incdir"
|
||||
|
|
@ -396,8 +428,21 @@ AC_ARG_WITH(
|
|||
[--with-editor],
|
||||
[The default text editor CVS should use for log messages
|
||||
(default autoselects)]), ,
|
||||
[with_editor="vi emacs pico edit"])
|
||||
[with_editor=yes])
|
||||
|
||||
# If --with-editor was supplied with an argument, let it override $EDITOR from
|
||||
# the user's environment. We need to unset EDITOR here because AC_CHECK_PROGS
|
||||
# will let the value of EDITOR ride when it is set rather than searching. We
|
||||
# ignore the --without-editor case since it will be caught below.
|
||||
if test -n "$EDITOR" && test yes != $with_editor; then
|
||||
AS_UNSET([EDITOR])
|
||||
fi
|
||||
|
||||
# Set the default when --with-editor wasn't supplied or when it was supplied
|
||||
# without an argument.
|
||||
if test yes = $with_editor; then
|
||||
with_editor="vim vi emacs nano pico edit"
|
||||
fi
|
||||
|
||||
if echo $with_editor |grep ^/ >/dev/null; then
|
||||
# If $with_editor is an absolute path, issue a warning if the executable
|
||||
|
|
@ -409,31 +454,40 @@ if echo $with_editor |grep ^/ >/dev/null; then
|
|||
if ! test -f $with_editor \
|
||||
|| ! test -x $with_editor; then
|
||||
# warn the user that they may encounter problems
|
||||
AC_MSG_WARN([$with_editor is not a path to an executable file])
|
||||
AC_MSG_WARN([\`$with_editor' is not a path to an executable file])
|
||||
fi
|
||||
elif test no != "${with_editor}"; then
|
||||
# Search for an editor
|
||||
AC_CHECK_PROGS([EDITOR], [$with_editor])
|
||||
AC_CHECK_PROGS([EDITOR], [$with_editor], [no])
|
||||
if test no = "${EDITOR}"; then
|
||||
AC_MSG_ERROR([
|
||||
Failed to find a text file editor. CVS cannot be compiled
|
||||
without a default log message editor. Searched for
|
||||
\`$with_editor'. Try \`configure --with-editor'.])
|
||||
fi
|
||||
else
|
||||
AC_MSG_CHECKING([for an editor])
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([
|
||||
CVS cannot be compiled without a default log message editor.
|
||||
Try \`configure --with-editor'.])
|
||||
fi
|
||||
|
||||
if test -n "${EDITOR}"; then
|
||||
dnl FIXME - Using --without-editor will probably break a compile at
|
||||
dnl the moment, but maybe it is reasonable for someone to want to
|
||||
dnl compile a CVS executable that refuses to run if no $EDITOR,
|
||||
dnl $CVS_EDITOR, or -e option is specified? Making a preliminary
|
||||
dnl design decision in this direction, subject to discussion.
|
||||
AC_DEFINE_UNQUOTED(
|
||||
[EDITOR_DFLT], ["$EDITOR"],
|
||||
[The default editor to use, if one does not specify the "-e" option
|
||||
to cvs, or does not have an EDITOR environment variable. If this
|
||||
is not set to an absolute path to an executable, use the shell to
|
||||
find where the editor actually is. This allows sites with
|
||||
/usr/bin/vi or /usr/ucb/vi to work equally well (assuming that their
|
||||
PATH is reasonable).])
|
||||
fi
|
||||
dnl FIXME - Using --without-editor will probably break a compile at
|
||||
dnl the moment, but maybe it is reasonable for someone to want to
|
||||
dnl compile a CVS executable that refuses to run if no $EDITOR,
|
||||
dnl $CVS_EDITOR, or -e option is specified? Making a preliminary
|
||||
dnl design decision in this direction, subject to discussion.
|
||||
dnl
|
||||
dnl Still don't know if the above would be useful, but we shouldn't
|
||||
dnl be able to get here any longer without $EDITOR defined due to the
|
||||
dnl error checking above.
|
||||
AC_DEFINE_UNQUOTED(
|
||||
[EDITOR_DFLT], ["$EDITOR"],
|
||||
[The default editor to use, if one does not specify the "-e" option
|
||||
to cvs, or does not have an EDITOR environment variable. If this
|
||||
is not set to an absolute path to an executable, use the shell to
|
||||
find where the editor actually is. This allows sites with
|
||||
/usr/bin/vi or /usr/ucb/vi to work equally well (assuming that their
|
||||
PATH is reasonable).])
|
||||
|
||||
dnl
|
||||
dnl done finding an editor
|
||||
|
|
@ -454,7 +508,7 @@ AC_ARG_WITH(
|
|||
|
||||
AC_MSG_CHECKING([for temporary directory])
|
||||
if test -z "$with_tmpdir" || test yes = "$with_tmpdir"; then
|
||||
for with_tmpdir in "$TMPDIR" "$TMP" "$TEMP" /tmp /var/tmp no; do
|
||||
for with_tmpdir in /tmp /var/tmp no; do
|
||||
if test -d "$with_tmpdir" && test -x "$with_tmpdir" \
|
||||
&& test -w "$with_tmpdir" && test -r "$with_tmpdir"; then
|
||||
break
|
||||
|
|
@ -633,7 +687,7 @@ if test no != "$enable_password_authenticated_client"; then
|
|||
method in the CVS client (default)])
|
||||
else
|
||||
AC_MSG_WARN(
|
||||
[--enable-password-authenticated-server is meaningless with
|
||||
[--enable-password-authenticated-client is meaningless with
|
||||
the CVS client disabled (--disable-client)])
|
||||
fi
|
||||
fi
|
||||
|
|
@ -740,6 +794,73 @@ if test no != "$enable_server"; then
|
|||
fi # enable_server
|
||||
|
||||
|
||||
dnl
|
||||
dnl begin --enable-case-sensitivity
|
||||
dnl
|
||||
|
||||
AC_ARG_ENABLE(
|
||||
[case-sensitivity],
|
||||
AC_HELP_STRING(
|
||||
[--enable-case-sensitivity],
|
||||
[Force CVS to expect a case sensitive file system. Enabling this on a case
|
||||
insensitive system should have little effect on the server or client
|
||||
operation, though client users may ocassionally be suprised that the CVS
|
||||
server appears to be case sensitive. Disabling this for a case sensitive
|
||||
server disables server support for case insensitive clients, which can
|
||||
confuse all users of case insensitive clients contacting the server.
|
||||
Disabling this for a case sensitive client will cause the client to ask
|
||||
servers to behave case insensitively, which could cause confusion for
|
||||
users, but also probably no real harm. (default autoselects based on the
|
||||
case sensitivity of the file system containing the current working
|
||||
directory)]),
|
||||
[case "$enable_case_sensitivity" in
|
||||
yes | no | auto) ;;
|
||||
*)
|
||||
AC_MSG_ERROR([Unrecognized argument to --enable-case-sensitivity: \`$enable_case_sensitivity'. Acceptable values are \`yes', \`no', and \`auto'.])
|
||||
;;
|
||||
esac],
|
||||
[enable_case_sensitivity=auto])
|
||||
|
||||
acx_forced=' (forced)'
|
||||
AC_MSG_CHECKING([for a case sensitive file system])
|
||||
if test $enable_case_sensitivity = auto; then
|
||||
dnl
|
||||
dnl Check for a case insensitive filesystem, like Mac OS X and Windows have.
|
||||
dnl
|
||||
AC_CACHE_VAL([acx_cv_case_sensitive],
|
||||
[ rm -f ac_TEST_filenames_CASE_sensitive
|
||||
echo foo >ac_test_filenames_case_sensitive
|
||||
if test -f ac_TEST_filenames_CASE_sensitive; then
|
||||
acx_cv_case_sensitive=no
|
||||
else
|
||||
acx_cv_case_sensitive=yes
|
||||
fi
|
||||
rm ac_test_filenames_case_sensitive
|
||||
])
|
||||
enable_case_sensitivity=$acx_cv_case_sensitive
|
||||
acx_forced=
|
||||
fi
|
||||
AC_MSG_RESULT([$enable_case_sensitivity$acx_forced])
|
||||
if test $enable_case_sensitivity = no; then
|
||||
AC_DEFINE([FILENAMES_CASE_INSENSITIVE], [1],
|
||||
[Define if this executable will be running on case insensitive
|
||||
file systems. In the client case, this means that it will request
|
||||
that the server pretend to be case insensitive if it isn't
|
||||
already.])
|
||||
dnl Compile fncase.c (containing fncase() & fncmp()) to handle file name
|
||||
dnl comparisons on case insensitive filesystems.
|
||||
AC_LIBOBJ(fncase)
|
||||
fi
|
||||
|
||||
dnl
|
||||
dnl end --enable-case-sensitivity
|
||||
dnl
|
||||
|
||||
|
||||
dnl
|
||||
dnl begin --enable-encryption
|
||||
dnl
|
||||
|
||||
dnl
|
||||
dnl Use --enable-encryption to turn on encryption support, but ignore this
|
||||
dnl option unless either client or server is enabled.
|
||||
|
|
@ -757,7 +878,7 @@ if test "$enable_encryption" = yes; then
|
|||
[Define to enable encryption support.])
|
||||
else
|
||||
AC_MSG_WARN(
|
||||
[--enable-encryption is meaningless with neither the CVS client
|
||||
[--enable-encryption is meaningless when neither the CVS client
|
||||
nor the CVS server is enabled (--disable-client and --disable-server).])
|
||||
fi
|
||||
fi
|
||||
|
|
@ -849,6 +970,7 @@ dnl end --enable-*
|
|||
dnl
|
||||
|
||||
|
||||
|
||||
dnl For the moment we will assume that all systems which have
|
||||
dnl the unixyness to run configure are unixy enough to do the
|
||||
dnl PreservePermissions stuff. I have this sinking feeling that
|
||||
|
|
@ -856,11 +978,9 @@ dnl things won't be that simple, before long.
|
|||
dnl AC_DEFINE(PRESERVE_PERMISSIONS_SUPPORT, 1,
|
||||
dnl [Define if this system supports chown(), link(), and friends.])
|
||||
|
||||
dnl On cygwin32, we configure like a Unix system, but we use the
|
||||
dnl Windows support code in lib/fncase.c to handle the case
|
||||
dnl insensitive file system. We also need some support libraries. We
|
||||
dnl do this at the end so that the new libraries are added at the end
|
||||
dnl of LIBS.
|
||||
dnl On cygwin32, we configure like a Unix system, but we need some support
|
||||
dnl libraries. We do this at the end so that the new libraries are added at
|
||||
dnl the end of LIBS.
|
||||
dnl
|
||||
dnl FIXME: We should be trying to meet the autoconf ideal of checking for
|
||||
dnl the properties of the system rather than the name of the os here. In other
|
||||
|
|
@ -870,7 +990,6 @@ AC_CACHE_CHECK(for cygwin32, ccvs_cv_sys_cygwin32,
|
|||
[AC_TRY_COMPILE([], [return __CYGWIN32__;],
|
||||
ccvs_cv_sys_cygwin32=yes, ccvs_cv_sys_cygwin32=no)])
|
||||
if test $ccvs_cv_sys_cygwin32 = yes; then
|
||||
AC_LIBOBJ(fncase)
|
||||
LIBS="$LIBS -ladvapi32"
|
||||
|
||||
dnl On Windows you can only change file times if you can write to
|
||||
|
|
@ -898,6 +1017,7 @@ AC_CONFIG_FILES(contrib/log, [chmod +x contrib/log])
|
|||
AC_CONFIG_FILES(contrib/log_accum, [chmod +x contrib/log_accum])
|
||||
AC_CONFIG_FILES(contrib/mfpipe, [chmod +x contrib/mfpipe])
|
||||
AC_CONFIG_FILES(contrib/pvcs2rcs, [chmod +x contrib/pvcs2rcs])
|
||||
AC_CONFIG_FILES(contrib/rcs2log:contrib/rcs2log.sh, [chmod +x contrib/rcs2log])
|
||||
AC_CONFIG_FILES(contrib/rcslock, [chmod +x contrib/rcslock])
|
||||
AC_CONFIG_FILES(contrib/sccs2rcs, [chmod +x contrib/sccs2rcs])
|
||||
AC_CONFIG_FILES(src/cvsbug, [chmod +x src/cvsbug])
|
||||
|
|
@ -921,3 +1041,19 @@ AC_CONFIG_FILES([Makefile \
|
|||
|
||||
dnl and we're done
|
||||
AC_OUTPUT
|
||||
|
||||
|
||||
|
||||
# Report the state of this version of CVS if this is from dev.
|
||||
m4_bmatch(m4_defn([AC_PACKAGE_VERSION]), [[0-9]*\.[0-9]*\.[0-9]*\.[0-9]],
|
||||
[ cat <<EOF
|
||||
|
||||
You are about to use an unreleased version of CVS. Be sure to
|
||||
read the relevant mailing lists, most importantly <info-cvs@gnu.org>.
|
||||
|
||||
Below you will find information on the status of this version of CVS.
|
||||
|
||||
|
||||
EOF
|
||||
sed -n '/^\* Status/,$p' $srcdir/BUGS
|
||||
])
|
||||
|
|
|
|||
|
|
@ -1,3 +1,73 @@
|
|||
2004-01-30 Derek Price <derek@ximbiot.com>
|
||||
|
||||
Close issue #155.
|
||||
* log_accum.in: Remove unused variables.
|
||||
(Patch from (Ville Skyttä <scop@cvshome.org>.)
|
||||
|
||||
2003-10-14 Derek Price <derek@ximbiot.com>
|
||||
|
||||
Port to pedantic POSIX 1003.1-2001 hosts, such as Debian GNU/Linux
|
||||
testing with _POSIX2_VERSION=200112 in the environment.
|
||||
|
||||
* cvs2vendor.sh: Work with POSIX sort as well as with
|
||||
traditional sort.
|
||||
* rcs2sccs.sh, sccs2rcs.in: Likewise.
|
||||
(Patch from Paul Eggert <eggert@twinsun.com>.)
|
||||
|
||||
2003-09-26 Mark D. Baushke <mdb@cvshome.org>
|
||||
|
||||
* sccs2rcs.in: Use @AWK@ to avoid ancient Solaris awk (no support
|
||||
for the "?" operator). Add support for handling binary SCCS files.
|
||||
(Suggestion from Allan Schrum <agschrum@mindspring.com>.)
|
||||
|
||||
2003-08-06 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* commit_prep.in, log_accum.in: Port copious changes from Karl Fogel
|
||||
and CollabNet. These changes add features, generalize, and organize.
|
||||
|
||||
2003-07-07 Larry Jones <lawrence.jones@eds.com>
|
||||
|
||||
* rcs2log.1: New file from Paul Eggert <eggert@twinsun.com>
|
||||
via Eric Seidel <eseidel@apple.com>.
|
||||
|
||||
2003-06-20 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* Don't call CVS with the -l option since CVS no longer accepts it.
|
||||
(Suggestion from Matt Doar <matt@trpz.com>.)
|
||||
|
||||
2003-05-21 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* Makefile.in: Regenerate with Automake version 1.7.5.
|
||||
|
||||
2003-04-10 Larry Jones <lawrence.jones@eds.com>
|
||||
|
||||
* Makefile.in: Regenerated.
|
||||
|
||||
2003-03-24 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* Makefile.am: Update copyright notice.
|
||||
|
||||
* Makefile.in: Regenerated.
|
||||
|
||||
2003-02-25 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* rcs2log.sh: Import RedHat 8.0's use of mktemp from the CVS 1.11.2
|
||||
RPM. Use new MKTEMP variable from configure.
|
||||
* Makefile.in: Regenerated.
|
||||
|
||||
2003-02-24 Larry Jones <lawrence.jones@eds.com>
|
||||
and Donald Sharp <sharpd@cisco.com>
|
||||
|
||||
* check_cvs.in: Filenames with funky characters need to be quoted
|
||||
correctly. Also needed to modify regex due to locked revisions of
|
||||
files cause output to be different.
|
||||
|
||||
* check_cvs.in: Fixed multiple symlinks in your cvsroot,
|
||||
improved CVSROOT/CVSROOT handling (Patch from Shlomo Reinstein
|
||||
<shlomo.reinstein@intel.com). Fixed retrieving revisions of ,v
|
||||
files. Added passwd, readers, and writers to list of files to
|
||||
ignore and sorted list to match the one in src/mkmodules.c.
|
||||
|
||||
2002-12-16 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvs_acls.in: Fix split loop error with Perl 5.8.0.
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
## Process this file with automake to produce Makefile.in
|
||||
# Makefile for GNU CVS contributed sources.
|
||||
# Do not use this makefile directly, but only from `../Makefile'.
|
||||
# Copyright (C) 1986, 1988-1990 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
|
||||
# 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
# Makefile.in generated by automake 1.6.3 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.7.9 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
|
|
@ -16,7 +16,9 @@
|
|||
|
||||
# Makefile for GNU CVS contributed sources.
|
||||
# Do not use this makefile directly, but only from `../Makefile'.
|
||||
# Copyright (C) 1986, 1988-1990 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
|
||||
# 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -27,79 +29,117 @@
|
|||
# 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.
|
||||
SHELL = @SHELL@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
|
||||
bindir = @bindir@
|
||||
sbindir = @sbindir@
|
||||
libexecdir = @libexecdir@
|
||||
datadir = @datadir@
|
||||
sysconfdir = @sysconfdir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
localstatedir = @localstatedir@
|
||||
libdir = @libdir@
|
||||
infodir = @infodir@
|
||||
mandir = @mandir@
|
||||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ..
|
||||
|
||||
ACLOCAL = @ACLOCAL@
|
||||
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@
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
|
||||
EXEEXT = @EXEEXT@
|
||||
OBJEXT = @OBJEXT@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CSH = @CSH@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EDITOR = @EDITOR@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
KRB4 = @KRB4@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MAKE_TARGETS_IN_VPATH_FALSE = @MAKE_TARGETS_IN_VPATH_FALSE@
|
||||
MAKE_TARGETS_IN_VPATH_TRUE = @MAKE_TARGETS_IN_VPATH_TRUE@
|
||||
MKTEMP = @MKTEMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
PR = @PR@
|
||||
PS2PDF = @PS2PDF@
|
||||
RANLIB = @RANLIB@
|
||||
ROFF = @ROFF@
|
||||
SENDMAIL = @SENDMAIL@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
TEXI2DVI = @TEXI2DVI@
|
||||
VERSION = @VERSION@
|
||||
YACC = @YACC@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||
ac_ct_STRIP = @ac_ct_STRIP@
|
||||
ac_prefix_program = @ac_prefix_program@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
bindir = @bindir@
|
||||
build_alias = @build_alias@
|
||||
datadir = @datadir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host_alias = @host_alias@
|
||||
includedir = @includedir@
|
||||
includeopt = @includeopt@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
oldincludedir = @oldincludedir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
|
||||
contribdir = $(pkgdatadir)/contrib
|
||||
|
||||
|
|
@ -155,26 +195,28 @@ CLEANFILES = $(bin_SCRIPTS) $(contrib_SCRIPTS)
|
|||
|
||||
SUFFIXES = .sh
|
||||
subdir = contrib
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
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
|
||||
log_accum mfpipe pvcs2rcs rcs2log rcslock sccs2rcs
|
||||
SCRIPTS = $(contrib_SCRIPTS)
|
||||
|
||||
DIST_SOURCES =
|
||||
DATA = $(contrib_DATA)
|
||||
|
||||
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
|
||||
DIST_COMMON = README $(srcdir)/Makefile.in ChangeLog Makefile.am \
|
||||
check_cvs.in clmerge.in cln_hist.in commit_prep.in cvs_acls.in \
|
||||
log.in log_accum.in mfpipe.in pvcs2rcs.in rcs2log.sh rcslock.in \
|
||||
sccs2rcs.in
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .sh
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu contrib/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/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)/$@
|
||||
|
|
@ -194,6 +236,8 @@ mfpipe: $(top_builddir)/config.status mfpipe.in
|
|||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
|
||||
pvcs2rcs: $(top_builddir)/config.status pvcs2rcs.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
|
||||
rcs2log: $(top_builddir)/config.status rcs2log.sh
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
|
||||
rcslock: $(top_builddir)/config.status rcslock.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
|
||||
sccs2rcs: $(top_builddir)/config.status sccs2rcs.in
|
||||
|
|
@ -240,13 +284,22 @@ uninstall-contribDATA:
|
|||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
ctags: CTAGS
|
||||
CTAGS:
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
top_distdir = ..
|
||||
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@list='$(DISTFILES)'; for file in $$list; do \
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
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 \
|
||||
|
|
@ -272,7 +325,6 @@ all-am: Makefile $(SCRIPTS) $(DATA)
|
|||
|
||||
installdirs:
|
||||
$(mkinstalldirs) $(DESTDIR)$(contribdir) $(DESTDIR)$(contribdir)
|
||||
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
|
|
@ -284,7 +336,7 @@ install-am: all-am
|
|||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
INSTALL_STRIP_FLAG=-s \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
|
@ -293,7 +345,7 @@ clean-generic:
|
|||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||
-rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
|
|
@ -303,7 +355,7 @@ clean: clean-am
|
|||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
|
@ -326,13 +378,21 @@ install-man:
|
|||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-contribDATA uninstall-contribSCRIPTS \
|
||||
uninstall-info-am uninstall-local
|
||||
|
||||
|
|
@ -343,7 +403,7 @@ uninstall-am: uninstall-contribDATA uninstall-contribSCRIPTS \
|
|||
install-exec-am install-info install-info-am install-man \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-generic uninstall uninstall-am \
|
||||
mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \
|
||||
uninstall-contribDATA uninstall-contribSCRIPTS \
|
||||
uninstall-info-am uninstall-local
|
||||
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@ my $verbose = 0;
|
|||
my $total_revisions;
|
||||
my $total_interesting_revisions;
|
||||
my $total_files;
|
||||
my @ignore_files;
|
||||
|
||||
######################################################################
|
||||
# SUBROUTINES #
|
||||
|
|
@ -121,12 +122,19 @@ if( exists( $ENV{ CVSDEBUGEDIT } ) )
|
|||
}
|
||||
|
||||
$directory_to_look_at = $ENV{ CVSROOT };
|
||||
if( -l $directory_to_look_at )
|
||||
my $sym_count = 0;
|
||||
while( -l $directory_to_look_at )
|
||||
{
|
||||
$directory_to_look_at = readlink( $directory_to_look_at );
|
||||
$sym_count += 1;
|
||||
if( $sym_count > 5 )
|
||||
{
|
||||
die( "Encountered too many symlinks for $ENV{ CVSROOT }\n" );
|
||||
}
|
||||
}
|
||||
|
||||
print( "Processing: $directory_to_look_at\n" ) if( $verbose );
|
||||
@ignore_files = &get_ignore_files_from_cvsroot( $directory_to_look_at );
|
||||
find( \&process_file, $directory_to_look_at );
|
||||
|
||||
my $num_files = @list_of_broken_files;
|
||||
|
|
@ -184,34 +192,6 @@ sub process_file
|
|||
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 )
|
||||
{
|
||||
|
|
@ -322,18 +302,29 @@ sub look_at_cvs_file
|
|||
sub get_history
|
||||
{
|
||||
my( $file ) = @_;
|
||||
$file =~ s/(["\$`\\])/\\$1/g;
|
||||
my @revisions;
|
||||
my $revision;
|
||||
|
||||
my $ignore = 1;
|
||||
my $save_ = $_;
|
||||
|
||||
open( FILE, "rlog -N '$file' 2>&1 |" ) or die( "unable to run rlog, help" );
|
||||
open( FILE, "rlog -N \"$file\" 2>&1 |" ) or die( "unable to run rlog, help" );
|
||||
|
||||
while( <FILE> )
|
||||
{
|
||||
if( ( $revision ) = /^revision (.*)$/ )
|
||||
{
|
||||
push( @revisions, $revision );
|
||||
#rlog outputs a "----" line before the actual revision
|
||||
#without this we'll pick up peoples comments if they
|
||||
#happen to start with revision
|
||||
if( /^----------------------------$/ )
|
||||
{
|
||||
$ignore = 0;
|
||||
next;
|
||||
}
|
||||
|
||||
if( ( !$ignore ) && ( ( $revision ) = m/^revision (\S+)/ ) )
|
||||
{
|
||||
push( @revisions, $revision );
|
||||
$ignore = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -369,9 +360,6 @@ sub get_history
|
|||
#
|
||||
# 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.
|
||||
|
|
@ -383,11 +371,12 @@ sub get_history
|
|||
sub check_revision
|
||||
{
|
||||
my( $file, $revision ) = @_;
|
||||
$file =~ s/(["\$`\\])/\\$1/g;
|
||||
|
||||
my $cwd = getcwd();
|
||||
chdir( "/tmp" );
|
||||
|
||||
my $ret_code = 0xffff & system( "cvs -l co -n -p -r $revision '$file' > /dev/null 2>&1" );
|
||||
my $ret_code = 0xffff & system( "cvs co -n -p -r $revision \"$file\" > /dev/null 2>&1" );
|
||||
|
||||
chdir( $cwd );
|
||||
return( 1 ) if ( $ret_code == 0 );
|
||||
|
|
@ -753,3 +742,81 @@ sub branch_split
|
|||
|
||||
return( $branch, pop( @split_rev ) );
|
||||
}
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# NAME :
|
||||
# get_ignore_files_from_cvsroot
|
||||
#
|
||||
# PURPOSE :
|
||||
# Retrieve the list of files from the CVSROOT/ directory
|
||||
# that should be ignored.
|
||||
# These are the regular files (e.g., commitinfo, loginfo)
|
||||
# and those specified in the checkoutlist file.
|
||||
#
|
||||
# PARAMETERS :
|
||||
# The CVSROOT
|
||||
#
|
||||
# GLOBALS :
|
||||
# NONE
|
||||
#
|
||||
# RETURNS :
|
||||
# @ignore - the list of files to ignore
|
||||
#
|
||||
# COMMENTS :
|
||||
# NONE
|
||||
#
|
||||
######################################################################
|
||||
sub get_ignore_files_from_cvsroot {
|
||||
my( $cvsroot ) = @_;
|
||||
my @ignore = ( 'CVS\/fileattr$',
|
||||
'^CVSROOT\/loginfo',
|
||||
'^CVSROOT\/.#loginfo',
|
||||
'^CVSROOT\/rcsinfo',
|
||||
'^CVSROOT\/.#rcsinfo',
|
||||
'^CVSROOT\/editinfo',
|
||||
'^CVSROOT\/.#editinfo',
|
||||
'^CVSROOT\/verifymsg',
|
||||
'^CVSROOT\/.#verifymsg',
|
||||
'^CVSROOT\/commitinfo',
|
||||
'^CVSROOT\/.#commitinfo',
|
||||
'^CVSROOT\/taginfo',
|
||||
'^CVSROOT\/.#taginfo',
|
||||
'^CVSROOT\/cvsignore',
|
||||
'^CVSROOT\/.#cvsignore',
|
||||
'^CVSROOT\/checkoutlist',
|
||||
'^CVSROOT\/.#checkoutlist',
|
||||
'^CVSROOT\/cvswrappers',
|
||||
'^CVSROOT\/.#cvswrappers',
|
||||
'^CVSROOT\/notify',
|
||||
'^CVSROOT\/.#notify',
|
||||
'^CVSROOT\/modules',
|
||||
'^CVSROOT\/.#modules',
|
||||
'^CVSROOT\/readers',
|
||||
'^CVSROOT\/.#readers',
|
||||
'^CVSROOT\/writers',
|
||||
'^CVSROOT\/.#writers',
|
||||
'^CVSROOT\/passwd',
|
||||
'^CVSROOT\/config',
|
||||
'^CVSROOT\/.#config',
|
||||
'^CVSROOT\/val-tags',
|
||||
'^CVSROOT\/.#val-tags',
|
||||
'^CVSROOT\/history' );
|
||||
my $checkoutlist_file = "$cvsroot\/CVSROOT\/checkoutlist";
|
||||
open( CHECKOUTLIST, "<$cvsroot\/CVSROOT\/checkoutlist" )
|
||||
or die( "Unable to read checkoutlist file: $!\n" );
|
||||
|
||||
my @list = <CHECKOUTLIST>;
|
||||
chomp( @list );
|
||||
close( CHECKOUTLIST )
|
||||
or die( "Unable to close checkoutlist file: $!\n" );
|
||||
|
||||
foreach my $line( @list )
|
||||
{
|
||||
next if( $line =~ /^#/ || $line =~ /^$/ );
|
||||
if( $line =~ /^\s*(\S*)\s*/ ) { $line = $1 };
|
||||
push( @ignore, "^CVSROOT\/$line", "^CVSROOT\/\.#$line" );
|
||||
}
|
||||
|
||||
return @ignore;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,215 +1,56 @@
|
|||
#! @PERL@
|
||||
# -*-Perl-*-
|
||||
#
|
||||
#
|
||||
# Perl filter to handle pre-commit checking of files. This program
|
||||
# records the last directory where commits will be taking place for
|
||||
# use by the log_accum.pl script. For new files, it forces the
|
||||
# existence of a RCS "Id" keyword in the first ten lines of the file.
|
||||
# For existing files, it checks version number in the "Id" line to
|
||||
# prevent losing changes because an old version of a file was copied
|
||||
# into the direcory.
|
||||
#
|
||||
# Possible future enhancements:
|
||||
#
|
||||
# Check for cruft left by unresolved conflicts. Search for
|
||||
# "^<<<<<<<$", "^-------$", and "^>>>>>>>$".
|
||||
#
|
||||
# Look for a copyright and automagically update it to the
|
||||
# current year. [[ bad idea! -- woods ]]
|
||||
# use by the log_accum.pl script.
|
||||
#
|
||||
# IMPORTANT: this script interacts with log_accum, they have to agree
|
||||
# on the tmpfile name to use. See $LAST_FILE below.
|
||||
#
|
||||
# Contributed by David Hampton <hampton@cisco.com>
|
||||
# Stripped to minimum by Roy Fielding
|
||||
#
|
||||
# Hacked on lots by Greg A. Woods <woods@web.net>
|
||||
############################################################
|
||||
$TMPDIR = $ENV{'TMPDIR'} || '/tmp';
|
||||
$FILE_PREFIX = '#cvs.';
|
||||
|
||||
#
|
||||
# Configurable options
|
||||
#
|
||||
# If see a "-u $USER" argument, then destructively remove it from the
|
||||
# argument list, so $ARGV[0] will be the repository dir again, as it
|
||||
# used to be before we added the -u flag.
|
||||
if ($ARGV[0] eq '-u') {
|
||||
shift @ARGV;
|
||||
$CVS_USERNAME = shift (@ARGV);
|
||||
}
|
||||
|
||||
# Constants (remember to protect strings from RCS keyword substitution)
|
||||
#
|
||||
$LAST_FILE = "/tmp/#cvs.lastdir"; # must match name in log_accum.pl
|
||||
$ENTRIES = "CVS/Entries";
|
||||
|
||||
# Patterns to find $Log keywords in files
|
||||
#
|
||||
$LogString1 = "\\\$\\Log: .* \\\$";
|
||||
$LogString2 = "\\\$\\Log\\\$";
|
||||
$NoLog = "%s - contains an RCS \$Log keyword. It must not!\n";
|
||||
|
||||
# pattern to match an RCS Id keyword line with an existing ID
|
||||
#
|
||||
$IDstring = "\"@\\(#\\)[^:]*:.*\\\$\Id: .*\\\$\"";
|
||||
$NoId = "
|
||||
%s - Does not contain a properly formatted line with the keyword \"Id:\".
|
||||
I.e. no lines match \"" . $IDstring . "\".
|
||||
Please see the template files for an example.\n";
|
||||
|
||||
# pattern to match an RCS Id keyword line for a new file (i.e. un-expanded)
|
||||
#
|
||||
$NewId = "\"@(#)[^:]*:.*\\$\Id\\$\"";
|
||||
|
||||
$NoName = "
|
||||
%s - The ID line should contain only \"@(#)module/path:\$Name\$:\$\Id\$\"
|
||||
for a newly created file.\n";
|
||||
|
||||
$BadName = "
|
||||
%s - The file name '%s' in the ID line does not match
|
||||
the actual filename.\n";
|
||||
|
||||
$BadVersion = "
|
||||
%s - How dare you!!! You replaced your copy of the file '%s',
|
||||
which was based upon version %s, with an %s version based
|
||||
upon %s. Please move your '%s' out of the way, perform an
|
||||
update to get the current version, and them merge your changes
|
||||
into that file, then try the commit again.\n";
|
||||
|
||||
#
|
||||
# Subroutines
|
||||
#
|
||||
# This needs to match the corresponding var in log_accum.pl, including
|
||||
# the appending of the pgrp and username suffixes (see uses of this
|
||||
# var farther down).
|
||||
$LAST_FILE = "$TMPDIR/${FILE_PREFIX}lastdir";
|
||||
|
||||
sub write_line {
|
||||
local($filename, $line) = @_;
|
||||
open(FILE, ">$filename") || die("Cannot open $filename, stopped");
|
||||
my ($filename, $line) = @_;
|
||||
|
||||
# A check of some kind is needed here, but the rules aren't apparent
|
||||
# at the moment:
|
||||
|
||||
# foreach($filename, $line){
|
||||
# $_ =~ m#^([-\@\w.\#]+)$#;
|
||||
# $_ = $1;
|
||||
# }
|
||||
|
||||
open(FILE, ">$filename") || die("Cannot open $filename: $!\n");
|
||||
print(FILE $line, "\n");
|
||||
close(FILE);
|
||||
}
|
||||
|
||||
sub check_version {
|
||||
local($i, $id, $rname, $version);
|
||||
local($filename, $cvsversion) = @_;
|
||||
|
||||
open(FILE, "<$filename") || return(0);
|
||||
|
||||
@all_lines = ();
|
||||
$idpos = -1;
|
||||
$newidpos = -1;
|
||||
for ($i = 0; <FILE>; $i++) {
|
||||
chop;
|
||||
push(@all_lines, $_);
|
||||
if ($_ =~ /$IDstring/) {
|
||||
$idpos = $i;
|
||||
}
|
||||
if ($_ =~ /$NewId/) {
|
||||
$newidpos = $i;
|
||||
}
|
||||
}
|
||||
|
||||
if (grep(/$LogString1/, @all_lines) || grep(/$LogString2/, @all_lines)) {
|
||||
print STDERR sprintf($NoLog, $filename);
|
||||
return(1);
|
||||
}
|
||||
|
||||
if ($debug != 0) {
|
||||
print STDERR sprintf("file = %s, version = %d.\n", $filename, $cvsversion{$filename});
|
||||
}
|
||||
|
||||
if ($cvsversion{$filename} == 0) {
|
||||
if ($newidpos != -1 && $all_lines[$newidpos] !~ /$NewId/) {
|
||||
print STDERR sprintf($NoName, $filename);
|
||||
return(1);
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
if ($idpos == -1) {
|
||||
print STDERR sprintf($NoId, $filename);
|
||||
return(1);
|
||||
}
|
||||
|
||||
$line = $all_lines[$idpos];
|
||||
$pos = index($line, "Id: ");
|
||||
if ($debug != 0) {
|
||||
print STDERR sprintf("%d in '%s'.\n", $pos, $line);
|
||||
}
|
||||
($id, $rname, $version) = split(' ', substr($line, $pos));
|
||||
if ($rname ne "$filename,v") {
|
||||
print STDERR sprintf($BadName, $filename, substr($rname, 0, length($rname)-2));
|
||||
return(1);
|
||||
}
|
||||
if ($cvsversion{$filename} < $version) {
|
||||
print STDERR sprintf($BadVersion, $filename, $filename, $cvsversion{$filename},
|
||||
"newer", $version, $filename);
|
||||
return(1);
|
||||
}
|
||||
if ($cvsversion{$filename} > $version) {
|
||||
print STDERR sprintf($BadVersion, $filename, $filename, $cvsversion{$filename},
|
||||
"older", $version, $filename);
|
||||
return(1);
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
#
|
||||
# Main Body
|
||||
#
|
||||
|
||||
$id = getpgrp(); # You *must* use a shell that does setpgrp()!
|
||||
|
||||
# Check each file (except dot files) for an RCS "Id" keyword.
|
||||
#
|
||||
$check_id = 0;
|
||||
|
||||
# Record the directory for later use by the log_accumulate stript.
|
||||
#
|
||||
$record_directory = 0;
|
||||
|
||||
# parse command line arguments
|
||||
#
|
||||
while (@ARGV) {
|
||||
$arg = shift @ARGV;
|
||||
|
||||
if ($arg eq '-d') {
|
||||
$debug = 1;
|
||||
print STDERR "Debug turned on...\n";
|
||||
} elsif ($arg eq '-c') {
|
||||
$check_id = 1;
|
||||
} elsif ($arg eq '-r') {
|
||||
$record_directory = 1;
|
||||
} else {
|
||||
push(@files, $arg);
|
||||
}
|
||||
}
|
||||
|
||||
$directory = shift @files;
|
||||
|
||||
if ($debug != 0) {
|
||||
print STDERR "dir - ", $directory, "\n";
|
||||
print STDERR "files - ", join(":", @files), "\n";
|
||||
print STDERR "id - ", $id, "\n";
|
||||
}
|
||||
|
||||
# Suck in the CVS/Entries file
|
||||
#
|
||||
open(ENTRIES, $ENTRIES) || die("Cannot open $ENTRIES.\n");
|
||||
while (<ENTRIES>) {
|
||||
local($filename, $version) = split('/', substr($_, 1));
|
||||
$cvsversion{$filename} = $version;
|
||||
}
|
||||
|
||||
# Now check each file name passed in, except for dot files. Dot files
|
||||
# are considered to be administrative files by this script.
|
||||
#
|
||||
if ($check_id != 0) {
|
||||
$failed = 0;
|
||||
foreach $arg (@files) {
|
||||
if (index($arg, ".") == 0) {
|
||||
next;
|
||||
}
|
||||
$failed += &check_version($arg);
|
||||
}
|
||||
if ($failed) {
|
||||
print STDERR "\n";
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
# Record this directory as the last one checked. This will be used
|
||||
# by the log_accumulate script to determine when it is processing
|
||||
# the final directory of a multi-directory commit.
|
||||
#
|
||||
if ($record_directory != 0) {
|
||||
&write_line("$LAST_FILE.$id", $directory);
|
||||
}
|
||||
$id = getpgrp();
|
||||
|
||||
&write_line("$LAST_FILE.$id.$CVS_USERNAME", $ARGV[0]);
|
||||
|
||||
exit(0);
|
||||
|
|
|
|||
|
|
@ -42,6 +42,11 @@ rm -f $revfile
|
|||
commentfile=/tmp/cvs2vendor_$$_comment
|
||||
rm -f $commentfile
|
||||
|
||||
if sort -k 1,1 /dev/null 2>/dev/null
|
||||
then sort_each_field='-k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9'
|
||||
else sort_each_field='+0 +1 +2 +3 +4 +5 +6 +7 +8'
|
||||
fi
|
||||
|
||||
srcdirs=`cd $tsrcdir && find . -type d -print | sed 's~^\.[/]*~~'`
|
||||
|
||||
# the "" is a trick to get $tsrcdir itself without resorting to '.'
|
||||
|
|
@ -68,7 +73,7 @@ for ldir in "" $srcdirs; do
|
|||
fi
|
||||
|
||||
# work on each rev of that file in ascending order
|
||||
rlog $file | grep "^revision [0-9][0-9]*\." | awk '{print $2}' | sed -e 's/\./ /g' | sort -n -u +0 +1 +2 +3 +4 +5 +6 +7 +8 | sed -e 's/ /./g' > $revfile
|
||||
rlog $file | grep "^revision [0-9][0-9]*\." | awk '{print $2}' | sed -e 's/\./ /g' | sort -n -u $sort_each_field | sed -e 's/ /./g' > $revfile
|
||||
|
||||
for rev in `cat $revfile`; do
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -31,7 +31,7 @@ Report bugs to <bug-gnu-emacs@gnu.org>.'
|
|||
|
||||
Id='$Id: rcs2log,v 1.48 2001/09/05 23:07:46 eggert Exp $'
|
||||
|
||||
# Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2001
|
||||
# Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2001, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
|
|
@ -49,13 +49,16 @@ Id='$Id: rcs2log,v 1.48 2001/09/05 23:07:46 eggert Exp $'
|
|||
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
# Boston, MA 02111-1307, USA.
|
||||
|
||||
Copyright='Copyright 2001 Free Software Foundation, Inc.
|
||||
Copyright='Copyright 1992-2003 Free Software Foundation, Inc.
|
||||
This program comes with NO WARRANTY, to the extent permitted by law.
|
||||
You may redistribute copies of this program
|
||||
under the terms of the GNU General Public License.
|
||||
For more information about these matters, see the files named COPYING.
|
||||
Author: Paul Eggert <eggert@twinsun.com>'
|
||||
|
||||
# functions
|
||||
@MKTEMP_SH_FUNCTION@
|
||||
|
||||
# Use the traditional C locale.
|
||||
LANG=C
|
||||
LANGUAGE=C
|
||||
|
|
@ -79,8 +82,10 @@ nl='
|
|||
# Parse options.
|
||||
|
||||
# defaults
|
||||
: ${MKTEMP="@MKTEMP@"}
|
||||
: ${AWK=awk}
|
||||
: ${TMPDIR=/tmp}
|
||||
|
||||
changelog=ChangeLog # change log file name
|
||||
datearg= # rlog date option
|
||||
hostname= # name of local host (if empty, will deduce it later)
|
||||
|
|
@ -182,11 +187,11 @@ month_data='
|
|||
m[9]="Oct"; m[10]="Nov"; m[11]="Dec"
|
||||
'
|
||||
|
||||
logdir=$TMPDIR/rcs2log$$
|
||||
logdir=`$MKTEMP -d $TMPDIR/rcs2log.XXXXXX`
|
||||
test -n "$logdir" || exit
|
||||
llogout=$logdir/l
|
||||
trap exit 1 2 13 15
|
||||
trap "rm -fr $logdir 2>/dev/null" 0
|
||||
(umask 077 && exec mkdir $logdir) || exit
|
||||
|
||||
# If no rlog-format log file is given, generate one into $rlogfile.
|
||||
case $rlogfile in
|
||||
|
|
|
|||
|
|
@ -42,13 +42,17 @@ cp $tmpfile $sedfile
|
|||
############################################################
|
||||
# Loop over every RCS file in RCS dir
|
||||
#
|
||||
if sort -k 1,1 /dev/null 2>/dev/null
|
||||
then sort_each_field='-k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9'
|
||||
else sort_each_field='+0 +1 +2 +3 +4 +5 +6 +7 +8'
|
||||
fi
|
||||
for vfile in *,v; do
|
||||
# get rid of the ",v" at the end of the name
|
||||
file=`echo $vfile | sed -e 's/,v$//'`
|
||||
|
||||
# work on each rev of that file in ascending order
|
||||
firsttime=1
|
||||
rlog $file | grep "^revision [0-9][0-9]*\." | awk '{print $2}' | sed -e 's/\./ /g' | sort -n -u +0 +1 +2 +3 +4 +5 +6 +7 +8 | sed -e 's/ /./g' > $revfile
|
||||
rlog $file | grep "^revision [0-9][0-9]*\." | awk '{print $2}' | sed -e 's/\./ /g' | sort -n -u $sort_each_field | sed -e 's/ /./g' > $revfile
|
||||
for rev in `cat $revfile`; do
|
||||
if [ $? != 0 ]; then
|
||||
echo ERROR - revision
|
||||
|
|
|
|||
|
|
@ -42,6 +42,12 @@
|
|||
# ...!harvard!cg-atla!viewlog!kenstir
|
||||
#
|
||||
# Various hacks made by Brian Berliner before inclusion in CVS contrib area.
|
||||
#
|
||||
# Modified to detect SCCS binary files. If binary, skip the keyword
|
||||
# substitution and flag the RCS file as binary (using rcs -i -kb).
|
||||
# -Allan G. Schrum schrum@ofsoptics.com agschrum@mindspring.com
|
||||
# Fri Sep 26 10:40:40 EDT 2003
|
||||
#
|
||||
|
||||
|
||||
#we'll assume the user set up the path correctly
|
||||
|
|
@ -163,6 +169,13 @@ end
|
|||
|
||||
onintr ERROR
|
||||
|
||||
sort -k 1,1 /dev/null >& /dev/null
|
||||
if ($status == 0) then
|
||||
set sort_each_field = '-k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9'
|
||||
else
|
||||
set sort_each_field = '+0 +1 +2 +3 +4 +5 +6 +7 +8'
|
||||
endif
|
||||
|
||||
############################################################
|
||||
# Loop over every s-file in SCCS dir
|
||||
#
|
||||
|
|
@ -172,7 +185,18 @@ foreach sfile (SCCS/s.*)
|
|||
|
||||
# work on each rev of that file in ascending order
|
||||
set firsttime = 1
|
||||
sccs prs $file | grep "^D " | awk '{print $2}' | sed -e 's/\./ /g' | sort -n -u +0 +1 +2 +3 +4 +5 +6 +7 +8 | sed -e 's/ /./g' > $revfile
|
||||
|
||||
# Only scan the file up to the "I" keyword, then see if
|
||||
# the "f" keyword is set to binary. The SCCS file has
|
||||
# <ctrl>-aI denoting the start of the file (or end of header).
|
||||
set binary = (`sed -e '/^.I/,$d' < $sfile | grep '^.f e 1$'`)
|
||||
#if ($#binary) then
|
||||
# echo This is a binary file
|
||||
#else
|
||||
# echo This is not a binary file
|
||||
#endif
|
||||
|
||||
sccs prs $file | grep "^D " | @AWK@ '{print $2}' | sed -e 's/\./ /g' | sort -n -u $sort_each_field | sed -e 's/ /./g' > $revfile
|
||||
foreach rev (`cat $revfile`)
|
||||
if ($status != 0) goto ERROR
|
||||
|
||||
|
|
@ -181,23 +205,34 @@ foreach sfile (SCCS/s.*)
|
|||
# Is the substr stuff and the +0 in the following awk script really
|
||||
# necessary? It seems to me that if we didn't find the date format
|
||||
# we expected in the output we have other problems.
|
||||
set date = `sccs prs -r$rev $file | awk '/^D / {print (substr($3,0,2)+0<70?20:19) $3, $4; exit}'`
|
||||
set author = `sccs prs -r$rev $file | awk '/^D / {print $5; exit}'`
|
||||
# Note: Solaris awk does not like the following line. Use gawk
|
||||
# mawk, or nawk instead.
|
||||
set date = `sccs prs -r$rev $file | @AWK@ '/^D / {print (substr($3,0,2)+0<70?20:19) $3, $4; exit}'`
|
||||
set author = `sccs prs -r$rev $file | @AWK@ '/^D / {print $5; exit}'`
|
||||
echo ""
|
||||
echo "==> file $file, rev=$rev, date=$date, author=$author"
|
||||
sccs edit -r$rev $file >>& $logfile
|
||||
if ($status != 0) goto ERROR
|
||||
echo checked out of SCCS
|
||||
|
||||
# add RCS keywords in place of SCCS keywords
|
||||
sed -f $sedfile $file > $tmpfile
|
||||
if ($status != 0) goto ERROR
|
||||
echo performed keyword substitutions
|
||||
cp $tmpfile $file
|
||||
# add RCS keywords in place of SCCS keywords (only if not binary)
|
||||
if ($#binary == 0) then
|
||||
sed -f $sedfile $file > $tmpfile
|
||||
if ($status != 0) goto ERROR
|
||||
echo performed keyword substitutions
|
||||
cp $tmpfile $file
|
||||
endif
|
||||
|
||||
# check file into RCS
|
||||
if ($firsttime) then
|
||||
set firsttime = 0
|
||||
|
||||
if ($#binary) then
|
||||
echo this is a binary file
|
||||
# Mark initial, empty file as binary
|
||||
rcs -i -kb -t$emptyfile $file
|
||||
endif
|
||||
|
||||
if ($nodesc) then
|
||||
echo about to do ci
|
||||
echo ci -f -r$rev -d"$date" -w$author -t$emptyfile $file
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#! /bin/sh
|
||||
|
||||
# depcomp - compile a program generating dependencies as side-effects
|
||||
# Copyright 1999, 2000 Free Software Foundation, Inc.
|
||||
# Copyright 1999, 2000, 2003 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -18,6 +18,11 @@
|
|||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
|
||||
|
||||
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||
|
|
@ -26,7 +31,16 @@ if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
|||
fi
|
||||
# `libtool' can also be set to `yes' or `no'.
|
||||
|
||||
depfile=${depfile-`echo "$object" | sed 's,\([^/]*\)$,.deps/\1,;s/\.\([^.]*\)$/.P\1/'`}
|
||||
if test -z "$depfile"; then
|
||||
base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
|
||||
dir=`echo "$object" | sed 's,/.*$,/,'`
|
||||
if test "$dir" = "$object"; then
|
||||
dir=
|
||||
fi
|
||||
# FIXME: should be _deps on DOS.
|
||||
depfile="$dir.deps/$base"
|
||||
fi
|
||||
|
||||
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||
|
||||
rm -f "$tmpdepfile"
|
||||
|
|
@ -50,8 +64,9 @@ fi
|
|||
case "$depmode" in
|
||||
gcc3)
|
||||
## gcc 3 implements dependency tracking that does exactly what
|
||||
## we want. Yay!
|
||||
"$@" -MT "$object" -MF "$tmpdepfile" -MD -MP
|
||||
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
||||
## it if -MD -MP comes after the -MF stuff. Hmm.
|
||||
"$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
|
|
@ -157,19 +172,25 @@ sgi)
|
|||
|
||||
aix)
|
||||
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||
# in a .u file. This file always lives in the current directory.
|
||||
# Also, the AIX compiler puts `$object:' at the start of each line;
|
||||
# $object doesn't have directory information.
|
||||
stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`
|
||||
# in a .u file. In older versions, this file always lives in the
|
||||
# current directory. Also, the AIX compiler puts `$object:' at the
|
||||
# start of each line; $object doesn't have directory information.
|
||||
# Version 6 uses the directory in both cases.
|
||||
stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
|
||||
tmpdepfile="$stripped.u"
|
||||
outname="$stripped.o"
|
||||
if test "$libtool" = yes; then
|
||||
"$@" -Wc,-M
|
||||
else
|
||||
"$@" -M
|
||||
fi
|
||||
|
||||
stat=$?
|
||||
|
||||
if test -f "$tmpdepfile"; then :
|
||||
else
|
||||
stripped=`echo "$stripped" | sed 's,^.*/,,'`
|
||||
tmpdepfile="$stripped.u"
|
||||
fi
|
||||
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
|
|
@ -177,6 +198,7 @@ aix)
|
|||
fi
|
||||
|
||||
if test -f "$tmpdepfile"; then
|
||||
outname="$stripped.o"
|
||||
# Each line is of the form `foo.o: dependent.h'.
|
||||
# Do two passes, one to just change these to
|
||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||
|
|
@ -191,29 +213,80 @@ aix)
|
|||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
tru64)
|
||||
# The Tru64 AIX compiler uses -MD to generate dependencies as a side
|
||||
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
|
||||
# Subdirectories are respected.
|
||||
icc)
|
||||
# Intel's C compiler understands `-MD -MF file'. However on
|
||||
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
|
||||
# ICC 7.0 will fill foo.d with something like
|
||||
# foo.o: sub/foo.c
|
||||
# foo.o: sub/foo.h
|
||||
# which is wrong. We want:
|
||||
# sub/foo.o: sub/foo.c
|
||||
# sub/foo.o: sub/foo.h
|
||||
# sub/foo.c:
|
||||
# sub/foo.h:
|
||||
# ICC 7.1 will output
|
||||
# foo.o: sub/foo.c sub/foo.h
|
||||
# and will wrap long lines using \ :
|
||||
# foo.o: sub/foo.c ... \
|
||||
# sub/foo.h ... \
|
||||
# ...
|
||||
|
||||
"$@" -MD -MF "$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
# Each line is of the form `foo.o: dependent.h',
|
||||
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
|
||||
# Do two passes, one to just change these to
|
||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
|
||||
# Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
# correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
|
||||
sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
tru64)
|
||||
# The Tru64 compiler uses -MD to generate dependencies as a side
|
||||
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
|
||||
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||
# dependencies in `foo.d' instead, so we check for that too.
|
||||
# Subdirectories are respected.
|
||||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||
test "x$dir" = "x$object" && dir=
|
||||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||
|
||||
tmpdepfile="$object.d"
|
||||
if test "$libtool" = yes; then
|
||||
tmpdepfile1="$dir.libs/$base.lo.d"
|
||||
tmpdepfile2="$dir.libs/$base.d"
|
||||
"$@" -Wc,-MD
|
||||
else
|
||||
tmpdepfile1="$dir$base.o.d"
|
||||
tmpdepfile2="$dir$base.d"
|
||||
"$@" -MD
|
||||
fi
|
||||
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
if test -f "$tmpdepfile1"; then
|
||||
tmpdepfile="$tmpdepfile1"
|
||||
else
|
||||
tmpdepfile="$tmpdepfile2"
|
||||
fi
|
||||
if test -f "$tmpdepfile"; then
|
||||
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
||||
# That's a space and a tab in the [].
|
||||
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
||||
# That's a tab and a space in the [].
|
||||
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
|
|
@ -226,34 +299,42 @@ tru64)
|
|||
|
||||
dashmstdout)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the proprocessed file to stdout, regardless of -o,
|
||||
# because we must use -o when running libtool.
|
||||
test -z "$dashmflag" && dashmflag=-M
|
||||
( IFS=" "
|
||||
case " $* " in
|
||||
*" --mode=compile "*) # this is libtool, let us make it quiet
|
||||
for arg
|
||||
do # cycle over the arguments
|
||||
case "$arg" in
|
||||
"--mode=compile")
|
||||
# insert --quiet before "--mode=compile"
|
||||
set fnord "$@" --quiet
|
||||
shift # fnord
|
||||
;;
|
||||
esac
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # "$arg"
|
||||
done
|
||||
# always write the preprocessed file to stdout, regardless of -o.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test $1 != '--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove `-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
"$@" $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
|
||||
) &
|
||||
proc=$!
|
||||
"$@"
|
||||
stat=$?
|
||||
wait "$proc"
|
||||
if test "$stat" != 0; then exit $stat; fi
|
||||
done
|
||||
|
||||
test -z "$dashmflag" && dashmflag=-M
|
||||
# Require at least two characters before searching for `:'
|
||||
# in the target name. This is to cope with DOS-style filenames:
|
||||
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
|
||||
"$@" $dashmflag |
|
||||
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
tr ' ' '
|
||||
|
|
@ -271,36 +352,40 @@ dashXmstdout)
|
|||
;;
|
||||
|
||||
makedepend)
|
||||
# X makedepend
|
||||
(
|
||||
shift
|
||||
cleared=no
|
||||
for arg in "$@"; do
|
||||
case $cleared in no)
|
||||
set ""; shift
|
||||
cleared=yes
|
||||
esac
|
||||
case "$arg" in
|
||||
-D*|-I*)
|
||||
set fnord "$@" "$arg"; shift;;
|
||||
-*)
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"; shift;;
|
||||
esac
|
||||
"$@" || exit $?
|
||||
# Remove any Libtool call
|
||||
if test "$libtool" = yes; then
|
||||
while test $1 != '--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
obj_suffix="`echo $object | sed 's/^.*\././'`"
|
||||
touch "$tmpdepfile"
|
||||
${MAKEDEPEND-makedepend} 2>/dev/null -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||
) &
|
||||
proc=$!
|
||||
"$@"
|
||||
stat=$?
|
||||
wait "$proc"
|
||||
if test "$stat" != 0; then exit $stat; fi
|
||||
shift
|
||||
fi
|
||||
# X makedepend
|
||||
shift
|
||||
cleared=no
|
||||
for arg in "$@"; do
|
||||
case $cleared in
|
||||
no)
|
||||
set ""; shift
|
||||
cleared=yes ;;
|
||||
esac
|
||||
case "$arg" in
|
||||
-D*|-I*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
# Strip any option that makedepend may not understand. Remove
|
||||
# the object too, otherwise makedepend will parse it as a source file.
|
||||
-*|$object)
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
esac
|
||||
done
|
||||
obj_suffix="`echo $object | sed 's/^.*\././'`"
|
||||
touch "$tmpdepfile"
|
||||
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
tail +3 "$tmpdepfile" | tr ' ' '
|
||||
sed '1,2d' "$tmpdepfile" | tr ' ' '
|
||||
' | \
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
|
|
@ -310,35 +395,39 @@ makedepend)
|
|||
|
||||
cpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the proprocessed file to stdout, regardless of -o,
|
||||
# because we must use -o when running libtool.
|
||||
( IFS=" "
|
||||
case " $* " in
|
||||
*" --mode=compile "*)
|
||||
for arg
|
||||
do # cycle over the arguments
|
||||
case $arg in
|
||||
"--mode=compile")
|
||||
# insert --quiet before "--mode=compile"
|
||||
set fnord "$@" --quiet
|
||||
shift # fnord
|
||||
;;
|
||||
esac
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # "$arg"
|
||||
done
|
||||
# always write the preprocessed file to stdout.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test $1 != '--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove `-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
"$@" -E |
|
||||
done
|
||||
|
||||
"$@" -E |
|
||||
sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
|
||||
sed '$ s: \\$::' > "$tmpdepfile"
|
||||
) &
|
||||
proc=$!
|
||||
"$@"
|
||||
stat=$?
|
||||
wait "$proc"
|
||||
if test "$stat" != 0; then exit $stat; fi
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
cat < "$tmpdepfile" >> "$depfile"
|
||||
|
|
@ -348,34 +437,27 @@ cpp)
|
|||
|
||||
msvisualcpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the proprocessed file to stdout, regardless of -o,
|
||||
# always write the preprocessed file to stdout, regardless of -o,
|
||||
# because we must use -o when running libtool.
|
||||
( IFS=" "
|
||||
case " $* " in
|
||||
*" --mode=compile "*)
|
||||
for arg
|
||||
do # cycle over the arguments
|
||||
case $arg in
|
||||
"--mode=compile")
|
||||
# insert --quiet before "--mode=compile"
|
||||
set fnord "$@" --quiet
|
||||
shift # fnord
|
||||
;;
|
||||
esac
|
||||
"$@" || exit $?
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case "$arg" in
|
||||
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
||||
set fnord "$@"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # "$arg"
|
||||
done
|
||||
;;
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
"$@" -E |
|
||||
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
|
||||
) &
|
||||
proc=$!
|
||||
"$@"
|
||||
stat=$?
|
||||
wait "$proc"
|
||||
if test "$stat" != 0; then exit $stat; fi
|
||||
done
|
||||
"$@" -E |
|
||||
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
|
||||
|
|
|
|||
|
|
@ -1,3 +1,39 @@
|
|||
2004-03-20 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* diff.c (diff_run): Update string arg to const.
|
||||
* diffrun.h: Update prototype to match.
|
||||
|
||||
2003-07-12 Larry Jones <lawrence.jones@eds.com>
|
||||
|
||||
* io.c (find_identical_ends): Update to match current diffutils
|
||||
code and improve handling of files with no newline at end.
|
||||
(Patch from Andrew Moise <chops@demiurgestudios.com>.)
|
||||
|
||||
2003-06-13 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* diff3.c (read_diff): Fix memory leak.
|
||||
(Patch from Kenneth Lorber <keni@his.com>.)
|
||||
|
||||
2003-05-21 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* Makefile.in: Regenerate with Automake version 1.7.5.
|
||||
|
||||
2003-05-09 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* system.h: Define S_ISSOCK on SCO OpenServer.
|
||||
|
||||
2003-04-10 Larry Jones <lawrence.jones@eds.com>
|
||||
|
||||
* Makefile.in: Regenerated.
|
||||
|
||||
2003-02-25 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* Makefile.in: Regenerated.
|
||||
|
||||
2003-02-01 Larry Jones <lawrence.jones@eds.com>
|
||||
|
||||
* util.c (finish_output): Handle EINTR from waitpid.
|
||||
|
||||
2002-09-24 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* Makefile.in: Regenerated using Automake 1.6.3.
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
# Makefile.in generated by automake 1.6.3 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.7.9 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
|
|
@ -13,79 +13,117 @@
|
|||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
|
||||
bindir = @bindir@
|
||||
sbindir = @sbindir@
|
||||
libexecdir = @libexecdir@
|
||||
datadir = @datadir@
|
||||
sysconfdir = @sysconfdir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
localstatedir = @localstatedir@
|
||||
libdir = @libdir@
|
||||
infodir = @infodir@
|
||||
mandir = @mandir@
|
||||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ..
|
||||
|
||||
ACLOCAL = @ACLOCAL@
|
||||
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@
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
|
||||
EXEEXT = @EXEEXT@
|
||||
OBJEXT = @OBJEXT@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CSH = @CSH@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EDITOR = @EDITOR@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
KRB4 = @KRB4@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MAKE_TARGETS_IN_VPATH_FALSE = @MAKE_TARGETS_IN_VPATH_FALSE@
|
||||
MAKE_TARGETS_IN_VPATH_TRUE = @MAKE_TARGETS_IN_VPATH_TRUE@
|
||||
MKTEMP = @MKTEMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
PR = @PR@
|
||||
PS2PDF = @PS2PDF@
|
||||
RANLIB = @RANLIB@
|
||||
ROFF = @ROFF@
|
||||
SENDMAIL = @SENDMAIL@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
TEXI2DVI = @TEXI2DVI@
|
||||
VERSION = @VERSION@
|
||||
YACC = @YACC@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||
ac_ct_STRIP = @ac_ct_STRIP@
|
||||
ac_prefix_program = @ac_prefix_program@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
bindir = @bindir@
|
||||
build_alias = @build_alias@
|
||||
datadir = @datadir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host_alias = @host_alias@
|
||||
includedir = @includedir@
|
||||
includeopt = @includeopt@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
oldincludedir = @oldincludedir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
|
||||
INCLUDES = -I$(top_srcdir)/lib
|
||||
|
||||
|
|
@ -98,6 +136,7 @@ libdiff_a_SOURCES = diff.c diff3.c analyze.c cmpbuf.c cmpbuf.h io.c \
|
|||
|
||||
EXTRA_DIST = ChangeLog build_diff.com diagmeet.note libdiff.dsp
|
||||
subdir = diff
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
|
|
@ -111,11 +150,7 @@ am_libdiff_a_OBJECTS = diff.$(OBJEXT) diff3.$(OBJEXT) analyze.$(OBJEXT) \
|
|||
version.$(OBJEXT) side.$(OBJEXT)
|
||||
libdiff_a_OBJECTS = $(am_libdiff_a_OBJECTS)
|
||||
|
||||
DEFS = @DEFS@
|
||||
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBS = @LIBS@
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/analyze.Po ./$(DEPDIR)/cmpbuf.Po \
|
||||
|
|
@ -129,19 +164,18 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
|||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
CFLAGS = @CFLAGS@
|
||||
DIST_SOURCES = $(libdiff_a_SOURCES)
|
||||
DIST_COMMON = ChangeLog Makefile.am Makefile.in
|
||||
DIST_COMMON = $(srcdir)/Makefile.in ChangeLog Makefile.am
|
||||
SOURCES = $(libdiff_a_SOURCES)
|
||||
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .o .obj
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu diff/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
|
||||
|
||||
AR = ar
|
||||
|
|
@ -173,26 +207,35 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Po@am__quote@
|
||||
|
||||
distclean-depend:
|
||||
-rm -rf ./$(DEPDIR)
|
||||
|
||||
.c.o:
|
||||
@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
|
||||
@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
|
||||
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
|
||||
@am__fastdepCC_TRUE@ fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
|
||||
.c.obj:
|
||||
@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
$(COMPILE) -c `cygpath -w $<`
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
|
||||
@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
|
||||
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
|
||||
@am__fastdepCC_TRUE@ fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
|
||||
uninstall-info-am:
|
||||
|
||||
ETAGS = etags
|
||||
ETAGSFLAGS =
|
||||
|
||||
CTAGS = ctags
|
||||
CTAGSFLAGS =
|
||||
|
||||
tags: TAGS
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
|
|
@ -218,20 +261,41 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
|||
|| $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
top_distdir = ..
|
||||
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@list='$(DISTFILES)'; for file in $$list; do \
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
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 \
|
||||
|
|
@ -256,7 +320,6 @@ check: check-am
|
|||
all-am: Makefile $(LIBRARIES)
|
||||
|
||||
installdirs:
|
||||
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
|
|
@ -268,7 +331,7 @@ install-am: all-am
|
|||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
INSTALL_STRIP_FLAG=-s \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
|
@ -276,7 +339,7 @@ mostlyclean-generic:
|
|||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||
-rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
|
|
@ -286,9 +349,10 @@ clean: clean-am
|
|||
clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
|
||||
distclean-am: clean-am distclean-compile distclean-depend \
|
||||
distclean-generic distclean-tags
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
|
|
@ -309,25 +373,33 @@ install-man:
|
|||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am
|
||||
|
||||
.PHONY: GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-noinstLIBRARIES distclean distclean-compile \
|
||||
distclean-depend distclean-generic distclean-tags distdir dvi \
|
||||
dvi-am info info-am install install-am install-data \
|
||||
install-data-am install-exec install-exec-am install-info \
|
||||
install-info-am install-man install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic tags uninstall uninstall-am \
|
||||
uninstall-info-am
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-noinstLIBRARIES ctags distclean distclean-compile \
|
||||
distclean-generic distclean-tags distdir dvi dvi-am info \
|
||||
info-am install install-am install-data install-data-am \
|
||||
install-exec install-exec-am install-info install-info-am \
|
||||
install-man install-strip installcheck installcheck-am \
|
||||
installdirs maintainer-clean maintainer-clean-generic \
|
||||
mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
|
||||
ps ps-am tags uninstall uninstall-am uninstall-info-am
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
|
|
|
|||
|
|
@ -233,11 +233,13 @@ static struct option const longopts[] =
|
|||
{0, 0, 0, 0}
|
||||
};
|
||||
|
||||
|
||||
|
||||
int
|
||||
diff_run (argc, argv, out, callbacks_arg)
|
||||
int argc;
|
||||
char *argv[];
|
||||
char *out;
|
||||
const char *out;
|
||||
const struct diff_callbacks *callbacks_arg;
|
||||
{
|
||||
int val;
|
||||
|
|
|
|||
|
|
@ -1360,6 +1360,7 @@ read_diff (filea, fileb, output_placement)
|
|||
if (close (fd) != 0)
|
||||
diff3_perror_with_exit ("pipe close");
|
||||
unlink (diffout);
|
||||
free( diffout );
|
||||
|
||||
return diff_result + total;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ struct diff_callbacks
|
|||
|
||||
/* Run a diff. */
|
||||
|
||||
extern int diff_run DIFFPARAMS((int, char **, char *,
|
||||
extern int diff_run DIFFPARAMS((int, char **, const char *,
|
||||
const struct diff_callbacks *));
|
||||
|
||||
/* Run a diff3. */
|
||||
|
|
|
|||
|
|
@ -508,11 +508,10 @@ find_identical_ends (filevec)
|
|||
beg0 = filevec[0].prefix_end + (n0 < n1 ? 0 : n0 - n1);
|
||||
|
||||
/* Scan back until chars don't match or we reach that point. */
|
||||
while (p0 != beg0)
|
||||
if (*--p0 != *--p1)
|
||||
for (; p0 != beg0; p0--, p1--)
|
||||
if (*p0 != *p1)
|
||||
{
|
||||
/* Point at the first char of the matching suffix. */
|
||||
++p0, ++p1;
|
||||
beg0 = p0;
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,9 +61,19 @@ GNU General Public License for more details.
|
|||
#if !defined(S_ISFIFO) && defined(S_IFFIFO)
|
||||
#define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFFIFO)
|
||||
#endif
|
||||
#if !defined(S_ISSOCK) && defined(S_IFSOCK)
|
||||
#define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK)
|
||||
#endif
|
||||
|
||||
#ifndef S_ISSOCK
|
||||
# if defined( S_IFSOCK )
|
||||
# ifdef S_IFMT
|
||||
# define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK)
|
||||
# else
|
||||
# define S_ISSOCK(mode) ((mode) & S_IFSOCK)
|
||||
# endif /* S_IFMT */
|
||||
# elif defined( S_ISNAM )
|
||||
/* SCO OpenServer 5.0.6a */
|
||||
# define S_ISSOCK S_ISNAM
|
||||
# endif /* !S_IFSOCK && S_ISNAM */
|
||||
#endif /* !S_ISSOCK */
|
||||
|
||||
#if HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
|
|
|
|||
|
|
@ -300,7 +300,7 @@ finish_output ()
|
|||
if (paginate_flag && outfile != 0 && outfile != stdout)
|
||||
{
|
||||
#ifdef PR_PROGRAM
|
||||
int wstatus;
|
||||
int wstatus, w;
|
||||
if (ferror (outfile))
|
||||
fatal ("write error");
|
||||
# if ! HAVE_FORK
|
||||
|
|
@ -308,7 +308,9 @@ finish_output ()
|
|||
# else /* HAVE_FORK */
|
||||
if (fclose (outfile) != 0)
|
||||
pfatal_with_name ("write error");
|
||||
if (waitpid (pr_pid, &wstatus, 0) < 0)
|
||||
while ((w = waitpid (pr_pid, &wstatus, 0)) < 0 && errno == EINTR)
|
||||
;
|
||||
if (w < 0)
|
||||
pfatal_with_name ("waitpid");
|
||||
# endif /* HAVE_FORK */
|
||||
if (wstatus != 0)
|
||||
|
|
|
|||
|
|
@ -1,3 +1,399 @@
|
|||
2004-04-06 Larry Jones <lawrence.jones@ugsplm.com>
|
||||
|
||||
* cvs.texinfo (Assigning revisions): Note that client/server mode
|
||||
only considers files sent to the server to determine the major
|
||||
revision for new files.
|
||||
(Reported by Krzysztof GORBIEL <Krzysztof_GORBIEL@raiffeisen.pl>.)
|
||||
* stamp-vti, version.texi: Regenerated.
|
||||
|
||||
2004-03-15 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* stamp-vti, version.texi: Regenerated.
|
||||
|
||||
2004-03-11 Larry Jones <lawrence.jones@ugsplm.com>
|
||||
|
||||
* cvs.texinfo (loginfo, Error messages): Note that not reading all of
|
||||
the log info can result in a broken pipe signal.
|
||||
(Reported by Steven Nicoloso <spn@nwmail.wh.lucent.com>.)
|
||||
* stamp-vti, version.texi: Regenerated.
|
||||
|
||||
2004-02-04 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvs.texinfo (File Permissions): Clarify index entry.
|
||||
* stamp-vti, version.texi: Regenerated.
|
||||
|
||||
2004-01-22 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* stamp-vti, version.texi: Regenerated.
|
||||
|
||||
2004-01-08 Larry Jones <lawrence.jones@ugsplm.com>
|
||||
|
||||
* cvs.texinfo (user-defined logging): Move taginfo stuff from here...
|
||||
(Administrative files): ...to its own node under here.
|
||||
|
||||
2003-12-18 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* stamp-1, stamp-vti, version-client.texi, version.texi: Regenerated
|
||||
for 1.11.11.1.
|
||||
|
||||
2003-12-18 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* stamp-1, stamp-vti, version-client.texi, version.texi: Regenerated
|
||||
for 1.11.11.
|
||||
|
||||
2003-12-05 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* stamp-1, stamp-vti, version-client.texi, version.texi: Regenerated.
|
||||
|
||||
2003-12-04 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* stamp-1, stamp-vti, version-client.texi, version.texi: Regenerated
|
||||
for 1.11.10.1.
|
||||
|
||||
2003-12-04 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* stamp-1, stamp-vti, version-client.texi, version.texi: Regenerated
|
||||
for 1.11.10.
|
||||
|
||||
2003-11-18 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* stamp-vti, version.texi: Regenerated.
|
||||
|
||||
2003-11-13 Larry Jones <lawrence.jones@eds.com>
|
||||
|
||||
* cvs.texinfo (Reverting local changes): Use the same vendor tag
|
||||
in the admin command as was used in the previous import commands.
|
||||
|
||||
2003-11-10 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* stamp-vti, version.texi: Regenerated.
|
||||
|
||||
2003-11-07 Mark D. Baushke <mdb@cvshome.org>
|
||||
|
||||
* cvs.texinfo (CVS commands): Fix typo.
|
||||
(FreeBSD PR docs/58669 reported by Ceri Davies <ceri@FreeBSD.org>.)
|
||||
|
||||
2003-10-30 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* stamp-vti, version.texi: Regenerated.
|
||||
|
||||
2003-10-30 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvs.texinfo (File permissions, Error messages): Add index entries for
|
||||
CVSROOT/val-tags file.
|
||||
|
||||
2003-10-21 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvs.texinfo: Note gnu.cvs.* usenet mirrors of the email lists.
|
||||
(Suggestion from Paul Edwards, from somewhere in Australia.)
|
||||
|
||||
* cvs.texinfo: Put email addresses in @email{} tags and URLs in @url{}
|
||||
tags rather than relying on markup like @code{}.
|
||||
* stamp-vti, version.texi: Regenerated.
|
||||
|
||||
2003-10-14 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* stamp-vti, version.texi: Regenerated.
|
||||
|
||||
2003-10-14 Derek Price <derek@ximbiot.com>
|
||||
|
||||
Port to pedantic POSIX 1003.1-2001 hosts, such as Debian GNU/Linux
|
||||
testing with _POSIX2_VERSION=200112 in the environment.
|
||||
|
||||
* cvs.texinfo: Suggest 'sed 1q', not 'head -1'.
|
||||
(Patch from Paul Eggert <eggert@twinsun.com>.)
|
||||
|
||||
2003-10-10 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* stamp-1, stamp-vti, version-client.texi, version.texi: Regenerated
|
||||
for 1.11.9.1.
|
||||
|
||||
2003-10-10 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* stamp-1, stamp-vti, version-client.texi, version.texi: Regenerated
|
||||
for 1.11.9.
|
||||
|
||||
2003-10-06 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvsclient.texi (Requests): Add recommendation to client developers to
|
||||
avoid the `Case' request.
|
||||
* stamp-1, version-client.texi: Regenerated.
|
||||
|
||||
2003-10-02 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* stamp-1, stamp-vti, version-client.texi, version.texi: Regenerated
|
||||
for 1.11.8.1.
|
||||
|
||||
2003-10-02 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* stamp-1, stamp-vti, version-client.texi, version.texi: Regenerated
|
||||
for 1.11.8.
|
||||
|
||||
2003-09-29 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* stamp-1, stamp-vti, version-client.texi, version.texi: Regenerated
|
||||
for 1.11.7.1.
|
||||
|
||||
2003-09-29 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* stamp-1, stamp-vti, version-client.texi, version.texi: Regenerated
|
||||
for 1.11.7.
|
||||
|
||||
2003-09-12 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvs.texinfo (checkoutlist): Document the error messages which may be
|
||||
specified in this file.
|
||||
* stamp-vti, version.texi: Regenerated.
|
||||
|
||||
2003-08-27 Larry Jones <lawrence.jones@eds.com>
|
||||
|
||||
* cvs.texinfo (history options): Note the 'P' record type which
|
||||
has been around for a long time but never actually appeared in
|
||||
the history file due to bugs in the code.
|
||||
(Invoking CVS): Ditto.
|
||||
(config): Ditto.
|
||||
* stamp-vti, version.texi: Regenerated.
|
||||
|
||||
2003-08-07 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* .cvsignore: Ignore {cvs,cvsclient}.txt.
|
||||
|
||||
2003-08-07 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvs.texinfo: Use the @dircategory and @direntry commands from texinfo
|
||||
rather than rolling our own.
|
||||
|
||||
* stamp-vti, version.texi: Regenerated.
|
||||
|
||||
2003-08-07 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* Makefile.am (POSTSCRIPTS): Rename to...
|
||||
(PSS): ...to sync with and override Automakes default targets.
|
||||
(PDFS): Reorder to match PSS.
|
||||
(SUFFIXES): Remove .pdf and .aux.
|
||||
(cvs.aux, cvs.pdf, cvsclient.aux, cvsclient.pdf): Remove these targets.
|
||||
.aux weren't being generated anyhow and .pdf no longer need to be
|
||||
supplied explicitly.
|
||||
(cvs-paper.pdf: cvs-paper.ps): Provide ps2pdf rule explicitly.
|
||||
(.{texinfo,texi,txy}.pdf): Remove these suffix rules - they are now
|
||||
provided by Automake.
|
||||
|
||||
2003-08-06 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* Makefile.am (CLEANFILES): Move...
|
||||
(MOSTLYCLEANFILES): ...here and drop PDFs since this is where Automake
|
||||
cleans PDFs & PSs by default.
|
||||
(MAINTAINERCLEANFILES): Clean all PostScripts even though they will
|
||||
have been removed in mostlyclean. That is a bug in Automake.
|
||||
(doc): Depend on info & ps.
|
||||
(pdf, ps): Removed in favor of Automake's default targets for these
|
||||
types.
|
||||
(cvsclient.* targets): Depened on version-client.texi.
|
||||
(cvs-paper.pdf): Remove in favor of Automake's default target.
|
||||
(.{texinfo,texi,txi}.{pdf,txt}): Update these targets based on
|
||||
Automake's similar treatment of dvi, ps, and info targets.
|
||||
* .cvsignore: Add cvs.tmp, a `make pdf' generated file.
|
||||
|
||||
* Makefile.in: Regenerated.
|
||||
|
||||
2003-07-18 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvs.texinfo: Put a few errant references to bug-cvs inside @code{}
|
||||
for consistancy.
|
||||
|
||||
2003-07-18 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvs.texinfo: Update WARNINGs and Notes for a more consistent
|
||||
appearance. Remove some obsolete comments.
|
||||
* stamp-vti: Regenerated.
|
||||
* version.texi: Regenerated.
|
||||
|
||||
2003-07-12 Larry Jones <lawrence.jones@eds.com>
|
||||
|
||||
* cvs.texinfo (Binary howto): Add note about how to determine whether
|
||||
a file is marked as binary or not.
|
||||
(Suggested by Erik Sigra <sigra@home.se>.)
|
||||
* stamp-vti: Regenerated.
|
||||
* version.texi: Regenerated.
|
||||
|
||||
2003-06-23 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* stamp-vti: Regenerated.
|
||||
* version.texi: Ditto.
|
||||
|
||||
2003-06-16 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvs.texinfo (splitrcskeyword): New macro, now that @ifhtml will work
|
||||
properly with texi2html (as of version 1.68), to cause output HTML to
|
||||
contain <i></i> where we used to have @asis{} and prevent RCS keyword
|
||||
substitution in generated HTML.
|
||||
(Original patch from Patrice Dumas <dumas@centre-cired.fr>.)
|
||||
|
||||
2003-06-11 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvs.texinfo (Invoking CVS): Remove `-P' from the list of `cvs export'
|
||||
options.
|
||||
(Patch from Alexander Taler <dissent@cvshome.org>.)
|
||||
|
||||
2003-06-11 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvs.texinfo (Top): Remove out-of-date (by at least 5 years) comment.
|
||||
(Patch from Alexander Taler <dissent@cvshome.org>.)
|
||||
|
||||
2003-05-27 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvs.texinfo: Consolidate copyright notices into a single macro that
|
||||
is called elsewhere to avoid needing three of them. Update copyright
|
||||
notice.
|
||||
(BUGS): Suggest Ximbiot rather than the defunct Signum Support as CVS
|
||||
consultants.
|
||||
|
||||
* stamp-vti: Regenerated.
|
||||
* version.texi: Ditto.
|
||||
|
||||
2003-05-26 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* stamp-1: Regenerated for 1.11.6.1.
|
||||
* stamp-vti: Ditto.
|
||||
* version-client.texi: Ditto.
|
||||
* version.texi: Ditto.
|
||||
|
||||
2003-05-25 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* stamp-1: Regenerated for 1.11.6.
|
||||
* stamp-vti: Ditto.
|
||||
* version-client.texi: Ditto.
|
||||
* version.texi: Ditto.
|
||||
|
||||
2003-05-21 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* Makefile.in: Regenerate with Automake version 1.7.5.
|
||||
|
||||
2003-04-28 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvs.texinfo (Working directory storage, Module options, Module
|
||||
program options): Remove references to Checkin.prog and Update.prog.
|
||||
(commit options): Remove reference to -n option.
|
||||
|
||||
* stamp-vti: Regenerated.
|
||||
* version.texi: Ditto.
|
||||
|
||||
2003-04-10 Larry Jones <lawrence.jones@eds.com>
|
||||
|
||||
* Makefile.in: Regenerated.
|
||||
|
||||
2003-03-26 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* stamp-vti: Regenerated.
|
||||
* version.texi: Ditto.
|
||||
|
||||
2003-03-25 Larry Jones <larry.jones@sdrc.com>
|
||||
|
||||
* cvs.texinfo (Server temporary directory): Reorder list of places
|
||||
to match code.
|
||||
(Connection): Add additional example error message and note about
|
||||
firewall software.
|
||||
* stamp-vti: Regenerated.
|
||||
* version.texi: Ditto.
|
||||
|
||||
2003-03-24 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* Makefile.am: Update copyright notice.
|
||||
|
||||
* Makefile.in: Regenerated.
|
||||
|
||||
2003-03-06 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvs.texinfo (What is CVS?): Correct date of first post of CVS by
|
||||
Dick Grune from December to July based on the archive posted on
|
||||
Google:
|
||||
<http://groups.google.com/groups?q=Grune+cvs+group:mod.sources.*&hl=en&lr=&ie=UTF-8&selm=122%40mirror.UUCP&rnum=2>.
|
||||
(Thanks to David A Wheeler <dwheeler@dwheeler.com>.)
|
||||
|
||||
* stamp-vti: Regenerated.
|
||||
* version.texi: Ditto.
|
||||
|
||||
2003-03-05 Mark D. Baushke <mdb@cvshome.org>
|
||||
|
||||
* cvs.texinfo (CVS_LOCAL_BRANCH_NUM): Backout CVS_LOCAL_BRANCH_NUM
|
||||
feature.
|
||||
|
||||
* cvs.texinfo (CVS_LOCAL_BRANCH_NUM): Document new environment
|
||||
variable.
|
||||
|
||||
2003-02-27 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvs.texinfo (Environment variables): Make the information on
|
||||
CVS_CLIENT_PORT slightly clearer.
|
||||
(Kerberos authenticated): XREF the Environment variables node.
|
||||
|
||||
* stamp-vti: Regenerated.
|
||||
* version.texi: Ditto.
|
||||
|
||||
2003-02-25 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* Makefile.in: Regenerated.
|
||||
* stamp-1: Ditto.
|
||||
* version-client.texi: Ditto.
|
||||
|
||||
2003-02-06 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvs.texinfo (Working directory storage, Module options,
|
||||
Module program options): Correct description of where Checkin.prog
|
||||
and Update.prog are run. Provide more index entries and cross
|
||||
references. Remove some FIXME comments. Add a FIXCVS THEN FIXME.
|
||||
(Thanks to Art Manion at the CERT Coordination Center <cert@cert.org>.)
|
||||
|
||||
2003-02-04 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvs.texinfo (File status): Mention the "Unresolved Conflict" status
|
||||
which was apparently and erroneously removed from the doc at some
|
||||
point in the past.
|
||||
|
||||
2003-02-03 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvs.texinfo (Merging a branch): Mention the GCA as opposed to the
|
||||
"branch point" as the implicit revision when merging a branch.
|
||||
|
||||
2003-02-03 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvs.texinfo (Remote repositories): :METHOD: is optional.
|
||||
|
||||
2003-02-03 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvs.texinfo (Committing your changes): Move index entries closer to
|
||||
their corresponding references.
|
||||
(Environment variables): Include $VISUAL in order of
|
||||
preference. Add index entries. Reference Global options node.
|
||||
(Variables): Change order of list to match the Env. Variables node
|
||||
mentioned above.
|
||||
|
||||
* stamp-1: Regenerated.
|
||||
* stamp-vti: Ditto.
|
||||
* version-client.texi: Ditto.
|
||||
* version.texi: Ditto.
|
||||
|
||||
2003-02-14 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* cvs.texinfo (Watch Information, Editing files, Getting Notified,
|
||||
Setting a watch): Edit usage specs for correctness and uniformity.
|
||||
(Sticky tags): Use ref rather than xref to avoid a warning from
|
||||
makeinfo.
|
||||
|
||||
* stamp-vti: Regenerated.
|
||||
* version.texi: Ditto.
|
||||
|
||||
2003-01-23 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* stamp-1: Regenerated.
|
||||
* stamp-vti: Ditto.
|
||||
* version-client.texi: Ditto.
|
||||
* version.texi: Ditto.
|
||||
|
||||
2003-01-22 Larry Jones <larry.jones@sdrc.com>
|
||||
|
||||
* cvs.texinfo (config): Correct LogHistory default (U was omitted).
|
||||
|
||||
2003-01-16 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* stamp-1: Regenerated for version (1.11.5).
|
||||
|
|
@ -179,7 +575,7 @@
|
|||
* Makefile.in: Regenerated.
|
||||
* stamp-1: New file.
|
||||
* version-client.texi: Ditto.
|
||||
(Reportred by Alexey Mahotkin <alexm@hsys.msk.ru>.)
|
||||
(Reported by Alexey Mahotkin <alexm@hsys.msk.ru>.)
|
||||
|
||||
2001-09-04 Derek Price <dprice@collab.net>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
## Process this file with automake to produce Makefile.in
|
||||
# Makefile for GNU CVS documentation (excluding man pages - see ../man).
|
||||
# Copyright (C) 1986, 1988-1990, 2000 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
|
||||
# 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -14,14 +16,14 @@
|
|||
|
||||
info_TEXINFOS = cvs.texinfo cvsclient.texi
|
||||
|
||||
POSTSCRIPTS = \
|
||||
PSS = \
|
||||
cvs.ps \
|
||||
cvs-paper.ps \
|
||||
cvsclient.ps
|
||||
|
||||
PDFS = \
|
||||
cvs-paper.pdf \
|
||||
cvs.pdf \
|
||||
cvs-paper.pdf \
|
||||
cvsclient.pdf
|
||||
|
||||
TXTS = \
|
||||
|
|
@ -29,25 +31,23 @@ TXTS = \
|
|||
cvsclient.txt
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(POSTSCRIPTS) \
|
||||
$(PSS) \
|
||||
.cvsignore \
|
||||
ChangeLog.fsf \
|
||||
RCSFILES \
|
||||
mdate-sh \
|
||||
cvs-paper.ms
|
||||
|
||||
CLEANFILES = \
|
||||
$(PDFS) \
|
||||
MOSTLYCLEANFILES = \
|
||||
$(TXTS)
|
||||
|
||||
# These Automake generates MOSTLYCLEAN targets for PostScripts genersted from
|
||||
# TEXINFOS, but it shouldn't when those files are in EXTRA_DIST
|
||||
MAINTAINERCLEANFILES = \
|
||||
cvs-paper.ps
|
||||
$(PSS)
|
||||
|
||||
doc ps: $(POSTSCRIPTS)
|
||||
.PHONY: doc ps
|
||||
|
||||
pdf: $(PDFS)
|
||||
.PHONY: pdf
|
||||
doc: info ps
|
||||
.PHONY: doc
|
||||
|
||||
txt: $(TXTS)
|
||||
.PHONY: txt
|
||||
|
|
@ -58,8 +58,8 @@ dvi: cvs.dvi cvsclient.dvi
|
|||
# FIXME-AUTOMAKE:
|
||||
# For some reason if I remove version.texi, it doesn't get built automatically.
|
||||
# This needs to be fixed in automake.
|
||||
cvs.aux cvs.pdf cvs.txt: cvs.texinfo $(srcdir)/version.texi
|
||||
cvsclient.aux cvsclient.pdf cvsclient.txt: cvsclient.texi
|
||||
cvs.txt: cvs.texinfo $(srcdir)/version.texi
|
||||
cvsclient.txt: cvsclient.texi $(srcdir)/version-client.texi
|
||||
|
||||
# These targets need to be very specific so that the other PDFs get generated
|
||||
# correctly. If they are more generic and cvs.ps is made before cvs.pdf, then
|
||||
|
|
@ -70,36 +70,25 @@ cvs-paper.ps: cvs-paper.ms
|
|||
mv $@-t $@
|
||||
|
||||
cvs-paper.pdf: cvs-paper.ps
|
||||
$(PS2PDF) $< $@
|
||||
ps2pdf $< $@
|
||||
|
||||
SUFFIXES = .aux .txt .pdf
|
||||
SUFFIXES = .txt
|
||||
|
||||
# texinfo based targets automake neglects to include
|
||||
.texinfo.pdf:
|
||||
TEXINPUTS=$(srcdir):$$TEXINPUTS \
|
||||
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) --pdf --batch $<
|
||||
.txi.pdf:
|
||||
TEXINPUTS=$(srcdir):$$TEXINPUTS \
|
||||
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) --pdf --batch $<
|
||||
.texi.pdf:
|
||||
TEXINPUTS=$(srcdir):$$TEXINPUTS \
|
||||
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) --pdf --batch $<
|
||||
|
||||
.texinfo.txt:
|
||||
TEXINPUTS=$(srcdir):$$TEXINPUTS \
|
||||
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(MAKEINFO) $< --no-headers -o $@
|
||||
$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
||||
--no-headers -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
.txi.txt:
|
||||
TEXINPUTS=$(srcdir):$$TEXINPUTS \
|
||||
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(MAKEINFO) $< --no-headers -o $@
|
||||
$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
||||
--no-headers -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
.texi.txt:
|
||||
TEXINPUTS=$(srcdir):$$TEXINPUTS \
|
||||
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(MAKEINFO) $< --no-headers -o $@
|
||||
$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
||||
--no-headers -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
|
||||
##
|
||||
## MAINTAINER Targets
|
||||
##
|
||||
|
||||
## realclean ##
|
||||
# for backwards compatibility with the old makefiles
|
||||
realclean: maintainer-clean
|
||||
.PHONY: realclean
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
# Makefile.in generated by automake 1.6.3 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.7.9 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
|
|
@ -15,7 +15,9 @@
|
|||
@SET_MAKE@
|
||||
|
||||
# Makefile for GNU CVS documentation (excluding man pages - see ../man).
|
||||
# Copyright (C) 1986, 1988-1990, 2000 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
|
||||
# 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -26,91 +28,129 @@
|
|||
# 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.
|
||||
SHELL = @SHELL@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
|
||||
bindir = @bindir@
|
||||
sbindir = @sbindir@
|
||||
libexecdir = @libexecdir@
|
||||
datadir = @datadir@
|
||||
sysconfdir = @sysconfdir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
localstatedir = @localstatedir@
|
||||
libdir = @libdir@
|
||||
infodir = @infodir@
|
||||
mandir = @mandir@
|
||||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ..
|
||||
|
||||
ACLOCAL = @ACLOCAL@
|
||||
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@
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
|
||||
EXEEXT = @EXEEXT@
|
||||
OBJEXT = @OBJEXT@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CSH = @CSH@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EDITOR = @EDITOR@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
KRB4 = @KRB4@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MAKE_TARGETS_IN_VPATH_FALSE = @MAKE_TARGETS_IN_VPATH_FALSE@
|
||||
MAKE_TARGETS_IN_VPATH_TRUE = @MAKE_TARGETS_IN_VPATH_TRUE@
|
||||
MKTEMP = @MKTEMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
PR = @PR@
|
||||
PS2PDF = @PS2PDF@
|
||||
RANLIB = @RANLIB@
|
||||
ROFF = @ROFF@
|
||||
SENDMAIL = @SENDMAIL@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
TEXI2DVI = @TEXI2DVI@
|
||||
VERSION = @VERSION@
|
||||
YACC = @YACC@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||
ac_ct_STRIP = @ac_ct_STRIP@
|
||||
ac_prefix_program = @ac_prefix_program@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
bindir = @bindir@
|
||||
build_alias = @build_alias@
|
||||
datadir = @datadir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host_alias = @host_alias@
|
||||
includedir = @includedir@
|
||||
includeopt = @includeopt@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
oldincludedir = @oldincludedir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
|
||||
info_TEXINFOS = cvs.texinfo cvsclient.texi
|
||||
|
||||
POSTSCRIPTS = \
|
||||
PSS = \
|
||||
cvs.ps \
|
||||
cvs-paper.ps \
|
||||
cvsclient.ps
|
||||
|
||||
|
||||
PDFS = \
|
||||
cvs-paper.pdf \
|
||||
cvs.pdf \
|
||||
cvs-paper.pdf \
|
||||
cvsclient.pdf
|
||||
|
||||
|
||||
|
|
@ -120,7 +160,7 @@ TXTS = \
|
|||
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(POSTSCRIPTS) \
|
||||
$(PSS) \
|
||||
.cvsignore \
|
||||
ChangeLog.fsf \
|
||||
RCSFILES \
|
||||
|
|
@ -128,149 +168,144 @@ EXTRA_DIST = \
|
|||
cvs-paper.ms
|
||||
|
||||
|
||||
CLEANFILES = \
|
||||
$(PDFS) \
|
||||
MOSTLYCLEANFILES = \
|
||||
$(TXTS)
|
||||
|
||||
|
||||
# These Automake generates MOSTLYCLEAN targets for PostScripts genersted from
|
||||
# TEXINFOS, but it shouldn't when those files are in EXTRA_DIST
|
||||
MAINTAINERCLEANFILES = \
|
||||
cvs-paper.ps
|
||||
$(PSS)
|
||||
|
||||
|
||||
SUFFIXES = .aux .txt .pdf
|
||||
SUFFIXES = .txt
|
||||
subdir = doc
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CFLAGS = @CFLAGS@
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
DIST_SOURCES =
|
||||
am__TEXINFO_TEX_DIR = $(srcdir)
|
||||
INFO_DEPS = cvs.info cvsclient.info
|
||||
DVIS = cvs.dvi cvsclient.dvi
|
||||
TEXINFOS = cvs.texinfo cvsclient.texi
|
||||
DIST_COMMON = ChangeLog Makefile.am Makefile.in mdate-sh stamp-1 \
|
||||
stamp-vti texinfo.tex version-client.texi version.texi
|
||||
DIST_COMMON = $(srcdir)/Makefile.in ChangeLog Makefile.am mdate-sh \
|
||||
stamp-1 stamp-vti texinfo.tex version-client.texi version.texi
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .aux .txt .pdf .dvi .info .ps .texi .texinfo .txi
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
.SUFFIXES: .txt .dvi .info .pdf .ps .texi .texinfo .txi
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu doc/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
|
||||
|
||||
$(srcdir)/version.texi: $(srcdir)/stamp-vti
|
||||
@:
|
||||
$(srcdir)/stamp-vti: cvs.texinfo $(top_srcdir)/configure.in
|
||||
@(set `$(SHELL) $(srcdir)/mdate-sh $(srcdir)/cvs.texinfo`; \
|
||||
.texinfo.info:
|
||||
@rm -f $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]
|
||||
$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
||||
-o $@ `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
|
||||
.texinfo.dvi:
|
||||
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
||||
$(TEXI2DVI) `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
|
||||
.texinfo.pdf:
|
||||
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
||||
$(TEXI2PDF) `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
cvs.info: cvs.texinfo version.texi
|
||||
cvs.dvi: cvs.texinfo version.texi
|
||||
cvs.pdf: cvs.texinfo version.texi
|
||||
version.texi: @MAINTAINER_MODE_TRUE@ stamp-vti
|
||||
stamp-vti: cvs.texinfo $(top_srcdir)/configure
|
||||
@(dir=.; test -f ./cvs.texinfo || dir=$(srcdir); \
|
||||
set `$(SHELL) $(srcdir)/mdate-sh $$dir/cvs.texinfo`; \
|
||||
echo "@set UPDATED $$1 $$2 $$3"; \
|
||||
echo "@set UPDATED-MONTH $$2 $$3"; \
|
||||
echo "@set EDITION $(VERSION)"; \
|
||||
echo "@set VERSION $(VERSION)") > vti.tmp
|
||||
@cmp -s vti.tmp $(srcdir)/version.texi \
|
||||
|| (echo "Updating $(srcdir)/version.texi"; \
|
||||
cp vti.tmp $(srcdir)/version.texi)
|
||||
@cmp -s vti.tmp version.texi \
|
||||
|| (echo "Updating version.texi"; \
|
||||
cp vti.tmp version.texi)
|
||||
-@rm -f vti.tmp
|
||||
@cp $(srcdir)/version.texi $@
|
||||
@cp version.texi $@
|
||||
|
||||
mostlyclean-vti:
|
||||
-rm -f vti.tmp
|
||||
|
||||
maintainer-clean-vti:
|
||||
-rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
|
||||
@MAINTAINER_MODE_TRUE@ -rm -f stamp-vti version.texi
|
||||
|
||||
cvs.info: cvs.texinfo $(srcdir)/version.texi
|
||||
cvs.dvi: cvs.texinfo $(srcdir)/version.texi
|
||||
.texi.info:
|
||||
@rm -f $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]
|
||||
$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
||||
-o $@ `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
|
||||
$(srcdir)/version-client.texi: $(srcdir)/stamp-1
|
||||
@:
|
||||
$(srcdir)/stamp-1: cvsclient.texi $(top_srcdir)/configure.in
|
||||
@(set `$(SHELL) $(srcdir)/mdate-sh $(srcdir)/cvsclient.texi`; \
|
||||
.texi.dvi:
|
||||
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
||||
$(TEXI2DVI) `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
|
||||
.texi.pdf:
|
||||
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
||||
$(TEXI2PDF) `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
cvsclient.info: cvsclient.texi version-client.texi
|
||||
cvsclient.dvi: cvsclient.texi version-client.texi
|
||||
cvsclient.pdf: cvsclient.texi version-client.texi
|
||||
version-client.texi: @MAINTAINER_MODE_TRUE@ stamp-1
|
||||
stamp-1: cvsclient.texi $(top_srcdir)/configure
|
||||
@(dir=.; test -f ./cvsclient.texi || dir=$(srcdir); \
|
||||
set `$(SHELL) $(srcdir)/mdate-sh $$dir/cvsclient.texi`; \
|
||||
echo "@set UPDATED $$1 $$2 $$3"; \
|
||||
echo "@set UPDATED-MONTH $$2 $$3"; \
|
||||
echo "@set EDITION $(VERSION)"; \
|
||||
echo "@set VERSION $(VERSION)") > 1.tmp
|
||||
@cmp -s 1.tmp $(srcdir)/version-client.texi \
|
||||
|| (echo "Updating $(srcdir)/version-client.texi"; \
|
||||
cp 1.tmp $(srcdir)/version-client.texi)
|
||||
@cmp -s 1.tmp version-client.texi \
|
||||
|| (echo "Updating version-client.texi"; \
|
||||
cp 1.tmp version-client.texi)
|
||||
-@rm -f 1.tmp
|
||||
@cp $(srcdir)/version-client.texi $@
|
||||
@cp version-client.texi $@
|
||||
|
||||
mostlyclean-1:
|
||||
-rm -f 1.tmp
|
||||
|
||||
maintainer-clean-1:
|
||||
-rm -f $(srcdir)/stamp-1 $(srcdir)/version-client.texi
|
||||
@MAINTAINER_MODE_TRUE@ -rm -f stamp-1 version-client.texi
|
||||
|
||||
cvsclient.info: cvsclient.texi $(srcdir)/version-client.texi
|
||||
cvsclient.dvi: cvsclient.texi $(srcdir)/version-client.texi
|
||||
|
||||
.texi.info:
|
||||
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
|
||||
cd $(srcdir) \
|
||||
&& $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \
|
||||
`echo $< | sed 's,.*/,,'`
|
||||
|
||||
.texi.dvi:
|
||||
TEXINPUTS="$(srcdir)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
||||
$(TEXI2DVI) $<
|
||||
|
||||
.texi:
|
||||
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
|
||||
cd $(srcdir) \
|
||||
&& $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \
|
||||
`echo $< | sed 's,.*/,,'`
|
||||
|
||||
.texinfo.info:
|
||||
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
|
||||
cd $(srcdir) \
|
||||
&& $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \
|
||||
`echo $< | sed 's,.*/,,'`
|
||||
|
||||
.texinfo.dvi:
|
||||
TEXINPUTS="$(srcdir)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
||||
$(TEXI2DVI) $<
|
||||
|
||||
.texinfo:
|
||||
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
|
||||
cd $(srcdir) \
|
||||
&& $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) \
|
||||
`echo $< | sed 's,.*/,,'`
|
||||
|
||||
MAKEINFO = @MAKEINFO@
|
||||
TEXI2PDF = $(TEXI2DVI) --pdf --batch
|
||||
DVIPS = dvips
|
||||
.dvi.ps:
|
||||
$(DVIPS) $< -o $@
|
||||
$(DVIPS) -o $@ $<
|
||||
|
||||
uninstall-info-am:
|
||||
$(PRE_UNINSTALL)
|
||||
@if (install-info --version && \
|
||||
install-info --version | fgrep -i -v debian) >/dev/null 2>&1; then \
|
||||
install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
|
||||
list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
echo " install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file"; \
|
||||
install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file; \
|
||||
relfile=`echo "$$file" | sed 's|^.*/||'`; \
|
||||
echo " install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$relfile"; \
|
||||
install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$relfile; \
|
||||
done; \
|
||||
else :; fi
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
relfile=`echo "$$file" | sed 's|^.*/||'`; \
|
||||
relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
|
||||
(if cd $(DESTDIR)$(infodir); then \
|
||||
echo " rm -f $$file $$file-[0-9] $$file-[0-9][0-9])"; \
|
||||
rm -f $$file $$file-[0-9] $$file-[0-9][0-9]; \
|
||||
echo " rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9])"; \
|
||||
rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
|
||||
else :; fi); \
|
||||
done
|
||||
|
||||
dist-info: $(INFO_DEPS)
|
||||
list='$(INFO_DEPS)'; \
|
||||
for base in $$list; do \
|
||||
d=$(srcdir); \
|
||||
if test -f $$base; then d=.; else d=$(srcdir); fi; \
|
||||
for file in $$d/$$base*; do \
|
||||
relfile=`expr "$$file" : "$$d/\(.*\)"`; \
|
||||
test -f $(distdir)/$$relfile || \
|
||||
|
|
@ -279,30 +314,39 @@ dist-info: $(INFO_DEPS)
|
|||
done
|
||||
|
||||
mostlyclean-aminfo:
|
||||
-rm -f cvs.aux cvs.cp cvs.cps cvs.dvi cvs.fn cvs.fns cvs.ky cvs.log cvs.pg \
|
||||
cvs.ps cvs.tmp cvs.toc cvs.tp cvs.vr cvsclient.aux \
|
||||
cvsclient.cp cvsclient.dvi cvsclient.fn cvsclient.ky \
|
||||
cvsclient.log cvsclient.pg cvsclient.ps cvsclient.tmp \
|
||||
cvsclient.toc cvsclient.tp cvsclient.vr
|
||||
-rm -f cvs.aux cvs.cp cvs.cps cvs.fn cvs.fns cvs.ky cvs.kys cvs.log cvs.pg \
|
||||
cvs.pgs cvs.tmp cvs.toc cvs.tp cvs.tps cvs.vr cvs.vrs cvs.dvi \
|
||||
cvs.pdf cvs.ps cvsclient.aux cvsclient.cp cvsclient.cps \
|
||||
cvsclient.fn cvsclient.fns cvsclient.ky cvsclient.kys \
|
||||
cvsclient.log cvsclient.pg cvsclient.pgs cvsclient.tmp \
|
||||
cvsclient.toc cvsclient.tp cvsclient.tps cvsclient.vr \
|
||||
cvsclient.vrs cvsclient.dvi cvsclient.pdf cvsclient.ps
|
||||
|
||||
maintainer-clean-aminfo:
|
||||
cd $(srcdir) && \
|
||||
list='$(INFO_DEPS)'; for i in $$list; do \
|
||||
rm -f $$i; \
|
||||
if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \
|
||||
rm -f $$i-[0-9]*; \
|
||||
fi; \
|
||||
@list='$(INFO_DEPS)'; for i in $$list; do \
|
||||
i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
|
||||
echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
|
||||
rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
|
||||
done
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
ctags: CTAGS
|
||||
CTAGS:
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
top_distdir = ..
|
||||
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@list='$(DISTFILES)'; for file in $$list; do \
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
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 \
|
||||
|
|
@ -323,7 +367,7 @@ distdir: $(DISTFILES)
|
|||
fi; \
|
||||
done
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="${top_distdir}" distdir="$(distdir)" \
|
||||
top_distdir="$(top_distdir)" distdir="$(distdir)" \
|
||||
dist-info
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
|
|
@ -331,7 +375,6 @@ all-am: Makefile $(INFO_DEPS)
|
|||
|
||||
installdirs:
|
||||
$(mkinstalldirs) $(DESTDIR)$(infodir)
|
||||
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
|
|
@ -343,16 +386,16 @@ install-am: all-am
|
|||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
INSTALL_STRIP_FLAG=-s \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
|
||||
|
||||
clean-generic:
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||
-rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
|
|
@ -363,7 +406,7 @@ clean: clean-am
|
|||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
|
@ -385,10 +428,12 @@ install-info-am: $(INFO_DEPS)
|
|||
$(mkinstalldirs) $(DESTDIR)$(infodir)
|
||||
@list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
d=$(srcdir); \
|
||||
for ifile in echo $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9]; do \
|
||||
if test -f $$file; then d=.; else d=$(srcdir); fi; \
|
||||
file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
|
||||
for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
|
||||
$$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
|
||||
if test -f $$ifile; then \
|
||||
relfile=`expr "$$ifile" : "$$d/\(.*\)"`; \
|
||||
relfile=`echo "$$ifile" | sed 's|^.*/||'`; \
|
||||
echo " $(INSTALL_DATA) $$ifile $(DESTDIR)$(infodir)/$$relfile"; \
|
||||
$(INSTALL_DATA) $$ifile $(DESTDIR)$(infodir)/$$relfile; \
|
||||
else : ; fi; \
|
||||
|
|
@ -396,11 +441,12 @@ install-info-am: $(INFO_DEPS)
|
|||
done
|
||||
@$(POST_INSTALL)
|
||||
@if (install-info --version && \
|
||||
install-info --version | fgrep -i -v debian) >/dev/null 2>&1; then \
|
||||
install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
|
||||
list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\
|
||||
install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\
|
||||
relfile=`echo "$$file" | sed 's|^.*/||'`; \
|
||||
echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$relfile";\
|
||||
install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$relfile || :;\
|
||||
done; \
|
||||
else : ; fi
|
||||
install-man:
|
||||
|
|
@ -408,7 +454,7 @@ install-man:
|
|||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-1 \
|
||||
maintainer-clean-aminfo maintainer-clean-generic \
|
||||
maintainer-clean-vti
|
||||
|
|
@ -418,6 +464,14 @@ mostlyclean: mostlyclean-am
|
|||
mostlyclean-am: mostlyclean-1 mostlyclean-aminfo mostlyclean-generic \
|
||||
mostlyclean-vti
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am: $(PDFS)
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am: $(PSS)
|
||||
|
||||
uninstall-am: uninstall-info-am
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic dist-info \
|
||||
|
|
@ -428,14 +482,12 @@ uninstall-am: uninstall-info-am
|
|||
maintainer-clean maintainer-clean-1 maintainer-clean-aminfo \
|
||||
maintainer-clean-generic maintainer-clean-vti mostlyclean \
|
||||
mostlyclean-1 mostlyclean-aminfo mostlyclean-generic \
|
||||
mostlyclean-vti uninstall uninstall-am uninstall-info-am
|
||||
mostlyclean-vti pdf pdf-am ps ps-am uninstall uninstall-am \
|
||||
uninstall-info-am
|
||||
|
||||
|
||||
doc ps: $(POSTSCRIPTS)
|
||||
.PHONY: doc ps
|
||||
|
||||
pdf: $(PDFS)
|
||||
.PHONY: pdf
|
||||
doc: info ps
|
||||
.PHONY: doc
|
||||
|
||||
txt: $(TXTS)
|
||||
.PHONY: txt
|
||||
|
|
@ -446,8 +498,8 @@ dvi: cvs.dvi cvsclient.dvi
|
|||
# FIXME-AUTOMAKE:
|
||||
# For some reason if I remove version.texi, it doesn't get built automatically.
|
||||
# This needs to be fixed in automake.
|
||||
cvs.aux cvs.pdf cvs.txt: cvs.texinfo $(srcdir)/version.texi
|
||||
cvsclient.aux cvsclient.pdf cvsclient.txt: cvsclient.texi
|
||||
cvs.txt: cvs.texinfo $(srcdir)/version.texi
|
||||
cvsclient.txt: cvsclient.texi $(srcdir)/version-client.texi
|
||||
|
||||
# These targets need to be very specific so that the other PDFs get generated
|
||||
# correctly. If they are more generic and cvs.ps is made before cvs.pdf, then
|
||||
|
|
@ -458,28 +510,18 @@ cvs-paper.ps: cvs-paper.ms
|
|||
mv $@-t $@
|
||||
|
||||
cvs-paper.pdf: cvs-paper.ps
|
||||
$(PS2PDF) $< $@
|
||||
ps2pdf $< $@
|
||||
|
||||
# texinfo based targets automake neglects to include
|
||||
.texinfo.pdf:
|
||||
TEXINPUTS=$(srcdir):$$TEXINPUTS \
|
||||
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) --pdf --batch $<
|
||||
.txi.pdf:
|
||||
TEXINPUTS=$(srcdir):$$TEXINPUTS \
|
||||
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) --pdf --batch $<
|
||||
.texi.pdf:
|
||||
TEXINPUTS=$(srcdir):$$TEXINPUTS \
|
||||
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) --pdf --batch $<
|
||||
|
||||
.texinfo.txt:
|
||||
TEXINPUTS=$(srcdir):$$TEXINPUTS \
|
||||
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(MAKEINFO) $< --no-headers -o $@
|
||||
$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
||||
--no-headers -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
.txi.txt:
|
||||
TEXINPUTS=$(srcdir):$$TEXINPUTS \
|
||||
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(MAKEINFO) $< --no-headers -o $@
|
||||
$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
||||
--no-headers -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
.texi.txt:
|
||||
TEXINPUTS=$(srcdir):$$TEXINPUTS \
|
||||
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(MAKEINFO) $< --no-headers -o $@
|
||||
$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
||||
--no-headers -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
|
||||
# for backwards compatibility with the old makefiles
|
||||
realclean: maintainer-clean
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -943,6 +943,16 @@ there are some situations it cannot handle (ignore patterns, or
|
|||
situations where the user specifies a filename and the client does not
|
||||
know about that file).
|
||||
|
||||
Though this request will be supported into the forseeable future, it has been
|
||||
the source of numerous bug reports in the past due to the complexity of testing
|
||||
this functionality via the test suite and client developers are encouraged not
|
||||
to use it. Instead, please consider munging conflicting names and maintaining
|
||||
a map for communicating with the server. For example, suppose the server sends
|
||||
files @file{case}, @file{CASE}, and @file{CaSe}. The client could write all
|
||||
three files to names such as, @file{case}, @file{case_prefix_case}, and
|
||||
@file{case_prefix_2_case} and maintain a mapping between the file names in, for
|
||||
instance a new @file{CVS/Map} file.
|
||||
|
||||
@item Argument @var{text} \n
|
||||
Response expected: no.
|
||||
Save argument for use in a subsequent command. Arguments
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
@set UPDATED 5 September 2001
|
||||
@set UPDATED-MONTH September 2001
|
||||
@set EDITION 1.11.5
|
||||
@set VERSION 1.11.5
|
||||
@set UPDATED 3 February 2004
|
||||
@set UPDATED-MONTH February 2004
|
||||
@set EDITION 1.11.15
|
||||
@set VERSION 1.11.15
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
@set UPDATED 18 November 2002
|
||||
@set UPDATED-MONTH November 2002
|
||||
@set EDITION 1.11.5
|
||||
@set VERSION 1.11.5
|
||||
@set UPDATED 6 April 2004
|
||||
@set UPDATED-MONTH April 2004
|
||||
@set EDITION 1.11.15
|
||||
@set VERSION 1.11.15
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
@set UPDATED 5 September 2001
|
||||
@set UPDATED-MONTH September 2001
|
||||
@set EDITION 1.11.5
|
||||
@set VERSION 1.11.5
|
||||
@set UPDATED 3 February 2004
|
||||
@set UPDATED-MONTH February 2004
|
||||
@set EDITION 1.11.15
|
||||
@set VERSION 1.11.15
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
@set UPDATED 18 November 2002
|
||||
@set UPDATED-MONTH November 2002
|
||||
@set EDITION 1.11.5
|
||||
@set VERSION 1.11.5
|
||||
@set UPDATED 6 April 2004
|
||||
@set UPDATED-MONTH April 2004
|
||||
@set EDITION 1.11.15
|
||||
@set VERSION 1.11.15
|
||||
|
|
|
|||
|
|
@ -1,3 +1,114 @@
|
|||
2004-04-07 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* regex.c: Revise "FREE_VAR" macro to eliminate C4090/C4022 warnings
|
||||
in Windows build with Visual C++ 6.0 compiler.
|
||||
(Original patch from Conrad T. Pino <Conrad@Pino.com>.)
|
||||
|
||||
2004-04-04 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* system.h: Correct comment.
|
||||
|
||||
2004-04-04 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* system.h: Restore complete path folding for Cygwin under Windows.
|
||||
Add ISABSOLUTE macro for determining whether a path is absolute to
|
||||
handle X:\ style paths under Windows (& Cygwin).
|
||||
|
||||
2004-03-25 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* system.h: No longer fold back slashes in paths into slashes.
|
||||
|
||||
2004-03-20 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* mkdir.c (mkdir): Declare string args const.
|
||||
|
||||
2004-03-19 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* .cvsignore: Add fnmatch.h for Windows and other platforms which build
|
||||
it.
|
||||
|
||||
2003-12-09 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* system.h: Correct spelling in comment.
|
||||
|
||||
2003-12-03 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* fncase.c (OSX_filename_classes): New array.
|
||||
(fncmp): Use FOLD_FN_CASE rather relying on the fact that it will be
|
||||
#defined to use WNT_filename_classes.
|
||||
* system.h: Define FOLD_FN_CASE, fncmp, and fnfold for all case
|
||||
insensitive filesystems. Share some code between the new generic case
|
||||
insensitive section and the old WOE32 section.
|
||||
|
||||
2003-10-02 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* getpass.c: Back out my last getpass.c update since the new GNULIB
|
||||
version introduced some dependencies which I do not want to introduce
|
||||
on stable.
|
||||
|
||||
2003-10-01 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* getpass.c: Update to new version from GNULIB with Larry's fix
|
||||
incorporated.
|
||||
|
||||
2003-09-30 Larry Jones <lawrence.jones@eds.com>
|
||||
|
||||
* getpass.c: Fix bug that caused password to be echoed on many
|
||||
systems (input may not be followed by output on the same stream
|
||||
without an intervening call to a file positioning function).
|
||||
(Reported by David Everly <david.everly@mci.com>.)
|
||||
|
||||
2003-07-29 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* getpass.c: New file, almost identical to GNULIB's currect version.
|
||||
* Makefile.am (libcvs_a_SOURCES): Add getpass.c.
|
||||
* Makefile.in: Regenerated.
|
||||
|
||||
2003-06-09 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* system.h: Reference the WIN32 macro only in order to define WOE32,
|
||||
in accordance with the GNU convention to avoid implying that we
|
||||
consider the Microsoft Windows Operating Environment any sort of "win".
|
||||
|
||||
2003-05-21 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* Makefile.in: Regenerate with Automake version 1.7.5.
|
||||
|
||||
2003-05-09 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* system.h: Define S_ISSOCK on SCO OpenServer.
|
||||
|
||||
2003-04-10 Larry Jones <lawrence.jones@eds.com>
|
||||
|
||||
* Makefile.in: Regenerated.
|
||||
|
||||
2003-04-03 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* Makefile.am (distclean-local): New target to remove fnmatch.h when
|
||||
necessary. This should be handled by Automake, but until then...
|
||||
(Resolves issue #100
|
||||
<http://ccvs.cvshome.org/issues/show_bug.cgi?id=100> from
|
||||
Serguei E. Leontiev <Serge3lse@cvshome.org>.)
|
||||
|
||||
* Makefile.in: Regenerated.
|
||||
|
||||
2003-03-24 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* Makefile.am: Update copyright notice.
|
||||
|
||||
* Makefile.in: Regenerated.
|
||||
|
||||
2003-02-25 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* Makefile.in: Regenerated.
|
||||
|
||||
2003-01-23 Larry Jones <lawrence.jones@eds.com>
|
||||
|
||||
* getdate.y: Add RCS/CVS timestamp format (Y.mm.dd.hh.mm.ss).
|
||||
* getdate.c: Regenerated.
|
||||
|
||||
* wait.h (WCOREDUMP): New macro.
|
||||
|
||||
2002-12-27 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* getdate.c: Regenerated with Bison 1.35.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
## Process this file with automake to produce Makefile.in
|
||||
# Makefile for library files used by GNU CVS.
|
||||
# Copyright (C) 1986, 1988-1994, 2000 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
|
||||
# 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -44,6 +46,7 @@ libcvs_a_SOURCES = \
|
|||
getline.c \
|
||||
getopt.c \
|
||||
getopt1.c \
|
||||
getpass.c \
|
||||
md5.c \
|
||||
regex.c \
|
||||
savecwd.c \
|
||||
|
|
@ -84,6 +87,10 @@ EXTRA_DIST = \
|
|||
build_lib.com \
|
||||
xgssapi.h
|
||||
|
||||
# Until Automake gets its act together
|
||||
distclean-local:
|
||||
rm -f fnmatch.h
|
||||
|
||||
# for backwards compatibility with the old makefiles
|
||||
realclean: maintainer-clean
|
||||
.PHONY: realclean
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
# Makefile.in generated by automake 1.6.3 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.7.9 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
|
|
@ -15,7 +15,9 @@
|
|||
@SET_MAKE@
|
||||
|
||||
# Makefile for library files used by GNU CVS.
|
||||
# Copyright (C) 1986, 1988-1994, 2000 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
|
||||
# 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -26,79 +28,117 @@
|
|||
# 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.
|
||||
SHELL = @SHELL@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
|
||||
bindir = @bindir@
|
||||
sbindir = @sbindir@
|
||||
libexecdir = @libexecdir@
|
||||
datadir = @datadir@
|
||||
sysconfdir = @sysconfdir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
localstatedir = @localstatedir@
|
||||
libdir = @libdir@
|
||||
infodir = @infodir@
|
||||
mandir = @mandir@
|
||||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ..
|
||||
|
||||
ACLOCAL = @ACLOCAL@
|
||||
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@
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
|
||||
EXEEXT = @EXEEXT@
|
||||
OBJEXT = @OBJEXT@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CSH = @CSH@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EDITOR = @EDITOR@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
KRB4 = @KRB4@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MAKE_TARGETS_IN_VPATH_FALSE = @MAKE_TARGETS_IN_VPATH_FALSE@
|
||||
MAKE_TARGETS_IN_VPATH_TRUE = @MAKE_TARGETS_IN_VPATH_TRUE@
|
||||
MKTEMP = @MKTEMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
PR = @PR@
|
||||
PS2PDF = @PS2PDF@
|
||||
RANLIB = @RANLIB@
|
||||
ROFF = @ROFF@
|
||||
SENDMAIL = @SENDMAIL@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
TEXI2DVI = @TEXI2DVI@
|
||||
VERSION = @VERSION@
|
||||
YACC = @YACC@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||
ac_ct_STRIP = @ac_ct_STRIP@
|
||||
ac_prefix_program = @ac_prefix_program@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
bindir = @bindir@
|
||||
build_alias = @build_alias@
|
||||
datadir = @datadir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host_alias = @host_alias@
|
||||
includedir = @includedir@
|
||||
includeopt = @includeopt@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
oldincludedir = @oldincludedir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
|
||||
# For now we need to include $(top_srcdir)/src because some systems
|
||||
# (at least 'AIX rioscpu2 3 4 000030498200',
|
||||
|
|
@ -132,6 +172,7 @@ libcvs_a_SOURCES = \
|
|||
getline.c \
|
||||
getopt.c \
|
||||
getopt1.c \
|
||||
getpass.c \
|
||||
md5.c \
|
||||
regex.c \
|
||||
savecwd.c \
|
||||
|
|
@ -159,6 +200,7 @@ EXTRA_DIST = \
|
|||
xgssapi.h
|
||||
|
||||
subdir = lib
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
|
|
@ -168,16 +210,12 @@ libcvs_a_AR = $(AR) cru
|
|||
libcvs_a_DEPENDENCIES = @LIBOBJS@
|
||||
am_libcvs_a_OBJECTS = argmatch.$(OBJEXT) getdate.$(OBJEXT) \
|
||||
getline.$(OBJEXT) getopt.$(OBJEXT) getopt1.$(OBJEXT) \
|
||||
md5.$(OBJEXT) regex.$(OBJEXT) savecwd.$(OBJEXT) \
|
||||
sighandle.$(OBJEXT) stripslash.$(OBJEXT) xgetwd.$(OBJEXT) \
|
||||
yesno.$(OBJEXT)
|
||||
getpass.$(OBJEXT) md5.$(OBJEXT) regex.$(OBJEXT) \
|
||||
savecwd.$(OBJEXT) sighandle.$(OBJEXT) stripslash.$(OBJEXT) \
|
||||
xgetwd.$(OBJEXT) yesno.$(OBJEXT)
|
||||
libcvs_a_OBJECTS = $(am_libcvs_a_OBJECTS)
|
||||
|
||||
DEFS = @DEFS@
|
||||
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBS = @LIBS@
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/dup2.Po $(DEPDIR)/fncase.Po \
|
||||
|
|
@ -189,31 +227,31 @@ am__depfiles_maybe = depfiles
|
|||
@AMDEP_TRUE@ $(DEPDIR)/valloc.Po $(DEPDIR)/waitpid.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/argmatch.Po ./$(DEPDIR)/getdate.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/getline.Po ./$(DEPDIR)/getopt.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/getopt1.Po ./$(DEPDIR)/md5.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/regex.Po ./$(DEPDIR)/savecwd.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/sighandle.Po ./$(DEPDIR)/stripslash.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/xgetwd.Po ./$(DEPDIR)/yesno.Po
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/getopt1.Po ./$(DEPDIR)/getpass.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/md5.Po ./$(DEPDIR)/regex.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/savecwd.Po ./$(DEPDIR)/sighandle.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/stripslash.Po ./$(DEPDIR)/xgetwd.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/yesno.Po
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
CFLAGS = @CFLAGS@
|
||||
YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS)
|
||||
DIST_SOURCES = $(libcvs_a_SOURCES)
|
||||
DIST_COMMON = ChangeLog Makefile.am Makefile.in dup2.c fncase.c \
|
||||
fnmatch.c fnmatch.h.in ftruncate.c getdate.c gethostname.c \
|
||||
memmove.c mkdir.c rename.c strerror.c strstr.c strtoul.c \
|
||||
valloc.c waitpid.c
|
||||
DIST_COMMON = $(srcdir)/Makefile.in ChangeLog Makefile.am dup2.c \
|
||||
fncase.c fnmatch.c fnmatch.h.in ftruncate.c getdate.c \
|
||||
gethostname.c memmove.c mkdir.c rename.c strerror.c strstr.c \
|
||||
strtoul.c valloc.c waitpid.c
|
||||
SOURCES = $(libcvs_a_SOURCES)
|
||||
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .o .obj .y
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu lib/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
|
||||
|
||||
AR = ar
|
||||
|
|
@ -250,6 +288,7 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getline.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpass.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regex.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/savecwd.Po@am__quote@
|
||||
|
|
@ -258,26 +297,30 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetwd.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yesno.Po@am__quote@
|
||||
|
||||
distclean-depend:
|
||||
-rm -rf $(DEPDIR) ./$(DEPDIR)
|
||||
|
||||
.c.o:
|
||||
@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
|
||||
@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
|
||||
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
|
||||
@am__fastdepCC_TRUE@ fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
|
||||
.c.obj:
|
||||
@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
$(COMPILE) -c `cygpath -w $<`
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
|
||||
@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
|
||||
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
|
||||
@am__fastdepCC_TRUE@ fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
|
||||
|
||||
.y.c:
|
||||
$(YACCCOMPILE) `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
sed '/^#/ s|y\.tab\.c|$@|' y.tab.c >$@
|
||||
rm -f y.tab.c
|
||||
if test -f y.tab.h; then \
|
||||
to=`echo "$*_H" | sed \
|
||||
-e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
|
||||
|
|
@ -293,11 +336,16 @@ CCDEPMODE = @CCDEPMODE@
|
|||
if test -f y.output; then \
|
||||
mv y.output $*.output; \
|
||||
fi
|
||||
sed '/^#/ s|y\.tab\.c|$@|' y.tab.c >$@t && mv $@t $@
|
||||
rm -f y.tab.c
|
||||
uninstall-info-am:
|
||||
|
||||
ETAGS = etags
|
||||
ETAGSFLAGS =
|
||||
|
||||
CTAGS = ctags
|
||||
CTAGSFLAGS =
|
||||
|
||||
tags: TAGS
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
|
|
@ -323,20 +371,41 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
|||
|| $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
top_distdir = ..
|
||||
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@list='$(DISTFILES)'; for file in $$list; do \
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
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 \
|
||||
|
|
@ -361,7 +430,6 @@ check: check-am
|
|||
all-am: Makefile $(LIBRARIES)
|
||||
|
||||
installdirs:
|
||||
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
|
|
@ -373,7 +441,7 @@ install-am: all-am
|
|||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
INSTALL_STRIP_FLAG=-s \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
|
@ -381,20 +449,21 @@ mostlyclean-generic:
|
|||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||
-rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
-test -z "getdate.c" || rm -f getdate.c
|
||||
-rm -f getdate.c
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
|
||||
distclean-am: clean-am distclean-compile distclean-depend \
|
||||
distclean-generic distclean-tags
|
||||
-rm -rf $(DEPDIR) ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-local distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
|
|
@ -415,27 +484,40 @@ install-man:
|
|||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
|
||||
-rm -rf $(DEPDIR) ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am
|
||||
|
||||
.PHONY: GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-noinstLIBRARIES distclean distclean-compile \
|
||||
distclean-depend distclean-generic distclean-tags distdir dvi \
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-noinstLIBRARIES ctags distclean distclean-compile \
|
||||
distclean-generic distclean-local distclean-tags distdir dvi \
|
||||
dvi-am info info-am install install-am install-data \
|
||||
install-data-am install-exec install-exec-am install-info \
|
||||
install-info-am install-man install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic tags uninstall uninstall-am \
|
||||
uninstall-info-am
|
||||
mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
|
||||
uninstall-am uninstall-info-am
|
||||
|
||||
|
||||
# Until Automake gets its act together
|
||||
distclean-local:
|
||||
rm -f fnmatch.h
|
||||
|
||||
# for backwards compatibility with the old makefiles
|
||||
realclean: maintainer-clean
|
||||
.PHONY: realclean
|
||||
|
|
|
|||
|
|
@ -50,6 +50,8 @@ main ()
|
|||
}
|
||||
#endif
|
||||
|
||||
/* Under Windows NT, filenames are case-insensitive but case-preserving,
|
||||
and both \ and / are path element separators. */
|
||||
unsigned char
|
||||
WNT_filename_classes[] =
|
||||
{
|
||||
|
|
@ -87,18 +89,56 @@ WNT_filename_classes[] =
|
|||
0xf8,0xf9,0xfa,0xfb, 0xfc,0xfd,0xfe,0xff,
|
||||
};
|
||||
|
||||
/* Same as WNT_filename_classes, but do not fold `\' into `/'. */
|
||||
unsigned char
|
||||
OSX_filename_classes[] =
|
||||
{
|
||||
0x00,0x01,0x02,0x03, 0x04,0x05,0x06,0x07,
|
||||
0x08,0x09,0x0a,0x0b, 0x0c,0x0d,0x0e,0x0f,
|
||||
0x10,0x11,0x12,0x13, 0x14,0x15,0x16,0x17,
|
||||
0x18,0x19,0x1a,0x1b, 0x1c,0x1d,0x1e,0x1f,
|
||||
0x20,0x21,0x22,0x23, 0x24,0x25,0x26,0x27,
|
||||
0x28,0x29,0x2a,0x2b, 0x2c,0x2d,0x2e,0x2f,
|
||||
0x30,0x31,0x32,0x33, 0x34,0x35,0x36,0x37,
|
||||
0x38,0x39,0x3a,0x3b, 0x3c,0x3d,0x3e,0x3f,
|
||||
0x40,0x61,0x62,0x63, 0x64,0x65,0x66,0x67,
|
||||
0x68,0x69,0x6a,0x6b, 0x6c,0x6d,0x6e,0x6f,
|
||||
0x70,0x71,0x72,0x73, 0x74,0x75,0x76,0x77,
|
||||
0x78,0x79,0x7a,0x5b, 0x2f,0x5d,0x5e,0x5f,
|
||||
0x60,0x61,0x62,0x63, 0x64,0x65,0x66,0x67,
|
||||
0x68,0x69,0x6a,0x6b, 0x6c,0x6d,0x6e,0x6f,
|
||||
0x70,0x71,0x72,0x73, 0x74,0x75,0x76,0x77,
|
||||
0x78,0x79,0x7a,0x7b, 0x7c,0x7d,0x7e,0x7f,
|
||||
0x80,0x81,0x82,0x83, 0x84,0x85,0x86,0x87,
|
||||
0x88,0x89,0x8a,0x8b, 0x8c,0x8d,0x8e,0x8f,
|
||||
0x90,0x91,0x92,0x93, 0x94,0x95,0x96,0x97,
|
||||
0x98,0x99,0x9a,0x9b, 0x9c,0x9d,0x9e,0x9f,
|
||||
0xa0,0xa1,0xa2,0xa3, 0xa4,0xa5,0xa6,0xa7,
|
||||
0xa8,0xa9,0xaa,0xab, 0xac,0xad,0xae,0xaf,
|
||||
0xb0,0xb1,0xb2,0xb3, 0xb4,0xb5,0xb6,0xb7,
|
||||
0xb8,0xb9,0xba,0xbb, 0xbc,0xbd,0xbe,0xbf,
|
||||
0xc0,0xc1,0xc2,0xc3, 0xc4,0xc5,0xc6,0xc7,
|
||||
0xc8,0xc9,0xca,0xcb, 0xcc,0xcd,0xce,0xcf,
|
||||
0xd0,0xd1,0xd2,0xd3, 0xd4,0xd5,0xd6,0xd7,
|
||||
0xd8,0xd9,0xda,0xdb, 0xdc,0xdd,0xde,0xdf,
|
||||
0xe0,0xe1,0xe2,0xe3, 0xe4,0xe5,0xe6,0xe7,
|
||||
0xe8,0xe9,0xea,0xeb, 0xec,0xed,0xee,0xef,
|
||||
0xf0,0xf1,0xf2,0xf3, 0xf4,0xf5,0xf6,0xf7,
|
||||
0xf8,0xf9,0xfa,0xfb, 0xfc,0xfd,0xfe,0xff,
|
||||
};
|
||||
|
||||
/* Like strcmp, but with the appropriate tweaks for file names.
|
||||
Under Windows NT, filenames are case-insensitive but case-preserving,
|
||||
and both \ and / are path element separators. */
|
||||
and both \ and / are path element separators. Under Mac OS X, filenames
|
||||
are case-insensitive but case-preserving. */
|
||||
int
|
||||
fncmp (const char *n1, const char *n2)
|
||||
{
|
||||
while (*n1 && *n2
|
||||
&& (WNT_filename_classes[(unsigned char) *n1]
|
||||
== WNT_filename_classes[(unsigned char) *n2]))
|
||||
&& (FOLD_FN_CHAR(*n1)
|
||||
== FOLD_FN_CHAR(*n2)))
|
||||
n1++, n2++;
|
||||
return (WNT_filename_classes[(unsigned char) *n1]
|
||||
- WNT_filename_classes[(unsigned char) *n2]);
|
||||
return (FOLD_FN_CHAR(*n1) - FOLD_FN_CHAR(*n2));
|
||||
}
|
||||
|
||||
/* Fold characters in FILENAME to their canonical forms.
|
||||
|
|
|
|||
|
|
@ -175,9 +175,27 @@ item : time {
|
|||
| rel {
|
||||
yyHaveRel++;
|
||||
}
|
||||
| cvsstamp {
|
||||
yyHaveTime++;
|
||||
yyHaveDate++;
|
||||
yyHaveZone++;
|
||||
}
|
||||
| number
|
||||
;
|
||||
|
||||
cvsstamp: tUNUMBER '.' tUNUMBER '.' tUNUMBER '.' tUNUMBER '.' tUNUMBER '.' tUNUMBER {
|
||||
yyYear = $1;
|
||||
if (yyYear < 100) yyYear += 1900;
|
||||
yyMonth = $3;
|
||||
yyDay = $5;
|
||||
yyHour = $7;
|
||||
yyMinutes = $9;
|
||||
yySeconds = $11;
|
||||
yyDSTmode = DSToff;
|
||||
yyTimezone = 0;
|
||||
}
|
||||
;
|
||||
|
||||
time : tUNUMBER tMERIDIAN {
|
||||
yyHour = $1;
|
||||
yyMinutes = 0;
|
||||
|
|
|
|||
106
contrib/cvs/lib/getpass.c
Normal file
106
contrib/cvs/lib/getpass.c
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
/* Copyright (C) 1992,93,94,95,96,97,98,99,2000, 2001 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
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.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#ifndef SEEK_CUR
|
||||
#define SEEK_CUR 1
|
||||
#endif
|
||||
#include <termios.h>
|
||||
#include <unistd.h>
|
||||
#include "getline.h"
|
||||
|
||||
/* It is desirable to use this bit on systems that have it.
|
||||
The only bit of terminal state we want to twiddle is echoing, which is
|
||||
done in software; there is no need to change the state of the terminal
|
||||
hardware. */
|
||||
|
||||
#ifndef TCSASOFT
|
||||
# define TCSASOFT 0
|
||||
#endif
|
||||
|
||||
char *
|
||||
getpass (const char *prompt)
|
||||
{
|
||||
FILE *in, *out;
|
||||
struct termios s, t;
|
||||
int tty_changed;
|
||||
static char *buf;
|
||||
static size_t bufsize;
|
||||
ssize_t nread;
|
||||
|
||||
/* Try to write to and read from the terminal if we can.
|
||||
If we can't open the terminal, use stderr and stdin. */
|
||||
|
||||
in = fopen ("/dev/tty", "w+");
|
||||
if (in == NULL)
|
||||
{
|
||||
in = stdin;
|
||||
out = stderr;
|
||||
}
|
||||
else
|
||||
out = in;
|
||||
|
||||
/* Turn echoing off if it is on now. */
|
||||
|
||||
if (tcgetattr (fileno (in), &t) == 0)
|
||||
{
|
||||
/* Save the old one. */
|
||||
s = t;
|
||||
/* Tricky, tricky. */
|
||||
t.c_lflag &= ~(ECHO|ISIG);
|
||||
tty_changed = (tcsetattr (fileno (in), TCSAFLUSH|TCSASOFT, &t) == 0);
|
||||
}
|
||||
else
|
||||
tty_changed = 0;
|
||||
|
||||
/* Write the prompt. */
|
||||
fputs (prompt, out);
|
||||
fflush (out);
|
||||
|
||||
/* Read the password. */
|
||||
nread = getline (&buf, &bufsize, in);
|
||||
if (buf != NULL)
|
||||
{
|
||||
if (nread < 0)
|
||||
buf[0] = '\0';
|
||||
else if (buf[nread - 1] == '\n')
|
||||
{
|
||||
/* Remove the newline. */
|
||||
buf[nread - 1] = '\0';
|
||||
if (tty_changed)
|
||||
{
|
||||
/* Write the newline that was not echoed. */
|
||||
if (out == in) fseek (out, 0, SEEK_CUR);
|
||||
putc ('\n', out);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Restore the original setting. */
|
||||
if (tty_changed)
|
||||
(void) tcsetattr (fileno (in), TCSAFLUSH|TCSASOFT, &s);
|
||||
|
||||
if (in != stdin)
|
||||
/* We opened the terminal; now close it. */
|
||||
fclose (in);
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
|
@ -37,7 +37,7 @@ extern int errno;
|
|||
|
||||
int
|
||||
mkdir (dpath, dmode)
|
||||
char *dpath;
|
||||
const char *dpath;
|
||||
int dmode;
|
||||
{
|
||||
int cpid, status;
|
||||
|
|
|
|||
|
|
@ -4001,7 +4001,7 @@ static boolean alt_match_null_string_p (),
|
|||
|
||||
/* Free everything we malloc. */
|
||||
#ifdef MATCH_MAY_ALLOCATE
|
||||
#define FREE_VAR(var) if (var) { REGEX_FREE (var); var = NULL; } else
|
||||
#define FREE_VAR(var) if (var) { (void)REGEX_FREE ((void *)var); var = NULL; } else
|
||||
#define FREE_VARIABLES() \
|
||||
do { \
|
||||
REGEX_FREE_STACK (fail_stack.stack); \
|
||||
|
|
|
|||
|
|
@ -84,13 +84,18 @@
|
|||
# endif
|
||||
#endif
|
||||
|
||||
#if !defined(S_ISSOCK) && defined(S_IFSOCK)
|
||||
# if defined(S_IFMT)
|
||||
# define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
|
||||
# else
|
||||
# define S_ISSOCK(m) ((m) & S_IFSOCK)
|
||||
# endif
|
||||
#endif
|
||||
#ifndef S_ISSOCK
|
||||
# if defined( S_IFSOCK )
|
||||
# ifdef S_IFMT
|
||||
# define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
|
||||
# else
|
||||
# define S_ISSOCK(m) ((m) & S_IFSOCK)
|
||||
# endif /* S_IFMT */
|
||||
# elif defined( S_ISNAM )
|
||||
/* SCO OpenServer 5.0.6a */
|
||||
# define S_ISSOCK S_ISNAM
|
||||
# endif /* !S_IFSOCK && S_ISNAM */
|
||||
#endif /* !S_ISSOCK */
|
||||
|
||||
#if !defined(S_ISMPB) && defined(S_IFMPB) /* V7 */
|
||||
# if defined(S_IFMT)
|
||||
|
|
@ -452,30 +457,65 @@ extern int errno;
|
|||
#define CVS_FNMATCH fnmatch
|
||||
#endif
|
||||
|
||||
#if defined (__CYGWIN32__) || defined (WIN32)
|
||||
#ifdef WIN32
|
||||
/*
|
||||
* According to GNU conventions, we should avoid referencing any macro
|
||||
* containing "WIN" as a reference to Microsoft Windows, as we would like to
|
||||
* avoid any implication that we consider Microsoft Windows any sort of "win".
|
||||
*
|
||||
* FIXME: As of 2003-06-09, folks on the GNULIB project were discussing
|
||||
* defining a configure macro to define WOE32 appropriately. If they ever do
|
||||
* write such a beast, we should use it, though in most cases it would be
|
||||
* preferable to avoid referencing any OS or compiler anyhow, per Autoconf
|
||||
* convention, and reference only tested features of the system.
|
||||
*/
|
||||
# define WOE32 1
|
||||
#endif /* WIN32 */
|
||||
|
||||
/* Under Windows NT, filenames are case-insensitive, and both / and \
|
||||
are path component separators. */
|
||||
|
||||
#define FOLD_FN_CHAR(c) (WNT_filename_classes[(unsigned char) (c)])
|
||||
#ifdef WOE32
|
||||
/* Under Windows NT, filenames are case-insensitive. */
|
||||
# define FILENAMES_CASE_INSENSITIVE 1
|
||||
#endif /* WOE32 */
|
||||
|
||||
|
||||
|
||||
#ifdef FILENAMES_CASE_INSENSITIVE
|
||||
|
||||
# if defined (__CYGWIN32__) || defined (WOE32)
|
||||
/* Under Windows NT, filenames are case-insensitive, and both / and \
|
||||
are path component separators. */
|
||||
# define FOLD_FN_CHAR(c) (WNT_filename_classes[(unsigned char) (c)])
|
||||
extern unsigned char WNT_filename_classes[];
|
||||
#define FILENAMES_CASE_INSENSITIVE 1
|
||||
/* Is the character C a path name separator? Under
|
||||
Windows NT, you can use either / or \. */
|
||||
# define ISDIRSEP(c) (FOLD_FN_CHAR(c) == '/')
|
||||
# define ISABSOLUTE(s) (ISDIRSEP(s[0]) || FOLD_FN_CHAR(s[0]) >= 'a' && FOLD_FN_CHAR(s[0]) <= 'z' && s[1] == ':' && ISDIRSEP(s[2]))
|
||||
# else /* ! WOE32 */
|
||||
/* As far as I know, both Cygwin and Macintosh OS X can make it here,
|
||||
* but since the OS X fold just folds a-z into A-Z or visa-versa, I'm just
|
||||
* using it for Cygwin too. The var name below could probably use a
|
||||
* rename.
|
||||
*
|
||||
* Under Mac OS X & Cygwin, filenames are case-insensitive.
|
||||
*/
|
||||
# define FOLD_FN_CHAR(c) (OSX_filename_classes[(unsigned char) (c)])
|
||||
extern unsigned char OSX_filename_classes[];
|
||||
# endif /* __CYGWIN32__ || WOE32 */
|
||||
|
||||
/* Is the character C a path name separator? Under
|
||||
Windows NT, you can use either / or \. */
|
||||
#define ISDIRSEP(c) (FOLD_FN_CHAR(c) == '/')
|
||||
/* The following need to be declared for all case insensitive filesystems.
|
||||
* When not FOLD_FN_CHAR is not #defined, a default definition for these
|
||||
* functions is provided later in this header file. */
|
||||
|
||||
/* Like strcmp, but with the appropriate tweaks for file names.
|
||||
Under Windows NT, filenames are case-insensitive but case-preserving,
|
||||
and both \ and / are path element separators. */
|
||||
/* Like strcmp, but with the appropriate tweaks for file names. */
|
||||
extern int fncmp (const char *n1, const char *n2);
|
||||
|
||||
/* Fold characters in FILENAME to their canonical forms.
|
||||
If FOLD_FN_CHAR is not #defined, the system provides a default
|
||||
definition for this. */
|
||||
/* Fold characters in FILENAME to their canonical forms. */
|
||||
extern void fnfold (char *FILENAME);
|
||||
|
||||
#endif /* defined (__CYGWIN32__) || defined (WIN32) */
|
||||
#endif /* FILENAMES_CASE_INSENSITIVE */
|
||||
|
||||
|
||||
|
||||
/* Some file systems are case-insensitive. If FOLD_FN_CHAR is
|
||||
#defined, it maps the character C onto its "canonical" form. In a
|
||||
|
|
@ -483,15 +523,22 @@ extern void fnfold (char *FILENAME);
|
|||
to lower case. Under Windows NT, / and \ are both path component
|
||||
separators, so FOLD_FN_CHAR would map them both to /. */
|
||||
#ifndef FOLD_FN_CHAR
|
||||
#define FOLD_FN_CHAR(c) (c)
|
||||
#define fnfold(filename) (filename)
|
||||
#define fncmp strcmp
|
||||
# define FOLD_FN_CHAR(c) (c)
|
||||
# define fnfold(filename) (filename)
|
||||
# define fncmp strcmp
|
||||
#endif
|
||||
|
||||
/* Different file systems have different path component separators.
|
||||
For the VMS port we might need to abstract further back than this. */
|
||||
#ifndef ISDIRSEP
|
||||
#define ISDIRSEP(c) ((c) == '/')
|
||||
# define ISDIRSEP(c) ((c) == '/')
|
||||
#endif
|
||||
|
||||
/* Different file systems can have different naming patterns which designate
|
||||
* a path as absolute
|
||||
*/
|
||||
#ifndef ISABSOLUTE
|
||||
# define ISABSOLUTE(s) ISDIRSEP(s[0])
|
||||
#endif
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -27,6 +27,9 @@
|
|||
#ifndef WIFEXITED
|
||||
#define WIFEXITED(w) (((w) & 0xff) == 0)
|
||||
#endif
|
||||
#ifndef WCOREDUMP /* not POSIX, but common and useful */
|
||||
#define WCOREDUMP(w) (((w) & 0x80) != 0)
|
||||
#endif
|
||||
|
||||
#ifndef WSTOPSIG
|
||||
#define WSTOPSIG(w) (((w) >> 8) & 0xff)
|
||||
|
|
|
|||
|
|
@ -1,3 +1,51 @@
|
|||
2004-02-12 Derek Price <derek@ximbiot.com>
|
||||
|
||||
Close issue #162.
|
||||
* cvs.1: Remove references to the removed global -l option.
|
||||
(Original patch from Ville Skyttä <scop@cvshome.org>.)
|
||||
|
||||
2004-02-12 Derek Price <derek@ximbiot.com>
|
||||
|
||||
Close issue #161.
|
||||
* cvs.1, cvs.5: A couple of spelling fixes.
|
||||
(Patch from Ville Skyttä <scop@cvshome.org>.)
|
||||
|
||||
2004-01-30 Derek Price <derek@ximbiot.com>
|
||||
|
||||
Close issue #146.
|
||||
* cvs.1: Reference `cvs --help diff' rather than the rcsdiff man page.
|
||||
Use consistent spelling of `initialization'.
|
||||
(Patch from Ville Skyttä <scop@cvshome.org>.)
|
||||
|
||||
2003-05-21 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* Makefile.in: Regenerate with Automake version 1.7.5.
|
||||
|
||||
2003-04-10 Larry Jones <lawrence.jones@eds.com>
|
||||
|
||||
* Makefile.in: Regenerated.
|
||||
|
||||
2003-03-24 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* Makefile.am: Update copyright notice.
|
||||
|
||||
* Makefile.in: Regenerated.
|
||||
|
||||
2003-03-05 Mark D. Baushke <mdb@cvshome.org>
|
||||
|
||||
* cvs.1 (CVS_LOCAL_BRANCH_NUM): Backout CVS_LOCAL_BRANCH_NUM feature.
|
||||
|
||||
* cvs.1 (CVS_LOCAL_BRANCH_NUM): Document new environment variable.
|
||||
|
||||
2003-02-26 Larry Jones <lawrence.jones@eds.com>
|
||||
|
||||
* cvs.1: Note using "cvs" in .cvsrc for global options.
|
||||
(Patch from "Mark D. Baushke" <mdb@cvshome.org>).
|
||||
|
||||
2003-02-25 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* Makefile.in: Regenerated.
|
||||
|
||||
2002-09-24 Derek Price <derek@ximbiot.com>
|
||||
|
||||
* Makefile.in: Regenerated using Automake 1.6.3.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
## Process this file with automake to produce Makefile.in
|
||||
# Makefile.am for GNU CVS man pages.
|
||||
# Copyright (C) 1986-1992, 2000 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
|
||||
# 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
# Makefile.in generated by automake 1.6.3 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.7.9 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
|
|
@ -15,7 +15,9 @@
|
|||
@SET_MAKE@
|
||||
|
||||
# Makefile.am for GNU CVS man pages.
|
||||
# Copyright (C) 1986-1992, 2000 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
|
||||
# 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -26,79 +28,117 @@
|
|||
# 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.
|
||||
SHELL = @SHELL@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
|
||||
bindir = @bindir@
|
||||
sbindir = @sbindir@
|
||||
libexecdir = @libexecdir@
|
||||
datadir = @datadir@
|
||||
sysconfdir = @sysconfdir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
localstatedir = @localstatedir@
|
||||
libdir = @libdir@
|
||||
infodir = @infodir@
|
||||
mandir = @mandir@
|
||||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ..
|
||||
|
||||
ACLOCAL = @ACLOCAL@
|
||||
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@
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
|
||||
EXEEXT = @EXEEXT@
|
||||
OBJEXT = @OBJEXT@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CSH = @CSH@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EDITOR = @EDITOR@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
KRB4 = @KRB4@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MAKE_TARGETS_IN_VPATH_FALSE = @MAKE_TARGETS_IN_VPATH_FALSE@
|
||||
MAKE_TARGETS_IN_VPATH_TRUE = @MAKE_TARGETS_IN_VPATH_TRUE@
|
||||
MKTEMP = @MKTEMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
PR = @PR@
|
||||
PS2PDF = @PS2PDF@
|
||||
RANLIB = @RANLIB@
|
||||
ROFF = @ROFF@
|
||||
SENDMAIL = @SENDMAIL@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
TEXI2DVI = @TEXI2DVI@
|
||||
VERSION = @VERSION@
|
||||
YACC = @YACC@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||
ac_ct_STRIP = @ac_ct_STRIP@
|
||||
ac_prefix_program = @ac_prefix_program@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
bindir = @bindir@
|
||||
build_alias = @build_alias@
|
||||
datadir = @datadir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host_alias = @host_alias@
|
||||
includedir = @includedir@
|
||||
includeopt = @includeopt@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
oldincludedir = @oldincludedir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
|
||||
man_MANS = cvs.1 cvs.5 cvsbug.8
|
||||
EXTRA_DIST = \
|
||||
|
|
@ -106,6 +146,7 @@ EXTRA_DIST = \
|
|||
$(man_MANS)
|
||||
|
||||
subdir = man
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
|
|
@ -113,14 +154,14 @@ DIST_SOURCES =
|
|||
|
||||
NROFF = nroff
|
||||
MANS = $(man_MANS)
|
||||
DIST_COMMON = ChangeLog Makefile.am Makefile.in
|
||||
DIST_COMMON = $(srcdir)/Makefile.in ChangeLog Makefile.am
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu man/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
|
||||
uninstall-info-am:
|
||||
|
||||
|
|
@ -160,6 +201,10 @@ uninstall-man1:
|
|||
done; \
|
||||
for i in $$list; do \
|
||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
||||
case "$$ext" in \
|
||||
1*) ;; \
|
||||
*) ext='1' ;; \
|
||||
esac; \
|
||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
||||
inst=`echo $$inst | sed -e 's/^.*\///'`; \
|
||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
||||
|
|
@ -203,6 +248,10 @@ uninstall-man5:
|
|||
done; \
|
||||
for i in $$list; do \
|
||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
||||
case "$$ext" in \
|
||||
5*) ;; \
|
||||
*) ext='5' ;; \
|
||||
esac; \
|
||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
||||
inst=`echo $$inst | sed -e 's/^.*\///'`; \
|
||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
||||
|
|
@ -246,6 +295,10 @@ uninstall-man8:
|
|||
done; \
|
||||
for i in $$list; do \
|
||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
||||
case "$$ext" in \
|
||||
8*) ;; \
|
||||
*) ext='8' ;; \
|
||||
esac; \
|
||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
||||
inst=`echo $$inst | sed -e 's/^.*\///'`; \
|
||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
||||
|
|
@ -255,13 +308,22 @@ uninstall-man8:
|
|||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
ctags: CTAGS
|
||||
CTAGS:
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
top_distdir = ..
|
||||
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@list='$(DISTFILES)'; for file in $$list; do \
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
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 \
|
||||
|
|
@ -287,7 +349,6 @@ all-am: Makefile $(MANS)
|
|||
|
||||
installdirs:
|
||||
$(mkinstalldirs) $(DESTDIR)$(man1dir) $(DESTDIR)$(man5dir) $(DESTDIR)$(man8dir)
|
||||
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
|
|
@ -299,7 +360,7 @@ install-am: all-am
|
|||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
INSTALL_STRIP_FLAG=-s \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
|
@ -307,7 +368,7 @@ mostlyclean-generic:
|
|||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||
-rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
|
|
@ -317,7 +378,7 @@ clean: clean-am
|
|||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
|
@ -339,13 +400,21 @@ install-man: install-man1 install-man5 install-man8
|
|||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am uninstall-man
|
||||
|
||||
uninstall-man: uninstall-man1 uninstall-man5 uninstall-man8
|
||||
|
|
@ -356,9 +425,9 @@ uninstall-man: uninstall-man1 uninstall-man5 uninstall-man8
|
|||
install-exec-am install-info install-info-am install-man \
|
||||
install-man1 install-man5 install-man8 install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
uninstall uninstall-am uninstall-info-am uninstall-man \
|
||||
uninstall-man1 uninstall-man5 uninstall-man8
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
|
||||
pdf-am ps ps-am uninstall uninstall-am uninstall-info-am \
|
||||
uninstall-man uninstall-man1 uninstall-man5 uninstall-man8
|
||||
|
||||
|
||||
# for backwards compatibility with the old makefiles
|
||||
|
|
|
|||
|
|
@ -208,14 +208,6 @@ Do not read the
|
|||
.B cvs
|
||||
startup file (\fI~/.cvsrc\fP).
|
||||
.TP
|
||||
.B \-l
|
||||
Do not log the
|
||||
.I cvs_command
|
||||
in the command history (but execute it anyway). See the description
|
||||
of the
|
||||
.B history
|
||||
command for information on command history.
|
||||
.TP
|
||||
.B \-n
|
||||
Do not change any files. Attempt to execute the
|
||||
.IR cvs_command ,
|
||||
|
|
@ -297,6 +289,15 @@ it will have the effect of producing context sensitive diffs for
|
|||
all executions of
|
||||
.` "cvs diff"
|
||||
).
|
||||
.SP
|
||||
Global options are specified using the \fBcvs\fP keyword. For example,
|
||||
the following:
|
||||
.SP
|
||||
cvs \-q
|
||||
.SP
|
||||
will mean that all
|
||||
.` "cvs"
|
||||
commands will behave as thought he \-q global option had been supplied.
|
||||
.SH "CVS COMMAND SUMMARY"
|
||||
Here are brief descriptions of all the
|
||||
.B cvs
|
||||
|
|
@ -510,15 +511,6 @@ subdirectories. Available with the following commands:
|
|||
.BR checkout ", " commit ", " diff ", "
|
||||
.BR export ", " remove ", " rdiff ", " rtag ", "
|
||||
.BR status ", " tag ", and " update .
|
||||
.I Warning:
|
||||
this is not the same
|
||||
as the overall
|
||||
.` "cvs \-l"
|
||||
option, which you can specify to the
|
||||
.I left
|
||||
of a
|
||||
.B cvs
|
||||
command!
|
||||
.TP
|
||||
.B \-n
|
||||
Do
|
||||
|
|
@ -1046,7 +1038,7 @@ Others would simply do
|
|||
.` "cvs checkout -rEXPR1 whatever_module"
|
||||
to work with you on the experimental change.
|
||||
.TP
|
||||
\fBdiff\fP [\fB\-kl\fP] [\fIrcsdiff_options\fP] [[\fB\-r\fP \fIrev1\fP | \fB\-D\fP \fIdate1\fP] [\fB\-r\fP \fIrev2\fP | \fB\-D\fP \fIdate2\fP]] [\fIfiles.\|.\|.\fP]
|
||||
\fBdiff\fP [\fB\-kl\fP] [\fIformat_options\fP] [[\fB\-r\fP \fIrev1\fP | \fB\-D\fP \fIdate1\fP] [\fB\-r\fP \fIrev2\fP | \fB\-D\fP \fIdate2\fP]] [\fIfiles.\|.\|.\fP]
|
||||
.I Requires:
|
||||
working directory, repository.
|
||||
.br
|
||||
|
|
@ -1077,8 +1069,9 @@ and
|
|||
options can be mixed together with at most two options ever specified.
|
||||
.SP
|
||||
See
|
||||
.BR rcsdiff ( 1 )
|
||||
for a list of other accepted options.
|
||||
.` "cvs --help diff"
|
||||
for a list of supported
|
||||
.IR format_options .
|
||||
.SP
|
||||
If you don't specify any files,
|
||||
.B diff
|
||||
|
|
@ -1409,7 +1402,7 @@ is able to find the files that are located in other directories.
|
|||
.SP
|
||||
The standard option \fIflags\fP \fB\-f\fP, and \fB\-l\fP
|
||||
are available with this command. There are also several
|
||||
special options flags:
|
||||
special option flags:
|
||||
.SP
|
||||
If you use the
|
||||
.B \-s
|
||||
|
|
@ -1878,7 +1871,7 @@ Files in home directories:
|
|||
\&.cvsrc
|
||||
The
|
||||
.B cvs
|
||||
initialisation file. Lines in this file can be used to specify default
|
||||
initialization file. Lines in this file can be used to specify default
|
||||
options for each
|
||||
.B cvs
|
||||
command. For example the line
|
||||
|
|
|
|||
|
|
@ -284,7 +284,7 @@ containing the logging forms) rather than command templates.
|
|||
The `\|editinfo\|' file allows you to execute a script \fIbefore the
|
||||
commit starts\fP, but after the log information is recorded. These
|
||||
"edit" scripts can verify information recorded in the log file. If
|
||||
the edit script exits wth a non-zero exit status, the commit is aborted.
|
||||
the edit script exits with a non-zero exit status, the commit is aborted.
|
||||
.SP
|
||||
The `\|loginfo\|' file contains commands to execute \fIat the end\fP
|
||||
of a commit. The text specified as a commit log message is piped
|
||||
|
|
|
|||
39
contrib/cvs/mktemp.sh
Normal file
39
contrib/cvs/mktemp.sh
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
# mktemp
|
||||
|
||||
# Copyright (c) Derek Price, Ximbiot <http://ximbiot.com>, and the
|
||||
# Free Software Foundation, Inc. <http://gnu.org>
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# 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.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
|
||||
|
||||
# This Bourne Shell scriptlet is intended as a simple replacement for
|
||||
# the BSD mktemp function for systems that do not support mktemp. It
|
||||
# currently does not check that the files it is creating did not exist
|
||||
# previously and it does not verify that it successfully creates the
|
||||
# files it returns the names of.
|
||||
mktemp() {
|
||||
if test x"$1" = x-d; then
|
||||
tmp=`echo $2 |sed "s/XXXXXX/$$/"`
|
||||
(umask 077 && exec mkdir $tmp) || return 1
|
||||
else
|
||||
tmp=`echo $1 |sed "s/XXXXXX/$$/"`
|
||||
(umask 077 && touch $tmp) || return 1
|
||||
fi
|
||||
echo $tmp
|
||||
return 0
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,6 +1,8 @@
|
|||
## Process this file with automake to produce Makefile.in
|
||||
# Makefile for GNU CVS program.
|
||||
# Copyright (C) 1986, 1988-1990, 2000 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
|
||||
# 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -71,6 +73,7 @@ cvs_SOURCES = \
|
|||
run.c \
|
||||
scramble.c \
|
||||
server.c \
|
||||
stack.c \
|
||||
status.c \
|
||||
subr.c \
|
||||
tag.c \
|
||||
|
|
@ -88,10 +91,12 @@ cvs_SOURCES = \
|
|||
fileattr.h \
|
||||
hardlink.h \
|
||||
hash.h \
|
||||
history.h \
|
||||
myndbm.h \
|
||||
rcs.h \
|
||||
root.h \
|
||||
server.h \
|
||||
stack.h \
|
||||
update.h \
|
||||
watch.h
|
||||
|
||||
|
|
@ -118,11 +123,11 @@ check-local: localcheck remotecheck
|
|||
|
||||
.PHONY: localcheck
|
||||
localcheck:
|
||||
$(SHELL) $(srcdir)/sanity.sh `pwd`/cvs
|
||||
$(SHELL) $(srcdir)/sanity.sh `pwd`/cvs$(EXEEXT)
|
||||
|
||||
.PHONY: remotecheck
|
||||
remotecheck: all
|
||||
$(SHELL) $(srcdir)/sanity.sh -r `pwd`/cvs
|
||||
$(SHELL) $(srcdir)/sanity.sh -r `pwd`/cvs$(EXEEXT)
|
||||
|
||||
## MAINTAINER Targets
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
# Makefile.in generated by automake 1.6.3 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.7.9 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
|
|
@ -15,7 +15,9 @@
|
|||
@SET_MAKE@
|
||||
|
||||
# Makefile for GNU CVS program.
|
||||
# Copyright (C) 1986, 1988-1990, 2000 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
|
||||
# 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -30,76 +32,114 @@
|
|||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
|
||||
bindir = @bindir@
|
||||
sbindir = @sbindir@
|
||||
libexecdir = @libexecdir@
|
||||
datadir = @datadir@
|
||||
sysconfdir = @sysconfdir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
localstatedir = @localstatedir@
|
||||
libdir = @libdir@
|
||||
infodir = @infodir@
|
||||
mandir = @mandir@
|
||||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ..
|
||||
|
||||
ACLOCAL = @ACLOCAL@
|
||||
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@
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
|
||||
EXEEXT = @EXEEXT@
|
||||
OBJEXT = @OBJEXT@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
|
||||
SHELL = /bin/sh
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CSH = @CSH@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EDITOR = @EDITOR@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
KRB4 = @KRB4@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MAKE_TARGETS_IN_VPATH_FALSE = @MAKE_TARGETS_IN_VPATH_FALSE@
|
||||
MAKE_TARGETS_IN_VPATH_TRUE = @MAKE_TARGETS_IN_VPATH_TRUE@
|
||||
MKTEMP = @MKTEMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
PR = @PR@
|
||||
PS2PDF = @PS2PDF@
|
||||
RANLIB = @RANLIB@
|
||||
ROFF = @ROFF@
|
||||
SENDMAIL = @SENDMAIL@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
|
||||
SHELL = /bin/sh
|
||||
STRIP = @STRIP@
|
||||
TEXI2DVI = @TEXI2DVI@
|
||||
VERSION = @VERSION@
|
||||
YACC = @YACC@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||
ac_ct_STRIP = @ac_ct_STRIP@
|
||||
ac_prefix_program = @ac_prefix_program@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
bindir = @bindir@
|
||||
build_alias = @build_alias@
|
||||
datadir = @datadir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host_alias = @host_alias@
|
||||
includedir = @includedir@
|
||||
includeopt = @includeopt@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
oldincludedir = @oldincludedir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
|
||||
# $(includeopt) is CVS specific and set by configure
|
||||
# FIXME - This includes line is dependant on its order. This means there is
|
||||
|
|
@ -157,6 +197,7 @@ cvs_SOURCES = \
|
|||
run.c \
|
||||
scramble.c \
|
||||
server.c \
|
||||
stack.c \
|
||||
status.c \
|
||||
subr.c \
|
||||
tag.c \
|
||||
|
|
@ -174,10 +215,12 @@ cvs_SOURCES = \
|
|||
fileattr.h \
|
||||
hardlink.h \
|
||||
hash.h \
|
||||
history.h \
|
||||
myndbm.h \
|
||||
rcs.h \
|
||||
root.h \
|
||||
server.h \
|
||||
stack.h \
|
||||
update.h \
|
||||
watch.h
|
||||
|
||||
|
|
@ -203,6 +246,7 @@ EXTRA_DIST = \
|
|||
sanity.sh
|
||||
|
||||
subdir = src
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES = cvsbug
|
||||
|
|
@ -223,20 +267,17 @@ am_cvs_OBJECTS = add.$(OBJEXT) admin.$(OBJEXT) annotate.$(OBJEXT) \
|
|||
patch.$(OBJEXT) rcs.$(OBJEXT) rcscmds.$(OBJEXT) \
|
||||
recurse.$(OBJEXT) release.$(OBJEXT) remove.$(OBJEXT) \
|
||||
repos.$(OBJEXT) root.$(OBJEXT) run.$(OBJEXT) scramble.$(OBJEXT) \
|
||||
server.$(OBJEXT) status.$(OBJEXT) subr.$(OBJEXT) tag.$(OBJEXT) \
|
||||
update.$(OBJEXT) version.$(OBJEXT) vers_ts.$(OBJEXT) \
|
||||
watch.$(OBJEXT) wrapper.$(OBJEXT) zlib.$(OBJEXT)
|
||||
server.$(OBJEXT) stack.$(OBJEXT) status.$(OBJEXT) \
|
||||
subr.$(OBJEXT) tag.$(OBJEXT) update.$(OBJEXT) version.$(OBJEXT) \
|
||||
vers_ts.$(OBJEXT) watch.$(OBJEXT) wrapper.$(OBJEXT) \
|
||||
zlib.$(OBJEXT)
|
||||
cvs_OBJECTS = $(am_cvs_OBJECTS)
|
||||
cvs_DEPENDENCIES = ../diff/libdiff.a ../lib/libcvs.a ../zlib/libz.a
|
||||
cvs_LDFLAGS =
|
||||
SCRIPTS = $(bin_SCRIPTS)
|
||||
|
||||
|
||||
DEFS = @DEFS@
|
||||
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBS = @LIBS@
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/add.Po ./$(DEPDIR)/admin.Po \
|
||||
|
|
@ -261,28 +302,28 @@ am__depfiles_maybe = depfiles
|
|||
@AMDEP_TRUE@ ./$(DEPDIR)/release.Po ./$(DEPDIR)/remove.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/repos.Po ./$(DEPDIR)/root.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/run.Po ./$(DEPDIR)/scramble.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/server.Po ./$(DEPDIR)/status.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/subr.Po ./$(DEPDIR)/tag.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/update.Po ./$(DEPDIR)/vers_ts.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/version.Po ./$(DEPDIR)/watch.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/wrapper.Po ./$(DEPDIR)/zlib.Po
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/server.Po ./$(DEPDIR)/stack.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/status.Po ./$(DEPDIR)/subr.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/tag.Po ./$(DEPDIR)/update.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/vers_ts.Po ./$(DEPDIR)/version.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/watch.Po ./$(DEPDIR)/wrapper.Po \
|
||||
@AMDEP_TRUE@ ./$(DEPDIR)/zlib.Po
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
CFLAGS = @CFLAGS@
|
||||
DIST_SOURCES = $(cvs_SOURCES)
|
||||
DIST_COMMON = ChangeLog Makefile.am Makefile.in cvsbug.in
|
||||
DIST_COMMON = $(srcdir)/Makefile.in ChangeLog Makefile.am cvsbug.in
|
||||
SOURCES = $(cvs_SOURCES)
|
||||
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .o .obj
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu src/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
|
||||
cvsbug: $(top_builddir)/config.status cvsbug.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
|
||||
|
|
@ -296,7 +337,7 @@ install-binPROGRAMS: $(bin_PROGRAMS)
|
|||
; then \
|
||||
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||
echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
|
||||
$(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f; \
|
||||
$(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
|
|
@ -385,6 +426,7 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scramble.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/server.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/status.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subr.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tag.Po@am__quote@
|
||||
|
|
@ -395,26 +437,35 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wrapper.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zlib.Po@am__quote@
|
||||
|
||||
distclean-depend:
|
||||
-rm -rf ./$(DEPDIR)
|
||||
|
||||
.c.o:
|
||||
@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
|
||||
@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
|
||||
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
|
||||
@am__fastdepCC_TRUE@ fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
|
||||
|
||||
.c.obj:
|
||||
@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
$(COMPILE) -c `cygpath -w $<`
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
|
||||
@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
|
||||
@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
|
||||
@am__fastdepCC_TRUE@ fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
|
||||
uninstall-info-am:
|
||||
|
||||
ETAGS = etags
|
||||
ETAGSFLAGS =
|
||||
|
||||
CTAGS = ctags
|
||||
CTAGSFLAGS =
|
||||
|
||||
tags: TAGS
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
|
|
@ -440,20 +491,41 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
|||
|| $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
top_distdir = ..
|
||||
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@list='$(DISTFILES)'; for file in $$list; do \
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
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 \
|
||||
|
|
@ -480,7 +552,6 @@ all-am: Makefile $(PROGRAMS) $(SCRIPTS)
|
|||
|
||||
installdirs:
|
||||
$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(bindir)
|
||||
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
|
|
@ -492,7 +563,7 @@ install-am: all-am
|
|||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
INSTALL_STRIP_FLAG=-s \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
|
@ -500,7 +571,7 @@ mostlyclean-generic:
|
|||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||
-rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
|
|
@ -511,9 +582,10 @@ clean: clean-am
|
|||
clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
|
||||
distclean-am: clean-am distclean-compile distclean-depend \
|
||||
distclean-generic distclean-tags
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
|
|
@ -534,38 +606,47 @@ install-man:
|
|||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \
|
||||
uninstall-info-am
|
||||
|
||||
.PHONY: GTAGS all all-am check check-am check-local clean \
|
||||
clean-binPROGRAMS clean-generic distclean distclean-compile \
|
||||
distclean-depend distclean-generic distclean-tags distdir dvi \
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am check-local clean \
|
||||
clean-binPROGRAMS clean-generic ctags distclean \
|
||||
distclean-compile distclean-generic distclean-tags distdir dvi \
|
||||
dvi-am info info-am install install-am install-binPROGRAMS \
|
||||
install-binSCRIPTS install-data install-data-am install-exec \
|
||||
install-exec-am install-info install-info-am install-man \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-compile mostlyclean-generic tags uninstall \
|
||||
uninstall-am uninstall-binPROGRAMS uninstall-binSCRIPTS \
|
||||
uninstall-info-am
|
||||
mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
|
||||
tags uninstall uninstall-am uninstall-binPROGRAMS \
|
||||
uninstall-binSCRIPTS uninstall-info-am
|
||||
|
||||
|
||||
check-local: localcheck remotecheck
|
||||
|
||||
.PHONY: localcheck
|
||||
localcheck:
|
||||
$(SHELL) $(srcdir)/sanity.sh `pwd`/cvs
|
||||
$(SHELL) $(srcdir)/sanity.sh `pwd`/cvs$(EXEEXT)
|
||||
|
||||
.PHONY: remotecheck
|
||||
remotecheck: all
|
||||
$(SHELL) $(srcdir)/sanity.sh -r `pwd`/cvs
|
||||
$(SHELL) $(srcdir)/sanity.sh -r `pwd`/cvs$(EXEEXT)
|
||||
|
||||
# for backwards compatibility with the old makefiles
|
||||
.PHONY: realclean
|
||||
|
|
|
|||
|
|
@ -24,13 +24,15 @@
|
|||
* file to be resurrected.
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
#include "cvs.h"
|
||||
#include "savecwd.h"
|
||||
#include "fileattr.h"
|
||||
|
||||
static int add_directory PROTO ((struct file_info *finfo));
|
||||
static int build_entry PROTO((char *repository, char *user, char *options,
|
||||
char *message, List * entries, char *tag));
|
||||
static int build_entry PROTO((const char *repository, const char *user,
|
||||
const char *options, const char *message,
|
||||
List * entries, const char *tag));
|
||||
|
||||
static const char *const add_usage[] =
|
||||
{
|
||||
|
|
@ -150,7 +152,7 @@ add (argc, argv)
|
|||
#ifdef CLIENT_SUPPORT
|
||||
if (current_parsed_root->isremote)
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
|
||||
if (argc == 0)
|
||||
/* We snipped out all the arguments in the above sanity
|
||||
|
|
@ -180,7 +182,7 @@ add (argc, argv)
|
|||
free (repository);
|
||||
}
|
||||
|
||||
for (i = 0; i < argc; ++i)
|
||||
for (j = 0; j < argc; ++j)
|
||||
{
|
||||
/* FIXME: Does this erroneously call Create_Admin in error
|
||||
conditions which are only detected once the server gets its
|
||||
|
|
@ -195,7 +197,7 @@ add (argc, argv)
|
|||
"Directory %s added" message), and then Create_Admin,
|
||||
which should also fix the error handling concerns. */
|
||||
|
||||
if (isdir (argv[i]))
|
||||
if (isdir (argv[j]))
|
||||
{
|
||||
char *tag;
|
||||
char *date;
|
||||
|
|
@ -210,8 +212,11 @@ add (argc, argv)
|
|||
if (save_cwd (&cwd))
|
||||
error_exit ();
|
||||
|
||||
filedir = xstrdup (argv[i]);
|
||||
p = last_component (filedir);
|
||||
filedir = xstrdup (argv[j]);
|
||||
/* Deliberately discard the const below since we know we just
|
||||
* allocated filedir and can do what we like with it.
|
||||
*/
|
||||
p = (char *)last_component (filedir);
|
||||
if (p == filedir)
|
||||
{
|
||||
update_dir = "";
|
||||
|
|
@ -246,7 +251,7 @@ add (argc, argv)
|
|||
rcsdir = xmalloc (strlen (repository) + strlen (p) + 5);
|
||||
sprintf (rcsdir, "%s/%s", repository, p);
|
||||
|
||||
Create_Admin (p, argv[i], rcsdir, tag, date,
|
||||
Create_Admin (p, argv[j], rcsdir, tag, date,
|
||||
nonbranch, 0, 1);
|
||||
|
||||
if (found_slash)
|
||||
|
|
@ -263,7 +268,7 @@ add (argc, argv)
|
|||
free (rcsdir);
|
||||
|
||||
if (p == filedir)
|
||||
Subdir_Register ((List *) NULL, (char *) NULL, argv[i]);
|
||||
Subdir_Register ((List *) NULL, (char *) NULL, argv[j]);
|
||||
else
|
||||
{
|
||||
Subdir_Register ((List *) NULL, update_dir, p);
|
||||
|
|
@ -289,10 +294,7 @@ add (argc, argv)
|
|||
int begin_added_files = added_files;
|
||||
#endif
|
||||
struct file_info finfo;
|
||||
char *p;
|
||||
#if defined (SERVER_SUPPORT) && !defined (FILENAMES_CASE_INSENSITIVE)
|
||||
char *found_name;
|
||||
#endif
|
||||
char *filename, *p;
|
||||
|
||||
memset (&finfo, 0, sizeof finfo);
|
||||
|
||||
|
|
@ -300,8 +302,12 @@ add (argc, argv)
|
|||
error_exit ();
|
||||
|
||||
finfo.fullname = xstrdup (argv[i]);
|
||||
p = last_component (argv[i]);
|
||||
if (p == argv[i])
|
||||
filename = xstrdup (argv[i]);
|
||||
/* We know we can discard the const below since we just allocated
|
||||
* filename and can do as we like with it.
|
||||
*/
|
||||
p = (char *)last_component (filename);
|
||||
if (p == filename)
|
||||
{
|
||||
finfo.update_dir = "";
|
||||
finfo.file = p;
|
||||
|
|
@ -309,7 +315,7 @@ add (argc, argv)
|
|||
else
|
||||
{
|
||||
p[-1] = '\0';
|
||||
finfo.update_dir = argv[i];
|
||||
finfo.update_dir = filename;
|
||||
finfo.file = p;
|
||||
if (CVS_CHDIR (finfo.update_dir) < 0)
|
||||
error (1, errno, "could not chdir to %s", finfo.update_dir);
|
||||
|
|
@ -325,7 +331,8 @@ add (argc, argv)
|
|||
repository = Name_Repository (NULL, finfo.update_dir);
|
||||
|
||||
/* don't add stuff to Emptydir */
|
||||
if (strncmp (repository, current_parsed_root->directory, cvsroot_len) == 0
|
||||
if (strncmp (repository, current_parsed_root->directory,
|
||||
cvsroot_len) == 0
|
||||
&& ISDIRSEP (repository[cvsroot_len])
|
||||
&& strncmp (repository + cvsroot_len + 1,
|
||||
CVSROOTADM,
|
||||
|
|
@ -340,65 +347,12 @@ add (argc, argv)
|
|||
finfo.repository = repository;
|
||||
finfo.entries = entries;
|
||||
|
||||
#if defined (SERVER_SUPPORT) && !defined (FILENAMES_CASE_INSENSITIVE)
|
||||
if (ign_case)
|
||||
{
|
||||
/* Need to check whether there is a directory with the
|
||||
same name but different case. We'll check for files
|
||||
with the same name later (when Version_TS calls
|
||||
RCS_parse which calls fopen_case). If CVS some day
|
||||
records directories in the RCS files, then we should be
|
||||
able to skip the separate check here, which would be
|
||||
cleaner. */
|
||||
DIR *dirp;
|
||||
struct dirent *dp;
|
||||
|
||||
dirp = CVS_OPENDIR (finfo.repository);
|
||||
if (dirp == NULL)
|
||||
error (1, errno, "cannot read directory %s", finfo.repository);
|
||||
found_name = NULL;
|
||||
errno = 0;
|
||||
while ((dp = CVS_READDIR (dirp)) != NULL)
|
||||
{
|
||||
if (cvs_casecmp (dp->d_name, finfo.file) == 0)
|
||||
{
|
||||
if (found_name != NULL)
|
||||
error (1, 0, "%s is ambiguous; could mean %s or %s",
|
||||
finfo.file, dp->d_name, found_name);
|
||||
found_name = xstrdup (dp->d_name);
|
||||
}
|
||||
}
|
||||
if (errno != 0)
|
||||
error (1, errno, "cannot read directory %s", finfo.repository);
|
||||
CVS_CLOSEDIR (dirp);
|
||||
|
||||
if (found_name != NULL)
|
||||
{
|
||||
/* OK, we are about to patch up the name, so patch up
|
||||
the temporary directory too to match. The isdir
|
||||
should "always" be true (since files have ,v), but
|
||||
I guess we might as well make some attempt to not
|
||||
get confused by stray files in the repository. */
|
||||
if (isdir (finfo.file))
|
||||
{
|
||||
if (CVS_MKDIR (found_name, 0777) < 0
|
||||
&& errno != EEXIST)
|
||||
error (0, errno, "cannot create %s", finfo.file);
|
||||
}
|
||||
|
||||
/* OK, we found a directory with the same name, maybe in
|
||||
a different case. Treat it as if the name were the
|
||||
same. */
|
||||
finfo.file = found_name;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* We pass force_tag_match as 1. If the directory has a
|
||||
sticky branch tag, and there is already an RCS file which
|
||||
does not have that tag, then the head revision is
|
||||
meaningless to us. */
|
||||
vers = Version_TS (&finfo, options, NULL, NULL, 1, 0);
|
||||
|
||||
if (vers->vn_user == NULL)
|
||||
{
|
||||
/* No entry available, ts_rcs is invalid */
|
||||
|
|
@ -507,24 +461,90 @@ same name already exists in the repository.");
|
|||
}
|
||||
else
|
||||
{
|
||||
char *timestamp = NULL;
|
||||
if (vers->ts_user == NULL)
|
||||
{
|
||||
/* If this file does not exist locally, assume that
|
||||
* the last version on the branch is being
|
||||
* resurrected.
|
||||
*
|
||||
* Compute previous revision. We assume that it
|
||||
* exists and that it is not a revision on the
|
||||
* trunk of the form X.1 (1.1, 2.1, 3.1, ...). We
|
||||
* also assume that it is not dead, which seems
|
||||
* fair since we know vers->vn_rcs is dead
|
||||
* and we shouldn't see two dead revisions in a
|
||||
* row.
|
||||
*/
|
||||
char *prev = previous_rev (vers->srcfile,
|
||||
vers->vn_rcs);
|
||||
int status;
|
||||
assert (prev != NULL);
|
||||
if (!quiet)
|
||||
error (0, 0,
|
||||
"Resurrecting file `%s' from revision %s.",
|
||||
finfo.fullname, prev);
|
||||
status = RCS_checkout (vers->srcfile, finfo.file,
|
||||
prev, vers->tag,
|
||||
vers->options, RUN_TTY,
|
||||
NULL, NULL);
|
||||
xchmod (finfo.file, 1);
|
||||
if (status != 0)
|
||||
{
|
||||
error (0, 0, "Failed to resurrect revision %s",
|
||||
prev);
|
||||
err++;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* I don't actually set vers->ts_user here
|
||||
* because it would confuse server_update().
|
||||
*/
|
||||
timestamp = time_stamp (finfo.file);
|
||||
if (!really_quiet)
|
||||
write_letter (&finfo, 'U');
|
||||
}
|
||||
free (prev);
|
||||
}
|
||||
if (!quiet)
|
||||
{
|
||||
if (vers->tag)
|
||||
error (0, 0, "\
|
||||
file `%s' will be added on branch `%s' from version %s",
|
||||
finfo.fullname, vers->tag, vers->vn_rcs);
|
||||
error (0, 0,
|
||||
"file `%s' will be added on branch `%s' from version %s",
|
||||
finfo.fullname, vers->tag,
|
||||
vers->vn_rcs);
|
||||
else
|
||||
/* I'm not sure that mentioning
|
||||
vers->vn_rcs makes any sense here; I
|
||||
can't think of a way to word the
|
||||
message which is not confusing. */
|
||||
error (0, 0, "\
|
||||
re-adding file %s (in place of dead revision %s)",
|
||||
finfo.fullname, vers->vn_rcs);
|
||||
error (0, 0,
|
||||
"Re-adding file `%s' (in place of dead revision %s).",
|
||||
finfo.fullname, vers->vn_rcs);
|
||||
}
|
||||
Register (entries, finfo.file, "0", vers->ts_user,
|
||||
vers->options,
|
||||
vers->tag, NULL, NULL);
|
||||
Register (entries, finfo.file, "0",
|
||||
timestamp ? timestamp : vers->ts_user,
|
||||
vers->options, vers->tag, vers->date, NULL);
|
||||
if (timestamp) free (timestamp);
|
||||
#ifdef SERVER_SUPPORT
|
||||
if (server_active && vers->ts_user == NULL)
|
||||
{
|
||||
/* If we resurrected the file from the archive, we
|
||||
* need to tell the client about it.
|
||||
*/
|
||||
server_updated (&finfo, vers,
|
||||
SERVER_UPDATED,
|
||||
(mode_t) -1, NULL, NULL);
|
||||
/* This is kinda hacky or, at least, it renders the
|
||||
* name "begin_added_files" obsolete, but we want
|
||||
* the added_files to be counted without triggering
|
||||
* the check that causes server_checked_in() to be
|
||||
* called below since we have already called
|
||||
* server_updated() to complete the resurrection.
|
||||
*/
|
||||
++begin_added_files;
|
||||
}
|
||||
#endif
|
||||
++added_files;
|
||||
}
|
||||
}
|
||||
|
|
@ -570,36 +590,56 @@ cannot resurrect %s; RCS file removed by second party", finfo.fullname);
|
|||
}
|
||||
else
|
||||
{
|
||||
|
||||
int status;
|
||||
/*
|
||||
* There is an RCS file, so remove the "-" from the
|
||||
* version number and restore the file
|
||||
*/
|
||||
char *tmp = xmalloc (strlen (finfo.file) + 50);
|
||||
|
||||
char *tmp = xmalloc (strlen (vers->vn_user));
|
||||
(void) strcpy (tmp, vers->vn_user + 1);
|
||||
(void) strcpy (vers->vn_user, tmp);
|
||||
(void) sprintf (tmp, "Resurrected %s", finfo.file);
|
||||
Register (entries, finfo.file, vers->vn_user, tmp,
|
||||
vers->options,
|
||||
vers->tag, vers->date, vers->ts_conflict);
|
||||
free (tmp);
|
||||
|
||||
/* XXX - bugs here; this really resurrect the head */
|
||||
/* Note that this depends on the Register above actually
|
||||
having written Entries, or else it won't really
|
||||
check the file out. */
|
||||
if (update (2, argv + i - 1) == 0)
|
||||
free(tmp);
|
||||
status = RCS_checkout (vers->srcfile, finfo.file,
|
||||
vers->vn_user, vers->tag,
|
||||
vers->options, RUN_TTY,
|
||||
NULL, NULL);
|
||||
xchmod (finfo.file, 1);
|
||||
if (status != 0)
|
||||
{
|
||||
error (0, 0, "%s, version %s, resurrected",
|
||||
finfo.fullname,
|
||||
error (0, 0, "Failed to resurrect revision %s",
|
||||
vers->vn_user);
|
||||
err++;
|
||||
tmp = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
error (0, 0, "could not resurrect %s", finfo.fullname);
|
||||
err++;
|
||||
/* I don't actually set vers->ts_user here because it
|
||||
* would confuse server_update().
|
||||
*/
|
||||
tmp = time_stamp (finfo.file);
|
||||
write_letter (&finfo, 'U');
|
||||
if (!quiet)
|
||||
error (0, 0, "%s, version %s, resurrected",
|
||||
finfo.fullname, vers->vn_user);
|
||||
}
|
||||
Register (entries, finfo.file, vers->vn_user,
|
||||
tmp, vers->options,
|
||||
vers->tag, vers->date, NULL);
|
||||
if (tmp) free (tmp);
|
||||
#ifdef SERVER_SUPPORT
|
||||
if (server_active)
|
||||
{
|
||||
/* If we resurrected the file from the archive, we
|
||||
* need to tell the client about it.
|
||||
*/
|
||||
server_updated (&finfo, vers,
|
||||
SERVER_UPDATED,
|
||||
(mode_t) -1, NULL, NULL);
|
||||
}
|
||||
/* We don't increment added_files here because this isn't
|
||||
* a change that needs to be committed.
|
||||
*/
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -642,11 +682,11 @@ cannot resurrect %s; RCS file removed by second party", finfo.fullname);
|
|||
error_exit ();
|
||||
free_cwd (&cwd);
|
||||
|
||||
free (finfo.fullname);
|
||||
#if defined (SERVER_SUPPORT) && !defined (FILENAMES_CASE_INSENSITIVE)
|
||||
if (ign_case && found_name != NULL)
|
||||
free (found_name);
|
||||
#endif
|
||||
/* It's okay to discard the const to free this - we allocated this
|
||||
* above. The const is for everybody else.
|
||||
*/
|
||||
free ((char *) finfo.fullname);
|
||||
free ((char *) filename);
|
||||
}
|
||||
if (added_files && !really_quiet)
|
||||
error (0, 0, "use '%s commit' to add %s permanently",
|
||||
|
|
@ -672,9 +712,9 @@ static int
|
|||
add_directory (finfo)
|
||||
struct file_info *finfo;
|
||||
{
|
||||
char *repository = finfo->repository;
|
||||
const char *repository = finfo->repository;
|
||||
List *entries = finfo->entries;
|
||||
char *dir = finfo->file;
|
||||
const char *dir = finfo->file;
|
||||
|
||||
char *rcsdir = NULL;
|
||||
struct saved_cwd cwd;
|
||||
|
|
@ -707,11 +747,11 @@ add_directory (finfo)
|
|||
|
||||
/* now, remember where we were, so we can get back */
|
||||
if (save_cwd (&cwd))
|
||||
return (1);
|
||||
if ( CVS_CHDIR (dir) < 0)
|
||||
return 1;
|
||||
if (CVS_CHDIR (dir) < 0)
|
||||
{
|
||||
error (0, errno, "cannot chdir to %s", finfo->fullname);
|
||||
return (1);
|
||||
return 1;
|
||||
}
|
||||
#ifdef SERVER_SUPPORT
|
||||
if (!server_active && isfile (CVSADM))
|
||||
|
|
@ -737,7 +777,8 @@ add_directory (finfo)
|
|||
+ 80
|
||||
+ (tag == NULL ? 0 : strlen (tag) + 80)
|
||||
+ (date == NULL ? 0 : strlen (date) + 80));
|
||||
(void) sprintf (message, "Directory %s added to the repository\n", rcsdir);
|
||||
(void) sprintf (message, "Directory %s added to the repository\n",
|
||||
rcsdir);
|
||||
if (tag)
|
||||
{
|
||||
(void) strcat (message, "--> Using per-directory sticky tag `");
|
||||
|
|
@ -799,7 +840,7 @@ add_directory (finfo)
|
|||
li->type = T_TITLE;
|
||||
li->tag = xstrdup (tag);
|
||||
li->rev_old = li->rev_new = NULL;
|
||||
p->data = (char *) li;
|
||||
p->data = li;
|
||||
(void) addnode (ulist, p);
|
||||
Update_Logfile (rcsdir, message, (FILE *) NULL, ulist);
|
||||
dellist (&ulist);
|
||||
|
|
@ -820,12 +861,13 @@ add_directory (finfo)
|
|||
|
||||
Subdir_Register (entries, (char *) NULL, dir);
|
||||
|
||||
cvs_output (message, 0);
|
||||
if (!really_quiet)
|
||||
cvs_output (message, 0);
|
||||
|
||||
free (rcsdir);
|
||||
free (message);
|
||||
|
||||
return (0);
|
||||
return 0;
|
||||
|
||||
out:
|
||||
if (restore_cwd (&cwd, NULL))
|
||||
|
|
@ -836,18 +878,20 @@ out:
|
|||
return (0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Builds an entry for a new file and sets up "CVS/file",[pt] by
|
||||
* interrogating the user. Returns non-zero on error.
|
||||
*/
|
||||
static int
|
||||
build_entry (repository, user, options, message, entries, tag)
|
||||
char *repository;
|
||||
char *user;
|
||||
char *options;
|
||||
char *message;
|
||||
const char *repository;
|
||||
const char *user;
|
||||
const char *options;
|
||||
const char *message;
|
||||
List *entries;
|
||||
char *tag;
|
||||
const char *tag;
|
||||
{
|
||||
char *fname;
|
||||
char *line;
|
||||
|
|
|
|||
|
|
@ -15,9 +15,9 @@
|
|||
#endif
|
||||
#include <assert.h>
|
||||
|
||||
static Dtype admin_dirproc PROTO ((void *callerdat, char *dir,
|
||||
char *repos, char *update_dir,
|
||||
List *entries));
|
||||
static Dtype admin_dirproc PROTO ((void *callerdat, const char *dir,
|
||||
const char *repos, const char *update_dir,
|
||||
List *entries));
|
||||
static int admin_fileproc PROTO ((void *callerdat, struct file_info *finfo));
|
||||
|
||||
static const char *const admin_usage[] =
|
||||
|
|
@ -367,7 +367,7 @@ admin (argc, argv)
|
|||
/* getopt will have printed an error message. */
|
||||
|
||||
usage_error:
|
||||
/* Don't use command_name; it might be "server". */
|
||||
/* Don't use cvs_cmd_name; it might be "server". */
|
||||
error (1, 0, "specify %s -H admin for usage information",
|
||||
program_name);
|
||||
}
|
||||
|
|
@ -520,7 +520,8 @@ admin (argc, argv)
|
|||
err = start_recursion (admin_fileproc, (FILESDONEPROC) NULL, admin_dirproc,
|
||||
(DIRLEAVEPROC) NULL, (void *)&admin_data,
|
||||
argc, argv, 0,
|
||||
W_LOCAL, 0, CVS_LOCK_NONE, (char *) NULL, 1);
|
||||
W_LOCAL, 0, CVS_LOCK_NONE, (char *) NULL, 1,
|
||||
(char *) NULL);
|
||||
Lock_Cleanup ();
|
||||
|
||||
return_it:
|
||||
|
|
@ -564,15 +565,22 @@ admin_fileproc (callerdat, finfo)
|
|||
if (version != NULL && strcmp (version, "0") == 0)
|
||||
{
|
||||
error (0, 0, "cannot admin newly added file `%s'", finfo->file);
|
||||
status = 1;
|
||||
goto exitfunc;
|
||||
}
|
||||
|
||||
rcs = vers->srcfile;
|
||||
if (rcs == NULL)
|
||||
{
|
||||
if (!really_quiet)
|
||||
error (0, 0, "nothing known about %s", finfo->file);
|
||||
status = 1;
|
||||
goto exitfunc;
|
||||
}
|
||||
|
||||
if (rcs->flags & PARTIAL)
|
||||
RCS_reparsercsfile (rcs, (FILE **) NULL, (struct rcsbuffer *) NULL);
|
||||
|
||||
status = 0;
|
||||
|
||||
if (!really_quiet)
|
||||
{
|
||||
cvs_output ("RCS file: ", 0);
|
||||
|
|
@ -776,7 +784,7 @@ admin_fileproc (callerdat, finfo)
|
|||
error (0, 0,
|
||||
"%s: symbolic name %s already bound to %s",
|
||||
rcs->path,
|
||||
tag, n->data);
|
||||
tag, (char *)n->data);
|
||||
status = 1;
|
||||
free (tag);
|
||||
continue;
|
||||
|
|
@ -835,7 +843,7 @@ admin_fileproc (callerdat, finfo)
|
|||
continue;
|
||||
}
|
||||
free (rev);
|
||||
delta = (RCSVers *) n->data;
|
||||
delta = n->data;
|
||||
free (delta->state);
|
||||
delta->state = tag;
|
||||
break;
|
||||
|
|
@ -849,20 +857,32 @@ admin_fileproc (callerdat, finfo)
|
|||
status = 1;
|
||||
continue;
|
||||
}
|
||||
*p = '\0';
|
||||
rev = RCS_gettag (rcs, arg + 2, 0, NULL);
|
||||
*p = '\0'; /* temporarily make arg+2 its own string */
|
||||
rev = RCS_gettag (rcs, arg + 2, 1, NULL); /* Force tag match */
|
||||
if (rev == NULL)
|
||||
{
|
||||
error (0, 0, "%s: no such revision %s", rcs->path, rev);
|
||||
error (0, 0, "%s: no such revision %s", rcs->path, arg+2);
|
||||
status = 1;
|
||||
*p = ':'; /* restore the full text of the -m argument */
|
||||
continue;
|
||||
}
|
||||
*p++ = ':';
|
||||
msg = p;
|
||||
msg = p+1;
|
||||
|
||||
n = findnode (rcs->versions, rev);
|
||||
/* tags may exist against non-existing versions */
|
||||
if (n == NULL)
|
||||
{
|
||||
error (0, 0, "%s: no such revision %s: %s",
|
||||
rcs->path, arg+2, rev);
|
||||
status = 1;
|
||||
*p = ':'; /* restore the full text of the -m argument */
|
||||
free (rev);
|
||||
continue;
|
||||
}
|
||||
*p = ':'; /* restore the full text of the -m argument */
|
||||
free (rev);
|
||||
delta = (RCSVers *) n->data;
|
||||
|
||||
delta = n->data;
|
||||
if (delta->text == NULL)
|
||||
{
|
||||
delta->text = (Deltatext *) xmalloc (sizeof (Deltatext));
|
||||
|
|
@ -911,9 +931,9 @@ admin_fileproc (callerdat, finfo)
|
|||
static Dtype
|
||||
admin_dirproc (callerdat, dir, repos, update_dir, entries)
|
||||
void *callerdat;
|
||||
char *dir;
|
||||
char *repos;
|
||||
char *update_dir;
|
||||
const char *dir;
|
||||
const char *repos;
|
||||
const char *update_dir;
|
||||
List *entries;
|
||||
{
|
||||
if (!quiet)
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ annotate (argc, argv)
|
|||
int err = 0;
|
||||
int c;
|
||||
|
||||
is_rannotate = (strcmp(command_name, "rannotate") == 0);
|
||||
is_rannotate = (strcmp(cvs_cmd_name, "rannotate") == 0);
|
||||
|
||||
if (argc == -1)
|
||||
usage (annotate_usage);
|
||||
|
|
@ -224,14 +224,12 @@ rannotate_proc (argc, argv, xwhere, mwhere, mfile, shorten, local, mname, msg)
|
|||
free (repository);
|
||||
return (1);
|
||||
}
|
||||
free (repository);
|
||||
/* End section which is identical to patch_proc. */
|
||||
|
||||
if (force_tag_match && tag != NULL)
|
||||
which = W_REPOS | W_ATTIC;
|
||||
else
|
||||
which = W_REPOS;
|
||||
repository = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -249,7 +247,11 @@ rannotate_proc (argc, argv, xwhere, mwhere, mfile, shorten, local, mname, msg)
|
|||
err = start_recursion (annotate_fileproc, (FILESDONEPROC) NULL,
|
||||
(DIRENTPROC) NULL, (DIRLEAVEPROC) NULL, NULL,
|
||||
argc - 1, argv + 1, local, which, 0, CVS_LOCK_READ,
|
||||
where, 1);
|
||||
where, 1, repository);
|
||||
if ( which & W_REPOS )
|
||||
free ( repository );
|
||||
if ( where != NULL )
|
||||
free (where);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -60,6 +60,11 @@ void
|
|||
buf_free (buf)
|
||||
struct buffer *buf;
|
||||
{
|
||||
if (buf->closure != NULL)
|
||||
{
|
||||
free (buf->closure);
|
||||
buf->closure = NULL;
|
||||
}
|
||||
if (buf->data != NULL)
|
||||
{
|
||||
buf->last->next = free_buffer_data;
|
||||
|
|
@ -137,8 +142,23 @@ get_buffer_data ()
|
|||
return ret;
|
||||
}
|
||||
|
||||
/* See whether a buffer is empty. */
|
||||
|
||||
|
||||
/* See whether a buffer and its file descriptor is empty. */
|
||||
int
|
||||
buf_empty (buf)
|
||||
struct buffer *buf;
|
||||
{
|
||||
/* Try and read any data on the file descriptor first.
|
||||
* We already know the descriptor is non-blocking.
|
||||
*/
|
||||
buf_input_data (buf, NULL);
|
||||
return buf_empty_p (buf);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* See whether a buffer is empty. */
|
||||
int
|
||||
buf_empty_p (buf)
|
||||
struct buffer *buf;
|
||||
|
|
@ -151,6 +171,8 @@ buf_empty_p (buf)
|
|||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef SERVER_FLOWCONTROL
|
||||
/*
|
||||
* Count how much data is stored in the buffer..
|
||||
|
|
@ -1208,6 +1230,8 @@ buf_shutdown (buf)
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* The simplest type of buffer is one built on top of a stdio FILE.
|
||||
For simplicity, and because it is all that is required, we do not
|
||||
implement setting this type of buffer into nonblocking mode. The
|
||||
|
|
@ -1218,14 +1242,17 @@ static int stdio_buffer_output PROTO((void *, const char *, int, int *));
|
|||
static int stdio_buffer_flush PROTO((void *));
|
||||
static int stdio_buffer_shutdown PROTO((struct buffer *buf));
|
||||
|
||||
/* Initialize a buffer built on a stdio FILE. */
|
||||
|
||||
|
||||
/* Initialize a buffer built on a stdio FILE. */
|
||||
struct stdio_buffer_closure
|
||||
{
|
||||
FILE *fp;
|
||||
int child_pid;
|
||||
};
|
||||
|
||||
|
||||
|
||||
struct buffer *
|
||||
stdio_buffer_initialize (fp, child_pid, input, memory)
|
||||
FILE *fp;
|
||||
|
|
@ -1351,8 +1378,9 @@ stdio_buffer_output (closure, data, have, wrote)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* The buffer flush function for a buffer built on a stdio FILE. */
|
||||
|
||||
|
||||
/* The buffer flush function for a buffer built on a stdio FILE. */
|
||||
static int
|
||||
stdio_buffer_flush (closure)
|
||||
void *closure;
|
||||
|
|
@ -1376,12 +1404,12 @@ static int
|
|||
stdio_buffer_shutdown (buf)
|
||||
struct buffer *buf;
|
||||
{
|
||||
struct stdio_buffer_closure *bc = (struct stdio_buffer_closure *) buf->closure;
|
||||
struct stdio_buffer_closure *bc = buf->closure;
|
||||
struct stat s;
|
||||
int closefp = 1;
|
||||
|
||||
/* Must be a pipe or a socket. What could go wrong? */
|
||||
assert (fstat ( fileno (bc->fp), &s ) != -1);
|
||||
assert (fstat (fileno (bc->fp), &s) != -1);
|
||||
|
||||
/* Flush the buffer if we can */
|
||||
if (buf->flush)
|
||||
|
|
@ -1392,30 +1420,11 @@ stdio_buffer_shutdown (buf)
|
|||
|
||||
if (buf->input)
|
||||
{
|
||||
if ( !buf_empty_p (buf) )
|
||||
{
|
||||
# ifdef SERVER_SUPPORT
|
||||
if (server_active)
|
||||
/* FIXME: This should probably be sysloged since it doesn't
|
||||
* have anywhere else to go at this point.
|
||||
*/
|
||||
error (0, 0, "dying gasps from client unexpected");
|
||||
else
|
||||
#endif
|
||||
error (0, 0, "dying gasps from %s unexpected", current_parsed_root->hostname);
|
||||
}
|
||||
else if (ferror (bc->fp))
|
||||
{
|
||||
# ifdef SERVER_SUPPORT
|
||||
if (server_active)
|
||||
/* FIXME: This should probably be sysloged since it doesn't
|
||||
* have anywhere else to go at this point.
|
||||
*/
|
||||
error (0, errno, "reading from client");
|
||||
else
|
||||
#endif
|
||||
error (0, errno, "reading from %s", current_parsed_root->hostname);
|
||||
}
|
||||
/* There used to be a check here for unread data in the buffer of on
|
||||
* the pipe, but it was deemed unnecessary and possibly dangerous. In
|
||||
* some sense it could be second-guessing the caller who requested it
|
||||
* closed, as well.
|
||||
*/
|
||||
|
||||
# ifdef SHUTDOWN_SERVER
|
||||
if (current_parsed_root->method != server_method)
|
||||
|
|
@ -1423,8 +1432,8 @@ stdio_buffer_shutdown (buf)
|
|||
# ifndef NO_SOCKET_TO_FD
|
||||
{
|
||||
/* shutdown() sockets */
|
||||
if (S_ISSOCK(s.st_mode))
|
||||
shutdown ( fileno (bc->fp), 0);
|
||||
if (S_ISSOCK (s.st_mode))
|
||||
shutdown (fileno (bc->fp), 0);
|
||||
}
|
||||
# endif /* NO_SOCKET_TO_FD */
|
||||
# ifdef START_RSH_WITH_POPEN_RW
|
||||
|
|
@ -1446,13 +1455,13 @@ stdio_buffer_shutdown (buf)
|
|||
* SHUTDOWN_SERVER_OUTPUT
|
||||
*/
|
||||
if (current_parsed_root->method == server_method)
|
||||
SHUTDOWN_SERVER ( fileno (bc->fp) );
|
||||
SHUTDOWN_SERVER (fileno (bc->fp));
|
||||
else
|
||||
# endif
|
||||
# ifndef NO_SOCKET_TO_FD
|
||||
/* shutdown() sockets */
|
||||
if (S_ISSOCK(s.st_mode))
|
||||
shutdown ( fileno (bc->fp), 1);
|
||||
if (S_ISSOCK (s.st_mode))
|
||||
shutdown (fileno (bc->fp), 1);
|
||||
# else
|
||||
{
|
||||
/* I'm not sure I like this empty block, but the alternative
|
||||
|
|
@ -1465,15 +1474,34 @@ stdio_buffer_shutdown (buf)
|
|||
}
|
||||
|
||||
if (closefp && fclose (bc->fp) == EOF)
|
||||
error (1, errno,
|
||||
"closing down connection to %s",
|
||||
current_parsed_root->hostname);
|
||||
{
|
||||
if (0
|
||||
# ifdef SERVER_SUPPORT
|
||||
|| server_active
|
||||
# endif /* SERVER_SUPPORT */
|
||||
)
|
||||
{
|
||||
/* Syslog this? */
|
||||
}
|
||||
# ifdef CLIENT_SUPPORT
|
||||
else
|
||||
error (1, errno,
|
||||
"closing down connection to %s",
|
||||
current_parsed_root->hostname);
|
||||
# endif /* CLIENT_SUPPORT */
|
||||
}
|
||||
|
||||
/* If we were talking to a process, make sure it exited */
|
||||
if (bc->child_pid
|
||||
&& waitpid (bc->child_pid, (int *) 0, 0) == -1)
|
||||
error (1, errno, "waiting for process %d", bc->child_pid);
|
||||
if (bc->child_pid)
|
||||
{
|
||||
int w;
|
||||
|
||||
do
|
||||
w = waitpid (bc->child_pid, (int *) 0, 0);
|
||||
while (w == -1 && errno == EINTR);
|
||||
if (w == -1)
|
||||
error (1, errno, "waiting for process %d", bc->child_pid);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1872,8 +1900,9 @@ packetizing_buffer_output (closure, data, have, wrote)
|
|||
return buf_send_output (pb->buf);
|
||||
}
|
||||
|
||||
/* Flush data to a packetizing buffer. */
|
||||
|
||||
|
||||
/* Flush data to a packetizing buffer. */
|
||||
static int
|
||||
packetizing_buffer_flush (closure)
|
||||
void *closure;
|
||||
|
|
@ -1887,8 +1916,9 @@ packetizing_buffer_flush (closure)
|
|||
return buf_flush (pb->buf, 0);
|
||||
}
|
||||
|
||||
/* The block routine for a packetizing buffer. */
|
||||
|
||||
|
||||
/* The block routine for a packetizing buffer. */
|
||||
static int
|
||||
packetizing_buffer_block (closure, block)
|
||||
void *closure;
|
||||
|
|
|
|||
|
|
@ -119,6 +119,7 @@ extern struct buffer *packetizing_buffer_initialize
|
|||
PROTO((struct buffer *, int (*) (void *, const char *, char *, int),
|
||||
int (*) (void *, const char *, char *, int, int *), void *,
|
||||
void (*) (struct buffer *)));
|
||||
extern int buf_empty PROTO((struct buffer *));
|
||||
extern int buf_empty_p PROTO((struct buffer *));
|
||||
extern void buf_output PROTO((struct buffer *, const char *, int));
|
||||
extern void buf_output0 PROTO((struct buffer *, const char *));
|
||||
|
|
|
|||
|
|
@ -15,15 +15,15 @@
|
|||
* Returns non-zero on error.
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
#include "cvs.h"
|
||||
#include "fileattr.h"
|
||||
#include "edit.h"
|
||||
|
||||
int
|
||||
Checkin (type, finfo, rcs, rev, tag, options, message)
|
||||
Checkin (type, finfo, rev, tag, options, message)
|
||||
int type;
|
||||
struct file_info *finfo;
|
||||
char *rcs;
|
||||
char *rev;
|
||||
char *tag;
|
||||
char *options;
|
||||
|
|
@ -53,10 +53,15 @@ Checkin (type, finfo, rcs, rev, tag, options, message)
|
|||
}
|
||||
}
|
||||
|
||||
if (finfo->rcs == NULL)
|
||||
finfo->rcs = RCS_parse (finfo->file, finfo->repository);
|
||||
/* There use to be a check for finfo->rcs == NULL here and then a
|
||||
* call to RCS_parse when necessary, but Checkin() isn't called
|
||||
* if the RCS file hasn't already been parsed in one of the
|
||||
* check functions.
|
||||
*/
|
||||
assert (finfo->rcs != NULL);
|
||||
|
||||
switch (RCS_checkin (finfo->rcs, NULL, message, rev, RCS_FLAGS_KEEPFILE))
|
||||
switch (RCS_checkin (finfo->rcs, finfo->file, message, rev,
|
||||
RCS_FLAGS_KEEPFILE))
|
||||
{
|
||||
case 0: /* everything normal */
|
||||
|
||||
|
|
@ -78,11 +83,12 @@ Checkin (type, finfo, rcs, rev, tag, options, message)
|
|||
call RCS_checkout here, compare the resulting files
|
||||
using xcmp, and rename if necessary. I think this
|
||||
should be fixed in RCS_cmp_file. */
|
||||
if ((! preserve_perms
|
||||
&& options != NULL
|
||||
&& (strcmp (options, "-ko") == 0
|
||||
|| strcmp (options, "-kb") == 0))
|
||||
|| RCS_cmp_file (finfo->rcs, rev, options, finfo->file) == 0)
|
||||
if( ( ! preserve_perms
|
||||
&& options != NULL
|
||||
&& ( strcmp( options, "-ko" ) == 0
|
||||
|| strcmp( options, "-kb" ) == 0 ) )
|
||||
|| RCS_cmp_file( finfo->rcs, rev, (char **)NULL, (char *)NULL,
|
||||
options, finfo->file ) == 0 )
|
||||
{
|
||||
/* The existing file is correct. We don't have to do
|
||||
anything. */
|
||||
|
|
@ -176,5 +182,5 @@ Checkin (type, finfo, rcs, rev, tag, options, message)
|
|||
mark_up_to_date (finfo->file);
|
||||
|
||||
freevers_ts (&vers);
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ checkout (argc, argv)
|
|||
* options to be default (like -kv) and takes care to remove the CVS
|
||||
* directory when it has done its duty
|
||||
*/
|
||||
if (strcmp (command_name, "export") == 0)
|
||||
if (strcmp (cvs_cmd_name, "export") == 0)
|
||||
{
|
||||
m_type = EXPORT;
|
||||
valid_options = "+Nnk:d:flRQqr:D:";
|
||||
|
|
@ -177,7 +177,7 @@ checkout (argc, argv)
|
|||
#endif
|
||||
error (1, 0,
|
||||
"-q or -Q must be specified before \"%s\"",
|
||||
command_name);
|
||||
cvs_cmd_name);
|
||||
break;
|
||||
case 'l':
|
||||
local = 1;
|
||||
|
|
@ -273,14 +273,6 @@ checkout (argc, argv)
|
|||
|
||||
ign_setup ();
|
||||
|
||||
/* We have to expand names here because the "expand-modules"
|
||||
directive to the server has the side-effect of having the
|
||||
server send the check-in and update programs for the
|
||||
various modules/dirs requested. If we turn this off and
|
||||
simply request the names of the modules and directories (as
|
||||
below in !expand_modules), those files (CVS/Checkin.prog
|
||||
or CVS/Update.prog) don't get created. Grrr. */
|
||||
|
||||
expand_modules = (!cat && !pipeout
|
||||
&& supported_request ("expand-modules"));
|
||||
|
||||
|
|
@ -323,6 +315,7 @@ checkout (argc, argv)
|
|||
option_with_arg ("-j", join_rev1);
|
||||
if (join_rev2 != NULL)
|
||||
option_with_arg ("-j", join_rev2);
|
||||
send_arg ("--");
|
||||
|
||||
if (expand_modules)
|
||||
{
|
||||
|
|
@ -398,39 +391,55 @@ checkout (argc, argv)
|
|||
/* FIXME: This is and emptydir_name are in checkout.c for historical
|
||||
reasons, probably want to move them. */
|
||||
|
||||
/* int
|
||||
* safe_location ( char *where )
|
||||
*
|
||||
* Return true if where is a safe destination for a checkout.
|
||||
*
|
||||
* INPUTS
|
||||
* where The requested destination directory.
|
||||
*
|
||||
* GLOBALS
|
||||
* current_parsed_root->directory
|
||||
* current_parsed_root->isremote
|
||||
* Used to locate our CVSROOT.
|
||||
*
|
||||
* RETURNS
|
||||
* true If we are running in client mode or if where is not located
|
||||
* within the CVSROOT.
|
||||
* false Otherwise.
|
||||
*
|
||||
* ERRORS
|
||||
* Exits with a fatal error message when various events occur, such as not
|
||||
* being able to resolve a path or failing ot chdir to a path.
|
||||
*/
|
||||
int
|
||||
safe_location (where)
|
||||
char *where;
|
||||
{
|
||||
char *current;
|
||||
char *where_location;
|
||||
char hardpath[PATH_MAX+5];
|
||||
char *hardpath;
|
||||
size_t hardpath_len;
|
||||
int x;
|
||||
int retval;
|
||||
|
||||
#ifdef HAVE_READLINK
|
||||
/* FIXME-arbitrary limit: should be retrying this like xgetwd.
|
||||
But how does readlink let us know that the buffer was too small?
|
||||
(by returning sizeof hardpath - 1?). */
|
||||
x = readlink(current_parsed_root->directory, hardpath, sizeof hardpath - 1);
|
||||
#else
|
||||
x = -1;
|
||||
#endif
|
||||
if (x == -1)
|
||||
{
|
||||
strcpy(hardpath, current_parsed_root->directory);
|
||||
}
|
||||
else
|
||||
{
|
||||
hardpath[x] = '\0';
|
||||
}
|
||||
if (trace)
|
||||
(void) fprintf (stderr, "%s-> safe_location( where=%s )\n",
|
||||
CLIENT_SERVER_STR,
|
||||
where ? where : "(null)");
|
||||
|
||||
#ifdef CLIENT_SUPPORT
|
||||
/* Don't compare remote CVSROOTs to our destination directory. */
|
||||
if ( current_parsed_root->isremote ) return 1;
|
||||
#endif /* CLIENT_SUPPORT */
|
||||
|
||||
/* set current - even if where is set we'll need to cd back... */
|
||||
current = xgetwd ();
|
||||
if (current == NULL)
|
||||
error (1, errno, "could not get working directory");
|
||||
|
||||
hardpath = xresolvepath ( current_parsed_root->directory );
|
||||
|
||||
/* if where is set, set current to where, where - last_component( where ),
|
||||
* or fail, depending on whether the directories exist or not.
|
||||
*/
|
||||
|
|
@ -457,12 +466,16 @@ safe_location (where)
|
|||
char *parent;
|
||||
|
||||
/* strip the last_component */
|
||||
where_location = xstrdup( where );
|
||||
parent = last_component( where_location );
|
||||
where_location = xstrdup (where);
|
||||
/* It's okay to cast out the const below since we know we just
|
||||
* allocated where_location and can do what we like with it.
|
||||
*/
|
||||
parent = (char *)last_component (where_location);
|
||||
parent[-1] = '\0';
|
||||
|
||||
if( chdir( where_location ) != -1 )
|
||||
{
|
||||
free( where_location );
|
||||
where_location = xgetwd();
|
||||
if( where_location == NULL )
|
||||
error( 1, errno, "could not get working directory (nominally `%s')", where_location );
|
||||
|
|
@ -505,6 +518,7 @@ safe_location (where)
|
|||
else
|
||||
retval = 1;
|
||||
free (current);
|
||||
free (hardpath);
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
|
@ -918,52 +932,48 @@ internal error: %s doesn't start with %s in checkout_proc",
|
|||
/* clean up */
|
||||
free (reposcopy);
|
||||
|
||||
{
|
||||
int where_is_absolute = isabsolute (where);
|
||||
|
||||
/* The top-level CVSADM directory should always be
|
||||
current_parsed_root->directory. Create it, but only if WHERE is
|
||||
relative. If WHERE is absolute, our current directory
|
||||
may not have a thing to do with where the sources are
|
||||
being checked out. If it does, build_dirs_and_chdir
|
||||
will take care of creating adm files here. */
|
||||
/* FIXME: checking where_is_absolute is a horrid kludge;
|
||||
I suspect we probably can just skip the call to
|
||||
build_one_dir whenever the -d command option was specified
|
||||
to checkout. */
|
||||
/* The top-level CVSADM directory should always be
|
||||
current_parsed_root->directory. Create it, but only if WHERE is
|
||||
relative. If WHERE is absolute, our current directory
|
||||
may not have a thing to do with where the sources are
|
||||
being checked out. If it does, build_dirs_and_chdir
|
||||
will take care of creating adm files here. */
|
||||
/* FIXME: checking is_absolute (where) is a horrid kludge;
|
||||
I suspect we probably can just skip the call to
|
||||
build_one_dir whenever the -d command option was specified
|
||||
to checkout. */
|
||||
|
||||
if (! where_is_absolute && top_level_admin && m_type == CHECKOUT)
|
||||
{
|
||||
/* It may be argued that we shouldn't set any sticky
|
||||
bits for the top-level repository. FIXME? */
|
||||
build_one_dir (current_parsed_root->directory, ".", argc <= 1);
|
||||
if (!isabsolute (where) && top_level_admin && m_type == CHECKOUT)
|
||||
{
|
||||
/* It may be argued that we shouldn't set any sticky
|
||||
bits for the top-level repository. FIXME? */
|
||||
build_one_dir (current_parsed_root->directory, ".", argc <= 1);
|
||||
|
||||
#ifdef SERVER_SUPPORT
|
||||
/* We _always_ want to have a top-level admin
|
||||
directory. If we're running in client/server mode,
|
||||
send a "Clear-static-directory" command to make
|
||||
sure it is created on the client side. (See 5.10
|
||||
in cvsclient.dvi to convince yourself that this is
|
||||
OK.) If this is a duplicate command being sent, it
|
||||
will be ignored on the client side. */
|
||||
/* We _always_ want to have a top-level admin
|
||||
directory. If we're running in client/server mode,
|
||||
send a "Clear-static-directory" command to make
|
||||
sure it is created on the client side. (See 5.10
|
||||
in cvsclient.dvi to convince yourself that this is
|
||||
OK.) If this is a duplicate command being sent, it
|
||||
will be ignored on the client side. */
|
||||
|
||||
if (server_active)
|
||||
server_clear_entstat (".", current_parsed_root->directory);
|
||||
if (server_active)
|
||||
server_clear_entstat (".", current_parsed_root->directory);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Build dirs on the path if necessary and leave us in the
|
||||
bottom directory (where if where was specified) doesn't
|
||||
contain a CVS subdir yet, but all the others contain
|
||||
CVS and Entries.Static files */
|
||||
/* Build dirs on the path if necessary and leave us in the
|
||||
bottom directory (where if where was specified) doesn't
|
||||
contain a CVS subdir yet, but all the others contain
|
||||
CVS and Entries.Static files */
|
||||
|
||||
if (build_dirs_and_chdir (head, argc <= 1) != 0)
|
||||
{
|
||||
error (0, 0, "ignoring module %s", omodule);
|
||||
err = 1;
|
||||
goto out;
|
||||
}
|
||||
if (build_dirs_and_chdir (head, argc <= 1) != 0)
|
||||
{
|
||||
error (0, 0, "ignoring module %s", omodule);
|
||||
err = 1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* set up the repository (or make sure the old one matches) */
|
||||
|
|
@ -1086,7 +1096,8 @@ internal error: %s doesn't start with %s in checkout_proc",
|
|||
force_tag_match, 0 /* !local */ ,
|
||||
1 /* update -d */ , aflag, checkout_prune_dirs,
|
||||
pipeout, which, join_rev1, join_rev2,
|
||||
preload_update_dir, m_type == CHECKOUT);
|
||||
preload_update_dir, m_type == CHECKOUT,
|
||||
repository);
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
|
@ -1142,7 +1153,8 @@ internal error: %s doesn't start with %s in checkout_proc",
|
|||
err += do_update (argc - 1, argv + 1, options, tag, date,
|
||||
force_tag_match, local_specified, 1 /* update -d */,
|
||||
aflag, checkout_prune_dirs, pipeout, which, join_rev1,
|
||||
join_rev2, preload_update_dir, m_type == CHECKOUT);
|
||||
join_rev2, preload_update_dir, m_type == CHECKOUT,
|
||||
repository);
|
||||
out:
|
||||
free (preload_update_dir);
|
||||
preload_update_dir = oldupdate;
|
||||
|
|
@ -1192,8 +1204,28 @@ emptydir_name ()
|
|||
}
|
||||
|
||||
/* Build all the dirs along the path to DIRS with CVS subdirs with appropriate
|
||||
repositories. If ->repository is NULL, do not create a CVSADM directory
|
||||
for that subdirectory; just CVS_CHDIR into it. */
|
||||
* repositories. If DIRS->repository is NULL or the directory already exists,
|
||||
* do not create a CVSADM directory for that subdirectory; just CVS_CHDIR into
|
||||
* it. Frees all storage used by DIRS.
|
||||
*
|
||||
* ASSUMPTIONS
|
||||
* 1. Parent directories will be listed in DIRS before their children.
|
||||
* 2. At most a single directory will need to be changed at one time. In
|
||||
* other words, if we are in /a/b/c, and our final destination is
|
||||
* /a/b/c/d/e/f, then we will build d, then d/e, then d/e/f.
|
||||
*
|
||||
* INPUTS
|
||||
* dirs Simple list composed of dir_to_build structures, listing
|
||||
* information about directories to build.
|
||||
* sticky Passed to build_one_dir to tell it whether there are any sticky
|
||||
* tags or dates to be concerned with.
|
||||
*
|
||||
* RETURNS
|
||||
* 1 on error, 0 otherwise.
|
||||
*
|
||||
* ERRORS
|
||||
* The only nonfatal error this function may return is if the CHDIR fails.
|
||||
*/
|
||||
static int
|
||||
build_dirs_and_chdir (dirs, sticky)
|
||||
struct dir_to_build *dirs;
|
||||
|
|
@ -1204,7 +1236,7 @@ build_dirs_and_chdir (dirs, sticky)
|
|||
|
||||
while (dirs != NULL)
|
||||
{
|
||||
char *dir = last_component (dirs->dirpath);
|
||||
const char *dir = last_component (dirs->dirpath);
|
||||
|
||||
if (!dirs->just_chdir)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -266,7 +266,7 @@ Classify_File (finfo, tag, date, options, force_tag_match, aflag, versp,
|
|||
* There is no user file, so note that it was lost and
|
||||
* extract a new version
|
||||
*/
|
||||
/* Comparing the command_name against "update", in
|
||||
/* Comparing the cvs_cmd_name against "update", in
|
||||
addition to being an ugly way to operate, means
|
||||
that this message does not get printed by the
|
||||
server. That might be considered just a straight
|
||||
|
|
@ -274,7 +274,7 @@ Classify_File (finfo, tag, date, options, force_tag_match, aflag, versp,
|
|||
gets hit when a patch fails and the client fetches
|
||||
a file. I'm not sure there is currently any way
|
||||
for the server to distinguish those two cases. */
|
||||
if (strcmp (command_name, "update") == 0)
|
||||
if (strcmp (cvs_cmd_name, "update") == 0)
|
||||
if (!really_quiet)
|
||||
error (0, 0, "warning: %s was lost", finfo->fullname);
|
||||
ret = T_CHECKOUT;
|
||||
|
|
@ -344,7 +344,7 @@ Classify_File (finfo, tag, date, options, force_tag_match, aflag, versp,
|
|||
|
||||
/* See comment at other "update" compare, for more
|
||||
thoughts on this comparison. */
|
||||
if (strcmp (command_name, "update") == 0)
|
||||
if (strcmp (cvs_cmd_name, "update") == 0)
|
||||
if (!really_quiet)
|
||||
error (0, 0, "warning: %s was lost", finfo->fullname);
|
||||
ret = T_CHECKOUT;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -60,6 +60,8 @@ extern int client_prune_dirs;
|
|||
|
||||
# ifdef AUTH_CLIENT_SUPPORT
|
||||
extern int use_authenticating_server;
|
||||
# endif /* AUTH_CLIENT_SUPPORT */
|
||||
# if defined (AUTH_CLIENT_SUPPORT) || defined (HAVE_GSSAPI)
|
||||
void connect_to_pserver PROTO ((cvsroot_t *,
|
||||
struct buffer **,
|
||||
struct buffer **,
|
||||
|
|
@ -67,7 +69,7 @@ void connect_to_pserver PROTO ((cvsroot_t *,
|
|||
# ifndef CVS_AUTH_PORT
|
||||
# define CVS_AUTH_PORT 2401
|
||||
# endif /* CVS_AUTH_PORT */
|
||||
# endif /* AUTH_CLIENT_SUPPORT */
|
||||
# endif /* (AUTH_CLIENT_SUPPORT) || defined (HAVE_GSSAPI) */
|
||||
|
||||
# if HAVE_KERBEROS
|
||||
# ifndef CVS_PORT
|
||||
|
|
@ -75,16 +77,8 @@ void connect_to_pserver PROTO ((cvsroot_t *,
|
|||
# endif
|
||||
# endif /* HAVE_KERBEROS */
|
||||
|
||||
# if defined (AUTH_SERVER_SUPPORT) || (defined (SERVER_SUPPORT) && defined (HAVE_GSSAPI))
|
||||
extern void pserver_authenticate_connection PROTO ((void));
|
||||
# endif
|
||||
|
||||
# if defined (SERVER_SUPPORT) && defined (HAVE_KERBEROS)
|
||||
extern void kserver_authenticate_connection PROTO ((void));
|
||||
# endif
|
||||
|
||||
/* Talking to the server. */
|
||||
void send_to_server PROTO((char *str, size_t len));
|
||||
void send_to_server PROTO((const char *str, size_t len));
|
||||
void read_from_server PROTO((char *buf, size_t len));
|
||||
|
||||
/* Internal functions that handle client communication to server, etc. */
|
||||
|
|
@ -131,7 +125,8 @@ send_arg PROTO((char *string));
|
|||
void
|
||||
send_option_string PROTO((char *string));
|
||||
|
||||
extern void send_a_repository PROTO ((char *, char *, char *));
|
||||
extern void send_a_repository PROTO ((const char *, const char *,
|
||||
const char *));
|
||||
|
||||
#endif /* CLIENT_SUPPORT */
|
||||
|
||||
|
|
@ -209,5 +204,6 @@ extern int client_process_import_file
|
|||
int targc, char *targv[], char *repository, int all_files_binary,
|
||||
int modtime));
|
||||
extern void client_import_done PROTO((void));
|
||||
extern void client_notify PROTO((char *, char *, char *, int, char *));
|
||||
extern void client_notify PROTO((const char *, const char *, const char *, int,
|
||||
const char *));
|
||||
#endif /* CLIENT_SUPPORT */
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -24,11 +24,11 @@
|
|||
int
|
||||
Create_Admin (dir, update_dir, repository, tag, date, nonbranch, warn,
|
||||
dotemplate)
|
||||
char *dir;
|
||||
char *update_dir;
|
||||
char *repository;
|
||||
char *tag;
|
||||
char *date;
|
||||
const char *dir;
|
||||
const char *update_dir;
|
||||
const char *repository;
|
||||
const char *tag;
|
||||
const char *date;
|
||||
int nonbranch;
|
||||
int warn;
|
||||
int dotemplate;
|
||||
|
|
|
|||
|
|
@ -84,6 +84,7 @@ extern int errno;
|
|||
#include "system.h"
|
||||
|
||||
#include "hash.h"
|
||||
#include "stack.h"
|
||||
|
||||
#include "root.h"
|
||||
|
||||
|
|
@ -127,8 +128,6 @@ extern int errno;
|
|||
#define CVSADM_ENTSTAT "CVS/Entries.Static"
|
||||
#define CVSADM_REP "CVS/Repository."
|
||||
#define CVSADM_ROOT "CVS/Root."
|
||||
#define CVSADM_CIPROG "CVS/Checkin.prog"
|
||||
#define CVSADM_UPROG "CVS/Update.prog"
|
||||
#define CVSADM_TAG "CVS/Tag."
|
||||
#define CVSADM_NOTIFY "CVS/Notify."
|
||||
#define CVSADM_NOTIFYTMP "CVS/Notify.tmp"
|
||||
|
|
@ -144,8 +143,6 @@ extern int errno;
|
|||
#define CVSADM_ENTSTAT "CVS/Entries.Static"
|
||||
#define CVSADM_REP "CVS/Repository"
|
||||
#define CVSADM_ROOT "CVS/Root"
|
||||
#define CVSADM_CIPROG "CVS/Checkin.prog"
|
||||
#define CVSADM_UPROG "CVS/Update.prog"
|
||||
#define CVSADM_TAG "CVS/Tag"
|
||||
#define CVSADM_NOTIFY "CVS/Notify"
|
||||
#define CVSADM_NOTIFYTMP "CVS/Notify.tmp"
|
||||
|
|
@ -363,7 +360,7 @@ typedef enum direnter_type Dtype;
|
|||
#define CVS_LOCK_READ 1
|
||||
#define CVS_LOCK_WRITE 2
|
||||
|
||||
extern char *program_name, *program_path, *command_name;
|
||||
extern const char *program_name, *program_path, *cvs_cmd_name;
|
||||
extern char *Tmpdir, *Editor;
|
||||
extern int cvsadmin_root;
|
||||
extern char *CurDir;
|
||||
|
|
@ -409,7 +406,8 @@ extern char hostname[];
|
|||
|
||||
/* Externs that are included directly in the CVS sources */
|
||||
|
||||
int RCS_merge PROTO((RCSNode *, char *, char *, char *, char *, char *));
|
||||
int RCS_merge PROTO((RCSNode *, const char *, const char *, const char *,
|
||||
const char *, const char *));
|
||||
/* Flags used by RCS_* functions. See the description of the individual
|
||||
functions for which flags mean what for each function. */
|
||||
#define RCS_FLAGS_FORCE 1
|
||||
|
|
@ -419,14 +417,14 @@ int RCS_merge PROTO((RCSNode *, char *, char *, char *, char *, char *));
|
|||
#define RCS_FLAGS_KEEPFILE 16
|
||||
|
||||
extern int RCS_exec_rcsdiff PROTO ((RCSNode *rcsfile,
|
||||
char *opts, char *options,
|
||||
char *rev1, char *rev2,
|
||||
char *label1, char *label2,
|
||||
char *workfile));
|
||||
extern int diff_exec PROTO ((char *file1, char *file2,
|
||||
char *label1, char *label2,
|
||||
char *options, char *out));
|
||||
|
||||
const char *opts, const char *options,
|
||||
const char *rev1, const char *rev1_cache,
|
||||
const char *rev2, const char *label1,
|
||||
const char *label2, const char *workfile));
|
||||
extern int diff_exec PROTO ((const char *file1, const char *file2,
|
||||
const char *label1, const char *label2,
|
||||
const char *options, const char *out));
|
||||
|
||||
|
||||
#include "error.h"
|
||||
|
||||
|
|
@ -445,34 +443,36 @@ void date_to_internet PROTO ((char *, const char *));
|
|||
void date_to_tm PROTO ((struct tm *, const char *));
|
||||
void tm_to_internet PROTO ((char *, const struct tm *));
|
||||
|
||||
char *Name_Repository PROTO((char *dir, char *update_dir));
|
||||
char *Short_Repository PROTO((char *repository));
|
||||
char *Name_Repository PROTO((const char *dir, const char *update_dir));
|
||||
const char *Short_Repository PROTO((const char *repository));
|
||||
void Sanitize_Repository_Name PROTO((char *repository));
|
||||
|
||||
char *Name_Root PROTO((char *dir, char *update_dir));
|
||||
void free_cvsroot_t PROTO((cvsroot_t *root_in));
|
||||
cvsroot_t *parse_cvsroot PROTO((char *root));
|
||||
cvsroot_t *local_cvsroot PROTO((char *dir));
|
||||
void Create_Root PROTO((char *dir, char *rootdir));
|
||||
cvsroot_t *parse_cvsroot PROTO((const char *root));
|
||||
cvsroot_t *local_cvsroot PROTO((const char *dir));
|
||||
void Create_Root PROTO((const char *dir, const char *rootdir));
|
||||
void root_allow_add PROTO ((char *));
|
||||
void root_allow_free PROTO ((void));
|
||||
int root_allow_ok PROTO ((char *));
|
||||
|
||||
char *gca PROTO((const char *rev1, const char *rev2));
|
||||
char *previous_rev PROTO ((RCSNode *rcs, const char *rev));
|
||||
char *gca PROTO ((const char *rev1, const char *rev2));
|
||||
extern void check_numeric PROTO ((const char *, int, char **));
|
||||
char *getcaller PROTO((void));
|
||||
char *time_stamp PROTO((char *file));
|
||||
char *getcaller PROTO ((void));
|
||||
char *time_stamp PROTO ((const char *file));
|
||||
|
||||
void *xmalloc PROTO((size_t bytes));
|
||||
void *xrealloc PROTO((void *ptr, size_t bytes));
|
||||
void expand_string PROTO ((char **, size_t *, size_t));
|
||||
void xrealloc_and_strcat PROTO ((char **, size_t *, const char *));
|
||||
char *xstrdup PROTO((const char *str));
|
||||
void strip_trailing_newlines PROTO((char *str));
|
||||
int pathname_levels PROTO ((char *path));
|
||||
int strip_trailing_newlines PROTO((char *str));
|
||||
int pathname_levels PROTO ((const char *path));
|
||||
|
||||
typedef int (*CALLPROC) PROTO((char *repository, char *value));
|
||||
int Parse_Info PROTO((char *infofile, char *repository, CALLPROC callproc, int all));
|
||||
typedef int (*CALLPROC) PROTO((const char *repository, const char *value));
|
||||
int Parse_Info PROTO((const char *infofile, const char *repository,
|
||||
CALLPROC callproc, int all));
|
||||
extern int parse_config PROTO ((char *));
|
||||
|
||||
typedef RETSIGTYPE (*SIGCLEANUPPROC) PROTO(());
|
||||
|
|
@ -485,8 +485,11 @@ int isreadable PROTO((const char *file));
|
|||
int iswritable PROTO((const char *file));
|
||||
int isaccessible PROTO((const char *file, const int mode));
|
||||
int isabsolute PROTO((const char *filename));
|
||||
#ifdef HAVE_READLINK
|
||||
char *xreadlink PROTO((const char *link));
|
||||
char *last_component PROTO((char *path));
|
||||
#endif
|
||||
char *xresolvepath PROTO((const char *path));
|
||||
const char *last_component PROTO((const char *path));
|
||||
char *get_homedir PROTO ((void));
|
||||
char *strcat_filename_onto_homedir PROTO ((const char *, const char *));
|
||||
char *cvs_temp_name PROTO ((void));
|
||||
|
|
@ -497,16 +500,57 @@ char *increment_revnum PROTO ((const char *));
|
|||
int compare_revnums PROTO ((const char *, const char *));
|
||||
int unlink_file PROTO((const char *f));
|
||||
int unlink_file_dir PROTO((const char *f));
|
||||
|
||||
|
||||
|
||||
/* This is the structure that the recursion processor passes to the
|
||||
fileproc to tell it about a particular file. */
|
||||
struct file_info
|
||||
{
|
||||
/* Name of the file, without any directory component. */
|
||||
const char *file;
|
||||
|
||||
/* Name of the directory we are in, relative to the directory in
|
||||
which this command was issued. We have cd'd to this directory
|
||||
(either in the working directory or in the repository, depending
|
||||
on which sort of recursion we are doing). If we are in the directory
|
||||
in which the command was issued, this is "". */
|
||||
const char *update_dir;
|
||||
|
||||
/* update_dir and file put together, with a slash between them as
|
||||
necessary. This is the proper way to refer to the file in user
|
||||
messages. */
|
||||
const char *fullname;
|
||||
|
||||
/* Name of the directory corresponding to the repository which contains
|
||||
this file. */
|
||||
const char *repository;
|
||||
|
||||
/* The pre-parsed entries for this directory. */
|
||||
List *entries;
|
||||
|
||||
RCSNode *rcs;
|
||||
};
|
||||
|
||||
|
||||
|
||||
int update PROTO((int argc, char *argv[]));
|
||||
/* The only place this is currently used outside of update.c is add.c.
|
||||
* Restricting its use to update.c seems to be in the best interest of
|
||||
* modularity, but I can't think of a good way to get an update of a
|
||||
* resurrected file done and print the fact otherwise.
|
||||
*/
|
||||
void write_letter PROTO ((struct file_info *finfo, int letter));
|
||||
int xcmp PROTO((const char *file1, const char *file2));
|
||||
int yesno PROTO((void));
|
||||
void *valloc PROTO((size_t bytes));
|
||||
time_t get_date PROTO((char *date, struct timeb *now));
|
||||
extern int Create_Admin PROTO ((char *dir, char *update_dir,
|
||||
char *repository, char *tag, char *date,
|
||||
int nonbranch, int warn, int dotemplate));
|
||||
extern int expand_at_signs PROTO ((char *, off_t, FILE *));
|
||||
|
||||
extern int Create_Admin PROTO ((const char *dir, const char *update_dir,
|
||||
const char *repository, const char *tag,
|
||||
const char *date,
|
||||
int nonbranch, int warn, int dotemplate));
|
||||
extern int expand_at_signs PROTO ((const char *, off_t, FILE *));
|
||||
|
||||
/* Locking subsystem (implemented in lock.c). */
|
||||
|
||||
int Reader_Lock PROTO((char *xrepository));
|
||||
|
|
@ -522,11 +566,12 @@ extern void lock_dir_for_write PROTO ((char *));
|
|||
|
||||
/* LockDir setting from CVSROOT/config. */
|
||||
extern char *lock_dir;
|
||||
|
||||
void Scratch_Entry PROTO((List * list, char *fname));
|
||||
|
||||
void Scratch_Entry PROTO((List * list, const char *fname));
|
||||
void ParseTag PROTO((char **tagp, char **datep, int *nonbranchp));
|
||||
void WriteTag PROTO ((char *dir, char *tag, char *date, int nonbranch,
|
||||
char *update_dir, char *repository));
|
||||
void WriteTag PROTO ((const char *dir, const char *tag, const char *date,
|
||||
int nonbranch, const char *update_dir,
|
||||
const char *repository));
|
||||
void cat_module PROTO((int status));
|
||||
void check_entries PROTO((char *dir));
|
||||
void close_module PROTO((DBM * db));
|
||||
|
|
@ -539,18 +584,17 @@ void ign_add PROTO((char *ign, int hold));
|
|||
void ign_add_file PROTO((char *file, int hold));
|
||||
void ign_setup PROTO((void));
|
||||
void ign_dir_add PROTO((char *name));
|
||||
int ignore_directory PROTO((char *name));
|
||||
typedef void (*Ignore_proc) PROTO ((char *, char *));
|
||||
extern void ignore_files PROTO ((List *, List *, char *, Ignore_proc));
|
||||
int ignore_directory PROTO((const char *name));
|
||||
typedef void (*Ignore_proc) PROTO ((const char *, const char *));
|
||||
extern void ignore_files PROTO ((List *, List *, const char *, Ignore_proc));
|
||||
extern int ign_inhibit_server;
|
||||
extern int ign_case;
|
||||
|
||||
#include "update.h"
|
||||
|
||||
void line2argv PROTO ((int *pargc, char ***argv, char *line, char *sepchars));
|
||||
void make_directories PROTO((const char *name));
|
||||
void make_directory PROTO((const char *name));
|
||||
extern int mkdir_if_needed PROTO ((char *name));
|
||||
extern int mkdir_if_needed PROTO ((const char *name));
|
||||
void rename_file PROTO((const char *from, const char *to));
|
||||
/* Expand wildcards in each element of (ARGC,ARGV). This is according to the
|
||||
files which exist in the current directory, and accordingly to OS-specific
|
||||
|
|
@ -563,68 +607,41 @@ extern void expand_wild PROTO ((int argc, char **argv,
|
|||
int *pargc, char ***pargv));
|
||||
|
||||
#ifdef SERVER_SUPPORT
|
||||
extern int cvs_casecmp PROTO ((char *, char *));
|
||||
extern int cvs_casecmp PROTO ((const char *, const char *));
|
||||
extern int fopen_case PROTO ((char *, char *, FILE **, char **));
|
||||
#endif
|
||||
|
||||
void strip_trailing_slashes PROTO((char *path));
|
||||
void update_delproc PROTO((Node * p));
|
||||
void usage PROTO((const char *const *cpp));
|
||||
void xchmod PROTO((char *fname, int writable));
|
||||
void xchmod PROTO((const char *fname, int writable));
|
||||
char *xgetwd PROTO((void));
|
||||
List *Find_Names PROTO((char *repository, int which, int aflag,
|
||||
List ** optentries));
|
||||
void Register PROTO((List * list, char *fname, char *vn, char *ts,
|
||||
char *options, char *tag, char *date, char *ts_conflict));
|
||||
void Update_Logfile PROTO((char *repository, char *xmessage, FILE * xlogfp,
|
||||
List * xchanges));
|
||||
void do_editor PROTO((char *dir, char **messagep,
|
||||
char *repository, List * changes));
|
||||
List **optentries));
|
||||
void Register PROTO((List * list, const char *fname, const char *vn,
|
||||
const char *ts, const char *options, const char *tag,
|
||||
const char *date, const char *ts_conflict));
|
||||
void Update_Logfile PROTO((const char *repository, const char *xmessage,
|
||||
FILE * xlogfp, List * xchanges));
|
||||
void do_editor PROTO((const char *dir, char **messagep,
|
||||
const char *repository, List * changes));
|
||||
|
||||
void do_verify PROTO((char **messagep, char *repository));
|
||||
void do_verify PROTO((char **messagep, const char *repository));
|
||||
|
||||
typedef int (*CALLBACKPROC) PROTO((int argc, char *argv[], char *where,
|
||||
char *mwhere, char *mfile, int shorten, int local_specified,
|
||||
char *omodule, char *msg));
|
||||
|
||||
/* This is the structure that the recursion processor passes to the
|
||||
fileproc to tell it about a particular file. */
|
||||
struct file_info
|
||||
{
|
||||
/* Name of the file, without any directory component. */
|
||||
char *file;
|
||||
|
||||
/* Name of the directory we are in, relative to the directory in
|
||||
which this command was issued. We have cd'd to this directory
|
||||
(either in the working directory or in the repository, depending
|
||||
on which sort of recursion we are doing). If we are in the directory
|
||||
in which the command was issued, this is "". */
|
||||
char *update_dir;
|
||||
|
||||
/* update_dir and file put together, with a slash between them as
|
||||
necessary. This is the proper way to refer to the file in user
|
||||
messages. */
|
||||
char *fullname;
|
||||
|
||||
/* Name of the directory corresponding to the repository which contains
|
||||
this file. */
|
||||
char *repository;
|
||||
|
||||
/* The pre-parsed entries for this directory. */
|
||||
List *entries;
|
||||
|
||||
RCSNode *rcs;
|
||||
};
|
||||
|
||||
typedef int (*FILEPROC) PROTO ((void *callerdat, struct file_info *finfo));
|
||||
typedef int (*FILESDONEPROC) PROTO ((void *callerdat, int err,
|
||||
char *repository, char *update_dir,
|
||||
List *entries));
|
||||
typedef Dtype (*DIRENTPROC) PROTO ((void *callerdat, char *dir,
|
||||
char *repos, char *update_dir,
|
||||
const char *repository,
|
||||
const char *update_dir,
|
||||
List *entries));
|
||||
typedef Dtype (*DIRENTPROC) PROTO ((void *callerdat, const char *dir,
|
||||
const char *repos, const char *update_dir,
|
||||
List *entries));
|
||||
typedef int (*DIRLEAVEPROC) PROTO ((void *callerdat, char *dir, int err,
|
||||
char *update_dir, List *entries));
|
||||
typedef int (*DIRLEAVEPROC) PROTO ((void *callerdat, const char *dir, int err,
|
||||
const char *update_dir, List *entries));
|
||||
|
||||
extern int mkmodules PROTO ((char *dir));
|
||||
extern int init PROTO ((int argc, char **argv));
|
||||
|
|
@ -633,20 +650,22 @@ int do_module PROTO((DBM * db, char *mname, enum mtype m_type, char *msg,
|
|||
CALLBACKPROC callback_proc, char *where, int shorten,
|
||||
int local_specified, int run_module_prog, int build_dirs,
|
||||
char *extra_arg));
|
||||
void history_write PROTO((int type, char *update_dir, char *revs, char *name,
|
||||
char *repository));
|
||||
void history_write PROTO((int type, const char *update_dir, const char *revs,
|
||||
const char *name, const char *repository));
|
||||
int start_recursion PROTO((FILEPROC fileproc, FILESDONEPROC filesdoneproc,
|
||||
DIRENTPROC direntproc, DIRLEAVEPROC dirleaveproc,
|
||||
void *callerdat,
|
||||
int argc, char *argv[], int local, int which,
|
||||
int aflag, int locktype, char *update_preload,
|
||||
int dosrcs));
|
||||
int dosrcs, char *repository));
|
||||
void SIG_beginCrSect PROTO((void));
|
||||
void SIG_endCrSect PROTO((void));
|
||||
int SIG_inCrSect PROTO((void));
|
||||
void read_cvsrc PROTO((int *argc, char ***argv, char *cmdname));
|
||||
void read_cvsrc PROTO((int *argc, char ***argv, const char *cmdname));
|
||||
|
||||
char *make_message_rcslegal PROTO((char *message));
|
||||
char *make_message_rcslegal PROTO((const char *message));
|
||||
extern int file_has_conflict PROTO ((const struct file_info *,
|
||||
const char *ts_conflict));
|
||||
extern int file_has_markers PROTO ((const struct file_info *));
|
||||
extern void get_file PROTO ((const char *, const char *, const char *,
|
||||
char **, size_t *, size_t *));
|
||||
|
|
@ -656,13 +675,13 @@ extern void resolve_symlink PROTO ((char **filename));
|
|||
void sleep_past PROTO ((time_t desttime));
|
||||
|
||||
/* flags for run_exec(), the fast system() for CVS */
|
||||
#define RUN_NORMAL 0x0000 /* no special behaviour */
|
||||
#define RUN_COMBINED 0x0001 /* stdout is duped to stderr */
|
||||
#define RUN_REALLY 0x0002 /* do the exec, even if noexec is on */
|
||||
#define RUN_STDOUT_APPEND 0x0004 /* append to stdout, don't truncate */
|
||||
#define RUN_STDERR_APPEND 0x0008 /* append to stderr, don't truncate */
|
||||
#define RUN_SIGIGNORE 0x0010 /* ignore interrupts for command */
|
||||
#define RUN_TTY (char *)0 /* for the benefit of lint */
|
||||
#define RUN_NORMAL 0x0000 /* no special behaviour */
|
||||
#define RUN_COMBINED 0x0001 /* stdout is duped to stderr */
|
||||
#define RUN_REALLY 0x0002 /* do the exec, even if noexec is on */
|
||||
#define RUN_STDOUT_APPEND 0x0004 /* append to stdout, don't truncate */
|
||||
#define RUN_STDERR_APPEND 0x0008 /* append to stderr, don't truncate */
|
||||
#define RUN_SIGIGNORE 0x0010 /* ignore interrupts for command */
|
||||
#define RUN_TTY (char *)0 /* for the benefit of lint */
|
||||
|
||||
void run_arg PROTO((const char *s));
|
||||
void run_print PROTO((FILE * fp));
|
||||
|
|
@ -672,7 +691,7 @@ int run_exec PROTO((const char *stin, const char *stout, const char *sterr,
|
|||
|
||||
/* other similar-minded stuff from run.c. */
|
||||
FILE *run_popen PROTO((const char *, const char *));
|
||||
int piped_child PROTO((char **, int *, int *));
|
||||
int piped_child PROTO((const char **, int *, int *));
|
||||
void close_on_exec PROTO((int));
|
||||
|
||||
pid_t waitpid PROTO((pid_t, int *, int));
|
||||
|
|
@ -755,7 +774,7 @@ void freevers_ts PROTO ((Vers_TS ** versp));
|
|||
/* Miscellaneous CVS infrastructure which layers on top of the recursion
|
||||
processor (for example, needs struct file_info). */
|
||||
|
||||
int Checkin PROTO ((int type, struct file_info *finfo, char *rcs, char *rev,
|
||||
int Checkin PROTO ((int type, struct file_info *finfo, char *rev,
|
||||
char *tag, char *options, char *message));
|
||||
int No_Difference PROTO ((struct file_info *finfo, Vers_TS *vers));
|
||||
/* TODO: can the finfo argument to special_file_mismatch be changed? -twp */
|
||||
|
|
@ -829,15 +848,15 @@ void wrap_send PROTO ((void));
|
|||
#if defined(SERVER_SUPPORT) || defined(CLIENT_SUPPORT)
|
||||
void wrap_unparse_rcs_options PROTO ((char **, int));
|
||||
#endif /* SERVER_SUPPORT || CLIENT_SUPPORT */
|
||||
|
||||
|
||||
/* Pathname expansion */
|
||||
char *expand_path PROTO((char *name, char *file, int line));
|
||||
char *expand_path PROTO((const char *name, const char *file, int line));
|
||||
|
||||
/* User variables. */
|
||||
extern List *variable_list;
|
||||
|
||||
extern void variable_set PROTO ((char *nameval));
|
||||
|
||||
|
||||
int watch PROTO ((int argc, char **argv));
|
||||
int edit PROTO ((int argc, char **argv));
|
||||
int unedit PROTO ((int argc, char **argv));
|
||||
|
|
@ -898,4 +917,4 @@ extern void cvs_output_binary PROTO ((char *, size_t));
|
|||
extern void cvs_outerr PROTO ((const char *, size_t));
|
||||
extern void cvs_flusherr PROTO ((void));
|
||||
extern void cvs_flushout PROTO ((void));
|
||||
extern void cvs_output_tagged PROTO ((char *, char *));
|
||||
extern void cvs_output_tagged PROTO ((const char *, const char *));
|
||||
|
|
|
|||
|
|
@ -48,16 +48,17 @@ DEFAULT_ORGANIZATION="net"
|
|||
## # Newer config information?
|
||||
## [ -f ${GNATS_ROOT}/gnats-adm/config ] && . ${GNATS_ROOT}/gnats-adm/config
|
||||
|
||||
# Hack mktemp on systems that don't have it.
|
||||
@MKTEMP_SH_FUNCTION@
|
||||
MKTEMP="@MKTEMP@"
|
||||
|
||||
# What mailer to use. This must come after the config file, since it is
|
||||
# host-dependent.
|
||||
if [ -f /usr/sbin/sendmail ]; then
|
||||
MAIL_AGENT="/usr/sbin/sendmail -oi -t"
|
||||
else
|
||||
MAIL_AGENT="/usr/lib/sendmail -oi -t"
|
||||
fi
|
||||
SENDMAIL="@SENDMAIL@"
|
||||
MAIL_AGENT="$SENDMAIL -oi -t"
|
||||
MAILER=`echo $MAIL_AGENT | sed -e 's, .*,,'`
|
||||
if [ ! -f "$MAILER" ] ; then
|
||||
echo "$COMMAND: Cannot file mail program \"$MAILER\"."
|
||||
echo "$COMMAND: Cannot find mail program \"$MAILER\"."
|
||||
echo "$COMMAND: Please fix the MAIL_AGENT entry in the $COMMAND file."
|
||||
exit 1
|
||||
fi
|
||||
|
|
@ -85,9 +86,9 @@ fi
|
|||
|
||||
[ -z "$TMPDIR" ] && TMPDIR=/tmp
|
||||
|
||||
TEMP=$TMPDIR/p$$
|
||||
BAD=$TMPDIR/pbad$$
|
||||
REF=$TMPDIR/pf$$
|
||||
TEMP="`$MKTEMP $TMPDIR/p.XXXXXX`"
|
||||
BAD="`$MKTEMP $TMPDIR/pbad.XXXXXX`"
|
||||
REF="`$MKTEMP $TMPDIR/pf.XXXXXX`"
|
||||
|
||||
if [ -z "$LOGNAME" -a -n "$USER" ]; then
|
||||
LOGNAME=$USER
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ void
|
|||
read_cvsrc (argc, argv, cmdname)
|
||||
int *argc;
|
||||
char ***argv;
|
||||
char *cmdname;
|
||||
const char *cmdname;
|
||||
{
|
||||
char *homedir;
|
||||
char *homeinit;
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
* files.
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
#include "cvs.h"
|
||||
|
||||
enum diff_file
|
||||
|
|
@ -25,18 +26,21 @@ enum diff_file
|
|||
DIFF_SAME
|
||||
};
|
||||
|
||||
static Dtype diff_dirproc PROTO ((void *callerdat, char *dir,
|
||||
char *pos_repos, char *update_dir,
|
||||
List *entries));
|
||||
static Dtype diff_dirproc PROTO ((void *callerdat, const char *dir,
|
||||
const char *pos_repos,
|
||||
const char *update_dir,
|
||||
List *entries));
|
||||
static int diff_filesdoneproc PROTO ((void *callerdat, int err,
|
||||
char *repos, char *update_dir,
|
||||
List *entries));
|
||||
static int diff_dirleaveproc PROTO ((void *callerdat, char *dir,
|
||||
int err, char *update_dir,
|
||||
List *entries));
|
||||
static enum diff_file diff_file_nodiff PROTO ((struct file_info *finfo,
|
||||
const char *repos,
|
||||
const char *update_dir,
|
||||
List *entries));
|
||||
static int diff_dirleaveproc PROTO ((void *callerdat, const char *dir,
|
||||
int err, const char *update_dir,
|
||||
List *entries));
|
||||
static enum diff_file diff_file_nodiff PROTO(( struct file_info *finfo,
|
||||
Vers_TS *vers,
|
||||
enum diff_file));
|
||||
enum diff_file,
|
||||
char **rev1_cache ));
|
||||
static int diff_fileproc PROTO ((void *callerdat, struct file_info *finfo));
|
||||
static void diff_mark_errors PROTO((int err));
|
||||
|
||||
|
|
@ -270,6 +274,13 @@ diff (argc, argv)
|
|||
diff_date2 = NULL;
|
||||
|
||||
optind = 0;
|
||||
/* FIXME: This should really be allocating an argv to be passed to diff
|
||||
* later rather than strcatting onto the opts variable. We have some
|
||||
* handling routines that can already handle most of the argc/argv
|
||||
* maintenance for us and currently, if anyone were to attempt to pass a
|
||||
* quoted string in here, it would be split on spaces and tabs on its way
|
||||
* to diff.
|
||||
*/
|
||||
while ((c = getopt_long (argc, argv,
|
||||
"+abcdefhilnpstuwy0123456789BHNRTC:D:F:I:L:U:W:k:r:",
|
||||
longopts, &option_index)) != -1)
|
||||
|
|
@ -422,7 +433,8 @@ diff (argc, argv)
|
|||
/* start the recursion processor */
|
||||
err = start_recursion (diff_fileproc, diff_filesdoneproc, diff_dirproc,
|
||||
diff_dirleaveproc, NULL, argc, argv, local,
|
||||
which, 0, CVS_LOCK_READ, (char *) NULL, 1);
|
||||
which, 0, CVS_LOCK_READ, (char *) NULL, 1,
|
||||
(char *) NULL);
|
||||
|
||||
/* clean up */
|
||||
free (options);
|
||||
|
|
@ -448,16 +460,12 @@ diff_fileproc (callerdat, finfo)
|
|||
int status, err = 2; /* 2 == trouble, like rcsdiff */
|
||||
Vers_TS *vers;
|
||||
enum diff_file empty_file = DIFF_DIFFERENT;
|
||||
char *tmp;
|
||||
char *tocvsPath;
|
||||
char *fname;
|
||||
char *tmp = NULL;
|
||||
char *tocvsPath = NULL;
|
||||
char *fname = NULL;
|
||||
char *label1;
|
||||
char *label2;
|
||||
|
||||
/* Initialize these solely to avoid warnings from gcc -Wall about
|
||||
variables that might be used uninitialized. */
|
||||
tmp = NULL;
|
||||
fname = NULL;
|
||||
char *rev1_cache = NULL;
|
||||
|
||||
user_file_rev = 0;
|
||||
vers = Version_TS (finfo, NULL, NULL, NULL, 1, 0);
|
||||
|
|
@ -505,30 +513,69 @@ diff_fileproc (callerdat, finfo)
|
|||
error (0, 0,
|
||||
"%s no longer exists, no comparison available",
|
||||
finfo->fullname);
|
||||
freevers_ts (&vers);
|
||||
diff_mark_errors (err);
|
||||
return (err);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
error (0, 0, "I know nothing about %s", finfo->fullname);
|
||||
freevers_ts (&vers);
|
||||
diff_mark_errors (err);
|
||||
return (err);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
else if (vers->vn_user[0] == '0' && vers->vn_user[1] == '\0')
|
||||
{
|
||||
if (empty_files)
|
||||
empty_file = DIFF_ADDED;
|
||||
else
|
||||
/* The file was added locally. */
|
||||
int exists = 0;
|
||||
|
||||
if (vers->srcfile != NULL)
|
||||
{
|
||||
error (0, 0, "%s is a new entry, no comparison available",
|
||||
finfo->fullname);
|
||||
freevers_ts (&vers);
|
||||
diff_mark_errors (err);
|
||||
return (err);
|
||||
/* The file does exist in the repository. */
|
||||
|
||||
if ((diff_rev1 != NULL || diff_date1 != NULL))
|
||||
{
|
||||
/* special handling for TAG_HEAD */
|
||||
if (diff_rev1 && strcmp (diff_rev1, TAG_HEAD) == 0)
|
||||
{
|
||||
char *head =
|
||||
(vers->vn_rcs == NULL
|
||||
? NULL
|
||||
: RCS_branch_head (vers->srcfile, vers->vn_rcs));
|
||||
exists = head != NULL && !RCS_isdead(vers->srcfile, head);
|
||||
if (head != NULL)
|
||||
free (head);
|
||||
}
|
||||
else
|
||||
{
|
||||
Vers_TS *xvers;
|
||||
|
||||
xvers = Version_TS (finfo, NULL, diff_rev1, diff_date1,
|
||||
1, 0);
|
||||
exists = xvers->vn_rcs != NULL
|
||||
&& !RCS_isdead (xvers->srcfile, xvers->vn_rcs);
|
||||
freevers_ts (&xvers);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* The file was added locally, but an RCS archive exists. Our
|
||||
* base revision must be dead.
|
||||
*/
|
||||
/* No need to set, exists = 0, here. That's the default. */
|
||||
}
|
||||
}
|
||||
if (!exists)
|
||||
{
|
||||
/* If we got here, then either the RCS archive does not exist or
|
||||
* the relevant revision is dead.
|
||||
*/
|
||||
if (empty_files)
|
||||
empty_file = DIFF_ADDED;
|
||||
else
|
||||
{
|
||||
error (0, 0, "%s is a new entry, no comparison available",
|
||||
finfo->fullname);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (vers->vn_user[0] == '-')
|
||||
|
|
@ -539,9 +586,7 @@ diff_fileproc (callerdat, finfo)
|
|||
{
|
||||
error (0, 0, "%s was removed, no comparison available",
|
||||
finfo->fullname);
|
||||
freevers_ts (&vers);
|
||||
diff_mark_errors (err);
|
||||
return (err);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -550,18 +595,14 @@ diff_fileproc (callerdat, finfo)
|
|||
{
|
||||
error (0, 0, "cannot find revision control file for %s",
|
||||
finfo->fullname);
|
||||
freevers_ts (&vers);
|
||||
diff_mark_errors (err);
|
||||
return (err);
|
||||
goto out;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (vers->ts_user == NULL)
|
||||
{
|
||||
error (0, 0, "cannot find %s", finfo->fullname);
|
||||
freevers_ts (&vers);
|
||||
diff_mark_errors (err);
|
||||
return (err);
|
||||
goto out;
|
||||
}
|
||||
else if (!strcmp (vers->ts_user, vers->ts_rcs))
|
||||
{
|
||||
|
|
@ -573,73 +614,21 @@ diff_fileproc (callerdat, finfo)
|
|||
}
|
||||
}
|
||||
|
||||
empty_file = diff_file_nodiff (finfo, vers, empty_file);
|
||||
if (empty_file == DIFF_SAME || empty_file == DIFF_ERROR)
|
||||
empty_file = diff_file_nodiff( finfo, vers, empty_file, &rev1_cache );
|
||||
if( empty_file == DIFF_SAME )
|
||||
{
|
||||
freevers_ts (&vers);
|
||||
if (empty_file == DIFF_SAME)
|
||||
{
|
||||
/* In the server case, would be nice to send a "Checked-in"
|
||||
response, so that the client can rewrite its timestamp.
|
||||
server_checked_in by itself isn't the right thing (it
|
||||
needs a server_register), but I'm not sure what is.
|
||||
It isn't clear to me how "cvs status" handles this (that
|
||||
is, for a client which sends Modified not Is-modified to
|
||||
"cvs status"), but it does. */
|
||||
return (0);
|
||||
}
|
||||
else
|
||||
{
|
||||
diff_mark_errors (err);
|
||||
return (err);
|
||||
}
|
||||
}
|
||||
|
||||
if (empty_file == DIFF_DIFFERENT)
|
||||
{
|
||||
int dead1, dead2;
|
||||
|
||||
if (use_rev1 == NULL)
|
||||
dead1 = 0;
|
||||
else
|
||||
dead1 = RCS_isdead (vers->srcfile, use_rev1);
|
||||
if (use_rev2 == NULL)
|
||||
dead2 = 0;
|
||||
else
|
||||
dead2 = RCS_isdead (vers->srcfile, use_rev2);
|
||||
|
||||
if (dead1 && dead2)
|
||||
{
|
||||
freevers_ts (&vers);
|
||||
return (0);
|
||||
}
|
||||
else if (dead1)
|
||||
{
|
||||
if (empty_files)
|
||||
empty_file = DIFF_ADDED;
|
||||
else
|
||||
{
|
||||
error (0, 0, "%s is a new entry, no comparison available",
|
||||
finfo->fullname);
|
||||
freevers_ts (&vers);
|
||||
diff_mark_errors (err);
|
||||
return (err);
|
||||
}
|
||||
}
|
||||
else if (dead2)
|
||||
{
|
||||
if (empty_files)
|
||||
empty_file = DIFF_REMOVED;
|
||||
else
|
||||
{
|
||||
error (0, 0, "%s was removed, no comparison available",
|
||||
finfo->fullname);
|
||||
freevers_ts (&vers);
|
||||
diff_mark_errors (err);
|
||||
return (err);
|
||||
}
|
||||
}
|
||||
/* In the server case, would be nice to send a "Checked-in"
|
||||
response, so that the client can rewrite its timestamp.
|
||||
server_checked_in by itself isn't the right thing (it
|
||||
needs a server_register), but I'm not sure what is.
|
||||
It isn't clear to me how "cvs status" handles this (that
|
||||
is, for a client which sends Modified not Is-modified to
|
||||
"cvs status"), but it does. */
|
||||
err = 0;
|
||||
goto out;
|
||||
}
|
||||
else if( empty_file == DIFF_ERROR )
|
||||
goto out;
|
||||
|
||||
/* Output an "Index:" line for patch to use */
|
||||
cvs_output ("Index: ", 0);
|
||||
|
|
@ -647,7 +636,7 @@ diff_fileproc (callerdat, finfo)
|
|||
cvs_output ("\n", 1);
|
||||
|
||||
tocvsPath = wrap_tocvs_process_file(finfo->file);
|
||||
if (tocvsPath)
|
||||
if( tocvsPath != NULL )
|
||||
{
|
||||
/* Backup the current version of the file to CVS/,,filename */
|
||||
fname = xmalloc (strlen (finfo->file)
|
||||
|
|
@ -676,7 +665,8 @@ diff_fileproc (callerdat, finfo)
|
|||
make_file_label (DEVNULL, NULL, NULL);
|
||||
else
|
||||
label1 =
|
||||
make_file_label (finfo->fullname, use_rev1, vers ? vers->srcfile : NULL);
|
||||
make_file_label (finfo->fullname, use_rev1,
|
||||
vers ? vers->srcfile : NULL);
|
||||
}
|
||||
|
||||
if (!have_rev2_label)
|
||||
|
|
@ -686,7 +676,8 @@ diff_fileproc (callerdat, finfo)
|
|||
make_file_label (DEVNULL, NULL, NULL);
|
||||
else
|
||||
label2 =
|
||||
make_file_label (finfo->fullname, use_rev2, vers ? vers->srcfile : NULL);
|
||||
make_file_label (finfo->fullname, use_rev2,
|
||||
vers ? vers->srcfile : NULL);
|
||||
}
|
||||
|
||||
if (empty_file == DIFF_ADDED || empty_file == DIFF_REMOVED)
|
||||
|
|
@ -709,7 +700,8 @@ RCS file: ", 0);
|
|||
if (empty_file == DIFF_ADDED)
|
||||
{
|
||||
if (use_rev2 == NULL)
|
||||
status = diff_exec (DEVNULL, finfo->file, label1, label2, opts, RUN_TTY);
|
||||
status = diff_exec (DEVNULL, finfo->file, label1, label2, opts,
|
||||
RUN_TTY);
|
||||
else
|
||||
{
|
||||
int retcode;
|
||||
|
|
@ -722,11 +714,8 @@ RCS file: ", 0);
|
|||
: vers->options),
|
||||
tmp, (RCSCHECKOUTPROC) NULL,
|
||||
(void *) NULL);
|
||||
if (retcode != 0)
|
||||
{
|
||||
diff_mark_errors (err);
|
||||
return err;
|
||||
}
|
||||
if( retcode != 0 )
|
||||
goto out;
|
||||
|
||||
status = diff_exec (DEVNULL, tmp, label1, label2, opts, RUN_TTY);
|
||||
}
|
||||
|
|
@ -742,26 +731,24 @@ RCS file: ", 0);
|
|||
tmp, (RCSCHECKOUTPROC) NULL,
|
||||
(void *) NULL);
|
||||
if (retcode != 0)
|
||||
{
|
||||
diff_mark_errors (err);
|
||||
return err;
|
||||
}
|
||||
goto out;
|
||||
|
||||
status = diff_exec (tmp, DEVNULL, label1, label2, opts, RUN_TTY);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
status = RCS_exec_rcsdiff (vers->srcfile, opts,
|
||||
*options ? options : vers->options,
|
||||
use_rev1, use_rev2,
|
||||
label1, label2,
|
||||
finfo->file);
|
||||
status = RCS_exec_rcsdiff(vers->srcfile, opts,
|
||||
*options ? options : vers->options,
|
||||
use_rev1, rev1_cache, use_rev2,
|
||||
label1, label2,
|
||||
finfo->file);
|
||||
|
||||
if (label1) free (label1);
|
||||
if (label2) free (label2);
|
||||
}
|
||||
|
||||
if (label1) free (label1);
|
||||
if (label2) free (label2);
|
||||
|
||||
switch (status)
|
||||
{
|
||||
case -1: /* fork failed */
|
||||
|
|
@ -775,7 +762,8 @@ RCS file: ", 0);
|
|||
break;
|
||||
}
|
||||
|
||||
if (tocvsPath)
|
||||
out:
|
||||
if( tocvsPath != NULL )
|
||||
{
|
||||
if (unlink_file_dir (finfo->file) < 0)
|
||||
if (! existence_error (errno))
|
||||
|
|
@ -787,17 +775,25 @@ RCS file: ", 0);
|
|||
free (fname);
|
||||
}
|
||||
|
||||
if (empty_file == DIFF_REMOVED
|
||||
|| (empty_file == DIFF_ADDED && use_rev2 != NULL))
|
||||
/* Call CVS_UNLINK() rather than unlink_file() below to avoid the check
|
||||
* for noexec.
|
||||
*/
|
||||
if( tmp != NULL )
|
||||
{
|
||||
if (CVS_UNLINK (tmp) < 0)
|
||||
if (CVS_UNLINK(tmp) < 0)
|
||||
error (0, errno, "cannot remove %s", tmp);
|
||||
free (tmp);
|
||||
}
|
||||
if( rev1_cache != NULL )
|
||||
{
|
||||
if( CVS_UNLINK( rev1_cache ) < 0 )
|
||||
error( 0, errno, "cannot remove %s", rev1_cache );
|
||||
free( rev1_cache );
|
||||
}
|
||||
|
||||
freevers_ts (&vers);
|
||||
diff_mark_errors (err);
|
||||
return (err);
|
||||
return err;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -820,9 +816,9 @@ diff_mark_errors (err)
|
|||
static Dtype
|
||||
diff_dirproc (callerdat, dir, pos_repos, update_dir, entries)
|
||||
void *callerdat;
|
||||
char *dir;
|
||||
char *pos_repos;
|
||||
char *update_dir;
|
||||
const char *dir;
|
||||
const char *pos_repos;
|
||||
const char *update_dir;
|
||||
List *entries;
|
||||
{
|
||||
/* XXX - check for dirs we don't want to process??? */
|
||||
|
|
@ -844,8 +840,8 @@ static int
|
|||
diff_filesdoneproc (callerdat, err, repos, update_dir, entries)
|
||||
void *callerdat;
|
||||
int err;
|
||||
char *repos;
|
||||
char *update_dir;
|
||||
const char *repos;
|
||||
const char *update_dir;
|
||||
List *entries;
|
||||
{
|
||||
return (diff_errors);
|
||||
|
|
@ -858,9 +854,9 @@ diff_filesdoneproc (callerdat, err, repos, update_dir, entries)
|
|||
static int
|
||||
diff_dirleaveproc (callerdat, dir, err, update_dir, entries)
|
||||
void *callerdat;
|
||||
char *dir;
|
||||
const char *dir;
|
||||
int err;
|
||||
char *update_dir;
|
||||
const char *update_dir;
|
||||
List *entries;
|
||||
{
|
||||
return (diff_errors);
|
||||
|
|
@ -870,10 +866,13 @@ diff_dirleaveproc (callerdat, dir, err, update_dir, entries)
|
|||
* verify that a file is different
|
||||
*/
|
||||
static enum diff_file
|
||||
diff_file_nodiff (finfo, vers, empty_file)
|
||||
diff_file_nodiff( finfo, vers, empty_file, rev1_cache )
|
||||
struct file_info *finfo;
|
||||
Vers_TS *vers;
|
||||
enum diff_file empty_file;
|
||||
char **rev1_cache; /* Cache the content of rev1 if we have to look
|
||||
* it up.
|
||||
*/
|
||||
{
|
||||
Vers_TS *xvers;
|
||||
int retcode;
|
||||
|
|
@ -889,9 +888,10 @@ diff_file_nodiff (finfo, vers, empty_file)
|
|||
{
|
||||
/* special handling for TAG_HEAD */
|
||||
if (diff_rev1 && strcmp (diff_rev1, TAG_HEAD) == 0)
|
||||
use_rev1 = ((vers->vn_rcs == NULL || vers->srcfile == NULL)
|
||||
? NULL
|
||||
: RCS_branch_head (vers->srcfile, vers->vn_rcs));
|
||||
{
|
||||
if (vers->vn_rcs != NULL && vers->srcfile != NULL)
|
||||
use_rev1 = RCS_branch_head (vers->srcfile, vers->vn_rcs);
|
||||
}
|
||||
else
|
||||
{
|
||||
xvers = Version_TS (finfo, NULL, diff_rev1, diff_date1, 1, 0);
|
||||
|
|
@ -904,9 +904,10 @@ diff_file_nodiff (finfo, vers, empty_file)
|
|||
{
|
||||
/* special handling for TAG_HEAD */
|
||||
if (diff_rev2 && strcmp (diff_rev2, TAG_HEAD) == 0)
|
||||
use_rev2 = ((vers->vn_rcs == NULL || vers->srcfile == NULL)
|
||||
? NULL
|
||||
: RCS_branch_head (vers->srcfile, vers->vn_rcs));
|
||||
{
|
||||
if (vers->vn_rcs != NULL && vers->srcfile != NULL)
|
||||
use_rev2 = RCS_branch_head (vers->srcfile, vers->vn_rcs);
|
||||
}
|
||||
else
|
||||
{
|
||||
xvers = Version_TS (finfo, NULL, diff_rev2, diff_date2, 1, 0);
|
||||
|
|
@ -915,19 +916,39 @@ diff_file_nodiff (finfo, vers, empty_file)
|
|||
freevers_ts (&xvers);
|
||||
}
|
||||
|
||||
if (use_rev1 == NULL)
|
||||
if( use_rev1 == NULL || RCS_isdead( vers->srcfile, use_rev1 ) )
|
||||
{
|
||||
/* The first revision does not exist. If EMPTY_FILES is
|
||||
true, treat this as an added file. Otherwise, warn
|
||||
about the missing tag. */
|
||||
if (use_rev2 == NULL)
|
||||
if( use_rev2 == NULL || RCS_isdead( vers->srcfile, use_rev2 ) )
|
||||
/* At least in the case where DIFF_REV1 and DIFF_REV2
|
||||
are both numeric, we should be returning some kind
|
||||
of error (see basicb-8a0 in testsuite). The symbolic
|
||||
case may be more complicated. */
|
||||
* are both numeric (and non-existant (NULL), as opposed to
|
||||
* dead?), we should be returning some kind of error (see
|
||||
* basicb-8a0 in testsuite). The symbolic case may be more
|
||||
* complicated.
|
||||
*/
|
||||
return DIFF_SAME;
|
||||
else if (empty_files)
|
||||
if( empty_files )
|
||||
return DIFF_ADDED;
|
||||
if( use_rev1 != NULL )
|
||||
{
|
||||
if (diff_rev1)
|
||||
{
|
||||
error( 0, 0,
|
||||
"Tag %s refers to a dead (removed) revision in file `%s'.",
|
||||
diff_rev1, finfo->fullname );
|
||||
}
|
||||
else
|
||||
{
|
||||
error( 0, 0,
|
||||
"Date %s refers to a dead (removed) revision in file `%s'.",
|
||||
diff_date1, finfo->fullname );
|
||||
}
|
||||
error( 0, 0,
|
||||
"No comparison available. Pass `-N' to `%s diff'?",
|
||||
program_name );
|
||||
}
|
||||
else if (diff_rev1)
|
||||
error (0, 0, "tag %s is not in file %s", diff_rev1,
|
||||
finfo->fullname);
|
||||
|
|
@ -937,13 +958,32 @@ diff_file_nodiff (finfo, vers, empty_file)
|
|||
return DIFF_ERROR;
|
||||
}
|
||||
|
||||
if (use_rev2 == NULL)
|
||||
assert( use_rev1 != NULL );
|
||||
if( use_rev2 == NULL || RCS_isdead( vers->srcfile, use_rev2 ) )
|
||||
{
|
||||
/* The second revision does not exist. If EMPTY_FILES is
|
||||
true, treat this as a removed file. Otherwise warn
|
||||
about the missing tag. */
|
||||
if (empty_files)
|
||||
return DIFF_REMOVED;
|
||||
if( use_rev2 != NULL )
|
||||
{
|
||||
if (diff_rev2)
|
||||
{
|
||||
error( 0, 0,
|
||||
"Tag %s refers to a dead (removed) revision in file `%s'.",
|
||||
diff_rev2, finfo->fullname );
|
||||
}
|
||||
else
|
||||
{
|
||||
error( 0, 0,
|
||||
"Date %s refers to a dead (removed) revision in file `%s'.",
|
||||
diff_date2, finfo->fullname );
|
||||
}
|
||||
error( 0, 0,
|
||||
"No comparison available. Pass `-N' to `%s diff'?",
|
||||
program_name );
|
||||
}
|
||||
else if (diff_rev2)
|
||||
error (0, 0, "tag %s is not in file %s", diff_rev2,
|
||||
finfo->fullname);
|
||||
|
|
@ -952,15 +992,23 @@ diff_file_nodiff (finfo, vers, empty_file)
|
|||
diff_date2, finfo->fullname);
|
||||
return DIFF_ERROR;
|
||||
}
|
||||
|
||||
/* now, see if we really need to do the diff */
|
||||
if (strcmp (use_rev1, use_rev2) == 0)
|
||||
/* Now, see if we really need to do the diff. We can't assume that the
|
||||
* files are different when the revs are.
|
||||
*/
|
||||
assert( use_rev2 != NULL );
|
||||
if( strcmp (use_rev1, use_rev2) == 0 )
|
||||
return DIFF_SAME;
|
||||
else
|
||||
return DIFF_DIFFERENT;
|
||||
/* else fall through and do the diff */
|
||||
}
|
||||
|
||||
if ((diff_rev1 || diff_date1) && use_rev1 == NULL)
|
||||
/* If we had a r1/d1 & r2/d2, then at this point we must have a C3P0...
|
||||
* err... ok, then both rev1 & rev2 must have resolved to an existing,
|
||||
* live version due to if statement we just closed.
|
||||
*/
|
||||
assert (!(diff_rev2 || diff_date2) || (use_rev1 && use_rev2));
|
||||
|
||||
if ((diff_rev1 || diff_date1) &&
|
||||
(use_rev1 == NULL || RCS_isdead (vers->srcfile, use_rev1)))
|
||||
{
|
||||
/* The first revision does not exist, and no second revision
|
||||
was given. */
|
||||
|
|
@ -968,25 +1016,39 @@ diff_file_nodiff (finfo, vers, empty_file)
|
|||
{
|
||||
if (empty_file == DIFF_REMOVED)
|
||||
return DIFF_SAME;
|
||||
else
|
||||
{
|
||||
if (user_file_rev && use_rev2 == NULL)
|
||||
use_rev2 = xstrdup (user_file_rev);
|
||||
return DIFF_ADDED;
|
||||
}
|
||||
if( user_file_rev && use_rev2 == NULL )
|
||||
use_rev2 = xstrdup( user_file_rev );
|
||||
return DIFF_ADDED;
|
||||
}
|
||||
else
|
||||
if( use_rev1 != NULL )
|
||||
{
|
||||
if (diff_rev1)
|
||||
error (0, 0, "tag %s is not in file %s", diff_rev1,
|
||||
finfo->fullname);
|
||||
{
|
||||
error( 0, 0,
|
||||
"Tag %s refers to a dead (removed) revision in file `%s'.",
|
||||
diff_rev1, finfo->fullname );
|
||||
}
|
||||
else
|
||||
error (0, 0, "no revision for date %s in file %s",
|
||||
diff_date1, finfo->fullname);
|
||||
return DIFF_ERROR;
|
||||
{
|
||||
error( 0, 0,
|
||||
"Date %s refers to a dead (removed) revision in file `%s'.",
|
||||
diff_date1, finfo->fullname );
|
||||
}
|
||||
error( 0, 0,
|
||||
"No comparison available. Pass `-N' to `%s diff'?",
|
||||
program_name );
|
||||
}
|
||||
else if ( diff_rev1 )
|
||||
error( 0, 0, "tag %s is not in file %s", diff_rev1,
|
||||
finfo->fullname );
|
||||
else
|
||||
error( 0, 0, "no revision for date %s in file %s",
|
||||
diff_date1, finfo->fullname );
|
||||
return DIFF_ERROR;
|
||||
}
|
||||
|
||||
assert( !diff_rev1 || use_rev1 );
|
||||
|
||||
if (user_file_rev)
|
||||
{
|
||||
/* drop user_file_rev into first unused use_rev */
|
||||
|
|
@ -995,20 +1057,25 @@ diff_file_nodiff (finfo, vers, empty_file)
|
|||
else if (!use_rev2)
|
||||
use_rev2 = xstrdup (user_file_rev);
|
||||
/* and if not, it wasn't needed anyhow */
|
||||
user_file_rev = 0;
|
||||
user_file_rev = NULL;
|
||||
}
|
||||
|
||||
/* now, see if we really need to do the diff */
|
||||
if (use_rev1 && use_rev2)
|
||||
/* Now, see if we really need to do the diff. We can't assume that the
|
||||
* files are different when the revs are.
|
||||
*/
|
||||
if( use_rev1 && use_rev2)
|
||||
{
|
||||
if (strcmp (use_rev1, use_rev2) == 0)
|
||||
return DIFF_SAME;
|
||||
else
|
||||
return DIFF_DIFFERENT;
|
||||
/* Fall through and do the diff. */
|
||||
}
|
||||
|
||||
if (use_rev1 == NULL
|
||||
|| (vers->vn_user != NULL && strcmp (use_rev1, vers->vn_user) == 0))
|
||||
/* Don't want to do the timestamp check with both use_rev1 & use_rev2 set.
|
||||
* The timestamp check is just for the default case of diffing the
|
||||
* workspace file against its base revision.
|
||||
*/
|
||||
else if( use_rev1 == NULL
|
||||
|| ( vers->vn_user != NULL
|
||||
&& strcmp( use_rev1, vers->vn_user ) == 0 ) )
|
||||
{
|
||||
if (empty_file == DIFF_DIFFERENT
|
||||
&& vers->ts_user != NULL
|
||||
|
|
@ -1033,13 +1100,12 @@ diff_file_nodiff (finfo, vers, empty_file)
|
|||
return empty_file;
|
||||
|
||||
/*
|
||||
* with 0 or 1 -r option specified, run a quick diff to see if we
|
||||
* should bother with it at all.
|
||||
* Run a quick cmp to see if we should bother with a full diff.
|
||||
*/
|
||||
|
||||
retcode = RCS_cmp_file (vers->srcfile, use_rev1,
|
||||
*options ? options : vers->options,
|
||||
finfo->file);
|
||||
retcode = RCS_cmp_file( vers->srcfile, use_rev1, rev1_cache,
|
||||
use_rev2, *options ? options : vers->options,
|
||||
finfo->file );
|
||||
|
||||
return retcode == 0 ? DIFF_SAME : DIFF_DIFFERENT;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,14 +36,17 @@ onoff_fileproc (callerdat, finfo)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int onoff_filesdoneproc PROTO ((void *, int, char *, char *, List *));
|
||||
|
||||
|
||||
static int onoff_filesdoneproc PROTO ((void *, int, const char *, const char *,
|
||||
List *));
|
||||
|
||||
static int
|
||||
onoff_filesdoneproc (callerdat, err, repository, update_dir, entries)
|
||||
void *callerdat;
|
||||
int err;
|
||||
char *repository;
|
||||
char *update_dir;
|
||||
const char *repository;
|
||||
const char *update_dir;
|
||||
List *entries;
|
||||
{
|
||||
if (setting_default)
|
||||
|
|
@ -104,7 +107,7 @@ watch_onoff (argc, argv)
|
|||
err = start_recursion (onoff_fileproc, onoff_filesdoneproc,
|
||||
(DIRENTPROC) NULL, (DIRLEAVEPROC) NULL, NULL,
|
||||
argc, argv, local, W_LOCAL, 0, CVS_LOCK_NONE,
|
||||
(char *)NULL, 0);
|
||||
(char *) NULL, 0, (char *) NULL);
|
||||
|
||||
Lock_Cleanup ();
|
||||
return err;
|
||||
|
|
@ -238,7 +241,7 @@ send_notifications (argc, argv, local)
|
|||
notifications stay in CVSADM_NOTIFY to be sent next time. */
|
||||
if (current_parsed_root->isremote)
|
||||
{
|
||||
if (strcmp (command_name, "release") != 0)
|
||||
if (strcmp (cvs_cmd_name, "release") != 0)
|
||||
{
|
||||
start_server ();
|
||||
ign_setup ();
|
||||
|
|
@ -247,10 +250,10 @@ send_notifications (argc, argv, local)
|
|||
err += start_recursion (dummy_fileproc, (FILESDONEPROC) NULL,
|
||||
(DIRENTPROC) NULL, (DIRLEAVEPROC) NULL, NULL,
|
||||
argc, argv, local, W_LOCAL, 0, 0, (char *)NULL,
|
||||
0);
|
||||
0, (char *) NULL);
|
||||
|
||||
send_to_server ("noop\012", 0);
|
||||
if (strcmp (command_name, "release") == 0)
|
||||
if (strcmp (cvs_cmd_name, "release") == 0)
|
||||
err += get_server_responses ();
|
||||
else
|
||||
err += get_responses_and_close ();
|
||||
|
|
@ -264,7 +267,7 @@ send_notifications (argc, argv, local)
|
|||
err += start_recursion (ncheck_fileproc, (FILESDONEPROC) NULL,
|
||||
(DIRENTPROC) NULL, (DIRLEAVEPROC) NULL, NULL,
|
||||
argc, argv, local, W_LOCAL, 0, 0, (char *)NULL,
|
||||
0);
|
||||
0, (char *) NULL);
|
||||
Lock_Cleanup ();
|
||||
}
|
||||
return err;
|
||||
|
|
@ -443,8 +446,8 @@ edit (argc, argv)
|
|||
repository. */
|
||||
err = start_recursion (edit_fileproc, (FILESDONEPROC) NULL,
|
||||
(DIRENTPROC) NULL, (DIRLEAVEPROC) NULL, NULL,
|
||||
argc, argv, local, W_LOCAL, 0, 0, (char *)NULL,
|
||||
0);
|
||||
argc, argv, local, W_LOCAL, 0, 0, (char *) NULL,
|
||||
0, (char *) NULL);
|
||||
|
||||
err += send_notifications (argc, argv, local);
|
||||
|
||||
|
|
@ -534,7 +537,7 @@ unedit_fileproc (callerdat, finfo)
|
|||
now. */
|
||||
if (node != NULL)
|
||||
{
|
||||
entdata = (Entnode *) node->data;
|
||||
entdata = node->data;
|
||||
if (baserev == NULL)
|
||||
{
|
||||
/* This can only happen if the CVS/Baserev file got
|
||||
|
|
@ -613,7 +616,7 @@ unedit (argc, argv)
|
|||
err = start_recursion (unedit_fileproc, (FILESDONEPROC) NULL,
|
||||
(DIRENTPROC) NULL, (DIRLEAVEPROC) NULL, NULL,
|
||||
argc, argv, local, W_LOCAL, 0, 0, (char *)NULL,
|
||||
0);
|
||||
0, (char *) NULL);
|
||||
|
||||
err += send_notifications (argc, argv, local);
|
||||
|
||||
|
|
@ -622,7 +625,7 @@ unedit (argc, argv)
|
|||
|
||||
void
|
||||
mark_up_to_date (file)
|
||||
char *file;
|
||||
const char *file;
|
||||
{
|
||||
char *base;
|
||||
|
||||
|
|
@ -637,12 +640,13 @@ mark_up_to_date (file)
|
|||
free (base);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void
|
||||
editor_set (filename, editor, val)
|
||||
char *filename;
|
||||
char *editor;
|
||||
char *val;
|
||||
const char *filename;
|
||||
const char *editor;
|
||||
const char *val;
|
||||
{
|
||||
char *edlist;
|
||||
char *newlist;
|
||||
|
|
@ -663,32 +667,36 @@ editor_set (filename, editor, val)
|
|||
|
||||
struct notify_proc_args {
|
||||
/* What kind of notification, "edit", "tedit", etc. */
|
||||
char *type;
|
||||
const char *type;
|
||||
/* User who is running the command which causes notification. */
|
||||
char *who;
|
||||
const char *who;
|
||||
/* User to be notified. */
|
||||
char *notifyee;
|
||||
const char *notifyee;
|
||||
/* File. */
|
||||
char *file;
|
||||
const char *file;
|
||||
};
|
||||
|
||||
|
||||
|
||||
/* Pass as a static until we get around to fixing Parse_Info to pass along
|
||||
a void * where we can stash it. */
|
||||
static struct notify_proc_args *notify_args;
|
||||
|
||||
static int notify_proc PROTO ((char *repository, char *filter));
|
||||
|
||||
|
||||
static int notify_proc PROTO ((const char *repository, const char *filter));
|
||||
|
||||
static int
|
||||
notify_proc (repository, filter)
|
||||
char *repository;
|
||||
char *filter;
|
||||
const char *repository;
|
||||
const char *filter;
|
||||
{
|
||||
FILE *pipefp;
|
||||
char *prog;
|
||||
char *expanded_prog;
|
||||
char *p;
|
||||
const char *p;
|
||||
char *q;
|
||||
char *srepos;
|
||||
const char *srepos;
|
||||
struct notify_proc_args *args = notify_args;
|
||||
|
||||
srepos = Short_Repository (repository);
|
||||
|
|
@ -751,11 +759,11 @@ notify_proc (repository, filter)
|
|||
void
|
||||
notify_do (type, filename, who, val, watches, repository)
|
||||
int type;
|
||||
char *filename;
|
||||
char *who;
|
||||
char *val;
|
||||
char *watches;
|
||||
char *repository;
|
||||
const char *filename;
|
||||
const char *who;
|
||||
const char *val;
|
||||
const char *watches;
|
||||
const char *repository;
|
||||
{
|
||||
static struct addremove_args blank;
|
||||
struct addremove_args args;
|
||||
|
|
@ -919,9 +927,11 @@ notify_do (type, filename, who, val, watches, repository)
|
|||
|
||||
if (args.notifyee == NULL)
|
||||
{
|
||||
args.notifyee = xmalloc (endp - p + 1);
|
||||
strncpy (args.notifyee, p, endp - p);
|
||||
args.notifyee[endp - p] = '\0';
|
||||
char *tmp;
|
||||
tmp = xmalloc (endp - p + 1);
|
||||
strncpy (tmp, p, endp - p);
|
||||
tmp[endp - p] = '\0';
|
||||
args.notifyee = tmp;
|
||||
}
|
||||
|
||||
notify_args = &args;
|
||||
|
|
@ -930,7 +940,12 @@ notify_do (type, filename, who, val, watches, repository)
|
|||
args.file = filename;
|
||||
|
||||
(void) Parse_Info (CVSROOTADM_NOTIFY, repository, notify_proc, 1);
|
||||
free (args.notifyee);
|
||||
|
||||
/* It's okay to cast out the const for the free() below since we
|
||||
* just allocated this a few lines above. The const was for
|
||||
* everybody else.
|
||||
*/
|
||||
free ((char *)args.notifyee);
|
||||
}
|
||||
|
||||
p = nextp;
|
||||
|
|
@ -969,8 +984,8 @@ notify_do (type, filename, who, val, watches, repository)
|
|||
/* Check and send notifications. This is only for the client. */
|
||||
void
|
||||
notify_check (repository, update_dir)
|
||||
char *repository;
|
||||
char *update_dir;
|
||||
const char *repository;
|
||||
const char *update_dir;
|
||||
{
|
||||
FILE *fp;
|
||||
char *line = NULL;
|
||||
|
|
@ -1136,6 +1151,6 @@ editors (argc, argv)
|
|||
|
||||
return start_recursion (editors_fileproc, (FILESDONEPROC) NULL,
|
||||
(DIRENTPROC) NULL, (DIRLEAVEPROC) NULL, NULL,
|
||||
argc, argv, local, W_LOCAL, 0, 1, (char *)NULL,
|
||||
0);
|
||||
argc, argv, local, W_LOCAL, 0, 1, (char *) NULL,
|
||||
0, (char *) NULL);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,7 +17,8 @@ extern int watch_off PROTO ((int argc, char **argv));
|
|||
/* Check to see if any notifications are sitting around in need of being
|
||||
sent. These are the notifications stored in CVSADM_NOTIFY (edit,unedit);
|
||||
commit calls notify_do directly. */
|
||||
extern void notify_check PROTO ((char *repository, char *update_dir));
|
||||
extern void notify_check PROTO ((const char *repository,
|
||||
const char *update_dir));
|
||||
#endif /* CLIENT_SUPPORT */
|
||||
|
||||
/* Issue a notification for file FILENAME. TYPE is 'E' for edit, 'U'
|
||||
|
|
@ -25,14 +26,16 @@ extern void notify_check PROTO ((char *repository, char *update_dir));
|
|||
For TYPE 'E', VAL is the time+host+directory data which goes in
|
||||
_editors, and WATCHES is zero or more of E,U,C, in that order, to specify
|
||||
what kinds of temporary watches to set. */
|
||||
extern void notify_do PROTO ((int type, char *filename, char *who,
|
||||
char *val, char *watches, char *repository));
|
||||
extern void notify_do PROTO ((int type, const char *filename, const char *who,
|
||||
const char *val, const char *watches,
|
||||
const char *repository));
|
||||
|
||||
/* Set attributes to reflect the fact that EDITOR is editing FILENAME.
|
||||
VAL is time+host+directory, or NULL if we are to say that EDITOR is
|
||||
*not* editing FILENAME. */
|
||||
extern void editor_set PROTO ((char *filename, char *editor, char *val));
|
||||
extern void editor_set PROTO ((const char *filename, const char *editor,
|
||||
const char *val));
|
||||
|
||||
/* Take note of the fact that FILE is up to date (this munges CVS/Base;
|
||||
processing of CVS/Entries is done separately). */
|
||||
extern void mark_up_to_date PROTO ((char *file));
|
||||
extern void mark_up_to_date PROTO ((const char *file));
|
||||
|
|
|
|||
|
|
@ -24,6 +24,8 @@ static Entnode *subdir_record PROTO((int, const char *, const char *));
|
|||
static FILE *entfile;
|
||||
static char *entfilename; /* for error messages */
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Construct an Entnode
|
||||
*/
|
||||
|
|
@ -90,9 +92,7 @@ write_ent_proc (node, closure)
|
|||
Node *node;
|
||||
void *closure;
|
||||
{
|
||||
Entnode *entnode;
|
||||
|
||||
entnode = (Entnode *) node->data;
|
||||
Entnode *entnode = node->data;
|
||||
|
||||
if (closure != NULL && entnode->type != ENT_FILE)
|
||||
*(int *) closure = 1;
|
||||
|
|
@ -145,7 +145,7 @@ write_entries (list)
|
|||
/* We didn't write out any directories. Check the list
|
||||
private data to see whether subdirectory information is
|
||||
known. If it is, we need to write out an empty D line. */
|
||||
sdtp = (struct stickydirtag *) list->list->data;
|
||||
sdtp = list->list->data;
|
||||
if (sdtp == NULL || sdtp->subdirs)
|
||||
if (fprintf (entfile, "D\n") < 0)
|
||||
error (1, errno, "cannot write %s", entfilename);
|
||||
|
|
@ -162,13 +162,15 @@ write_entries (list)
|
|||
error (0, errno, "cannot remove %s", CVSADM_ENTLOG);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Removes the argument file from the Entries file if necessary.
|
||||
*/
|
||||
void
|
||||
Scratch_Entry (list, fname)
|
||||
List *list;
|
||||
char *fname;
|
||||
const char *fname;
|
||||
{
|
||||
Node *node;
|
||||
|
||||
|
|
@ -202,6 +204,8 @@ Scratch_Entry (list, fname)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Enters the given file name/version/time-stamp into the Entries file,
|
||||
* removing the old entry first, if necessary.
|
||||
|
|
@ -209,13 +213,13 @@ Scratch_Entry (list, fname)
|
|||
void
|
||||
Register (list, fname, vn, ts, options, tag, date, ts_conflict)
|
||||
List *list;
|
||||
char *fname;
|
||||
char *vn;
|
||||
char *ts;
|
||||
char *options;
|
||||
char *tag;
|
||||
char *date;
|
||||
char *ts_conflict;
|
||||
const char *fname;
|
||||
const char *vn;
|
||||
const char *ts;
|
||||
const char *options;
|
||||
const char *tag;
|
||||
const char *date;
|
||||
const char *ts_conflict;
|
||||
{
|
||||
Entnode *entnode;
|
||||
Node *node;
|
||||
|
|
@ -270,9 +274,8 @@ static void
|
|||
freesdt (p)
|
||||
Node *p;
|
||||
{
|
||||
struct stickydirtag *sdtp;
|
||||
struct stickydirtag *sdtp = p->data;
|
||||
|
||||
sdtp = (struct stickydirtag *) p->data;
|
||||
if (sdtp->tag)
|
||||
free (sdtp->tag);
|
||||
if (sdtp->date)
|
||||
|
|
@ -488,7 +491,7 @@ Entries_Open (aflag, update_dir)
|
|||
sdtp->nonbranch = dirnonbranch;
|
||||
|
||||
/* feed it into the list-private area */
|
||||
entries->list->data = (char *) sdtp;
|
||||
entries->list->data = sdtp;
|
||||
entries->list->delproc = freesdt;
|
||||
}
|
||||
|
||||
|
|
@ -553,7 +556,7 @@ Entries_Open (aflag, update_dir)
|
|||
sdtp = (struct stickydirtag *) xmalloc (sizeof (*sdtp));
|
||||
memset ((char *) sdtp, 0, sizeof (*sdtp));
|
||||
sdtp->subdirs = 0;
|
||||
entries->list->data = (char *) sdtp;
|
||||
entries->list->data = sdtp;
|
||||
entries->list->delproc = freesdt;
|
||||
}
|
||||
|
||||
|
|
@ -592,9 +595,8 @@ static void
|
|||
Entries_delproc (node)
|
||||
Node *node;
|
||||
{
|
||||
Entnode *p;
|
||||
Entnode *p = node->data;
|
||||
|
||||
p = (Entnode *) node->data;
|
||||
Entnode_Destroy(p);
|
||||
}
|
||||
|
||||
|
|
@ -626,7 +628,7 @@ AddEntryNode (list, entdata)
|
|||
assume that the key is dynamically allocated. The user's free proc
|
||||
should be responsible for freeing the key. */
|
||||
p->key = xstrdup (entdata->user);
|
||||
p->data = (char *) entdata;
|
||||
p->data = entdata;
|
||||
|
||||
/* put the node into the list */
|
||||
addnode (list, p);
|
||||
|
|
@ -638,12 +640,12 @@ AddEntryNode (list, entdata)
|
|||
*/
|
||||
void
|
||||
WriteTag (dir, tag, date, nonbranch, update_dir, repository)
|
||||
char *dir;
|
||||
char *tag;
|
||||
char *date;
|
||||
const char *dir;
|
||||
const char *tag;
|
||||
const char *date;
|
||||
int nonbranch;
|
||||
char *update_dir;
|
||||
char *repository;
|
||||
const char *update_dir;
|
||||
const char *repository;
|
||||
{
|
||||
FILE *fout;
|
||||
char *tmp;
|
||||
|
|
@ -796,11 +798,10 @@ void
|
|||
Subdirs_Known (entries)
|
||||
List *entries;
|
||||
{
|
||||
struct stickydirtag *sdtp;
|
||||
struct stickydirtag *sdtp = entries->list->data;
|
||||
|
||||
/* If there is no list private data, that means that the
|
||||
subdirectory information is known. */
|
||||
sdtp = (struct stickydirtag *) entries->list->data;
|
||||
if (sdtp != NULL && ! sdtp->subdirs)
|
||||
{
|
||||
FILE *fp;
|
||||
|
|
|
|||
|
|
@ -128,12 +128,12 @@ error (status, errnum, message, va_alist)
|
|||
char buf[100];
|
||||
|
||||
cvs_outerr (program_name, 0);
|
||||
if (command_name && *command_name)
|
||||
if (cvs_cmd_name && *cvs_cmd_name)
|
||||
{
|
||||
cvs_outerr (" ", 1);
|
||||
if (status != 0)
|
||||
cvs_outerr ("[", 1);
|
||||
cvs_outerr (command_name, 0);
|
||||
cvs_outerr (cvs_cmd_name, 0);
|
||||
if (status != 0)
|
||||
cvs_outerr (" aborted]", 0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,9 +15,11 @@
|
|||
#include "cvs.h"
|
||||
#include <sys/types.h>
|
||||
|
||||
static char *expand_variable PROTO((char *env, char *file, int line));
|
||||
static char *expand_variable PROTO((const char *env, const char *file,
|
||||
int line));
|
||||
|
||||
|
||||
|
||||
|
||||
/* User variables. */
|
||||
|
||||
List *variable_list = NULL;
|
||||
|
|
@ -79,7 +81,9 @@ variable_set (nameval)
|
|||
free (name);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* This routine will expand the pathname to account for ~ and $
|
||||
characters as described above. Returns a pointer to a newly
|
||||
malloc'd string. If an error occurs, an error message is printed
|
||||
|
|
@ -89,11 +93,11 @@ variable_set (nameval)
|
|||
known. */
|
||||
char *
|
||||
expand_path (name, file, line)
|
||||
char *name;
|
||||
char *file;
|
||||
const char *name;
|
||||
const char *file;
|
||||
int line;
|
||||
{
|
||||
char *s;
|
||||
const char *s;
|
||||
char *d;
|
||||
|
||||
char *mybuf = NULL;
|
||||
|
|
@ -179,8 +183,9 @@ expand_path (name, file, line)
|
|||
if (*s++ == '~')
|
||||
{
|
||||
char *t;
|
||||
char *p=s;
|
||||
if (*s=='/' || *s==0)
|
||||
char *p, *pstart;
|
||||
pstart = p = xstrdup (s);
|
||||
if (*pstart=='/' || *pstart==0)
|
||||
t = get_homedir ();
|
||||
else
|
||||
{
|
||||
|
|
@ -201,14 +206,14 @@ expand_path (name, file, line)
|
|||
for (; *p!='/' && *p; p++)
|
||||
;
|
||||
*p = 0;
|
||||
ps = getpwnam (s);
|
||||
ps = getpwnam (pstart);
|
||||
if (ps == 0)
|
||||
{
|
||||
if (line != 0)
|
||||
error (0, 0, "%s:%d: no such user %s",
|
||||
file, line, s);
|
||||
file, line, pstart);
|
||||
else
|
||||
error (0, 0, "%s: no such user %s", file, s);
|
||||
error (0, 0, "%s: no such user %s", file, pstart);
|
||||
return NULL;
|
||||
}
|
||||
t = ps->pw_dir;
|
||||
|
|
@ -227,9 +232,8 @@ expand_path (name, file, line)
|
|||
d = buf + doff;
|
||||
}
|
||||
--d;
|
||||
if (*p == 0)
|
||||
*p = '/'; /* always add / */
|
||||
s=p;
|
||||
s+=p-pstart;
|
||||
free (pstart);
|
||||
}
|
||||
else
|
||||
--s;
|
||||
|
|
@ -267,12 +271,12 @@ expand_path (name, file, line)
|
|||
|
||||
static char *
|
||||
expand_variable (name, file, line)
|
||||
char *name;
|
||||
char *file;
|
||||
const char *name;
|
||||
const char *file;
|
||||
int line;
|
||||
{
|
||||
if (strcmp (name, CVSROOT_ENV) == 0)
|
||||
return current_parsed_root->original;
|
||||
return current_parsed_root->directory;
|
||||
else if (strcmp (name, "RCSBIN") == 0)
|
||||
{
|
||||
error (0, 0, "RCSBIN internal variable is no longer supported");
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ static struct unrecog *unrecog_head;
|
|||
no open(), no nothing. */
|
||||
void
|
||||
fileattr_startdir (repos)
|
||||
char *repos;
|
||||
const char *repos;
|
||||
{
|
||||
assert (fileattr_stored_repos == NULL);
|
||||
fileattr_stored_repos = xstrdup (repos);
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@
|
|||
/* Prepare for a new directory with repository REPOS. If REPOS is NULL,
|
||||
then prepare for a "non-directory"; the caller can call fileattr_write
|
||||
and fileattr_free, but must not call fileattr_get or fileattr_set. */
|
||||
extern void fileattr_startdir PROTO ((char *repos));
|
||||
extern void fileattr_startdir PROTO ((const char *repos));
|
||||
|
||||
/* Get the attribute ATTRNAME for file FILENAME. The return value
|
||||
points into memory managed by the fileattr_* routines, should not
|
||||
|
|
|
|||
|
|
@ -327,12 +327,13 @@ make_directories (name)
|
|||
existed. */
|
||||
int
|
||||
mkdir_if_needed (name)
|
||||
char *name;
|
||||
const char *name;
|
||||
{
|
||||
if (mkdir (name, 0777) < 0)
|
||||
{
|
||||
if (errno != EEXIST && !isdir (name))
|
||||
error (1, errno, "cannot make directory %s", name);
|
||||
int save_errno = errno;
|
||||
if (save_errno != EEXIST && !isdir (name))
|
||||
error (1, save_errno, "cannot make directory %s", name);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
|
|
@ -347,7 +348,7 @@ mkdir_if_needed (name)
|
|||
*/
|
||||
void
|
||||
xchmod (fname, writable)
|
||||
char *fname;
|
||||
const char *fname;
|
||||
int writable;
|
||||
{
|
||||
struct stat sb;
|
||||
|
|
@ -609,6 +610,7 @@ xcmp (file1, file2)
|
|||
|
||||
/* If FILE1 and FILE2 are symlinks, they are equal if they point to
|
||||
the same thing. */
|
||||
#ifdef S_ISLNK
|
||||
if (S_ISLNK (sb1.st_mode) && S_ISLNK (sb2.st_mode))
|
||||
{
|
||||
int result;
|
||||
|
|
@ -619,6 +621,7 @@ xcmp (file1, file2)
|
|||
free (buf2);
|
||||
return result;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* If FILE1 and FILE2 are devices, they are equal if their device
|
||||
numbers match. */
|
||||
|
|
@ -766,8 +769,8 @@ FILE *cvs_temp_file (filename)
|
|||
if (fd == -1) fp = NULL;
|
||||
else if ((fp = CVS_FDOPEN (fd, "w+")) == NULL)
|
||||
{
|
||||
/* attempt to close and unlink the file since mkstemp returned sucessfully and
|
||||
* we believe it's been created and opened
|
||||
/* Attempt to close and unlink the file since mkstemp returned
|
||||
* sucessfully and we believe it's been created and opened.
|
||||
*/
|
||||
int save_errno = errno;
|
||||
if (close (fd))
|
||||
|
|
@ -845,31 +848,33 @@ FILE *cvs_temp_file (filename)
|
|||
return fp;
|
||||
}
|
||||
|
||||
/* Return non-zero iff FILENAME is absolute.
|
||||
Trivial under Unix, but more complicated under other systems. */
|
||||
int
|
||||
isabsolute (filename)
|
||||
const char *filename;
|
||||
{
|
||||
return filename[0] == '/';
|
||||
}
|
||||
|
||||
/*
|
||||
* Return a string (dynamically allocated) with the name of the file to which
|
||||
* LINK is symlinked.
|
||||
|
||||
#ifdef HAVE_READLINK
|
||||
/* char *
|
||||
* xreadlink ( const char *link )
|
||||
*
|
||||
* Like the X/OPEN and 4.4BSD readlink() function, but allocates and returns
|
||||
* its own buf.
|
||||
*
|
||||
* INPUTS
|
||||
* link The original path.
|
||||
*
|
||||
* RETURNS
|
||||
* The resolution of the final symbolic link in the path.
|
||||
*
|
||||
* ERRORS
|
||||
* This function exits with a fatal error if it fails to read the link for
|
||||
* any reason.
|
||||
*/
|
||||
char *
|
||||
xreadlink (link)
|
||||
const char *link;
|
||||
{
|
||||
char *file = NULL;
|
||||
char *tfile;
|
||||
int buflen = 128;
|
||||
int link_name_len;
|
||||
|
||||
if (!islink (link))
|
||||
return NULL;
|
||||
|
||||
/* Get the name of the file to which `from' is linked.
|
||||
FIXME: what portability issues arise here? Are readlink &
|
||||
ENAMETOOLONG defined on all systems? -twp */
|
||||
|
|
@ -886,19 +891,59 @@ xreadlink (link)
|
|||
|
||||
file[link_name_len] = '\0';
|
||||
|
||||
tfile = xstrdup (file);
|
||||
free (file);
|
||||
return file;
|
||||
}
|
||||
#endif /* HAVE_READLINK */
|
||||
|
||||
return tfile;
|
||||
|
||||
|
||||
/* char *
|
||||
* xresolvepath ( const char *path )
|
||||
*
|
||||
* Like xreadlink(), but resolve all links in a path.
|
||||
*
|
||||
* INPUTS
|
||||
* path The original path.
|
||||
*
|
||||
* RETURNS
|
||||
* The path with any symbolic links expanded.
|
||||
*
|
||||
* ERRORS
|
||||
* This function exits with a fatal error if it fails to read the link for
|
||||
* any reason.
|
||||
*/
|
||||
char *
|
||||
xresolvepath ( path )
|
||||
const char *path;
|
||||
{
|
||||
char *hardpath;
|
||||
char *owd;
|
||||
|
||||
assert ( isdir ( path ) );
|
||||
|
||||
/* FIXME - If HAVE_READLINK is defined, we should probably walk the path
|
||||
* bit by bit calling xreadlink().
|
||||
*/
|
||||
|
||||
owd = xgetwd();
|
||||
if ( CVS_CHDIR ( path ) < 0)
|
||||
error ( 1, errno, "cannot chdir to %s", path );
|
||||
if ( ( hardpath = xgetwd() ) == NULL )
|
||||
error (1, errno, "cannot getwd in %s", path);
|
||||
if ( CVS_CHDIR ( owd ) < 0)
|
||||
error ( 1, errno, "cannot chdir to %s", owd );
|
||||
free (owd);
|
||||
return hardpath;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Return a pointer into PATH's last component. */
|
||||
char *
|
||||
const char *
|
||||
last_component (path)
|
||||
char *path;
|
||||
const char *path;
|
||||
{
|
||||
char *last = strrchr (path, '/');
|
||||
const char *last = strrchr (path, '/');
|
||||
|
||||
if (last && (last != path))
|
||||
return last + 1;
|
||||
|
|
@ -990,6 +1035,8 @@ expand_wild (argc, argv, pargc, pargv)
|
|||
(*pargv)[i] = xstrdup (argv[i]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef SERVER_SUPPORT
|
||||
/* Case-insensitive string compare. I know that some systems
|
||||
have such a routine, but I'm not sure I see any reasons for
|
||||
|
|
@ -998,11 +1045,11 @@ expand_wild (argc, argv, pargc, pargv)
|
|||
not). */
|
||||
int
|
||||
cvs_casecmp (str1, str2)
|
||||
char *str1;
|
||||
char *str2;
|
||||
const char *str1;
|
||||
const char *str2;
|
||||
{
|
||||
char *p;
|
||||
char *q;
|
||||
const char *p;
|
||||
const char *q;
|
||||
int pqdiff;
|
||||
|
||||
p = str1;
|
||||
|
|
@ -1016,107 +1063,4 @@ cvs_casecmp (str1, str2)
|
|||
}
|
||||
return pqdiff;
|
||||
}
|
||||
|
||||
/* Case-insensitive file open. As you can see, this is an expensive
|
||||
call. We don't regard it as our main strategy for dealing with
|
||||
case-insensitivity. Returns errno code or 0 for success. Puts the
|
||||
new file in *FP. NAME and MODE are as for fopen. If PATHP is not
|
||||
NULL, then put a malloc'd string containing the pathname as found
|
||||
into *PATHP. *PATHP is only set if the return value is 0.
|
||||
|
||||
Might be cleaner to separate the file finding (which just gives
|
||||
*PATHP) from the file opening (which the caller can do). For one
|
||||
thing, might make it easier to know whether to put NAME or *PATHP
|
||||
into error messages. */
|
||||
int
|
||||
fopen_case (name, mode, fp, pathp)
|
||||
char *name;
|
||||
char *mode;
|
||||
FILE **fp;
|
||||
char **pathp;
|
||||
{
|
||||
struct dirent *dp;
|
||||
DIR *dirp;
|
||||
char *dir;
|
||||
char *fname;
|
||||
char *found_name;
|
||||
int retval;
|
||||
|
||||
/* Separate NAME into directory DIR and filename within the directory
|
||||
FNAME. */
|
||||
dir = xstrdup (name);
|
||||
fname = strrchr (dir, '/');
|
||||
if (fname == NULL)
|
||||
error (1, 0, "internal error: relative pathname in fopen_case");
|
||||
*fname++ = '\0';
|
||||
|
||||
found_name = NULL;
|
||||
dirp = CVS_OPENDIR (dir);
|
||||
if (dirp == NULL)
|
||||
{
|
||||
if (existence_error (errno))
|
||||
{
|
||||
/* This can happen if we are looking in the Attic and the Attic
|
||||
directory does not exist. Return the error to the caller;
|
||||
they know what to do with it. */
|
||||
retval = errno;
|
||||
goto out;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Give a fatal error; that way the error message can be
|
||||
more specific than if we returned the error to the caller. */
|
||||
error (1, errno, "cannot read directory %s", dir);
|
||||
}
|
||||
}
|
||||
errno = 0;
|
||||
while ((dp = CVS_READDIR (dirp)) != NULL)
|
||||
{
|
||||
if (cvs_casecmp (dp->d_name, fname) == 0)
|
||||
{
|
||||
if (found_name != NULL)
|
||||
error (1, 0, "%s is ambiguous; could mean %s or %s",
|
||||
fname, dp->d_name, found_name);
|
||||
found_name = xstrdup (dp->d_name);
|
||||
}
|
||||
}
|
||||
if (errno != 0)
|
||||
error (1, errno, "cannot read directory %s", dir);
|
||||
CVS_CLOSEDIR (dirp);
|
||||
|
||||
if (found_name == NULL)
|
||||
{
|
||||
*fp = NULL;
|
||||
retval = ENOENT;
|
||||
}
|
||||
else
|
||||
{
|
||||
char *p;
|
||||
|
||||
/* Copy the found name back into DIR. We are assuming that
|
||||
found_name is the same length as fname, which is true as
|
||||
long as the above code is just ignoring case and not other
|
||||
aspects of filename syntax. */
|
||||
p = dir + strlen (dir);
|
||||
*p++ = '/';
|
||||
strcpy (p, found_name);
|
||||
*fp = fopen (dir, mode);
|
||||
if (*fp == NULL)
|
||||
retval = errno;
|
||||
else
|
||||
retval = 0;
|
||||
}
|
||||
|
||||
if (pathp == NULL)
|
||||
free (dir);
|
||||
else if (retval != 0)
|
||||
free (dir);
|
||||
else
|
||||
*pathp = dir;
|
||||
free (found_name);
|
||||
out:
|
||||
return retval;
|
||||
}
|
||||
#endif /* SERVER_SUPPORT */
|
||||
/* vim:tabstop=8:shiftwidth=4
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -33,11 +33,10 @@ add_entries_proc (node, closure)
|
|||
Node *node;
|
||||
void *closure;
|
||||
{
|
||||
Entnode *entnode;
|
||||
Node *fnode;
|
||||
List *filelist = (List *) closure;
|
||||
List *filelist = closure;
|
||||
Entnode *entnode = node->data;
|
||||
|
||||
entnode = (Entnode *) node->data;
|
||||
if (entnode->type != ENT_FILE)
|
||||
return (0);
|
||||
|
||||
|
|
@ -127,11 +126,10 @@ add_subdir_proc (p, closure)
|
|||
Node *p;
|
||||
void *closure;
|
||||
{
|
||||
List *dirlist = (List *) closure;
|
||||
Entnode *entnode;
|
||||
List *dirlist = closure;
|
||||
Entnode *entnode = p->data;
|
||||
Node *dnode;
|
||||
|
||||
entnode = (Entnode *) p->data;
|
||||
if (entnode->type != ENT_SUBDIR)
|
||||
return 0;
|
||||
|
||||
|
|
@ -189,7 +187,7 @@ Find_Directories (repository, which, entries)
|
|||
tmpentries = NULL;
|
||||
|
||||
if (tmpentries != NULL)
|
||||
sdtp = (struct stickydirtag *) tmpentries->list->data;
|
||||
sdtp = tmpentries->list->data;
|
||||
|
||||
/* If we do have an entries list, then if sdtp is NULL, or if
|
||||
sdtp->subdirs is nonzero, all subdirectory information is
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ lookup_file_by_inode (filepath)
|
|||
hp = getnode ();
|
||||
hp->type = NT_UNKNOWN;
|
||||
hp->key = inodestr;
|
||||
hp->data = (char *) getlist();
|
||||
hp->data = getlist();
|
||||
hp->delproc = dellist;
|
||||
(void) addnode (hardlist, hp);
|
||||
}
|
||||
|
|
@ -96,14 +96,14 @@ lookup_file_by_inode (filepath)
|
|||
free (inodestr);
|
||||
}
|
||||
|
||||
p = findnode ((List *) hp->data, filepath);
|
||||
p = findnode (hp->data, filepath);
|
||||
if (p == NULL)
|
||||
{
|
||||
p = getnode();
|
||||
p->type = NT_UNKNOWN;
|
||||
p->key = xstrdup (filepath);
|
||||
p->data = NULL;
|
||||
(void) addnode ((List *) hp->data, p);
|
||||
(void) addnode (hp->data, p);
|
||||
}
|
||||
|
||||
return p;
|
||||
|
|
@ -143,8 +143,8 @@ update_hardlink_info (file)
|
|||
}
|
||||
|
||||
if (n->data == NULL)
|
||||
n->data = (char *) xmalloc (sizeof (struct hardlink_info));
|
||||
hlinfo = (struct hardlink_info *) n->data;
|
||||
n->data = xmalloc (sizeof (struct hardlink_info));
|
||||
hlinfo = n->data;
|
||||
hlinfo->status = T_UPTODATE;
|
||||
hlinfo->checked_out = 1;
|
||||
}
|
||||
|
|
@ -197,10 +197,10 @@ list_linked_files_on_disk (file)
|
|||
|
||||
/* Make sure the files linked to this inode are sorted. */
|
||||
n = findnode (hardlist, inodestr);
|
||||
sortlist ((List *) n->data, fsortcmp);
|
||||
sortlist (n->data, fsortcmp);
|
||||
|
||||
free (inodestr);
|
||||
return (List *) n->data;
|
||||
return n->data;
|
||||
}
|
||||
|
||||
/* Compare the files in the `key' fields of two lists, returning 1 if
|
||||
|
|
@ -292,7 +292,7 @@ find_checkedout_proc (node, data)
|
|||
return 0;
|
||||
}
|
||||
|
||||
hlinfo = (struct hardlink_info *) link->data;
|
||||
hlinfo = link->data;
|
||||
if (hlinfo->checked_out)
|
||||
{
|
||||
/* This file has been checked out recently, so it's safe to
|
||||
|
|
|
|||
|
|
@ -195,7 +195,7 @@ freenode_mem (p)
|
|||
free (p->key);
|
||||
|
||||
/* to be safe, re-initialize these */
|
||||
p->key = p->data = (char *) NULL;
|
||||
p->key = p->data = NULL;
|
||||
p->delproc = (void (*) ()) NULL;
|
||||
}
|
||||
|
||||
|
|
@ -402,6 +402,9 @@ sortlist (list, comp)
|
|||
Node *head, *remain, *p, **array;
|
||||
int i, n;
|
||||
|
||||
if (list == NULL)
|
||||
return;
|
||||
|
||||
/* save the old first element of the list */
|
||||
head = list->list;
|
||||
remain = head->next;
|
||||
|
|
@ -488,8 +491,10 @@ printnode (node, closure)
|
|||
return(0);
|
||||
}
|
||||
|
||||
(void) printf("Node at 0x%p: type = %s, key = 0x%p = \"%s\", data = 0x%p, next = 0x%p, prev = 0x%p\n",
|
||||
node, nodetypestring(node->type), node->key, node->key, node->data, node->next, node->prev);
|
||||
(void) printf("Node at %p: type = %s, key = %p = \"%s\", data = %p, next = %p, prev = %p\n",
|
||||
(void *)node, nodetypestring(node->type),
|
||||
(void *)node->key, node->key, node->data,
|
||||
(void *)node->next, (void *)node->prev);
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
|
@ -509,8 +514,8 @@ printlist (list)
|
|||
return;
|
||||
}
|
||||
|
||||
(void) printf("List at 0x%p: list = 0x%p, HASHSIZE = %d, next = 0x%p\n",
|
||||
list, list->list, HASHSIZE, list->next);
|
||||
(void) printf("List at %p: list = %p, HASHSIZE = %d, next = %p\n",
|
||||
(void *)list, (void *)list->list, HASHSIZE, (void *)list->next);
|
||||
|
||||
(void) walklist(list, printnode, NULL);
|
||||
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ struct node
|
|||
struct node *hashnext;
|
||||
struct node *hashprev;
|
||||
char *key;
|
||||
char *data;
|
||||
void *data;
|
||||
void (*delproc) ();
|
||||
};
|
||||
typedef struct node Node;
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
* F "Release" cmd.
|
||||
* W "Update" cmd - No User file, Remove from Entries file.
|
||||
* U "Update" cmd - File was checked out over User file.
|
||||
* P "Update" cmd - User file was patched.
|
||||
* G "Update" cmd - File was merged successfully.
|
||||
* C "Update" cmd - File was merged and shows overlaps.
|
||||
* M "Commit" cmd - "Modified" file.
|
||||
|
|
@ -34,9 +35,9 @@
|
|||
*
|
||||
* CurDir The directory where the action occurred. This should be the
|
||||
* absolute path of the directory which is at the same level as
|
||||
* the "Repository" field (for W,U,G,C & M,A,R).
|
||||
* the "Repository" field (for W,U,P,G,C & M,A,R).
|
||||
*
|
||||
* Repository For record types [W,U,G,C,M,A,R] this field holds the
|
||||
* Repository For record types [W,U,P,G,C,M,A,R] this field holds the
|
||||
* repository read from the administrative data where the
|
||||
* command was typed.
|
||||
* T "A" --> New Tag, "D" --> Delete Tag
|
||||
|
|
@ -48,11 +49,11 @@
|
|||
* O,E The Tag or Date, if specified, else "" (null field).
|
||||
* F "" (null field)
|
||||
* W The Tag or Date, if specified, else "" (null field).
|
||||
* U The Revision checked out over the User file.
|
||||
* U,P The Revision checked out over the User file.
|
||||
* G,C The Revision(s) involved in merge.
|
||||
* M,A,R RCS Revision affected.
|
||||
*
|
||||
* argument The module (for [TOEUF]) or file (for [WUGCMAR]) affected.
|
||||
* argument The module (for [TOEF]) or file (for [WUPGCMAR]) affected.
|
||||
*
|
||||
*
|
||||
*** Report categories: "User" and "Since" modifiers apply to all reports.
|
||||
|
|
@ -60,7 +61,7 @@
|
|||
*
|
||||
* Extract list of record types
|
||||
*
|
||||
* -e, -x [TOEFWUGCMAR]
|
||||
* -e, -x [TOEFWUPGCMAR]
|
||||
*
|
||||
* Extracted records are simply printed, No analysis is performed.
|
||||
* All "field" modifiers apply. -e chooses all types.
|
||||
|
|
@ -93,7 +94,7 @@
|
|||
* modules are remembered. Only records matching exactly those
|
||||
* files and repositories are shown. Sorting by "module", then
|
||||
* filename, is implied. If -l ("last modified") is specified,
|
||||
* then "update" records (types WUCG), tag and release records
|
||||
* then "update" records (types WUPCG), tag and release records
|
||||
* are ignored and the last (by date) "modified" record.
|
||||
*
|
||||
* TAG history
|
||||
|
|
@ -170,7 +171,7 @@
|
|||
* cvs hi -e -u user
|
||||
*
|
||||
*** Dump (eXtract) specified record types
|
||||
* cvs hi -x [TOFWUGCMAR]
|
||||
* cvs hi -x [TOEFWUPGCMAR]
|
||||
*
|
||||
*
|
||||
* FUTURE: J[Join], I[Import] (Not currently implemented.)
|
||||
|
|
@ -178,6 +179,7 @@
|
|||
*/
|
||||
|
||||
#include "cvs.h"
|
||||
#include "history.h"
|
||||
#include "savecwd.h"
|
||||
|
||||
static struct hrec
|
||||
|
|
@ -208,7 +210,6 @@ static void save_file PROTO((char *dir, char *name, char *module));
|
|||
static void save_module PROTO((char *module));
|
||||
static void save_user PROTO((char *name));
|
||||
|
||||
#define ALL_REC_TYPES "TOEFWUCGMAR"
|
||||
#define USER_INCREMENT 2
|
||||
#define FILE_INCREMENT 128
|
||||
#define MODULE_INCREMENT 5
|
||||
|
|
@ -217,6 +218,7 @@ static void save_user PROTO((char *name));
|
|||
static short report_count;
|
||||
|
||||
static short extract;
|
||||
static short extract_all;
|
||||
static short v_checkout;
|
||||
static short modified;
|
||||
static short tag_report;
|
||||
|
|
@ -234,7 +236,7 @@ static short tz_local;
|
|||
static time_t tz_seconds_east_of_GMT;
|
||||
static char *tz_name = "+0000";
|
||||
|
||||
char *logHistory = ALL_REC_TYPES;
|
||||
char *logHistory = ALL_HISTORY_REC_TYPES;
|
||||
|
||||
/* -r, -t, or -b options, malloc'd. These are "" if the option in
|
||||
question is not specified or is overridden by another option. The
|
||||
|
|
@ -290,7 +292,7 @@ static const char *const history_usg[] =
|
|||
" -c Committed (Modified) files\n",
|
||||
" -o Checked out modules\n",
|
||||
" -m <module> Look for specified module (repeatable)\n",
|
||||
" -x [TOEFWUCGMAR] Extract by record type\n",
|
||||
" -x [" ALL_HISTORY_REC_TYPES "] Extract by record type\n",
|
||||
" -e Everything (same as -x, but all record types)\n",
|
||||
" Flags:\n",
|
||||
" -a All users (Default is self)\n",
|
||||
|
|
@ -399,9 +401,9 @@ history (argc, argv)
|
|||
break;
|
||||
case 'e':
|
||||
report_count++;
|
||||
extract++;
|
||||
extract_all++;
|
||||
free (rec_types);
|
||||
rec_types = xstrdup (ALL_REC_TYPES);
|
||||
rec_types = xstrdup (ALL_HISTORY_REC_TYPES);
|
||||
break;
|
||||
case 'l': /* Find Last file record */
|
||||
last_entry = 1;
|
||||
|
|
@ -482,7 +484,7 @@ history (argc, argv)
|
|||
char *cp;
|
||||
|
||||
for (cp = optarg; *cp; cp++)
|
||||
if (!strchr (ALL_REC_TYPES, *cp))
|
||||
if (!strchr (ALL_HISTORY_REC_TYPES, *cp))
|
||||
error (1, 0, "%c is not a valid report type", *cp);
|
||||
}
|
||||
free (rec_types);
|
||||
|
|
@ -584,6 +586,8 @@ history (argc, argv)
|
|||
option_with_arg ("-t", since_tag);
|
||||
for (mod = user_list; mod < &user_list[user_count]; ++mod)
|
||||
option_with_arg ("-u", *mod);
|
||||
if (extract_all)
|
||||
send_arg("-e");
|
||||
if (extract)
|
||||
option_with_arg ("-x", rec_types);
|
||||
option_with_arg ("-z", tz_name);
|
||||
|
|
@ -607,7 +611,7 @@ history (argc, argv)
|
|||
(void) strcat (rec_types, "T");
|
||||
}
|
||||
}
|
||||
else if (extract)
|
||||
else if (extract || extract_all)
|
||||
{
|
||||
if (user_list)
|
||||
user_sort++;
|
||||
|
|
@ -636,7 +640,7 @@ history (argc, argv)
|
|||
else if (module_report)
|
||||
{
|
||||
free (rec_types);
|
||||
rec_types = xstrdup (last_entry ? "OMAR" : ALL_REC_TYPES);
|
||||
rec_types = xstrdup (last_entry ? "OMAR" : ALL_HISTORY_REC_TYPES);
|
||||
module_sort++;
|
||||
repos_sort++;
|
||||
file_sort++;
|
||||
|
|
@ -697,22 +701,25 @@ history (argc, argv)
|
|||
void
|
||||
history_write (type, update_dir, revs, name, repository)
|
||||
int type;
|
||||
char *update_dir;
|
||||
char *revs;
|
||||
char *name;
|
||||
char *repository;
|
||||
const char *update_dir;
|
||||
const char *revs;
|
||||
const char *name;
|
||||
const char *repository;
|
||||
{
|
||||
char *fname;
|
||||
char *workdir;
|
||||
char *username = getcaller ();
|
||||
int fd;
|
||||
char *line;
|
||||
char *slash = "", *cp, *cp2, *repos;
|
||||
char *slash = "", *cp;
|
||||
const char *cp2, *repos;
|
||||
int i;
|
||||
static char *tilde = "";
|
||||
static char *PrCurDir = NULL;
|
||||
|
||||
if (logoff) /* History is turned off by cmd line switch */
|
||||
if (logoff) /* History is turned off by noexec or
|
||||
* readonlyfs.
|
||||
*/
|
||||
return;
|
||||
if ( strchr(logHistory, type) == NULL )
|
||||
return;
|
||||
|
|
@ -722,6 +729,15 @@ history_write (type, update_dir, revs, name, repository)
|
|||
CVSROOTADM, CVSROOTADM_HISTORY);
|
||||
|
||||
/* turn off history logging if the history file does not exist */
|
||||
/* FIXME: This should check for write permissions instead. This way,
|
||||
* O_CREATE could be added back into the call to open() below and
|
||||
* there would be no race condition involved in log rotation.
|
||||
*
|
||||
* Note that the new method of turning off logging would be either via
|
||||
* the CVSROOT/config file (probably the quicker method, but would need
|
||||
* to be added, or at least checked for, too) or by creating a dummy
|
||||
* history file with 0444 permissions.
|
||||
*/
|
||||
if (!isfile (fname))
|
||||
{
|
||||
logoff = 1;
|
||||
|
|
@ -733,7 +749,7 @@ history_write (type, update_dir, revs, name, repository)
|
|||
CLIENT_SERVER_STR, fname);
|
||||
if (noexec)
|
||||
goto out;
|
||||
fd = CVS_OPEN (fname, O_WRONLY | O_APPEND | O_CREAT | OPEN_BINARY, 0666);
|
||||
fd = CVS_OPEN (fname, O_WRONLY | O_APPEND | OPEN_BINARY, 0666);
|
||||
if (fd < 0)
|
||||
{
|
||||
if (! really_quiet)
|
||||
|
|
@ -1524,6 +1540,7 @@ report_hrecs ()
|
|||
break;
|
||||
case 'W':
|
||||
case 'U':
|
||||
case 'P':
|
||||
case 'C':
|
||||
case 'G':
|
||||
case 'M':
|
||||
|
|
|
|||
13
contrib/cvs/src/history.h
Normal file
13
contrib/cvs/src/history.h
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
/*
|
||||
* Copyright (c) 2003, Derek Price, Ximbiot <http://ximbiot.com>,
|
||||
* and the Free Software Foundation
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License
|
||||
* as specified in the README file that comes with the CVS source
|
||||
* distribution.
|
||||
*
|
||||
* This is the header file for definitions and functions shared by history.c
|
||||
* with other portions of CVS.
|
||||
*/
|
||||
|
||||
#define ALL_HISTORY_REC_TYPES "TOEFWUPCGMAR"
|
||||
|
|
@ -165,6 +165,8 @@ ign_add_file (file, hold)
|
|||
free (line);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Parse a line of space-separated wildcards and add them to the list. */
|
||||
void
|
||||
ign_add (ign, hold)
|
||||
|
|
@ -183,6 +185,16 @@ ign_add (ign, hold)
|
|||
if (isspace ((unsigned char) *ign))
|
||||
continue;
|
||||
|
||||
/* If we have used up all the space, add some more. Do this before
|
||||
processing `!', since an "empty" list still contains the `CVS'
|
||||
entry. */
|
||||
if (ign_count >= ign_size)
|
||||
{
|
||||
ign_size += IGN_GROW;
|
||||
ign_list = (char **) xrealloc ((char *) ign_list,
|
||||
(ign_size + 1) * sizeof (char *));
|
||||
}
|
||||
|
||||
/*
|
||||
* if we find a single character !, we must re-set the ignore list
|
||||
* (saving it if necessary). We also catch * as a special case in a
|
||||
|
|
@ -198,8 +210,10 @@ ign_add (ign, hold)
|
|||
|
||||
for (i = 0; i < ign_count; i++)
|
||||
free (ign_list[i]);
|
||||
ign_count = 0;
|
||||
ign_list[0] = NULL;
|
||||
ign_count = 1;
|
||||
/* Always ignore the "CVS" directory. */
|
||||
ign_list[0] = xstrdup("CVS");
|
||||
ign_list[1] = NULL;
|
||||
|
||||
/* if we are doing a '!', continue; otherwise add the '*' */
|
||||
if (*ign == '!')
|
||||
|
|
@ -223,20 +237,14 @@ ign_add (ign, hold)
|
|||
for (i = 0; i < ign_count; i++)
|
||||
s_ign_list[i] = ign_list[i];
|
||||
s_ign_count = ign_count;
|
||||
ign_count = 0;
|
||||
ign_list[0] = NULL;
|
||||
ign_count = 1;
|
||||
/* Always ignore the "CVS" directory. */
|
||||
ign_list[0] = xstrdup ("CVS");
|
||||
ign_list[1] = NULL;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
/* If we have used up all the space, add some more */
|
||||
if (ign_count >= ign_size)
|
||||
{
|
||||
ign_size += IGN_GROW;
|
||||
ign_list = (char **) xrealloc ((char *) ign_list,
|
||||
(ign_size + 1) * sizeof (char *));
|
||||
}
|
||||
|
||||
/* find the end of this token */
|
||||
for (mark = ign; *mark && !isspace ((unsigned char) *mark); mark++)
|
||||
/* do nothing */ ;
|
||||
|
|
@ -255,12 +263,11 @@ ign_add (ign, hold)
|
|||
}
|
||||
}
|
||||
|
||||
/* Set to 1 if filenames should be matched in a case-insensitive
|
||||
fashion. Note that, contrary to the name and placement in ignore.c,
|
||||
this is no longer just for ignore patterns. */
|
||||
int ign_case;
|
||||
|
||||
/* Return 1 if the given filename should be ignored by update or import. */
|
||||
|
||||
/* Return true if the given filename should be ignored by update or import,
|
||||
* else return false.
|
||||
*/
|
||||
int
|
||||
ign_name (name)
|
||||
char *name;
|
||||
|
|
@ -268,47 +275,17 @@ ign_name (name)
|
|||
char **cpp = ign_list;
|
||||
|
||||
if (cpp == NULL)
|
||||
return (0);
|
||||
|
||||
if (ign_case)
|
||||
{
|
||||
/* We do a case-insensitive match by calling fnmatch on copies of
|
||||
the pattern and the name which have been converted to
|
||||
lowercase. FIXME: would be much cleaner to just unify this
|
||||
with the other case-insensitive fnmatch stuff (FOLD_FN_CHAR
|
||||
in lib/fnmatch.c; os2_fnmatch in emx/system.c). */
|
||||
char *name_lower;
|
||||
char *pat_lower;
|
||||
char *p;
|
||||
|
||||
name_lower = xstrdup (name);
|
||||
for (p = name_lower; *p != '\0'; ++p)
|
||||
*p = tolower (*p);
|
||||
while (*cpp)
|
||||
{
|
||||
pat_lower = xstrdup (*cpp++);
|
||||
for (p = pat_lower; *p != '\0'; ++p)
|
||||
*p = tolower (*p);
|
||||
if (CVS_FNMATCH (pat_lower, name_lower, 0) == 0)
|
||||
goto matched;
|
||||
free (pat_lower);
|
||||
}
|
||||
free (name_lower);
|
||||
return 0;
|
||||
matched:
|
||||
free (name_lower);
|
||||
free (pat_lower);
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
while (*cpp)
|
||||
if (CVS_FNMATCH (*cpp++, name, 0) == 0)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
while (*cpp)
|
||||
if (CVS_FNMATCH (*cpp++, name, 0) == 0)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* FIXME: This list of dirs to ignore stuff seems not to be used.
|
||||
Really? send_dirent_proc and update_dirent_proc both call
|
||||
ignore_directory and do_module calls ign_dir_add. No doubt could
|
||||
|
|
@ -340,7 +317,7 @@ ign_dir_add (name)
|
|||
|
||||
int
|
||||
ignore_directory (name)
|
||||
char *name;
|
||||
const char *name;
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
@ -356,7 +333,9 @@ ignore_directory (name)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Process the current directory, looking for files not in ILIST and
|
||||
* not on the global ignore list for this directory. If we find one,
|
||||
|
|
@ -369,7 +348,7 @@ void
|
|||
ignore_files (ilist, entries, update_dir, proc)
|
||||
List *ilist;
|
||||
List *entries;
|
||||
char *update_dir;
|
||||
const char *update_dir;
|
||||
Ignore_proc proc;
|
||||
{
|
||||
int subdirs;
|
||||
|
|
@ -377,7 +356,7 @@ ignore_files (ilist, entries, update_dir, proc)
|
|||
struct dirent *dp;
|
||||
struct stat sb;
|
||||
char *file;
|
||||
char *xdir;
|
||||
const char *xdir;
|
||||
List *files;
|
||||
Node *p;
|
||||
|
||||
|
|
@ -386,9 +365,8 @@ ignore_files (ilist, entries, update_dir, proc)
|
|||
subdirs = 0;
|
||||
else
|
||||
{
|
||||
struct stickydirtag *sdtp;
|
||||
struct stickydirtag *sdtp = entries->list->data;
|
||||
|
||||
sdtp = (struct stickydirtag *) entries->list->data;
|
||||
subdirs = sdtp == NULL || sdtp->subdirs;
|
||||
}
|
||||
|
||||
|
|
@ -451,7 +429,7 @@ ignore_files (ilist, entries, update_dir, proc)
|
|||
#ifdef DT_DIR
|
||||
dp->d_type != DT_UNKNOWN ||
|
||||
#endif
|
||||
lstat(file, &sb) != -1)
|
||||
CVS_LSTAT (file, &sb) != -1)
|
||||
{
|
||||
|
||||
if (
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
#include "savecwd.h"
|
||||
#include <assert.h>
|
||||
|
||||
static char *get_comment PROTO((char *user));
|
||||
static char *get_comment PROTO((const char *user));
|
||||
static int add_rev PROTO((char *message, RCSNode *rcs, char *vfile,
|
||||
char *vers));
|
||||
static int add_tags PROTO((RCSNode *rcs, char *vfile, char *vtag, int targc,
|
||||
|
|
@ -91,7 +91,7 @@ import (argc, argv)
|
|||
#endif
|
||||
error (1, 0,
|
||||
"-q or -Q must be specified before \"%s\"",
|
||||
command_name);
|
||||
cvs_cmd_name);
|
||||
break;
|
||||
case 'd':
|
||||
#ifdef SERVER_SUPPORT
|
||||
|
|
@ -157,6 +157,21 @@ import (argc, argv)
|
|||
use_file_modtime = 1;
|
||||
#endif
|
||||
|
||||
/* Don't allow "CVS" as any directory in module path.
|
||||
*
|
||||
* Could abstract this to valid_module_path, but I don't think we'll need
|
||||
* to call it from anywhere else.
|
||||
*/
|
||||
if ((cp = strstr(argv[0], "CVS")) && /* path contains "CVS" AND ... */
|
||||
((cp == argv[0]) || ISDIRSEP(*(cp-1))) && /* /^CVS/ OR m#/CVS# AND ... */
|
||||
((*(cp+3) == '\0') || ISDIRSEP(*(cp+3))) /* /CVS$/ OR m#CVS/# */
|
||||
)
|
||||
{
|
||||
error (0, 0,
|
||||
"The word `CVS' is reserved by CVS and may not be used");
|
||||
error (1, 0, "as a directory in a path or as a file name.");
|
||||
}
|
||||
|
||||
for (i = 1; i < argc; i++) /* check the tags for validity */
|
||||
{
|
||||
int j;
|
||||
|
|
@ -168,8 +183,7 @@ import (argc, argv)
|
|||
}
|
||||
|
||||
/* XXX - this should be a module, not just a pathname */
|
||||
if (! isabsolute (argv[0])
|
||||
&& pathname_levels (argv[0]) == 0)
|
||||
if (!isabsolute (argv[0]) && pathname_levels (argv[0]) == 0)
|
||||
{
|
||||
if (current_parsed_root == NULL)
|
||||
{
|
||||
|
|
@ -379,7 +393,7 @@ import (argc, argv)
|
|||
li->type = T_TITLE;
|
||||
li->tag = xstrdup (vbranch);
|
||||
li->rev_old = li->rev_new = NULL;
|
||||
p->data = (char *) li;
|
||||
p->data = li;
|
||||
(void) addnode (ulist, p);
|
||||
Update_Logfile (repository, message, logfp, ulist);
|
||||
dellist (&ulist);
|
||||
|
|
@ -573,7 +587,8 @@ process_import_file (message, vfile, vtag, targc, targv)
|
|||
node = findnode_fn (entries, vfile);
|
||||
if (node != NULL)
|
||||
{
|
||||
Entnode *entdata = (Entnode *) node->data;
|
||||
Entnode *entdata = node->data;
|
||||
|
||||
if (entdata->type == ENT_FILE)
|
||||
{
|
||||
assert (entdata->options[0] == '-'
|
||||
|
|
@ -653,7 +668,8 @@ update_rcs_file (message, vfile, vtag, targc, targv, inattic)
|
|||
not NULL? */
|
||||
expand = vers->srcfile->expand != NULL &&
|
||||
vers->srcfile->expand[0] == 'b' ? "-kb" : "-ko";
|
||||
different = RCS_cmp_file (vers->srcfile, vers->vn_rcs, expand, vfile);
|
||||
different = RCS_cmp_file( vers->srcfile, vers->vn_rcs, (char **)NULL,
|
||||
(char *)NULL, expand, vfile );
|
||||
if (tocvsPath)
|
||||
if (unlink_file_dir (tocvsPath) < 0)
|
||||
error (0, errno, "cannot remove %s", tocvsPath);
|
||||
|
|
@ -932,7 +948,7 @@ static const struct compair comtable[] =
|
|||
|
||||
static char *
|
||||
get_comment (user)
|
||||
char *user;
|
||||
const char *user;
|
||||
{
|
||||
char *cp, *suffix;
|
||||
char *suffix_path;
|
||||
|
|
@ -988,34 +1004,34 @@ add_rcs_file (message, rcs, user, add_vhead, key_opt,
|
|||
add_vbranch, vtag, targc, targv,
|
||||
desctext, desclen, add_logfp)
|
||||
/* Log message for the addition. Not used if add_vhead == NULL. */
|
||||
char *message;
|
||||
const char *message;
|
||||
/* Filename of the RCS file to create. */
|
||||
char *rcs;
|
||||
const char *rcs;
|
||||
/* Filename of the file to serve as the contents of the initial
|
||||
revision. Even if add_vhead is NULL, we use this to determine
|
||||
the modes to give the new RCS file. */
|
||||
char *user;
|
||||
const char *user;
|
||||
|
||||
/* Revision number of head that we are adding. Normally 1.1 but
|
||||
could be another revision as long as ADD_VBRANCH is a branch
|
||||
from it. If NULL, then just add an empty file without any
|
||||
revisions (similar to the one created by "rcs -i"). */
|
||||
char *add_vhead;
|
||||
const char *add_vhead;
|
||||
|
||||
/* Keyword expansion mode, e.g., "b" for binary. NULL means the
|
||||
default behavior. */
|
||||
char *key_opt;
|
||||
const char *key_opt;
|
||||
|
||||
/* Vendor branch to import to, or NULL if none. If non-NULL, then
|
||||
vtag should also be non-NULL. */
|
||||
char *add_vbranch;
|
||||
char *vtag;
|
||||
const char *add_vbranch;
|
||||
const char *vtag;
|
||||
int targc;
|
||||
char *targv[];
|
||||
|
||||
/* If non-NULL, description for the file. If NULL, the description
|
||||
will be empty. */
|
||||
char *desctext;
|
||||
const char *desctext;
|
||||
size_t desclen;
|
||||
|
||||
/* Write errors to here as well as via error (), or NULL if we should
|
||||
|
|
@ -1031,8 +1047,7 @@ add_rcs_file (message, rcs, user, add_vhead, key_opt,
|
|||
int i, ierrno, err = 0;
|
||||
mode_t mode;
|
||||
char *tocvsPath;
|
||||
char *userfile;
|
||||
char *local_opt = key_opt;
|
||||
const char *userfile;
|
||||
char *free_opt = NULL;
|
||||
mode_t file_type;
|
||||
|
||||
|
|
@ -1046,11 +1061,11 @@ add_rcs_file (message, rcs, user, add_vhead, key_opt,
|
|||
or the other. Before making a change of this sort, should think
|
||||
about what is best, document it (in cvs.texinfo and NEWS), &c. */
|
||||
|
||||
if (local_opt == NULL)
|
||||
if (key_opt == NULL)
|
||||
{
|
||||
if (wrap_name_has (user, WRAP_RCSOPTION))
|
||||
{
|
||||
local_opt = free_opt = wrap_rcsoption (user, 0);
|
||||
key_opt = free_opt = wrap_rcsoption (user, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1087,7 +1102,7 @@ add_rcs_file (message, rcs, user, add_vhead, key_opt,
|
|||
if (!preserve_perms || file_type == S_IFREG)
|
||||
{
|
||||
fpuser = CVS_FOPEN (userfile,
|
||||
((local_opt != NULL && strcmp (local_opt, "b") == 0)
|
||||
((key_opt != NULL && strcmp (key_opt, "b") == 0)
|
||||
? "rb"
|
||||
: "r")
|
||||
);
|
||||
|
|
@ -1157,9 +1172,9 @@ add_rcs_file (message, rcs, user, add_vhead, key_opt,
|
|||
goto write_error;
|
||||
}
|
||||
|
||||
if (local_opt != NULL && strcmp (local_opt, "kv") != 0)
|
||||
if (key_opt != NULL && strcmp (key_opt, "kv") != 0)
|
||||
{
|
||||
if (fprintf (fprcs, "expand @%s@;\012", local_opt) < 0)
|
||||
if (fprintf (fprcs, "expand @%s@;\012", key_opt) < 0)
|
||||
{
|
||||
goto write_error;
|
||||
}
|
||||
|
|
@ -1463,19 +1478,16 @@ read_error:
|
|||
*/
|
||||
int
|
||||
expand_at_signs (buf, size, fp)
|
||||
char *buf;
|
||||
const char *buf;
|
||||
off_t size;
|
||||
FILE *fp;
|
||||
{
|
||||
register char *cp, *next;
|
||||
register const char *cp, *next;
|
||||
|
||||
cp = buf;
|
||||
while ((next = memchr (cp, '@', size)) != NULL)
|
||||
{
|
||||
int len;
|
||||
|
||||
++next;
|
||||
len = next - cp;
|
||||
size_t len = ++next - cp;
|
||||
if (fwrite (cp, 1, len, fp) != len)
|
||||
return EOF;
|
||||
if (putc ('@', fp) == EOF)
|
||||
|
|
|
|||
|
|
@ -55,26 +55,28 @@
|
|||
1. Check for EROFS. Maybe useful, although in the presence of NFS
|
||||
EROFS does *not* mean that the file system is unchanging.
|
||||
|
||||
2. Provide a means to put the cvs locks in some directory apart from
|
||||
the repository (CVSROOT/locks; a -l option in modules; etc.).
|
||||
|
||||
3. Provide an option to disable locks for operations which only
|
||||
2. Provide an option to disable locks for operations which only
|
||||
read (see above for some of the consequences).
|
||||
|
||||
4. Have a server internally do the locking. Probably a good
|
||||
3. Have a server internally do the locking. Probably a good
|
||||
long-term solution, and many people have been working hard on code
|
||||
changes which would eventually make it possible to have a server
|
||||
which can handle various connections in one process, but there is
|
||||
much, much work still to be done before this is feasible.
|
||||
|
||||
5. Like #4 but use shared memory or something so that the servers
|
||||
merely need to all be on the same machine. This is a much smaller
|
||||
change to CVS (it functions much like #2; shared memory might be an
|
||||
unneeded complication although it presumably would be faster). */
|
||||
much, much work still to be done before this is feasible. */
|
||||
|
||||
#include "cvs.h"
|
||||
#include <assert.h>
|
||||
|
||||
#ifdef HAVE_NANOSLEEP
|
||||
# include "xtime.h"
|
||||
#else /* HAVE_NANOSLEEP */
|
||||
# if !defined HAVE_USLEEP && defined HAVE_SELECT
|
||||
/* use select as a workaround */
|
||||
# include "xselect.h"
|
||||
# endif /* !defined HAVE_USLEEP && defined HAVE_SELECT */
|
||||
#endif /* !HAVE_NANOSLEEP */
|
||||
|
||||
|
||||
struct lock {
|
||||
/* This is the directory in which we may have a lock named by the
|
||||
readlock variable, a lock named by the writelock variable, and/or
|
||||
|
|
@ -341,7 +343,7 @@ unlock_proc (p, closure)
|
|||
Node *p;
|
||||
void *closure;
|
||||
{
|
||||
lock_simple_remove ((struct lock *)p->data);
|
||||
lock_simple_remove (p->data);
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
|
@ -388,6 +390,8 @@ lock_simple_remove (lock)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Create a lock file for readers
|
||||
*/
|
||||
|
|
@ -404,13 +408,13 @@ Reader_Lock (xrepository)
|
|||
xrepository);
|
||||
|
||||
if (noexec)
|
||||
return (0);
|
||||
return 0;
|
||||
|
||||
/* we only do one directory at a time for read locks! */
|
||||
if (global_readlock.repository != NULL)
|
||||
{
|
||||
error (0, 0, "Reader_Lock called while read locks set - Help!");
|
||||
return (1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (readlock == NULL)
|
||||
|
|
@ -439,7 +443,7 @@ Reader_Lock (xrepository)
|
|||
/* We don't set global_readlock.repository to NULL. I think this
|
||||
only works because recurse.c will give a fatal error if we return
|
||||
a nonzero value. */
|
||||
return (1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* write a read-lock */
|
||||
|
|
@ -458,9 +462,11 @@ Reader_Lock (xrepository)
|
|||
/* free the lock dir */
|
||||
clear_lock (&global_readlock);
|
||||
|
||||
return (err);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Lock a list of directories for writing
|
||||
*/
|
||||
|
|
@ -476,13 +482,13 @@ Writer_Lock (list)
|
|||
char *wait_repos;
|
||||
|
||||
if (noexec)
|
||||
return (0);
|
||||
return 0;
|
||||
|
||||
/* We only know how to do one list at a time */
|
||||
if (locklist != (List *) NULL)
|
||||
{
|
||||
error (0, 0, "Writer_Lock called while write locks set - Help!");
|
||||
return (1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
wait_repos = NULL;
|
||||
|
|
@ -505,7 +511,7 @@ Writer_Lock (list)
|
|||
free (wait_repos);
|
||||
Lock_Cleanup (); /* clean up any locks we set */
|
||||
error (0, 0, "lock failed - giving up");
|
||||
return (1);
|
||||
return 1;
|
||||
|
||||
case L_LOCKED: /* Someone already had a lock */
|
||||
remove_locks (); /* clean up any locks we set */
|
||||
|
|
@ -519,18 +525,20 @@ Writer_Lock (list)
|
|||
lock_obtained (wait_repos);
|
||||
free (wait_repos);
|
||||
}
|
||||
return (0);
|
||||
return 0;
|
||||
|
||||
default:
|
||||
if (wait_repos != NULL)
|
||||
free (wait_repos);
|
||||
error (0, 0, "unknown lock status %d in Writer_Lock",
|
||||
lock_error);
|
||||
return (1);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* walklist proc for setting write locks
|
||||
*/
|
||||
|
|
@ -541,14 +549,16 @@ set_writelock_proc (p, closure)
|
|||
{
|
||||
/* if some lock was not OK, just skip this one */
|
||||
if (lock_error != L_OK)
|
||||
return (0);
|
||||
return 0;
|
||||
|
||||
/* apply the write lock */
|
||||
lock_error_repos = p->key;
|
||||
lock_error = write_lock ((struct lock *)p->data);
|
||||
return (0);
|
||||
lock_error = write_lock (p->data);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Create a lock file for writers returns L_OK if lock set ok, L_LOCKED if
|
||||
* lock held by someone else or L_ERROR if an error occurred
|
||||
|
|
@ -591,7 +601,7 @@ write_lock (lock)
|
|||
}
|
||||
|
||||
/* indicate we failed due to read locks instead of error */
|
||||
return (L_LOCKED);
|
||||
return L_LOCKED;
|
||||
}
|
||||
|
||||
/* write the write-lock file */
|
||||
|
|
@ -613,15 +623,17 @@ write_lock (lock)
|
|||
error (0, xerrno, "cannot create write lock in repository `%s'",
|
||||
lock->repository);
|
||||
free (tmp);
|
||||
return (L_ERROR);
|
||||
return L_ERROR;
|
||||
}
|
||||
free (tmp);
|
||||
return (L_OK);
|
||||
return L_OK;
|
||||
}
|
||||
else
|
||||
return (status);
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* readers_exist() returns 0 if there are no reader lock files remaining in
|
||||
* the repository; else 1 is returned, to indicate that the caller should
|
||||
|
|
@ -631,6 +643,7 @@ static int
|
|||
readers_exist (repository)
|
||||
char *repository;
|
||||
{
|
||||
char *lockdir;
|
||||
char *line;
|
||||
DIR *dirp;
|
||||
struct dirent *dp;
|
||||
|
|
@ -638,12 +651,15 @@ readers_exist (repository)
|
|||
int ret;
|
||||
#ifdef CVS_FUDGELOCKS
|
||||
time_t now;
|
||||
(void) time (&now);
|
||||
(void)time (&now);
|
||||
#endif
|
||||
|
||||
lockdir = lock_name (repository, "");
|
||||
lockdir[strlen (lockdir) - 1] = '\0'; /* remove trailing slash */
|
||||
|
||||
do {
|
||||
if ((dirp = CVS_OPENDIR (repository)) == NULL)
|
||||
error (1, 0, "cannot open directory %s", repository);
|
||||
if ((dirp = CVS_OPENDIR (lockdir)) == NULL)
|
||||
error (1, 0, "cannot open directory %s", lockdir);
|
||||
|
||||
ret = 0;
|
||||
errno = 0;
|
||||
|
|
@ -651,13 +667,9 @@ readers_exist (repository)
|
|||
{
|
||||
if (CVS_FNMATCH (CVSRFLPAT, dp->d_name, 0) == 0)
|
||||
{
|
||||
/* ignore our own readlock, if any */
|
||||
if (readlock && strcmp (readlock, dp->d_name) == 0)
|
||||
continue;
|
||||
|
||||
line = xmalloc (strlen (repository) + strlen (dp->d_name) + 5);
|
||||
(void) sprintf (line, "%s/%s", repository, dp->d_name);
|
||||
if ( CVS_STAT (line, &sb) != -1)
|
||||
line = xmalloc (strlen (lockdir) + 1 + strlen (dp->d_name) + 1);
|
||||
(void)sprintf (line, "%s/%s", lockdir, dp->d_name);
|
||||
if (CVS_STAT (line, &sb) != -1)
|
||||
{
|
||||
#ifdef CVS_FUDGELOCKS
|
||||
/*
|
||||
|
|
@ -677,9 +689,10 @@ readers_exist (repository)
|
|||
}
|
||||
else
|
||||
{
|
||||
/* If the file doesn't exist, it just means that it disappeared
|
||||
between the time we did the readdir and the time we did
|
||||
the stat. */
|
||||
/* If the file doesn't exist, it just means that it
|
||||
* disappeared between the time we did the readdir and the
|
||||
* time we did the stat.
|
||||
*/
|
||||
if (!existence_error (errno))
|
||||
error (0, errno, "cannot stat %s", line);
|
||||
}
|
||||
|
|
@ -695,9 +708,14 @@ readers_exist (repository)
|
|||
|
||||
CVS_CLOSEDIR (dirp);
|
||||
} while (ret < 0);
|
||||
return (ret);
|
||||
|
||||
if (lockdir != NULL)
|
||||
free (lockdir);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Set the static variable lockers_name appropriately, based on the stat
|
||||
* structure passed in.
|
||||
|
|
@ -710,22 +728,29 @@ set_lockers_name (statp)
|
|||
|
||||
if (lockers_name != NULL)
|
||||
free (lockers_name);
|
||||
if ((pw = (struct passwd *) getpwuid (statp->st_uid)) !=
|
||||
(struct passwd *) NULL)
|
||||
if ((pw = (struct passwd *)getpwuid (statp->st_uid)) !=
|
||||
(struct passwd *)NULL)
|
||||
{
|
||||
lockers_name = xstrdup (pw->pw_name);
|
||||
}
|
||||
else
|
||||
{
|
||||
lockers_name = xmalloc (20);
|
||||
(void) sprintf (lockers_name, "uid%lu", (unsigned long) statp->st_uid);
|
||||
(void)sprintf (lockers_name, "uid%lu", (unsigned long) statp->st_uid);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Persistently tries to make the directory "lckdir",, which serves as a
|
||||
* lock. If the create time on the directory is greater than CVSLCKAGE
|
||||
* Persistently tries to make the directory "lckdir", which serves as a
|
||||
* lock.
|
||||
*
|
||||
* #ifdef CVS_FUDGELOCKS
|
||||
* If the create time on the directory is greater than CVSLCKAGE
|
||||
* seconds old, just try to remove the directory.
|
||||
* #endif
|
||||
*
|
||||
*/
|
||||
static int
|
||||
set_lock (lock, will_wait)
|
||||
|
|
@ -733,6 +758,7 @@ set_lock (lock, will_wait)
|
|||
int will_wait;
|
||||
{
|
||||
int waited;
|
||||
long us;
|
||||
struct stat sb;
|
||||
mode_t omask;
|
||||
#ifdef CVS_FUDGELOCKS
|
||||
|
|
@ -749,6 +775,7 @@ set_lock (lock, will_wait)
|
|||
* directory before they exit.
|
||||
*/
|
||||
waited = 0;
|
||||
us = 1;
|
||||
lock->have_lckdir = 0;
|
||||
for (;;)
|
||||
{
|
||||
|
|
@ -810,6 +837,33 @@ set_lock (lock, will_wait)
|
|||
/* if he wasn't willing to wait, return an error */
|
||||
if (!will_wait)
|
||||
return (L_LOCKED);
|
||||
|
||||
/* if possible, try a very short sleep without a message */
|
||||
if (!waited && us < 1000)
|
||||
{
|
||||
us += us;
|
||||
#if defined HAVE_NANOSLEEP
|
||||
{
|
||||
struct timespec ts;
|
||||
ts.tv_sec = 0;
|
||||
ts.tv_nsec = us * 1000;
|
||||
(void)nanosleep (&ts, NULL);
|
||||
continue;
|
||||
}
|
||||
#elif defined HAVE_USLEEP
|
||||
(void)usleep (us);
|
||||
continue;
|
||||
#elif defined HAVE_SELECT
|
||||
{
|
||||
struct timeval tv;
|
||||
tv.tv_sec = 0;
|
||||
tv.tv_usec = us;
|
||||
(void)select (0, (fd_set *)NULL, (fd_set *)NULL, (fd_set *)NULL, &tv);
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
lock_wait (lock->repository);
|
||||
waited = 1;
|
||||
}
|
||||
|
|
@ -877,10 +931,13 @@ lock_obtained (repos)
|
|||
cvs_flusherr ();
|
||||
free (msg);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static int lock_filesdoneproc PROTO ((void *callerdat, int err,
|
||||
char *repository, char *update_dir,
|
||||
List *entries));
|
||||
const char *repository,
|
||||
const char *update_dir,
|
||||
List *entries));
|
||||
|
||||
/*
|
||||
* Create a list of repositories to lock
|
||||
|
|
@ -890,8 +947,8 @@ static int
|
|||
lock_filesdoneproc (callerdat, err, repository, update_dir, entries)
|
||||
void *callerdat;
|
||||
int err;
|
||||
char *repository;
|
||||
char *update_dir;
|
||||
const char *repository;
|
||||
const char *update_dir;
|
||||
List *entries;
|
||||
{
|
||||
Node *p;
|
||||
|
|
@ -917,16 +974,15 @@ lock_tree_for_write (argc, argv, local, which, aflag)
|
|||
int which;
|
||||
int aflag;
|
||||
{
|
||||
int err;
|
||||
/*
|
||||
* Run the recursion processor to find all the dirs to lock and lock all
|
||||
* the dirs
|
||||
*/
|
||||
lock_tree_list = getlist ();
|
||||
err = start_recursion ((FILEPROC) NULL, lock_filesdoneproc,
|
||||
(DIRENTPROC) NULL, (DIRLEAVEPROC) NULL, NULL, argc,
|
||||
argv, local, which, aflag, CVS_LOCK_NONE,
|
||||
(char *) NULL, 0);
|
||||
start_recursion ((FILEPROC) NULL, lock_filesdoneproc,
|
||||
(DIRENTPROC) NULL, (DIRLEAVEPROC) NULL, NULL, argc,
|
||||
argv, local, which, aflag, CVS_LOCK_NONE,
|
||||
(char *) NULL, 0, (char *) NULL);
|
||||
sortlist (lock_tree_list, fsortcmp);
|
||||
if (Writer_Lock (lock_tree_list) != 0)
|
||||
error (1, 0, "lock failed - giving up");
|
||||
|
|
|
|||
|
|
@ -115,9 +115,10 @@ struct log_data_and_rcs
|
|||
static int rlog_proc PROTO((int argc, char **argv, char *xwhere,
|
||||
char *mwhere, char *mfile, int shorten,
|
||||
int local_specified, char *mname, char *msg));
|
||||
static Dtype log_dirproc PROTO ((void *callerdat, char *dir,
|
||||
char *repository, char *update_dir,
|
||||
List *entries));
|
||||
static Dtype log_dirproc PROTO ((void *callerdat, const char *dir,
|
||||
const char *repository,
|
||||
const char *update_dir,
|
||||
List *entries));
|
||||
static int log_fileproc PROTO ((void *callerdat, struct file_info *finfo));
|
||||
static struct option_revlist *log_parse_revlist PROTO ((const char *));
|
||||
static void log_parse_date PROTO ((struct log_data *, const char *));
|
||||
|
|
@ -224,7 +225,7 @@ cvslog (argc, argv)
|
|||
int local = 0;
|
||||
struct option_revlist **prl;
|
||||
|
||||
is_rlog = (strcmp (command_name, "rlog") == 0);
|
||||
is_rlog = (strcmp (cvs_cmd_name, "rlog") == 0);
|
||||
|
||||
if (argc == -1)
|
||||
usage (log_usage);
|
||||
|
|
@ -486,39 +487,46 @@ rlog_proc (argc, argv, xwhere, mwhere, mfile, shorten, local, mname, msg)
|
|||
|
||||
if (is_rlog)
|
||||
{
|
||||
repository = xmalloc (strlen (current_parsed_root->directory) + strlen (argv[0])
|
||||
repository = xmalloc (strlen (current_parsed_root->directory)
|
||||
+ strlen (argv[0])
|
||||
+ (mfile == NULL ? 0 : strlen (mfile) + 1) + 2);
|
||||
(void) sprintf (repository, "%s/%s", current_parsed_root->directory, argv[0]);
|
||||
where = xmalloc (strlen (argv[0]) + (mfile == NULL ? 0 : strlen (mfile) + 1)
|
||||
(void)sprintf (repository, "%s/%s",
|
||||
current_parsed_root->directory, argv[0]);
|
||||
where = xmalloc (strlen (argv[0])
|
||||
+ (mfile == NULL ? 0 : strlen (mfile) + 1)
|
||||
+ 1);
|
||||
(void) strcpy (where, argv[0]);
|
||||
|
||||
/* if mfile isn't null, we need to set up to do only part of the module */
|
||||
/* If mfile isn't null, we need to set up to do only part of theu
|
||||
* module.
|
||||
*/
|
||||
if (mfile != NULL)
|
||||
{
|
||||
char *cp;
|
||||
char *path;
|
||||
|
||||
/* if the portion of the module is a path, put the dir part on repos */
|
||||
/* If the portion of the module is a path, put the dir part on
|
||||
* repos.
|
||||
*/
|
||||
if ((cp = strrchr (mfile, '/')) != NULL)
|
||||
{
|
||||
*cp = '\0';
|
||||
(void) strcat (repository, "/");
|
||||
(void) strcat (repository, mfile);
|
||||
(void) strcat (where, "/");
|
||||
(void) strcat (where, mfile);
|
||||
(void)strcat (repository, "/");
|
||||
(void)strcat (repository, mfile);
|
||||
(void)strcat (where, "/");
|
||||
(void)strcat (where, mfile);
|
||||
mfile = cp + 1;
|
||||
}
|
||||
|
||||
/* take care of the rest */
|
||||
path = xmalloc (strlen (repository) + strlen (mfile) + 5);
|
||||
(void) sprintf (path, "%s/%s", repository, mfile);
|
||||
(void)sprintf (path, "%s/%s", repository, mfile);
|
||||
if (isdir (path))
|
||||
{
|
||||
/* directory means repository gets the dir tacked on */
|
||||
(void) strcpy (repository, path);
|
||||
(void) strcat (where, "/");
|
||||
(void) strcat (where, mfile);
|
||||
(void)strcpy (repository, path);
|
||||
(void)strcat (where, "/");
|
||||
(void)strcat (where, mfile);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -531,19 +539,20 @@ rlog_proc (argc, argv, xwhere, mwhere, mfile, shorten, local, mname, msg)
|
|||
}
|
||||
|
||||
/* cd to the starting repository */
|
||||
if ( CVS_CHDIR (repository) < 0)
|
||||
if (CVS_CHDIR (repository) < 0)
|
||||
{
|
||||
error (0, errno, "cannot chdir to %s", repository);
|
||||
free (repository);
|
||||
return (1);
|
||||
free (where);
|
||||
return 1;
|
||||
}
|
||||
free (repository);
|
||||
/* End section which is identical to patch_proc. */
|
||||
|
||||
which = W_REPOS | W_ATTIC;
|
||||
}
|
||||
else
|
||||
{
|
||||
repository = NULL;
|
||||
where = NULL;
|
||||
which = W_LOCAL | W_REPOS | W_ATTIC;
|
||||
}
|
||||
|
|
@ -551,15 +560,19 @@ rlog_proc (argc, argv, xwhere, mwhere, mfile, shorten, local, mname, msg)
|
|||
err = start_recursion (log_fileproc, (FILESDONEPROC) NULL, log_dirproc,
|
||||
(DIRLEAVEPROC) NULL, (void *) &log_data,
|
||||
argc - 1, argv + 1, local, which, 0, CVS_LOCK_READ,
|
||||
where, 1);
|
||||
where, 1, repository);
|
||||
|
||||
if (!(which & W_LOCAL)) free (repository);
|
||||
if (where) free (where);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Parse a revision list specification.
|
||||
*/
|
||||
|
||||
static struct option_revlist *
|
||||
log_parse_revlist (argstring)
|
||||
const char *argstring;
|
||||
|
|
@ -783,6 +796,8 @@ printlock_proc (lock, foo)
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Do an rlog on a file
|
||||
*/
|
||||
|
|
@ -796,7 +811,7 @@ log_fileproc (callerdat, finfo)
|
|||
int selrev = -1;
|
||||
RCSNode *rcsfile;
|
||||
char buf[50];
|
||||
struct revlist *revlist;
|
||||
struct revlist *revlist = NULL;
|
||||
struct log_data_and_rcs log_data_and_rcs;
|
||||
|
||||
if ((rcsfile = finfo->rcs) == NULL)
|
||||
|
|
@ -805,22 +820,21 @@ log_fileproc (callerdat, finfo)
|
|||
p = findnode (finfo->entries, finfo->file);
|
||||
if (p != NULL)
|
||||
{
|
||||
Entnode *e;
|
||||
|
||||
e = (Entnode *) p->data;
|
||||
Entnode *e = p->data;
|
||||
|
||||
if (e->version[0] == '0' && e->version[1] == '\0')
|
||||
{
|
||||
if (!really_quiet)
|
||||
error (0, 0, "%s has been added, but not committed",
|
||||
finfo->file);
|
||||
return(0);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (!really_quiet)
|
||||
error (0, 0, "nothing known about %s", finfo->file);
|
||||
|
||||
return (1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (log_data->sup_header || !log_data->nameonly)
|
||||
|
|
@ -833,7 +847,8 @@ log_fileproc (callerdat, finfo)
|
|||
revisions. */
|
||||
revlist = log_expand_revlist (rcsfile, log_data->revlist,
|
||||
log_data->default_branch);
|
||||
if (log_data->sup_header || (!log_data->header && !log_data->long_header))
|
||||
if (log_data->sup_header
|
||||
|| (!log_data->header && !log_data->long_header))
|
||||
{
|
||||
log_data_and_rcs.log_data = log_data;
|
||||
log_data_and_rcs.revlist = revlist;
|
||||
|
|
@ -846,11 +861,15 @@ log_fileproc (callerdat, finfo)
|
|||
start date for each specific revision. */
|
||||
if (log_data->singledatelist != NULL)
|
||||
walklist (rcsfile->versions, log_fix_singledate,
|
||||
(void *) &log_data_and_rcs);
|
||||
(void *)&log_data_and_rcs);
|
||||
|
||||
selrev = walklist (rcsfile->versions, log_count_print,
|
||||
(void *) &log_data_and_rcs);
|
||||
if (log_data->sup_header && selrev == 0) return 0;
|
||||
(void *)&log_data_and_rcs);
|
||||
if (log_data->sup_header && selrev == 0)
|
||||
{
|
||||
log_free_revlist (revlist);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -859,6 +878,7 @@ log_fileproc (callerdat, finfo)
|
|||
{
|
||||
cvs_output (rcsfile->path, 0);
|
||||
cvs_output ("\n", 1);
|
||||
log_free_revlist (revlist);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -915,7 +935,7 @@ log_fileproc (callerdat, finfo)
|
|||
|
||||
cvs_output ("\n\t", 2);
|
||||
cp2 = cp;
|
||||
while (! isspace ((unsigned char) *cp2) && *cp2 != '\0')
|
||||
while (!isspace ((unsigned char) *cp2) && *cp2 != '\0')
|
||||
++cp2;
|
||||
cvs_output (cp, cp2 - cp);
|
||||
cp = cp2;
|
||||
|
|
@ -924,7 +944,7 @@ log_fileproc (callerdat, finfo)
|
|||
}
|
||||
}
|
||||
|
||||
if (! log_data->notags)
|
||||
if (!log_data->notags)
|
||||
{
|
||||
List *syms;
|
||||
|
||||
|
|
@ -952,14 +972,14 @@ log_fileproc (callerdat, finfo)
|
|||
|
||||
cvs_output ("\n", 1);
|
||||
|
||||
if (! log_data->header || log_data->long_header)
|
||||
if (!log_data->header || log_data->long_header)
|
||||
{
|
||||
cvs_output ("description:\n", 0);
|
||||
if (rcsfile->desc != NULL)
|
||||
cvs_output (rcsfile->desc, 0);
|
||||
}
|
||||
|
||||
if (! log_data->header && ! log_data->long_header && rcsfile->head != NULL)
|
||||
if (!log_data->header && ! log_data->long_header && rcsfile->head != NULL)
|
||||
{
|
||||
p = findnode (rcsfile->versions, rcsfile->head);
|
||||
if (p == NULL)
|
||||
|
|
@ -967,9 +987,8 @@ log_fileproc (callerdat, finfo)
|
|||
finfo->fullname);
|
||||
while (p != NULL)
|
||||
{
|
||||
RCSVers *vers;
|
||||
RCSVers *vers = p->data;
|
||||
|
||||
vers = (RCSVers *) p->data;
|
||||
log_version (log_data, revlist, rcsfile, vers, 1);
|
||||
if (vers->next == NULL)
|
||||
p = NULL;
|
||||
|
|
@ -1009,6 +1028,8 @@ log_fileproc (callerdat, finfo)
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Fix up a revision list in order to compare it against versions.
|
||||
* Expand any symbolic revisions.
|
||||
|
|
@ -1109,26 +1130,21 @@ log_expand_revlist (rcs, revlist, default_branch)
|
|||
does. This code is a bit cryptic for my tastes, but
|
||||
keeping the same implementation as rlog ensures a
|
||||
certain degree of compatibility. */
|
||||
if (r->first == NULL)
|
||||
if (r->first == NULL && nr->last != NULL)
|
||||
{
|
||||
if (nr->last == NULL)
|
||||
nr->fields = 0;
|
||||
nr->fields = numdots (nr->last) + 1;
|
||||
if (nr->fields < 2)
|
||||
nr->first = xstrdup (".0");
|
||||
else
|
||||
{
|
||||
nr->fields = numdots (nr->last) + 1;
|
||||
if (nr->fields < 2)
|
||||
nr->first = xstrdup (".0");
|
||||
else
|
||||
{
|
||||
char *cp;
|
||||
char *cp;
|
||||
|
||||
nr->first = xstrdup (nr->last);
|
||||
cp = strrchr (nr->first, '.');
|
||||
strcpy (cp + 1, "0");
|
||||
}
|
||||
nr->first = xstrdup (nr->last);
|
||||
cp = strrchr (nr->first, '.');
|
||||
strcpy (cp + 1, "0");
|
||||
}
|
||||
}
|
||||
else if (r->last == NULL)
|
||||
else if (r->last == NULL && nr->first != NULL)
|
||||
{
|
||||
nr->fields = numdots (nr->first) + 1;
|
||||
nr->last = xstrdup (nr->first);
|
||||
|
|
@ -1377,6 +1393,8 @@ log_version_requested (log_data, revlist, rcs, vnode)
|
|||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Output a single symbol. This is called via walklist.
|
||||
*/
|
||||
|
|
@ -1393,6 +1411,8 @@ log_symbol (p, closure)
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Count the number of entries on a list. This is called via walklist.
|
||||
*/
|
||||
|
|
@ -1405,6 +1425,8 @@ log_count (p, closure)
|
|||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Sort out a single date specification by narrowing down the date
|
||||
* until we find the specific selected revision.
|
||||
|
|
@ -1424,7 +1446,7 @@ log_fix_singledate (p, closure)
|
|||
if (pv == NULL)
|
||||
error (1, 0, "missing version `%s' in RCS file `%s'",
|
||||
p->key, data->rcs->path);
|
||||
vnode = (RCSVers *) pv->data;
|
||||
vnode = pv->data;
|
||||
|
||||
/* We are only interested if this revision passes any other tests.
|
||||
Temporarily clear log_data->singledatelist to avoid confusing
|
||||
|
|
@ -1464,6 +1486,8 @@ log_fix_singledate (p, closure)
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Count the number of revisions we are going to print.
|
||||
*/
|
||||
|
|
@ -1480,7 +1504,7 @@ log_count_print (p, closure)
|
|||
error (1, 0, "missing version `%s' in RCS file `%s'",
|
||||
p->key, data->rcs->path);
|
||||
if (log_version_requested (data->log_data, data->revlist, data->rcs,
|
||||
(RCSVers *) pv->data))
|
||||
pv->data))
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
|
|
@ -1504,7 +1528,7 @@ log_tree (log_data, revlist, rcs, ver)
|
|||
if (p == NULL)
|
||||
error (1, 0, "missing version `%s' in RCS file `%s'",
|
||||
ver, rcs->path);
|
||||
vnode = (RCSVers *) p->data;
|
||||
vnode = p->data;
|
||||
if (vnode->next != NULL)
|
||||
log_tree (log_data, revlist, rcs, vnode->next);
|
||||
if (vnode->branches != NULL)
|
||||
|
|
@ -1540,7 +1564,7 @@ log_abranch (log_data, revlist, rcs, ver)
|
|||
if (p == NULL)
|
||||
error (1, 0, "missing version `%s' in RCS file `%s'",
|
||||
ver, rcs->path);
|
||||
vnode = (RCSVers *) p->data;
|
||||
vnode = p->data;
|
||||
if (vnode->next != NULL)
|
||||
log_abranch (log_data, revlist, rcs, vnode->next);
|
||||
log_version (log_data, revlist, rcs, vnode, 0);
|
||||
|
|
@ -1611,7 +1635,7 @@ log_version (log_data, revlist, rcs, ver, trunk)
|
|||
if (nextp == NULL)
|
||||
error (1, 0, "missing version `%s' in `%s'", ver->next,
|
||||
rcs->path);
|
||||
nextver = (RCSVers *) nextp->data;
|
||||
nextver = nextp->data;
|
||||
pdel = findnode (nextver->other, ";add");
|
||||
padd = findnode (nextver->other, ";delete");
|
||||
}
|
||||
|
|
@ -1640,14 +1664,14 @@ log_version (log_data, revlist, rcs, ver, trunk)
|
|||
would be the p == NULL case would mean an RCS file which was
|
||||
missing the "log" keyword (which is illegal according to
|
||||
rcsfile.5). */
|
||||
if (p == NULL || p->data == NULL || p->data[0] == '\0')
|
||||
if (p == NULL || p->data == NULL || *(char *)p->data == '\0')
|
||||
cvs_output ("*** empty log message ***\n", 0);
|
||||
else
|
||||
{
|
||||
/* FIXME: Technically, the log message could contain a null
|
||||
byte. */
|
||||
cvs_output (p->data, 0);
|
||||
if (p->data[strlen (p->data) - 1] != '\n')
|
||||
if (((char *)p->data)[strlen (p->data) - 1] != '\n')
|
||||
cvs_output ("\n", 1);
|
||||
}
|
||||
}
|
||||
|
|
@ -1685,9 +1709,9 @@ log_branch (p, closure)
|
|||
static Dtype
|
||||
log_dirproc (callerdat, dir, repository, update_dir, entries)
|
||||
void *callerdat;
|
||||
char *dir;
|
||||
char *repository;
|
||||
char *update_dir;
|
||||
const char *dir;
|
||||
const char *repository;
|
||||
const char *update_dir;
|
||||
List *entries;
|
||||
{
|
||||
if (!isdir (dir))
|
||||
|
|
|
|||
|
|
@ -12,12 +12,6 @@
|
|||
|
||||
#ifdef AUTH_CLIENT_SUPPORT /* This covers the rest of the file. */
|
||||
|
||||
#ifdef HAVE_GETPASSPHRASE
|
||||
#define GETPASS getpassphrase
|
||||
#else
|
||||
#define GETPASS getpass
|
||||
#endif
|
||||
|
||||
/* There seems to be very little agreement on which system header
|
||||
getpass is declared in. With a lot of fancy autoconfiscation,
|
||||
we could perhaps detect this, but for now we'll just rely on
|
||||
|
|
@ -25,9 +19,6 @@
|
|||
declaration won't work (some Crays declare the 2#$@% thing as
|
||||
varadic, believe it or not). On Cray, getpass will be declared
|
||||
in either stdlib.h or unistd.h. */
|
||||
#ifndef _CRAY
|
||||
extern char *GETPASS ();
|
||||
#endif
|
||||
|
||||
#ifndef CVS_PASSWORD_FILE
|
||||
#define CVS_PASSWORD_FILE ".cvspass"
|
||||
|
|
@ -229,8 +220,10 @@ password_entry_parseline (cvsroot_canonical, warn, linenumber, linebuf)
|
|||
*
|
||||
* Mode Action
|
||||
* password_entry_lookup Return the password
|
||||
* password_entry_delete Delete the entry from the file, if it exists
|
||||
* password_entry_add Replace the line with the new one, else append it
|
||||
* password_entry_delete Delete the entry from the file, if it
|
||||
* exists.
|
||||
* password_entry_add Replace the line with the new one, else
|
||||
* append it.
|
||||
*
|
||||
* Because the user might be accessing multiple repositories, with
|
||||
* different passwords for each one, the format of ~/.cvspass is:
|
||||
|
|
@ -291,7 +284,7 @@ password_entry_operation (operation, root, newpassword)
|
|||
char *cvsroot_canonical = NULL;
|
||||
char *password = NULL;
|
||||
int line_length;
|
||||
long line;
|
||||
long line = -1;
|
||||
char *linebuf = NULL;
|
||||
size_t linebuf_len;
|
||||
char *p;
|
||||
|
|
@ -299,7 +292,8 @@ password_entry_operation (operation, root, newpassword)
|
|||
|
||||
if (root->method != pserver_method)
|
||||
{
|
||||
error (0, 0, "internal error: can only call password_entry_operation with pserver method");
|
||||
error (0, 0, "\
|
||||
internal error: can only call password_entry_operation with pserver method");
|
||||
error (1, 0, "CVSROOT: %s", root->original);
|
||||
}
|
||||
|
||||
|
|
@ -323,7 +317,8 @@ password_entry_operation (operation, root, newpassword)
|
|||
while ((line_length = getline (&linebuf, &linebuf_len, fp)) >= 0)
|
||||
{
|
||||
line++;
|
||||
password = password_entry_parseline(cvsroot_canonical, 1, line, linebuf);
|
||||
password = password_entry_parseline (cvsroot_canonical, 1, line,
|
||||
linebuf);
|
||||
if (password != NULL)
|
||||
/* this is it! break out and deal with linebuf */
|
||||
break;
|
||||
|
|
@ -373,7 +368,8 @@ process:
|
|||
* add
|
||||
*/
|
||||
if (!noexec && password != NULL && (operation == password_entry_delete
|
||||
|| (operation == password_entry_add && strcmp (password, newpassword))))
|
||||
|| (operation == password_entry_add
|
||||
&& strcmp (password, newpassword))))
|
||||
{
|
||||
long found_at = line;
|
||||
char *tmp_name;
|
||||
|
|
@ -394,7 +390,8 @@ process:
|
|||
line++;
|
||||
if (line < found_at
|
||||
|| (line != found_at
|
||||
&& !password_entry_parseline(cvsroot_canonical, 0, line, linebuf)))
|
||||
&& !password_entry_parseline (cvsroot_canonical, 0, line,
|
||||
linebuf)))
|
||||
{
|
||||
if (fprintf (tmp_fp, "%s", linebuf) == EOF)
|
||||
{
|
||||
|
|
@ -541,7 +538,7 @@ login (argc, argv)
|
|||
else
|
||||
{
|
||||
char *tmp;
|
||||
tmp = GETPASS ("CVS password: ");
|
||||
tmp = getpass ("CVS password: ");
|
||||
/* Must deal with a NULL return value here. I haven't managed to
|
||||
* disconnect the CVS process from the tty and force a NULL return
|
||||
* in sanity.sh, but the Linux version of getpass is documented
|
||||
|
|
@ -560,7 +557,8 @@ login (argc, argv)
|
|||
|
||||
connect_to_pserver (current_parsed_root, NULL, NULL, 1, 0);
|
||||
|
||||
password_entry_operation (password_entry_add, current_parsed_root, typed_password);
|
||||
password_entry_operation (password_entry_add, current_parsed_root,
|
||||
typed_password);
|
||||
|
||||
memset (typed_password, 0, strlen (typed_password));
|
||||
free (typed_password);
|
||||
|
|
@ -572,6 +570,8 @@ login (argc, argv)
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Returns the _scrambled_ password. The server must descramble
|
||||
before hashing and comparing. If password file not found, or
|
||||
password not found in the file, just return NULL. */
|
||||
|
|
@ -579,7 +579,7 @@ char *
|
|||
get_cvs_password ()
|
||||
{
|
||||
if (current_parsed_root->password)
|
||||
return (scramble(current_parsed_root->password));
|
||||
return scramble (current_parsed_root->password);
|
||||
|
||||
/* If someone (i.e., login()) is calling connect_to_pserver() out of
|
||||
context, then assume they have supplied the correct, scrambled
|
||||
|
|
@ -607,9 +607,12 @@ get_cvs_password ()
|
|||
error (1, 0, "CVSROOT: %s", current_parsed_root->original);
|
||||
}
|
||||
|
||||
return password_entry_operation (password_entry_lookup, current_parsed_root, NULL);
|
||||
return password_entry_operation (password_entry_lookup,
|
||||
current_parsed_root, NULL);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static const char *const logout_usage[] =
|
||||
{
|
||||
"Usage: %s %s\n",
|
||||
|
|
|
|||
|
|
@ -13,14 +13,16 @@
|
|||
|
||||
static int find_type PROTO((Node * p, void *closure));
|
||||
static int fmt_proc PROTO((Node * p, void *closure));
|
||||
static int logfile_write PROTO((char *repository, char *filter,
|
||||
char *message, FILE * logfp, List * changes));
|
||||
static int rcsinfo_proc PROTO((char *repository, char *template));
|
||||
static int logfile_write PROTO((const char *repository, const char *filter,
|
||||
const char *message, FILE * logfp,
|
||||
List * changes));
|
||||
static int rcsinfo_proc PROTO((const char *repository, const char *template));
|
||||
static int title_proc PROTO((Node * p, void *closure));
|
||||
static int update_logfile_proc PROTO((char *repository, char *filter));
|
||||
static int update_logfile_proc PROTO((const char *repository,
|
||||
const char *filter));
|
||||
static void setup_tmpfile PROTO((FILE * xfp, char *xprefix, List * changes));
|
||||
static int editinfo_proc PROTO((char *repository, char *template));
|
||||
static int verifymsg_proc PROTO((char *repository, char *script));
|
||||
static int editinfo_proc PROTO((const char *repository, const char *template));
|
||||
static int verifymsg_proc PROTO((const char *repository, const char *script));
|
||||
|
||||
static FILE *fp;
|
||||
static char *str_list;
|
||||
|
|
@ -104,9 +106,8 @@ find_type (p, closure)
|
|||
Node *p;
|
||||
void *closure;
|
||||
{
|
||||
struct logfile_info *li;
|
||||
struct logfile_info *li = p->data;
|
||||
|
||||
li = (struct logfile_info *) p->data;
|
||||
if (li->type == type)
|
||||
return (1);
|
||||
else
|
||||
|
|
@ -125,7 +126,7 @@ fmt_proc (p, closure)
|
|||
{
|
||||
struct logfile_info *li;
|
||||
|
||||
li = (struct logfile_info *) p->data;
|
||||
li = p->data;
|
||||
if (li->type == type)
|
||||
{
|
||||
if (li->tag == NULL
|
||||
|
|
@ -182,9 +183,9 @@ fmt_proc (p, closure)
|
|||
*/
|
||||
void
|
||||
do_editor (dir, messagep, repository, changes)
|
||||
char *dir;
|
||||
const char *dir;
|
||||
char **messagep;
|
||||
char *repository;
|
||||
const char *repository;
|
||||
List *changes;
|
||||
{
|
||||
static int reuse_log_message = 0;
|
||||
|
|
@ -413,7 +414,7 @@ do_editor (dir, messagep, repository, changes)
|
|||
void
|
||||
do_verify (messagep, repository)
|
||||
char **messagep;
|
||||
char *repository;
|
||||
const char *repository;
|
||||
{
|
||||
FILE *fp;
|
||||
char *fname;
|
||||
|
|
@ -429,14 +430,14 @@ do_verify (messagep, repository)
|
|||
|
||||
/* FIXME? Do we really want to skip this on noexec? What do we do
|
||||
for the other administrative files? */
|
||||
if (noexec)
|
||||
if (noexec || repository == NULL)
|
||||
return;
|
||||
|
||||
/* Get the name of the verification script to run */
|
||||
|
||||
if (repository != NULL)
|
||||
(void) Parse_Info (CVSROOTADM_VERIFYMSG, repository,
|
||||
verifymsg_proc, 0);
|
||||
if (Parse_Info (CVSROOTADM_VERIFYMSG, repository, verifymsg_proc, 0) > 0)
|
||||
error (1, 0, "Message verification failed");
|
||||
|
||||
if (!verifymsg_script)
|
||||
return;
|
||||
|
||||
|
|
@ -550,6 +551,8 @@ do_verify (messagep, repository)
|
|||
if (unlink_file (fname) < 0)
|
||||
error (0, errno, "cannot remove %s", fname);
|
||||
free (fname);
|
||||
free( verifymsg_script );
|
||||
verifymsg_script = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -560,8 +563,8 @@ do_verify (messagep, repository)
|
|||
/* ARGSUSED */
|
||||
static int
|
||||
rcsinfo_proc (repository, template)
|
||||
char *repository;
|
||||
char *template;
|
||||
const char *repository;
|
||||
const char *template;
|
||||
{
|
||||
static char *last_template;
|
||||
FILE *tfp;
|
||||
|
|
@ -602,13 +605,13 @@ rcsinfo_proc (repository, template)
|
|||
* specified program as standard input.
|
||||
*/
|
||||
static FILE *logfp;
|
||||
static char *message;
|
||||
static const char *message;
|
||||
static List *changes;
|
||||
|
||||
void
|
||||
Update_Logfile (repository, xmessage, xlogfp, xchanges)
|
||||
char *repository;
|
||||
char *xmessage;
|
||||
const char *repository;
|
||||
const char *xmessage;
|
||||
FILE *xlogfp;
|
||||
List *xchanges;
|
||||
{
|
||||
|
|
@ -625,17 +628,21 @@ Update_Logfile (repository, xmessage, xlogfp, xchanges)
|
|||
(void) Parse_Info (CVSROOTADM_LOGINFO, repository, update_logfile_proc, 1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* callback proc to actually do the logfile write from Update_Logfile
|
||||
*/
|
||||
static int
|
||||
update_logfile_proc (repository, filter)
|
||||
char *repository;
|
||||
char *filter;
|
||||
const char *repository;
|
||||
const char *filter;
|
||||
{
|
||||
return (logfile_write (repository, filter, message, logfp, changes));
|
||||
return logfile_write (repository, filter, message, logfp, changes);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* concatenate each filename/version onto str_list
|
||||
*/
|
||||
|
|
@ -644,10 +651,9 @@ title_proc (p, closure)
|
|||
Node *p;
|
||||
void *closure;
|
||||
{
|
||||
struct logfile_info *li;
|
||||
char *c;
|
||||
struct logfile_info *li = p->data;
|
||||
|
||||
li = (struct logfile_info *) p->data;
|
||||
if (li->type == type)
|
||||
{
|
||||
/* Until we decide on the correct logging solution when we add
|
||||
|
|
@ -727,9 +733,9 @@ title_proc (p, closure)
|
|||
*/
|
||||
static int
|
||||
logfile_write (repository, filter, message, logfp, changes)
|
||||
char *repository;
|
||||
char *filter;
|
||||
char *message;
|
||||
const char *repository;
|
||||
const char *filter;
|
||||
const char *message;
|
||||
FILE *logfp;
|
||||
List *changes;
|
||||
{
|
||||
|
|
@ -796,7 +802,7 @@ logfile_write (repository, filter, message, logfp, changes)
|
|||
if (fmt_percent)
|
||||
{
|
||||
int len;
|
||||
char *srepos;
|
||||
const char *srepos;
|
||||
char *fmt_begin, *fmt_end; /* beginning and end of the
|
||||
format string specified in
|
||||
filter. */
|
||||
|
|
@ -927,7 +933,7 @@ logfile_write (repository, filter, message, logfp, changes)
|
|||
}
|
||||
|
||||
setup_tmpfile (pipefp, "", changes);
|
||||
(void) fprintf (pipefp, "Log Message:\n%s\n", message);
|
||||
(void) fprintf (pipefp, "Log Message:\n%s\n", (message) ? message : "");
|
||||
if (logfp != (FILE *) 0)
|
||||
{
|
||||
(void) fprintf (pipefp, "Status:\n");
|
||||
|
|
@ -951,8 +957,8 @@ logfile_write (repository, filter, message, logfp, changes)
|
|||
/* ARGSUSED */
|
||||
static int
|
||||
editinfo_proc(repository, editor)
|
||||
char *repository;
|
||||
char *editor;
|
||||
const char *repository;
|
||||
const char *editor;
|
||||
{
|
||||
/* nothing to do if the last match is the same as this one */
|
||||
if (editinfo_editor && strcmp (editinfo_editor, editor) == 0)
|
||||
|
|
@ -969,8 +975,8 @@ editinfo_proc(repository, editor)
|
|||
*/
|
||||
static int
|
||||
verifymsg_proc (repository, script)
|
||||
char *repository;
|
||||
char *script;
|
||||
const char *repository;
|
||||
const char *script;
|
||||
{
|
||||
if (verifymsg_script && strcmp (verifymsg_script, script) == 0)
|
||||
return (0);
|
||||
|
|
|
|||
|
|
@ -21,9 +21,9 @@
|
|||
extern int gethostname ();
|
||||
#endif
|
||||
|
||||
char *program_name;
|
||||
char *program_path;
|
||||
char *command_name;
|
||||
const char *program_name;
|
||||
const char *program_path;
|
||||
const char *cvs_cmd_name;
|
||||
|
||||
/* I'd dynamically allocate this, but it seems like gethostname
|
||||
requires a fixed size array. If I'm remembering the RFCs right,
|
||||
|
|
@ -247,7 +247,6 @@ static const char *const opt_usage[] =
|
|||
" -q Cause CVS to be somewhat quiet.\n",
|
||||
" -r Make checked-out files read-only.\n",
|
||||
" -w Make checked-out files read-write (default).\n",
|
||||
" -l Turn history logging off.\n",
|
||||
" -n Do not execute anything that will change the disk.\n",
|
||||
" -t Show trace of program execution -- try with -n.\n",
|
||||
" -v CVS version and copyright.\n",
|
||||
|
|
@ -407,7 +406,7 @@ main (argc, argv)
|
|||
int help = 0; /* Has the user asked for help? This
|
||||
lets us support the `cvs -H cmd'
|
||||
convention to give help for cmd. */
|
||||
static const char short_options[] = "+Qqrwtnlvb:T:e:d:Hfz:s:xa";
|
||||
static const char short_options[] = "+Qqrwtnvb:T:e:d:Hfz:s:xa";
|
||||
static struct option long_options[] =
|
||||
{
|
||||
{"help", 0, NULL, 'H'},
|
||||
|
|
@ -537,7 +536,6 @@ main (argc, argv)
|
|||
break;
|
||||
case 'n':
|
||||
noexec = 1;
|
||||
case 'l': /* Fall through */
|
||||
logoff = 1;
|
||||
break;
|
||||
case 'v':
|
||||
|
|
@ -545,7 +543,7 @@ main (argc, argv)
|
|||
version (0, (char **) NULL);
|
||||
(void) fputs ("\n", stdout);
|
||||
(void) fputs ("\
|
||||
Copyright (c) 1989-2002 Brian Berliner, david d `zoo' zuhn, \n\
|
||||
Copyright (c) 1989-2004 Brian Berliner, david d `zoo' zuhn, \n\
|
||||
Jeff Polk, and other authors\n", stdout);
|
||||
(void) fputs ("\n", stdout);
|
||||
(void) fputs ("CVS may be copied only under the terms of the GNU General Public License,\n", stdout);
|
||||
|
|
@ -590,14 +588,19 @@ Copyright (c) 1989-2002 Brian Berliner, david d `zoo' zuhn, \n\
|
|||
break;
|
||||
case 'z':
|
||||
#ifdef CLIENT_SUPPORT
|
||||
gzip_level = atoi (optarg);
|
||||
if (gzip_level < 0 || gzip_level > 9)
|
||||
gzip_level = strtol (optarg, &end, 10);
|
||||
if (*end != '\0' || gzip_level < 0 || gzip_level > 9)
|
||||
error (1, 0,
|
||||
"gzip compression level must be between 0 and 9");
|
||||
#endif
|
||||
#endif /* CLIENT_SUPPORT */
|
||||
/* If no CLIENT_SUPPORT, we just silently ignore the gzip
|
||||
level, so that users can have it in their .cvsrc and not
|
||||
cause any trouble. */
|
||||
* level, so that users can have it in their .cvsrc and not
|
||||
* cause any trouble.
|
||||
*
|
||||
* We still parse the argument to -z for correctness since
|
||||
* one user complained of being bitten by a run of
|
||||
* `cvs -z -n up' which read -n as the argument to -z without
|
||||
* complaining. */
|
||||
break;
|
||||
case 's':
|
||||
variable_set (optarg);
|
||||
|
|
@ -634,24 +637,24 @@ Copyright (c) 1989-2002 Brian Berliner, david d `zoo' zuhn, \n\
|
|||
|
||||
/* Look up the command name. */
|
||||
|
||||
command_name = argv[0];
|
||||
cvs_cmd_name = argv[0];
|
||||
for (cm = cmds; cm->fullname; cm++)
|
||||
{
|
||||
if (cm->nick1 && !strcmp (command_name, cm->nick1))
|
||||
if (cm->nick1 && !strcmp (cvs_cmd_name, cm->nick1))
|
||||
break;
|
||||
if (cm->nick2 && !strcmp (command_name, cm->nick2))
|
||||
if (cm->nick2 && !strcmp (cvs_cmd_name, cm->nick2))
|
||||
break;
|
||||
if (!strcmp (command_name, cm->fullname))
|
||||
if (!strcmp (cvs_cmd_name, cm->fullname))
|
||||
break;
|
||||
}
|
||||
|
||||
if (!cm->fullname)
|
||||
{
|
||||
fprintf (stderr, "Unknown command: `%s'\n\n", command_name);
|
||||
fprintf (stderr, "Unknown command: `%s'\n\n", cvs_cmd_name);
|
||||
usage (cmd_usage);
|
||||
}
|
||||
else
|
||||
command_name = cm->fullname; /* Global pointer for later use */
|
||||
cvs_cmd_name = cm->fullname; /* Global pointer for later use */
|
||||
|
||||
if (help)
|
||||
{
|
||||
|
|
@ -685,18 +688,18 @@ Copyright (c) 1989-2002 Brian Berliner, david d `zoo' zuhn, \n\
|
|||
running as Kerberos server as root. Do the authentication as
|
||||
the very first thing, to minimize the amount of time we are
|
||||
running as root. */
|
||||
if (strcmp (command_name, "kserver") == 0)
|
||||
if (strcmp (cvs_cmd_name, "kserver") == 0)
|
||||
{
|
||||
kserver_authenticate_connection ();
|
||||
|
||||
/* Pretend we were invoked as a plain server. */
|
||||
command_name = "server";
|
||||
cvs_cmd_name = "server";
|
||||
}
|
||||
# endif /* HAVE_KERBEROS */
|
||||
|
||||
|
||||
# if defined (AUTH_SERVER_SUPPORT) || defined (HAVE_GSSAPI)
|
||||
if (strcmp (command_name, "pserver") == 0)
|
||||
if (strcmp (cvs_cmd_name, "pserver") == 0)
|
||||
{
|
||||
/* The reason that --allow-root is not a command option
|
||||
is mainly the comment in server() about how argc,argv
|
||||
|
|
@ -710,11 +713,11 @@ Copyright (c) 1989-2002 Brian Berliner, david d `zoo' zuhn, \n\
|
|||
pserver_authenticate_connection ();
|
||||
|
||||
/* Pretend we were invoked as a plain server. */
|
||||
command_name = "server";
|
||||
cvs_cmd_name = "server";
|
||||
}
|
||||
# endif /* AUTH_SERVER_SUPPORT || HAVE_GSSAPI */
|
||||
|
||||
server_active = strcmp (command_name, "server") == 0;
|
||||
server_active = strcmp (cvs_cmd_name, "server") == 0;
|
||||
|
||||
#endif /* SERVER_SUPPORT */
|
||||
|
||||
|
|
@ -781,7 +784,7 @@ Copyright (c) 1989-2002 Brian Berliner, david d `zoo' zuhn, \n\
|
|||
#endif /* KLUDGE_FOR_WNT_TESTSUITE */
|
||||
|
||||
if (use_cvsrc)
|
||||
read_cvsrc (&argc, &argv, command_name);
|
||||
read_cvsrc (&argc, &argv, cvs_cmd_name);
|
||||
|
||||
#ifdef SERVER_SUPPORT
|
||||
/* Fiddling with CVSROOT doesn't make sense if we're running
|
||||
|
|
@ -922,7 +925,7 @@ Copyright (c) 1989-2002 Brian Berliner, david d `zoo' zuhn, \n\
|
|||
{
|
||||
save_errno = errno;
|
||||
/* If this is "cvs init", the root need not exist yet. */
|
||||
if (strcmp (command_name, "init") != 0)
|
||||
if (strcmp (cvs_cmd_name, "init") != 0)
|
||||
{
|
||||
error (1, save_errno, "%s", path);
|
||||
}
|
||||
|
|
@ -1020,7 +1023,11 @@ Copyright (c) 1989-2002 Brian Berliner, david d `zoo' zuhn, \n\
|
|||
|
||||
Lock_Cleanup ();
|
||||
|
||||
free (program_path);
|
||||
/* It's okay to cast out the const below since we know we allocated this in
|
||||
* this function. The const was to keep other functions from messing with
|
||||
* this.
|
||||
*/
|
||||
free ((char *)program_path);
|
||||
if (CVSroot_cmdline != NULL)
|
||||
free (CVSroot_cmdline);
|
||||
if (free_CVSroot)
|
||||
|
|
@ -1154,7 +1161,7 @@ void
|
|||
usage (cpp)
|
||||
register const char *const *cpp;
|
||||
{
|
||||
(void) fprintf (stderr, *cpp++, program_name, command_name);
|
||||
(void) fprintf (stderr, *cpp++, program_name, cvs_cmd_name);
|
||||
for (; *cpp; cpp++)
|
||||
(void) fprintf (stderr, *cpp);
|
||||
error_exit ();
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue