This commit was generated by cvs2svn to compensate for changes in r128266,
which included commits to RCS files with non-trunk default branches.
This commit is contained in:
commit
edc4a449d1
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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));
|
||||
|
@ -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
|
||||
|
@ -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 (
|
||||
|
@ -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))
|
||||
|
@ -3,7 +3,8 @@
|
||||
* Copyright (c) 1989-1992, Brian Berliner
|
||||
*
|
||||
* 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.
|
||||
* as specified in the README file that comes with the CVS source
|
||||
* distribution.
|
||||
*
|
||||
* Modules
|
||||
*
|
||||
@ -30,7 +31,7 @@
|
||||
/* Options in modules file. Note that it is OK to use GNU getopt features;
|
||||
we already are arranging to make sure we are using the getopt distributed
|
||||
with CVS. */
|
||||
#define CVSMODULE_OPTS "+ad:i:lo:e:s:t:u:"
|
||||
#define CVSMODULE_OPTS "+ad:lo:e:s:t:"
|
||||
|
||||
/* Special delimiter. */
|
||||
#define CVSMODULE_SPEC '&'
|
||||
@ -91,14 +92,17 @@ close_module (db)
|
||||
dbm_close (db);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* This is the recursive function that processes a module name.
|
||||
* It calls back the passed routine for each directory of a module
|
||||
* It runs the post checkout or post tag proc from the modules file
|
||||
*/
|
||||
int
|
||||
do_module (db, mname, m_type, msg, callback_proc, where, shorten,
|
||||
local_specified, run_module_prog, build_dirs, extra_arg)
|
||||
static int
|
||||
my_module (db, mname, m_type, msg, callback_proc, where, shorten,
|
||||
local_specified, run_module_prog, build_dirs, extra_arg,
|
||||
stack)
|
||||
DBM *db;
|
||||
char *mname;
|
||||
enum mtype m_type;
|
||||
@ -110,12 +114,11 @@ do_module (db, mname, m_type, msg, callback_proc, where, shorten,
|
||||
int run_module_prog;
|
||||
int build_dirs;
|
||||
char *extra_arg;
|
||||
List *stack;
|
||||
{
|
||||
char *checkin_prog = NULL;
|
||||
char *checkout_prog = NULL;
|
||||
char *export_prog = NULL;
|
||||
char *tag_prog = NULL;
|
||||
char *update_prog = NULL;
|
||||
struct saved_cwd cwd;
|
||||
int cwd_saved = 0;
|
||||
char *line;
|
||||
@ -150,7 +153,7 @@ do_module (db, mname, m_type, msg, callback_proc, where, shorten,
|
||||
+ strlen (msg)
|
||||
+ (where ? strlen (where) : 0)
|
||||
+ (extra_arg ? strlen (extra_arg) : 0));
|
||||
sprintf (buf, "%s-> do_module (%s, %s, %s, %s)\n",
|
||||
sprintf (buf, "%s-> my_module (%s, %s, %s, %s)\n",
|
||||
CLIENT_SERVER_STR,
|
||||
mname, msg, where ? where : "",
|
||||
extra_arg ? extra_arg : "");
|
||||
@ -170,6 +173,13 @@ do_module (db, mname, m_type, msg, callback_proc, where, shorten,
|
||||
if (isabsolute (mname))
|
||||
error (1, 0, "Absolute module reference invalid: `%s'", mname);
|
||||
|
||||
/* Similarly for directories that attempt to step above the root of the
|
||||
* repository.
|
||||
*/
|
||||
if (pathname_levels (mname) > 0)
|
||||
error (1, 0, "up-level in module reference (`..') invalid: `%s'.",
|
||||
mname);
|
||||
|
||||
/* if this is a directory to ignore, add it to that list */
|
||||
if (mname[0] == '!' && mname[1] != '\0')
|
||||
{
|
||||
@ -238,7 +248,8 @@ do_module (db, mname, m_type, msg, callback_proc, where, shorten,
|
||||
*acp = '/';
|
||||
}
|
||||
else
|
||||
(void) sprintf (attic_file, "%s/%s/%s%s", current_parsed_root->directory,
|
||||
(void) sprintf (attic_file, "%s/%s/%s%s",
|
||||
current_parsed_root->directory,
|
||||
CVSATTIC, mname, RCSEXT);
|
||||
|
||||
if (isdir (file))
|
||||
@ -440,12 +451,6 @@ do_module (db, mname, m_type, msg, callback_proc, where, shorten,
|
||||
mwhere = xstrdup (optarg);
|
||||
nonalias_opt = 1;
|
||||
break;
|
||||
case 'i':
|
||||
if (checkin_prog)
|
||||
free (checkin_prog);
|
||||
checkin_prog = xstrdup (optarg);
|
||||
nonalias_opt = 1;
|
||||
break;
|
||||
case 'l':
|
||||
local_specified = 1;
|
||||
nonalias_opt = 1;
|
||||
@ -468,12 +473,6 @@ do_module (db, mname, m_type, msg, callback_proc, where, shorten,
|
||||
tag_prog = xstrdup (optarg);
|
||||
nonalias_opt = 1;
|
||||
break;
|
||||
case 'u':
|
||||
if (update_prog)
|
||||
free (update_prog);
|
||||
update_prog = xstrdup (optarg);
|
||||
nonalias_opt = 1;
|
||||
break;
|
||||
case '?':
|
||||
error (0, 0,
|
||||
"modules file has invalid option for key %s value %s",
|
||||
@ -510,14 +509,33 @@ do_module (db, mname, m_type, msg, callback_proc, where, shorten,
|
||||
|
||||
for (i = 0; i < modargc; i++)
|
||||
{
|
||||
if (strcmp (mname, modargv[i]) == 0)
|
||||
/*
|
||||
* Recursion check: if an alias module calls itself or a module
|
||||
* which causes the first to be called again, print an error
|
||||
* message and stop recursing.
|
||||
*
|
||||
* Algorithm:
|
||||
*
|
||||
* 1. Check that MNAME isn't in the stack.
|
||||
* 2. Push MNAME onto the stack.
|
||||
* 3. Call do_module().
|
||||
* 4. Pop MNAME from the stack.
|
||||
*/
|
||||
if (stack && findnode (stack, mname))
|
||||
error (0, 0,
|
||||
"module `%s' in modules file contains infinite loop",
|
||||
mname);
|
||||
else
|
||||
err += do_module (db, modargv[i], m_type, msg, callback_proc,
|
||||
where, shorten, local_specified,
|
||||
run_module_prog, build_dirs, extra_arg);
|
||||
{
|
||||
if (!stack) stack = getlist();
|
||||
push_string (stack, mname);
|
||||
err += my_module (db, modargv[i], m_type, msg, callback_proc,
|
||||
where, shorten, local_specified,
|
||||
run_module_prog, build_dirs, extra_arg,
|
||||
stack);
|
||||
pop_string (stack);
|
||||
if (isempty (stack)) dellist (&stack);
|
||||
}
|
||||
}
|
||||
goto do_module_return;
|
||||
}
|
||||
@ -552,7 +570,7 @@ module `%s' is a request for a file in a module which is not a directory",
|
||||
/* XXX - think about making null repositories at each dir here
|
||||
instead of just at the bottom */
|
||||
make_directories (dir);
|
||||
if ( CVS_CHDIR (dir) < 0)
|
||||
if (CVS_CHDIR (dir) < 0)
|
||||
{
|
||||
error (0, errno, "cannot chdir to %s", dir);
|
||||
spec_opt = NULL;
|
||||
@ -654,9 +672,10 @@ module `%s' is a request for a file in a module which is not a directory",
|
||||
error (0, 0, "Mal-formed %c option for module %s - ignored",
|
||||
CVSMODULE_SPEC, mname);
|
||||
else
|
||||
err += do_module (db, spec_opt, m_type, msg, callback_proc,
|
||||
(char *) NULL, 0, local_specified,
|
||||
run_module_prog, build_dirs, extra_arg);
|
||||
err += my_module (db, spec_opt, m_type, msg, callback_proc,
|
||||
(char *) NULL, 0, local_specified,
|
||||
run_module_prog, build_dirs, extra_arg,
|
||||
stack);
|
||||
spec_opt = next_opt;
|
||||
}
|
||||
|
||||
@ -668,40 +687,6 @@ module `%s' is a request for a file in a module which is not a directory",
|
||||
}
|
||||
#endif
|
||||
|
||||
/* run/write out the checkin/update prog files if necessary */
|
||||
if (err == 0 && !noexec && m_type == CHECKOUT && run_module_prog)
|
||||
{
|
||||
#ifdef SERVER_SUPPORT
|
||||
if (server_active) {
|
||||
if (checkin_prog != NULL)
|
||||
server_prog (where ? where : mwhere ? mwhere : mname, checkin_prog, PROG_CHECKIN);
|
||||
if (update_prog != NULL)
|
||||
server_prog (where ? where : mwhere ? mwhere : mname, update_prog, PROG_UPDATE);
|
||||
}
|
||||
else
|
||||
{
|
||||
#endif
|
||||
FILE *fp;
|
||||
|
||||
if (checkin_prog != NULL)
|
||||
{
|
||||
fp = open_file (CVSADM_CIPROG, "w+");
|
||||
(void) fprintf (fp, "%s\n", checkin_prog);
|
||||
if (fclose (fp) == EOF)
|
||||
error (1, errno, "cannot close %s", CVSADM_CIPROG);
|
||||
}
|
||||
if (update_prog != NULL)
|
||||
{
|
||||
fp = open_file (CVSADM_UPROG, "w+");
|
||||
(void) fprintf (fp, "%s\n", update_prog);
|
||||
if (fclose (fp) == EOF)
|
||||
error (1, errno, "cannot close %s", CVSADM_UPROG);
|
||||
}
|
||||
#ifdef SERVER_SUPPORT
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* cd back to where we started */
|
||||
if (restore_cwd (&cwd, NULL))
|
||||
error_exit ();
|
||||
@ -750,7 +735,7 @@ module `%s' is a request for a file in a module which is not a directory",
|
||||
{
|
||||
cvs_output (program_name, 0);
|
||||
cvs_output (" ", 1);
|
||||
cvs_output (command_name, 0);
|
||||
cvs_output (cvs_cmd_name, 0);
|
||||
cvs_output (": Executing '", 0);
|
||||
run_print (stdout);
|
||||
cvs_output ("'\n", 0);
|
||||
@ -769,16 +754,12 @@ module `%s' is a request for a file in a module which is not a directory",
|
||||
free_names (&xmodargc, xmodargv);
|
||||
if (mwhere)
|
||||
free (mwhere);
|
||||
if (checkin_prog)
|
||||
free (checkin_prog);
|
||||
if (checkout_prog)
|
||||
free (checkout_prog);
|
||||
if (export_prog)
|
||||
free (export_prog);
|
||||
if (tag_prog)
|
||||
free (tag_prog);
|
||||
if (update_prog)
|
||||
free (update_prog);
|
||||
if (cwd_saved)
|
||||
free_cwd (&cwd);
|
||||
if (value != NULL)
|
||||
@ -789,6 +770,33 @@ module `%s' is a request for a file in a module which is not a directory",
|
||||
return (err);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* External face of do_module so that we can have an internal version which
|
||||
* accepts a stack argument to track alias recursion.
|
||||
*/
|
||||
int
|
||||
do_module (db, mname, m_type, msg, callback_proc, where, shorten,
|
||||
local_specified, run_module_prog, build_dirs, extra_arg)
|
||||
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;
|
||||
{
|
||||
return my_module (db, mname, m_type, msg, callback_proc, where, shorten,
|
||||
local_specified, run_module_prog, build_dirs, extra_arg,
|
||||
NULL);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* - Read all the records from the modules database into an array.
|
||||
- Sort the array depending on what format is desired.
|
||||
- Print the array in the format desired.
|
||||
@ -799,7 +807,7 @@ module `%s' is a request for a file in a module which is not a directory",
|
||||
files and the comment field: (Including aliases)
|
||||
|
||||
modulename -s switches, one per line, even if
|
||||
-i it has many switches.
|
||||
it has many switches.
|
||||
Directories and files involved, formatted
|
||||
to cover multiple lines if necessary.
|
||||
# Comment, also formatted to cover multiple
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
#ifdef MY_NDBM
|
||||
# ifndef O_ACCMODE
|
||||
# define O_ACCMODE O_RDONLY|O_WRONLY|O_RDWR
|
||||
# define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR)
|
||||
# endif /* defined O_ACCMODE */
|
||||
|
||||
static void mydbm_load_file PROTO ((FILE *, List *, char *));
|
||||
@ -181,12 +181,12 @@ mydbm_store (db, key, value, flags)
|
||||
node->type = NDBMNODE;
|
||||
|
||||
node->key = xmalloc (key.dsize + 1);
|
||||
strncpy (node->key, key.dptr, key.dsize);
|
||||
node->key[key.dsize] = '\0';
|
||||
*node->key = '\0';
|
||||
strncat (node->key, key.dptr, key.dsize);
|
||||
|
||||
node->data = xmalloc (value.dsize + 1);
|
||||
strncpy (node->data, value.dptr, value.dsize);
|
||||
node->data[value.dsize] = '\0';
|
||||
*(char *)node->data = '\0';
|
||||
strncat (node->data, value.dptr, value.dsize);
|
||||
|
||||
db->modified = 1;
|
||||
if (addnode (db->dbm_list, node) == -1)
|
||||
|
@ -8,7 +8,7 @@
|
||||
* No Difference
|
||||
*
|
||||
* The user file looks modified judging from its time stamp; however it needn't
|
||||
* be. No_difference() finds out whether it is or not. If it is not, it
|
||||
* be. No_Difference() finds out whether it is or not. If it is not, it
|
||||
* updates the administration.
|
||||
*
|
||||
* returns 0 if no differences are found and non-zero otherwise
|
||||
@ -49,8 +49,9 @@ No_Difference (finfo, vers)
|
||||
options = xstrdup ("");
|
||||
|
||||
tocvsPath = wrap_tocvs_process_file (finfo->file);
|
||||
retcode = RCS_cmp_file (vers->srcfile, vers->vn_user, options,
|
||||
tocvsPath == NULL ? finfo->file : tocvsPath);
|
||||
retcode = RCS_cmp_file( vers->srcfile, vers->vn_user, (char **)NULL,
|
||||
(char *)NULL, options,
|
||||
tocvsPath == NULL ? finfo->file : tocvsPath );
|
||||
if (retcode == 0)
|
||||
{
|
||||
/* no difference was found, so fix the entries file */
|
||||
@ -70,7 +71,7 @@ No_Difference (finfo, vers)
|
||||
|
||||
/* update the entdata pointer in the vers_ts structure */
|
||||
p = findnode (finfo->entries, finfo->file);
|
||||
vers->entdata = (Entnode *) p->data;
|
||||
vers->entdata = p->data;
|
||||
|
||||
ret = 0;
|
||||
}
|
||||
|
@ -17,8 +17,8 @@
|
||||
#include "getline.h"
|
||||
|
||||
static RETSIGTYPE patch_cleanup PROTO((void));
|
||||
static Dtype patch_dirproc PROTO ((void *callerdat, char *dir,
|
||||
char *repos, char *update_dir,
|
||||
static Dtype patch_dirproc PROTO ((void *callerdat, const char *dir,
|
||||
const char *repos, const char *update_dir,
|
||||
List *entries));
|
||||
static int patch_fileproc PROTO ((void *callerdat, struct file_info *finfo));
|
||||
static int patch_proc PROTO((int argc, char **argv, char *xwhere,
|
||||
@ -58,6 +58,8 @@ static const char *const patch_usage[] =
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
|
||||
int
|
||||
patch (argc, argv)
|
||||
int argc;
|
||||
@ -86,7 +88,7 @@ patch (argc, argv)
|
||||
#endif
|
||||
error (1, 0,
|
||||
"-q or -Q must be specified before \"%s\"",
|
||||
command_name);
|
||||
cvs_cmd_name);
|
||||
break;
|
||||
case 'f':
|
||||
force_tag_match = 0;
|
||||
@ -232,34 +234,36 @@ patch (argc, argv)
|
||||
|
||||
/* clean up if we get a signal */
|
||||
#ifdef SIGABRT
|
||||
(void) SIG_register (SIGABRT, patch_cleanup);
|
||||
(void)SIG_register (SIGABRT, patch_cleanup);
|
||||
#endif
|
||||
#ifdef SIGHUP
|
||||
(void) SIG_register (SIGHUP, patch_cleanup);
|
||||
(void)SIG_register (SIGHUP, patch_cleanup);
|
||||
#endif
|
||||
#ifdef SIGINT
|
||||
(void) SIG_register (SIGINT, patch_cleanup);
|
||||
(void)SIG_register (SIGINT, patch_cleanup);
|
||||
#endif
|
||||
#ifdef SIGQUIT
|
||||
(void) SIG_register (SIGQUIT, patch_cleanup);
|
||||
(void)SIG_register (SIGQUIT, patch_cleanup);
|
||||
#endif
|
||||
#ifdef SIGPIPE
|
||||
(void) SIG_register (SIGPIPE, patch_cleanup);
|
||||
(void)SIG_register (SIGPIPE, patch_cleanup);
|
||||
#endif
|
||||
#ifdef SIGTERM
|
||||
(void) SIG_register (SIGTERM, patch_cleanup);
|
||||
(void)SIG_register (SIGTERM, patch_cleanup);
|
||||
#endif
|
||||
|
||||
db = open_module ();
|
||||
for (i = 0; i < argc; i++)
|
||||
err += do_module (db, argv[i], PATCH, "Patching", patch_proc,
|
||||
(char *) NULL, 0, 0, 0, 0, (char *) NULL);
|
||||
(char *)NULL, 0, local, 0, 0, (char *)NULL);
|
||||
close_module (db);
|
||||
free (options);
|
||||
patch_cleanup ();
|
||||
return (err);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* callback proc for doing the real work of patching
|
||||
*/
|
||||
@ -283,12 +287,14 @@ patch_proc (argc, argv, xwhere, mwhere, mfile, shorten, local_specified,
|
||||
char *repository;
|
||||
char *where;
|
||||
|
||||
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]);
|
||||
(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]);
|
||||
(void)strcpy (where, argv[0]);
|
||||
|
||||
/* if mfile isn't null, we need to set up to do only part of the module */
|
||||
if (mfile != NULL)
|
||||
@ -300,22 +306,22 @@ patch_proc (argc, argv, xwhere, mwhere, mfile, shorten, local_specified,
|
||||
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) + 2);
|
||||
(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
|
||||
{
|
||||
@ -332,9 +338,8 @@ patch_proc (argc, argv, xwhere, mwhere, mfile, shorten, local_specified,
|
||||
{
|
||||
error (0, errno, "cannot chdir to %s", repository);
|
||||
free (repository);
|
||||
return (1);
|
||||
return 1;
|
||||
}
|
||||
free (repository);
|
||||
|
||||
if (force_tag_match)
|
||||
which = W_REPOS | W_ATTIC;
|
||||
@ -343,25 +348,30 @@ patch_proc (argc, argv, xwhere, mwhere, mfile, shorten, local_specified,
|
||||
|
||||
if (rev1 != NULL && !rev1_validated)
|
||||
{
|
||||
tag_check_valid (rev1, argc - 1, argv + 1, local_specified, 0, NULL);
|
||||
tag_check_valid (rev1, argc - 1, argv + 1, local_specified, 0,
|
||||
repository);
|
||||
rev1_validated = 1;
|
||||
}
|
||||
if (rev2 != NULL && !rev2_validated)
|
||||
{
|
||||
tag_check_valid (rev2, argc - 1, argv + 1, local_specified, 0, NULL);
|
||||
tag_check_valid (rev2, argc - 1, argv + 1, local_specified, 0,
|
||||
repository);
|
||||
rev2_validated = 1;
|
||||
}
|
||||
|
||||
/* start the recursion processor */
|
||||
err = start_recursion (patch_fileproc, (FILESDONEPROC) NULL, patch_dirproc,
|
||||
(DIRLEAVEPROC) NULL, NULL,
|
||||
err = start_recursion (patch_fileproc, (FILESDONEPROC)NULL, patch_dirproc,
|
||||
(DIRLEAVEPROC)NULL, NULL,
|
||||
argc - 1, argv + 1, local_specified,
|
||||
which, 0, CVS_LOCK_READ, where, 1);
|
||||
which, 0, CVS_LOCK_READ, where, 1, repository);
|
||||
free (repository);
|
||||
free (where);
|
||||
|
||||
return (err);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Called to examine a particular RCS file, as appropriate with the options
|
||||
* that were set above.
|
||||
@ -394,6 +404,7 @@ patch_fileproc (callerdat, finfo)
|
||||
line1_chars_allocated = 0;
|
||||
line2 = NULL;
|
||||
line2_chars_allocated = 0;
|
||||
vers_tag = vers_head = NULL;
|
||||
|
||||
/* find the parsed rcs file */
|
||||
if ((rcsfile = finfo->rcs) == NULL)
|
||||
@ -449,53 +460,38 @@ patch_fileproc (callerdat, finfo)
|
||||
vers_tag = NULL;
|
||||
}
|
||||
|
||||
if (vers_tag == NULL && vers_head == NULL)
|
||||
if ((vers_tag == NULL && vers_head == NULL) ||
|
||||
(vers_tag != NULL && vers_head != NULL &&
|
||||
strcmp (vers_head, vers_tag) == 0))
|
||||
{
|
||||
/* Nothing known about specified revs. */
|
||||
/* Nothing known about specified revs or
|
||||
* not changed between releases.
|
||||
*/
|
||||
ret = 0;
|
||||
goto out2;
|
||||
}
|
||||
|
||||
if (vers_tag && vers_head && strcmp (vers_head, vers_tag) == 0)
|
||||
{
|
||||
/* Not changed between releases. */
|
||||
ret = 0;
|
||||
goto out2;
|
||||
}
|
||||
|
||||
if (patch_short)
|
||||
if( patch_short && ( vers_tag == NULL || vers_head == NULL ) )
|
||||
{
|
||||
/* For adds & removes with a short patch requested, we can print our
|
||||
* error message now and get out.
|
||||
*/
|
||||
cvs_output ("File ", 0);
|
||||
cvs_output (finfo->fullname, 0);
|
||||
if (vers_tag == NULL)
|
||||
{
|
||||
cvs_output (" is new; current revision ", 0);
|
||||
cvs_output( " is new; ", 0 );
|
||||
cvs_output( rev2 ? rev2 : date2 ? date2 : "current", 0 );
|
||||
cvs_output( " revision ", 0 );
|
||||
cvs_output (vers_head, 0);
|
||||
cvs_output ("\n", 1);
|
||||
}
|
||||
else if (vers_head == NULL)
|
||||
{
|
||||
cvs_output (" is removed; not included in ", 0);
|
||||
if (rev2 != NULL)
|
||||
{
|
||||
cvs_output ("release tag ", 0);
|
||||
cvs_output (rev2, 0);
|
||||
}
|
||||
else if (date2 != NULL)
|
||||
{
|
||||
cvs_output ("release date ", 0);
|
||||
cvs_output (date2, 0);
|
||||
}
|
||||
else
|
||||
cvs_output ("current release", 0);
|
||||
cvs_output ("\n", 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
cvs_output (" changed from revision ", 0);
|
||||
cvs_output (vers_tag, 0);
|
||||
cvs_output (" to ", 0);
|
||||
cvs_output (vers_head, 0);
|
||||
cvs_output( " is removed; ", 0 );
|
||||
cvs_output( rev1 ? rev1 : date1, 0 );
|
||||
cvs_output( " revision ", 0 );
|
||||
cvs_output( vers_tag, 0 );
|
||||
cvs_output ("\n", 1);
|
||||
}
|
||||
ret = 0;
|
||||
@ -541,9 +537,9 @@ patch_fileproc (callerdat, finfo)
|
||||
|
||||
if (vers_tag != NULL)
|
||||
{
|
||||
retcode = RCS_checkout (rcsfile, (char *) NULL, vers_tag,
|
||||
retcode = RCS_checkout (rcsfile, (char *)NULL, vers_tag,
|
||||
rev1, options, tmpfile1,
|
||||
(RCSCHECKOUTPROC) NULL, (void *) NULL);
|
||||
(RCSCHECKOUTPROC)NULL, (void *)NULL);
|
||||
if (retcode != 0)
|
||||
{
|
||||
error (0, 0,
|
||||
@ -565,9 +561,9 @@ patch_fileproc (callerdat, finfo)
|
||||
}
|
||||
if (vers_head != NULL)
|
||||
{
|
||||
retcode = RCS_checkout (rcsfile, (char *) NULL, vers_head,
|
||||
retcode = RCS_checkout (rcsfile, (char *)NULL, vers_head,
|
||||
rev2, options, tmpfile2,
|
||||
(RCSCHECKOUTPROC) NULL, (void *) NULL);
|
||||
(RCSCHECKOUTPROC)NULL, (void *)NULL);
|
||||
if (retcode != 0)
|
||||
{
|
||||
error (0, 0,
|
||||
@ -576,13 +572,14 @@ patch_fileproc (callerdat, finfo)
|
||||
goto out;
|
||||
}
|
||||
if ((t.actime = t.modtime = RCS_getrevtime (rcsfile, vers_head,
|
||||
(char *) 0, 0)) != -1)
|
||||
(char *)0, 0)) != -1)
|
||||
/* I believe this timestamp only affects the dates in our diffs,
|
||||
and therefore should be on the server, not the client. */
|
||||
(void) utime (tmpfile2, &t);
|
||||
(void)utime (tmpfile2, &t);
|
||||
}
|
||||
|
||||
switch (diff_exec (tmpfile1, tmpfile2, NULL, NULL, unidiff ? "-u" : "-c", tmpfile3))
|
||||
switch (diff_exec (tmpfile1, tmpfile2, NULL, NULL, unidiff ? "-u" : "-c",
|
||||
tmpfile3))
|
||||
{
|
||||
case -1: /* fork/wait failure */
|
||||
error (1, errno, "fork for diff failed on %s", rcs);
|
||||
@ -593,14 +590,29 @@ patch_fileproc (callerdat, finfo)
|
||||
/*
|
||||
* The two revisions are really different, so read the first two
|
||||
* lines of the diff output file, and munge them to include more
|
||||
* reasonable file names that "patch" will understand.
|
||||
* reasonable file names that "patch" will understand, unless the
|
||||
* user wanted a short patch. In that case, just output the short
|
||||
* message.
|
||||
*/
|
||||
if( patch_short )
|
||||
{
|
||||
cvs_output ("File ", 0);
|
||||
cvs_output (finfo->fullname, 0);
|
||||
cvs_output (" changed from revision ", 0);
|
||||
cvs_output (vers_tag, 0);
|
||||
cvs_output (" to ", 0);
|
||||
cvs_output (vers_head, 0);
|
||||
cvs_output ("\n", 1);
|
||||
ret = 0;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Output an "Index:" line for patch to use */
|
||||
cvs_output ("Index: ", 0);
|
||||
cvs_output (finfo->fullname, 0);
|
||||
cvs_output ("\n", 1);
|
||||
|
||||
/* Now the munging. */
|
||||
fp = open_file (tmpfile3, "r");
|
||||
if (getline (&line1, &line1_chars_allocated, fp) < 0 ||
|
||||
getline (&line2, &line2_chars_allocated, fp) < 0)
|
||||
@ -648,8 +660,10 @@ failed to read diff file header %s for %s: end of file", tmpfile3, rcs);
|
||||
assert (current_parsed_root != NULL);
|
||||
assert (current_parsed_root->directory != NULL);
|
||||
{
|
||||
strippath = xmalloc (strlen (current_parsed_root->directory) + 2);
|
||||
(void) sprintf (strippath, "%s/", current_parsed_root->directory);
|
||||
strippath = xmalloc (strlen (current_parsed_root->directory)
|
||||
+ 2);
|
||||
(void)sprintf (strippath, "%s/",
|
||||
current_parsed_root->directory);
|
||||
}
|
||||
/*else
|
||||
strippath = xstrdup (REPOS_STRIP); */
|
||||
@ -661,7 +675,7 @@ failed to read diff file header %s for %s: end of file", tmpfile3, rcs);
|
||||
file1 = xmalloc (strlen (finfo->fullname)
|
||||
+ strlen (vers_tag)
|
||||
+ 10);
|
||||
(void) sprintf (file1, "%s:%s", finfo->fullname, vers_tag);
|
||||
(void)sprintf (file1, "%s:%s", finfo->fullname, vers_tag);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -670,8 +684,8 @@ failed to read diff file header %s for %s: end of file", tmpfile3, rcs);
|
||||
file2 = xmalloc (strlen (finfo->fullname)
|
||||
+ (vers_head != NULL ? strlen (vers_head) : 10)
|
||||
+ 10);
|
||||
(void) sprintf (file2, "%s:%s", finfo->fullname,
|
||||
vers_head ? vers_head : "removed");
|
||||
(void)sprintf (file2, "%s:%s", finfo->fullname,
|
||||
vers_head ? vers_head : "removed");
|
||||
|
||||
/* Note that the string "diff" is specified by POSIX (for -c)
|
||||
and is part of the diff output format, not the name of a
|
||||
@ -745,9 +759,11 @@ failed to read diff file header %s for %s: end of file", tmpfile3, rcs);
|
||||
free (vers_head);
|
||||
if (rcs != NULL)
|
||||
free (rcs);
|
||||
return (ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Print a warm fuzzy message
|
||||
*/
|
||||
@ -755,9 +771,9 @@ failed to read diff file header %s for %s: end of file", tmpfile3, rcs);
|
||||
static Dtype
|
||||
patch_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)
|
||||
|
@ -94,7 +94,7 @@ release (argc, argv)
|
||||
case 'q':
|
||||
error (1, 0,
|
||||
"-q or -Q must be specified before \"%s\"",
|
||||
command_name);
|
||||
cvs_cmd_name);
|
||||
break;
|
||||
case 'd':
|
||||
delete_flag++;
|
||||
@ -116,12 +116,17 @@ release (argc, argv)
|
||||
* up to the user to take note of them, at least currently
|
||||
* (ignore-193 in testsuite)).
|
||||
*/
|
||||
/* Construct the update command. */
|
||||
/* Construct the update command. Be sure to add authentication and
|
||||
encryption if we are using them currently, else our child process may
|
||||
not be able to communicate with the server. */
|
||||
update_cmd = xmalloc (strlen (program_path)
|
||||
+ strlen (current_parsed_root->original)
|
||||
+ 20);
|
||||
sprintf (update_cmd, "%s -n -q -d %s update",
|
||||
program_path, current_parsed_root->original);
|
||||
+ strlen (current_parsed_root->original)
|
||||
+ 1 + 3 + 3 + 16 + 1);
|
||||
sprintf (update_cmd, "%s %s%s-n -q -d %s update",
|
||||
program_path,
|
||||
cvsauthenticate ? "-a " : "",
|
||||
cvsencrypt ? "-x " : "",
|
||||
current_parsed_root->original);
|
||||
|
||||
#ifdef CLIENT_SUPPORT
|
||||
/* Start the server; we'll close it after looping. */
|
||||
@ -216,7 +221,7 @@ release (argc, argv)
|
||||
if (c) /* "No" */
|
||||
{
|
||||
(void) fprintf (stderr, "** `%s' aborted by user choice.\n",
|
||||
command_name);
|
||||
cvs_cmd_name);
|
||||
free (repository);
|
||||
if (restore_cwd (&cwd, NULL))
|
||||
error_exit ();
|
||||
@ -224,6 +229,17 @@ release (argc, argv)
|
||||
}
|
||||
}
|
||||
|
||||
/* Note: client.c doesn't like to have other code
|
||||
changing the current directory on it. So a fair amount
|
||||
of effort is needed to make sure it doesn't get confused
|
||||
about the directory and (for example) overwrite
|
||||
CVS/Entries file in the wrong directory. See release-17
|
||||
through release-23. */
|
||||
|
||||
free (repository);
|
||||
if (restore_cwd (&cwd, NULL))
|
||||
exit (EXIT_FAILURE);
|
||||
|
||||
if (1
|
||||
#ifdef CLIENT_SUPPORT
|
||||
&& !(current_parsed_root->isremote
|
||||
@ -232,13 +248,14 @@ release (argc, argv)
|
||||
#endif
|
||||
)
|
||||
{
|
||||
/* We are chdir'ed into the directory in question.
|
||||
So don't pass args to unedit. */
|
||||
int argc = 1;
|
||||
int argc = 2;
|
||||
char *argv[3];
|
||||
argv[0] = "dummy";
|
||||
argv[1] = NULL;
|
||||
argv[1] = thisarg;
|
||||
argv[2] = NULL;
|
||||
err += unedit (argc, argv);
|
||||
if (restore_cwd (&cwd, NULL))
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
#ifdef CLIENT_SUPPORT
|
||||
@ -255,11 +272,6 @@ release (argc, argv)
|
||||
history_write ('F', thisarg, "", thisarg, ""); /* F == Free */
|
||||
}
|
||||
|
||||
free (repository);
|
||||
|
||||
if (restore_cwd (&cwd, NULL))
|
||||
error_exit ();
|
||||
|
||||
if (delete_flag)
|
||||
{
|
||||
/* FIXME? Shouldn't this just delete the CVS-controlled
|
||||
@ -272,7 +284,17 @@ release (argc, argv)
|
||||
|
||||
#ifdef CLIENT_SUPPORT
|
||||
if (current_parsed_root->isremote)
|
||||
err += get_server_responses ();
|
||||
{
|
||||
/* FIXME:
|
||||
* Is there a good reason why get_server_responses() isn't
|
||||
* responsible for restoring its initial directory itself when
|
||||
* finished?
|
||||
*/
|
||||
err += get_server_responses ();
|
||||
|
||||
if (restore_cwd (&cwd, NULL))
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
#endif /* CLIENT_SUPPORT */
|
||||
}
|
||||
|
||||
|
@ -22,8 +22,8 @@ static int remove_force_fileproc PROTO ((void *callerdat,
|
||||
struct file_info *finfo));
|
||||
#endif
|
||||
static int remove_fileproc PROTO ((void *callerdat, struct file_info *finfo));
|
||||
static Dtype remove_dirproc PROTO ((void *callerdat, char *dir,
|
||||
char *repos, char *update_dir,
|
||||
static Dtype remove_dirproc PROTO ((void *callerdat, const char *dir,
|
||||
const char *repos, const char *update_dir,
|
||||
List *entries));
|
||||
|
||||
static int force;
|
||||
@ -90,7 +90,8 @@ cvsremove (argc, argv)
|
||||
start_recursion (remove_force_fileproc, (FILESDONEPROC) NULL,
|
||||
(DIRENTPROC) NULL, (DIRLEAVEPROC) NULL,
|
||||
(void *) NULL, argc, argv, local, W_LOCAL,
|
||||
0, CVS_LOCK_NONE, (char *) NULL, 0);
|
||||
0, CVS_LOCK_NONE, (char *) NULL, 0,
|
||||
(char *) NULL);
|
||||
}
|
||||
/* else FIXME should probably act as if the file doesn't exist
|
||||
in doing the following checks. */
|
||||
@ -114,7 +115,8 @@ cvsremove (argc, argv)
|
||||
err = start_recursion (remove_fileproc, (FILESDONEPROC) NULL,
|
||||
remove_dirproc, (DIRLEAVEPROC) NULL, NULL,
|
||||
argc, argv,
|
||||
local, W_LOCAL, 0, CVS_LOCK_READ, (char *) NULL, 1);
|
||||
local, W_LOCAL, 0, CVS_LOCK_READ, (char *) NULL, 1,
|
||||
(char *) NULL);
|
||||
|
||||
if (removed_files && !really_quiet)
|
||||
error (0, 0, "use '%s commit' to remove %s permanently", program_name,
|
||||
@ -276,9 +278,9 @@ cannot remove file `%s' which has a sticky date of `%s'",
|
||||
static Dtype
|
||||
remove_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)
|
||||
|
@ -21,11 +21,11 @@
|
||||
|
||||
char *
|
||||
Name_Repository (dir, update_dir)
|
||||
char *dir;
|
||||
char *update_dir;
|
||||
const char *dir;
|
||||
const char *update_dir;
|
||||
{
|
||||
FILE *fpin;
|
||||
char *xupdate_dir;
|
||||
const char *xupdate_dir;
|
||||
char *repos = NULL;
|
||||
size_t repos_allocated = 0;
|
||||
char *tmp;
|
||||
@ -123,8 +123,9 @@ Name_Repository (dir, update_dir)
|
||||
error (0, 0, "`..'-relative repositories are not supported.");
|
||||
error (1, 0, "illegal source repository");
|
||||
}
|
||||
newrepos = xmalloc (strlen (current_parsed_root->directory) + strlen (repos) + 2);
|
||||
(void) sprintf (newrepos, "%s/%s", current_parsed_root->directory, repos);
|
||||
newrepos = xmalloc (strlen (current_parsed_root->directory)
|
||||
+ strlen (repos) + 2);
|
||||
sprintf (newrepos, "%s/%s", current_parsed_root->directory, repos);
|
||||
free (repos);
|
||||
repos = newrepos;
|
||||
}
|
||||
@ -134,29 +135,33 @@ Name_Repository (dir, update_dir)
|
||||
return repos;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Return a pointer to the repository name relative to CVSROOT from a
|
||||
* possibly fully qualified repository
|
||||
*/
|
||||
char *
|
||||
const char *
|
||||
Short_Repository (repository)
|
||||
char *repository;
|
||||
const char *repository;
|
||||
{
|
||||
if (repository == NULL)
|
||||
return (NULL);
|
||||
return NULL;
|
||||
|
||||
/* If repository matches CVSroot at the beginning, strip off CVSroot */
|
||||
/* And skip leading '/' in rep, in case CVSroot ended with '/'. */
|
||||
if (strncmp (current_parsed_root->directory, repository,
|
||||
strlen (current_parsed_root->directory)) == 0)
|
||||
{
|
||||
char *rep = repository + strlen (current_parsed_root->directory);
|
||||
const char *rep = repository + strlen (current_parsed_root->directory);
|
||||
return (*rep == '/') ? rep+1 : rep;
|
||||
}
|
||||
else
|
||||
return (repository);
|
||||
return repository;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Sanitize the repository name (in place) by removing trailing
|
||||
* slashes and a trailing "." if present. It should be safe for
|
||||
* callers to use strcat and friends to create repository names.
|
||||
@ -179,12 +184,7 @@ Short_Repository (repository)
|
||||
* back further someday, so that the trailing "/." doesn't get into
|
||||
* repository in the first place, but we haven't taken things that
|
||||
* far yet.'' --Jim Kingdon (recurse.c, 07-Sep-97)
|
||||
*
|
||||
* Ahh, all too true. The major consideration is RELATIVE_REPOS. If
|
||||
* the "/." doesn't end up in the repository while RELATIVE_REPOS is
|
||||
* defined, there will be nothing in the CVS/Repository file. I
|
||||
* haven't verified that the remote protocol will handle that
|
||||
* correctly yet, so I've not made that change. */
|
||||
*/
|
||||
|
||||
void
|
||||
Sanitize_Repository_Name (repository)
|
||||
|
@ -16,8 +16,9 @@
|
||||
/* Printable names for things in the current_parsed_root->method enum variable.
|
||||
Watch out if the enum is changed in cvs.h! */
|
||||
|
||||
char *method_names[] = {
|
||||
"undefined", "local", "server (rsh)", "pserver", "kserver", "gserver", "ext", "fork"
|
||||
const char method_names[][16] = {
|
||||
"undefined", "local", "server (rsh)", "pserver",
|
||||
"kserver", "gserver", "ext", "fork"
|
||||
};
|
||||
|
||||
#ifndef DEBUG
|
||||
@ -34,6 +35,7 @@ Name_Root (dir, update_dir)
|
||||
char *tmp;
|
||||
char *cvsadm;
|
||||
char *cp;
|
||||
int len;
|
||||
|
||||
if (update_dir && *update_dir)
|
||||
xupdate_dir = update_dir;
|
||||
@ -73,18 +75,20 @@ Name_Root (dir, update_dir)
|
||||
*/
|
||||
fpin = open_file (tmp, "r");
|
||||
|
||||
if (getline (&root, &root_allocated, fpin) < 0)
|
||||
if ((len = getline (&root, &root_allocated, fpin)) < 0)
|
||||
{
|
||||
int saved_errno = errno;
|
||||
/* FIXME: should be checking for end of file separately; errno
|
||||
is not set in that case. */
|
||||
error (0, 0, "in directory %s:", xupdate_dir);
|
||||
error (0, errno, "cannot read %s", CVSADM_ROOT);
|
||||
error (0, saved_errno, "cannot read %s", CVSADM_ROOT);
|
||||
error (0, 0, "please correct this problem");
|
||||
ret = NULL;
|
||||
goto out;
|
||||
}
|
||||
(void) fclose (fpin);
|
||||
if ((cp = strrchr (root, '\n')) != NULL)
|
||||
fclose (fpin);
|
||||
cp = root + (len - 1);
|
||||
if (*cp == '\n')
|
||||
*cp = '\0'; /* strip the newline */
|
||||
|
||||
/*
|
||||
@ -131,6 +135,8 @@ Name_Root (dir, update_dir)
|
||||
return (ret);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Write the CVS/Root file so that the environment variable CVSROOT
|
||||
* and/or the -d option to cvs will be validated or not necessary for
|
||||
@ -138,8 +144,8 @@ Name_Root (dir, update_dir)
|
||||
*/
|
||||
void
|
||||
Create_Root (dir, rootdir)
|
||||
char *dir;
|
||||
char *rootdir;
|
||||
const char *dir;
|
||||
const char *rootdir;
|
||||
{
|
||||
FILE *fout;
|
||||
char *tmp;
|
||||
@ -287,12 +293,14 @@ new_cvsroot_t ()
|
||||
|
||||
newroot->original = NULL;
|
||||
newroot->method = null_method;
|
||||
#ifdef CLIENT_SUPPORT
|
||||
newroot->username = NULL;
|
||||
newroot->password = NULL;
|
||||
newroot->hostname = NULL;
|
||||
newroot->port = 0;
|
||||
newroot->directory = NULL;
|
||||
#ifdef CLIENT_SUPPORT
|
||||
newroot->proxy_hostname = NULL;
|
||||
newroot->proxy_port = 0;
|
||||
newroot->isremote = 0;
|
||||
#endif /* CLIENT_SUPPORT */
|
||||
|
||||
@ -308,6 +316,9 @@ free_cvsroot_t (root)
|
||||
{
|
||||
if (root->original != NULL)
|
||||
free (root->original);
|
||||
if (root->directory != NULL)
|
||||
free (root->directory);
|
||||
#ifdef CLIENT_SUPPORT
|
||||
if (root->username != NULL)
|
||||
free (root->username);
|
||||
if (root->password != NULL)
|
||||
@ -318,8 +329,9 @@ free_cvsroot_t (root)
|
||||
}
|
||||
if (root->hostname != NULL)
|
||||
free (root->hostname);
|
||||
if (root->directory != NULL)
|
||||
free (root->directory);
|
||||
if (root->proxy_hostname != NULL)
|
||||
free (root->proxy_hostname);
|
||||
#endif /* CLIENT_SUPPORT */
|
||||
free (root);
|
||||
}
|
||||
|
||||
@ -350,7 +362,7 @@ free_cvsroot_t (root)
|
||||
*/
|
||||
cvsroot_t *
|
||||
parse_cvsroot (root_in)
|
||||
char *root_in;
|
||||
const char *root_in;
|
||||
{
|
||||
cvsroot_t *newroot; /* the new root to be returned */
|
||||
char *cvsroot_save; /* what we allocated so we can dispose
|
||||
@ -360,7 +372,9 @@ parse_cvsroot (root_in)
|
||||
* [[user][:password]@]host[:[port]]
|
||||
*/
|
||||
char *cvsroot_copy, *p, *q; /* temporary pointers for parsing */
|
||||
#ifdef CLIENT_SUPPORT
|
||||
int check_hostname, no_port, no_password;
|
||||
#endif /* CLIENT_SUPPORT */
|
||||
|
||||
/* allocate some space */
|
||||
newroot = new_cvsroot_t();
|
||||
@ -392,6 +406,25 @@ parse_cvsroot (root_in)
|
||||
*p = '\0';
|
||||
cvsroot_copy = ++p;
|
||||
|
||||
#ifdef CLIENT_SUPPORT
|
||||
/* Look for method options, for instance, proxy, proxyport.
|
||||
* We don't handle these, but we like to try and warn the user that
|
||||
* they are being ignored.
|
||||
*/
|
||||
if (p = strchr (method, ';'))
|
||||
{
|
||||
*p++ = '\0';
|
||||
if (!really_quiet)
|
||||
{
|
||||
error (0, 0,
|
||||
"WARNING: Ignoring method options found in CVSROOT: `%s'.",
|
||||
p);
|
||||
error (0, 0,
|
||||
"Use CVS version 1.12.7 or later to handle method options.");
|
||||
}
|
||||
}
|
||||
#endif /* CLIENT_SUPPORT */
|
||||
|
||||
/* Now we have an access method -- see if it's valid. */
|
||||
|
||||
if (strcmp (method, "local") == 0)
|
||||
@ -440,13 +473,18 @@ parse_cvsroot (root_in)
|
||||
if ((p = strchr (cvsroot_copy, '/')) == NULL)
|
||||
{
|
||||
error (0, 0, "CVSROOT requires a path spec:");
|
||||
error (0, 0, ":(gserver|kserver|pserver):[[user][:password]@]host[:[port]]/path");
|
||||
error (0, 0,
|
||||
":(gserver|kserver|pserver):[[user][:password]@]host[:[port]]/path");
|
||||
error (0, 0, "[:(ext|server):][[user]@]host[:]/path");
|
||||
goto error_exit;
|
||||
}
|
||||
firstslash = p; /* == NULL if '/' not in string */
|
||||
*p = '\0';
|
||||
|
||||
/* Don't parse username, password, hostname, or port without client
|
||||
* support.
|
||||
*/
|
||||
#ifdef CLIENT_SUPPORT
|
||||
/* Check to see if there is a username[:password] in the string. */
|
||||
if ((p = strchr (cvsroot_copy, '@')) != NULL)
|
||||
{
|
||||
@ -488,15 +526,18 @@ parse_cvsroot (root_in)
|
||||
{
|
||||
if (!isdigit(*q++))
|
||||
{
|
||||
error (0, 0, "CVSROOT may only specify a positive, non-zero, integer port (not `%s').",
|
||||
error (0, 0,
|
||||
"CVSROOT may only specify a positive, non-zero, integer port (not `%s').",
|
||||
p);
|
||||
error (0, 0, "Perhaps you entered a relative pathname?");
|
||||
error (0, 0,
|
||||
"Perhaps you entered a relative pathname?");
|
||||
goto error_exit;
|
||||
}
|
||||
}
|
||||
if ((newroot->port = atoi (p)) <= 0)
|
||||
{
|
||||
error (0, 0, "CVSROOT may only specify a positive, non-zero, integer port (not `%s').",
|
||||
error (0, 0,
|
||||
"CVSROOT may only specify a positive, non-zero, integer port (not `%s').",
|
||||
p);
|
||||
error (0, 0, "Perhaps you entered a relative pathname?");
|
||||
goto error_exit;
|
||||
@ -514,9 +555,17 @@ parse_cvsroot (root_in)
|
||||
/* restore the '/' */
|
||||
cvsroot_copy = firstslash;
|
||||
*cvsroot_copy = '/';
|
||||
#endif /* CLIENT_SUPPORT */
|
||||
}
|
||||
|
||||
/* parse the path for all methods */
|
||||
/*
|
||||
* Parse the path for all methods.
|
||||
*/
|
||||
/* Here & local_cvsroot() should be the only places this needs to be
|
||||
* called on a CVSROOT now. cvsroot->original is saved for error messages
|
||||
* and, otherwise, we want no trailing slashes.
|
||||
*/
|
||||
Sanitize_Repository_Name( cvsroot_copy );
|
||||
newroot->directory = xstrdup(cvsroot_copy);
|
||||
|
||||
/*
|
||||
@ -541,6 +590,7 @@ parse_cvsroot (root_in)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CLIENT_SUPPORT
|
||||
if (newroot->username && ! newroot->hostname)
|
||||
{
|
||||
error (0, 0, "Missing hostname in CVSROOT.");
|
||||
@ -548,17 +598,22 @@ parse_cvsroot (root_in)
|
||||
}
|
||||
|
||||
check_hostname = 0;
|
||||
no_password = 0;
|
||||
no_password = 1;
|
||||
no_port = 0;
|
||||
#endif /* CLIENT_SUPPORT */
|
||||
switch (newroot->method)
|
||||
{
|
||||
case local_method:
|
||||
#ifdef CLIENT_SUPPORT
|
||||
if (newroot->username || newroot->hostname)
|
||||
{
|
||||
error (0, 0, "Can't specify hostname and username in CVSROOT");
|
||||
error (0, 0, "when using local access method.");
|
||||
goto error_exit;
|
||||
}
|
||||
no_port = 1;
|
||||
/* no_password already set */
|
||||
#endif /* CLIENT_SUPPORT */
|
||||
/* cvs.texinfo has always told people that CVSROOT must be an
|
||||
absolute pathname. Furthermore, attempts to use a relative
|
||||
pathname produced various errors (I couldn't get it to work),
|
||||
@ -571,9 +626,8 @@ parse_cvsroot (root_in)
|
||||
error (0, 0, "when using local access method.");
|
||||
goto error_exit;
|
||||
}
|
||||
no_port = 1;
|
||||
no_password = 1;
|
||||
break;
|
||||
#ifdef CLIENT_SUPPORT
|
||||
case fork_method:
|
||||
/* We want :fork: to behave the same as other remote access
|
||||
methods. Therefore, don't check to see that the repository
|
||||
@ -584,6 +638,7 @@ parse_cvsroot (root_in)
|
||||
error (0, 0, "when using fork access method.");
|
||||
goto error_exit;
|
||||
}
|
||||
newroot->hostname = xstrdup("server"); /* for error messages */
|
||||
if (!isabsolute (newroot->directory))
|
||||
{
|
||||
error (0, 0, "CVSROOT must be an absolute pathname (not `%s')",
|
||||
@ -592,39 +647,44 @@ parse_cvsroot (root_in)
|
||||
goto error_exit;
|
||||
}
|
||||
no_port = 1;
|
||||
no_password = 1;
|
||||
/* no_password already set */
|
||||
break;
|
||||
case kserver_method:
|
||||
#ifndef HAVE_KERBEROS
|
||||
# ifndef HAVE_KERBEROS
|
||||
error (0, 0, "CVSROOT is set for a kerberos access method but your");
|
||||
error (0, 0, "CVS executable doesn't support it.");
|
||||
goto error_exit;
|
||||
#else
|
||||
# else
|
||||
check_hostname = 1;
|
||||
/* no_password already set */
|
||||
break;
|
||||
#endif
|
||||
# endif
|
||||
case gserver_method:
|
||||
#ifndef HAVE_GSSAPI
|
||||
# ifndef HAVE_GSSAPI
|
||||
error (0, 0, "CVSROOT is set for a GSSAPI access method but your");
|
||||
error (0, 0, "CVS executable doesn't support it.");
|
||||
goto error_exit;
|
||||
#else
|
||||
# else
|
||||
check_hostname = 1;
|
||||
/* no_password already set */
|
||||
break;
|
||||
#endif
|
||||
# endif
|
||||
case server_method:
|
||||
case ext_method:
|
||||
no_port = 1;
|
||||
no_password = 1;
|
||||
/* no_password already set */
|
||||
check_hostname = 1;
|
||||
break;
|
||||
case pserver_method:
|
||||
no_password = 0;
|
||||
check_hostname = 1;
|
||||
break;
|
||||
#endif /* CLIENT_SUPPORT */
|
||||
default:
|
||||
error (1, 0, "Invalid method found in parse_cvsroot");
|
||||
}
|
||||
|
||||
#ifdef CLIENT_SUPPORT
|
||||
if (no_password && newroot->password)
|
||||
{
|
||||
error (0, 0, "CVSROOT password specification is only valid for");
|
||||
@ -644,6 +704,7 @@ parse_cvsroot (root_in)
|
||||
error (0, 0, "and pserver connection methods.");
|
||||
goto error_exit;
|
||||
}
|
||||
#endif /* CLIENT_SUPPORT */
|
||||
|
||||
if (*newroot->directory == '\0')
|
||||
{
|
||||
@ -718,14 +779,18 @@ normalize_cvsroot (root)
|
||||
* repository DIR. */
|
||||
cvsroot_t *
|
||||
local_cvsroot (dir)
|
||||
char *dir;
|
||||
const char *dir;
|
||||
{
|
||||
cvsroot_t *newroot = new_cvsroot_t();
|
||||
|
||||
newroot->original = xstrdup(dir);
|
||||
newroot->method = local_method;
|
||||
newroot->directory = xstrdup(dir);
|
||||
|
||||
/* Here and parse_cvsroot() should be the only places this needs to be
|
||||
* called on a CVSROOT now. cvsroot->original is saved for error messages
|
||||
* and, otherwise, we want no trailing slashes.
|
||||
*/
|
||||
Sanitize_Repository_Name( newroot->directory );
|
||||
return newroot;
|
||||
}
|
||||
|
||||
@ -741,7 +806,7 @@ local_cvsroot (dir)
|
||||
#include <stdio.h>
|
||||
|
||||
char *program_name = "testing";
|
||||
char *command_name = "parse_cvsroot"; /* XXX is this used??? */
|
||||
char *cvs_cmd_name = "parse_cvsroot"; /* XXX is this used??? */
|
||||
|
||||
/* Toy versions of various functions when debugging under unix. Yes,
|
||||
these make various bad assumptions, but they're pretty easy to
|
||||
@ -790,5 +855,3 @@ main (argc, argv)
|
||||
/* NOTREACHED */
|
||||
}
|
||||
#endif
|
||||
/* vim:tabstop=8:shiftwidth=4
|
||||
*/
|
||||
|
@ -20,18 +20,23 @@ typedef enum {
|
||||
ext_method,
|
||||
fork_method
|
||||
} CVSmethod;
|
||||
extern char *method_names[]; /* change this in root.c if you change
|
||||
the enum above */
|
||||
extern const char method_names[][16]; /* change this in root.c if you change
|
||||
the enum above */
|
||||
|
||||
typedef struct cvsroot_s {
|
||||
char *original; /* the complete source CVSroot string */
|
||||
CVSmethod method; /* one of the enum values above */
|
||||
char *username; /* the username or NULL if method == local */
|
||||
char *password; /* the username or NULL if method == local */
|
||||
char *hostname; /* the hostname or NULL if method == local */
|
||||
int port; /* the port or zero if method == local */
|
||||
char *directory; /* the directory name */
|
||||
char *original; /* The complete source CVSroot string. */
|
||||
CVSmethod method; /* One of the enum values above. */
|
||||
char *directory; /* The directory name. */
|
||||
#ifdef CLIENT_SUPPORT
|
||||
unsigned char isremote; /* nonzero if we are doing remote access */
|
||||
char *username; /* The username or NULL if method == local. */
|
||||
char *password; /* The password or NULL if method == local. */
|
||||
char *hostname; /* The hostname or NULL if method == local. */
|
||||
int port; /* The port or zero if method == local. */
|
||||
char *proxy_hostname; /* The hostname of the proxy server, or NULL
|
||||
* when method == local or no proxy will be
|
||||
* used.
|
||||
*/
|
||||
int proxy_port; /* The port of the proxy or zero, as above. */
|
||||
unsigned char isremote; /* Nonzero if we are doing remote access. */
|
||||
#endif /* CLIENT_SUPPORT */
|
||||
} cvsroot_t;
|
||||
|
@ -91,6 +91,8 @@ run_add_arg (s)
|
||||
run_argv[run_argc] = (char *) 0; /* not post-incremented on purpose! */
|
||||
}
|
||||
|
||||
|
||||
|
||||
int
|
||||
run_exec (stin, stout, sterr, flags)
|
||||
const char *stin;
|
||||
@ -129,10 +131,10 @@ run_exec (stin, stout, sterr, flags)
|
||||
cvs_outerr (")\n", 0);
|
||||
}
|
||||
if (noexec && (flags & RUN_REALLY) == 0)
|
||||
return (0);
|
||||
return 0;
|
||||
|
||||
/* make sure that we are null terminated, since we didn't calloc */
|
||||
run_add_arg ((char *) 0);
|
||||
run_add_arg ((char *)0);
|
||||
|
||||
/* setup default file descriptor numbers */
|
||||
shin = 0;
|
||||
@ -170,8 +172,8 @@ run_exec (stin, stout, sterr, flags)
|
||||
}
|
||||
|
||||
/* Make sure we don't flush this twice, once in the subprocess. */
|
||||
fflush (stdout);
|
||||
fflush (stderr);
|
||||
cvs_flushout();
|
||||
cvs_flusherr();
|
||||
|
||||
/* The output files, if any, are now created. Do the fork and dups.
|
||||
|
||||
@ -251,7 +253,7 @@ run_exec (stin, stout, sterr, flags)
|
||||
#ifdef BSD_SIGNALS
|
||||
if (flags & RUN_SIGIGNORE)
|
||||
{
|
||||
memset ((char *) &vec, 0, sizeof (vec));
|
||||
memset ((char *)&vec, 0, sizeof (vec));
|
||||
vec.sv_handler = SIG_IGN;
|
||||
(void) sigvec (SIGINT, &vec, &ivec);
|
||||
(void) sigvec (SIGQUIT, &vec, &qvec);
|
||||
@ -300,17 +302,17 @@ run_exec (stin, stout, sterr, flags)
|
||||
#ifdef POSIX_SIGNALS
|
||||
if (flags & RUN_SIGIGNORE)
|
||||
{
|
||||
(void) sigaction (SIGINT, &iact, (struct sigaction *) NULL);
|
||||
(void) sigaction (SIGQUIT, &qact, (struct sigaction *) NULL);
|
||||
(void) sigaction (SIGINT, &iact, (struct sigaction *)NULL);
|
||||
(void) sigaction (SIGQUIT, &qact, (struct sigaction *)NULL);
|
||||
}
|
||||
else
|
||||
(void) sigprocmask (SIG_SETMASK, &sigset_omask, (sigset_t *) NULL);
|
||||
(void) sigprocmask (SIG_SETMASK, &sigset_omask, (sigset_t *)NULL);
|
||||
#else
|
||||
#ifdef BSD_SIGNALS
|
||||
if (flags & RUN_SIGIGNORE)
|
||||
{
|
||||
(void) sigvec (SIGINT, &ivec, (struct sigvec *) NULL);
|
||||
(void) sigvec (SIGQUIT, &qvec, (struct sigvec *) NULL);
|
||||
(void) sigvec (SIGINT, &ivec, (struct sigvec *)NULL);
|
||||
(void) sigvec (SIGQUIT, &qvec, (struct sigvec *)NULL);
|
||||
}
|
||||
else
|
||||
(void) sigsetmask (mask);
|
||||
@ -344,9 +346,11 @@ run_exec (stin, stout, sterr, flags)
|
||||
out0:
|
||||
if (rerrno)
|
||||
errno = rerrno;
|
||||
return (rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
run_print (fp)
|
||||
FILE *fp;
|
||||
@ -398,7 +402,7 @@ run_popen (cmd, mode)
|
||||
|
||||
int
|
||||
piped_child (command, tofdp, fromfdp)
|
||||
char **command;
|
||||
const char **command;
|
||||
int *tofdp;
|
||||
int *fromfdp;
|
||||
{
|
||||
@ -436,7 +440,8 @@ piped_child (command, tofdp, fromfdp)
|
||||
if (dup2 (from_child_pipe[1], STDOUT_FILENO) < 0)
|
||||
error (1, errno, "cannot dup2 pipe");
|
||||
|
||||
execvp (command[0], command);
|
||||
/* Okay to cast out const below - execvp don't return anyhow. */
|
||||
execvp ((char *)command[0], (char **)command);
|
||||
error (1, errno, "cannot exec %s", command[0]);
|
||||
}
|
||||
if (close (to_child_pipe[0]) < 0)
|
||||
@ -455,7 +460,7 @@ close_on_exec (fd)
|
||||
int fd;
|
||||
{
|
||||
#ifdef F_SETFD
|
||||
if (fcntl (fd, F_SETFD, 1))
|
||||
if (fcntl (fd, F_SETFD, 1) == -1)
|
||||
error (1, errno, "can't set close-on-exec flag on %d", fd);
|
||||
#endif
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,16 @@
|
||||
/* Interface between the server and the rest of CVS. */
|
||||
/*
|
||||
* Copyright (c) 2003 The Free Software Foundation.
|
||||
*
|
||||
* Portions Copyright (c) 2003 Derek Price
|
||||
* and Ximbiot <http://ximbiot.com>,
|
||||
*
|
||||
* You may distribute under the terms of the GNU General Public License as
|
||||
* specified in the README file that comes with the CVS kit.
|
||||
*
|
||||
*
|
||||
*
|
||||
* This file contains the interface between the server and the rest of CVS.
|
||||
*/
|
||||
|
||||
/* Miscellaneous stuff which isn't actually particularly server-specific. */
|
||||
#ifndef STDIN_FILENO
|
||||
@ -6,7 +18,7 @@
|
||||
#define STDOUT_FILENO 1
|
||||
#define STDERR_FILENO 2
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Expand to `S', ` ', or the empty string. Used in `%s-> ...' trace printfs.
|
||||
@ -30,13 +42,24 @@ extern int server_active;
|
||||
/* Run the server. */
|
||||
extern int server PROTO((int argc, char **argv));
|
||||
|
||||
/* kserver user authentication. */
|
||||
# ifdef HAVE_KERBEROS
|
||||
extern void kserver_authenticate_connection PROTO ((void));
|
||||
# endif
|
||||
|
||||
/* pserver user authentication. */
|
||||
# if defined (AUTH_SERVER_SUPPORT) || defined (HAVE_GSSAPI)
|
||||
extern void pserver_authenticate_connection PROTO ((void));
|
||||
# endif
|
||||
|
||||
/* See server.c for description. */
|
||||
extern void server_pathname_check PROTO ((char *));
|
||||
|
||||
/* We have a new Entries line for a file. TAG or DATE can be NULL. */
|
||||
extern void server_register
|
||||
PROTO((char *name, char *version, char *timestamp,
|
||||
char *options, char *tag, char *date, char *conflict));
|
||||
PROTO((const char *name, const char *version, const char *timestamp,
|
||||
const char *options, const char *tag, const char *date,
|
||||
const char *conflict));
|
||||
|
||||
/* Set the modification time of the next file sent. This must be
|
||||
followed by a call to server_updated on the same file. */
|
||||
@ -47,7 +70,7 @@ extern void server_modtime PROTO ((struct file_info *finfo,
|
||||
* We want to nuke the Entries line for a file, and (unless
|
||||
* server_scratch_entry_only is subsequently called) the file itself.
|
||||
*/
|
||||
extern void server_scratch PROTO((char *name));
|
||||
extern void server_scratch PROTO((const char *name));
|
||||
|
||||
/*
|
||||
* The file which just had server_scratch called on it needs to have only
|
||||
@ -61,10 +84,11 @@ extern void server_scratch_entry_only PROTO((void));
|
||||
* repository.
|
||||
*/
|
||||
extern void server_checked_in
|
||||
PROTO((char *file, char *update_dir, char *repository));
|
||||
PROTO((const char *file, const char *update_dir, const char *repository));
|
||||
|
||||
extern void server_copy_file
|
||||
PROTO((char *file, char *update_dir, char *repository, char *newfile));
|
||||
PROTO((const char *file, const char *update_dir, const char *repository,
|
||||
const char *newfile));
|
||||
|
||||
/* Send the appropriate responses for a file described by FINFO and
|
||||
VERS. This is called after server_register or server_scratch. In
|
||||
@ -99,18 +123,21 @@ extern void server_updated
|
||||
extern int server_use_rcs_diff PROTO((void));
|
||||
|
||||
/* Set the Entries.Static flag. */
|
||||
extern void server_set_entstat PROTO((char *update_dir, char *repository));
|
||||
extern void server_set_entstat PROTO((const char *update_dir,
|
||||
const char *repository));
|
||||
/* Clear it. */
|
||||
extern void server_clear_entstat PROTO((char *update_dir, char *repository));
|
||||
extern void server_clear_entstat PROTO((const char *update_dir,
|
||||
const char *repository));
|
||||
|
||||
/* Set or clear a per-directory sticky tag or date. */
|
||||
extern void server_set_sticky PROTO((char *update_dir, char *repository,
|
||||
char *tag, char *date, int nonbranch));
|
||||
extern void server_set_sticky PROTO((const char *update_dir,
|
||||
const char *repository, const char *tag,
|
||||
const char *date, int nonbranch));
|
||||
/* Send Template response. */
|
||||
extern void server_template PROTO ((char *, char *));
|
||||
extern void server_template PROTO ((const char *, const char *));
|
||||
|
||||
extern void server_update_entries
|
||||
PROTO((char *file, char *update_dir, char *repository,
|
||||
PROTO((const char *file, const char *update_dir, const char *repository,
|
||||
enum server_updated_arg4 updated));
|
||||
|
||||
/* Pointer to a malloc'd string which is the directory which
|
||||
@ -118,8 +145,6 @@ extern void server_update_entries
|
||||
to the client. */
|
||||
extern char *server_dir;
|
||||
|
||||
enum progs {PROG_CHECKIN, PROG_UPDATE};
|
||||
extern void server_prog PROTO((char *, char *, enum progs));
|
||||
extern void server_cleanup PROTO((int sig));
|
||||
|
||||
#ifdef SERVER_FLOWCONTROL
|
||||
@ -173,5 +198,5 @@ extern struct request requests[];
|
||||
|
||||
/* Gzip library, see zlib.c. */
|
||||
extern int gunzip_and_write PROTO ((int, char *, unsigned char *, size_t));
|
||||
extern int read_and_gzip PROTO ((int, char *, unsigned char **, size_t *,
|
||||
size_t *, int));
|
||||
extern int read_and_gzip PROTO ((int, const char *, unsigned char **, size_t *,
|
||||
size_t *, int));
|
||||
|
187
contrib/cvs/src/stack.c
Normal file
187
contrib/cvs/src/stack.c
Normal file
@ -0,0 +1,187 @@
|
||||
/*
|
||||
* Copyright (c) 2004, Free Software Foundation,
|
||||
* Derek Price,
|
||||
* & Ximbiot <http://ximbiot.com>.
|
||||
*
|
||||
* 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 module uses the hash.c module to implement a stack.
|
||||
*/
|
||||
|
||||
#include "cvs.h"
|
||||
#include <assert.h>
|
||||
|
||||
|
||||
|
||||
static void
|
||||
do_push (stack, elem, isstring)
|
||||
List *stack;
|
||||
void *elem;
|
||||
int isstring;
|
||||
{
|
||||
Node *p = getnode();
|
||||
|
||||
if (isstring)
|
||||
p->key = elem;
|
||||
else
|
||||
p->data = elem;
|
||||
|
||||
addnode(stack, p);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
push (stack, elem)
|
||||
List *stack;
|
||||
void *elem;
|
||||
{
|
||||
do_push (stack, elem, 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
push_string (stack, elem)
|
||||
List *stack;
|
||||
char *elem;
|
||||
{
|
||||
do_push (stack, elem, 1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void *
|
||||
do_pop (stack, isstring)
|
||||
List *stack;
|
||||
int isstring;
|
||||
{
|
||||
void *elem;
|
||||
|
||||
if (isempty (stack)) return NULL;
|
||||
|
||||
if (isstring)
|
||||
{
|
||||
elem = stack->list->prev->key;
|
||||
stack->list->prev->key = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
elem = stack->list->prev->data;
|
||||
stack->list->prev->data = NULL;
|
||||
}
|
||||
|
||||
delnode (stack->list->prev);
|
||||
return elem;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void *
|
||||
pop (stack)
|
||||
List *stack;
|
||||
{
|
||||
return do_pop (stack, 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
char *
|
||||
pop_string (stack)
|
||||
List *stack;
|
||||
{
|
||||
return do_pop (stack, 1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
do_unshift (stack, elem, isstring)
|
||||
List *stack;
|
||||
void *elem;
|
||||
int isstring;
|
||||
{
|
||||
Node *p = getnode();
|
||||
|
||||
if (isstring)
|
||||
p->key = elem;
|
||||
else
|
||||
p->data = elem;
|
||||
|
||||
addnode_at_front(stack, p);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
unshift (stack, elem)
|
||||
List *stack;
|
||||
void *elem;
|
||||
{
|
||||
do_unshift (stack, elem, 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
unshift_string (stack, elem)
|
||||
List *stack;
|
||||
char *elem;
|
||||
{
|
||||
do_unshift (stack, elem, 1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void *
|
||||
do_shift (stack, isstring)
|
||||
List *stack;
|
||||
int isstring;
|
||||
{
|
||||
void *elem;
|
||||
|
||||
if (isempty (stack)) return NULL;
|
||||
|
||||
if (isstring)
|
||||
{
|
||||
elem = stack->list->next->key;
|
||||
stack->list->next->key = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
elem = stack->list->next->data;
|
||||
stack->list->next->data = NULL;
|
||||
}
|
||||
delnode (stack->list->next);
|
||||
return elem;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void *
|
||||
shift (stack)
|
||||
List *stack;
|
||||
{
|
||||
return do_shift (stack, 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
char *
|
||||
shift_string (stack)
|
||||
List *stack;
|
||||
{
|
||||
return do_shift (stack, 1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
int
|
||||
isempty (stack)
|
||||
List *stack;
|
||||
{
|
||||
if (stack->list == stack->list->next)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
18
contrib/cvs/src/stack.h
Normal file
18
contrib/cvs/src/stack.h
Normal file
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* Copyright (c) 2004, Free Software Foundation,
|
||||
* Derek Price,
|
||||
* & Ximbiot <http://ximbiot.com>.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
void push PROTO((List *_stack, void *_elem));
|
||||
void *pop PROTO((List *_stack));
|
||||
void unshift PROTO((List *_stack, void *_elem));
|
||||
void *shift PROTO((List *_stack));
|
||||
void push_string PROTO((List *_stack, char *_elem));
|
||||
char *pop_string PROTO((List *_stack));
|
||||
void unshift_string PROTO((List *_stack, char *_elem));
|
||||
char *shift_string PROTO((List *_stack));
|
||||
int isempty PROTO((List *_stack));
|
@ -10,8 +10,8 @@
|
||||
|
||||
#include "cvs.h"
|
||||
|
||||
static Dtype status_dirproc PROTO ((void *callerdat, char *dir,
|
||||
char *repos, char *update_dir,
|
||||
static Dtype status_dirproc PROTO ((void *callerdat, const char *dir,
|
||||
const char *repos, const char *update_dir,
|
||||
List *entries));
|
||||
static int status_fileproc PROTO ((void *callerdat, struct file_info *finfo));
|
||||
static int tag_list_proc PROTO((Node * p, void *closure));
|
||||
@ -107,7 +107,8 @@ cvsstatus (argc, argv)
|
||||
err = start_recursion (status_fileproc, (FILESDONEPROC) NULL,
|
||||
status_dirproc, (DIRLEAVEPROC) NULL, NULL,
|
||||
argc, argv, local,
|
||||
W_LOCAL, 0, CVS_LOCK_READ, (char *) NULL, 1);
|
||||
W_LOCAL, 0, CVS_LOCK_READ, (char *) NULL, 1,
|
||||
(char *) NULL);
|
||||
|
||||
return (err);
|
||||
}
|
||||
@ -152,9 +153,15 @@ status_fileproc (callerdat, finfo)
|
||||
sstat = "Locally Removed";
|
||||
break;
|
||||
case T_MODIFIED:
|
||||
if (vers->ts_conflict)
|
||||
if ( vers->ts_conflict
|
||||
&& ( file_has_conflict ( finfo, vers->ts_conflict )
|
||||
|| file_has_markers ( finfo ) ) )
|
||||
sstat = "File had conflicts on merge";
|
||||
else
|
||||
/* Note that we do not re Register() the file when we spot
|
||||
* a resolved conflict like update_fileproc() does on the
|
||||
* premise that status should not alter the sandbox.
|
||||
*/
|
||||
sstat = "Locally Modified";
|
||||
break;
|
||||
case T_REMOVE_ENTRY:
|
||||
@ -316,9 +323,9 @@ status_fileproc (callerdat, finfo)
|
||||
static Dtype
|
||||
status_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)
|
||||
@ -344,7 +351,7 @@ tag_list_proc (p, closure)
|
||||
+ (branch ? strlen (branch) : strlen (p->data)));
|
||||
sprintf (buf, "\t%-25s\t(%s: %s)\n", p->key,
|
||||
branch ? "branch" : "revision",
|
||||
branch ? branch : p->data);
|
||||
branch ? branch : (char *)p->data);
|
||||
cvs_output (buf, 0);
|
||||
free (buf);
|
||||
|
||||
|
@ -8,6 +8,7 @@
|
||||
* Various useful functions for the CVS support code.
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
#include "cvs.h"
|
||||
#include "getline.h"
|
||||
|
||||
@ -51,7 +52,7 @@ xmalloc (bytes)
|
||||
/*
|
||||
* realloc data and die if it fails [I've always wanted to have "realloc" do
|
||||
* a "malloc" if the argument is NULL, but you can't depend on it. Here, I
|
||||
* can *force* it.
|
||||
* can *force* it.]
|
||||
*/
|
||||
void *
|
||||
xrealloc (ptr, bytes)
|
||||
@ -149,61 +150,70 @@ xstrdup (str)
|
||||
return (s);
|
||||
}
|
||||
|
||||
/* Remove trailing newlines from STRING, destructively. */
|
||||
void
|
||||
strip_trailing_newlines (str)
|
||||
char *str;
|
||||
{
|
||||
int len;
|
||||
len = strlen (str) - 1;
|
||||
|
||||
while (str[len] == '\n')
|
||||
str[len--] = '\0';
|
||||
|
||||
/* Remove trailing newlines from STRING, destructively.
|
||||
*
|
||||
* RETURNS
|
||||
*
|
||||
* True if any newlines were removed, false otherwise.
|
||||
*/
|
||||
int
|
||||
strip_trailing_newlines (str)
|
||||
char *str;
|
||||
{
|
||||
size_t index, origlen;
|
||||
index = origlen = strlen (str);
|
||||
|
||||
while (index > 0 && str[index-1] == '\n')
|
||||
str[--index] = '\0';
|
||||
|
||||
return index != origlen;
|
||||
}
|
||||
|
||||
/* Return the number of levels that path ascends above where it starts.
|
||||
For example:
|
||||
"../../foo" -> 2
|
||||
"foo/../../bar" -> 1
|
||||
*/
|
||||
/* FIXME: Should be using ISDIRSEP, last_component, or some other
|
||||
mechanism which is more general than just looking at slashes,
|
||||
particularly for the client.c caller. The server.c caller might
|
||||
want something different, so be careful. */
|
||||
|
||||
|
||||
/* Return the number of levels that PATH ascends above where it starts.
|
||||
* For example:
|
||||
*
|
||||
* "../../foo" -> 2
|
||||
* "foo/../../bar" -> 1
|
||||
*/
|
||||
int
|
||||
pathname_levels (path)
|
||||
char *path;
|
||||
pathname_levels (p)
|
||||
const char *p;
|
||||
{
|
||||
char *p;
|
||||
char *q;
|
||||
int level;
|
||||
int max_level;
|
||||
|
||||
if (p == NULL) return 0;
|
||||
|
||||
max_level = 0;
|
||||
p = path;
|
||||
level = 0;
|
||||
do
|
||||
{
|
||||
q = strchr (p, '/');
|
||||
if (q != NULL)
|
||||
++q;
|
||||
if (p[0] == '.' && p[1] == '.' && (p[2] == '\0' || p[2] == '/'))
|
||||
/* Now look for pathname level-ups. */
|
||||
if (p[0] == '.' && p[1] == '.' && (p[2] == '\0' || ISDIRSEP (p[2])))
|
||||
{
|
||||
--level;
|
||||
if (-level > max_level)
|
||||
max_level = -level;
|
||||
}
|
||||
else if (p[0] == '\0' || p[0] == '/' ||
|
||||
(p[0] == '.' && (p[1] == '\0' || p[1] == '/')))
|
||||
else if (p[0] == '\0' || ISDIRSEP (p[0]) ||
|
||||
(p[0] == '.' && (p[1] == '\0' || ISDIRSEP (p[1]))))
|
||||
;
|
||||
else
|
||||
++level;
|
||||
p = q;
|
||||
} while (p != NULL);
|
||||
|
||||
/* q = strchr (p, '/'); but sub ISDIRSEP() for '/': */
|
||||
while (*p != '\0' && !ISDIRSEP (*p)) p++;
|
||||
if (*p != '\0') p++;
|
||||
} while (*p != '\0');
|
||||
return max_level;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* Free a vector, where (*ARGV)[0], (*ARGV)[1], ... (*ARGV)[*PARGC - 1]
|
||||
are malloc'd and so is *ARGV itself. Such a vector is allocated by
|
||||
line2argv or expand_wild, for example. */
|
||||
@ -283,13 +293,12 @@ compare_revnums (rev1, rev2)
|
||||
const char *rev1;
|
||||
const char *rev2;
|
||||
{
|
||||
const char *s, *sp;
|
||||
const char *t, *tp;
|
||||
const char *sp, *tp;
|
||||
char *snext, *tnext;
|
||||
int result = 0;
|
||||
|
||||
sp = s = rev1;
|
||||
tp = t = rev2;
|
||||
sp = rev1;
|
||||
tp = rev2;
|
||||
while (result == 0)
|
||||
{
|
||||
result = strtoul (sp, &snext, 10) - strtoul (tp, &tnext, 10);
|
||||
@ -393,6 +402,71 @@ get_date (date, now)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/* Given some revision, REV, return the first prior revision that exists in the
|
||||
* RCS file, RCS.
|
||||
*
|
||||
* ASSUMPTIONS
|
||||
* REV exists.
|
||||
*
|
||||
* INPUTS
|
||||
* RCS The RCS node pointer.
|
||||
* REV An existing revision in the RCS file referred to by RCS.
|
||||
*
|
||||
* RETURNS
|
||||
* The first prior revision that exists in the RCS file, or NULL if no prior
|
||||
* revision exists. The caller is responsible for disposing of this string.
|
||||
*
|
||||
* NOTES
|
||||
* This function currently neglects the case where we are on the trunk with
|
||||
* rev = X.1, where X != 1. If rev = X.Y, where X != 1 and Y > 1, then this
|
||||
* function should work fine, as revision X.1 must exist, due to RCS rules.
|
||||
*/
|
||||
char *
|
||||
previous_rev (rcs, rev)
|
||||
RCSNode *rcs;
|
||||
const char *rev;
|
||||
{
|
||||
char *p;
|
||||
char *tmp = xstrdup (rev);
|
||||
long r1;
|
||||
char *retval;
|
||||
|
||||
/* Our retval can have no more digits and dots than our input revision. */
|
||||
retval = xmalloc (strlen (rev) + 1);
|
||||
p = strrchr (tmp, '.');
|
||||
*p = '\0';
|
||||
r1 = strtol (p+1, NULL, 10);
|
||||
do {
|
||||
if (--r1 == 0)
|
||||
{
|
||||
/* If r1 == 0, then we must be on a branch and our parent must
|
||||
* exist, or we must be on the trunk with a REV like X.1.
|
||||
* We are neglecting the X.1 with X != 1 case by assuming that
|
||||
* there is no previous revision when we discover we were on
|
||||
* the trunk.
|
||||
*/
|
||||
p = strrchr (tmp, '.');
|
||||
if (p == NULL)
|
||||
/* We are on the trunk. */
|
||||
retval = NULL;
|
||||
else
|
||||
{
|
||||
*p = '\0';
|
||||
sprintf (retval, "%s", tmp);
|
||||
}
|
||||
break;
|
||||
}
|
||||
sprintf (retval, "%s.%ld", tmp, r1);
|
||||
} while (!RCS_exist_rev (rcs, retval));
|
||||
|
||||
free (tmp);
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Given two revisions, find their greatest common ancestor. If the
|
||||
two input revisions exist, then rcs guarantees that the gca will
|
||||
exist. */
|
||||
@ -518,9 +592,10 @@ check_numeric (rev, argc, argv)
|
||||
*/
|
||||
char *
|
||||
make_message_rcslegal (message)
|
||||
char *message;
|
||||
const char *message;
|
||||
{
|
||||
char *dst, *dp, *mp;
|
||||
char *dst, *dp;
|
||||
const char *mp;
|
||||
|
||||
if (message == NULL) message = "";
|
||||
|
||||
@ -553,6 +628,61 @@ make_message_rcslegal (message)
|
||||
return dst;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* file_has_conflict
|
||||
*
|
||||
* This function compares the timestamp of a file with ts_conflict set
|
||||
* to the timestamp on the actual file and returns TRUE or FALSE based
|
||||
* on the results.
|
||||
*
|
||||
* This function does not check for actual markers in the file and
|
||||
* file_has_markers() function should be called when that is interesting.
|
||||
*
|
||||
* ASSUMPTIONS
|
||||
* The ts_conflict field is not NULL.
|
||||
*
|
||||
* RETURNS
|
||||
* TRUE ts_conflict matches the current timestamp.
|
||||
* FALSE The ts_conflict field does not match the file's
|
||||
* timestamp.
|
||||
*/
|
||||
int
|
||||
file_has_conflict (finfo, ts_conflict)
|
||||
const struct file_info *finfo;
|
||||
const char *ts_conflict;
|
||||
{
|
||||
char *filestamp;
|
||||
int retcode;
|
||||
|
||||
/* If ts_conflict is NULL, there was no merge since the last
|
||||
* commit and there can be no conflict.
|
||||
*/
|
||||
assert ( ts_conflict );
|
||||
|
||||
/*
|
||||
* If the timestamp has changed and no
|
||||
* conflict indicators are found, it isn't a
|
||||
* conflict any more.
|
||||
*/
|
||||
|
||||
#ifdef SERVER_SUPPORT
|
||||
if ( server_active )
|
||||
retcode = ts_conflict[0] == '=';
|
||||
else
|
||||
#endif /* SERVER_SUPPORT */
|
||||
{
|
||||
filestamp = time_stamp ( finfo->file );
|
||||
retcode = !strcmp ( ts_conflict, filestamp );
|
||||
free ( filestamp );
|
||||
}
|
||||
|
||||
return retcode;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Does the file FINFO contain conflict markers? The whole concept
|
||||
of looking at the contents of the file to figure out whether there are
|
||||
unresolved conflicts is kind of bogus (people do want to manage files
|
||||
@ -695,19 +825,18 @@ void
|
||||
resolve_symlink (filename)
|
||||
char **filename;
|
||||
{
|
||||
if ((! filename) || (! *filename))
|
||||
if (filename == NULL || *filename == NULL)
|
||||
return;
|
||||
|
||||
while (islink (*filename))
|
||||
{
|
||||
char *newname;
|
||||
#ifdef HAVE_READLINK
|
||||
/* The clean thing to do is probably to have each filesubr.c
|
||||
implement this (with an error if not supported by the
|
||||
platform, in which case islink would presumably return 0).
|
||||
But that would require editing each filesubr.c and so the
|
||||
expedient hack seems to be looking at HAVE_READLINK. */
|
||||
newname = xreadlink (*filename);
|
||||
char *newname = xreadlink (*filename);
|
||||
|
||||
if (isabsolute (newname))
|
||||
{
|
||||
@ -716,7 +845,7 @@ resolve_symlink (filename)
|
||||
}
|
||||
else
|
||||
{
|
||||
char *oldname = last_component (*filename);
|
||||
const char *oldname = last_component (*filename);
|
||||
int dirlen = oldname - *filename;
|
||||
char *fullnewname = xmalloc (dirlen + strlen (newname) + 1);
|
||||
strncpy (fullnewname, *filename, dirlen);
|
||||
@ -797,6 +926,8 @@ shell_escape(buf, str)
|
||||
return buf;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* We can only travel forwards in time, not backwards. :)
|
||||
*/
|
||||
@ -849,7 +980,8 @@ sleep_past (desttime)
|
||||
struct timeval tv;
|
||||
tv.tv_sec = s;
|
||||
tv.tv_usec = us;
|
||||
(void)select (0, (fd_set *)NULL, (fd_set *)NULL, (fd_set *)NULL, &tv);
|
||||
(void)select (0, (fd_set *)NULL, (fd_set *)NULL, (fd_set *)NULL,
|
||||
&tv);
|
||||
}
|
||||
#else
|
||||
if (us > 0) s++;
|
||||
@ -857,3 +989,14 @@ sleep_past (desttime)
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Return non-zero iff FILENAME is absolute.
|
||||
Trivial under Unix, but more complicated under other systems. */
|
||||
int
|
||||
isabsolute (filename)
|
||||
const char *filename;
|
||||
{
|
||||
return ISABSOLUTE (filename);
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user