summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/usr.bin/cvs/BUGS18
-rw-r--r--gnu/usr.bin/cvs/ChangeLog83
-rw-r--r--gnu/usr.bin/cvs/DEVEL-CVS11
-rw-r--r--gnu/usr.bin/cvs/INSTALL11
-rw-r--r--gnu/usr.bin/cvs/NEWS9
-rw-r--r--gnu/usr.bin/cvs/README27
-rw-r--r--gnu/usr.bin/cvs/README.VMS49
-rw-r--r--gnu/usr.bin/cvs/TESTS7
-rw-r--r--gnu/usr.bin/cvs/TODO20
-rw-r--r--gnu/usr.bin/cvs/config.h.in7
-rw-r--r--gnu/usr.bin/cvs/contrib/.cvsignore3
-rw-r--r--gnu/usr.bin/cvs/contrib/ChangeLog17
-rw-r--r--gnu/usr.bin/cvs/contrib/listen2.c107
-rw-r--r--gnu/usr.bin/cvs/contrib/listen2.mak188
-rw-r--r--gnu/usr.bin/cvs/cvsnt.mak1285
-rw-r--r--gnu/usr.bin/cvs/doc/ChangeLog287
-rw-r--r--gnu/usr.bin/cvs/doc/RCSFILES44
-rw-r--r--gnu/usr.bin/cvs/doc/cvsclient.texi212
-rw-r--r--gnu/usr.bin/cvs/emx/.cvsignore3
-rw-r--r--gnu/usr.bin/cvs/emx/ChangeLog56
-rw-r--r--gnu/usr.bin/cvs/emx/Makefile.in309
-rw-r--r--gnu/usr.bin/cvs/emx/README66
-rw-r--r--gnu/usr.bin/cvs/emx/config.h325
-rw-r--r--gnu/usr.bin/cvs/emx/options.h269
-rw-r--r--gnu/usr.bin/cvs/emx/rcmd.h46
-rw-r--r--gnu/usr.bin/cvs/lib/ChangeLog8
-rw-r--r--gnu/usr.bin/cvs/lib/system.h9
-rw-r--r--gnu/usr.bin/cvs/os2/ChangeLog13
-rw-r--r--gnu/usr.bin/cvs/os2/config.h13
-rw-r--r--gnu/usr.bin/cvs/os2/pwd.c2
-rw-r--r--gnu/usr.bin/cvs/os2/pwd.h2
-rw-r--r--gnu/usr.bin/cvs/os2/rcmd.c10
-rw-r--r--gnu/usr.bin/cvs/os2/rcmd.h10
-rw-r--r--gnu/usr.bin/cvs/src/ChangeLog423
-rw-r--r--gnu/usr.bin/cvs/src/add.c6
-rw-r--r--gnu/usr.bin/cvs/src/checkin.c2
-rw-r--r--gnu/usr.bin/cvs/src/client.h2
-rw-r--r--gnu/usr.bin/cvs/src/find_names.c4
-rw-r--r--gnu/usr.bin/cvs/src/hash.c16
-rw-r--r--gnu/usr.bin/cvs/src/rcs.h6
-rw-r--r--gnu/usr.bin/cvs/src/remove.c2
-rw-r--r--gnu/usr.bin/cvs/src/run.c12
-rw-r--r--gnu/usr.bin/cvs/src/sanity.sh1961
-rw-r--r--gnu/usr.bin/cvs/src/status.c2
-rw-r--r--gnu/usr.bin/cvs/src/tag.c2
-rw-r--r--gnu/usr.bin/cvs/src/vers_ts.c25
-rw-r--r--gnu/usr.bin/cvs/src/version.c2
-rw-r--r--gnu/usr.bin/cvs/src/watch.c21
-rw-r--r--gnu/usr.bin/cvs/vms/ChangeLog8
-rw-r--r--gnu/usr.bin/cvs/vms/config.h6
-rw-r--r--gnu/usr.bin/cvs/windows-NT/ChangeLog18
-rw-r--r--gnu/usr.bin/cvs/windows-NT/config.h3
-rw-r--r--gnu/usr.bin/cvs/windows-NT/ndir.c2
-rw-r--r--gnu/usr.bin/cvs/windows-NT/ndir.h2
-rw-r--r--gnu/usr.bin/cvs/windows-NT/pwd.c2
-rw-r--r--gnu/usr.bin/cvs/windows-NT/pwd.h2
-rw-r--r--gnu/usr.bin/cvs/windows-NT/rcmd.c48
-rw-r--r--gnu/usr.bin/cvs/windows-NT/win32.c12
58 files changed, 5289 insertions, 826 deletions
diff --git a/gnu/usr.bin/cvs/BUGS b/gnu/usr.bin/cvs/BUGS
index 75841da80f9..6f482b6a604 100644
--- a/gnu/usr.bin/cvs/BUGS
+++ b/gnu/usr.bin/cvs/BUGS
@@ -15,16 +15,14 @@ similar file for the unix-like operating systems (not yet, at least).
This file also might contain some platform-specific bugs.
-* Importing files as binary (using -kb or wrappers to specify
-binaryness; see binwrap-1 in the testsuite for the latter) will not
-work on systems which need to translate between text and binary files
-(that is, it will work only on unix). (for the cause, look at
-send_modified and note that it knows nothing about whether wrappers
-specified binary-ness). The file will be marked as binary, but the
-contents will be incorrect. The workaround is (a) import the binary
-files (but not text files, unless they have been converted to unix
-text files) on unix, or (b) check in the correct contents for the
-binary files after the import is done.
+* Exporting binary files on non-unix clients with "cvs export" does
+not work. The workaround is to use "cvs checkout" instead. If you
+are thinking of fixing this, check out the comment "For cvs export,
+assume it is a text file." in client.c.
+
+
+* Wrappers do not work client/server, and there are a variety of other
+bugs and annoyances with wrappers.
* Some people have reported seeing the message "dying gasps from %s
diff --git a/gnu/usr.bin/cvs/ChangeLog b/gnu/usr.bin/cvs/ChangeLog
index 23c5a3d37f6..af4807f67ce 100644
--- a/gnu/usr.bin/cvs/ChangeLog
+++ b/gnu/usr.bin/cvs/ChangeLog
@@ -1,3 +1,86 @@
+Wed Jun 18 00:00:02 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * NEWS: Mention pserver --allow-root.
+
+Mon Jun 16 19:07:34 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * Makefile.in (SUBDIRS): Add emx.
+ * configure.in (AC_OUTPUT): Add emx.
+ * configure: Regenerated.
+
+Sun Jun 8 23:44:00 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * configure.in (AC_CHECK_FUNCS): Remove mkfifo; not used anywhere.
+ * configure, config.h.in: Regenerated.
+
+Thu May 29 15:53:06 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * DEVEL-CVS: Add "Policy regarding checkout-only access" to
+ replace parenthetical remark about checkout-only access. This is
+ more of a cosmetic/editorial change than a new policy.
+
+Wed May 21 17:02:29 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * BUGS: Add item about wrappers.
+
+Fri May 16 13:43:53 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * BUGS: Add item about "cvs export" and binary files.
+
+Sun May 11 11:38:03 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README.VMS: Remove information about "direct TCP". Noone has
+ been complaining about it being broken (the code bitrotted not long
+ after it was written), nor has anyone complained
+ that contrib/listener.c was omitted from the distribution (because
+ it wasn't mentioned in contrib/Makefile.in DISTFILES). If there
+ is a desire to resurrect such a feature, it should use port 2401
+ as now discussed in doc/cvsclient.texi.
+
+Thu May 8 12:14:40 1997 Larry Jones <larry.jones@sdrc.com>
+ and Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * INSTALL: Update MIPS/SGI Irix 6.2
+ * TESTS: Add note about TESTDIR and SGI Irix 6's XFS.
+
+Wed May 7 12:01:21 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * TODO: Fix keywords accidentally expanded in previous checkin.
+
+ * TODO: Add item #185, concerning keyword expansion and merges.
+
+Sun May 4 19:46:03 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README: Replace section on reporting bugs with a reference to
+ the bug-reporting section in cvs.texinfo.
+
+Fri May 2 22:50:04 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * BUGS: Remove item about importing binary files; the bug is fixed.
+
+Sun Apr 27 19:54:34 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * INSTALL: Refer to doc/DIFFUTILS-2.7-BUG.
+
+ * INSTALL: Don't mention GREP; CVS no longer uses it.
+
+ * configure.in: Add comment about --bindir.
+
+Thu Apr 24 15:21:17 1997 Norbert Kiesel <nk@cosa.de>
+
+ * configure.in (AC_CHECK_FUNCS): added tempnam and mktemp
+ * config.h.in, configure: Regenerated with autoconf 2.10.
+
+21 Apr 1997 Jim Kingdon
+
+ * cvsnt.mak: Visual C++, as usual, wants to fiddle with this.
+ This time it would appear to be chiefly the dependencies.
+
+Mon Apr 21 01:06:31 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * NEWS: Document that the client no longer needs an external patch
+ program.
+
Thu Apr 17 14:28:20 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
* TODO: Combine items 150 and 181 since they are basically the same.
diff --git a/gnu/usr.bin/cvs/DEVEL-CVS b/gnu/usr.bin/cvs/DEVEL-CVS
index defbba51032..fe8a8632198 100644
--- a/gnu/usr.bin/cvs/DEVEL-CVS
+++ b/gnu/usr.bin/cvs/DEVEL-CVS
@@ -43,8 +43,7 @@ distribution of such items under the terms of the GNU Public License.
----------------------------------------------------------------------
Procedure for dealing with people who want to be developers:
-People who want checkin access (checkout-only access is available primarily
-via snapshots, for technical reasons) are first requested to send
+People who want checkin access are first requested to send
patches and have them reviewed by a developer. If they submit some
good ones (preferably over a period of time, to demonstrate sustained
interest), then one of the developers can ask the devel-cvs mailing
@@ -52,3 +51,11 @@ list whether it is OK to make this person a developer (after first
sending the prospective developer a copy of this file and then having
the prospective developer say they want to be a developer). If there
are no objections, an account will be created.
+
+----------------------------------------------------------------------
+Policy regarding checkout-only access:
+
+Checkout-only access to the CVS repository is available to all, on an
+anonymous basis (no need for registration or other complications).
+The exact technical mechanisms by which it is available are not
+covered by this policy.
diff --git a/gnu/usr.bin/cvs/INSTALL b/gnu/usr.bin/cvs/INSTALL
index 253e7b17081..56328345c86 100644
--- a/gnu/usr.bin/cvs/INSTALL
+++ b/gnu/usr.bin/cvs/INSTALL
@@ -57,7 +57,7 @@ MIPS:
DECstation running Ultrix 4.3 (1.8.85)
SGI running Irix 4.0.5H using gcc and cc (about 1.4A2) (footnote 2)
SGI running Irix 5.3 using gcc 2.7.2 (1.8.87)
- SGI running Irix-6 (about 1.4.90) (footnote 3)
+ SGI running Irix-6.2 (1.9.8)
Siemens-Nixdorf RM600 running SINIX-Y (1.6)
PowerPC or RS/6000:
IBM RS/6000 running AIX 3.1 using gcc and cc (1.6.86)
@@ -86,10 +86,6 @@ VAX:
workaround this bug by linking with "-lmalloc" if necessary.
(about 1.4A2).
-(footnote 3)
- There are some warnings about pointer casts which can safely be
- ignored. (about 1.4.90).
-
(footnote 4) Comment out the include of sys/time.h in src/server.c. (1.4.93)
You also may have to make sure TIME_WITH_SYS_TIME is undef'ed.
@@ -167,7 +163,8 @@ distribution, then skip to step 5):
that the RCS configure script finds GNU diff 1.15 or later and
notices that diff supports the -a option. CVS itself is much less
picky about which version of diff it uses, and you shouldn't need
- to worry about that.
+ to worry about that. If you are using GNU diff 2.6 or 2.7, you may
+ want to know about a (subtle) bug described in doc/DIFFUTILS-2.7-BUG.
NOTE: The configure program will cache the results of the previous
configure execution. If you need to re-run configure from scratch, you
@@ -225,7 +222,7 @@ distribution, then skip to step 5):
END OF NOTE FOR NDBM GUNK.
2) Edit src/options.h. Appropriate things to look at may be the
- invocation locations of programs like DIFF and GREP.
+ invocation locations of programs like DIFF.
Also glance at the default values for the environment variables
that CVS uses, in particular, the RCSBIN variable, which holds the
path to where the RCS programs live on your system.
diff --git a/gnu/usr.bin/cvs/NEWS b/gnu/usr.bin/cvs/NEWS
index 9d7ee3a790a..b2827cfd21a 100644
--- a/gnu/usr.bin/cvs/NEWS
+++ b/gnu/usr.bin/cvs/NEWS
@@ -1,5 +1,14 @@
Changes since 1.9:
+* When setting up the pserver server, one now must specify the
+allowable CVSROOT directories in inetd.conf. See the Password
+authentication server section of cvs.texinfo for details. Note that
+this implies that everyone who is running a pserver server must edit
+inetd.conf when upgrading their CVS.
+
+* The client no longer needs an external patch program (assuming both
+the client and the server have been updated to the new version).
+
* "cvs admin [options]" will now recurse. In previous versions of
CVS, it was an error and one needed to specify "cvs admin [options] ."
to recurse. This change brings admin in line with the other CVS
diff --git a/gnu/usr.bin/cvs/README b/gnu/usr.bin/cvs/README
index 620426c12f1..977ddcb480e 100644
--- a/gnu/usr.bin/cvs/README
+++ b/gnu/usr.bin/cvs/README
@@ -19,29 +19,18 @@
Welcome to CVS!
-Bug reports are accepted, however note that someone may or may not
-feel like taking care of your bug report. Support contracts are
-available from Cyclic Software (http://www.cyclic.com or
-info@cyclic.com).
+If you have problems or think you have found a bug in CVS, see the
+section BUGS in the CVS manual (also known as Version Management with
+CVS by Per Cederqvist et al, or cvs.texinfo--see below for details).
-To report bugs send mail to bug-cvs@prep.ai.mit.edu, or run the "cvsbug"
-program and fill out the template:
-
- $ cvsbug
-
-The "cvsbug" program is installed in the same location as the "cvs"
-program. If your installation failed, you may need to run "cvsbug"
-directly out of the "src" directory as "src/cvsbug.sh". This is also
-the procedure for submitting suggested changes to CVS (see the file
-HACKING for more details). Note that all submitted changes may be
-distributed under the terms of the GNU Public License, so if you don't
-like this, don't submit them.
+If you are thinking of submitting changes to CVS, see the
+file HACKING.
Please consult the INSTALL file for information on tested
configurations. If you have a comment about an already tested
-configuration, or have tried CVS on a new configuration, please write
-to the above address and let us know! Free software only works if we
-all help out.
+configuration, or have tried CVS on a new configuration, please let us
+know as described in INSTALL. Free software only works if we all help
+out.
Finally, we cannot guarantee that this release will not completely wipe out
all of your work from your system. We do some simple testing before each
diff --git a/gnu/usr.bin/cvs/README.VMS b/gnu/usr.bin/cvs/README.VMS
index c7f64a72e59..b32ed8f995b 100644
--- a/gnu/usr.bin/cvs/README.VMS
+++ b/gnu/usr.bin/cvs/README.VMS
@@ -48,62 +48,17 @@ $ CVS :== $YOUR_DEVICE:[YOUR.DIRECTORY.CVS]CVS.EXE
Accessing a remote repository can happen in several ways.
-0. pserver
-1. Direct TCP using a listener process running on the CVS server.
- (unprivileged)
+1. pserver
2. rsh - privileged (default)
3. rsh - unprivileged (on VMS side)
Here's how to do each of the above:
-------------------------------------------------------------------------------
-0. pserver. This is the preferred way. It works just as it is
+1. pserver. This is the preferred way. It works just as it is
documented in the CVS manual (see the README file in the CVS
distribution for more information on the manual).
-1. Using direct TCP to communicate with a CVS server. This method is
-broken in the current version of CVS; the following text is included
-for historical information but will be removed once we have verified
-that the so-called "direct TCP" is not worth resurrecting.
-
-Compile the file contrib/listener.c on the machine which will be the CVS
-server. For each developer using the CVS client, choose a unique TCP port
-number. This listener program is run on the server after defining a pair of
-environment variables, and acts as a proxy for the VMS client, which is
-authenticated only by reverse address resolution of hostname.
-
-Commits to the repository on a particular port will seen by the repository
-as being from the same user.
-
-On the VMS side, you will need to define the logical CVS_CLIENT_PORT. Here's
-an example:
-
-$ DEFINE CVS_CLIENT_PORT 3050
-
-This will direct CVS to expect a direct connection to the CVS server on
-TCP port 3050 on whatever host is defined as the respository (whether through
-CVSROOT or the "-d" command option.
-
-The repository must have a full (client/server) CVS installed. Choose a
-TCP port number (say 3050) [with coordination of your network administrator]
-for YOUR CVS transactions. Each user of CVS under this arrangement will
-require a separate port. Again, commits to the same port from the same
-host are all attributed to the user running the listener. Invoke listener
-as follows (asuming csh syntax)
-
-% setenv SERVER_PORT 3050
-% setenv SERVER_ALLOW my.vms.host.com
-% listener /my_cvs_path/cvs server &
-
-This will set up the CVS server to listen for connections on port 3050
-(instead of running through rsh, inetd, etc.). It will immediately
-terminate the connection if the IP address of the connection does not
-resolve to "my.vms.host.com". This at least gives some measure of the
-host control access afforded by rsh. If the connection is not
-terminated, then the command "/my_cvs_path/cvs server" is invoked and
-it's stdin/stdout is redirected through the port. Listener is used as
-a "poor man's (unprivileged) inetd".
-
-------------------------------------------------------------------------------
2. Using CVS internal rsh support (privileged)
diff --git a/gnu/usr.bin/cvs/TESTS b/gnu/usr.bin/cvs/TESTS
index 15161ec71c2..39a38a9292e 100644
--- a/gnu/usr.bin/cvs/TESTS
+++ b/gnu/usr.bin/cvs/TESTS
@@ -11,6 +11,13 @@ pathname of a shell which handles normal shell functions:
WARNING: This test can take quite a while to run, esp. if your
disks are slow or over-loaded.
+The tests work in /tmp/cvs-sanity (which the tests create) by default.
+If for some reason you want them to work in a different directory, you
+can set the TESTDIR environment variable to the desired location
+before running them. In particular, using SGI's Irix 6, the tests
+will fail if TESTDIR is an XFS filesystem (which /tmp often is);
+you'll want to set TESTDIR to a non-XFS filesystem.
+
You will probably need GNU expr, which is part of the GNU sh-utils
package (this is just for running the tests; CVS itself doesn't use
expr).
diff --git a/gnu/usr.bin/cvs/TODO b/gnu/usr.bin/cvs/TODO
index 179a1804971..7a9a8166c9d 100644
--- a/gnu/usr.bin/cvs/TODO
+++ b/gnu/usr.bin/cvs/TODO
@@ -400,3 +400,23 @@ the FreeBSD Handbook, and src/lib/libcrypt/crypt.c in the FreeBSD
sources. Certainly in the context of non-unix servers this algorithm
makes more sense than the traditional unix crypt() algorithm, which
suffers from export control problems.
+
+185. A frequent complaint is that keyword expansion causes conflicts
+when merging from one branch to another. The first step is
+documenting CVS's existing features in this area--what happens with
+various -k options in various places? The second step is thinking
+about whether there should be some new feature and if so how it should
+be designed. For example, here is one thought:
+
+ rcs' co command needs a new -k option. The new option should expand
+ $Log entries without expanding $Revision entries. This would
+ allow cvs to use rcsmerge in such a way that joining branches into
+ main lines would neither generate extra collisions on revisions nor
+ drop log lines.
+
+The details of this are out of date (CVS no longer invokes "co", and
+any changes in this area would be done by bypassing RCS rather than
+modifying it), but even as to the general idea, I don't have a clear
+idea about whether it would be good (see what I mean about the need
+for better documentation? I work on CVS full-time, and even I don't
+understand the state of the art on this subject).
diff --git a/gnu/usr.bin/cvs/config.h.in b/gnu/usr.bin/cvs/config.h.in
index 3b0fe39f418..ce5ee499762 100644
--- a/gnu/usr.bin/cvs/config.h.in
+++ b/gnu/usr.bin/cvs/config.h.in
@@ -105,8 +105,8 @@
/* Define if you have the krb_get_err_text function. */
#undef HAVE_KRB_GET_ERR_TEXT
-/* Define if you have the mkfifo function. */
-#undef HAVE_MKFIFO
+/* Define if you have the mktemp function. */
+#undef HAVE_MKTEMP
/* Define if you have the putenv function. */
#undef HAVE_PUTENV
@@ -129,6 +129,9 @@
/* Define if you have the sigvec function. */
#undef HAVE_SIGVEC
+/* Define if you have the tempnam function. */
+#undef HAVE_TEMPNAM
+
/* Define if you have the timezone function. */
#undef HAVE_TIMEZONE
diff --git a/gnu/usr.bin/cvs/contrib/.cvsignore b/gnu/usr.bin/cvs/contrib/.cvsignore
index deb5efc5de7..0cc730565ea 100644
--- a/gnu/usr.bin/cvs/contrib/.cvsignore
+++ b/gnu/usr.bin/cvs/contrib/.cvsignore
@@ -5,6 +5,9 @@ commit_prep
cvs2vendor
cvs_acls
cvscheck
+Debug
+listen2.mdp
+listen2.ncb
log
log_accum
mfpipe
diff --git a/gnu/usr.bin/cvs/contrib/ChangeLog b/gnu/usr.bin/cvs/contrib/ChangeLog
index 95507335ca7..0c45efae923 100644
--- a/gnu/usr.bin/cvs/contrib/ChangeLog
+++ b/gnu/usr.bin/cvs/contrib/ChangeLog
@@ -1,3 +1,20 @@
+17 May 1997 Jim Kingdon
+
+ * listen2.c: Failed attempt at making this do what it was
+ intended to do. Will need to rethink the approach.
+ * listen2.mak: The usual involuntary tweaks.
+ * .cvsignore: Add listen2.ncb listen2.mdp.
+
+Mon May 12 11:59:23 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * listener.c: Removed; see ../ChangeLog for rationale.
+
+10 May 1997 Jim Kingdon
+
+ * listen2.c, listen2.mak: New files.
+ * Makefile.in (DISTFILES): Add them.
+ * .cvsignore: Add Debug.
+
Thu Feb 20 22:43:45 1997 David J MacKenzie <djm@va.pubnix.com>
* rcs-to-cvs.sh: Put temporary files in /var/tmp or /usr/tmp
diff --git a/gnu/usr.bin/cvs/contrib/listen2.c b/gnu/usr.bin/cvs/contrib/listen2.c
new file mode 100644
index 00000000000..20cfc6cd455
--- /dev/null
+++ b/gnu/usr.bin/cvs/contrib/listen2.c
@@ -0,0 +1,107 @@
+/* This will develop into the inted-like program which
+ we may want to use for a server on Win95/NT. Right now
+ it is just a test program ("telnet foo 2401" and you'll
+ get a message). */
+
+#include <winsock.h>
+#include <stdio.h>
+#include <io.h>
+#include <process.h>
+
+int
+main ()
+{
+ struct sockaddr_in sa;
+ SOCKET t;
+ SOCKET s;
+ WSADATA data;
+
+ if (WSAStartup (MAKEWORD (1, 1), &data))
+ {
+ fprintf (stderr, "cvs: unable to initialize winsock\n");
+ exit (1);
+ }
+
+ t = socket (PF_INET, SOCK_STREAM, 0);
+ if (t == INVALID_SOCKET)
+ {
+ printf ("Error in socket(): %d\n", WSAGetLastError ());
+ exit (1);
+ }
+ sa.sin_family = AF_INET;
+ sa.sin_addr.s_addr = INADDR_ANY;
+ sa.sin_port = htons (2401);
+ if (bind (t, (struct sockaddr *) &sa, sizeof (sa)) != 0)
+ {
+ printf ("Cannot bind(): %d\n", WSAGetLastError ());
+ exit (1);
+ }
+ if (listen (t, 1) != 0)
+ {
+ printf ("Cannot listen(): %d\n", WSAGetLastError ());
+ exit (1);
+ }
+ while (1)
+ {
+ int sasize = sizeof (sa);
+
+#if 0
+ int save_stdin, save_stdout;
+#endif
+
+ s = accept (t, (struct sockaddr *) &sa, &sasize);
+ if (s == INVALID_SOCKET)
+ {
+ printf ("Cannot accept(): %d\n", WSAGetLastError ());
+ exit (1);
+ }
+#if 0
+ /* This, of course, does not work because sockets are
+ not file descriptors and file descriptors are not
+ sockets. Duh! */
+ save_stdin = _dup (0);
+ if (save_stdin < 0)
+ {
+ printf ("Cannot save stdin: %s\n", strerror (errno));
+ exit (1);
+ }
+ save_stdout = _dup (1);
+ if (save_stdout < 0)
+ {
+ printf ("Cannot save stdout: %s\n", strerror (errno));
+ exit (1);
+ }
+ if (_dup2 (s, 0) < 0)
+ {
+ printf ("Cannot dup stdin: %s\n", strerror (errno));
+ exit (1);
+ }
+ if (_dup2 (s, 1) < 0)
+ {
+ printf ("Cannot dup stdout: %s\n", strerror (errno));
+ exit (1);
+ }
+ /* Of course this will be "cvs" eventually, but "netstat"
+ is for testing. */
+ if (_spawnl (_P_DETACH, "netstat", "netstat", NULL) < 0)
+ {
+ printf ("Cannot spawn subprocess: %s\n", strerror (errno));
+ exit (1);
+ }
+#else
+ if (send (s, "hello, world\n", 13, 0) == SOCKET_ERROR)
+ {
+ /* Note that we do not detect the case in which we sent
+ less than the requested number of bytes. */
+ printf ("Cannot send(): %d\n", WSAGetLastError ());
+ exit (1);
+ }
+#endif
+ if (closesocket (s) != 0)
+ {
+ printf ("Cannot closesocket(): %d\n", WSAGetLastError ());
+ exit (1);
+ }
+ }
+ return 0;
+}
diff --git a/gnu/usr.bin/cvs/contrib/listen2.mak b/gnu/usr.bin/cvs/contrib/listen2.mak
new file mode 100644
index 00000000000..12a80cede84
--- /dev/null
+++ b/gnu/usr.bin/cvs/contrib/listen2.mak
@@ -0,0 +1,188 @@
+# Microsoft Developer Studio Generated NMAKE File, Format Version 40001
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+!IF "$(CFG)" == ""
+CFG=listen2 - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to listen2 - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "listen2 - Win32 Release" && "$(CFG)" !=\
+ "listen2 - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE on this makefile
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "listen2.mak" CFG="listen2 - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "listen2 - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "listen2 - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+################################################################################
+# Begin Project
+RSC=rc.exe
+CPP=cl.exe
+
+!IF "$(CFG)" == "listen2 - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+OUTDIR=.\Release
+INTDIR=.\Release
+
+ALL : "$(OUTDIR)\listen2.exe"
+
+CLEAN :
+ -@erase ".\Release\listen2.exe"
+ -@erase ".\Release\listen2.obj"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE"\
+ /Fp"$(INTDIR)/listen2.pch" /YX /Fo"$(INTDIR)/" /c
+CPP_OBJS=.\Release/
+CPP_SBRS=
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/listen2.bsc"
+BSC32_SBRS=
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib wsock32.lib /nologo /subsystem:console /machine:I386
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
+ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib wsock32.lib /nologo\
+ /subsystem:console /incremental:no /pdb:"$(OUTDIR)/listen2.pdb" /machine:I386\
+ /out:"$(OUTDIR)/listen2.exe"
+LINK32_OBJS= \
+ "$(INTDIR)/listen2.obj"
+
+"$(OUTDIR)\listen2.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ELSEIF "$(CFG)" == "listen2 - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+OUTDIR=.\Debug
+INTDIR=.\Debug
+
+ALL : "$(OUTDIR)\listen2.exe"
+
+CLEAN :
+ -@erase ".\Debug\listen2.exe"
+ -@erase ".\Debug\listen2.obj"
+ -@erase ".\Debug\listen2.ilk"
+ -@erase ".\Debug\listen2.pdb"
+ -@erase ".\Debug\vc40.pdb"
+ -@erase ".\Debug\vc40.idb"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+CPP_PROJ=/nologo /MLd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE"\
+ /Fp"$(INTDIR)/listen2.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c
+CPP_OBJS=.\Debug/
+CPP_SBRS=
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/listen2.bsc"
+BSC32_SBRS=
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib wsock32.lib /nologo /subsystem:console /debug /machine:I386
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
+ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib wsock32.lib /nologo\
+ /subsystem:console /incremental:yes /pdb:"$(OUTDIR)/listen2.pdb" /debug\
+ /machine:I386 /out:"$(OUTDIR)/listen2.exe"
+LINK32_OBJS= \
+ "$(INTDIR)/listen2.obj"
+
+"$(OUTDIR)\listen2.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF
+
+.c{$(CPP_OBJS)}.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.cpp{$(CPP_OBJS)}.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.cxx{$(CPP_OBJS)}.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.c{$(CPP_SBRS)}.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+.cpp{$(CPP_SBRS)}.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+.cxx{$(CPP_SBRS)}.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+################################################################################
+# Begin Target
+
+# Name "listen2 - Win32 Release"
+# Name "listen2 - Win32 Debug"
+
+!IF "$(CFG)" == "listen2 - Win32 Release"
+
+!ELSEIF "$(CFG)" == "listen2 - Win32 Debug"
+
+!ENDIF
+
+################################################################################
+# Begin Source File
+
+SOURCE=.\listen2.c
+
+"$(INTDIR)\listen2.obj" : $(SOURCE) "$(INTDIR)"
+
+
+# End Source File
+# End Target
+# End Project
+################################################################################
diff --git a/gnu/usr.bin/cvs/cvsnt.mak b/gnu/usr.bin/cvs/cvsnt.mak
index 31f5a7d6daf..77fdc5065e2 100644
--- a/gnu/usr.bin/cvs/cvsnt.mak
+++ b/gnu/usr.bin/cvs/cvsnt.mak
@@ -542,6 +542,29 @@ DEP_CPP_MKMOD=\
".\src\cvs.h"\
".\lib\savecwd.h"\
".\lib\getline.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_MKMOD=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\mkmodules.obj" : $(SOURCE) $(DEP_CPP_MKMOD) "$(INTDIR)"
@@ -556,6 +579,29 @@ SOURCE=.\src\subr.c
DEP_CPP_SUBR_=\
".\src\cvs.h"\
".\lib\getline.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_SUBR_=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\subr.obj" : $(SOURCE) $(DEP_CPP_SUBR_) "$(INTDIR)"
@@ -569,6 +615,29 @@ DEP_CPP_SUBR_=\
SOURCE=.\src\admin.c
DEP_CPP_ADMIN=\
".\src\cvs.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_ADMIN=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\admin.obj" : $(SOURCE) $(DEP_CPP_ADMIN) "$(INTDIR)"
@@ -588,6 +657,28 @@ DEP_CPP_SERVE=\
".\lib\getline.h"\
".\src\buffer.h"\
{$(INCLUDE)}"\sys\Types.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_SERVE=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\server.obj" : $(SOURCE) $(DEP_CPP_SERVE) "$(INTDIR)"
@@ -601,6 +692,29 @@ DEP_CPP_SERVE=\
SOURCE=.\src\diff.c
DEP_CPP_DIFF_=\
".\src\cvs.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_DIFF_=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\diff.obj" : $(SOURCE) $(DEP_CPP_DIFF_) "$(INTDIR)"
@@ -619,6 +733,28 @@ DEP_CPP_CLIEN=\
".\src\edit.h"\
".\src\buffer.h"\
".\lib\md5.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_CLIEN=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\client.obj" : $(SOURCE) $(DEP_CPP_CLIEN) "$(INTDIR)"
@@ -632,6 +768,29 @@ DEP_CPP_CLIEN=\
SOURCE=.\src\checkout.c
DEP_CPP_CHECK=\
".\src\cvs.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_CHECK=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\checkout.obj" : $(SOURCE) $(DEP_CPP_CHECK) "$(INTDIR)"
@@ -645,6 +804,29 @@ DEP_CPP_CHECK=\
SOURCE=.\src\no_diff.c
DEP_CPP_NO_DI=\
".\src\cvs.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_NO_DI=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\no_diff.obj" : $(SOURCE) $(DEP_CPP_NO_DI) "$(INTDIR)"
@@ -659,6 +841,29 @@ SOURCE=.\src\entries.c
DEP_CPP_ENTRI=\
".\src\cvs.h"\
".\lib\getline.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_ENTRI=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\entries.obj" : $(SOURCE) $(DEP_CPP_ENTRI) "$(INTDIR)"
@@ -673,6 +878,29 @@ SOURCE=.\src\tag.c
DEP_CPP_TAG_C=\
".\src\cvs.h"\
".\lib\savecwd.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_TAG_C=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\tag.obj" : $(SOURCE) $(DEP_CPP_TAG_C) "$(INTDIR)"
@@ -686,6 +914,29 @@ DEP_CPP_TAG_C=\
SOURCE=.\src\rtag.c
DEP_CPP_RTAG_=\
".\src\cvs.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_RTAG_=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\rtag.obj" : $(SOURCE) $(DEP_CPP_RTAG_) "$(INTDIR)"
@@ -699,6 +950,29 @@ DEP_CPP_RTAG_=\
SOURCE=.\src\status.c
DEP_CPP_STATU=\
".\src\cvs.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_STATU=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\status.obj" : $(SOURCE) $(DEP_CPP_STATU) "$(INTDIR)"
@@ -713,6 +987,29 @@ SOURCE=.\src\root.c
DEP_CPP_ROOT_=\
".\src\cvs.h"\
".\lib\getline.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_ROOT_=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\root.obj" : $(SOURCE) $(DEP_CPP_ROOT_) "$(INTDIR)"
@@ -727,6 +1024,29 @@ SOURCE=.\src\myndbm.c
DEP_CPP_MYNDB=\
".\src\cvs.h"\
".\lib\getline.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_MYNDB=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\myndbm.obj" : $(SOURCE) $(DEP_CPP_MYNDB) "$(INTDIR)"
@@ -740,6 +1060,29 @@ DEP_CPP_MYNDB=\
SOURCE=.\src\hash.c
DEP_CPP_HASH_=\
".\src\cvs.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_HASH_=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\hash.obj" : $(SOURCE) $(DEP_CPP_HASH_) "$(INTDIR)"
@@ -754,6 +1097,29 @@ SOURCE=.\src\repos.c
DEP_CPP_REPOS=\
".\src\cvs.h"\
".\lib\getline.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_REPOS=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\repos.obj" : $(SOURCE) $(DEP_CPP_REPOS) "$(INTDIR)"
@@ -768,6 +1134,29 @@ SOURCE=.\src\parseinfo.c
DEP_CPP_PARSE=\
".\src\cvs.h"\
".\lib\getline.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_PARSE=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\parseinfo.obj" : $(SOURCE) $(DEP_CPP_PARSE) "$(INTDIR)"
@@ -781,6 +1170,29 @@ DEP_CPP_PARSE=\
SOURCE=.\src\vers_ts.c
DEP_CPP_VERS_=\
".\src\cvs.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_VERS_=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\vers_ts.obj" : $(SOURCE) $(DEP_CPP_VERS_) "$(INTDIR)"
@@ -796,6 +1208,29 @@ DEP_CPP_CHECKI=\
".\src\cvs.h"\
".\src\fileattr.h"\
".\src\edit.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_CHECKI=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\checkin.obj" : $(SOURCE) $(DEP_CPP_CHECKI) "$(INTDIR)"
@@ -812,6 +1247,29 @@ DEP_CPP_COMMI=\
".\lib\getline.h"\
".\src\edit.h"\
".\src\fileattr.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_COMMI=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\commit.obj" : $(SOURCE) $(DEP_CPP_COMMI) "$(INTDIR)"
@@ -825,6 +1283,29 @@ DEP_CPP_COMMI=\
SOURCE=.\src\version.c
DEP_CPP_VERSI=\
".\src\cvs.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_VERSI=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\version.obj" : $(SOURCE) $(DEP_CPP_VERSI) "$(INTDIR)"
@@ -839,6 +1320,29 @@ SOURCE=.\src\cvsrc.c
DEP_CPP_CVSRC=\
".\src\cvs.h"\
".\lib\getline.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_CVSRC=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\cvsrc.obj" : $(SOURCE) $(DEP_CPP_CVSRC) "$(INTDIR)"
@@ -852,6 +1356,29 @@ DEP_CPP_CVSRC=\
SOURCE=.\src\remove.c
DEP_CPP_REMOV=\
".\src\cvs.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_REMOV=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\remove.obj" : $(SOURCE) $(DEP_CPP_REMOV) "$(INTDIR)"
@@ -871,6 +1398,29 @@ DEP_CPP_UPDAT=\
".\src\fileattr.h"\
".\src\edit.h"\
".\lib\getline.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_UPDAT=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\update.obj" : $(SOURCE) $(DEP_CPP_UPDAT) "$(INTDIR)"
@@ -885,6 +1435,29 @@ SOURCE=.\src\logmsg.c
DEP_CPP_LOGMS=\
".\src\cvs.h"\
".\lib\getline.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_LOGMS=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\logmsg.obj" : $(SOURCE) $(DEP_CPP_LOGMS) "$(INTDIR)"
@@ -898,6 +1471,29 @@ DEP_CPP_LOGMS=\
SOURCE=.\src\classify.c
DEP_CPP_CLASS=\
".\src\cvs.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_CLASS=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\classify.obj" : $(SOURCE) $(DEP_CPP_CLASS) "$(INTDIR)"
@@ -912,6 +1508,29 @@ SOURCE=.\src\history.c
DEP_CPP_HISTO=\
".\src\cvs.h"\
".\lib\savecwd.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_HISTO=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\history.obj" : $(SOURCE) $(DEP_CPP_HISTO) "$(INTDIR)"
@@ -926,6 +1545,29 @@ SOURCE=.\src\add.c
DEP_CPP_ADD_C=\
".\src\cvs.h"\
".\lib\savecwd.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_ADD_C=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\add.obj" : $(SOURCE) $(DEP_CPP_ADD_C) "$(INTDIR)"
@@ -939,6 +1581,29 @@ DEP_CPP_ADD_C=\
SOURCE=.\src\lock.c
DEP_CPP_LOCK_=\
".\src\cvs.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_LOCK_=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\lock.obj" : $(SOURCE) $(DEP_CPP_LOCK_) "$(INTDIR)"
@@ -955,6 +1620,29 @@ DEP_CPP_RECUR=\
".\lib\savecwd.h"\
".\src\fileattr.h"\
".\src\edit.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_RECUR=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\recurse.obj" : $(SOURCE) $(DEP_CPP_RECUR) "$(INTDIR)"
@@ -969,6 +1657,29 @@ SOURCE=.\src\modules.c
DEP_CPP_MODUL=\
".\src\cvs.h"\
".\lib\savecwd.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_MODUL=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\modules.obj" : $(SOURCE) $(DEP_CPP_MODUL) "$(INTDIR)"
@@ -982,6 +1693,29 @@ DEP_CPP_MODUL=\
SOURCE=.\src\find_names.c
DEP_CPP_FIND_=\
".\src\cvs.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_FIND_=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\find_names.obj" : $(SOURCE) $(DEP_CPP_FIND_) "$(INTDIR)"
@@ -995,6 +1729,29 @@ DEP_CPP_FIND_=\
SOURCE=.\src\rcs.c
DEP_CPP_RCS_C=\
".\src\cvs.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_RCS_C=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\rcs.obj" : $(SOURCE) $(DEP_CPP_RCS_C) "$(INTDIR)"
@@ -1008,6 +1765,29 @@ DEP_CPP_RCS_C=\
SOURCE=.\src\create_adm.c
DEP_CPP_CREAT=\
".\src\cvs.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_CREAT=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\create_adm.obj" : $(SOURCE) $(DEP_CPP_CREAT) "$(INTDIR)"
@@ -1021,6 +1801,29 @@ DEP_CPP_CREAT=\
SOURCE=.\src\main.c
DEP_CPP_MAIN_=\
".\src\cvs.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_MAIN_=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\main.obj" : $(SOURCE) $(DEP_CPP_MAIN_) "$(INTDIR)"
@@ -1035,6 +1838,29 @@ SOURCE=.\src\patch.c
DEP_CPP_PATCH=\
".\src\cvs.h"\
".\lib\getline.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_PATCH=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\patch.obj" : $(SOURCE) $(DEP_CPP_PATCH) "$(INTDIR)"
@@ -1049,6 +1875,29 @@ SOURCE=.\src\release.c
DEP_CPP_RELEA=\
".\src\cvs.h"\
".\lib\getline.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_RELEA=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\release.obj" : $(SOURCE) $(DEP_CPP_RELEA) "$(INTDIR)"
@@ -1062,6 +1911,29 @@ DEP_CPP_RELEA=\
SOURCE=.\src\rcscmds.c
DEP_CPP_RCSCM=\
".\src\cvs.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_RCSCM=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\rcscmds.obj" : $(SOURCE) $(DEP_CPP_RCSCM) "$(INTDIR)"
@@ -1076,6 +1948,29 @@ SOURCE=.\src\import.c
DEP_CPP_IMPOR=\
".\src\cvs.h"\
".\lib\savecwd.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_IMPOR=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\import.obj" : $(SOURCE) $(DEP_CPP_IMPOR) "$(INTDIR)"
@@ -1090,6 +1985,29 @@ SOURCE=.\src\ignore.c
DEP_CPP_IGNOR=\
".\src\cvs.h"\
".\lib\getline.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_IGNOR=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\ignore.obj" : $(SOURCE) $(DEP_CPP_IGNOR) "$(INTDIR)"
@@ -1103,6 +2021,29 @@ DEP_CPP_IGNOR=\
SOURCE=.\src\log.c
DEP_CPP_LOG_C=\
".\src\cvs.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_LOG_C=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\log.obj" : $(SOURCE) $(DEP_CPP_LOG_C) "$(INTDIR)"
@@ -1117,6 +2058,29 @@ SOURCE=.\src\wrapper.c
DEP_CPP_WRAPP=\
".\src\cvs.h"\
".\lib\getline.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_WRAPP=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\wrapper.obj" : $(SOURCE) $(DEP_CPP_WRAPP) "$(INTDIR)"
@@ -1130,6 +2094,29 @@ DEP_CPP_WRAPP=\
SOURCE=.\src\error.c
DEP_CPP_ERROR=\
".\src\cvs.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_ERROR=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\error.obj" : $(SOURCE) $(DEP_CPP_ERROR) "$(INTDIR)"
@@ -1144,6 +2131,28 @@ SOURCE=.\src\expand_path.c
DEP_CPP_EXPAN=\
".\src\cvs.h"\
{$(INCLUDE)}"\sys\Types.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_EXPAN=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\expand_path.obj" : $(SOURCE) $(DEP_CPP_EXPAN) "$(INTDIR)"
@@ -1161,6 +2170,29 @@ DEP_CPP_EDIT_=\
".\src\watch.h"\
".\src\edit.h"\
".\src\fileattr.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_EDIT_=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\edit.obj" : $(SOURCE) $(DEP_CPP_EDIT_) "$(INTDIR)"
@@ -1176,6 +2208,29 @@ DEP_CPP_FILEA=\
".\src\cvs.h"\
".\lib\getline.h"\
".\src\fileattr.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_FILEA=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\fileattr.obj" : $(SOURCE) $(DEP_CPP_FILEA) "$(INTDIR)"
@@ -1192,6 +2247,29 @@ DEP_CPP_WATCH=\
".\src\edit.h"\
".\src\fileattr.h"\
".\src\watch.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_WATCH=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\watch.obj" : $(SOURCE) $(DEP_CPP_WATCH) "$(INTDIR)"
@@ -1206,6 +2284,29 @@ SOURCE=.\src\login.c
DEP_CPP_LOGIN=\
".\src\cvs.h"\
".\lib\getline.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_LOGIN=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\login.obj" : $(SOURCE) $(DEP_CPP_LOGIN) "$(INTDIR)"
@@ -1219,6 +2320,29 @@ DEP_CPP_LOGIN=\
SOURCE=.\src\scramble.c
DEP_CPP_SCRAM=\
".\src\cvs.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_SCRAM=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\scramble.obj" : $(SOURCE) $(DEP_CPP_SCRAM) "$(INTDIR)"
@@ -1233,6 +2357,29 @@ SOURCE=.\src\buffer.c
DEP_CPP_BUFFE=\
".\src\cvs.h"\
".\src\buffer.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_BUFFE=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\buffer.obj" : $(SOURCE) $(DEP_CPP_BUFFE) "$(INTDIR)"
@@ -1248,8 +2395,31 @@ DEP_CPP_ZLIB_=\
".\src\cvs.h"\
".\src\buffer.h"\
".\zlib\zlib.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
".\zlib\zconf.h"\
+NODEP_CPP_ZLIB_=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
+
"$(INTDIR)\zlib.obj" : $(SOURCE) $(DEP_CPP_ZLIB_) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
@@ -1521,6 +2691,29 @@ DEP_CPP_VASPR=\
SOURCE=".\windows-NT\mkdir.c"
DEP_CPP_MKDIR=\
".\src\cvs.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_MKDIR=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\mkdir.obj" : $(SOURCE) $(DEP_CPP_MKDIR) "$(INTDIR)"
@@ -1534,6 +2727,29 @@ DEP_CPP_MKDIR=\
SOURCE=".\windows-NT\run.c"
DEP_CPP_RUN_C=\
".\src\cvs.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_RUN_C=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\run.obj" : $(SOURCE) $(DEP_CPP_RUN_C) "$(INTDIR)"
@@ -1560,6 +2776,29 @@ DEP_CPP_PWD_C=\
SOURCE=".\windows-NT\filesubr.c"
DEP_CPP_FILES=\
".\src\cvs.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_FILES=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\filesubr.obj" : $(SOURCE) $(DEP_CPP_FILES) "$(INTDIR)"
@@ -1625,6 +2864,29 @@ SOURCE=".\windows-NT\rcmd.c"
DEP_CPP_RCMD_=\
".\src\cvs.h"\
".\windows-NT\rcmd.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_RCMD_=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\rcmd.obj" : $(SOURCE) $(DEP_CPP_RCMD_) "$(INTDIR)"
@@ -1639,6 +2901,29 @@ SOURCE=".\windows-NT\startserver.c"
DEP_CPP_START=\
".\src\cvs.h"\
".\windows-NT\rcmd.h"\
+ ".\windows-NT\config.h"\
+ ".\windows-NT\options.h"\
+ ".\lib\fnmatch.h"\
+ ".\windows-NT\pwd.h"\
+ ".\lib\system.h"\
+ ".\src\hash.h"\
+ ".\src\client.h"\
+ ".\src\myndbm.h"\
+ ".\lib\regex.h"\
+ ".\lib\getopt.h"\
+ ".\lib\wait.h"\
+ ".\src\rcs.h"\
+ ".\src\update.h"\
+ ".\src\server.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_START=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\startserver.obj" : $(SOURCE) $(DEP_CPP_START) "$(INTDIR)"
diff --git a/gnu/usr.bin/cvs/doc/ChangeLog b/gnu/usr.bin/cvs/doc/ChangeLog
index 182ac42030d..c56c253aaaa 100644
--- a/gnu/usr.bin/cvs/doc/ChangeLog
+++ b/gnu/usr.bin/cvs/doc/ChangeLog
@@ -1,3 +1,290 @@
+Wed Jun 18 00:03:25 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvs.texinfo (Password authentication server): Document
+ --allow-root.
+
+Tue Jun 17 09:58:03 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvs.texinfo (Error messages): Add "unknown option" from RCS.
+
+Fri Jun 13 12:11:09 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvs.texinfo (Global options): Add note about how -n might affect
+ CVS's output.
+
+Thu Jun 12 09:33:40 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvs.texinfo (Other problems): New node. Add discussion of
+ problem with old rcsmerge.
+
+ * cvs.texinfo (Environment variables): Add CVSUMASK.
+
+Mon Jun 2 18:39:57 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvs.texinfo (Moving a repository): New node.
+
+Tue May 27 18:27:57 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvs.texinfo (Working directory storage): Add comment about
+ timestamps.
+ * cvsclient.texi (Responses): Add Mod-time.
+
+Mon May 26 10:04:32 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvs.texinfo (Wrappers): Add comment concerning -t/-f and
+ client/server.
+
+Sun May 25 00:08:39 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvs.texinfo (Multiple vendor branches): New node.
+ (First import, import options, Invoking CVS): xref to it.
+
+Sat May 24 23:47:47 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvs.texinfo (File permissions): Add comment about group
+ ownership in repository and setgid bit on directories.
+
+Fri May 23 17:14:05 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * RCSFILES: Fix typo in dead newphrase description ("an" -> "a").
+
+Fri May 23 16:33:38 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * RCSFILES: Mention dead as a newphrase.
+
+Fri May 23 09:45:39 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvs.texinfo (Builds): In comment, update URL of mk.
+
+Thu May 22 09:25:56 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvs.texinfo (Error messages): Add comment about yet another way
+ to produce a "cannot open CVS/Entries for reading" error.
+
+Tue May 20 17:54:55 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvs.texinfo (Error messages): Add item about EINVAL in rename.
+
+Mon May 19 00:21:49 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvs.texinfo (Keywords in imports): New node.
+ (Tracking sources): Add comment about what a "vendor" is.
+
+ * cvs.texinfo (Keyword substitution): Where it refers to RCS
+ having a certain behavior, rewrite to not pass the buck like
+ that. Saying "RCS file" is still OK; that is a legit CVS
+ concept. A few other minor edits.
+
+Sun May 18 10:24:57 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * RCSFILES: Add list of known newphrase extensions.
+
+ * cvs.texinfo (From other version control systems): Fix typo
+ ("systesm" -> "systems").
+
+ * cvs.texinfo (Exit status): New node.
+ (diff): Replace text on exit status with an xref to that node.
+ The previous text documented a behavior which CVS no longer
+ implements.
+ (user-defined logging, commitinfo, verifymsg, Error messages):
+ Add index entries for "exit status, of <something which CVS invokes>".
+
+ * cvs.texinfo (Administrative files): Add comment concerning
+ writing triggers and particularly performance issues.
+
+ * cvs.texinfo (rtag options, tag options): Don't discuss what old
+ versions did with respect to the behavior now controlled by -F; we
+ don't try to document old versions here. Add comments concerning
+ how -F should be documented. Add index entries for "renaming
+ tags" and such pointing to "tag -F".
+
+Wed May 14 12:16:19 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvs.texinfo (Binary files): Add text and comment about
+ automatically detecting binary files.
+
+Mon May 12 11:55:07 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvsclient.texi (Connection and Authentication): Add item about
+ future expansion.
+
+Thu May 8 11:08:34 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvs.texinfo (Update imports): Add comment about wdiff
+ vs. fsf/wdiff in example.
+
+Wed May 7 13:52:47 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvs.texinfo (checkout): Add comment about need for example
+ regarding what the "module" argument means.
+
+Tue May 6 18:02:27 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvs.texinfo (History browsing): Add comment about looking at old
+ revisions.
+
+Tue May 06 15:05:00 1997 Larry Jones <larry.jones@sdrc.com>
+
+ * cvs.texinfo: More additions/corrections for -R due to recent
+ changes.
+
+Mon Dec 16 15:18:00 1996 Larry Jones <larry.jones@sdrc.com>
+
+ * cvs.texinfo: Added/corrected documentation for -R. (Minor edits
+ by Jim Kingdon to reflect recent changes in cvs.texinfo)
+
+Sun May 4 14:38:35 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvs.texinfo (Compatibility): Add comment about "D" lines in
+ Entries.
+
+ * cvs.texinfo (CVS commands, diff): Change "run diffs" to "show
+ differences"; the former is jargon.
+ (CVS commands): Don't refer to "rlog" in describing what log does.
+
+ * Makefile.in (cvsclient.dvi cvsclient.aux): Run texi2dvi rather
+ than (poorly) emulating it ourself.
+
+ Fix overfull and underfull hboxes:
+ * cvs.texinfo (What is CVS?): Add words "the newsgroup" before
+ "comp.sources.unix".
+ (Credits): Put list of people in @display.
+ (Repository files): Put /usr/local/cvsroot in @example.
+ (Connecting via rsh): Change "anklet" to "toe" in example.
+ (Kerberos authenticated, Password authentication client, Password
+ authentication server): Change "brickyard" to "yard" in example.
+ (Read-only access): Use @example and refer to files with a shorter
+ pathname.
+ (Server temporary directory): Use @example for pathname.
+ (Watches Compatibility): Add phony line break.
+ (Revision numbers): Remove revision 1.2.2.2 and tighten up the
+ spacing for "the main trunk".
+ (Tags, Creating a branch): Change /usr/local/cvsroot to /u/cvsroot.
+ (Merging more than once): Tighten up spacing for "the main trunk".
+ (Recursive behavior): Put long command in @example.
+ (First import): Remove word "called".
+ (Common options): Put long URL in @example.
+ (loginfo example): Use fewer hyphens in example.
+ (Variables): Put long command name in @example.
+ (Copying): Add line break.
+ (Administrative files): Remove "the" from title.
+ (Copying): Change "@unnumberedsec" to two "@heading"s.
+ * cvsclient.texi (Requests): Change /home/kingdon/zwork/cvsroot to
+ /u/cvsroot.
+ (Example): Add word "file".
+ (Example): Change line breaks in example log message.
+ (Example): Change /home/kingdon/testing/cvsroot to /u/cvsroot.
+
+ * cvs.texinfo (Credits): Don't refer to appendix A and B, they
+ have been renumbered. Reword so that it works whether the text in
+ question has since been rewritten or not.
+
+ * cvs.texinfo (BUGS): Rewrite to reflect the many different ways
+ that one might want to handle bugs. Move information on Signum
+ and Cyclic from Preface to here. Remove information on known
+ deficiencies in the manual (some of them I'm not sure were really
+ things in need of improvement; others were too general to be
+ useful). For the most part FIXME comments are probably better for
+ this. Remove "Linkoping, October 1993, Per Cederqvist"--many
+ parts of the manual are now from other people, dates, and places.
+ (What is CVS): For the most part, just refer to BUGS concerning
+ bug-cvs. Also tell people how to subscribe to bug-cvs.
+ (Credits): Say that list is not comprehensive and refer to
+ ChangeLog.
+
+Sat May 3 10:51:58 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvs.texinfo (rcsinfo): Add comment about checkoutlist and
+ related topics.
+
+ * cvs.texinfo (Server temporary directory): New node.
+
+ * cvs.texinfo (Backing up): New node.
+
+ * cvs.texinfo (Repository): Be more explicit about the repository
+ and the working directory not being subdirectories of each other.
+
+Mon Apr 28 11:12:56 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvs.texinfo (Removing files): Use "*.c" not "?.c" in example;
+ the former should be good for both unix and DOS-like operating
+ systems. Document -f option. Refer to Invoking CVS for a full
+ list of options. Add a few comments.
+
+ * cvs.texinfo (Invoking CVS): For checkout and update, call them
+ "sticky options" not "sticky kopts".
+
+ * cvs.texinfo (Editing files): Add additional comments on get
+ vs. checkout.
+
+Sun Apr 27 16:17:06 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvs.texinfo (commit): Only document the current flags (where -f
+ is force and -F file gets the message from a log file). We had
+ partly made this change on 9 Feb 1997, but some places got missed.
+
+ * RCSFILES: Add discussion of the common concern regarding
+ applying deltas to get to a branch head.
+
+ * DIFFUTILS-2.7-BUG: New file.
+
+ * cvs.texinfo (File status): Refer to "Invoking CVS", not
+ "status", for status options. Add paragraph about how "cvs -n -q
+ update" is another way to display file status.
+ (update examples): Removed; it had contained the "cvs -n -q
+ update" material.
+ (Invoking CVS): xref to "File status" and "Tags", not "status" and
+ "status options".
+ (status, status options): Removed.
+ (update options, checkout options): xref to "Invoking CVS"
+ not "status".
+
+ * cvsclient.texi (Requests): Clarify how long-lived Sticky and
+ Static-directory are.
+
+ * cvs.texinfo: Add @finalout.
+
+ * cvs.texinfo (Error messages): Add "cannot change permissions on
+ temporary directory" message.
+
+Wed Apr 23 12:53:45 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvsclient.texi (Requests): Document "add" in much more detail.
+
+Wed Apr 23 00:38:17 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * cvsclient.texi (Requests): Correct small typo (`a' for `as').
+
+Tue Apr 22 14:23:32 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvsclient.texi (Protocol Notes): Expand ideas on multisite
+ features somewhat. Add items about the network turnarounds for
+ pserver authentication and for protocol negotiation.
+
+Mon Apr 21 08:54:48 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvs.texinfo (Working directory storage): Describe what to do
+ with Entries.Log in more detail.
+
+ * cvsclient.texi (Responses): Say "CVS 1.9 and earlier" rather
+ than "pre version 1.10". The latter increases confusion by
+ referring to a version which doesn't exist yet.
+
+Mon Apr 21 01:02:53 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * cvsclient.texi (Responses): Document Rcs-diff. Indicate that
+ Patched is now deprecated in favor of Rcs-diff.
+
+Sun Apr 20 23:42:03 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvs.texinfo (Working directory storage): Add note about format
+ of timestamp and the "Result of merge" concept.
+
+Sat Apr 19 13:42:33 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvsclient.texi (Responses): It is OK for Copy-file to implement
+ a rename instead of a copy.
+
Fri Apr 18 12:05:48 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
* cvs.texinfo (Assigning revisions): Say that -r implies -f.
diff --git a/gnu/usr.bin/cvs/doc/RCSFILES b/gnu/usr.bin/cvs/doc/RCSFILES
index f437cfe6118..5d9c7f7b22e 100644
--- a/gnu/usr.bin/cvs/doc/RCSFILES
+++ b/gnu/usr.bin/cvs/doc/RCSFILES
@@ -37,6 +37,26 @@ for more information on them. CVS also sets the RCS state to "dead"
to indicate that a file does not exist in a given revision (this is
stored just as any other RCS state is).
+The RCS file format allows quite a variety of extensions to be added
+in a compatible manner by use of the "newphrase" feature documented in
+rcsfile.5. We won't try to document extensions not used by CVS in any
+detail, but we will briefly list them. Each occurrence of a newphrase
+begins with an identifier, which is what we list here. Future
+designers of extensions are strongly encouraged to pick
+non-conflicting identifiers. Note that newphrase occurs several
+places in the RCS grammar, and a given extension may not be legal in
+all locations. However, it seems better to reserve a particular
+identifier for all locations, to avoid confusion and complicated
+rules.
+
+ Identifier Used by
+ ---------- -------
+ namespace RCS library done at Silicon Graphics Inc. (SGI) in 1996
+ (a modified RCS 5.7--not sure it has any other name).
+ dead A set of RCS patches developed by Rich Pixley at
+ Cygnus. These were for CVS, and predated the current
+ CVS death support, which does not require RCS changes.
+
The rules regarding keyword expansion are not documented along with
the rest of the RCS file format; they are documented in the co(1)
manpage in the RCS 5.7 distribution. See also the "Keyword
@@ -55,6 +75,30 @@ Both RCS 5.7 and current versions of CVS handle the $Log keyword in a
different way if the log message starts with "checked in with -k by ".
I don't think this behavior is documented anywhere.
+One common concern about the RCS file format is the fact that to get
+the head of a branch, one must apply deltas from the head of the trunk
+to the branchpoint, and then from the branchpoint to the head of the
+branch. While more detailed analyses might be worth doing, we will
+note:
+
+ * The performance bottleneck for CVS generally is figuring out which
+ files to operate on and that sort of thing, not applying deltas.
+
+ * Here is one quick test (probably not a very good test; a better test
+ would use a normally sized file (say 50-200K) instead of a small one):
+
+ I just did a quick test with a small file (on a Sun Ultra 1/170E
+ running Solaris 5.5.1), with 1000 revisions on the main branch and
+ 1000 revisions on branch that forked at the root (i.e., RCS revisions
+ 1.1, 1.2, ..., 1.1000, and branch revisions 1.1.1.1, 1.1.1.2, ...,
+ 1.1.1.1000). It took about 0.15 seconds real time to check in the
+ first revision, and about 0.6 seconds to check in and 0.3 seconds to
+ retrieve revision 1.1.1.1000 (the worst case).
+
+ * Any attempt to "fix" this problem should be careful not to interfere
+ with other features, such as lightweight creation of branches
+ (particularly using CVS magic branches).
+
Diff follows:
(Note that in the following diff the old value for the Id keyword was:
diff --git a/gnu/usr.bin/cvs/doc/cvsclient.texi b/gnu/usr.bin/cvs/doc/cvsclient.texi
index a95dc68c04e..d0aac359f9d 100644
--- a/gnu/usr.bin/cvs/doc/cvsclient.texi
+++ b/gnu/usr.bin/cvs/doc/cvsclient.texi
@@ -127,10 +127,6 @@ of "cvs edit" in this case is the most sensible course (the "cvs edit"
could be handled by a package like VC for emacs). This would also allow
local operation of @code{cvs diff} without arguments.
-@c It isn't clear exactly how this should relate to a more general
-@c multisite feature (in which one can modify the local copy even if the
-@c network is down between the local and the master, and then they get
-@c reconciled by a potentially manual process).
@item
Have the client keep a copy of some part of the repository. This allows
all of @code{cvs diff} and large parts of @code{cvs update} and
@@ -139,6 +135,14 @@ the master copy at night (but if the master copy has been updated since
the latest nightly re-sync, then it would read what it needs to from the
master).
+It isn't clear exactly how this should relate to a more general
+multisite feature (in which one can modify the local copy even if the
+network is down between the local and the master, and then they get
+reconciled by a potentially manual process). Another variant of a
+multisite feature would be where version history is cached to speed up
+operations such as @code{cvs diff}, but in which checkins still must be
+checked in to all sites, or to a master site.
+
@item
The current procedure for @code{cvs update} is highly sub-optimal if
there are many modified files. One possible alternative would be to
@@ -149,6 +153,38 @@ more, if changes in the repository mean it has to ask the client for
more files), because it can't keep locks open while waiting for the
network. Perhaps this whole thing is irrelevant if client-side
repositories are implemented, and the rcsmerge is done by the client.
+
+@item
+The fact that @code{pserver} requires an extra network turnaround in
+order to perform authentication would be nice to avoid. This relates to
+the issue of reporting errors; probably the clean solution is to defer
+the error until the client has issued a request which expects a
+response. To some extent this might relate to the next item (in terms
+of how easy it is to skip a whole bunch of requests until we get to one
+that expects a response). I know that the kerberos code doesn't wait in
+this fashion, but that probably can cause network deadlocks and perhaps
+future problems running over a transport which is more transaction
+oriented than TCP. On the other hand I'm not sure it is wise to make
+the client conduct a lengthy upload only to find there is an
+authentication failure.
+
+@item
+The protocol uses an extra network turnaround for protocol negotiation
+(@code{valid-requests}). It might be nice to avoid this by having the
+client be able to send requests and tell the server to ignore them if
+they are unrecognized (different requests could produce a fatal error if
+unrecognized). To do this there should be a standard syntax for
+requests. For example, perhaps all future requests should be a single
+line, with mechanisms analogous to @code{Argumentx}, or several requests
+working together, to provide greater amounts of information. Or there
+might be a standard mechanism for counted data (analogous to that used
+by @code{Modified}) or continuation lines (like a generalized
+@code{Argumentx}). It would be useful to compare what HTTP is planning
+in this area; last I looked they were contemplating something called
+Protocol Extension Protocol but I haven't looked at the relevant IETF
+documents in any detail. Obviously, we want something as simple as
+possible (but no simpler).
+
@end itemize
@node Connection and Authentication
@@ -198,6 +234,17 @@ protocol, the procedure is the same, except @samp{BEGIN AUTH REQUEST} is
replaced with @samp{BEGIN VERIFICATION REQUEST}, @samp{END AUTH REQUEST}
is replaced with @samp{END VERIFICATION REQUEST}, and upon receipt of
@samp{I LOVE YOU} the connection is closed rather than continuing.
+
+@item future possibilities
+There are a nearly unlimited number of ways to connect and authenticate.
+One might want to allow access based on IP address (similar to the usual
+rsh protocol but with different/no restrictions on ports < 1024), to
+adopt mechanisms such as the General Security Service (GSS) API or
+Pluggable Authentication Modules (PAM), to allow users to run their own
+servers under their own usernames without root access, or any number of
+other possibilities. The way to add future mechanisms, for the most
+part, should be to continue to use port 2401, but to use different
+strings in place of @samp{BEGIN AUTH REQUEST}.
@end table
@node Protocol
@@ -470,6 +517,12 @@ The first character of @var{tagspec} is @samp{T} for a tag, or @samp{D}
for a date. The remainder of @var{tagspec} contains the actual tag or
date.
+The server should remember @code{Static-directory} and @code{Sticky}
+requests for a particular directory; the client need not resend them
+each time it sends a @code{Directory} request for a given directory.
+However, the server is not obliged to remember them beyond the context
+of a single command.
+
@item Checkin-prog @var{program} \n
Response expected: no. Tell the server that the directory most recently
specified with @code{Directory} has a checkin program @var{program}.
@@ -517,7 +570,7 @@ specified), @code{watch-on}, @code{watch-off}, @code{watch-add},
@code{log}, and @code{annotate}.
For the @code{status} command, one can send @code{Is-modified} but if
-the client is using imperfect mechanisms such a timestamps to determine
+the client is using imperfect mechanisms such as timestamps to determine
whether to consider a file modified, then the behavior will be
different. That is, if one sends @code{Modified}, then the server will
actually compare the contents of the file sent and the one it derives
@@ -711,7 +764,6 @@ directory.
@itemx tag \n
@itemx status \n
@itemx log \n
-@itemx add \n
@itemx remove \n
@itemx admin \n
@itemx export \n
@@ -770,6 +822,78 @@ the server must still process the CVSROOT/cvsignore file unless -I ! is
sent). A log message must have been specified with a @code{-m}
argument.
+@item add \n
+Response expected: yes. Add a file or directory. This uses any
+previous @code{Argument}, @code{Directory}, @code{Entry}, or
+@code{Modified} requests, if they have been sent. The
+last @code{Directory} sent specifies the working directory at the time
+of the operation.
+
+To add a directory, send the directory to be added using
+@code{Directory} and @code{Argument} requests. For example:
+
+@example
+C: Root /u/cvsroot
+. . .
+C: Argument nsdir
+C: Directory nsdir
+C: /u/cvsroot/1dir/nsdir
+C: Directory .
+C: /u/cvsroot/1dir
+C: add
+S: M Directory /u/cvsroot/1dir/nsdir added to the repository
+S: ok
+@end example
+
+You will notice that the server does not signal to the client in any
+particular way that the directory has been successfully added. The
+client is supposed to just assume that the directory has been added and
+update its records accordingly. Note also that adding a directory is
+immediate; it does not wait until a @code{ci} request as files do.
+
+To add a file, send the file to be added using a @code{Modified}
+request. For example:
+
+@example
+C: Argument nfile
+C: Directory .
+C: /u/cvsroot/1dir
+C: Modified nfile
+C: u=rw,g=r,o=r
+C: 6
+C: hello
+C: add
+S: E cvs server: scheduling file `nfile' for addition
+S: Mode u=rw,g=r,o=r
+S: Checked-in ./
+S: /u/cvsroot/1dir/nfile
+S: /nfile/0///
+S: E cvs server: use 'cvs commit' to add this file permanently
+S: ok
+@end example
+
+Note that the file has not been added to the repository; the only effect
+of a successful @code{add} request, for a file, is to supply the client
+with a new entries line containing @samp{0} to indicate an added file.
+In fact, the client probably could perform this operation without
+contacting the server, although using @code{add} does cause the server
+to perform a few more checks.
+
+The client sends a subsequent @code{ci} to actually add the file to the
+repository.
+
+Another quirk of the @code{add} request is that a pathname specified in
+an @code{Argument} request cannot contain @samp{/}. There is no good
+reason for this restriction, and it could be eliminated if someone took
+the effort to rewrite the @code{add} code in the CVS server to not have
+it. But in the meantime, the way to comply with it is to ensure that
+all @code{Directory} requests for @code{add} (except those used to add
+directories, as described above), use @samp{.} for
+@var{local-directory}. Specifying another string for
+@var{local-directory} may not get an error, but it will get you strange
+@code{Checked-in} responses, until servers are fixed to send the correct
+responses.
+
@item watch-on \n
@itemx watch-off \n
@itemx watch-add \n
@@ -947,16 +1071,28 @@ file around; traditionally clients have left it around forever, thus
letting the user clean it up as desired. But another answer, such as
until the next commit, might be preferable.
-@item Patched @var{pathname} \n
+@item Rcs-diff @var{pathname} \n
This is just like @code{Updated} and takes the same additional data,
with the one difference that instead of sending a new copy of the file,
-the server sends a patch. This patch is produced by @samp{diff -c} for
-@sc{cvs} 1.6 and later (see POSIX.2 for a description of this format),
-or @samp{diff -u} for previous versions of @sc{cvs}; clients are
-encouraged to accept either format. The client must apply this patch to
-the existing file. This will only be used when the client has an exact
-copy of an earlier revision of a file. This response is only used if
-the @code{update} command is given the @samp{-u} argument.
+the server sends an RCS change text. This change text is produced by
+@samp{diff -n} (the GNU diff @samp{-a} option may also be used). The
+client must apply this change text to the existing file. This will only
+be used when the client has an exact copy of an earlier revision of a
+file. This response is only used if the @code{update} command is given
+the @samp{-u} argument.
+
+@item Patched @var{pathname} \n
+This is just like @code{Rcs-diff} and takes the same additional data,
+except that it sends a standard patch rather than an RCS change text.
+The patch is produced by @samp{diff -c} for @sc{cvs} 1.6 and later (see
+POSIX.2 for a description of this format), or @samp{diff -u} for
+previous versions of @sc{cvs}; clients are encouraged to accept either
+format. Like @code{Rcs-diff}, this response is only used if the
+@code{update} command is given the @samp{-u} argument.
+
+The @code{Patched} response is deprecated in favor of the
+@code{Rcs-diff} response. However, older clients (CVS 1.9 and earlier)
+only support @code{Patched}.
@item Mode @var{mode} \n
This @var{mode} applies to the next file mentioned in
@@ -964,6 +1100,23 @@ This @var{mode} applies to the next file mentioned in
@code{Checked-in}, @code{New-entry}, @code{Updated}, @code{Merged}, or
@code{Patched} response.
+@item Mod-time @var{time} \n
+Set the modification time of the next file sent to @var{time}. Next
+file sent means sent by @code{Checked-in}, @code{Created}, etc. The
+@var{time} is in the format specified by RFC822 as modified by RFC1123.
+The server may specify any timezone it chooses; clients will want to
+convert that to their own timezone as appropriate. An example of this
+format is:
+
+@example
+26 May 1997 13:01:40 -0400
+@end example
+
+There is no requirement that the client and server clocks be
+synchronized. The server just sends its recommendation for a timestamp
+(based on its own clock, presumably), and the client should just believe
+it (this means that the time might be in the future, for example).
+
@item Checksum @var{checksum}\n
The @var{checksum} applies to the next file sent over via
@code{Updated}, @code{Merged}, or @code{Patched}. In the case of
@@ -979,6 +1132,12 @@ Additional data: @var{newname} \n. Copy file @var{pathname} to
@var{newname} in the same directory where it already is. This does not
affect @code{CVS/Entries}.
+This can optionally be implemented as a rename instead of a copy. The
+only use for it which currently has been identified is prior to a
+@code{Merged} response as described under @code{Merged}. Clients can
+probably assume that is how it is being used, if they want to worry
+about things like how long to keep the @var{newname} file around.
+
@item Removed @var{pathname} \n
The file has been removed from the repository (this is the case where
cvs prints @samp{file foobar.c is no longer pertinent}).
@@ -1093,7 +1252,7 @@ and requests would be longer.
@c reponses are not quite what you would pick for pedagogical purposes.
@example
-C: Root /home/kingdon/testing/cvsroot
+C: Root /u/cvsroot
C: Valid-responses ok error Checked-in M E
C: valid-requests
S: Valid-requests Root Directory Entry Modified Argument Argumentx ci co
@@ -1112,7 +1271,7 @@ directory rather than a module.
@example
C: Argument supermunger
C: Directory .
-C: /home/kingdon/testing/cvsroot
+C: /u/cvsroot
C: expand-modules
@end example
@@ -1134,25 +1293,25 @@ for the working directory means that there is not already a
C: Argument -N
C: Argument supermunger
C: Directory .
-C: /home/kingdon/testing/cvsroot
+C: /u/cvsroot
C: co
@end example
The server replies with the requested files. In this example, there is
-only one, @file{mungeall.c}. The @code{Clear-sticky} and
+only one file, @file{mungeall.c}. The @code{Clear-sticky} and
@code{Clear-static-directory} requests are sent by the current
implementation but they have no effect because the default is for those
settings to be clear when a directory is newly created.
@example
S: Clear-sticky supermunger/
-S: /home/kingdon/testing/cvsroot/supermunger/
+S: /u/cvsroot/supermunger/
S: Clear-static-directory supermunger/
-S: /home/kingdon/testing/cvsroot/supermunger/
+S: /u/cvsroot/supermunger/
S: E cvs server: Updating supermunger
S: M U supermunger/mungeall.c
S: Created supermunger/
-S: /home/kingdon/testing/cvsroot/supermunger/mungeall.c
+S: /u/cvsroot/supermunger/mungeall.c
S: /mungeall.c/1.1///
S: u=rw,g=r,o=r
S: 26
@@ -1170,8 +1329,9 @@ to check in:
@example
C: Argument -m
-C: Argument Well, you see, it took me hours and hours to find this typo and I
-C: Argumentx searched and searched and eventually had to ask John for help.
+C: Argument Well, you see, it took me hours and hours to find
+C: Argumentx this typo and I searched and searched and eventually
+C: Argumentx had to ask John for help.
C: Argument mungeall.c
@end example
@@ -1187,7 +1347,7 @@ relative to that directory.
@example
C: Directory .
-C: /home/kingdon/testing/cvsroot/supermunger
+C: /u/cvsroot/supermunger
C: Entry /mungeall.c/1.1///
C: Modified mungeall.c
C: u=rw,g=r,o=r
@@ -1206,12 +1366,12 @@ And the server tells the client that the checkin succeeded:
@example
S: M Checking in mungeall.c;
-S: E /home/kingdon/testing/cvsroot/supermunger/mungeall.c,v <-- mungeall.c
+S: E /u/cvsroot/supermunger/mungeall.c,v <-- mungeall.c
S: E new revision: 1.2; previous revision: 1.1
S: E done
S: Mode u=rw,g=r,o=r
S: Checked-in ./
-S: /home/kingdon/testing/cvsroot/supermunger/mungeall.c
+S: /u/cvsroot/supermunger/mungeall.c
S: /mungeall.c/1.2///
S: ok
@end example
diff --git a/gnu/usr.bin/cvs/emx/.cvsignore b/gnu/usr.bin/cvs/emx/.cvsignore
new file mode 100644
index 00000000000..0bc67035d46
--- /dev/null
+++ b/gnu/usr.bin/cvs/emx/.cvsignore
@@ -0,0 +1,3 @@
+Makefile
+cvs.exe
+cvs.out
diff --git a/gnu/usr.bin/cvs/emx/ChangeLog b/gnu/usr.bin/cvs/emx/ChangeLog
new file mode 100644
index 00000000000..58f937137fb
--- /dev/null
+++ b/gnu/usr.bin/cvs/emx/ChangeLog
@@ -0,0 +1,56 @@
+Tue Jun 17 14:44:02 1997 Jim Kingdon (unknown@beezley)
+
+ * rcmd.c: Removed; no longer used.
+ * rcmd.h: Updated to have similar contents as
+ windows-NT/rcmd.h.
+ * Makefile.in (OS2_HEADERS): Change back to ${srcdir}/rcmd.h.
+ That is the one that the -I options specify anyway.
+ * startserver.c (os2_start_server): Pass a const char ** not
+ a char ** to rcmd.
+
+ * README: Replace text concerning warnings with a more
+ specific list of exactly what the warnings are. For the
+ most part there should be no warnings.
+ Update note about -lufc.
+ * Makefile.in (LIB): Remove -lufc.
+ * config.h (RSH_NOT_TRANSPARENT): Define.
+ * Makefile.in: Use ${top_srcdir}/windows-NT/rcmd.* not our
+ own rcmd.* (for better error messages).
+ * .cvsignore: Add cvs.out.
+
+Tue Jun 17 13:19:53 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README: Revise paragraph on -Zsys to discuss problem with
+ sockets being missing.
+
+Mon Jun 16 10:58:46 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * README: Change bug submission address to include bug-cvs.
+ Add paragraph (from the mail message of the submission) concerning
+ HPFS and such. Cosmetic changes (two spaces after periods for
+ example). Say that ufc-crypt shouldn't be needed currently.
+ Add comment about emx.dll.
+ * config.h, startserver.c, rcmd.h, rcmd.c, system.c: Add
+ "copyright" notice.
+ * system.c (os2_initialize): Add comment about whether we should
+ be expanding wildcards here. Cosmetic changes throughout
+ (for example, reindenting just about everything).
+ * system.c (xgetwd): Rewritten and renamed from os2_getwd.
+ * config.h (CVS_GETWD, os2_getwd): Removed.
+ * rcmd.c: Add comment about portable versus OS-specific
+ implementations of this functionality.
+ * config.h: Remove SIZEOF_INT, SIZEOF_LONG, HAVE_MKFIFO,
+ HAVE_SETVBUF, and USE_DIRECT_TCP; no longer used.
+ * config.h: Add USE_SETMODE_BINARY.
+ * config.h: Define NO_EXT_METHOD.
+ * Makefile.in (LIB_SOURCES): Remove lib/xgetwd.c; replaced by
+ xgetwd in system.c.
+ (LIB_OBJECTS): Likewise, remove lib/xgetwd.o.
+ * Makefile.in (DISTFILES): Add missing "/".
+ * .cvsignore: Added.
+
+ * New directory. This consists of the port that Thomas Epting
+ sent to bug-cvs on 18 Mar 97. He also sent some diffs which go
+ with this; I'll subsequently be checking in some of those diffs
+ and my various tweaks to the code.
+
diff --git a/gnu/usr.bin/cvs/emx/Makefile.in b/gnu/usr.bin/cvs/emx/Makefile.in
new file mode 100644
index 00000000000..f2e50167434
--- /dev/null
+++ b/gnu/usr.bin/cvs/emx/Makefile.in
@@ -0,0 +1,309 @@
+# Makefile for OS/2. Generated from Makefile.in when CVS is
+# configured for a dist-build. Configure never gets run on OS/2, so
+# we must include the generated Makefile in the distribution. See the
+# `dist-dir' rule.
+
+project: cvs.exe
+# .SUFFIXES .c .o .exe
+
+# Directory in which to install executables.
+install_dir = s:/gnu/util
+
+# srcdir is usually "."
+srcdir = @srcdir@
+
+# top_srcdir is usually ".."
+top_srcdir = @top_srcdir@
+
+lib_dir = ${top_srcdir}/lib
+cvs_srcdir = ${top_srcdir}/src
+
+zlib_dir = ${top_srcdir}/zlib
+
+# Do we need these?
+# prefix = /usr/local
+# exec_prefix = ${prefix}
+
+# Used to say -lufc, but that would only be needed for crypt().
+LIB = -lsocket
+CINC =
+# This says we are building an object file, not a full executable.
+OBJ_CFLAGS = -c
+CFLAGS = -pedantic -Wall -fno-builtin ${CINC} \
+ -I${srcdir} -I${lib_dir} -I${cvs_srcdir} -I${zlib_dir} \
+ -DUNIX -DHAVE_CONFIG_H
+
+
+# headers specific to OS/2
+
+# We list OS2_HEADERS so we know what to include when we make dist-dir
+# here.
+OS2_HEADERS = \
+ ${srcdir}/config.h \
+ ${srcdir}/options.h \
+ ${srcdir}/rcmd.h
+
+# headers we use from the common src dir, ../src
+COMMON_HEADERS = \
+ ${cvs_srcdir}/client.h \
+ ${cvs_srcdir}/cvs.h \
+ ${cvs_srcdir}/rcs.h \
+ ${cvs_srcdir}/hash.h \
+ ${cvs_srcdir}/myndbm.h \
+ ${cvs_srcdir}/patchlevel.h \
+ ${cvs_srcdir}/update.h \
+ ${cvs_srcdir}/server.h \
+ ${cvs_srcdir}/error.h
+
+# sources specific to OS/2
+# was ${srcdir}/rcmd.c \
+OS2_SOURCES = \
+ ${srcdir}/filesubr.c \
+ ${srcdir}/startserver.c \
+ ${srcdir}/stripslash.c \
+ ${top_srcdir}/windows-NT/rcmd.c \
+ ${srcdir}/system.c
+
+# sources we use from the common src dir, ../src
+# FIXME: Is this used anywhere? I don't think it is.
+COMMON_SOURCES = \
+ ${cvs_srcdir}/add.c \
+ ${cvs_srcdir}/admin.c \
+ ${cvs_srcdir}/buffer.c \
+ ${cvs_srcdir}/checkin.c \
+ ${cvs_srcdir}/checkout.c \
+ ${cvs_srcdir}/classify.c \
+ ${cvs_srcdir}/client.c \
+ ${cvs_srcdir}/commit.c \
+ ${cvs_srcdir}/create_adm.c \
+ ${cvs_srcdir}/cvsrc.c \
+ ${cvs_srcdir}/diff.c \
+ ${cvs_srcdir}/edit.c \
+ ${cvs_srcdir}/entries.c \
+ ${cvs_srcdir}/error.c \
+ ${cvs_srcdir}/expand_path.c \
+ ${cvs_srcdir}/fileattr.c \
+ ${cvs_srcdir}/find_names.c \
+ ${cvs_srcdir}/hash.c \
+ ${cvs_srcdir}/history.c \
+ ${cvs_srcdir}/ignore.c \
+ ${cvs_srcdir}/import.c \
+ ${cvs_srcdir}/lock.c \
+ ${cvs_srcdir}/log.c \
+ ${cvs_srcdir}/login.c \
+ ${cvs_srcdir}/logmsg.c \
+ ${cvs_srcdir}/main.c \
+ ${cvs_srcdir}/mkmodules.c \
+ ${cvs_srcdir}/modules.c \
+ ${cvs_srcdir}/myndbm.c \
+ ${cvs_srcdir}/no_diff.c \
+ ${cvs_srcdir}/parseinfo.c \
+ ${cvs_srcdir}/patch.c \
+ ${cvs_srcdir}/rcs.c \
+ ${cvs_srcdir}/rcscmds.c \
+ ${cvs_srcdir}/recurse.c \
+ ${cvs_srcdir}/release.c \
+ ${cvs_srcdir}/remove.c \
+ ${cvs_srcdir}/repos.c \
+ ${cvs_srcdir}/root.c \
+ ${cvs_srcdir}/rtag.c \
+ ${cvs_srcdir}/scramble.c \
+ ${cvs_srcdir}/server.c \
+ ${cvs_srcdir}/status.c \
+ ${cvs_srcdir}/subr.c \
+ ${cvs_srcdir}/run.c \
+ ${cvs_srcdir}/tag.c \
+ ${cvs_srcdir}/update.c \
+ ${cvs_srcdir}/watch.c \
+ ${cvs_srcdir}/wrapper.c \
+ ${cvs_srcdir}/vers_ts.c \
+ ${cvs_srcdir}/version.c \
+ ${cvs_srcdir}/zlib.c
+# end of $COMMON_SOURCES
+
+# sources from ../lib
+# FIXME: Is this used anywhere? I don't think it is.
+LIB_SOURCES = \
+ ${lib_dir}/vasprintf.c \
+ ${lib_dir}/argmatch.c \
+ ${lib_dir}/getline.c \
+ ${lib_dir}/getopt.c \
+ ${lib_dir}/getopt1.c \
+ ${lib_dir}/md5.c \
+ ${lib_dir}/regex.c \
+ ${lib_dir}/savecwd.c \
+ ${lib_dir}/sighandle.c \
+ ${lib_dir}/valloc.c \
+ ${lib_dir}/yesno.c \
+ ${lib_dir}/getdate.c
+
+# object files from OS/2 sources
+# was ${srcdir}/rcmd.o
+OS2_OBJECTS = \
+ ${srcdir}/filesubr.o \
+ ${srcdir}/startserver.o \
+ ${srcdir}/stripslash.o \
+ ${top_srcdir}/windows-NT/rcmd.o \
+ ${srcdir}/system.o
+
+# object files from ../src
+COMMON_OBJECTS = \
+ ${cvs_srcdir}/add.o \
+ ${cvs_srcdir}/admin.o \
+ ${cvs_srcdir}/buffer.o \
+ ${cvs_srcdir}/checkin.o \
+ ${cvs_srcdir}/checkout.o \
+ ${cvs_srcdir}/classify.o \
+ ${cvs_srcdir}/client.o \
+ ${cvs_srcdir}/commit.o \
+ ${cvs_srcdir}/create_adm.o \
+ ${cvs_srcdir}/cvsrc.o \
+ ${cvs_srcdir}/diff.o \
+ ${cvs_srcdir}/edit.o \
+ ${cvs_srcdir}/entries.o \
+ ${cvs_srcdir}/expand_path.o \
+ ${cvs_srcdir}/fileattr.o \
+ ${cvs_srcdir}/find_names.o \
+ ${cvs_srcdir}/hash.o \
+ ${cvs_srcdir}/history.o \
+ ${cvs_srcdir}/ignore.o \
+ ${cvs_srcdir}/import.o \
+ ${cvs_srcdir}/lock.o \
+ ${cvs_srcdir}/log.o \
+ ${cvs_srcdir}/login.o \
+ ${cvs_srcdir}/logmsg.o \
+ ${cvs_srcdir}/main.o \
+ ${cvs_srcdir}/mkmodules.o \
+ ${cvs_srcdir}/modules.o \
+ ${cvs_srcdir}/myndbm.o \
+ ${cvs_srcdir}/no_diff.o \
+ ${cvs_srcdir}/parseinfo.o \
+ ${cvs_srcdir}/patch.o \
+ ${cvs_srcdir}/rcs.o \
+ ${cvs_srcdir}/rcscmds.o \
+ ${cvs_srcdir}/recurse.o \
+ ${cvs_srcdir}/release.o \
+ ${cvs_srcdir}/remove.o \
+ ${cvs_srcdir}/repos.o \
+ ${cvs_srcdir}/root.o \
+ ${cvs_srcdir}/rtag.o \
+ ${cvs_srcdir}/scramble.o \
+ ${cvs_srcdir}/server.o \
+ ${cvs_srcdir}/status.o \
+ ${cvs_srcdir}/tag.o \
+ ${cvs_srcdir}/update.o \
+ ${cvs_srcdir}/watch.o \
+ ${cvs_srcdir}/wrapper.o \
+ ${cvs_srcdir}/vers_ts.o \
+ ${cvs_srcdir}/subr.o \
+ ${cvs_srcdir}/run.o \
+ ${cvs_srcdir}/version.o \
+ ${cvs_srcdir}/error.o \
+ ${cvs_srcdir}/zlib.o
+# end of $COMMON_OBJECTS
+
+# objects from ../lib
+LIB_OBJECTS = \
+ ${lib_dir}/vasprintf.o \
+ ${lib_dir}/argmatch.o \
+ ${lib_dir}/getline.o \
+ ${lib_dir}/getopt.o \
+ ${lib_dir}/getopt1.o \
+ ${lib_dir}/md5.o \
+ ${lib_dir}/regex.o \
+ ${lib_dir}/savecwd.o \
+ ${lib_dir}/sighandle.o \
+ ${lib_dir}/valloc.o \
+ ${lib_dir}/yesno.o \
+ ${lib_dir}/getdate.o
+
+ZLIB_OBJECTS = ${zlib_dir}/adler32.o \
+ ${zlib_dir}/compress.o \
+ ${zlib_dir}/crc32.o \
+ ${zlib_dir}/gzio.o \
+ ${zlib_dir}/uncompr.o \
+ ${zlib_dir}/deflate.o \
+ ${zlib_dir}/trees.o \
+ ${zlib_dir}/zutil.o \
+ ${zlib_dir}/inflate.o \
+ ${zlib_dir}/infblock.o \
+ ${zlib_dir}/inftrees.o \
+ ${zlib_dir}/infcodes.o \
+ ${zlib_dir}/infutil.o \
+ ${zlib_dir}/inffast.o
+
+SOURCES = ${COMMON_SOURCES} ${LIB_SOURCES} ${OS2_SOURCES}
+HEADERS = ${COMMON_HEADERS} ${OS2_HEADERS}
+OBJECTS = ${COMMON_OBJECTS} ${LIB_OBJECTS} ${OS2_OBJECTS} ${ZLIB_OBJECTS}
+
+DISTFILES = ${OS2_HEADERS} ${OS2_SOURCES} \
+ ${srcdir}/README ${srcdir}/ChangeLog \
+ ${srcdir}/Makefile.in ${srcdir}/.cvsignore \
+ ${srcdir}/Makefile
+
+all:
+
+.PHONY: all install uninstall
+all install uninstall:
+
+installdirs:
+.PHONY: installdirs
+
+.PHONY: tags TAGS
+tags TAGS:
+
+.PHONY: ls
+ls:
+ @echo ${DISTFILES}
+
+.PHONY: clean distclean realclean mostlyclean
+clean distclean realclean mostlyclean:
+
+.PHONY: lint
+lint:
+
+.PHONY: dist-dir
+dist-dir:
+ mkdir ${DISTDIR}
+ for i in ${DISTFILES}; do \
+ ln $${i} ${DISTDIR}; \
+ done
+
+# We don't have a real distclean or anything like that, but at least
+# we can get rid of the obj files and cvs.exe.
+clean:
+ rm -f cvs.exe cvs.out
+ rm -f ${srcdir}/*.o
+ rm -f ${lib_dir}/*.o ${lib_dir}/*.a
+ rm -f ${zlib_dir}/*.o ${zlib_dir}/*.a
+ rm -f ${cvs_srcdir}/*.o
+
+clean-cvs:
+ del cvs.exe cvs.out
+ del $(subst /,\,${srcdir}/*.o)
+ del $(subst /,\,${lib_dir}/*.o ${lib_dir}/*.a)
+ del $(subst /,\,${zlib_dir}/*.o ${zlib_dir}/*.a)
+ del $(subst /,\,${cvs_srcdir}/*.o)
+
+install-cvs: cvs.exe
+ copy $(subst /,\,${srcdir}/cvs.exe ${install_dir}/cvs.exe)
+
+%.o: %.c
+ gcc ${OBJ_CFLAGS} ${CFLAGS} -o $@ -c $*.c
+
+${lib_dir}/libcvs.a: $(LIB_OBJECTS)
+ $(AR) cr $@ $(LIB_OBJECTS)
+
+${zlib_dir}/libz.a: $(ZLIB_OBJECTS)
+ $(AR) cr $@ $(ZLIB_OBJECTS)
+
+cvs.exe: ${OBJECTS} ${lib_dir}/libcvs.a ${zlib_dir}/libz.a
+ gcc $(COMMON_OBJECTS) $(OS2_OBJECTS) ${lib_dir}/libcvs.a ${zlib_dir}/libz.a $(LIB) -o cvs.out
+ emxbind -w -o $@.exe cvs.out
+
+# cvs.o: ${OBJECTS} ${SOURCES} ${HEADERS}
+
+subdir = emx
+Makefile: ../config.status $(srcdir)/Makefile.in
+ cd .. && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
+
diff --git a/gnu/usr.bin/cvs/emx/README b/gnu/usr.bin/cvs/emx/README
new file mode 100644
index 00000000000..9b82e81d01d
--- /dev/null
+++ b/gnu/usr.bin/cvs/emx/README
@@ -0,0 +1,66 @@
+
+CVS for OS/2
+based on EMX 0.9c (patch 02)
+
+
+This port works well in local mode. It fully respects the OS/2
+filename conventions, but only works on HPFS or other filesystem types
+which support long filenames (like ext2fs or Netware FS with OS/2
+namespace). It does _not_ work on FAT partitions or any other fs which
+does not support long filenames. The port also works in client mode.
+
+This port requires EMX 0.9c (patch 02) and the BSD libraries. It should
+work in local mode, in client mode and also in server mode. nServer mode
+will only work if the client uses the :server: method, because the CRLF
+handling of IBM's RSHD.EXE is not "compatible" with CVS. (If you find a
+better rshd for OS/2, please let us know!)
+
+To compile CVS for OS/2, you must install the following packages:
+
+ - EMX 0.9c (patch 02) and the GNU-C-Compiler
+
+ EMXDEV1.ZIP
+ EMXDEV2.ZIP
+ EMXRT.ZIP
+ GNUDEV1.ZIP
+ GNUDEV2.ZIP
+ BSDDEV.ZIP
+ EMXFIX02.ZIP
+
+ - GNU make for OS/2
+
+ GNUMAKE.ZIP
+
+ - ufc.a (ufc-crypt) as a replacement for crypt (this may be something
+ different if you live inside the USA). You don't need this one currently,
+ because the port of the server to OS/2 isn't done yet, but I'm mentioning
+ in case it is useful for future reference (we're probably better off
+ using a different password hash instead, as noted in item #184 of ../TODO).
+
+ GNUUFC.ZIP
+
+All packages can be found on ftp://ftp.leo.org/pub/comp/os/os2/leo/gnu
+(You may also try http://www.leo.org/pub/comp/os/os2/leo/gnu).
+
+Change to the `emx' directory, do "make" and get emx\cvs.exe. Assuming
+you have edited the `install_dir' variable in the Makefile, you may type
+"make install-cvs" to put cvs.exe in the right place. You may also "make
+clean-cvs" to clean up object and library files.
+
+The cvs.exe generated will require emx.dll to run. You can try
+compiling with -Zomf -Zsys to generate a cvs.exe without this
+requirement, but that almost surely will require significant changes
+to make it work. For the client, the big known problem would be that
+EMX 0.9c doesn't have sockets with -Zsys (according to the
+documentation). That seems like it would be hard to get around. For
+local, the big known problem is that -Zsys doesn't have fork(). This
+one isn't as bad--using os2/run.c or something similar instead of
+src/run.c should solve this problem.
+
+You will get warnings in lib/getdate.c. These are yacc's fault; ignore
+them.
+
+You will get about 5 warnings in lib/regex.c concerning "unused variable
+destination". Ignore them.
+
+Report bugs to tepting@swol.de and bug-cvs@prep.ai.mit.edu.
diff --git a/gnu/usr.bin/cvs/emx/config.h b/gnu/usr.bin/cvs/emx/config.h
new file mode 100644
index 00000000000..f9ec55f7672
--- /dev/null
+++ b/gnu/usr.bin/cvs/emx/config.h
@@ -0,0 +1,325 @@
+/* config.h --- configuration file for OS/2 EMX
+ Thomas Epting <tepting@swol.de> --- Feb 1997 */
+
+/* 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. */
+
+/* This file lives in the emx/ subdirectory, which is only included
+ * in your header search path if you use emx/Makefile (with GNU make
+ * for OS/2). Thus, this is the right place to put configuration
+ * information for OS/2.
+ */
+
+#include <io.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+/* Define if on AIX 3.
+ System headers sometimes define this.
+ We just want to avoid a redefinition error message. */
+#ifndef _ALL_SOURCE
+/* #undef _ALL_SOURCE */
+#endif
+
+/* Define to empty if the keyword does not work. */
+#undef const
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+/* #undef gid_t */
+
+/* Define if you support file names longer than 14 characters. */
+#define HAVE_LONG_FILE_NAMES 1
+
+/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
+#define HAVE_SYS_WAIT_H 1
+
+/* Define if utime(file, NULL) sets file's timestamp to the present. */
+#define HAVE_UTIME_NULL 1
+
+/* Define if on MINIX. */
+/* #undef _MINIX */
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+/* #undef mode_t */
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+/* #undef pid_t */
+
+/* Define if the system does not provide POSIX.1 features except
+ with this defined. */
+/* #undef _POSIX_1_SOURCE */
+
+/* Define if you need to in order for stat and other things to work. */
+/* #undef _POSIX_SOURCE */
+
+/* Define as the return type of signal handlers (int or void). */
+#define RETSIGTYPE void
+
+/* Define to `unsigned' if <sys/types.h> doesn't define. */
+/* #undef size_t */
+
+/* Define if the `S_IS*' macros in <sys/stat.h> do not work properly. */
+/* #undef STAT_MACROS_BROKEN */
+
+/* Define if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define if you can safely include both <sys/time.h> and <time.h>. */
+#define TIME_WITH_SYS_TIME 1
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+/* #undef uid_t */
+
+/* Define if you have MIT Kerberos version 4 available. */
+#undef HAVE_KERBEROS
+
+/* Define if you want CVS to be able to be a remote repository client. */
+#define CLIENT_SUPPORT 1
+
+#if 0
+/* This doesn't work yet, and I'm sure I don't want the hassles of seeing
+ whether it will compile. */
+/* Define if you want CVS to be able to serve repositories to remote
+ clients. */
+#define SERVER_SUPPORT 1
+
+/* Define if you want to use the password authenticated server. */
+#define AUTH_SERVER_SUPPORT
+#endif /* 0 */
+
+/* Define if you want encryption support. */
+/* #undef ENCRYPTION */
+
+/* Define if you have the connect function. */
+#define HAVE_CONNECT 1
+
+/* Define if you have the crypt function. */
+#define HAVE_CRYPT 1
+
+/* Define if you have the fchdir function. */
+/* #define HAVE_FCHDIR */
+
+/* Define if you have the fchmod function. */
+/* #define HAVE_FCHMOD */
+
+/* Define if you have the fsync function. */
+#define HAVE_FSYNC 1
+
+/* Define if you have the ftime function. */
+#define HAVE_FTIME 1
+
+/* Define if you have the ftruncate function. */
+#define HAVE_FTRUNCATE 1
+
+/* Define if you have the getpagesize function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define if you have the getspnam function. */
+/* #define HAVE_GETSPNAM */
+
+/* Define if you have the initgroups function. */
+/* #define HAVE_INITGROUPS */
+
+/* Define if you have the krb_get_err_text function. */
+/* #undef HAVE_KRB_GET_ERR_TEXT */
+
+/* Define if you have the putenv function. */
+#define HAVE_PUTENV 1
+
+/* Define if you have the readlink function. */
+/* #define HAVE_READLINK */
+
+/* Define if you have the sigaction function. */
+#define HAVE_SIGACTION 1
+
+/* Define if you have the sigblock function. */
+/* #undef HAVE_SIGBLOCK */
+
+/* Define if you have the sigprocmask function. */
+#define HAVE_SIGPROCMASK 1
+
+/* Define if you have the sigsetmask function. */
+/* #undef HAVE_SIGSETMASK */
+
+/* Define if you have the sigvec function. */
+/* #undef HAVE_SIGVEC */
+
+/* Define if you have the timezone function. */
+#define HAVE_TIMEZONE 1
+
+/* Define if you have the tzset function. */
+#define HAVE_TZSET 1
+
+/* Define if you have the vfork function. */
+/* #undef HAVE_VFORK */
+
+/* Define if you have the vprintf function. */
+#define HAVE_VPRINTF 1
+
+/* Define if you have the <direct.h> header file. */
+/* #undef HAVE_DIRECT_H */
+
+/* Define if you have the <dirent.h> header file. */
+#define HAVE_DIRENT_H 1
+
+/* Define if you have the <errno.h> header file. */
+#define HAVE_ERRNO_H 1
+
+/* Define if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define if you have the <io.h> header file. */
+#define HAVE_IO_H 1
+
+/* Define if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define if you have the <ndbm.h> header file. */
+/* #undef HAVE_NDBM_H 1 */
+
+/* Define if you have the <ndir.h> header file. */
+/* #undef HAVE_NDIR_H */
+
+/* Define if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define if you have the <sys/bsdtypes.h> header file. */
+/* #undef HAVE_SYS_BSDTYPES_H */
+
+/* Define if you have the <sys/dir.h> header file. */
+#define HAVE_SYS_DIR_H 1
+
+/* Define if you have the <sys/ndir.h> header file. */
+/* #undef HAVE_SYS_NDIR_H */
+
+/* Define if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define if you have the <sys/resource.h> header file. */
+#define HAVE_SYS_RESOURCE_H 1
+
+/* Define if you have the <sys/select.h> header file. */
+#define HAVE_SYS_SELECT_H 1
+
+/* Define if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define if you have the <sys/timeb.h> header file. */
+#define HAVE_SYS_TIMEB_H 1
+
+/* Define if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define if you have the <utime.h> header file. */
+#define HAVE_UTIME_H 1
+
+/* Define if you have the crypt library (-lcrypt). */
+#define HAVE_LIBCRYPT 1
+
+/* Define if you have the inet library (-linet). */
+/* #undef HAVE_LIBINET */
+
+/* Define if you have the nsl library (-lnsl). */
+#define HAVE_LIBNSL 1
+
+/* Define if you have the nsl_s library (-lnsl_s). */
+/* #undef HAVE_LIBNSL_S */
+
+/* Define if you have the sec library (-lsec). */
+/* #undef HAVE_LIBSEC 1 */
+
+/* Define if you have the socket library (-lsocket). */
+#define HAVE_LIBSOCKET 1
+
+/* Under OS/2, filenames are case-insensitive, and both / and \
+ are path component separators. */
+#define FOLD_FN_CHAR(c) (OS2_filename_classes[(unsigned char) (c)])
+extern unsigned char OS2_filename_classes[];
+
+/* Is the character C a path name separator? Under OS/2, you can use
+ either / or \. */
+#define ISDIRSEP(c) (FOLD_FN_CHAR(c) == '/')
+
+/* Like strcmp, but with the appropriate tweaks for file names.
+ Under OS/2, filenames are case-insensitive but case-preserving,
+ and both \ and / are path element separators. */
+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. */
+extern void fnfold (char *FILENAME);
+
+/* #define this if your system terminates lines in text files with
+ CRLF instead of plain LF, and your I/O functions automatically
+ translate between using LF in memory and CRLF on disk, unless you
+ specifically tell them not to. */
+#define LINES_CRLF_TERMINATED 1
+
+/* Read data from INFILE, and copy it to OUTFILE.
+ Open INFILE using INFLAGS, and OUTFILE using OUTFLAGS.
+ This is useful for converting between CRLF and LF line formats. */
+extern void convert_file (char *INFILE, int INFLAGS,
+ char *OUTFILE, int OUTFLAGS);
+
+/* This is where old bits go to die under OS/2 as well as WinNT. */
+#define DEVNULL "nul"
+
+/* We actually do have a transparent rsh, whew. */
+#undef RSH_NOT_TRANSPARENT
+/* But it won't be transparent unless we ask it nicely! */
+#define RSH_NEEDS_BINARY_FLAG 1
+
+#define START_SERVER os2_start_server
+#define SHUTDOWN_SERVER os2_shutdown_server
+
+extern void START_SERVER (int *tofd, int *fromfd,
+ char *client_user,
+ char *server_user,
+ char *server_host,
+ char *server_cvsroot);
+extern void SHUTDOWN_SERVER (int fd);
+
+/* Call our own os2_initialize function */
+#define SYSTEM_INITIALIZE(pargc,pargv) os2_initialize (pargc, pargv)
+extern void os2_initialize (int *pargc, char ***pargv);
+
+/* Under EMX, we already have popen() and pclose()... */
+/* #undef USE_OWN_POPEN */
+/* ... and we too have no need for popenRW to start the rsh server. */
+/* #define START_RSH_WITH_POPEN_RW */
+
+/* Socket handles and file handles share a command handle space under EMX. */
+/* #undef NO_SOCKET_TO_FD */
+
+
+
+#define CVS_STAT os2_stat
+#define CVS_CHDIR os2_chdir
+#define CVS_FNMATCH os2_fnmatch
+
+extern int os2_stat(const char *name, struct stat *buffer);
+extern int os2_chdir(const char *name);
+extern int os2_fnmatch(const char *pattern, const char *name, int flags);
+
+/* Pipes need to be put into binary mode using setmode (). */
+#define USE_SETMODE_BINARY 1
+
+/* The reason for this is that we don't know whether to pass -b to
+ rsh. The system-supplied rsh on OS/2 wants it. Some other rsh
+ replacement might not accept it. Historically, the NT port of CVS
+ has not passed -b, and the OS/2 port has. What a mess. If we can
+ get away with just not accepting :ext: until we can figure out how
+ we should deal with this, then it will avoid having people rely on
+ behaviors which will need to change. */
+#define NO_EXT_METHOD 1
+
+/* See above; we can't use rsh without -b. */
+#define RSH_NOT_TRANSPARENT 1
diff --git a/gnu/usr.bin/cvs/emx/options.h b/gnu/usr.bin/cvs/emx/options.h
new file mode 100644
index 00000000000..add2795763d
--- /dev/null
+++ b/gnu/usr.bin/cvs/emx/options.h
@@ -0,0 +1,269 @@
+/* src/options.h. Generated automatically by configure. */
+/*
+ * Copyright (c) 1992, Brian Berliner and Jeff Polk
+ * 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 1.4 kit.
+ *
+ * This file holds (most of) the configuration tweaks that can be made to
+ * customize CVS for your site. CVS comes configured for a typical SunOS 4.x
+ * environment. The comments for each configurable item are intended to be
+ * self-explanatory. All #defines are tested first to see if an over-riding
+ * option was specified on the "make" command line.
+ *
+ * If special libraries are needed, you will have to edit the Makefile.in file
+ * or the configure script directly. Sorry.
+ */
+
+/*
+ * CVS provides the most features when used in conjunction with the
+ * Version-5 release of RCS. Thus, it is the default. This also
+ * assumes that GNU diff Version-1.15 is being used as well -- you
+ * will have to configure your RCS V5 release separately to make this
+ * the case. If you do not have RCS V5 and GNU diff V1.15, comment out
+ * this define. You should not try mixing and matching other
+ * combinations of these tools.
+ */
+#ifndef HAVE_RCS5
+#define HAVE_RCS5
+#endif
+
+/*
+ * For portability and heterogeneity reasons, CVS is shipped by
+ * default using my own text-file version of the ndbm database library
+ * in the src/myndbm.c file. If you want better performance and are
+ * not concerned about heterogeneous hosts accessing your modules
+ * file, turn this option off.
+ */
+#ifndef MY_NDBM
+#define MY_NDBM
+#endif
+
+/*
+ * The "diff" program to execute when creating patch output. This
+ * "diff" must support the "-c" option for context diffing. Specify a
+ * full pathname if your site wants to use a particular diff. Note
+ * that unlike the diff used with RCS, you *must not* supply -a here
+ * (doing so will cause the server to generate patches which patch
+ * cannot handle in some cases).
+ *
+ * NOTE: this program is only used for the ``patch'' sub-command (and
+ * for ``update'' if you are using the server). The other commands
+ * use rcsdiff which will use whatever version of diff was specified
+ * when rcsdiff was built on your system.
+ */
+#ifndef DIFF
+#define DIFF "diff"
+#endif
+
+/*
+ * The "patch" program to run when using the CVS server and accepting
+ * patches across the network. Specify a full pathname if your site
+ * wants to use a particular patch.
+ */
+#ifndef PATCH_PROGRAM
+#define PATCH_PROGRAM "patch"
+#endif
+
+/*
+ * By default, RCS programs are executed with the shell or through
+ * execlp(), so the user's PATH environment variable is searched. If
+ * you'd like to bind all RCS programs to a certain directory (perhaps
+ * one not in most people's PATH) then set the default in RCSBIN_DFLT.
+ * Note that setting this here will cause all RCS programs to be
+ * executed from this directory, unless the user overrides the default
+ * with the RCSBIN environment variable or the "-b" option to CVS.
+ *
+ * If you use the password-authenticating server, then you need to
+ * make sure that the server can find the RCS programs to invoke them.
+ * The authenticating server starts out running as root, and then
+ * switches to run as the appropriate user once authentication is
+ * complete. But no actual shell is ever started by that user, so the
+ * PATH environment variable may not contain the directory with the
+ * RCS binaries, even though if that user logged in normally, PATH
+ * would include the directory.
+ *
+ * One way to solve this problem is to set RCSBIN_DFLT here. An
+ * alternative is to make sure that root has the right directory in
+ * its path already. Another, probably better alternative is to
+ * specify -b in /etc/inetd.conf.
+ *
+ * You may also have to set RCSBIN_DFLT here if there's no global
+ * start-up script run for users by rshd and your RCS programs are not
+ * in a directory in the default PATH assigned by rshd.
+ *
+ * This define should be either the empty string ("") or a full
+ * pathname to the directory containing all the installed programs
+ * from the RCS distribution.
+ */
+#ifndef RCSBIN_DFLT
+#define RCSBIN_DFLT ""
+#endif
+
+/* Directory used for storing temporary files, if not overridden by
+ environment variables or the -T global option. There should be little
+ need to change this (-T is a better mechanism if you need to use a
+ different directory for temporary files). */
+#ifndef TMPDIR_DFLT
+#define TMPDIR_DFLT "/tmp"
+#endif
+
+/*
+ * The default editor to use, if one does not specify the "-e" option
+ * to cvs, or does not have an EDITOR environment variable. I set
+ * this to just "vi", and use the shell to find where "vi" actually
+ * is. This allows sites with /usr/bin/vi or /usr/ucb/vi to work
+ * equally well (assuming that your PATH is reasonable).
+ */
+#ifndef EDITOR_DFLT
+#define EDITOR_DFLT "e"
+#endif
+
+/*
+ * The default umask to use when creating or otherwise setting file or
+ * directory permissions in the repository. Must be a value in the
+ * range of 0 through 0777. For example, a value of 002 allows group
+ * rwx access and world rx access; a value of 007 allows group rwx
+ * access but no world access. This value is overridden by the value
+ * of the CVSUMASK environment variable, which is interpreted as an
+ * octal number.
+ */
+#ifndef UMASK_DFLT
+#define UMASK_DFLT 002
+#endif
+
+/*
+ * The cvs admin command is restricted to the members of the group
+ * CVS_ADMIN_GROUP. If this group does not exist, all users are
+ * allowed to run cvs admin. To disable the cvs admin for all users,
+ * create an empty group CVS_ADMIN_GROUP. To disable access control
+ * for cvs admin, comment out the define below.
+ */
+#ifndef CVS_ADMIN_GROUP
+#define CVS_ADMIN_GROUP "cvsadmin"
+#endif
+
+/*
+ * The Repository file holds the path to the directory within the
+ * source repository that contains the RCS ,v files for each CVS
+ * working directory. This path is either a full-path or a path
+ * relative to CVSROOT.
+ *
+ * The only advantage that I can see to having a relative path is that
+ * one can change the physical location of the master source
+ * repository, change one's CVSROOT environment variable, and CVS will
+ * work without problems. I recommend using full-paths.
+ */
+#ifndef RELATIVE_REPOS
+/* #define RELATIVE_REPOS */
+#endif
+
+/*
+ * 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 or an editor will be started for you. If you like to use
+ * 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. Enabling FORCE_USE_EDITOR will
+ * cause the -m message to be appended to the temp file when the
+ * editor is started.
+ */
+#ifndef FORCE_USE_EDITOR
+/* #define FORCE_USE_EDITOR */
+#endif
+
+/*
+ * When locking the repository, some sites like to remove locks and
+ * assume the program that created them went away if the lock has
+ * existed for a long time. This used to be the default for previous
+ * versions of CVS. CVS now attempts to be much more robust, so lock
+ * files should not be left around by mistake. The new behaviour will
+ * never remove old locks (they must now be removed by hand).
+ * Enabling CVS_FUDGELOCKS will cause CVS to remove locks that are
+ * older than CVSLCKAGE seconds.
+ *
+ * Use of this option is NOT recommended.
+ */
+#ifndef CVS_FUDGELOCKS
+/* #define CVS_FUDGELOCKS */
+#endif
+
+/*
+ * When committing a permanent change, CVS and RCS make a log entry of
+ * who committed the change. If you are committing the change logged
+ * in as "root" (not under "su" or other root-priv giving program),
+ * CVS/RCS cannot determine who is actually making the change.
+ *
+ * As such, by default, CVS disallows changes to be committed by users
+ * logged in as "root". You can disable this option by commenting out
+ * the lines below.
+ */
+#ifdef CVS_BADROOT
+#undef CVS_BADROOT
+#endif
+
+/* Define this to enable the SETXID support. The way to use this is
+ to create a group with no users in it (except perhaps cvs
+ administrators), set the cvs executable to setgid that group, chown
+ all the repository files to that group, and change all directory
+ permissions in the repository to 770. The last person to modify a
+ file will own it, but as long as directory permissions are set
+ right that won't matter. You'll need a system which inherits file
+ groups from the parent directory (WARNING: using the wrong kind of
+ system (I think Solaris 2.4 is the wrong kind, for example) will
+ create a security hole! You will receive no warning other than the
+ fact that files in the working directory are owned by the group
+ which cvs is setgid to).
+
+ One security hole which has been reported is that setgid is not
+ turned off when the editor is invoked--most editors provide a way
+ to execute a shell, or the user can specify an editor (this one is
+ large enough to drive a truck through). Don't assume that the
+ holes described here are the only ones; I don't know how carefully
+ SETXID has been inspected for security holes. */
+#ifndef SETXID_SUPPORT
+/* #define SETXID_SUPPORT */
+#endif
+
+/*
+ * Should we build the password-authenticating client? Whether to
+ * include the password-authenticating _server_, on the other hand, is
+ * set in config.h.
+ */
+#ifdef CLIENT_SUPPORT
+#define AUTH_CLIENT_SUPPORT 1
+#endif
+
+/*
+ * If you are working with a large remote repository and a 'cvs
+ * checkout' is swamping your network and memory, define these to
+ * enable flow control. You will end up with even less probability of
+ * a consistent checkout (see Concurrency in cvs.texinfo), but CVS
+ * doesn't try to guarantee that anyway. The master server process
+ * will monitor how far it is getting behind, if it reaches the high
+ * water mark, it will signal the child process to stop generating
+ * data when convenient (ie: no locks are held, currently at the
+ * beginning of a new directory). Once the buffer has drained
+ * sufficiently to reach the low water mark, it will be signalled to
+ * start again. You may override the default hi/low watermarks here
+ * too.
+ */
+#define SERVER_FLOWCONTROL
+#define SERVER_HI_WATER (2 * 1024 * 1024)
+#define SERVER_LO_WATER (1 * 1024 * 1024)
+
+/* End of CVS configuration section */
+
+/*
+ * Externs that are included in libc, but are used frequently enough
+ * to warrant defining here.
+ */
+#ifndef STDC_HEADERS
+extern void exit ();
+#endif
+
+#ifndef getwd
+extern char *getwd ();
+#endif
+
diff --git a/gnu/usr.bin/cvs/emx/rcmd.h b/gnu/usr.bin/cvs/emx/rcmd.h
new file mode 100644
index 00000000000..a1fbf029922
--- /dev/null
+++ b/gnu/usr.bin/cvs/emx/rcmd.h
@@ -0,0 +1,46 @@
+/* rcmd.h --- interface to executing commands on remote hosts
+ Karl Fogel <kfogel@cyclic.com> --- November 1995 */
+
+/* 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. */
+
+/* Run the command CMD on the host *AHOST, and return a file descriptor for
+ a bidirectional stream socket connected to the command's standard input
+ and output.
+
+ rcmd looks up *AHOST using gethostbyname, and sets *AHOST to the host's
+ canonical name. If *AHOST is not found, rcmd returns -1.
+
+ rcmd connects to the remote host at TCP port INPORT. This should
+ probably be the "shell" service, port 514.
+
+ LOCUSER is the name of the user on the local machine, and REMUSER is
+ the name of the user on the remote machine; the remote machine uses this,
+ along with the source address of the TCP connection, to authenticate
+ the connection.
+
+ CMD is the command to execute. The remote host will tokenize it any way
+ it damn well pleases. Welcome to Unix.
+
+ FD2P is a feature we don't support, but there's no point in making mindless
+ deviations from the interface. Callers should always pass this argument
+ as zero. */
+
+/* Note that because we are using windows-NT/rcmd.c, this declaration
+ must match windows-NT/rcmd.h (and rcmd.c). It would be much
+ more sensible to use a common header file. But I haven't bothered to
+ adjust the makefile accordingly, yet. Probably the best long-term
+ home for this would be in lib/rcmd.*, or perhaps src. */
+extern int rcmd (const char **AHOST,
+ unsigned short INPORT,
+ char *LOCUSER,
+ char *REMUSER,
+ char *CMD,
+ int *fd2p);
diff --git a/gnu/usr.bin/cvs/lib/ChangeLog b/gnu/usr.bin/cvs/lib/ChangeLog
index 02750d388de..02a0e1f7a33 100644
--- a/gnu/usr.bin/cvs/lib/ChangeLog
+++ b/gnu/usr.bin/cvs/lib/ChangeLog
@@ -1,3 +1,11 @@
+Mon Jun 16 18:59:50 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * system.h: Add CVS_FNMATCH.
+
+Sun Jun 8 23:41:11 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * system.h (mkfifo): Remove; not used anywhere.
+
Thu Mar 6 17:14:49 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
* regex.c: Partial merge with version from emacs 19.34. I brought
diff --git a/gnu/usr.bin/cvs/lib/system.h b/gnu/usr.bin/cvs/lib/system.h
index 05025fe5655..1a692ffa4a9 100644
--- a/gnu/usr.bin/cvs/lib/system.h
+++ b/gnu/usr.bin/cvs/lib/system.h
@@ -104,10 +104,6 @@
# endif
#endif
-#if !defined(HAVE_MKFIFO)
-#define mkfifo(path, mode) (mknod ((path), (mode) | S_IFIFO, 0))
-#endif
-
#ifdef NEED_DECOY_PERMISSIONS /* OS/2, really */
#define S_IRUSR S_IREAD
@@ -469,6 +465,11 @@ char *getwd ();
#define CVS_UNLINK unlink
#endif
+/* Wildcard matcher. Should be case-insensitive if the system is. */
+#ifndef CVS_FNMATCH
+#define CVS_FNMATCH fnmatch
+#endif
+
/* Some file systems are case-insensitive. If FOLD_FN_CHAR is
#defined, it maps the character C onto its "canonical" form. In a
case-insensitive system, it would map all alphanumeric characters
diff --git a/gnu/usr.bin/cvs/os2/ChangeLog b/gnu/usr.bin/cvs/os2/ChangeLog
index da351ca2160..9541a7f0fd7 100644
--- a/gnu/usr.bin/cvs/os2/ChangeLog
+++ b/gnu/usr.bin/cvs/os2/ChangeLog
@@ -1,3 +1,16 @@
+Mon Jun 16 13:49:39 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * config.h, rcmd.h, rcmd.c: Add "copyright" notice.
+
+Sun Jun 8 23:41:56 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * config.h (HAVE_MKFIFO): Remove; not used anywhere.
+
+Wed Apr 30 12:45:50 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * icc.compilation-errors: Removed; it was the error messages from
+ trying to compile CVS on OS/2, way out of date.
+
Wed Mar 12 16:10:01 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
* config.h (HAVE_SETVBUF): Removed; no longer used.
diff --git a/gnu/usr.bin/cvs/os2/config.h b/gnu/usr.bin/cvs/os2/config.h
index a14074b248f..781711e19c8 100644
--- a/gnu/usr.bin/cvs/os2/config.h
+++ b/gnu/usr.bin/cvs/os2/config.h
@@ -1,6 +1,16 @@
/* config.h --- configuration file for OS/2
Karl Fogel <kfogel@cyclic.com> --- Oct 1995 */
+/* 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. */
+
/* This file lives in the os2/ subdirectory, which is only included
* in your header search path if you're working under IBM C++,
* and use os2/makefile (with GNU make for OS/2). Thus, this is the
@@ -166,9 +176,6 @@
/* Define if you have the krb_get_err_text function. */
#undef HAVE_KRB_GET_ERR_TEXT
-/* Define if you have the mkfifo function. */
-#undef HAVE_MKFIFO
-
/* Define if you have the putenv function. */
#define HAVE_PUTENV 1
diff --git a/gnu/usr.bin/cvs/os2/pwd.c b/gnu/usr.bin/cvs/os2/pwd.c
index 21597b9ddb0..ab5acd9e52b 100644
--- a/gnu/usr.bin/cvs/os2/pwd.c
+++ b/gnu/usr.bin/cvs/os2/pwd.c
@@ -11,7 +11,7 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- $Header: /cvs/OpenBSD/src/gnu/usr.bin/cvs/os2/pwd.c,v 1.1.1.2 1997/02/21 06:38:44 tholo Exp $
+ $Header: /cvs/OpenBSD/src/gnu/usr.bin/cvs/os2/pwd.c,v 1.1.1.3 1997/06/28 03:29:46 tholo Exp $
*/
/* This 'implementation' is conjectured from the use of this functions in
diff --git a/gnu/usr.bin/cvs/os2/pwd.h b/gnu/usr.bin/cvs/os2/pwd.h
index 7d8b226752a..9ac94c74d93 100644
--- a/gnu/usr.bin/cvs/os2/pwd.h
+++ b/gnu/usr.bin/cvs/os2/pwd.h
@@ -11,7 +11,7 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- $Header: /cvs/OpenBSD/src/gnu/usr.bin/cvs/os2/pwd.h,v 1.1.1.2 1997/02/21 06:38:42 tholo Exp $
+ $Header: /cvs/OpenBSD/src/gnu/usr.bin/cvs/os2/pwd.h,v 1.1.1.3 1997/06/28 03:29:44 tholo Exp $
*/
/* This 'implementation' is conjectured from the use of this functions in
diff --git a/gnu/usr.bin/cvs/os2/rcmd.c b/gnu/usr.bin/cvs/os2/rcmd.c
index 36b17516dd5..2996e499cba 100644
--- a/gnu/usr.bin/cvs/os2/rcmd.c
+++ b/gnu/usr.bin/cvs/os2/rcmd.c
@@ -1,6 +1,16 @@
/* rcmd.c --- execute a command on a remote host from OS/2
Karl Fogel <kfogel@cyclic.com> --- November 1995 */
+/* 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. */
+
#include <io.h>
#include <stdio.h>
#include <fcntl.h>
diff --git a/gnu/usr.bin/cvs/os2/rcmd.h b/gnu/usr.bin/cvs/os2/rcmd.h
index 2bc915a36bd..2c84d5b3918 100644
--- a/gnu/usr.bin/cvs/os2/rcmd.h
+++ b/gnu/usr.bin/cvs/os2/rcmd.h
@@ -1,6 +1,16 @@
/* rcmd.h --- interface to executing commands on remote hosts
Karl Fogel <kfogel@cyclic.com> --- November 1995 */
+/* 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. */
+
/* Run the command CMD on the host *AHOST, and return a file descriptor for
a bidirectional stream socket connected to the command's standard input
and output.
diff --git a/gnu/usr.bin/cvs/src/ChangeLog b/gnu/usr.bin/cvs/src/ChangeLog
index 6fe1e91c768..0c8b0f60930 100644
--- a/gnu/usr.bin/cvs/src/ChangeLog
+++ b/gnu/usr.bin/cvs/src/ChangeLog
@@ -1,5 +1,428 @@
+Tue Jun 17 22:48:00 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * main.c (main): Add --allow-root=ROOT argument; call
+ root_allow_add for each time it is specified. Call
+ root_allow_free before exiting.
+ * root.c, cvs.h (root_allow_add, root_allow_free, root_allow_ok):
+ New function.
+ * server.c (pserver_authenticate_connection): If root_allow_ok
+ doesn't like the CVSROOT directory, don't allow access.
+
+Tue Jun 17 14:30:14 1997 Jim Kingdon (unknown@beezley)
+
+ * client.c: Add "copyright" notice. If NO_EXT_METHOD, omit
+ start_rsh_method.
+ * client.c (update_entries): Cast argument to MD5Update from
+ char * to unsigned char *.
+
+Mon Jun 16 16:46:28 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * run.c (piped_child, filter_stream_through_program):
+ If USE_SETMODE_BINARY, then put the pipes into binary mode.
+ * find_names.c, ignore.c, lock.c, wrapper.c: Change fnmatch to
+ CVS_FNMATCH.
+ * client.c (start_server): If NO_EXT_METHOD, then give a fatal
+ error on any use of :ext:.
+
+Sun Jun 15 22:30:27 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * sanity.sh (toplevel): Match U CVSROOT/* lines with DOTSTAR in
+ test toplevel-9.
+
+Thu Jun 12 10:27:51 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * sanity.sh (toplevel): Remove Emptydir before starting.
+
+ * sanity.sh: Change "rm -rf" to "rm -r" when deleting working
+ directories (except a few watches cases). Helps detect cases
+ where the testsuite has cd'd to somewhere other than where we
+ think it has.
+ (basic2): Remove "rm -r first-dir" between tests 49 and 50. The
+ directory was already deleted in test 45.5.
+ (rcs): Add "cd .." at end of tests.
+ (stamps): No longer cd to TESTDIR; shouldn't be necessary with
+ fix to "rcs" test.
+
+Wed Jun 11 22:28:38 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * sanity.sh (basicb): Also remove CVSROOT/Emptydir at end of
+ test. Otherwise it affects the toplevel-9 test for remote.
+
+Tue Jun 10 14:03:32 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * sanity.sh (toplevel): Change "update" and "checkout" to "[a-z]*"
+ as these read "server" instead for "make remotecheck". Change
+ expect strings for toplevel-9 to accept the behavior of remote CVS
+ (see comments for more discussion).
+
+ * sanity.sh: New tests stamps-9 through stamps-11 test timestamp
+ behavior on cvs update.
+
+Mon Jun 9 22:42:50 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * sanity.sh: Remove "#! /bin/zsh" line at end. I assume it was
+ added accidentally.
+
+Tue Jun 10 03:08:46 1997 Norbert Kiesel <nk@psycho.de>
+
+ * sanity.sh: new tests "toplevel" for the new toplevel CVS
+ directory creation (including one test which shows an error in
+ this area).
+
+Sun Jun 8 20:52:00 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * rcs.c (getrcsrev): Before printing error, check whether it was
+ feof or ferror.
+
+ * rcs.h, import.c (add_rcs_file): No longer static. New arguments
+ add_vbranch, add_vhead, and add_logfp replace access to static
+ variables vbranch, vhead, and logfp.
+ * mkmodules.c: Call it instead of RCS_CI.
+ * import.c (process_import_file): Adjust call to add_rcs_file.
+
+Tue Jun 3 10:18:33 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * sanity.sh (basicb): Match "." with "\." not ".".
+
+Tue Jun 3 13:02:37 1997 Norbert Kiesel <nk@cosa.de>
+
+ * checkout.c (checkout): Removed restriction of not sending -k in
+ remote export (I think this was introduced while the -k handling
+ was still broken in remote mode). Give better error texts
+ regarding -c and -s options. Use error() instead of usage() for
+ reporting errors in all places. Reindented some lines. Free
+ xmalloc'd space of options.
+
+Thu May 29 16:32:47 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * rcscmds.c (RCS_checkin), mkmodules.c (init): Pass -w option to
+ "ci", specifying getcaller ().
+ * server.h, server.c (CVS_Username): Now extern.
+ * subr.c (getcaller): Return CVS_Username if it is set.
+
+Wed May 28 22:31:38 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * update.c (update_fileproc): If wrap_merge_is_copy and we would
+ like to do a merge, give a fatal error. See comment for why.
+ * sanity.sh (mwrap): New tests, tests for above fix.
+
+Tue May 27 21:59:32 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * sanity.sh (stamps): cd to ${TESTDIR} before starting.
+
+Mon May 26 15:31:30 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * client.c (handle_mod_time): New function.
+ (responses): Add "Mod-time".
+ (stored_modtime_valid, stored_modtime): New variables.
+ (update_entries): If it is set, change the file's modtime.
+ * server.c, server.h (server_modtime): New function.
+ * vers_ts.c (Version_TS): Call it.
+ * patch.c (patch_fileproc): Add comment about why we don't.
+ * sanity.sh (stamps): Added, tests for above fix.
+
+Fri May 16 13:14:30 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * subr.c (free_names): Update documentation to reflect fact that
+ free_names is now called to free vectors allocated by expand_wild
+ as well as by line2argv.
+
+ * main.c (main): Use "xstrdup (foo)" not "xstrdup(foo)" as
+ specified in HACKING.
+
+Fri May 16 15:10:37 1997 Norbert Kiesel <nk@cosa.de>
+
+ * modules.c (do_module): initialize optind to 0. use local copies
+ of optarg's (because they might me freed within free_names).
+
+Thu May 15 11:50:15 1997 Norbert Kiesel <nk@cosa.de>
+
+ * main.c (main): initialize optind to 0. use local copies of
+ optarg's (because they might me freed within read_cvsrc).
+
+ * cvsrc.c (read_cvsrc): free old argv after constructing a new
+ one. This fixes a memory leak.
+
+ * recurse.c (start_recursion): use free_names() instead of
+ reimplementing it
+
+ * rcs.c (RCS_deltas): free branchversion (memory leak).
+
+ * parseinfo.c (Parse_Info): free some vars (3 memory leaks).
+
+ * logmsg.c (logfile_write): free str_list_format (memory leak).
+
+ * watch.c (watch_addremove), (watchers), update.c (update), tag.c
+ (cvstag), status.c (status), rtag.c (rtag), remove.c (cvsremove),
+ release.c (release), patch.c (patch), log.c (cvslog), import.c
+ (import), history.c (history), edit.c (watch_onoff), (edit),
+ (unedit), (editors), diff.c (diff), commit.c (commit), checkout.c
+ (checkout), add.c (add): initialize optind to 0
+
+ * diff.c (diff_fileproc): cosmetic change (whitespace added).
+
+ * checkout.c (checkout): move local variable definition into the
+ block where the variable is used.
+
+ * client.c (update_entries): initialize some local variables to shut up
+ gcc -O -Wall.
+
+ * buffer.c (buf_read_line): initialize a local variable to shut up
+ gcc -O -Wall.
+
+
+Wed May 14 16:29:50 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * admin.c (admin): When sending options to server, don't try to
+ send av[ac]. It may contain one of the names that we'll send in
+ send_file_names (which caused tests like keyword-6 to work,
+ sort of accidentally), or it may contain NULL (which would tend to
+ cause a coredump).
+ * sanity.sh (basicb): New test basicb-21 tests for above fix.
+
+Mon May 12 16:22:00 1997 Larry Jones <larry.jones@sdrc.com>
+
+ * add.c (add): Free message and repository in client code.
+ * checkout.c (checkout): Don't free repository unless allocated.
+ * client.c (start_rsh_server): Free command.
+
+Sun May 11 11:43:54 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * client.c: Remove all references to USE_DIRECT_TCP; see
+ ../ChangeLog for rationale.
+
+Fri May 9 22:19:36 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * main.c (main): Add comment explaining why we call exit. Pass 0
+ not EXIT_SUCCESS, because lib/system.h has portability cruft for
+ EXIT_FAILURE but not EXIT_SUCCESS.
+
+Fri May 9 17:25:00 1997 Larry Jones <larry.jones@sdrc.com>
+
+ Fix miscellaneous memory allocation problems:
+ * add.c (add): Free repository.
+ * client.c (notified_a_file): Free getline buffer.
+ * edit.c (notify_check): Free getline buffer.
+ * hash.c (dellist): Free header node when not caching.
+ * login.c (login): Don't continually free & allocate getline
+ buffer, use xstrdup instead of xmalloc/strcpy, free getline
+ buffer before returning.
+ * main.c (main): Call exit instead of returning so tools like
+ Purify won't consider permanently allocated memory as leaks.
+ * mkmodules.c (mkmodules): Free getline buffer.
+ * modules.c (cat_module): Call close_module.
+ * rcs.c (rcsvers_delproc): Free state.
+ * recurse.c (start_recursion): Free files_by_dir.
+ (unroll_files_proc): NULL out p->data after using it to set
+ filelist to avoid multiple frees.
+ * server.c (check_command_legal_p): Don't continually free &
+ allocate getline buffer, free getline buffer before returning.
+ (check_repository_password): Ditto, use xstrdup instead of
+ xmalloc/strcpy.
+ * wrapper.c (wrap_add_file): Free getline buffer.
+
+Thu May 8 14:21:00 1997 Larry Jones <larry.jones@sdrc.com>
+ and Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * checkout.c (checkout_proc): Free finfo.rcs (memory leak).
+
+8 May 1997 Larry Jones <larry.jones@sdrc.com>
+ and Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * hash.c: Add #ifdef's to disable caching. This makes it easier
+ to track down memory allocation problems.
+
+Thu May 8 11:40:39 1997 Larry Jones <larry.jones@sdrc.com>
+
+ * sanity.sh: In setting "tests" use a number of statements rather
+ than one very long line.
+
+Thu May 8 11:40:39 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvsbug.sh: Remove $Id; we decided to get rid of these some time
+ ago.
+
+Thu May 8 11:34:02 1997 Larry Jones <larry.jones@sdrc.com>
+
+ * cvsbug.sh: Put separate statements on separate lines, so it
+ works if awk is AT&T nawk.
+
+Tue May 6 16:56:00 1997 Larry Jones <larry.jones@sdrc.com>
+ and Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * cvsrc.c (read_cvsrc): Fix various memory allocation problems:
+ rearrange code to avoid leaks, use xrealloc instead of xmalloc/
+ copy/free, make sure there's room for the remaining args before
+ appending them.
+
+Tue May 6 14:20:00 1997 Larry Jones <larry.jones@sdrc.com>
+
+ * edit.c (watch_onoff, edit, unedit, editors): Add -R like
+ other things with -l.
+ * watch.c (watch_addremove, watchers): Ditto.
+
+Mon May 5 18:10:37 1997 larry.jones@sdrc.com
+ and Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * sanity.sh: Change all /tmp/cvs-sanity to TESTDIR. If TESTDIR
+ environment variable is set, use it instead of /tmp/cvs-sanity.
+ * sanity.sh: Make TMPPWD the pwd equivalent of TESTDIR, not of /tmp.
+
+4 May 1997 Larry jones <larry.jones@sdrc.com>
+ and Jim Kingdon
+
+ * checkout.c, diff.c, patch.c, rcs.c: Update usage messages.
+ * rcs.c (annotate): Add -R like other things with -l.
+
+Sat May 3 14:57:40 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * sanity.sh (basic1): Rewrite test (use dotest, unroll the loops
+ which IMHO makes the test a zillion times more understandable, and
+ only do the variant which tests for 4 files at a time--we test one
+ file at a time lots of places).
+
+2 May 1997 Ziv Gigus <ziv@rest.home.net>
+ and Jim Kingdon
+
+ * client.c, client.h (client_process_import_file): New argument
+ all_files_binary means treat all files as binary.
+ * import.c (import_descend): Pass it if -kb is specified.
+ * client.c (client_process_import_file): In the
+ non-all_files_binary case, call wrap_rcsoption to determine
+ whether the file is binary.
+
+Thu May 1 13:44:51 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * sanity.sh (binfiles2): New tests, for update -j and binary files.
+
+Wed Apr 30 11:18:36 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * recurse.c (start_recursion): Also free reposfile.
+ Don't look in repository if client_active (latter bug reported by Paul
+ Sanders <p.sanders@dial.pipex.com>).
+
+Mon Apr 28 22:36:39 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * diff.c (diff_file_nodiff): Remove SERVER_SUPPORT ifdefs. They
+ were not based on server_active, which doesn't really make any
+ sense (it meant that compiling --disable-server could affect the
+ behavior of the non-client/server CVS). This affected the output
+ in tests death2-diff-11 and death2-diff-12 in the testsuite.
+ * sanity.sh (newb-123j0): Also accept "Needs Checkout", for a
+ --disable-server CVS.
+
+ * main.c (cmd_usage): Change "run diffs" to "show differences";
+ the former is jargon.
+ * edit.c (edit_usage): Fix typo ("." -> ",").
+ * edit.c (editors_usage), watch.c (watchers_usage): Mention -l.
+ * checkout.c (export_usage): Say what -P does.
+ * history.c (history_usg): Add comment about message wording.
+
+Mon Apr 28 14:47:45 1997 Norbert Kiesel <nk@cosa.de>
+
+ * checkin.c (Checkin): use filename without path when calling
+ wrapper (bug found by Michal Schmitz <ms@cosa.de>).
+
+Fri Apr 25 13:28:55 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * client.c (update_entries): In UPDATE_ENTRIES_RCS_DIFF case,
+ write to a temporary file and then rename it.
+
+Thu Apr 24 11:35:40 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * subr.c, cvs.h (pathname_levels): New function, from a piece of
+ send_file_names.
+ * client.c (send_file_names): Call pathname_levels in place of the
+ code which was moved there.
+ * server.c, server.h (server_pathname_check): New function.
+ * recurse.c (start_recursion): Call it.
+ * sanity.sh (modules3): New test modules3-11b tests for above fix.
+
+ * filesubr.c: Do not define L_tmpnam. It is in ANSI and SunOS4,
+ so I don't think there will be a problem with it being missing.
+ Defining it too small can cause memory corruption.
+ (cvs_temp_name): Do not use L_tmpnam in the mktemp code; this
+ could cause a buffer overflow if the -T global option was in use.
+
+Thu Apr 24 13:21:15 1997 Norbert Kiesel <nk@cosa.de>
+
+ * filesubr.c (cvs_temp_name): Use tempnam if available, else
+ mktemp, else tmpnam. See the comment for rationale.
+
+ * sanity.sh: use "tar cf - ." instead of "tar cf - *" for
+ directory copies.
+
+Wed Apr 23 23:41:47 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * server.c (serve_update_prog): If in readonly mode, give an error.
+
+Wed Apr 23 19:07:41 1997 Norbert Kiesel <nk@cosa.de>
+
+ * subr.c (line2argv): Allocate at least 4 slots for argv.
+
+ * checkout.c (checkout_proc): Add a comment which says why the
+ above change was necessary to avoid writing to unallocated memory.
+
+Wed Apr 23 11:20:40 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * entries.c (ParseTag): Always set *NONBRANCHP.
+
+21 Apr 1997 Jim Kingdon
+
+ * client.c (update_entries), rcs.c (expand_keywords): Rewrite
+ test to avoid signed/unsigned warning.
+
+Mon Apr 21 09:02:22 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * update.c (patch_file): Add comment about whether auto-detecting
+ features of the DIFF program is a good idea.
+
+Mon Apr 21 00:03:34 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ Don't require the patch program:
+ * client.c (struct update_entries_data): Add
+ UPDATE_ENTRIES_RCS_DIFF to contents enum.
+ (update_entries): Handle UPDATE_ENTRIES_RCS_DIFF.
+ (handle_rcs_diff): New static function.
+ (responses): Add "Rcs-diff".
+ * server.c (server_updated): Handle SERVER_RCS_DIFF.
+ (server_use_rcs_diff): New function.
+ * server.h (enum server_updated_arg4): Add SERVER_RCS_DIFF.
+ (server_use_rcs_diff): Declare.
+ * update.c (rcs_diff_patches): New static variable.
+ (update): Set rcs_diff_patches.
+ (update_fileproc): If rcs_diff_patches, pass SERVER_RCS_DIFF
+ rather than SERVER_PATCHED to server_updated.
+ (patch_file): Correct initial comment to say diff rather than
+ rcsdiff. If rcs_diff_options, pass -n to diff rather than -c.
+ * rcs.c (rcs_change_text): New function.
+ * rcs.h (rcs_change_text): Declare.
+
+Mon Apr 21 00:08:59 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * diff.c (diff_fileproc): Add comment concerning updating the
+ client timestamp.
+
+Sun Apr 20 23:20:37 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * commit.c (commit): Add comment regarding SEND_FORCE rationale.
+
+Sat Apr 19 17:10:36 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * server.c (dirswitch): If directory ends in '/', complain.
+
+Fri Apr 18 18:09:57 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * rcs.c (apply_rcs_changes): New static function, broken out of
+ RCS_deltas.
+ (RCS_deltas): Call it.
+ (linevector_add): Change return type to int. Return an indication
+ of an error for an invalid add, rather than calling error.
+
Fri Apr 18 11:24:26 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+ * version.c: Change version number to 1.9.9.
+
* version.c: Version 1.9.8.
* commit.c (struct find_data): Add field force.
diff --git a/gnu/usr.bin/cvs/src/add.c b/gnu/usr.bin/cvs/src/add.c
index 8bba5bb62a1..92209306b56 100644
--- a/gnu/usr.bin/cvs/src/add.c
+++ b/gnu/usr.bin/cvs/src/add.c
@@ -102,7 +102,7 @@ add (argc, argv)
wrap_setup ();
/* parse args */
- optind = 1;
+ optind = 0;
while ((c = getopt (argc, argv, "+k:m:")) != -1)
{
switch (c)
@@ -183,6 +183,9 @@ add (argc, argv)
/* FIXME: should be able to pass SEND_NO_CONTENTS, I think. */
send_files (argc, argv, 0, 0, SEND_BUILD_DIRS);
send_to_server ("add\012", 0);
+ if (message)
+ free (message);
+ free (repository);
return get_responses_and_close ();
}
#endif
@@ -449,6 +452,7 @@ cannot resurrect %s; RCS file removed by second party", user);
if (message)
free (message);
+ free (repository);
return (err);
}
diff --git a/gnu/usr.bin/cvs/src/checkin.c b/gnu/usr.bin/cvs/src/checkin.c
index 3c6a3b2cd98..0da220c6f03 100644
--- a/gnu/usr.bin/cvs/src/checkin.c
+++ b/gnu/usr.bin/cvs/src/checkin.c
@@ -51,7 +51,7 @@ Checkin (type, finfo, rcs, rev, tag, options, message)
* for the checkin and checkout.
*/
- tocvsPath = wrap_tocvs_process_file (finfo->fullname);
+ tocvsPath = wrap_tocvs_process_file (finfo->file);
if (!noexec)
{
diff --git a/gnu/usr.bin/cvs/src/client.h b/gnu/usr.bin/cvs/src/client.h
index 6d92da51149..1f9c27f3087 100644
--- a/gnu/usr.bin/cvs/src/client.h
+++ b/gnu/usr.bin/cvs/src/client.h
@@ -169,7 +169,7 @@ extern char *toplevel_wd;
extern void client_import_setup PROTO((char *repository));
extern int client_process_import_file
PROTO((char *message, char *vfile, char *vtag,
- int targc, char *targv[], char *repository));
+ int targc, char *targv[], char *repository, int all_files_binary));
extern void client_import_done PROTO((void));
extern void client_notify PROTO((char *, char *, char *, int, char *));
#endif /* CLIENT_SUPPORT */
diff --git a/gnu/usr.bin/cvs/src/find_names.c b/gnu/usr.bin/cvs/src/find_names.c
index a7a91bbfd3e..5d2a79e89b9 100644
--- a/gnu/usr.bin/cvs/src/find_names.c
+++ b/gnu/usr.bin/cvs/src/find_names.c
@@ -256,7 +256,7 @@ find_rcs (dir, list)
/* read the dir, grabbing the ,v files */
while ((dp = readdir (dirp)) != NULL)
{
- if (fnmatch (RCSPAT, dp->d_name, 0) == 0)
+ if (CVS_FNMATCH (RCSPAT, dp->d_name, 0) == 0)
{
char *comma;
@@ -320,7 +320,7 @@ find_dirs (dir, list, checkadm, entries)
continue;
#endif
/* don't bother stating ,v files */
- if (fnmatch (RCSPAT, dp->d_name, 0) == 0)
+ if (CVS_FNMATCH (RCSPAT, dp->d_name, 0) == 0)
continue;
expand_string (&tmp,
diff --git a/gnu/usr.bin/cvs/src/hash.c b/gnu/usr.bin/cvs/src/hash.c
index 60998d108f9..a978d1f1bd8 100644
--- a/gnu/usr.bin/cvs/src/hash.c
+++ b/gnu/usr.bin/cvs/src/hash.c
@@ -101,15 +101,27 @@ dellist (listp)
if ((p = (*listp)->hasharray[i]) != (Node *) NULL)
{
/* put the nodes into the cache */
+#ifndef NOCACHE
p->type = UNKNOWN;
p->next = nodecache;
nodecache = p;
+#else
+ /* If NOCACHE is defined we turn off the cache. This can make
+ it easier to tools to determine where items were allocated
+ and freed, for tracking down memory leaks and the like. */
+ free (p);
+#endif
}
}
/* put it on the cache */
+#ifndef NOCACHE
(*listp)->next = listcache;
listcache = *listp;
+#else
+ free ((*listp)->list);
+ free (*listp);
+#endif
*listp = (List *) NULL;
}
@@ -198,9 +210,13 @@ freenode (p)
freenode_mem (p);
/* then put it in the cache */
+#ifndef NOCACHE
p->type = UNKNOWN;
p->next = nodecache;
nodecache = p;
+#else
+ free (p);
+#endif
}
/*
diff --git a/gnu/usr.bin/cvs/src/rcs.h b/gnu/usr.bin/cvs/src/rcs.h
index 699280a79ad..1855fb99c76 100644
--- a/gnu/usr.bin/cvs/src/rcs.h
+++ b/gnu/usr.bin/cvs/src/rcs.h
@@ -124,3 +124,9 @@ int RCS_deltag PROTO ((RCSNode *, const char *, int));
int RCS_setbranch PROTO((RCSNode *, const char *));
int RCS_lock PROTO ((RCSNode *, const char *, int));
int RCS_unlock PROTO ((RCSNode *, const char *, int));
+int rcs_change_text PROTO ((const char *, char *, size_t, const char *,
+ size_t, char **, size_t *));
+
+/* From import.c. */
+extern int add_rcs_file PROTO ((char *, char *, char *, char *,
+ char *, char *, int, char **, FILE *));
diff --git a/gnu/usr.bin/cvs/src/remove.c b/gnu/usr.bin/cvs/src/remove.c
index 157125068fe..46c416938a9 100644
--- a/gnu/usr.bin/cvs/src/remove.c
+++ b/gnu/usr.bin/cvs/src/remove.c
@@ -50,7 +50,7 @@ cvsremove (argc, argv)
if (argc == -1)
usage (remove_usage);
- optind = 1;
+ optind = 0;
while ((c = getopt (argc, argv, "+flR")) != -1)
{
switch (c)
diff --git a/gnu/usr.bin/cvs/src/run.c b/gnu/usr.bin/cvs/src/run.c
index 74e418dc3ed..5b59bca9833 100644
--- a/gnu/usr.bin/cvs/src/run.c
+++ b/gnu/usr.bin/cvs/src/run.c
@@ -445,6 +445,13 @@ piped_child (command, tofdp, fromfdp)
if (pipe (from_child_pipe) < 0)
error (1, errno, "cannot create pipe");
+#ifdef USE_SETMODE_BINARY
+ setmode (to_child_pipe[0], O_BINARY);
+ setmode (to_child_pipe[1], O_BINARY);
+ setmode (from_child_pipe[0], O_BINARY);
+ setmode (from_child_pipe[1], O_BINARY);
+#endif
+
#ifdef HAVE_VFORK
pid = vfork ();
#else
@@ -506,6 +513,11 @@ filter_stream_through_program (oldfd, dir, prog, pidp)
if (pipe (p))
error (1, errno, "cannot create pipe");
+#ifdef USE_SETMODE_BINARY
+ setmode (p[0], O_BINARY);
+ setmode (p[1], O_BINARY);
+#endif
+
#ifdef HAVE_VFORK
newpid = vfork ();
#else
diff --git a/gnu/usr.bin/cvs/src/sanity.sh b/gnu/usr.bin/cvs/src/sanity.sh
index 9f556209329..a815fc0539c 100644
--- a/gnu/usr.bin/cvs/src/sanity.sh
+++ b/gnu/usr.bin/cvs/src/sanity.sh
@@ -25,11 +25,7 @@ esac
# required to make this script work properly.
unset CVSREAD
-TESTDIR=/tmp/cvs-sanity
-# This will show up in cvs history output where it prints the working
-# directory. It should *not* appear in any cvs output referring to the
-# repository; cvs should use the name of the repository as specified.
-TMPPWD=`cd /tmp; /bin/pwd`
+TESTDIR=${TESTDIR:-/tmp/cvs-sanity}
# "debugger"
#set -x
@@ -460,6 +456,10 @@ dotest_status ()
rm -rf ${TESTDIR}
mkdir ${TESTDIR}
cd ${TESTDIR}
+# This will show up in cvs history output where it prints the working
+# directory. It should *not* appear in any cvs output referring to the
+# repository; cvs should use the name of the repository as specified.
+TMPPWD=`/bin/pwd`
# Avoid picking up any stray .cvsrc, etc., from the user running the tests
mkdir home
@@ -478,8 +478,12 @@ RCSINIT=; export RCSINIT
# tests.
if test x"$*" = x; then
- tests="basica basicb basic1 deep basic2 rdiff death death2 branches multibranch import join new newb conflicts conflicts2 modules modules2 modules3 mflag errmsg1 devcom devcom2 devcom3 ignore binfiles binwrap info serverpatch log log2 crerepos rcs big modes"
- tests="${tests} sticky keyword"
+ tests="basica basicb basic1 deep basic2 rdiff death death2 branches"
+ tests="${tests} multibranch import join new newb conflicts conflicts2"
+ tests="${tests} modules modules2 modules3 mflag errmsg1 devcom devcom2"
+ tests="${tests} devcom3 ignore binfiles binfiles2 binwrap mwrap info"
+ tests="${tests} serverpatch log log2 crerepos rcs big modes stamps"
+ tests="${tests} sticky keyword toplevel"
else
tests="$*"
fi
@@ -554,9 +558,9 @@ for what in $tests; do
dotest basica-0a "${testcvs} -q co -l ." ''
mkdir first-dir
dotest basica-0b "${testcvs} add first-dir" \
-"Directory /tmp/cvs-sanity/cvsroot/first-dir added to the repository"
+"Directory ${TESTDIR}/cvsroot/first-dir added to the repository"
cd ..
- rm -rf 1
+ rm -r 1
dotest basica-1 "${testcvs} -q co first-dir" ''
cd first-dir
@@ -571,17 +575,17 @@ for what in $tests; do
# Remote CVS gives the "cannot open CVS/Entries" error, which is
# clearly a bug, but not a simple one to fix.
dotest basica-1a10 "${testcvs} -n add sdir" \
-'Directory /tmp/cvs-sanity/cvsroot/first-dir/sdir added to the repository' \
+"Directory ${TESTDIR}/cvsroot/first-dir/sdir added to the repository" \
"${PROG} add: cannot open CVS/Entries for reading: No such file or directory
-Directory /tmp/cvs-sanity/cvsroot/first-dir/sdir added to the repository"
+Directory ${TESTDIR}/cvsroot/first-dir/sdir added to the repository"
dotest_fail basica-1a11 \
"test -d ${CVSROOT_DIRNAME}/first-dir/sdir" ''
dotest basica-2 "${testcvs} add sdir" \
-'Directory /tmp/cvs-sanity/cvsroot/first-dir/sdir added to the repository'
+"Directory ${TESTDIR}/cvsroot/first-dir/sdir added to the repository"
cd sdir
mkdir ssdir
dotest basica-3 "${testcvs} add ssdir" \
-'Directory /tmp/cvs-sanity/cvsroot/first-dir/sdir/ssdir added to the repository'
+"Directory ${TESTDIR}/cvsroot/first-dir/sdir/ssdir added to the repository"
cd ssdir
echo ssfile >ssfile
@@ -603,25 +607,25 @@ Directory /tmp/cvs-sanity/cvsroot/first-dir/sdir added to the repository"
${PROG} "'\[[a-z]* aborted\]: correct the above errors first!'
cd ../..
dotest basica-5 "${testcvs} -q ci -m add-it" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/sdir/ssdir/ssfile,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/sdir/ssdir/ssfile,v
done
Checking in sdir/ssdir/ssfile;
-/tmp/cvs-sanity/cvsroot/first-dir/sdir/ssdir/ssfile,v <-- ssfile
+${TESTDIR}/cvsroot/first-dir/sdir/ssdir/ssfile,v <-- ssfile
initial revision: 1\.1
-done'
+done"
dotest_fail basica-5a \
"${testcvs} -q tag BASE sdir/ssdir/ssfile" \
"${PROG} [a-z]*: Attempt to add reserved tag name BASE
-${PROG} \[[a-z]* aborted\]: failed to set tag BASE to revision 1\.1 in /tmp/cvs-sanity/cvsroot/first-dir/sdir/ssdir/ssfile,v"
+${PROG} \[[a-z]* aborted\]: failed to set tag BASE to revision 1\.1 in ${TESTDIR}/cvsroot/first-dir/sdir/ssdir/ssfile,v"
dotest basica-5b "${testcvs} -q tag NOT_RESERVED" \
'T sdir/ssdir/ssfile'
dotest basica-6 "${testcvs} -q update" ''
echo "ssfile line 2" >>sdir/ssdir/ssfile
dotest_status basica-6.2 1 "${testcvs} -q diff -c" \
-'Index: sdir/ssdir/ssfile
+"Index: sdir/ssdir/ssfile
===================================================================
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/sdir/ssdir/ssfile,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/sdir/ssdir/ssfile,v
retrieving revision 1\.1
diff -c -r1\.1 ssfile
\*\*\* ssfile [0-9/]* [0-9:]* 1\.1
@@ -630,11 +634,11 @@ diff -c -r1\.1 ssfile
\*\*\* 1 \*\*\*\*
--- 1,2 ----
ssfile
-'"${PLUS} ssfile line 2"
+${PLUS} ssfile line 2"
dotest_status basica-6.3 1 "${testcvs} -q diff -c -rBASE" \
-'Index: sdir/ssdir/ssfile
+"Index: sdir/ssdir/ssfile
===================================================================
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/sdir/ssdir/ssfile,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/sdir/ssdir/ssfile,v
retrieving revision 1\.1
diff -c -r1\.1 ssfile
\*\*\* ssfile [0-9/]* [0-9:]* 1\.1
@@ -643,12 +647,12 @@ diff -c -r1\.1 ssfile
\*\*\* 1 \*\*\*\*
--- 1,2 ----
ssfile
-'"${PLUS} ssfile line 2"
+${PLUS} ssfile line 2"
dotest basica-7 "${testcvs} -q ci -m modify-it" \
-'Checking in sdir/ssdir/ssfile;
-/tmp/cvs-sanity/cvsroot/first-dir/sdir/ssdir/ssfile,v <-- ssfile
+"Checking in sdir/ssdir/ssfile;
+${TESTDIR}/cvsroot/first-dir/sdir/ssdir/ssfile,v <-- ssfile
new revision: 1\.2; previous revision: 1\.1
-done'
+done"
dotest_fail basica-nonexist "${testcvs} -q ci nonexist" \
"${PROG}"' [a-z]*: nothing known about `nonexist'\''
'"${PROG}"' \[[a-z]* aborted\]: correct above errors first!'
@@ -658,39 +662,39 @@ done'
cd sdir/ssdir
dotest basica-8a0 "${testcvs} -q ci -m not-modified ssfile" ''
dotest basica-8a "${testcvs} -q ci -f -m force-it" \
-'Checking in ssfile;
-/tmp/cvs-sanity/cvsroot/first-dir/sdir/ssdir/ssfile,v <-- ssfile
+"Checking in ssfile;
+${TESTDIR}/cvsroot/first-dir/sdir/ssdir/ssfile,v <-- ssfile
new revision: 1\.3; previous revision: 1\.2
-done'
+done"
dotest basica-8a1 "${testcvs} -q ci -m bump-it -r 2.0" \
-'Checking in ssfile;
-/tmp/cvs-sanity/cvsroot/first-dir/sdir/ssdir/ssfile,v <-- ssfile
+"Checking in ssfile;
+${TESTDIR}/cvsroot/first-dir/sdir/ssdir/ssfile,v <-- ssfile
new revision: 2\.0; previous revision: 1\.3
-done'
+done"
# -f should not be necessary, but it should be harmless.
# Also test the "-r 3" (rather than "-r 3.0") usage.
dotest basica-8a2 "${testcvs} -q ci -m bump-it -f -r 3" \
-'Checking in ssfile;
-/tmp/cvs-sanity/cvsroot/first-dir/sdir/ssdir/ssfile,v <-- ssfile
+"Checking in ssfile;
+${TESTDIR}/cvsroot/first-dir/sdir/ssdir/ssfile,v <-- ssfile
new revision: 3\.1; previous revision: 2\.0
-done'
+done"
cd ../..
dotest basica-8b "${testcvs} -q diff -r1.2 -r1.3" \
-'Index: sdir/ssdir/ssfile
+"Index: sdir/ssdir/ssfile
===================================================================
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/sdir/ssdir/ssfile,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/sdir/ssdir/ssfile,v
retrieving revision 1\.2
retrieving revision 1\.3
-diff -r1\.2 -r1\.3'
+diff -r1\.2 -r1\.3"
# The .* here will normally be "No such file or directory",
# but if memory serves some systems (AIX?) have a different message.
: dotest_fail basica-9 \
- "${testcvs} -q -d /tmp/cvs-sanity/nonexist update" \
-"${PROG}: cannot access cvs root /tmp/cvs-sanity/nonexist: .*"
+ "${testcvs} -q -d ${TESTDIR}/nonexist update" \
+"${PROG}: cannot access cvs root ${TESTDIR}/nonexist: .*"
dotest_fail basica-9 \
- "${testcvs} -q -d /tmp/cvs-sanity/nonexist update" \
-"${PROG} \[[a-z]* aborted\]: /tmp/cvs-sanity/nonexist/CVSROOT: .*"
+ "${testcvs} -q -d ${TESTDIR}/nonexist update" \
+"${PROG} \[[a-z]* aborted\]: ${TESTDIR}/nonexist/CVSROOT: .*"
dotest basica-10 "${testcvs} annotate" \
'Annotations for sdir/ssdir/ssfile
@@ -712,21 +716,21 @@ diff -r1\.2 -r1\.3'
"${PROG} [a-z]*: scheduling file .topfile. for addition
${PROG} [a-z]*: use .cvs commit. to add this file permanently"
dotest basicb-0c "${testcvs} -q ci -m add-it topfile" \
-'RCS file: /tmp/cvs-sanity/cvsroot/./topfile,v
+"RCS file: ${TESTDIR}/cvsroot/\./topfile,v
done
Checking in topfile;
-/tmp/cvs-sanity/cvsroot/./topfile,v <-- topfile
+${TESTDIR}/cvsroot/\./topfile,v <-- topfile
initial revision: 1\.1
-done'
+done"
cd ..
- rm -rf 1
+ rm -r 1
mkdir 2; cd 2
dotest basicb-0d "${testcvs} -q co -l ." "U topfile"
mkdir first-dir
dotest basicb-0e "${testcvs} add first-dir" \
-"Directory /tmp/cvs-sanity/cvsroot/first-dir added to the repository"
+"Directory ${TESTDIR}/cvsroot/first-dir added to the repository"
cd ..
- rm -rf 2
+ rm -r 2
: mkdir ${CVSROOT_DIRNAME}/first-dir
dotest basicb-1 "${testcvs} -q co first-dir" ''
@@ -740,8 +744,8 @@ done'
cd first-dir
mkdir sdir1 sdir2
dotest basicb-2 "${testcvs} add sdir1 sdir2" \
-'Directory /tmp/cvs-sanity/cvsroot/first-dir/sdir1 added to the repository
-Directory /tmp/cvs-sanity/cvsroot/first-dir/sdir2 added to the repository'
+"Directory ${TESTDIR}/cvsroot/first-dir/sdir1 added to the repository
+Directory ${TESTDIR}/cvsroot/first-dir/sdir2 added to the repository"
cd sdir1
echo sfile1 starts >sfile1
dotest basicb-2a10 "${testcvs} -n add sfile1" \
@@ -777,32 +781,32 @@ ${PROG} [a-z]*: use .cvs commit. to add this file permanently"
${PROG} [a-z]*: but CVS uses CVS for its own purposes; skipping CVS directory"
cd ..
dotest basicb-5 "${testcvs} -q ci -m add" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/sdir1/sfile1,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/sdir1/sfile1,v
done
Checking in sdir1/sfile1;
-/tmp/cvs-sanity/cvsroot/first-dir/sdir1/sfile1,v <-- sfile1
+${TESTDIR}/cvsroot/first-dir/sdir1/sfile1,v <-- sfile1
initial revision: 1\.1
done
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/sdir2/sfile2,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/sdir2/sfile2,v
done
Checking in sdir2/sfile2;
-/tmp/cvs-sanity/cvsroot/first-dir/sdir2/sfile2,v <-- sfile2
+${TESTDIR}/cvsroot/first-dir/sdir2/sfile2,v <-- sfile2
initial revision: 1\.1
-done'
+done"
echo sfile1 develops >sdir1/sfile1
dotest basicb-6 "${testcvs} -q ci -m modify" \
-'Checking in sdir1/sfile1;
-/tmp/cvs-sanity/cvsroot/first-dir/sdir1/sfile1,v <-- sfile1
+"Checking in sdir1/sfile1;
+${TESTDIR}/cvsroot/first-dir/sdir1/sfile1,v <-- sfile1
new revision: 1\.2; previous revision: 1\.1
-done'
+done"
dotest basicb-7 "${testcvs} -q tag release-1" 'T sdir1/sfile1
T sdir2/sfile2'
echo not in time for release-1 >sdir2/sfile2
dotest basicb-8 "${testcvs} -q ci -m modify-2" \
-'Checking in sdir2/sfile2;
-/tmp/cvs-sanity/cvsroot/first-dir/sdir2/sfile2,v <-- sfile2
+"Checking in sdir2/sfile2;
+${TESTDIR}/cvsroot/first-dir/sdir2/sfile2,v <-- sfile2
new revision: 1\.2; previous revision: 1\.1
-done'
+done"
# See if CVS can correctly notice when an invalid numeric
# revision is specified.
# Commented out until we get around to fixing CVS
@@ -815,9 +819,9 @@ done'
dotest basicb-cod-1 "${testcvs} -q co -d first-dir1 first-dir" \
'U first-dir1/sdir1/sfile1
U first-dir1/sdir2/sfile2'
- rm -rf first-dir1
+ rm -r first-dir1
- rm -rf first-dir
+ rm -r first-dir
dotest basicb-9 \
"${testcvs} -q co -d newdir -r release-1 first-dir/sdir1 first-dir/sdir2" \
'U newdir/sdir1/sfile1
@@ -832,7 +836,7 @@ U newdir/sdir2/sfile2'
"sfile1 develops
sfile2 starts"
- rm -rf newdir
+ rm -r newdir
# Hmm, this might be a case for CVSNULLREPOS, but CVS doesn't
# seem to deal with it...
@@ -862,14 +866,14 @@ U sub1/sub2/sdir2/sfile2"
"${PROG} [a-z]*: scheduling file .aa. for addition
${PROG} [a-z]*: use .cvs commit. to add this file permanently"
dotest basicb-17 "${testcvs} -q ci -m add" \
-'RCS file: /tmp/cvs-sanity/cvsroot/second-dir/aa,v
+"RCS file: ${TESTDIR}/cvsroot/second-dir/aa,v
done
Checking in aa;
-/tmp/cvs-sanity/cvsroot/second-dir/aa,v <-- aa
+${TESTDIR}/cvsroot/second-dir/aa,v <-- aa
initial revision: 1\.1
-done'
+done"
cd ../..
- rm -rf 1
+ rm -r 1
# Now here is the kicker: note that the semantics of -d
# are fundamentally different if we specify two or more directories
# rather than one! I consider this to be seriously bogus,
@@ -890,135 +894,413 @@ U test2/second-dir/aa"
"${PROG} [a-z]*: scheduling file .emptyfile. for addition
${PROG} [a-z]*: use .cvs commit. to add this file permanently"
dotest basicb-20 "${testcvs} -q ci -m add" \
-'RCS file: /tmp/cvs-sanity/cvsroot/CVSROOT/Emptydir/emptyfile,v
+"RCS file: ${TESTDIR}/cvsroot/CVSROOT/Emptydir/emptyfile,v
done
Checking in emptyfile;
-/tmp/cvs-sanity/cvsroot/CVSROOT/Emptydir/emptyfile,v <-- emptyfile
+${TESTDIR}/cvsroot/CVSROOT/Emptydir/emptyfile,v <-- emptyfile
initial revision: 1\.1
-done'
+done"
+ cd ..
+
+ mkdir 1; cd 1
+ # "cvs admin" tests are scattered around a bit. Here we test
+ # ability to reject an unrecognized option. The "keyword"
+ # test has a test of "cvs admin -l" and the "binfiles" test
+ # has a test of "cvs admin -k". Note that -H is an illegal
+ # option. It probably should be an error message. But
+ # currently it is one error message for each file operated on,
+ # which in this case is zero files.
+ dotest basicb-21 "${testcvs} -q admin -H" ""
cd ..
- rm -rf test2
+ rmdir 1
+
+ if test "$keep" = yes; then
+ echo Keeping ${TESTDIR} and exiting due to --keep
+ exit 0
+ fi
+
+ rm -r test2
rm -rf ${CVSROOT_DIRNAME}/first-dir
rm -rf ${CVSROOT_DIRNAME}/second-dir
+ rm -rf ${CVSROOT_DIRNAME}/CVSROOT/Emptydir
rm -f ${CVSROOT_DIRNAME}/topfile,v
;;
- basic1) # first dive - add a files, first singly, then in a group.
- mkdir ${CVSROOT_DIRNAME}/first-dir
- mkdir 1; cd 1
- # check out an empty directory
- if ${CVS} co first-dir ; then
- echo "PASS: test 13a" >>${LOGFILE}
- else
- echo "FAIL: test 13a" | tee -a ${LOGFILE}; exit 1
- fi
+ basic1)
+ # first dive - add a files, first singly, then in a group.
+ mkdir ${CVSROOT_DIRNAME}/first-dir
+ mkdir 1; cd 1
+ # check out an empty directory
+ dotest basic1-1 "${testcvs} -q co first-dir" ''
- cd first-dir
- files=first-file
- for i in a b ; do
- for j in ${files} ; do
- echo $j > $j
- done
+ cd first-dir
+ echo file2 >file2
+ echo file3 >file3
+ echo file4 >file4
+ echo file5 >file5
+
+ dotest basic1-14-add-add "${testcvs} add file2 file3 file4 file5" \
+"${PROG} [a-z]*: scheduling file \`file2' for addition
+${PROG} [a-z]*: scheduling file \`file3' for addition
+${PROG} [a-z]*: scheduling file \`file4' for addition
+${PROG} [a-z]*: scheduling file \`file5' for addition
+${PROG} [a-z]*: use 'cvs commit' to add these files permanently"
+ dotest basic1-15-add-add \
+"${testcvs} -q update file2 file3 file4 file5" \
+"A file2
+A file3
+A file4
+A file5"
+ dotest basic1-16-add-add "${testcvs} -q update" \
+"A file2
+A file3
+A file4
+A file5"
+ dotest basic1-17-add-add "${testcvs} -q status" \
+"===================================================================
+File: file2 Status: Locally Added
- for do in add rm ; do
- for j in ${do} "commit -m test" ; do
- # ${do}
- if ${CVS} $j ${files} >> ${LOGFILE} 2>&1; then
- echo "PASS: test 14-${do}-$j" >>${LOGFILE}
- else
- echo "FAIL: test 14-${do}-$j" | tee -a ${LOGFILE}; exit 1
- fi
-
- # update it.
- if test "${do}" = "rm" -a "$j" != "commit -m test" || ${CVS} update ${files} ; then
- echo "PASS: test 15-${do}-$j" >>${LOGFILE}
- else
- echo "FAIL: test 15-${do}-$j" | tee -a ${LOGFILE}; exit 1
- fi
-
- # update all.
- if ${CVS} update ; then
- echo "PASS: test 16-${do}-$j" >>${LOGFILE}
- else
- echo "FAIL: test 16-${do}-$j" | tee -a ${LOGFILE}; exit 1
- fi
-
- # status all.
- if ${CVS} status >> ${LOGFILE}; then
- echo "PASS: test 17-${do}-$j" >>${LOGFILE}
- else
- echo "FAIL: test 17-${do}-$j" | tee -a ${LOGFILE}; exit 1
- fi
-
- # FIXME: this one doesn't work yet for added files.
- # log all.
- if ${CVS} log >> ${LOGFILE}; then
- echo "PASS: test 18-${do}-$j" >>${LOGFILE}
- else
- echo "FAIL: test 18-${do}-$j" | tee -a ${LOGFILE}
- fi
-
- cd ..
- # update all.
- if ${CVS} update ; then
- echo "PASS: test 21-${do}-$j" >>${LOGFILE}
- else
- echo "FAIL: test 21-${do}-$j" | tee -a ${LOGFILE}; exit 1
- fi
-
- # log all.
- # FIXME: doesn't work right for added files.
- if ${CVS} log first-dir >> ${LOGFILE}; then
- echo "PASS: test 22-${do}-$j" >>${LOGFILE}
- else
- echo "FAIL: test 22-${do}-$j" | tee -a ${LOGFILE}
- fi
-
- # status all.
- if ${CVS} status first-dir >> ${LOGFILE}; then
- echo "PASS: test 23-${do}-$j" >>${LOGFILE}
- else
- echo "FAIL: test 23-${do}-$j" | tee -a ${LOGFILE}; exit 1
- fi
-
- # update all.
- if ${CVS} update first-dir ; then
- echo "PASS: test 24-${do}-$j" >>${LOGFILE}
- else
- echo "FAIL: test 24-${do}-$j" | tee -a ${LOGFILE} ; exit 1
- fi
-
- # update all.
- if ${CVS} co first-dir ; then
- echo "PASS: test 27-${do}-$j" >>${LOGFILE}
- else
- echo "FAIL: test 27-${do}-$j" | tee -a ${LOGFILE} ; exit 1
- fi
-
- cd first-dir
- done # j
- rm -f ${files}
- done # do
-
- files="file2 file3 file4 file5"
- done
- if ${CVS} tag first-dive ; then
- echo "PASS: test 28" >>${LOGFILE}
- else
- echo "FAIL: test 28" | tee -a ${LOGFILE} ; exit 1
- fi
- cd ..
- cd ..
+ Working revision: New file!
+ Repository revision: No revision control file
+ Sticky Tag: (none)
+ Sticky Date: (none)
+ Sticky Options: (none)
- if test "$keep" = yes; then
- echo Keeping /tmp/cvs-sanity and exiting due to --keep
- exit 0
- fi
+===================================================================
+File: file3 Status: Locally Added
- rm -rf 1
- rm -rf ${CVSROOT_DIRNAME}/first-dir
- ;;
+ Working revision: New file!
+ Repository revision: No revision control file
+ Sticky Tag: (none)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+===================================================================
+File: file4 Status: Locally Added
+
+ Working revision: New file!
+ Repository revision: No revision control file
+ Sticky Tag: (none)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+===================================================================
+File: file5 Status: Locally Added
+
+ Working revision: New file!
+ Repository revision: No revision control file
+ Sticky Tag: (none)
+ Sticky Date: (none)
+ Sticky Options: (none)"
+ dotest basic1-18-add-add "${testcvs} -q log" \
+"${PROG} [a-z]*: file2 has been added, but not committed
+${PROG} [a-z]*: file3 has been added, but not committed
+${PROG} [a-z]*: file4 has been added, but not committed
+${PROG} [a-z]*: file5 has been added, but not committed"
+ cd ..
+ dotest basic1-21-add-add "${testcvs} -q update" \
+"A first-dir/file2
+A first-dir/file3
+A first-dir/file4
+A first-dir/file5"
+ # FIXCVS? Shouldn't this read first-dir/file2 instead of file2?
+ dotest basic1-22-add-add "${testcvs} log first-dir" \
+"${PROG} [a-z]*: Logging first-dir
+${PROG} [a-z]*: file2 has been added, but not committed
+${PROG} [a-z]*: file3 has been added, but not committed
+${PROG} [a-z]*: file4 has been added, but not committed
+${PROG} [a-z]*: file5 has been added, but not committed"
+ dotest basic1-23-add-add "${testcvs} status first-dir" \
+"${PROG} [a-z]*: Examining first-dir
+===================================================================
+File: file2 Status: Locally Added
+
+ Working revision: New file!
+ Repository revision: No revision control file
+ Sticky Tag: (none)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+===================================================================
+File: file3 Status: Locally Added
+
+ Working revision: New file!
+ Repository revision: No revision control file
+ Sticky Tag: (none)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+===================================================================
+File: file4 Status: Locally Added
+
+ Working revision: New file!
+ Repository revision: No revision control file
+ Sticky Tag: (none)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+===================================================================
+File: file5 Status: Locally Added
+
+ Working revision: New file!
+ Repository revision: No revision control file
+ Sticky Tag: (none)
+ Sticky Date: (none)
+ Sticky Options: (none)"
+ dotest basic1-24-add-add "${testcvs} update first-dir" \
+"${PROG} [a-z]*: Updating first-dir
+A first-dir/file2
+A first-dir/file3
+A first-dir/file4
+A first-dir/file5"
+ dotest basic1-27-add-add "${testcvs} co first-dir" \
+"${PROG} [a-z]*: Updating first-dir
+A first-dir/file2
+A first-dir/file3
+A first-dir/file4
+A first-dir/file5"
+ cd first-dir
+ dotest basic1-14-add-ci \
+"${testcvs} commit -m test file2 file3 file4 file5" \
+"RCS file: ${TESTDIR}/cvsroot/first-dir/file2,v
+done
+Checking in file2;
+${TESTDIR}/cvsroot/first-dir/file2,v <-- file2
+initial revision: 1\.1
+done
+RCS file: ${TESTDIR}/cvsroot/first-dir/file3,v
+done
+Checking in file3;
+${TESTDIR}/cvsroot/first-dir/file3,v <-- file3
+initial revision: 1\.1
+done
+RCS file: ${TESTDIR}/cvsroot/first-dir/file4,v
+done
+Checking in file4;
+${TESTDIR}/cvsroot/first-dir/file4,v <-- file4
+initial revision: 1\.1
+done
+RCS file: ${TESTDIR}/cvsroot/first-dir/file5,v
+done
+Checking in file5;
+${TESTDIR}/cvsroot/first-dir/file5,v <-- file5
+initial revision: 1\.1
+done"
+ dotest basic1-15-add-ci \
+"${testcvs} -q update file2 file3 file4 file5" ''
+ dotest basic1-16-add-ci "${testcvs} -q update" ''
+ dotest basic1-17-add-ci "${testcvs} -q status" \
+"===================================================================
+File: file2 Status: Up-to-date
+
+ Working revision: 1\.1.*
+ Repository revision: 1\.1 ${TESTDIR}/cvsroot/first-dir/file2,v
+ Sticky Tag: (none)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+===================================================================
+File: file3 Status: Up-to-date
+
+ Working revision: 1\.1.*
+ Repository revision: 1\.1 ${TESTDIR}/cvsroot/first-dir/file3,v
+ Sticky Tag: (none)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+===================================================================
+File: file4 Status: Up-to-date
+
+ Working revision: 1\.1.*
+ Repository revision: 1\.1 ${TESTDIR}/cvsroot/first-dir/file4,v
+ Sticky Tag: (none)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+===================================================================
+File: file5 Status: Up-to-date
+
+ Working revision: 1\.1.*
+ Repository revision: 1\.1 ${TESTDIR}/cvsroot/first-dir/file5,v
+ Sticky Tag: (none)
+ Sticky Date: (none)
+ Sticky Options: (none)"
+ # The "log" tests and friends probably already test the output
+ # from log quite adequately.
+ # Note: using dotest fails here. It seems to be related
+ # to the output being sufficiently large (Red Hat 4.1).
+ # dotest basic1-18-add-ci "${testcvs} log" "${DOTSTAR}"
+ if ${testcvs} -q log >>${LOGFILE}; then
+ pass basic1-18-add-ci
+ else
+ pass basic1-18-add-ci
+ fi
+ cd ..
+ dotest basic1-21-add-ci "${testcvs} -q update" ''
+ # See test basic1-18-add-ci for explanation of non-use of dotest.
+ if ${testcvs} -q log first-dir >>${LOGFILE}; then
+ pass basic1-22-add-ci
+ else
+ pass basic1-22-add-ci
+ fi
+ # At least for the moment I am going to consider 17-add-ci
+ # an adequate test of the output here.
+ # See test basic1-18-add-ci for explanation of non-use of dotest.
+ if ${testcvs} -q status first-dir >>${LOGFILE}; then
+ pass basic1-23-add-ci
+ else
+ pass basic1-23-add-ci
+ fi
+ dotest basic1-24-add-ci "${testcvs} -q update first-dir" ''
+ dotest basic1-27-add-ci "${testcvs} -q co first-dir" ''
+
+ cd first-dir
+ rm file2 file3 file4 file5
+ dotest basic1-14-rm-rm "${testcvs} rm file2 file3 file4 file5" \
+"${PROG} [a-z]*: scheduling .file2. for removal
+${PROG} [a-z]*: scheduling .file3. for removal
+${PROG} [a-z]*: scheduling .file4. for removal
+${PROG} [a-z]*: scheduling .file5. for removal
+${PROG} [a-z]*: use .${PROG} commit. to remove these files permanently"
+ # 15-rm-rm was commented out. Why?
+ dotest basic1-15-rm-rm \
+"${testcvs} -q update file2 file3 file4 file5" \
+"R file2
+R file3
+R file4
+R file5"
+ dotest basic1-16-rm-rm "${testcvs} -q update" \
+"R file2
+R file3
+R file4
+R file5"
+ dotest basic1-17-rm-rm "${testcvs} -q status" \
+"===================================================================
+File: no file file2 Status: Locally Removed
+
+ Working revision: -1\.1.*
+ Repository revision: 1\.1 ${TESTDIR}/cvsroot/first-dir/file2,v
+ Sticky Tag: (none)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+===================================================================
+File: no file file3 Status: Locally Removed
+
+ Working revision: -1\.1.*
+ Repository revision: 1\.1 ${TESTDIR}/cvsroot/first-dir/file3,v
+ Sticky Tag: (none)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+===================================================================
+File: no file file4 Status: Locally Removed
+
+ Working revision: -1\.1.*
+ Repository revision: 1\.1 ${TESTDIR}/cvsroot/first-dir/file4,v
+ Sticky Tag: (none)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+===================================================================
+File: no file file5 Status: Locally Removed
+
+ Working revision: -1\.1.*
+ Repository revision: 1\.1 ${TESTDIR}/cvsroot/first-dir/file5,v
+ Sticky Tag: (none)
+ Sticky Date: (none)
+ Sticky Options: (none)"
+ # Would be nice to test that real logs appear (with dead state
+ # and all), either here or someplace like log2 tests.
+ if ${testcvs} -q log >>${LOGFILE}; then
+ pass basic1-18-rm-rm
+ else
+ fail basic1-18-rm-rm
+ fi
+ cd ..
+ dotest basic1-21-rm-rm "${testcvs} -q update" \
+"R first-dir/file2
+R first-dir/file3
+R first-dir/file4
+R first-dir/file5"
+ if ${testcvs} -q log first-dir >>${LOGFILE}; then
+ pass basic1-22-rm-rm
+ else
+ fail basic1-22-rm-rm
+ fi
+ if ${testcvs} -q status first-dir >>${LOGFILE}; then
+ pass basic1-23-rm-rm
+ else
+ fail basic1-23-rm-rm
+ fi
+ dotest basic1-24-rm-rm "${testcvs} -q update first-dir" \
+"R first-dir/file2
+R first-dir/file3
+R first-dir/file4
+R first-dir/file5"
+ dotest basic1-27-rm-rm "${testcvs} -q co first-dir" \
+"R first-dir/file2
+R first-dir/file3
+R first-dir/file4
+R first-dir/file5"
+ cd first-dir
+ dotest basic1-14-rm-ci "${testcvs} -q commit -m test" \
+"Removing file2;
+${TESTDIR}/cvsroot/first-dir/file2,v <-- file2
+new revision: delete; previous revision: 1\.1
+done
+Removing file3;
+${TESTDIR}/cvsroot/first-dir/file3,v <-- file3
+new revision: delete; previous revision: 1\.1
+done
+Removing file4;
+${TESTDIR}/cvsroot/first-dir/file4,v <-- file4
+new revision: delete; previous revision: 1\.1
+done
+Removing file5;
+${TESTDIR}/cvsroot/first-dir/file5,v <-- file5
+new revision: delete; previous revision: 1\.1
+done"
+ dotest basic1-15-rm-ci \
+"${testcvs} -q update file2 file3 file4 file5" ''
+ dotest basic1-16-rm-ci "${testcvs} -q update" ''
+ dotest basic1-17-rm-ci "${testcvs} -q status" ''
+ # Would be nice to test that real logs appear (with dead state
+ # and all), either here or someplace like log2 tests.
+ if ${testcvs} -q log >>${LOGFILE}; then
+ pass basic1-18-rm-ci
+ else
+ fail basic1-18-rm-ci
+ fi
+ cd ..
+ dotest basic1-21-rm-ci "${testcvs} -q update" ''
+ if ${testcvs} -q log first-dir >>${LOGFILE}; then
+ pass basic1-22-rm-ci
+ else
+ fail basic1-22-rm-ci
+ fi
+ if ${testcvs} -q status first-dir >>${LOGFILE}; then
+ pass basic1-23-rm-ci
+ else
+ fail basic1-23-rm-ci
+ fi
+ dotest basic1-24-rm-ci "${testcvs} -q update first-dir" ''
+ dotest basic1-27-rm-ci "${testcvs} -q co first-dir" ''
+ cd first-dir
+ # All the files are removed, so nothing gets tagged.
+ dotest basic1-28 "${testcvs} -q tag first-dive" ''
+ cd ..
+ cd ..
+
+ if test "$keep" = yes; then
+ echo Keeping ${TESTDIR} and exiting due to --keep
+ exit 0
+ fi
+
+ rm -r 1
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
+ ;;
deep)
# Test the ability to operate on directories nested rather deeply.
@@ -1028,7 +1310,7 @@ done'
for i in dir1 dir2 dir3 dir4 dir5 dir6 dir7 dir8; do
mkdir $i
dotest deep-2-$i "${testcvs} add $i" \
-'Directory /tmp/cvs-sanity/cvsroot/first-dir/dir1[/dir0-9]* added to the repository'
+"Directory ${TESTDIR}/cvsroot/first-dir/dir1[/dir0-9]* added to the repository"
cd $i
echo file1 >file1
dotest deep-3-$i "${testcvs} add file1" \
@@ -1036,53 +1318,53 @@ done'
'"${PROG}"' [a-z]*: use '\''cvs commit'\'' to add this file permanently'
done
cd ../../../../../../../../..
- dotest_lit deep-4 "${testcvs} -q ci -m add-them first-dir" <<'HERE'
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/dir1/file1,v
+ dotest_lit deep-4 "${testcvs} -q ci -m add-them first-dir" <<HERE
+RCS file: ${TESTDIR}/cvsroot/first-dir/dir1/file1,v
done
Checking in first-dir/dir1/file1;
-/tmp/cvs-sanity/cvsroot/first-dir/dir1/file1,v <-- file1
+${TESTDIR}/cvsroot/first-dir/dir1/file1,v <-- file1
initial revision: 1.1
done
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/dir1/dir2/file1,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/dir1/dir2/file1,v
done
Checking in first-dir/dir1/dir2/file1;
-/tmp/cvs-sanity/cvsroot/first-dir/dir1/dir2/file1,v <-- file1
+${TESTDIR}/cvsroot/first-dir/dir1/dir2/file1,v <-- file1
initial revision: 1.1
done
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/dir1/dir2/dir3/file1,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/dir1/dir2/dir3/file1,v
done
Checking in first-dir/dir1/dir2/dir3/file1;
-/tmp/cvs-sanity/cvsroot/first-dir/dir1/dir2/dir3/file1,v <-- file1
+${TESTDIR}/cvsroot/first-dir/dir1/dir2/dir3/file1,v <-- file1
initial revision: 1.1
done
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/dir1/dir2/dir3/dir4/file1,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/dir1/dir2/dir3/dir4/file1,v
done
Checking in first-dir/dir1/dir2/dir3/dir4/file1;
-/tmp/cvs-sanity/cvsroot/first-dir/dir1/dir2/dir3/dir4/file1,v <-- file1
+${TESTDIR}/cvsroot/first-dir/dir1/dir2/dir3/dir4/file1,v <-- file1
initial revision: 1.1
done
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/file1,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/file1,v
done
Checking in first-dir/dir1/dir2/dir3/dir4/dir5/file1;
-/tmp/cvs-sanity/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/file1,v <-- file1
+${TESTDIR}/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/file1,v <-- file1
initial revision: 1.1
done
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/file1,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/file1,v
done
Checking in first-dir/dir1/dir2/dir3/dir4/dir5/dir6/file1;
-/tmp/cvs-sanity/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/file1,v <-- file1
+${TESTDIR}/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/file1,v <-- file1
initial revision: 1.1
done
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/file1,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/file1,v
done
Checking in first-dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/file1;
-/tmp/cvs-sanity/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/file1,v <-- file1
+${TESTDIR}/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/file1,v <-- file1
initial revision: 1.1
done
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/file1,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/file1,v
done
Checking in first-dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/file1;
-/tmp/cvs-sanity/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/file1,v <-- file1
+${TESTDIR}/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/file1,v <-- file1
initial revision: 1.1
done
HERE
@@ -1092,10 +1374,10 @@ HERE
dotest deep-4a0 "${testcvs} rm file1" \
"${PROG} [a-z]*: scheduling .file1. for removal
${PROG} [a-z]*: use .${PROG} commit. to remove this file permanently"
- dotest deep-4a1 "${testcvs} -q ci -m rm-it" 'Removing file1;
-/tmp/cvs-sanity/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/file1,v <-- file1
+ dotest deep-4a1 "${testcvs} -q ci -m rm-it" "Removing file1;
+${TESTDIR}/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/file1,v <-- file1
new revision: delete; previous revision: 1\.1
-done'
+done"
cd ../../..
dotest deep-4a2 "${testcvs} -q update -P dir6/dir7" ''
# Should be using "test -e" if that is portable enough.
@@ -1108,7 +1390,7 @@ done'
# CVS *will* recreate it, and we might want to make it so
# that "cvs release -d" is the way to delete the directory
# and have it stay gone -kingdon, Oct1996).
- rm -rf dir6
+ rm -r dir6
dotest deep-4b1 "${testcvs} -q update" ''
dotest deep-4b2 "${testcvs} -q update -d -P" \
'U dir6/file1
@@ -1123,10 +1405,10 @@ ${PROG} [a-z]*: use .${PROG} commit. to remove this file permanently"
cd ..
dotest deep-rm2 "${testcvs} -q update -d -P" 'R dir7/file1'
dotest deep-rm3 "test -d dir7" ''
- dotest deep-rm4 "${testcvs} -q ci -m rm-it" 'Removing dir7/file1;
-/tmp/cvs-sanity/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/file1,v <-- file1
+ dotest deep-rm4 "${testcvs} -q ci -m rm-it" "Removing dir7/file1;
+${TESTDIR}/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/dir7/file1,v <-- file1
new revision: delete; previous revision: 1\.1
-done'
+done"
dotest deep-rm5 "${testcvs} -q update -d -P" ''
dotest_fail deep-rm6 "test -d dir7" ''
@@ -1139,14 +1421,14 @@ ${PROG} [a-z]*: Removing dir5/dir6
${PROG} [a-z]*: scheduling .dir5/dir6/file1. for removal
${PROG} [a-z]*: use .${PROG} commit. to remove these files permanently"
dotest deep-rm8 "${testcvs} -q ci -m rm-it" \
-'Removing dir5/file1;
-/tmp/cvs-sanity/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/file1,v <-- file1
+"Removing dir5/file1;
+${TESTDIR}/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/file1,v <-- file1
new revision: delete; previous revision: 1\.1
done
Removing dir5/dir6/file1;
-/tmp/cvs-sanity/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/file1,v <-- file1
+${TESTDIR}/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/file1,v <-- file1
new revision: delete; previous revision: 1\.1
-done'
+done"
dotest deep-rm9 "${testcvs} -q update -d -P" ''
dotest_fail deep-rm10 "test -d dir5"
@@ -1348,7 +1630,6 @@ done'
fi
# now export by rtagged-by-head and rtagged-by-tag and compare.
- rm -rf first-dir
if ${CVS} export -r rtagged-by-head first-dir ; then
echo "PASS: test 50" >>${LOGFILE}
else
@@ -1369,7 +1650,7 @@ done'
else
echo "PASS: test 52" >>${LOGFILE}
fi
- rm -rf 1dir first-dir
+ rm -r 1dir first-dir
# checkout by revision vs export by rtagged-by-revision and compare.
if ${CVS} export -rrtagged-by-revision -d export-dir first-dir ; then
@@ -1385,7 +1666,7 @@ done'
fi
# directory copies are done in an oblique way in order to avoid a bug in sun's tmp filesystem.
- mkdir first-dir.cpy ; (cd first-dir ; tar cf - * | (cd ../first-dir.cpy ; tar xf -))
+ mkdir first-dir.cpy ; (cd first-dir ; tar cf - . | (cd ../first-dir.cpy ; tar xf -))
directory_cmp first-dir export-dir
@@ -1399,19 +1680,19 @@ done'
# into a couple of other modules.
cd export-dir
dotest 56 "${testcvs} import -m first-import second-dir first-immigration immigration1 immigration1_0" \
-'N second-dir/file14
+"N second-dir/file14
N second-dir/file6
N second-dir/file7
-'"${PROG}"' [a-z]*: Importing /tmp/cvs-sanity/cvsroot/second-dir/dir1
+${PROG} [a-z]*: Importing ${TESTDIR}/cvsroot/second-dir/dir1
N second-dir/dir1/file14
N second-dir/dir1/file6
N second-dir/dir1/file7
-'"${PROG}"' [a-z]*: Importing /tmp/cvs-sanity/cvsroot/second-dir/dir1/dir2
+${PROG} [a-z]*: Importing ${TESTDIR}/cvsroot/second-dir/dir1/dir2
N second-dir/dir1/dir2/file14
N second-dir/dir1/dir2/file6
N second-dir/dir1/dir2/file7
-No conflicts created by this import'
+No conflicts created by this import"
cd ..
if ${CVS} export -r HEAD second-dir ; then
@@ -1428,11 +1709,11 @@ No conflicts created by this import'
echo "PASS: test 58" >>${LOGFILE}
fi
- rm -rf second-dir
+ rm -r second-dir
- rm -rf export-dir first-dir
+ rm -r export-dir first-dir
mkdir first-dir
- (cd first-dir.cpy ; tar cf - * | (cd ../first-dir ; tar xf -))
+ (cd first-dir.cpy ; tar cf - . | (cd ../first-dir ; tar xf -))
# update the top, cancelling sticky tags, retag, update other copy, compare.
cd first-dir
@@ -1479,12 +1760,12 @@ No conflicts created by this import'
# else
# echo "PASS: test 63" >>${LOGFILE}
# fi
- rm -rf 1dir first-dir
+ rm -r 1dir first-dir
# Test the cvs history command.
# The reason that there are two patterns rather than using
- # \(/tmp/cvs-sanity\|<remote>\) is that we are trying to
+ # \(${TESTDIR}\|<remote>\) is that we are trying to
# make this portable. Perhaps at some point we should
# ditch that notion and require GNU expr (or dejagnu or....)
# since it seems to be so painful.
@@ -1493,44 +1774,44 @@ No conflicts created by this import'
# which don't exist in the remote output? would seem to be
# a CVS bug.
dotest basic2-64 "${testcvs} his -x TOFWUCGMAR -a" \
-'O [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* first-dir =first-dir= '"${TMPPWD}"'/cvs-sanity/\*
-A [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.1 file6 first-dir == '"${TMPPWD}"'/cvs-sanity
-A [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.1 file7 first-dir == '"${TMPPWD}"'/cvs-sanity
-A [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.1 file6 first-dir/dir1 == '"${TMPPWD}"'/cvs-sanity
-A [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.1 file7 first-dir/dir1 == '"${TMPPWD}"'/cvs-sanity
-A [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.1 file6 first-dir/dir1/dir2 == '"${TMPPWD}"'/cvs-sanity
-A [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.1 file7 first-dir/dir1/dir2 == '"${TMPPWD}"'/cvs-sanity
-A [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.1 file14 first-dir == '"${TMPPWD}"'/cvs-sanity
-M [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.2 file6 first-dir == '"${TMPPWD}"'/cvs-sanity
-A [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.1 file14 first-dir/dir1 == '"${TMPPWD}"'/cvs-sanity
-M [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.2 file6 first-dir/dir1 == '"${TMPPWD}"'/cvs-sanity
-A [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.1 file14 first-dir/dir1/dir2 == '"${TMPPWD}"'/cvs-sanity
-M [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.2 file6 first-dir/dir1/dir2 == '"${TMPPWD}"'/cvs-sanity
-F [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* =first-dir= '"${TMPPWD}"'/cvs-sanity/\*
-T [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* first-dir \[rtagged-by-head:A\]
-T [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* first-dir \[rtagged-by-tag:rtagged-by-head\]
-T [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* first-dir \[rtagged-by-revision:1\.1\]
-O [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* \[1\.1\] first-dir =first-dir= '"${TMPPWD}"'/cvs-sanity/\*
-U [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.2 file6 first-dir == '"${TMPPWD}"'/cvs-sanity/first-dir
-U [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.2 file7 first-dir == '"${TMPPWD}"'/cvs-sanity/first-dir' \
-'O [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* first-dir =first-dir= <remote>/\*
-A [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.1 file6 first-dir == <remote>
-A [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.1 file7 first-dir == <remote>
-A [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.1 file6 first-dir/dir1 == <remote>
-A [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.1 file7 first-dir/dir1 == <remote>
-A [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.1 file6 first-dir/dir1/dir2 == <remote>
-A [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.1 file7 first-dir/dir1/dir2 == <remote>
-A [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.1 file14 first-dir == <remote>
-M [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.2 file6 first-dir == <remote>
-A [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.1 file14 first-dir/dir1 == <remote>
-M [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.2 file6 first-dir/dir1 == <remote>
-A [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.1 file14 first-dir/dir1/dir2 == <remote>
-M [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* 1\.2 file6 first-dir/dir1/dir2 == <remote>
-F [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* =first-dir= <remote>/\*
-T [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* first-dir \[rtagged-by-head:A\]
-T [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* first-dir \[rtagged-by-tag:rtagged-by-head\]
-T [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* first-dir \[rtagged-by-revision:1\.1\]
-O [0-9/]* [0-9:]* '"${PLUS}"'0000 [a-z0-9@][a-z0-9@]* \[1\.1\] first-dir =first-dir= <remote>/\*'
+"O [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* first-dir =first-dir= ${TMPPWD}/\*
+A [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.1 file6 first-dir == ${TMPPWD}
+A [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.1 file7 first-dir == ${TMPPWD}
+A [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.1 file6 first-dir/dir1 == ${TMPPWD}
+A [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.1 file7 first-dir/dir1 == ${TMPPWD}
+A [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.1 file6 first-dir/dir1/dir2 == ${TMPPWD}
+A [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.1 file7 first-dir/dir1/dir2 == ${TMPPWD}
+A [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.1 file14 first-dir == ${TMPPWD}
+M [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.2 file6 first-dir == ${TMPPWD}
+A [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.1 file14 first-dir/dir1 == ${TMPPWD}
+M [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.2 file6 first-dir/dir1 == ${TMPPWD}
+A [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.1 file14 first-dir/dir1/dir2 == ${TMPPWD}
+M [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.2 file6 first-dir/dir1/dir2 == ${TMPPWD}
+F [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* =first-dir= ${TMPPWD}/\*
+T [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* first-dir \[rtagged-by-head:A\]
+T [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* first-dir \[rtagged-by-tag:rtagged-by-head\]
+T [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* first-dir \[rtagged-by-revision:1\.1\]
+O [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* \[1\.1\] first-dir =first-dir= ${TMPPWD}/\*
+U [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.2 file6 first-dir == ${TMPPWD}/first-dir
+U [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.2 file7 first-dir == ${TMPPWD}/first-dir" \
+"O [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* first-dir =first-dir= <remote>/\*
+A [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.1 file6 first-dir == <remote>
+A [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.1 file7 first-dir == <remote>
+A [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.1 file6 first-dir/dir1 == <remote>
+A [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.1 file7 first-dir/dir1 == <remote>
+A [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.1 file6 first-dir/dir1/dir2 == <remote>
+A [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.1 file7 first-dir/dir1/dir2 == <remote>
+A [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.1 file14 first-dir == <remote>
+M [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.2 file6 first-dir == <remote>
+A [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.1 file14 first-dir/dir1 == <remote>
+M [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.2 file6 first-dir/dir1 == <remote>
+A [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.1 file14 first-dir/dir1/dir2 == <remote>
+M [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* 1\.2 file6 first-dir/dir1/dir2 == <remote>
+F [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* =first-dir= <remote>/\*
+T [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* first-dir \[rtagged-by-head:A\]
+T [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* first-dir \[rtagged-by-tag:rtagged-by-head\]
+T [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* first-dir \[rtagged-by-revision:1\.1\]
+O [0-9/]* [0-9:]* ${PLUS}0000 [a-z0-9@][a-z0-9@]* \[1\.1\] first-dir =first-dir= <remote>/\*"
rm -rf ${CVSROOT_DIRNAME}/first-dir
rm -rf ${CVSROOT_DIRNAME}/second-dir
@@ -1562,10 +1843,10 @@ U trdiff/foo"
echo something >> foo
dotest rdiff-3 \
"${testcvs} ci -m added-something foo" \
-'Checking in foo;
-/tmp/cvs-sanity/cvsroot/trdiff/foo,v <-- foo
+"Checking in foo;
+${TESTDIR}/cvsroot/trdiff/foo,v <-- foo
new revision: 1\.2; previous revision: 1\.1
-done'
+done"
echo '#ident "@(#)trdiff:$''Name$:$''Id$"' > new
echo "new file" >> new
dotest rdiff-4 \
@@ -1574,12 +1855,12 @@ done'
${PROG} [a-z]*: use 'cvs commit' to add this file permanently"
dotest rdiff-5 \
"${testcvs} commit -m added-new-file new" \
-'RCS file: /tmp/cvs-sanity/cvsroot/trdiff/new,v
+"RCS file: ${TESTDIR}/cvsroot/trdiff/new,v
done
Checking in new;
-/tmp/cvs-sanity/cvsroot/trdiff/new,v <-- new
+${TESTDIR}/cvsroot/trdiff/new,v <-- new
initial revision: 1\.1
-done'
+done"
dotest rdiff-6 \
"${testcvs} tag local-v0" \
"${PROG} [a-z]*: Tagging .
@@ -1588,11 +1869,11 @@ T foo
T new"
dotest rdiff-7 \
"${testcvs} status -v foo" \
-'===================================================================
+"===================================================================
File: foo Status: Up-to-date
Working revision: 1\.2.*
- Repository revision: 1\.2 /tmp/cvs-sanity/cvsroot/trdiff/foo,v
+ Repository revision: 1\.2 ${TESTDIR}/cvsroot/trdiff/foo,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: -ko
@@ -1600,10 +1881,10 @@ File: foo Status: Up-to-date
Existing Tags:
local-v0 (revision: 1\.2)
T1 (revision: 1\.1\.1\.1)
- TRDIFF (branch: 1\.1\.1)'
+ TRDIFF (branch: 1\.1\.1)"
cd ..
- rm -rf trdiff
+ rm -r trdiff
dotest rdiff-8 \
"${testcvs} rdiff -r T1 -r local-v0 trdiff" \
@@ -1632,12 +1913,12 @@ diff -c /dev/null trdiff/new:1\.1
# FIXME: will this work here?
# if test "$keep" = yes; then
-# echo Keeping /tmp/cvs-sanity and exiting due to --keep
+# echo Keeping ${TESTDIR} and exiting due to --keep
# exit 0
# fi
cd ..
- rm -rf testimport
+ rm -r testimport
rm -rf ${CVSROOT_DIRNAME}/trdiff
;;
@@ -1662,28 +1943,28 @@ diff -c /dev/null trdiff/new:1\.1
# doesn't get confused by it.
mkdir subdir
dotest 65a0 "${testcvs} add subdir" \
-'Directory /tmp/cvs-sanity/cvsroot/first-dir/subdir added to the repository'
+"Directory ${TESTDIR}/cvsroot/first-dir/subdir added to the repository"
cd subdir
echo file in subdir >sfile
dotest 65a1 "${testcvs} add sfile" \
"${PROG}"' [a-z]*: scheduling file `sfile'\'' for addition
'"${PROG}"' [a-z]*: use '\''cvs commit'\'' to add this file permanently'
dotest 65a2 "${testcvs} -q ci -m add-it" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/subdir/sfile,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/subdir/sfile,v
done
Checking in sfile;
-/tmp/cvs-sanity/cvsroot/first-dir/subdir/sfile,v <-- sfile
+${TESTDIR}/cvsroot/first-dir/subdir/sfile,v <-- sfile
initial revision: 1\.1
-done'
+done"
rm sfile
dotest 65a3 "${testcvs} rm sfile" \
"${PROG}"' [a-z]*: scheduling `sfile'\'' for removal
'"${PROG}"' [a-z]*: use '\'"${PROG}"' commit'\'' to remove this file permanently'
dotest 65a4 "${testcvs} -q ci -m remove-it" \
-'Removing sfile;
-/tmp/cvs-sanity/cvsroot/first-dir/subdir/sfile,v <-- sfile
+"Removing sfile;
+${TESTDIR}/cvsroot/first-dir/subdir/sfile,v <-- sfile
new revision: delete; previous revision: 1\.1
-done'
+done"
cd ..
dotest 65a5 "${testcvs} -q update -P" ''
dotest_fail 65a6 "test -d subdir" ''
@@ -1755,21 +2036,21 @@ done'
"${PROG}"' [a-z]*: scheduling file `file4'\'' for addition
'"${PROG}"' [a-z]*: use '\''cvs commit'\'' to add this file permanently'
dotest death-file4-ciadd "${testcvs} -q ci -m add file4" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file4,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/file4,v
done
Checking in file4;
-/tmp/cvs-sanity/cvsroot/first-dir/file4,v <-- file4
+${TESTDIR}/cvsroot/first-dir/file4,v <-- file4
initial revision: 1\.1
-done'
+done"
rm file4
dotest death-file4-rm "${testcvs} remove file4" \
"${PROG}"' [a-z]*: scheduling `file4'\'' for removal
'"${PROG}"' [a-z]*: use '\'"${PROG}"' commit'\'' to remove this file permanently'
dotest death-file4-cirm "${testcvs} -q ci -m remove file4" \
-'Removing file4;
-/tmp/cvs-sanity/cvsroot/first-dir/file4,v <-- file4
+"Removing file4;
+${TESTDIR}/cvsroot/first-dir/file4,v <-- file4
new revision: delete; previous revision: 1\.1
-done'
+done"
# Tag the branchpoint.
dotest death-72a "${testcvs} -q tag bp_branch1" 'T file1
@@ -1899,12 +2180,12 @@ diff -c first-dir/file3:1\.1\.2\.1 first-dir/file3:removed
# join
dotest 86 "${testcvs} -q update -j branch1" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file1,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
retrieving revision 1\.3
retrieving revision 1\.3\.2\.1
Merging differences between 1\.3 and 1\.3\.2\.1 into file1
-'"${PROG}"' [a-z]*: scheduling file2 for removal
-U file3'
+${PROG} [a-z]*: scheduling file2 for removal
+U file3"
dotest_fail death-file4-5 "test -f file4" ''
@@ -1931,25 +2212,25 @@ U file3'
# commit
dotest 89 "${testcvs} -q ci -m test" \
-'Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
new revision: 1\.4; previous revision: 1\.3
done
Removing file2;
-/tmp/cvs-sanity/cvsroot/first-dir/file2,v <-- file2
+${TESTDIR}/cvsroot/first-dir/file2,v <-- file2
new revision: delete; previous revision: 1\.1
done
Checking in file3;
-/tmp/cvs-sanity/cvsroot/first-dir/file3,v <-- file3
+${TESTDIR}/cvsroot/first-dir/file3,v <-- file3
new revision: 1\.2; previous revision: 1\.1
-done'
+done"
cd ..
mkdir 2
cd 2
dotest 89a "${testcvs} -q co first-dir" 'U first-dir/file1
U first-dir/file3'
cd ..
- rm -rf 2
+ rm -r 2
cd first-dir
# remove first file.
@@ -2034,12 +2315,12 @@ U first-dir/file3'
'"${PROG}"' [a-z]*: use '\''cvs commit'\'' to add this file permanently'
dotest death2-3 "${testcvs} -q commit -m add" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file1,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
done
Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
initial revision: 1\.1
-done'
+done"
# Make a branch and a non-branch tag.
dotest death2-4 "${testcvs} -q tag -b branch" 'T file1'
@@ -2071,10 +2352,10 @@ diff -N file1
--- 0 ----"
dotest death2-8 "${testcvs} -q ci -m removed" \
-'Removing file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+"Removing file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
new revision: delete; previous revision: 1\.1\.2
-done'
+done"
# Test diff of a dead file.
dotest_fail death2-diff-3 \
@@ -2146,10 +2427,10 @@ diff -N file1
${PLUS} second revision"
dotest death2-10 "${testcvs} -q commit -m add" \
-'Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
new revision: 1\.1\.2\.2; previous revision: 1\.1\.2\.1
-done'
+done"
# Back to the trunk.
dotest death2-11 "${testcvs} -q update -A" 'U file1' 'P file1'
@@ -2160,12 +2441,12 @@ done'
"${PROG}"' [a-z]*: scheduling file `file2'\'' for addition
'"${PROG}"' [a-z]*: use '\''cvs commit'\'' to add this file permanently'
dotest death2-13 "${testcvs} -q commit -m add" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file2,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/file2,v
done
Checking in file2;
-/tmp/cvs-sanity/cvsroot/first-dir/file2,v <-- file2
+${TESTDIR}/cvsroot/first-dir/file2,v <-- file2
initial revision: 1\.1
-done'
+done"
# Back to the branch.
# The ``no longer in the repository'' message doesn't really
@@ -2183,10 +2464,10 @@ ${PROG} [a-z]*: file2 is no longer in the repository"
"${PROG}"' [a-z]*: scheduling file `file2'\'' for addition on branch `branch'\''
'"${PROG}"' [a-z]*: use '\''cvs commit'\'' to add this file permanently'
dotest death2-16 "${testcvs} -q commit -m add" \
-'Checking in file2;
-/tmp/cvs-sanity/cvsroot/first-dir/file2,v <-- file2
+"Checking in file2;
+${TESTDIR}/cvsroot/first-dir/file2,v <-- file2
new revision: 1\.1\.2\.1; previous revision: 1\.1
-done'
+done"
# Add a new file on the branch.
echo "first revision" > file3
@@ -2194,12 +2475,12 @@ done'
"${PROG}"' [a-z]*: scheduling file `file3'\'' for addition on branch `branch'\''
'"${PROG}"' [a-z]*: use '\''cvs commit'\'' to add this file permanently'
dotest death2-18 "${testcvs} -q commit -m add" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/Attic/file3,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/Attic/file3,v
done
Checking in file3;
-/tmp/cvs-sanity/cvsroot/first-dir/Attic/file3,v <-- file3
+${TESTDIR}/cvsroot/first-dir/Attic/file3,v <-- file3
new revision: 1\.1\.2\.1; previous revision: 1\.1
-done'
+done"
# Test diff of a nonexistent tag
dotest_fail death2-diff-9 "${testcvs} -q diff -rtag -c file3" \
@@ -2220,7 +2501,7 @@ ${PLUS} first revision"
dotest_fail death2-diff-11 "${testcvs} -q diff -rtag -c ." \
"Index: file1
===================================================================
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file1,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
retrieving revision 1\.1
retrieving revision 1\.1\.2\.2
diff -c -r1\.1 -r1\.1\.2\.2
@@ -2237,7 +2518,7 @@ ${PROG} [a-z]*: tag tag is not in file file3"
dotest_fail death2-diff-12 "${testcvs} -q diff -rtag -c -N ." \
"Index: file1
===================================================================
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file1,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
retrieving revision 1\.1
retrieving revision 1\.1\.2\.2
diff -c -r1\.1 -r1\.1\.2\.2
@@ -2314,38 +2595,38 @@ ${PLUS} first revision"
'"${PROG}"' [a-z]*: scheduling file `file3'\'' for addition
'"${PROG}"' [a-z]*: scheduling file `file4'\'' for addition
'"${PROG}"' [a-z]*: use '\''cvs commit'\'' to add these files permanently'
- dotest_lit branches-3 "${testcvs} -q ci -m add-it" <<'HERE'
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file1,v
+ dotest_lit branches-3 "${testcvs} -q ci -m add-it" <<HERE
+RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
done
Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
initial revision: 1.1
done
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file2,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/file2,v
done
Checking in file2;
-/tmp/cvs-sanity/cvsroot/first-dir/file2,v <-- file2
+${TESTDIR}/cvsroot/first-dir/file2,v <-- file2
initial revision: 1.1
done
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file3,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/file3,v
done
Checking in file3;
-/tmp/cvs-sanity/cvsroot/first-dir/file3,v <-- file3
+${TESTDIR}/cvsroot/first-dir/file3,v <-- file3
initial revision: 1.1
done
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file4,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/file4,v
done
Checking in file4;
-/tmp/cvs-sanity/cvsroot/first-dir/file4,v <-- file4
+${TESTDIR}/cvsroot/first-dir/file4,v <-- file4
initial revision: 1.1
done
HERE
echo 4:trunk-2 >file4
dotest branches-3.2 "${testcvs} -q ci -m trunk-before-branch" \
-'Checking in file4;
-/tmp/cvs-sanity/cvsroot/first-dir/file4,v <-- file4
+"Checking in file4;
+${TESTDIR}/cvsroot/first-dir/file4,v <-- file4
new revision: 1\.2; previous revision: 1\.1
-done'
+done"
dotest branches-4 "${testcvs} tag -b br1" "${PROG}"' [a-z]*: Tagging \.
T file1
T file2
@@ -2357,18 +2638,18 @@ T file4'
echo 2:br1 >file2
echo 4:br1 >file4
dotest branches-6 "${testcvs} -q ci -m modify" \
-'Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
Checking in file2;
-/tmp/cvs-sanity/cvsroot/first-dir/file2,v <-- file2
+${TESTDIR}/cvsroot/first-dir/file2,v <-- file2
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
Checking in file4;
-/tmp/cvs-sanity/cvsroot/first-dir/file4,v <-- file4
+${TESTDIR}/cvsroot/first-dir/file4,v <-- file4
new revision: 1\.2\.2\.1; previous revision: 1\.2
-done'
+done"
dotest branches-7 "${testcvs} -q tag -b brbr" 'T file1
T file2
T file3
@@ -2377,14 +2658,14 @@ T file4'
echo 1:brbr >file1
echo 4:brbr >file4
dotest branches-9 "${testcvs} -q ci -m modify" \
-'Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
new revision: 1\.1\.2\.1\.2\.1; previous revision: 1\.1\.2\.1
done
Checking in file4;
-/tmp/cvs-sanity/cvsroot/first-dir/file4,v <-- file4
+${TESTDIR}/cvsroot/first-dir/file4,v <-- file4
new revision: 1\.2\.2\.1\.2\.1; previous revision: 1\.2\.2\.1
-done'
+done"
dotest branches-10 "cat file1 file2 file3 file4" '1:brbr
2:br1
3:ancest
@@ -2398,10 +2679,10 @@ done'
4:br1'
echo 4:br1-2 >file4
dotest branches-12.2 "${testcvs} -q ci -m change-on-br1" \
-'Checking in file4;
-/tmp/cvs-sanity/cvsroot/first-dir/file4,v <-- file4
+"Checking in file4;
+${TESTDIR}/cvsroot/first-dir/file4,v <-- file4
new revision: 1\.2\.2\.2; previous revision: 1\.2\.2\.1
-done'
+done"
dotest branches-13 "${testcvs} -q update -A" '[UP] file1
[UP] file2
[UP] file4'
@@ -2412,13 +2693,13 @@ done'
echo 4:trunk-3 >file4
dotest branches-14.2 \
"${testcvs} -q ci -m trunk-change-after-branch" \
-'Checking in file4;
-/tmp/cvs-sanity/cvsroot/first-dir/file4,v <-- file4
+"Checking in file4;
+${TESTDIR}/cvsroot/first-dir/file4,v <-- file4
new revision: 1\.3; previous revision: 1\.2
-done'
+done"
dotest branches-14.3 "${testcvs} log file4" \
-'
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file4,v
+"
+RCS file: ${TESTDIR}/cvsroot/first-dir/file4,v
Working file: file4
head: 1\.3
branch:
@@ -2432,11 +2713,11 @@ total revisions: 6; selected revisions: 6
description:
----------------------------
revision 1\.3
-date: [0-9/: ]*; author: [a-z0-9@][a-z0-9@]*; state: Exp; lines: '"${PLUS}"'1 -1
+date: [0-9/: ]*; author: [a-z0-9@][a-z0-9@]*; state: Exp; lines: ${PLUS}1 -1
trunk-change-after-branch
----------------------------
revision 1\.2
-date: [0-9/: ]*; author: [a-z0-9@][a-z0-9@]*; state: Exp; lines: '"${PLUS}"'1 -1
+date: [0-9/: ]*; author: [a-z0-9@][a-z0-9@]*; state: Exp; lines: ${PLUS}1 -1
branches: 1\.2\.2;
trunk-before-branch
----------------------------
@@ -2445,23 +2726,23 @@ date: [0-9/: ]*; author: [a-z0-9@][a-z0-9@]*; state: Exp;
add-it
----------------------------
revision 1\.2\.2\.2
-date: [0-9/: ]*; author: [a-z0-9@][a-z0-9@]*; state: Exp; lines: '"${PLUS}"'1 -1
+date: [0-9/: ]*; author: [a-z0-9@][a-z0-9@]*; state: Exp; lines: ${PLUS}1 -1
change-on-br1
----------------------------
revision 1\.2\.2\.1
-date: [0-9/: ]*; author: [a-z0-9@][a-z0-9@]*; state: Exp; lines: '"${PLUS}"'1 -1
+date: [0-9/: ]*; author: [a-z0-9@][a-z0-9@]*; state: Exp; lines: ${PLUS}1 -1
branches: 1\.2\.2\.1\.2;
modify
----------------------------
revision 1\.2\.2\.1\.2\.1
-date: [0-9/: ]*; author: [a-z0-9@][a-z0-9@]*; state: Exp; lines: '"${PLUS}"'1 -1
+date: [0-9/: ]*; author: [a-z0-9@][a-z0-9@]*; state: Exp; lines: ${PLUS}1 -1
modify
-============================================================================='
+============================================================================="
dotest_status branches-14.4 1 \
"${testcvs} diff -c -r 1.1 -r 1.3 file4" \
-'Index: file4
+"Index: file4
===================================================================
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file4,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/file4,v
retrieving revision 1\.1
retrieving revision 1\.3
diff -c -r1\.1 -r1\.3
@@ -2471,12 +2752,12 @@ diff -c -r1\.1 -r1\.3
\*\*\* 1 \*\*\*\*
! 4:trunk-1
--- 1 ----
-! 4:trunk-3'
+! 4:trunk-3"
dotest_status branches-14.5 1 \
"${testcvs} diff -c -r 1.1 -r 1.2.2.1 file4" \
-'Index: file4
+"Index: file4
===================================================================
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file4,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/file4,v
retrieving revision 1\.1
retrieving revision 1\.2\.2\.1
diff -c -r1\.1 -r1\.2\.2\.1
@@ -2486,14 +2767,14 @@ diff -c -r1\.1 -r1\.2\.2\.1
\*\*\* 1 \*\*\*\*
! 4:trunk-1
--- 1 ----
-! 4:br1'
+! 4:br1"
dotest branches-15 \
"${testcvs} update -j 1.1.2.1 -j 1.1.2.1.2.1 file1" \
- 'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file1,v
+ "RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
retrieving revision 1\.1\.2\.1
retrieving revision 1\.1\.2\.1\.2\.1
Merging differences between 1\.1\.2\.1 and 1\.1\.2\.1\.2\.1 into file1
-rcsmerge: warning: conflicts during merge'
+rcsmerge: warning: conflicts during merge"
dotest branches-16 "cat file1" '<<<<<<< file1
1:ancest
=======
@@ -2502,7 +2783,7 @@ rcsmerge: warning: conflicts during merge'
cd ..
if test "$keep" = yes; then
- echo Keeping /tmp/cvs-sanity and exiting due to --keep
+ echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
@@ -2520,11 +2801,11 @@ rcsmerge: warning: conflicts during merge'
dotest multibranch-2 "${testcvs} add file1" \
"${PROG}"' [a-z]*: scheduling file `file1'\'' for addition
'"${PROG}"' [a-z]*: use '\''cvs commit'\'' to add this file permanently'
- dotest_lit multibranch-3 "${testcvs} -q ci -m add-it" <<'HERE'
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file1,v
+ dotest_lit multibranch-3 "${testcvs} -q ci -m add-it" <<HERE
+RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
done
Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
initial revision: 1.1
done
HERE
@@ -2537,17 +2818,17 @@ T file1"
dotest multibranch-6 "${testcvs} -q update -r br1" ''
echo on-br1 >file1
dotest multibranch-7 "${testcvs} -q ci -m modify-on-br1" \
-'Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
new revision: 1\.1\.2\.1; previous revision: 1\.1
-done'
+done"
dotest multibranch-8 "${testcvs} -q update -r br2" '[UP] file1'
echo br2 adds a line >>file1
dotest multibranch-9 "${testcvs} -q ci -m modify-on-br2" \
-'Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
new revision: 1\.1\.4\.1; previous revision: 1\.1
-done'
+done"
dotest multibranch-10 "${testcvs} -q update -r br1" '[UP] file1'
dotest multibranch-11 "cat file1" 'on-br1'
dotest multibranch-12 "${testcvs} -q update -r br2" '[UP] file1'
@@ -2556,7 +2837,7 @@ br2 adds a line'
dotest multibranch-14 "${testcvs} log file1" \
"
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file1,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
Working file: file1
head: 1\.1
branch:
@@ -2585,7 +2866,7 @@ modify-on-br1
cd ..
if test "$keep" = yes; then
- echo Keeping /tmp/cvs-sanity and exiting due to --keep
+ echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
@@ -2764,12 +3045,12 @@ modify-on-br1
dotest import-113 \
"${testcvs} -q co -jjunk-1_0 -jjunk-2_0 first-dir" \
-"${PROG}"' [a-z]*: file first-dir/imported-f1 is present in revision junk-2_0
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/imported-f2,v
+"${PROG} [a-z]*: file first-dir/imported-f1 is present in revision junk-2_0
+RCS file: ${TESTDIR}/cvsroot/first-dir/imported-f2,v
retrieving revision 1\.1\.1\.1
retrieving revision 1\.1\.1\.2
Merging differences between 1\.1\.1\.1 and 1\.1\.1\.2 into imported-f2
-rcsmerge: warning: conflicts during merge'
+rcsmerge: warning: conflicts during merge"
cd first-dir
@@ -2797,12 +3078,15 @@ import should not expand \$''Id: imported-f2,v 1\.1\.1\.2 [0-9/]* [0-9:]* [a-z0-
rev 2 of file 2
[>]>>>>>> 1\.1\.1\.2'
- cd .. ; rm -rf first-dir ${CVSROOT_DIRNAME}/first-dir
- rm -rf import-dir
+ cd ..
+ rm -r first-dir
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
+ rm -r import-dir
;;
join)
# Test doing joins which involve adding and removing files.
+ # See also binfile2, which does similar things with binary files.
# We check merging changes from T1 to T2 into the main line.
# Here are the interesting cases I can think of:
@@ -2866,30 +3150,30 @@ rev 2 of file 2
'"${PROG}"' [a-z]*: use '\''cvs commit'\'' to add these files permanently'
dotest join-3 "${testcvs} -q commit -m add" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file3,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/file3,v
done
Checking in file3;
-/tmp/cvs-sanity/cvsroot/first-dir/file3,v <-- file3
+${TESTDIR}/cvsroot/first-dir/file3,v <-- file3
initial revision: 1\.1
done
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file4,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/file4,v
done
Checking in file4;
-/tmp/cvs-sanity/cvsroot/first-dir/file4,v <-- file4
+${TESTDIR}/cvsroot/first-dir/file4,v <-- file4
initial revision: 1\.1
done
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file6,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/file6,v
done
Checking in file6;
-/tmp/cvs-sanity/cvsroot/first-dir/file6,v <-- file6
+${TESTDIR}/cvsroot/first-dir/file6,v <-- file6
initial revision: 1\.1
done
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file8,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/file8,v
done
Checking in file8;
-/tmp/cvs-sanity/cvsroot/first-dir/file8,v <-- file8
+${TESTDIR}/cvsroot/first-dir/file8,v <-- file8
initial revision: 1\.1
-done'
+done"
# Make a branch.
dotest join-4 "${testcvs} -q tag -b branch ." \
@@ -2912,30 +3196,30 @@ T file8'
'"${PROG}"' [a-z]*: scheduling `file8'\'' for removal
'"${PROG}"' [a-z]*: use '\'"${PROG} commit"\'' to remove these files permanently'
dotest join-7 "${testcvs} -q ci -mx ." \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file2,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/file2,v
done
Checking in file2;
-/tmp/cvs-sanity/cvsroot/first-dir/file2,v <-- file2
+${TESTDIR}/cvsroot/first-dir/file2,v <-- file2
initial revision: 1\.1
done
Checking in file4;
-/tmp/cvs-sanity/cvsroot/first-dir/file4,v <-- file4
+${TESTDIR}/cvsroot/first-dir/file4,v <-- file4
new revision: 1\.2; previous revision: 1\.1
done
Removing file6;
-/tmp/cvs-sanity/cvsroot/first-dir/file6,v <-- file6
+${TESTDIR}/cvsroot/first-dir/file6,v <-- file6
new revision: delete; previous revision: 1\.1
done
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file7,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/file7,v
done
Checking in file7;
-/tmp/cvs-sanity/cvsroot/first-dir/file7,v <-- file7
+${TESTDIR}/cvsroot/first-dir/file7,v <-- file7
initial revision: 1\.1
done
Removing file8;
-/tmp/cvs-sanity/cvsroot/first-dir/file8,v <-- file8
+${TESTDIR}/cvsroot/first-dir/file8,v <-- file8
new revision: delete; previous revision: 1\.1
-done'
+done"
# Check out the branch.
cd ../..
@@ -2959,24 +3243,24 @@ U first-dir/file8'
"${PROG}"' [a-z]*: scheduling file `file5'\'' for addition on branch `branch'\''
'"${PROG}"' [a-z]*: use '\''cvs commit'\'' to add this file permanently'
dotest join-10 "${testcvs} -q ci -mx ." \
-'Checking in file3;
-/tmp/cvs-sanity/cvsroot/first-dir/file3,v <-- file3
+"Checking in file3;
+${TESTDIR}/cvsroot/first-dir/file3,v <-- file3
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
Checking in file4;
-/tmp/cvs-sanity/cvsroot/first-dir/file4,v <-- file4
+${TESTDIR}/cvsroot/first-dir/file4,v <-- file4
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/Attic/file5,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/Attic/file5,v
done
Checking in file5;
-/tmp/cvs-sanity/cvsroot/first-dir/Attic/file5,v <-- file5
+${TESTDIR}/cvsroot/first-dir/Attic/file5,v <-- file5
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
Checking in file6;
-/tmp/cvs-sanity/cvsroot/first-dir/Attic/file6,v <-- file6
+${TESTDIR}/cvsroot/first-dir/Attic/file6,v <-- file6
new revision: 1\.1\.2\.1; previous revision: 1\.1
-done'
+done"
# Tag the current revisions on the branch.
dotest join-11 "${testcvs} -q tag T1 ." \
@@ -3001,32 +3285,32 @@ T file8'
'"${PROG}"' [a-z]*: scheduling `file6'\'' for removal
'"${PROG}"' [a-z]*: use '\'"${PROG} commit"\'' to remove these files permanently'
dotest join-14 "${testcvs} -q ci -mx ." \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/Attic/file1,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/Attic/file1,v
done
Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/Attic/file1,v <-- file1
+${TESTDIR}/cvsroot/first-dir/Attic/file1,v <-- file1
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
Checking in file2;
-/tmp/cvs-sanity/cvsroot/first-dir/file2,v <-- file2
+${TESTDIR}/cvsroot/first-dir/file2,v <-- file2
new revision: 1\.1\.2\.1; previous revision: 1\.1
done
Removing file3;
-/tmp/cvs-sanity/cvsroot/first-dir/file3,v <-- file3
+${TESTDIR}/cvsroot/first-dir/file3,v <-- file3
new revision: delete; previous revision: 1\.1\.2\.1
done
Removing file4;
-/tmp/cvs-sanity/cvsroot/first-dir/file4,v <-- file4
+${TESTDIR}/cvsroot/first-dir/file4,v <-- file4
new revision: delete; previous revision: 1\.1\.2\.1
done
Removing file5;
-/tmp/cvs-sanity/cvsroot/first-dir/Attic/file5,v <-- file5
+${TESTDIR}/cvsroot/first-dir/Attic/file5,v <-- file5
new revision: delete; previous revision: 1\.1\.2\.1
done
Removing file6;
-/tmp/cvs-sanity/cvsroot/first-dir/Attic/file6,v <-- file6
+${TESTDIR}/cvsroot/first-dir/Attic/file6,v <-- file6
new revision: delete; previous revision: 1\.1\.2\.1
-done'
+done"
# Tag the current revisions on the branch.
dotest join-15 "${testcvs} -q tag T2 ." \
@@ -3083,19 +3367,19 @@ M file4'
# revision which can be used as the source for files added
# on branches.
cd ../../3
- rm -rf first-dir
+ rm -r first-dir
dotest join-20 "${testcvs} -q co -jbranch first-dir" \
-'U first-dir/file1
+"U first-dir/file1
U first-dir/file2
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file2,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/file2,v
retrieving revision 1\.1
retrieving revision 1\.1\.2\.1
Merging differences between 1\.1 and 1\.1\.2\.1 into file2
U first-dir/file3
-'"${PROG}"' [a-z]*: scheduling first-dir/file3 for removal
+${PROG} [a-z]*: scheduling first-dir/file3 for removal
U first-dir/file4
-'"${PROG}"' [a-z]*: file first-dir/file4 has been modified, but has been removed in revision branch
-U first-dir/file7'
+${PROG} [a-z]*: file first-dir/file4 has been modified, but has been removed in revision branch
+U first-dir/file7"
# Verify that the right changes have been scheduled.
# The M file2 line is a bug; see above join-20.
@@ -3107,7 +3391,7 @@ R file3'
# Checkout the main line again.
cd ../../1
- rm -rf first-dir
+ rm -r first-dir
dotest join-22 "${testcvs} -q co first-dir" \
'U first-dir/file2
U first-dir/file3
@@ -3120,14 +3404,14 @@ U first-dir/file7'
cd first-dir
echo 'third revision of file4' > file4
dotest join-23 "${testcvs} -q update -jbranch ." \
-'U file1
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file2,v
+"U file1
+RCS file: ${TESTDIR}/cvsroot/first-dir/file2,v
retrieving revision 1\.1
retrieving revision 1\.1\.2\.1
Merging differences between 1\.1 and 1\.1\.2\.1 into file2
-'"${PROG}"' [a-z]*: scheduling file3 for removal
+${PROG} [a-z]*: scheduling file3 for removal
M file4
-'"${PROG}"' [a-z]*: file file4 is locally modified, but has been removed in revision branch'
+${PROG} [a-z]*: file file4 is locally modified, but has been removed in revision branch"
# Verify that the right changes have been scheduled.
# The M file2 line is a bug; see above join-20
@@ -3138,7 +3422,8 @@ R file3
M file4'
cd ../..
- rm -rf 1 2 3 ${CVSROOT_DIRNAME}/first-dir
+ rm -r 1 2 3
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
new) # look for stray "no longer pertinent" messages.
@@ -3191,7 +3476,9 @@ M file4'
echo "PASS: test 123" >>${LOGFILE}
fi
- cd .. ; rm -rf first-dir ; rm -rf ${CVSROOT_DIRNAME}/first-dir
+ cd ..
+ rm -r first-dir
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
newb)
@@ -3210,19 +3497,19 @@ M file4'
"${PROG} [a-z]*: scheduling file .a. for addition
${PROG} [a-z]*: use .cvs commit. to add this file permanently"
dotest newb-123c "${testcvs} -q ci -m added" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/a,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/a,v
done
Checking in a;
-/tmp/cvs-sanity/cvsroot/first-dir/a,v <-- a
+${TESTDIR}/cvsroot/first-dir/a,v <-- a
initial revision: 1\.1
-done'
+done"
# Make a branch.
dotest newb-123d "${testcvs} -q tag -b branch" "T a"
# Check out the branch.
cd ..
- rm -rf first-dir
+ rm -r first-dir
mkdir 1
cd 1
dotest newb-123e "${testcvs} -q co -r branch first-dir" \
@@ -3240,16 +3527,16 @@ done'
"${PROG} [a-z]*: scheduling .a. for removal
${PROG} [a-z]*: use .${PROG} commit. to remove this file permanently"
dotest newb-123h "${testcvs} -q ci -m removed" \
-'Removing a;
-/tmp/cvs-sanity/cvsroot/first-dir/a,v <-- a
+"Removing a;
+${TESTDIR}/cvsroot/first-dir/a,v <-- a
new revision: delete; previous revision: 1\.1\.2
-done'
+done"
# Check out the file on the branch. This should report
# that the file is not pertinent, but it should not
# say anything else.
cd ..
- rm -rf first-dir
+ rm -r first-dir
dotest newb-123i "${testcvs} -q co -r branch first-dir/a" \
"${PROG} [a-z]*: warning: first-dir/a is not (any longer) pertinent"
@@ -3257,12 +3544,14 @@ done'
cd ../1/first-dir
# "Needs Patch" is a rather strange output here. Something like
# "Removed in Repository" would make more sense.
+ # The "Need Checkout" output is what CVS does if configured
+ # --disable-server.
dotest newb-123j0 "${testcvs} status a" \
"===================================================================
-File: a Status: Needs Patch
+File: a Status: Needs \(Patch\|Checkout\)
Working revision: 1\.1.*
- Repository revision: 1\.1\.2\.1 /tmp/cvs-sanity/cvsroot/first-dir/a,v
+ Repository revision: 1\.1\.2\.1 ${TESTDIR}/cvsroot/first-dir/a,v
Sticky Tag: branch (branch: 1\.1\.2)
Sticky Date: (none)
Sticky Options: (none)"
@@ -3276,7 +3565,8 @@ File: a Status: Needs Patch
fi
cd ../..
- rm -rf 1 2 ; rm -rf ${CVSROOT_DIRNAME}/first-dir
+ rm -r 1 2
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
conflicts)
@@ -3294,12 +3584,12 @@ File: a Status: Needs Patch
"${PROG} [a-z]*: scheduling file .a. for addition
${PROG} [a-z]*: use .cvs commit. to add this file permanently"
dotest conflicts-126 "${testcvs} -q ci -m added" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/a,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/a,v
done
Checking in a;
-/tmp/cvs-sanity/cvsroot/first-dir/a,v <-- a
+${TESTDIR}/cvsroot/first-dir/a,v <-- a
initial revision: 1\.1
-done'
+done"
cd ../..
mkdir 2
@@ -3308,12 +3598,12 @@ done'
# The need for TMPPWD here is a (minor) CVS bug; the
# output should use the name of the repository as specified.
dotest conflicts-126.5 "${testcvs} co -p first-dir" \
-"${PROG} [a-z]*"': Updating first-dir
+"${PROG} [a-z]*: Updating first-dir
===================================================================
Checking out first-dir/a
-RCS: '"${TMPPWD}"'/cvs-sanity/cvsroot/first-dir/a,v
+RCS: ${TMPPWD}/cvsroot/first-dir/a,v
VERS: 1\.1
-\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*'
+\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*"
if ${CVS} co first-dir ; then
echo 'PASS: test 127' >>${LOGFILE}
else
@@ -3330,12 +3620,12 @@ VERS: 1\.1
echo add a line >>a
mkdir dir1
dotest conflicts-127b "${testcvs} add dir1" \
-'Directory /tmp/cvs-sanity/cvsroot/first-dir/dir1 added to the repository'
+"Directory ${TESTDIR}/cvsroot/first-dir/dir1 added to the repository"
dotest conflicts-128 "${testcvs} -q ci -m changed" \
-'Checking in a;
-/tmp/cvs-sanity/cvsroot/first-dir/a,v <-- a
+"Checking in a;
+${TESTDIR}/cvsroot/first-dir/a,v <-- a
new revision: 1\.2; previous revision: 1\.1
-done'
+done"
cd ../..
# Similar to conflicts-126.5, but now the file has nonempty
@@ -3345,13 +3635,13 @@ done'
# The need for TMPPWD here is a (minor) CVS bug; the
# output should use the name of the repository as specified.
dotest conflicts-128.5 "${testcvs} co -p -l first-dir" \
-"${PROG} [a-z]*"': Updating first-dir
+"${PROG} [a-z]*: Updating first-dir
===================================================================
Checking out first-dir/a
-RCS: '"${TMPPWD}"'/cvs-sanity/cvsroot/first-dir/a,v
+RCS: ${TMPPWD}/cvsroot/first-dir/a,v
VERS: 1\.2
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
-add a line'
+add a line"
cd ..
rmdir 3
@@ -3369,29 +3659,29 @@ add a line'
File: a Status: Needs Merge
Working revision: 1\.1.*
- Repository revision: 1\.2 /tmp/cvs-sanity/cvsroot/first-dir/a,v
+ Repository revision: 1\.2 ${TESTDIR}/cvsroot/first-dir/a,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest conflicts-130 "${testcvs} -q update" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/a,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/a,v
retrieving revision 1\.1
retrieving revision 1\.2
Merging differences between 1\.1 and 1\.2 into a
rcsmerge: warning: conflicts during merge
-'"${PROG}"' [a-z]*: conflicts found in a
+${PROG} [a-z]*: conflicts found in a
C a
-'"${QUESTION}"' dir1
-'"${QUESTION}"' sdir' \
-''"${QUESTION}"' dir1
-'"${QUESTION}"' sdir
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/a,v
+${QUESTION} dir1
+${QUESTION} sdir" \
+"${QUESTION} dir1
+${QUESTION} sdir
+RCS file: ${TESTDIR}/cvsroot/first-dir/a,v
retrieving revision 1\.1
retrieving revision 1\.2
Merging differences between 1\.1 and 1\.2 into a
rcsmerge: warning: conflicts during merge
-'"${PROG}"' [a-z]*: conflicts found in a
-C a'
+${PROG} [a-z]*: conflicts found in a
+C a"
rmdir dir1 sdir
dotest conflicts-status-1 "${testcvs} status a" \
@@ -3399,7 +3689,7 @@ C a'
File: a Status: File had conflicts on merge
Working revision: 1\.2.*
- Repository revision: 1\.2 /tmp/cvs-sanity/cvsroot/first-dir/a,v
+ Repository revision: 1\.2 ${TESTDIR}/cvsroot/first-dir/a,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
@@ -3414,7 +3704,7 @@ ${PROG} \[[a-z]* aborted\]: correct above errors first!"
File: a Status: File had conflicts on merge
Working revision: 1\.2.*
- Repository revision: 1\.2 /tmp/cvs-sanity/cvsroot/first-dir/a,v
+ Repository revision: 1\.2 ${TESTDIR}/cvsroot/first-dir/a,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
@@ -3428,13 +3718,13 @@ ${PROG} \[[a-z]* aborted\]: correct above errors first!"
File: a Status: File had conflicts on merge
Working revision: 1\.2.*
- Repository revision: 1\.2 /tmp/cvs-sanity/cvsroot/first-dir/a,v
+ Repository revision: 1\.2 ${TESTDIR}/cvsroot/first-dir/a,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
dotest conflicts-133 "${testcvs} -q ci -m resolved" \
"Checking in a;
-/tmp/cvs-sanity/cvsroot/first-dir/a,v <-- a
+${TESTDIR}/cvsroot/first-dir/a,v <-- a
new revision: 1\.3; previous revision: 1\.2
done"
dotest conflicts-status-4 "${testcvs} status a" \
@@ -3442,7 +3732,7 @@ done"
File: a Status: Up-to-date
Working revision: 1\.3.*
- Repository revision: 1\.3 /tmp/cvs-sanity/cvsroot/first-dir/a,v
+ Repository revision: 1\.3 ${TESTDIR}/cvsroot/first-dir/a,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)"
@@ -3516,7 +3806,7 @@ File: a Status: Up-to-date
echo 'FAIL: test 142' | tee -a ${LOGFILE}
fi
cd ../..
- rm -rf 1 2 3 ; rm -rf ${CVSROOT_DIRNAME}/first-dir
+ rm -r 1 2 3 ; rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
conflicts2)
@@ -3537,18 +3827,18 @@ File: a Status: Up-to-date
${PROG} [a-z]*: scheduling file .abc. for addition
${PROG} [a-z]*: use .cvs commit. to add these files permanently"
dotest conflicts2-142a3 "${testcvs} -q ci -m added" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/a,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/a,v
done
Checking in a;
-/tmp/cvs-sanity/cvsroot/first-dir/a,v <-- a
+${TESTDIR}/cvsroot/first-dir/a,v <-- a
initial revision: 1\.1
done
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/abc,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/abc,v
done
Checking in abc;
-/tmp/cvs-sanity/cvsroot/first-dir/abc,v <-- abc
+${TESTDIR}/cvsroot/first-dir/abc,v <-- abc
initial revision: 1\.1
-done'
+done"
cd ../..
mkdir 2
@@ -3564,10 +3854,10 @@ U first-dir/abc'
cd 1/first-dir
echo modify a >>a
dotest conflicts2-142b2 "${testcvs} -q ci -m modify-a" \
-'Checking in a;
-/tmp/cvs-sanity/cvsroot/first-dir/a,v <-- a
+"Checking in a;
+${TESTDIR}/cvsroot/first-dir/a,v <-- a
new revision: 1\.2; previous revision: 1\.1
-done'
+done"
cd ../../2/first-dir
rm a
dotest conflicts2-142b3 "${testcvs} rm a" \
@@ -3592,10 +3882,10 @@ ${PROG} [a-z]*: a, version 1\.1, resurrected"
"${PROG} [a-z]*: scheduling .abc. for removal
${PROG} [a-z]*: use .${PROG} commit. to remove this file permanently"
dotest conflicts2-142c1 "${testcvs} -q ci -m remove-abc" \
-'Removing abc;
-/tmp/cvs-sanity/cvsroot/first-dir/abc,v <-- abc
+"Removing abc;
+${TESTDIR}/cvsroot/first-dir/abc,v <-- abc
new revision: delete; previous revision: 1\.1
-done'
+done"
cd ../../2/first-dir
rm abc
dotest conflicts2-142c2 "${testcvs} rm abc" \
@@ -3613,12 +3903,12 @@ ${PROG} [a-z]*: use .${PROG} commit. to remove this file permanently"
"${PROG} [a-z]*: scheduling file .aa\.c. for addition
${PROG} [a-z]*: use .cvs commit. to add this file permanently"
dotest conflicts2-142d1 "${testcvs} -q ci -m added" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/aa.c,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/aa.c,v
done
Checking in aa.c;
-/tmp/cvs-sanity/cvsroot/first-dir/aa.c,v <-- aa.c
+${TESTDIR}/cvsroot/first-dir/aa.c,v <-- aa.c
initial revision: 1\.1
-done'
+done"
cd ../../2/first-dir
echo "don't you dare obliterate this text" >aa.c
# Doing this test separately for remote and local is a fair
@@ -3636,7 +3926,7 @@ C aa\.c"
fi
cd ../..
- rm -rf 1 2 ; rm -rf ${CVSROOT_DIRNAME}/first-dir
+ rm -r 1 2 ; rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
modules)
@@ -3810,7 +4100,7 @@ realmodule NONE first-dir/subdir a'
else
echo 'PASS: test 150g2' >>${LOGFILE}
fi
- rm -rf dirmodule
+ rm -r dirmodule
# Now test that a module using -d checks out to the specified
# directory.
@@ -3862,7 +4152,7 @@ U nameddir/b'
fi
cd ..
- rm -rf 1
+ rm -r 1
mkdir 2
cd 2
@@ -3876,7 +4166,7 @@ U nameddir/b'
"CVS
first-dir"
cd ..
- rm -rf 2
+ rm -r 2
# Test checking out everything.
mkdir 1
@@ -3886,7 +4176,7 @@ first-dir"
U first-dir/subdir/a
U first-dir/subdir/b"
cd ..
- rm -rf 1
+ rm -r 1
# Test checking out a module which lists at least two
# specific files twice. At one time, this failed over
@@ -3905,27 +4195,27 @@ U first-dir/subdir/b"
'"${PROG}"' [a-z]*: scheduling file `file2'\'' for addition
'"${PROG}"' [a-z]*: use '\''cvs commit'\'' to add these files permanently'
dotest modules-155c3 "${testcvs} -q ci -m add-it" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file1,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
done
Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
initial revision: 1\.1
done
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file2,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/file2,v
done
Checking in file2;
-/tmp/cvs-sanity/cvsroot/first-dir/file2,v <-- file2
+${TESTDIR}/cvsroot/first-dir/file2,v <-- file2
initial revision: 1\.1
-done'
+done"
cd ..
- rm -rf first-dir
+ rm -r first-dir
dotest modules-155c4 "${testcvs} -q co topfiles" \
"U first-dir/file1
U first-dir/file2"
dotest modules-155c5 "${testcvs} -q co topfiles" ""
cd ..
- rm -rf 1
+ rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
@@ -3946,7 +4236,7 @@ U first-dir/file2"
# we will be checking in revision 1.2 or 1.3.
dotest modules2-2 "${testcvs} -q ci -m add-modules" \
"Checking in modules;
-/tmp/cvs-sanity/cvsroot/CVSROOT/modules,v <-- modules
+${TESTDIR}/cvsroot/CVSROOT/modules,v <-- modules
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} [a-z]*: Rebuilding administrative file database"
@@ -3979,7 +4269,7 @@ EOF
echo 'aliasopt -a -d onedir first-dir' >modules
dotest modules2-a0 "${testcvs} -q ci -m add-modules" \
"Checking in modules;
-/tmp/cvs-sanity/cvsroot/CVSROOT/modules,v <-- modules
+${TESTDIR}/cvsroot/CVSROOT/modules,v <-- modules
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} [a-z]*: Rebuilding administrative file database"
@@ -3990,9 +4280,9 @@ ${PROG} [a-z]*: Rebuilding administrative file database"
${PROG} \[[a-z]* aborted\]: cannot expand modules"
# Clean up.
- rm -rf CVSROOT
+ rm -r CVSROOT
cd ..
- rm -rf 1
+ rm -r 1
rm -rf ${CVSROOT_DIRNAME}/first-dir
rm -rf ${CVSROOT_DIRNAME}/second-dir
;;
@@ -4007,7 +4297,7 @@ ${PROG} \[[a-z]* aborted\]: cannot expand modules"
dotest modules3-0 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest modules3-1 "${testcvs} add first-dir" \
-"Directory /tmp/cvs-sanity/cvsroot/first-dir added to the repository"
+"Directory ${TESTDIR}/cvsroot/first-dir added to the repository"
cd first-dir
echo file1 >file1
@@ -4015,12 +4305,12 @@ ${PROG} \[[a-z]* aborted\]: cannot expand modules"
"${PROG}"' [a-z]*: scheduling file `file1'\'' for addition
'"${PROG}"' [a-z]*: use '\''cvs commit'\'' to add this file permanently'
dotest modules3-3 "${testcvs} -q ci -m add-it" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file1,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
done
Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
initial revision: 1\.1
-done'
+done"
cd ..
dotest modules3-4 "${testcvs} -q co CVSROOT/modules" \
@@ -4036,14 +4326,14 @@ path/in/modules &mod1
EOF
dotest modules3-5 "${testcvs} -q ci -m add-modules" \
"Checking in modules;
-/tmp/cvs-sanity/cvsroot/CVSROOT/modules,v <-- modules
+${TESTDIR}/cvsroot/CVSROOT/modules,v <-- modules
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
${PROG} [a-z]*: Rebuilding administrative file database"
cd ..
dotest modules3-6 "${testcvs} -q co bigmod" ''
- rm -rf first-dir
+ rm -r first-dir
dotest modules3-7 "${testcvs} -q co bigmod" 'U first-dir/file1'
cd ..
rm -r 1
@@ -4056,8 +4346,8 @@ ${PROG} [a-z]*: Rebuilding administrative file database"
# considering this is a documented technique and everything.
dotest modules3-7a \
"${testcvs} import -m add-dirs second-dir tag1 tag2" \
-"${PROG} [a-z]*: Importing /tmp/cvs-sanity/cvsroot/second-dir/suba
-${PROG} [a-z]*: Importing /tmp/cvs-sanity/cvsroot/second-dir/suba/subb
+"${PROG} [a-z]*: Importing ${TESTDIR}/cvsroot/second-dir/suba
+${PROG} [a-z]*: Importing ${TESTDIR}/cvsroot/second-dir/suba/subb
No conflicts created by this import" "
No conflicts created by this import"
@@ -4087,12 +4377,12 @@ ${PROG} [a-z]*: Updating second-dir/suba/subb" \
"${PROG} [a-z]*: scheduling file .fileb. for addition
${PROG} [a-z]*: use .cvs commit. to add this file permanently"
dotest modules3-7d "${testcvs} -q ci -m add-it" \
-'RCS file: /tmp/cvs-sanity/cvsroot/second-dir/suba/subb/fileb,v
+"RCS file: ${TESTDIR}/cvsroot/second-dir/suba/subb/fileb,v
done
Checking in fileb;
-/tmp/cvs-sanity/cvsroot/second-dir/suba/subb/fileb,v <-- fileb
+${TESTDIR}/cvsroot/second-dir/suba/subb/fileb,v <-- fileb
initial revision: 1\.1
-done'
+done"
cd ../../..
cd ..; rm -r 1
@@ -4132,6 +4422,15 @@ done'
dotest modules3-10 "${testcvs} -q co nestdeeper" \
'U src/sub1/sub2/sub3/dir/file1'
dotest modules3-11 "test -f src/sub1/sub2/sub3/dir/file1" ''
+
+ # While we are doing things like twisted uses of '/' (e.g.
+ # modules3-12), try this one.
+ if test "x$remote" = xyes; then
+ dotest_fail modules3-11b \
+"${testcvs} -q update ${TESTDIR}/1/src/sub1/sub2/sub3/dir/file1" \
+"${PROG} .server aborted.: absolute pathname .${TESTDIR}/1/src/sub1/sub2/sub3/dir/file1. illegal for server"
+ fi # end of remote-only tests
+
cd ..
rm -r 1
@@ -4193,7 +4492,7 @@ done'
exit 1
fi
# Test handling of -m during ci
- cd ..; rm -rf a-dir;
+ cd ..; rm -r a-dir
if ${testcvs} co a-dir >>${LOGFILE} 2>&1; then
echo 'PASS: test 158' >>${LOGFILE}
else
@@ -4223,7 +4522,9 @@ done'
exit 1
fi
# Clean up
- cd ..; rm -rf a-dir ${CVSROOT_DIRNAME}/a-dir
+ cd ..
+ rm -r a-dir
+ rm -rf ${CVSROOT_DIRNAME}/a-dir
done
;;
errmsg1)
@@ -4295,7 +4596,8 @@ EOF
cd ..
chmod u+w 1dir
cd ..
- rm -rf 1 2 ${CVSROOT_DIRNAME}/1dir
+ rm -r 1 2
+ rm -rf ${CVSROOT_DIRNAME}/1dir
;;
devcom)
@@ -4493,6 +4795,7 @@ T abc'
dotest devcom-t1 "${testcvs} -q co -rtag first-dir/abb" \
'U first-dir/abb'
cd ..
+ # Since first-dir/abb is readonly, use -f.
rm -rf 3
# Now remove all the file attributes
@@ -4514,11 +4817,13 @@ U first-dir/abc'
cd ..
if test "$keep" = yes; then
- echo Keeping /tmp/cvs-sanity and exiting due to --keep
+ echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
- rm -rf 1 2 3 ${CVSROOT_DIRNAME}/first-dir
+ # Use -f because of the readonly files.
+ rm -rf 1 2 3
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
devcom2)
@@ -4569,7 +4874,9 @@ U first-dir/w3'
dotest_fail devcom2-11 "test -w first-dir/w3" ''
cd ..
- rm -rf 1 2 ${CVSROOT_DIRNAME}/first-dir
+ # Use -f because of the readonly files.
+ rm -rf 1 2
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
devcom3)
@@ -4624,7 +4931,9 @@ G@#..!@#=&"
cd ../..
- rm -rf 1 ${CVSROOT_DIRNAME}/first-dir
+ # Use -f because of the readonly files.
+ rm -rf 1
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
ignore)
@@ -4637,13 +4946,13 @@ G@#..!@#=&"
# As of Jan 96, local CVS prints "Examining ." and remote doesn't.
# Accept either.
dotest 187a3 " ${testcvs} ci -m added" \
-"${DOTSTAR}"'CS file: /tmp/cvs-sanity/cvsroot/CVSROOT/cvsignore,v
+"${DOTSTAR}CS file: ${TESTDIR}/cvsroot/CVSROOT/cvsignore,v
done
Checking in cvsignore;
-/tmp/cvs-sanity/cvsroot/CVSROOT/cvsignore,v <-- cvsignore
+${TESTDIR}/cvsroot/CVSROOT/cvsignore,v <-- cvsignore
initial revision: 1\.1
done
-'"${PROG}"' [a-z]*: Rebuilding administrative file database'
+${PROG} [a-z]*: Rebuilding administrative file database"
cd ..
if echo "yes" | ${testcvs} release -d CVSROOT >>${LOGFILE} ; then
@@ -4688,7 +4997,7 @@ N second-dir/optig.c
No conflicts created by this import'
cd ..
- rm -rf dir-to-import
+ rm -r dir-to-import
mkdir 1
cd 1
@@ -4781,7 +5090,7 @@ Are you sure you want to release (and delete) directory .first-dir': "
You have \[1\] altered files in this repository.
Are you sure you want to release (and delete) directory .second-dir': "
cd ..
- rm -rf 1
+ rm -r 1
rm ${TESTDIR}/ignore.tmp
rm -rf ${CVSROOT_DIRNAME}/first-dir ${CVSROOT_DIRNAME}/second-dir
;;
@@ -4800,12 +5109,12 @@ Are you sure you want to release (and delete) directory .second-dir': "
"${PROG}"' [a-z]*: scheduling file `binfile'\'' for addition
'"${PROG}"' [a-z]*: use '\''cvs commit'\'' to add this file permanently'
dotest binfiles-3 "${testcvs} -q ci -m add-it" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/binfile,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/binfile,v
done
Checking in binfile;
-/tmp/cvs-sanity/cvsroot/first-dir/binfile,v <-- binfile
+${TESTDIR}/cvsroot/first-dir/binfile,v <-- binfile
initial revision: 1\.1
-done'
+done"
cd ../..
mkdir 2; cd 2
dotest binfiles-4 "${testcvs} -q co first-dir" 'U first-dir/binfile'
@@ -4815,14 +5124,14 @@ done'
# to testing that binary files work right on non-unix machines
# (until there is automated testing for such machines, of course).
dotest binfiles-5.5 "${testcvs} status binfile" \
-'===================================================================
+"===================================================================
File: binfile Status: Up-to-date
Working revision: 1\.1.*
- Repository revision: 1\.1 /tmp/cvs-sanity/cvsroot/first-dir/binfile,v
+ Repository revision: 1\.1 ${TESTDIR}/cvsroot/first-dir/binfile,v
Sticky Tag: (none)
Sticky Date: (none)
- Sticky Options: -kb'
+ Sticky Options: -kb"
# Test whether the default options from the RCS file are
# also used when operating on files instead of whole
@@ -4833,24 +5142,24 @@ File: binfile Status: Up-to-date
'U first-dir/binfile'
cd first-dir
dotest binfiles-5.5b1 "${testcvs} status binfile" \
-'===================================================================
+"===================================================================
File: binfile Status: Up-to-date
Working revision: 1\.1.*
- Repository revision: 1\.1 /tmp/cvs-sanity/cvsroot/first-dir/binfile,v
+ Repository revision: 1\.1 ${TESTDIR}/cvsroot/first-dir/binfile,v
Sticky Tag: (none)
Sticky Date: (none)
- Sticky Options: -kb'
+ Sticky Options: -kb"
cd ../..
- rm -rf 3
+ rm -r 3
cd 2/first-dir
cp ../../1/binfile2.dat binfile
dotest binfiles-6 "${testcvs} -q ci -m modify-it" \
-'Checking in binfile;
-/tmp/cvs-sanity/cvsroot/first-dir/binfile,v <-- binfile
+"Checking in binfile;
+${TESTDIR}/cvsroot/first-dir/binfile,v <-- binfile
new revision: 1\.2; previous revision: 1\.1
-done'
+done"
cd ../../1/first-dir
dotest binfiles-7 "${testcvs} -q update" '[UP] binfile'
dotest binfiles-8 "cmp ../binfile2.dat binfile" ''
@@ -4858,10 +5167,10 @@ done'
# Now test handling of conflicts with binary files.
cp ../binfile.dat binfile
dotest binfiles-con0 "${testcvs} -q ci -m modify-it" \
-'Checking in binfile;
-/tmp/cvs-sanity/cvsroot/first-dir/binfile,v <-- binfile
+"Checking in binfile;
+${TESTDIR}/cvsroot/first-dir/binfile,v <-- binfile
new revision: 1\.3; previous revision: 1\.2
-done'
+done"
cd ../../2/first-dir
echo 'edits in dir 2' >binfile
dotest binfiles-con1 "${testcvs} -q update" \
@@ -4875,10 +5184,10 @@ C binfile"
cp ../../1/binfile2.dat binfile
dotest binfiles-con4 "${testcvs} -q ci -m resolve-it" \
-'Checking in binfile;
-/tmp/cvs-sanity/cvsroot/first-dir/binfile,v <-- binfile
+"Checking in binfile;
+${TESTDIR}/cvsroot/first-dir/binfile,v <-- binfile
new revision: 1\.4; previous revision: 1\.3
-done'
+done"
cd ../../1/first-dir
dotest binfiles-con5 "${testcvs} -q update" '[UP] binfile'
@@ -4892,7 +5201,7 @@ done'
fi
cd ../..
- rm -rf 1
+ rm -r 1
mkdir 3
cd 3
@@ -4900,86 +5209,86 @@ done'
'U first-dir/binfile'
cd first-dir
dotest binfiles-13a1 "${testcvs} status binfile" \
-'===================================================================
+"===================================================================
File: binfile Status: Up-to-date
Working revision: 1\.4.*
- Repository revision: 1\.4 /tmp/cvs-sanity/cvsroot/first-dir/binfile,v
+ Repository revision: 1\.4 ${TESTDIR}/cvsroot/first-dir/binfile,v
Sticky Tag: HEAD (revision: 1\.4)
Sticky Date: (none)
- Sticky Options: -kb'
+ Sticky Options: -kb"
cd ../..
- rm -rf 3
+ rm -r 3
cd 2/first-dir
echo 'this file is $''RCSfile$' >binfile
dotest binfiles-14a "${testcvs} -q ci -m modify-it" \
-'Checking in binfile;
-/tmp/cvs-sanity/cvsroot/first-dir/binfile,v <-- binfile
+"Checking in binfile;
+${TESTDIR}/cvsroot/first-dir/binfile,v <-- binfile
new revision: 1\.5; previous revision: 1\.4
-done'
+done"
dotest binfiles-14b "cat binfile" 'this file is $''RCSfile$'
# See binfiles-5.5 for discussion of -kb.
dotest binfiles-14c "${testcvs} status binfile" \
-'===================================================================
+"===================================================================
File: binfile Status: Up-to-date
Working revision: 1\.5.*
- Repository revision: 1\.5 /tmp/cvs-sanity/cvsroot/first-dir/binfile,v
+ Repository revision: 1\.5 ${TESTDIR}/cvsroot/first-dir/binfile,v
Sticky Tag: (none)
Sticky Date: (none)
- Sticky Options: -kb'
+ Sticky Options: -kb"
dotest binfiles-14d "${testcvs} admin -kv binfile" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/binfile,v
-done'
+"RCS file: ${TESTDIR}/cvsroot/first-dir/binfile,v
+done"
# cvs admin doesn't change the checked-out file or its sticky
# kopts. There probably should be a way which does (but
# what if the file is modified? And do we try to version
# control the kopt setting?)
dotest binfiles-14e "cat binfile" 'this file is $''RCSfile$'
dotest binfiles-14f "${testcvs} status binfile" \
-'===================================================================
+"===================================================================
File: binfile Status: Up-to-date
Working revision: 1\.5.*
- Repository revision: 1\.5 /tmp/cvs-sanity/cvsroot/first-dir/binfile,v
+ Repository revision: 1\.5 ${TESTDIR}/cvsroot/first-dir/binfile,v
Sticky Tag: (none)
Sticky Date: (none)
- Sticky Options: -kb'
+ Sticky Options: -kb"
dotest binfiles-14g "${testcvs} -q update -A" '[UP] binfile'
dotest binfiles-14h "cat binfile" 'this file is binfile,v'
dotest binfiles-14i "${testcvs} status binfile" \
-'===================================================================
+"===================================================================
File: binfile Status: Up-to-date
Working revision: 1\.5.*
- Repository revision: 1\.5 /tmp/cvs-sanity/cvsroot/first-dir/binfile,v
+ Repository revision: 1\.5 ${TESTDIR}/cvsroot/first-dir/binfile,v
Sticky Tag: (none)
Sticky Date: (none)
- Sticky Options: -kv'
+ Sticky Options: -kv"
# Do sticky options work when used with 'cvs update'?
echo "Not a binary file." > nibfile
dotest binfiles-sticky1 "${testcvs} -q add nibfile" \
"${PROG} [a-z]*: use "\''cvs commit'\'' to add this file permanently'
dotest binfiles-sticky2 "${testcvs} -q ci -m add-it nibfile" \
- 'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/nibfile,v
+ "RCS file: ${TESTDIR}/cvsroot/first-dir/nibfile,v
done
Checking in nibfile;
-/tmp/cvs-sanity/cvsroot/first-dir/nibfile,v <-- nibfile
+${TESTDIR}/cvsroot/first-dir/nibfile,v <-- nibfile
initial revision: 1\.1
-done'
+done"
dotest binfiles-sticky3 "${testcvs} -q update -kb nibfile" \
'[UP] nibfile'
dotest binfiles-sticky4 "${testcvs} -q status nibfile" \
-'===================================================================
+"===================================================================
File: nibfile Status: Up-to-date
Working revision: 1\.1.*
- Repository revision: 1\.1 /tmp/cvs-sanity/cvsroot/first-dir/nibfile,v
+ Repository revision: 1\.1 ${TESTDIR}/cvsroot/first-dir/nibfile,v
Sticky Tag: (none)
Sticky Date: (none)
- Sticky Options: -kb'
+ Sticky Options: -kb"
# Eventually we should test that -A removes the -kb here...
cd ../..
@@ -4987,6 +5296,58 @@ File: nibfile Status: Up-to-date
rm -r 2
;;
+ binfiles2)
+ # Test cvs's ability to handle binary files, particularly branching
+ # and joining. The key thing we are worrying about is that CVS
+ # doesn't print "cannot merge binary files" or some such, in
+ # situations where no merging is required.
+ # See also "join" which does this with non-binary files.
+
+ mkdir ${CVSROOT_DIRNAME}/first-dir
+ mkdir 1; cd 1
+ dotest binfiles2-1 "${testcvs} -q co first-dir" ''
+ cd first-dir
+ # FIXCVS: unless a branch has at least one file on it,
+ # tag_check_valid won't know it exists. So creating a
+ # file here is a workaround.
+ touch dummy
+ dotest binfiles2-1a "${testcvs} add dummy" \
+"${PROG} [a-z]*: scheduling file .dummy. for addition
+${PROG} [a-z]*: use .cvs commit. to add this file permanently"
+ dotest binfiles2-1b "${testcvs} -q ci -m add-it" \
+"RCS file: ${TESTDIR}/cvsroot/first-dir/dummy,v
+done
+Checking in dummy;
+${TESTDIR}/cvsroot/first-dir/dummy,v <-- dummy
+initial revision: 1\.1
+done"
+ dotest binfiles2-2 "${testcvs} -q tag -b br" 'T dummy'
+ dotest binfiles2-3 "${testcvs} -q update -r br" ''
+ awk 'BEGIN { printf "%c%c%c%c%c%c", 2, 10, 137, 0, 13, 10 }' \
+ </dev/null >../binfile
+ cp ../binfile binfile.dat
+ dotest binfiles2-4 "${testcvs} add -kb binfile.dat" \
+"${PROG} [a-z]*: scheduling file .binfile\.dat. for addition on branch .br.
+${PROG} [a-z]*: use .cvs commit. to add this file permanently"
+ dotest binfiles2-5 "${testcvs} -q ci -m add-it" \
+"RCS file: ${TESTDIR}/cvsroot/first-dir/Attic/binfile\.dat,v
+done
+Checking in binfile\.dat;
+${TESTDIR}/cvsroot/first-dir/Attic/binfile\.dat,v <-- binfile\.dat
+new revision: 1\.1\.2\.1; previous revision: 1\.1
+done"
+ dotest binfiles2-6 "${testcvs} -q update -A" \
+"${PROG} [a-z]*: warning: binfile\.dat is not (any longer) pertinent"
+ dotest_fail binfiles2-7 "test -f binfile.dat" ''
+ dotest binfiles2-8 "${testcvs} -q update -j br" "U binfile.dat"
+ dotest binfiles2-9 "cmp ../binfile binfile.dat"
+ cd ..
+ cd ..
+
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
+ rm -r 1
+ ;;
+
binwrap)
# Test the ability to specify binary-ness based on file name.
# We could also be testing the ability to use the other
@@ -5008,15 +5369,15 @@ File: nibfile Status: Up-to-date
fail binwrap-1
fi
cd ..
- rm -rf dir-to-import
+ rm -r dir-to-import
dotest binwrap-2 "${testcvs} -q co first-dir" 'U first-dir/foo.c
U first-dir/foo.exe'
dotest binwrap-3 "${testcvs} -q status first-dir" \
-'===================================================================
+"===================================================================
File: foo\.c Status: Up-to-date
Working revision: 1\.1\.1\.1.*
- Repository revision: 1\.1\.1\.1 /tmp/cvs-sanity/cvsroot/first-dir/foo\.c,v
+ Repository revision: 1\.1\.1\.1 ${TESTDIR}/cvsroot/first-dir/foo\.c,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
@@ -5025,11 +5386,79 @@ File: foo\.c Status: Up-to-date
File: foo\.exe Status: Up-to-date
Working revision: 1\.1\.1\.1.*
- Repository revision: 1\.1\.1\.1 /tmp/cvs-sanity/cvsroot/first-dir/foo\.exe,v
+ Repository revision: 1\.1\.1\.1 ${TESTDIR}/cvsroot/first-dir/foo\.exe,v
Sticky Tag: (none)
Sticky Date: (none)
- Sticky Options: -kb'
- rm -rf first-dir ${CVSROOT_DIRNAME}/first-dir
+ Sticky Options: -kb"
+ rm -r first-dir
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
+ ;;
+
+ mwrap)
+ # Tests relating to the -m wrappers options. -k tests are in
+ # binwrap and -t/-f tests haven't been written yet.
+ dotest mwrap-c1 "${testcvs} -q co CVSROOT" "[UP] CVSROOT${DOTSTAR}"
+ cd CVSROOT
+ echo "* -m 'COPY'" >>cvswrappers
+ dotest mwrap-c2 "${testcvs} -q ci -m wrapper-mod" \
+"Checking in cvswrappers;
+${TESTDIR}/cvsroot/CVSROOT/cvswrappers,v <-- cvswrappers
+new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
+done
+${PROG} [a-z]*: Rebuilding administrative file database"
+ cd ..
+ mkdir m1; cd m1
+ dotest mwrap-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest mwrap-2 "${testcvs} add first-dir" \
+"Directory ${TESTDIR}/cvsroot/first-dir added to the repository"
+ cd first-dir
+ touch aa
+ dotest mwrap-3 "${testcvs} add aa" \
+"${PROG} [a-z]*: scheduling file .aa. for addition
+${PROG} [a-z]*: use .cvs commit. to add this file permanently"
+ dotest mwrap-4 "${testcvs} -q ci -m add" \
+"RCS file: ${TESTDIR}/cvsroot/first-dir/aa,v
+done
+Checking in aa;
+${TESTDIR}/cvsroot/first-dir/aa,v <-- aa
+initial revision: 1\.1
+done"
+ cd ../..
+ mkdir m2; cd m2
+ dotest mwrap-5 "${testcvs} -q co first-dir" "U first-dir/aa"
+ cd first-dir
+ echo "changed in m2" >aa
+ dotest mwrap-6 "${testcvs} -q ci -m m2-mod" \
+"Checking in aa;
+${TESTDIR}/cvsroot/first-dir/aa,v <-- aa
+new revision: 1\.2; previous revision: 1\.1
+done"
+ cd ../..
+ cd m1/first-dir
+ echo "changed in m1" >aa
+ dotest_fail mwrap-7 "${testcvs} -nq update" "C aa"
+ dotest_fail mwrap-8 "${testcvs} -q update" \
+"${PROG} [a-z]*: A -m .COPY. wrapper is specified
+${PROG} [a-z]*: but file aa needs merge
+${PROG} \[[a-z]* aborted\]: You probably want to avoid -m .COPY. wrappers"
+ # Under the old, dangerous behavior, this would have been
+ # "changed in m2" -- that is, the changes in the working directory
+ # would have been clobbered (!).
+ dotest mwrap-9 "cat aa" "changed in m1"
+ cd ../..
+ cd CVSROOT
+ echo '# comment out' >cvswrappers
+ dotest mwrap-ce "${testcvs} -q ci -m wrapper-mod" \
+"Checking in cvswrappers;
+${TESTDIR}/cvsroot/CVSROOT/cvswrappers,v <-- cvswrappers
+new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
+done
+${PROG} [a-z]*: Rebuilding administrative file database"
+ cd ..
+ rm -r CVSROOT
+ rm -r m1 m2
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
info)
@@ -5052,11 +5481,11 @@ File: foo\.exe Status: Up-to-date
'"${PROG}"' [a-z]*: use '"'"'cvs commit'"'"' to add this file permanently'
dotest info-3 "${testcvs} -q ci -m new-loginfo" \
-'Checking in loginfo;
-/tmp/cvs-sanity/cvsroot/CVSROOT/loginfo,v <-- loginfo
+"Checking in loginfo;
+${TESTDIR}/cvsroot/CVSROOT/loginfo,v <-- loginfo
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
done
-'"${PROG}"' [a-z]*: Rebuilding administrative file database'
+${PROG} [a-z]*: Rebuilding administrative file database"
cd ..
mkdir ${CVSROOT_DIRNAME}/first-dir
@@ -5068,21 +5497,21 @@ done
'"${PROG}"' [a-z]*: use '\''cvs commit'\'' to add this file permanently'
echo "cvs -s OTHER=not-this -s MYENV=env-" >>$HOME/.cvsrc
dotest info-6a "${testcvs} -q -s OTHER=value ci -m add-it" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file1,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
done
Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
initial revision: 1\.1
done
-'"${PROG}"' [a-z]*: loginfo:1: no such user variable ${=ZEE}'
+${PROG} [a-z]*: loginfo:1: no such user variable \${=ZEE}"
echo line1 >>file1
dotest info-7 "${testcvs} -q -s OTHER=value -s ZEE=z ci -m mod-it" \
-'Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
new revision: 1\.2; previous revision: 1\.1
-done'
+done"
cd ..
- dotest info-9 "cat $TESTDIR/testlog" 'xenv-valueyz=[a-z0-9@][a-z0-9@]*=/tmp/cvs-sanity/cvsroot='
+ dotest info-9 "cat $TESTDIR/testlog" "xenv-valueyz=[a-z0-9@][a-z0-9@]*=${TESTDIR}/cvsroot="
dotest info-10 "cat $TESTDIR/testlog2" 'first-dir file1,NONE,1.1
first-dir 1.1
first-dir file1
@@ -5098,7 +5527,7 @@ first-dir file1ux'
echo '# do nothing' >loginfo
dotest info-11 "${testcvs} -q -s ZEE=garbage ci -m nuke-loginfo" \
"Checking in loginfo;
-/tmp/cvs-sanity/cvsroot/CVSROOT/loginfo,v <-- loginfo
+${TESTDIR}/cvsroot/CVSROOT/loginfo,v <-- loginfo
new revision: 1\.[0-9]; previous revision: 1\.[0-9]
done
${PROG} [a-z]*: Rebuilding administrative file database"
@@ -5117,7 +5546,7 @@ EOF
echo "^first-dir ${TESTDIR}/vscript" >>verifymsg
dotest info-v1 "${testcvs} -q ci -m add-verification" \
"Checking in verifymsg;
-/tmp/cvs-sanity/cvsroot/CVSROOT/verifymsg,v <-- verifymsg
+${TESTDIR}/cvsroot/CVSROOT/verifymsg,v <-- verifymsg
new revision: 1\.2; previous revision: 1\.1
done
${PROG} [a-z]*: Rebuilding administrative file database"
@@ -5134,7 +5563,7 @@ and many more lines after it
EOF
dotest info-v3 "${testcvs} -q ci -F ${TESTDIR}/comment.tmp" \
"Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
new revision: 1\.3; previous revision: 1\.2
done"
cd ..
@@ -5153,7 +5582,7 @@ ${PROG} \[[a-z]* aborted\]: Message verification failed"
echo '# do nothing' >verifymsg
dotest info-cleanup-verifymsg "${testcvs} -q ci -m nuke-verifymsg" \
"Checking in verifymsg;
-/tmp/cvs-sanity/cvsroot/CVSROOT/verifymsg,v <-- verifymsg
+${TESTDIR}/cvsroot/CVSROOT/verifymsg,v <-- verifymsg
new revision: 1\.[0-9]; previous revision: 1\.[0-9]
done
${PROG} [a-z]*: Rebuilding administrative file database"
@@ -5190,12 +5619,12 @@ ${PROG} [a-z]*: Rebuilding administrative file database"
'"${PROG}"' [a-z]*: use '\''cvs commit'\'' to add this file permanently'
dotest serverpatch-3 "${testcvs} -q commit -m add" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file1,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
done
Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
initial revision: 1\.1
-done'
+done"
# Tag the file.
dotest serverpatch-4 "${testcvs} -q tag tag file1" 'T file1'
@@ -5215,10 +5644,10 @@ done'
cd ../1/first-dir
echo '2' >> file1
dotest serverpatch-7 "${testcvs} -q ci -mx file1" \
-'Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
new revision: 1\.2; previous revision: 1\.1
-done'
+done"
# Now update the second copy. When using remote CVS, the
# patch will fail, forcing the file to be refetched.
@@ -5231,7 +5660,8 @@ done'
U file1'
cd ../..
- rm -rf 1 2 ${CVSROOT_DIRNAME}/first-dir
+ rm -r 1 2
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
log)
@@ -5252,56 +5682,56 @@ U file1'
'"${PROG}"' [a-z]*: use '\''cvs commit'\'' to add this file permanently'
dotest log-3 "${testcvs} -q commit -m 1" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file1,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
done
Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
initial revision: 1\.1
-done'
+done"
echo 'second revision' > file1
dotest log-4 "${testcvs} -q ci -m2 file1" \
-'Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
new revision: 1\.2; previous revision: 1\.1
-done'
+done"
dotest log-5 "${testcvs} -q tag -b branch file1" 'T file1'
echo 'third revision' > file1
dotest log-6 "${testcvs} -q ci -m3 file1" \
-'Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
new revision: 1\.3; previous revision: 1\.2
-done'
+done"
dotest log-7 "${testcvs} -q update -r branch" '[UP] file1'
echo 'first branch revision' > file1
dotest log-8 "${testcvs} -q ci -m1b file1" \
-'Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
new revision: 1\.2\.2\.1; previous revision: 1\.2
-done'
+done"
dotest log-9 "${testcvs} -q tag tag file1" 'T file1'
echo 'second branch revision' > file1
dotest log-10 "${testcvs} -q ci -m2b file1" \
-'Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
new revision: 1\.2\.2\.2; previous revision: 1\.2\.2\.1
-done'
+done"
# Set up a bunch of shell variables to make the later tests
# easier to describe.=
- log_header='
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file1,v
+ log_header="
+RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
Working file: file1
head: 1\.3
branch:
locks: strict
-access list:'
+access list:"
log_tags='symbolic names:
tag: 1\.2\.2\.1
branch: 1\.2\.0\.2'
@@ -5457,7 +5887,8 @@ ${log_rev1}
${log_trailer}"
cd ..
- rm -rf first-dir ${CVSROOT_DIRNAME}/first-dir
+ rm -r first-dir
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
log2)
@@ -5476,14 +5907,14 @@ ${log_trailer}"
"${PROG}"' [a-z]*: scheduling file `file1'\'' for addition
'"${PROG}"' [a-z]*: use '\''cvs commit'\'' to add this file permanently'
dotest log2-3 "${testcvs} -q commit -m 1" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file1,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
done
Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
initial revision: 1\.1
-done'
- dotest log2-4 "${testcvs} log -N file1" '
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file1,v
+done"
+ dotest log2-4 "${testcvs} log -N file1" "
+RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
Working file: file1
head: 1\.1
branch:
@@ -5495,12 +5926,13 @@ description:
file1-is-for-testing
----------------------------
revision 1\.1
-date: [0-9/]* [0-9:]*; author: '"${username}"'; state: Exp;
+date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;
1
-============================================================================='
+============================================================================="
cd ..
- rm -rf first-dir ${CVSROOT_DIRNAME}/first-dir
+ rm -r first-dir
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
fi # end of tests skipped for remote
@@ -5517,13 +5949,13 @@ date: [0-9/]* [0-9:]*; author: '"${username}"'; state: Exp;
# First, if the repository doesn't exist at all...
dotest_fail crerepos-1 \
"${testcvs} -d ${TESTDIR}/crerepos co cvs-sanity" \
-"${PROG} \[[a-z]* aborted\]: /tmp/cvs-sanity/crerepos/CVSROOT: .*"
+"${PROG} \[[a-z]* aborted\]: ${TESTDIR}/crerepos/CVSROOT: .*"
mkdir crerepos
# The repository exists but CVSROOT doesn't.
dotest_fail crerepos-2 \
"${testcvs} -d ${TESTDIR}/crerepos co cvs-sanity" \
-"${PROG} \[[a-z]* aborted\]: /tmp/cvs-sanity/crerepos/CVSROOT: .*"
+"${PROG} \[[a-z]* aborted\]: ${TESTDIR}/crerepos/CVSROOT: .*"
mkdir crerepos/CVSROOT
# Checkout of nonexistent module
@@ -5546,7 +5978,7 @@ ${testcvs} -d ${TESTDIR}/crerepos release -d CVSROOT >>${LOGFILE}; then
else
fail crerepos-5
fi
- rm -rf CVS
+ rm -r CVS
cd ..
# The directory tmp should be empty
dotest crerepos-6 "rmdir tmp" ''
@@ -5565,13 +5997,13 @@ ${testcvs} -d ${TESTDIR}/crerepos release -d CVSROOT >>${LOGFILE}; then
dotest_fail crerepos-6a "${testcvs} -q -d ../crerepos get ." \
"${PROG} \[[a-z]* aborted\]: CVSROOT ../crerepos must be an absolute pathname"
cd ..
- rm -rf 1
+ rm -r 1
mkdir 1; cd 1
dotest_fail crerepos-6b "${testcvs} -d crerepos init" \
"${PROG} \[[a-z]* aborted\]: CVSROOT crerepos must be an absolute pathname"
cd ..
- rm -rf 1
+ rm -r 1
else # remote
# Test that CVS rejects a relative path in CVSROOT.
mkdir 1; cd 1
@@ -5579,14 +6011,14 @@ ${testcvs} -d ${TESTDIR}/crerepos release -d CVSROOT >>${LOGFILE}; then
"${testcvs} -q -d :ext:`hostname`:../crerepos get ." \
"Root ../crerepos must be an absolute pathname"
cd ..
- rm -rf 1
+ rm -r 1
mkdir 1; cd 1
dotest_fail crerepos-6b \
"${testcvs} -d :ext:`hostname`:crerepos init" \
"Root crerepos must be an absolute pathname"
cd ..
- rm -rf 1
+ rm -r 1
fi # end of tests to be skipped for remote
# CVS better not create a history file--if the administrator
@@ -5690,7 +6122,7 @@ EOF
dotest rcs-1 "${testcvs} -q co first-dir" 'U first-dir/file1'
cd first-dir
dotest rcs-2 "${testcvs} -q log" "
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file1,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
Working file: file1
head: 1\.3
branch:
@@ -5724,7 +6156,7 @@ add file1
# ISO8601 format. There are many, many, other variations
# specified by ISO8601 which we should be testing too.
dotest rcs-3 "${testcvs} -q log -d 1996-12-11<" "
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file1,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
Working file: file1
head: 1\.3
branch:
@@ -5745,7 +6177,7 @@ delete second line; modify twelfth line
if ${testcvs} -q log -d '<3 Apr 2000 00:00' >${TESTDIR}/rcs4.tmp
then
dotest rcs-4 "cat ${TESTDIR}/rcs4.tmp" "
-RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file1,v
+RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
Working file: file1
head: 1\.3
branch:
@@ -5768,8 +6200,10 @@ add file1
else
fail rcs-4
fi
+ cd ..
- rm -rf first-dir ${CVSROOT_DIRNAME}/first-dir ${TESTDIR}/rcs4.tmp
+ rm -r first-dir ${TESTDIR}/rcs4.tmp
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
big)
@@ -5799,22 +6233,22 @@ add file1
"${PROG} [a-z]*: scheduling file .file1. for addition
${PROG} [a-z]*: use .cvs commit. to add this file permanently"
dotest big-3 "${testcvs} -q ci -m add" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file1,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
done
Checking in file1;
-/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
initial revision: 1\.1
-done'
+done"
cd ..
- rm -rf first-dir
+ rm -r first-dir
dotest big-4 "${testcvs} -q get first-dir" "U first-dir/file1"
if test "$keep" = yes; then
- echo Keeping /tmp/cvs-sanity and exiting due to --keep
+ echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
fi
- rm -rf first-dir
+ rm -r first-dir
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
@@ -5836,45 +6270,45 @@ done'
dotest modes-1 "${testcvs} -q co -l ." ''
mkdir first-dir
dotest modes-2 "${testcvs} add first-dir" \
-"Directory /tmp/cvs-sanity/cvsroot/first-dir added to the repository"
+"Directory ${TESTDIR}/cvsroot/first-dir added to the repository"
cd first-dir
touch aa
dotest modes-3 "${testcvs} add aa" \
"${PROG} [a-z]*: scheduling file .aa. for addition
${PROG} [a-z]*: use .cvs commit. to add this file permanently"
dotest modes-4 "${testcvs} -q ci -m add" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/aa,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/aa,v
done
Checking in aa;
-/tmp/cvs-sanity/cvsroot/first-dir/aa,v <-- aa
+${TESTDIR}/cvsroot/first-dir/aa,v <-- aa
initial revision: 1\.1
-done'
- dotest modes-5 "ls -l /tmp/cvs-sanity/cvsroot/first-dir/aa,v" \
+done"
+ dotest modes-5 "ls -l ${TESTDIR}/cvsroot/first-dir/aa,v" \
"-r--r--r-- .*"
# Test for whether we can set the execute bit.
chmod +x aa
echo change it >>aa
dotest modes-6 "${testcvs} -q ci -m set-execute-bit" \
-'Checking in aa;
-/tmp/cvs-sanity/cvsroot/first-dir/aa,v <-- aa
+"Checking in aa;
+${TESTDIR}/cvsroot/first-dir/aa,v <-- aa
new revision: 1\.2; previous revision: 1\.1
-done'
+done"
# If CVS let us update the execute bit, it would be set here.
# But it doesn't, and as far as I know that is longstanding
# CVS behavior.
- dotest modes-7 "ls -l /tmp/cvs-sanity/cvsroot/first-dir/aa,v" \
+ dotest modes-7 "ls -l ${TESTDIR}/cvsroot/first-dir/aa,v" \
"-r--r--r-- .*"
# OK, now manually change the modes and see what happens.
- chmod g=r,o= /tmp/cvs-sanity/cvsroot/first-dir/aa,v
+ chmod g=r,o= ${TESTDIR}/cvsroot/first-dir/aa,v
echo second line >>aa
dotest modes-7a "${testcvs} -q ci -m set-execute-bit" \
"Checking in aa;
${TESTDIR}/cvsroot/first-dir/aa,v <-- aa
new revision: 1\.3; previous revision: 1\.2
done"
- dotest modes-7b "ls -l /tmp/cvs-sanity/cvsroot/first-dir/aa,v" \
+ dotest modes-7b "ls -l ${TESTDIR}/cvsroot/first-dir/aa,v" \
"-r--r----- .*"
CVSUMASK=007
@@ -5886,20 +6320,20 @@ done"
"${PROG} [a-z]*: scheduling file .ab. for addition
${PROG} [a-z]*: use .cvs commit. to add this file permanently"
dotest modes-9 "${testcvs} -q ci -m add" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/ab,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/ab,v
done
Checking in ab;
-/tmp/cvs-sanity/cvsroot/first-dir/ab,v <-- ab
+${TESTDIR}/cvsroot/first-dir/ab,v <-- ab
initial revision: 1\.1
-done'
+done"
if test "x$remote" = xyes; then
# The problem here is that the CVSUMASK environment variable
# needs to be set on the server (e.g. .bashrc). This is, of
# course, bogus, but that is the way it is currently.
- dotest modes-10 "ls -l /tmp/cvs-sanity/cvsroot/first-dir/ab,v" \
+ dotest modes-10 "ls -l ${TESTDIR}/cvsroot/first-dir/ab,v" \
"-r-xr-x---.*" "-r-xr-xr-x.*"
else
- dotest modes-10 "ls -l /tmp/cvs-sanity/cvsroot/first-dir/ab,v" \
+ dotest modes-10 "ls -l ${TESTDIR}/cvsroot/first-dir/ab,v" \
"-r-xr-x---.*"
fi
@@ -5916,31 +6350,172 @@ ${PROG} [a-z]*: use .cvs commit. to add this file permanently"
# when we are just now adding the file; as far as I know
# that is longstanding CVS behavior, for what it's worth.
dotest modes-14 "${testcvs} -q ci -m add" \
-'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/Attic/ac,v
+"RCS file: ${TESTDIR}/cvsroot/first-dir/Attic/ac,v
done
Checking in ac;
-/tmp/cvs-sanity/cvsroot/first-dir/Attic/ac,v <-- ac
+${TESTDIR}/cvsroot/first-dir/Attic/ac,v <-- ac
new revision: 1\.1\.2\.1; previous revision: 1\.1
-done'
+done"
if test "x$remote" = xyes; then
# The problem here is that the CVSUMASK environment variable
# needs to be set on the server (e.g. .bashrc). This is, of
# course, bogus, but that is the way it is currently.
dotest modes-15 \
-"ls -l /tmp/cvs-sanity/cvsroot/first-dir/Attic/ac,v" \
+"ls -l ${TESTDIR}/cvsroot/first-dir/Attic/ac,v" \
"-r--r--r--.*"
else
dotest modes-15 \
-"ls -l /tmp/cvs-sanity/cvsroot/first-dir/Attic/ac,v" \
+"ls -l ${TESTDIR}/cvsroot/first-dir/Attic/ac,v" \
"-r--r-----.*"
fi
cd ../..
- rm -rf 1 ${CVSROOT_DIRNAME}/first-dir
+ rm -r 1
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
# Perhaps should restore the umask and CVSUMASK. But the other
# tests "should" not care about them...
;;
+ stamps)
+ # Test timestamps.
+ mkdir 1; cd 1
+ dotest stamps-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest stamps-2 "${testcvs} add first-dir" \
+"Directory ${TESTDIR}/cvsroot/first-dir added to the repository"
+ cd first-dir
+ touch aa
+ echo '$''Id$' >kw
+ ls -l aa >${TESTDIR}/1/stamp.aa.touch
+ ls -l kw >${TESTDIR}/1/stamp.kw.touch
+ # "sleep 1" would suffice if we could assume ls --full-time, but
+ # that is as far as I know unique to GNU ls. Is there some POSIX.2
+ # way to get the timestamp of a file, including the seconds?
+ sleep 60
+ dotest stamps-3 "${testcvs} add aa kw" \
+"${PROG} [a-z]*: scheduling file .aa. for addition
+${PROG} [a-z]*: scheduling file .kw. for addition
+${PROG} [a-z]*: use .cvs commit. to add these files permanently"
+ ls -l aa >${TESTDIR}/1/stamp.aa.add
+ ls -l kw >${TESTDIR}/1/stamp.kw.add
+ # "cvs add" should not muck with the timestamp.
+ dotest stamps-4aa \
+"cmp ${TESTDIR}/1/stamp.aa.touch ${TESTDIR}/1/stamp.aa.add" ''
+ dotest stamps-4kw \
+"cmp ${TESTDIR}/1/stamp.kw.touch ${TESTDIR}/1/stamp.kw.add" ''
+ sleep 60
+ dotest stamps-5 "${testcvs} -q ci -m add" \
+"RCS file: ${TESTDIR}/cvsroot/first-dir/aa,v
+done
+Checking in aa;
+${TESTDIR}/cvsroot/first-dir/aa,v <-- aa
+initial revision: 1\.1
+done
+RCS file: ${TESTDIR}/cvsroot/first-dir/kw,v
+done
+Checking in kw;
+${TESTDIR}/cvsroot/first-dir/kw,v <-- kw
+initial revision: 1\.1
+done"
+ ls -l aa >${TESTDIR}/1/stamp.aa.ci
+ ls -l kw >${TESTDIR}/1/stamp.kw.ci
+ # If there are no keywords, "cvs ci" leaves the timestamp alone
+ # If there are, it sets the timestamp to the date of the commit.
+ # I'm not sure how logical this is, but it is intentional.
+ # If we wanted to get fancy we would make sure the time as
+ # reported in "cvs log kw" matched stamp.kw.ci. But that would
+ # be a lot of work.
+ dotest stamps-6aa \
+ "cmp ${TESTDIR}/1/stamp.aa.add ${TESTDIR}/1/stamp.aa.ci" ''
+ if cmp ${TESTDIR}/1/stamp.kw.add ${TESTDIR}/1/stamp.kw.ci >/dev/null
+ then
+ fail stamps-6kw
+ else
+ pass stamps-6kw
+ fi
+ cd ../..
+ sleep 60
+ mkdir 2
+ cd 2
+ dotest stamps-7 "${testcvs} -q get first-dir" "U first-dir/aa
+U first-dir/kw"
+ cd first-dir
+ ls -l aa >${TESTDIR}/1/stamp.aa.get
+ ls -l kw >${TESTDIR}/1/stamp.kw.get
+ # On checkout, CVS should set the timestamp to the date that the
+ # file was committed. Could check that the time as reported in
+ # "cvs log aa" matches stamp.aa.get, but that would be a lot of
+ # work.
+ if cmp ${TESTDIR}/1/stamp.aa.ci ${TESTDIR}/1/stamp.aa.get >/dev/null
+ then
+ fail stamps-8aa
+ else
+ pass stamps-8aa
+ fi
+ dotest stamps-8kw \
+ "cmp ${TESTDIR}/1/stamp.kw.ci ${TESTDIR}/1/stamp.kw.get" ''
+
+ # Now we want to see what "cvs update" does.
+ sleep 60
+ echo add a line >>aa
+ echo add a line >>kw
+ dotest stamps-9 "${testcvs} -q ci -m change-them" \
+"Checking in aa;
+${TESTDIR}/cvsroot/first-dir/aa,v <-- aa
+new revision: 1\.2; previous revision: 1\.1
+done
+Checking in kw;
+${TESTDIR}/cvsroot/first-dir/kw,v <-- kw
+new revision: 1\.2; previous revision: 1\.1
+done"
+ ls -l aa >${TESTDIR}/1/stamp.aa.ci2
+ ls -l kw >${TESTDIR}/1/stamp.kw.ci2
+ cd ../..
+ cd 1/first-dir
+ sleep 60
+ dotest stamps-10 "${testcvs} -q update" '[UP] aa
+[UP] kw'
+ # this doesn't serve any function other than being able to
+ # look at it manually, as we have no machinery for dates being
+ # newer or older than other dates.
+ date >${TESTDIR}/1/stamp.debug.update
+ ls -l aa >${TESTDIR}/1/stamp.aa.update
+ ls -l kw >${TESTDIR}/1/stamp.kw.update
+ # stamp.aa.update and stamp.kw.update should both be approximately
+ # the same as stamp.debug.update. Perhaps we could be testing
+ # this in a more fancy fashion by "touch stamp.before" before
+ # stamps-10, "touch stamp.after" after, and then using ls -t
+ # to check them. But for now we just make sure that the *.update
+ # stamps differ from the *.ci2 ones.
+ # As for the rationale, this is so that if one updates and gets
+ # a new revision, then "make" will be sure to regard those files
+ # as newer than .o files which may be sitting around.
+ if cmp ${TESTDIR}/1/stamp.aa.update ${TESTDIR}/1/stamp.aa.ci2 \
+ >/dev/null
+ then
+ fail stamps-11aa
+ else
+ pass stamps-11aa
+ fi
+ if cmp ${TESTDIR}/1/stamp.kw.update ${TESTDIR}/1/stamp.kw.ci2 \
+ >/dev/null
+ then
+ fail stamps-11kw
+ else
+ pass stamps-11kw
+ fi
+
+ cd ../..
+
+ if test "$keep" = yes; then
+ echo Keeping ${TESTDIR} and exiting due to --keep
+ exit 0
+ fi
+
+ rm -r 1 2
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
+ ;;
+
sticky)
# More tests of sticky tags, particularly non-branch sticky tags.
mkdir 1; cd 1
@@ -5983,7 +6558,8 @@ ${QUESTION} file2" "${QUESTION} file2
${PROG} [a-z]*: use .cvs commit. to add this file permanently"
cd ../..
- rm -rf 1 ${CVSROOT_DIRNAME}/first-dir
+ rm -r 1
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
keyword)
@@ -6154,7 +6730,7 @@ xx "'\$'"Log"'\$'
# This workaround should be removed when the bug is fixed.
if test "x$remote" = "xyes"; then
cd ..
- rm -rf first-dir
+ rm -r first-dir
dotest keyword-17 "${testcvs} -q co first-dir" "U first-dir/file1"
cd first-dir
else
@@ -6220,7 +6796,79 @@ xx
change"
cd ../..
- rm -rf 1 ${CVSROOT_DIRNAME}/first-dir
+ rm -r 1
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
+ ;;
+
+ toplevel)
+ # test the feature that cvs creates a CVS subdir also for
+ # the toplevel directory
+
+ # Some test, somewhere, is creating Emptydir. That test
+ # should, perhaps, clean up for itself, but I don't know which
+ # one it is.
+ rm -rf ${CVSROOT_DIRNAME}/CVSROOT/Emptydir
+
+ mkdir 1; cd 1
+ dotest toplevel-1 "${testcvs} -q co -l ." ''
+ mkdir top-dir
+ dotest toplevel-2 "${testcvs} add top-dir" \
+"Directory ${TESTDIR}/cvsroot/top-dir added to the repository"
+ cd top-dir
+
+ touch file1
+ dotest toplevel-3 "${testcvs} add file1" \
+"${PROG} [a-z]*: scheduling file .file1. for addition
+${PROG} [a-z]*: use .cvs commit. to add this file permanently"
+ dotest toplevel-4 "${testcvs} -q ci -m add" \
+"RCS file: ${TESTDIR}/cvsroot/top-dir/file1,v
+done
+Checking in file1;
+${TESTDIR}/cvsroot/top-dir/file1,v <-- file1
+initial revision: 1\.1
+done"
+
+ cd ../..
+ rm -r 1; mkdir 1; cd 1
+ dotest toplevel-5 "${testcvs} co top-dir" \
+"${PROG} [a-z]*: Updating top-dir
+U top-dir/file1"
+
+ dotest toplevel-6 "${testcvs} update top-dir" \
+"${PROG} [a-z]*: Updating top-dir"
+ dotest toplevel-7 "${testcvs} update" \
+"${PROG} [a-z]*: Updating \.
+${PROG} [a-z]*: Updating top-dir"
+
+ dotest toplevel-8 "${testcvs} update -d top-dir" \
+"${PROG} [a-z]*: Updating top-dir"
+ # FIXME: This test fails in cvs starting from 1.9.2 because
+ # it updates "file1" in "1". Test modules3-7f also finds
+ # (and tolerates) this bug. The second expect string below
+ # should be removed when this is fixed. The first expect
+ # string is the behavior of remote CVS. There is some sentiment
+ # that
+ # "${PROG} [a-z]*: Updating \.
+ # ${PROG} [a-z]*: Updating top-dir"
+ # is correct but it isn't clear why that would be correct instead
+ # of the remote CVS behavior.
+ #
+ # The DOTSTAR matches of a bunch of lines like
+ # "U CVSROOT/checkoutlist". Trying to match them more precisely
+ # seemed to cause trouble. For example CVSROOT/cvsignore will
+ # be present or absent depending on whether we ran the "ignore"
+ # test or not.
+ dotest toplevel-9 "${testcvs} update -d" \
+"${PROG} [a-z]*: Updating \.
+${PROG} [a-z]*: Updating CVSROOT
+${DOTSTAR}
+${PROG} [a-z]*: Updating top-dir" \
+"${PROG} [a-z]*: Updating \.
+U file1
+${PROG} [a-z]*: Updating top-dir"
+
+ cd ..
+ rm -r 1
;;
*)
@@ -6233,7 +6881,6 @@ echo "OK, all tests completed."
# TODO:
# * use "test" not "[" and see if all test's support `-z'
-# * Test `cvs admin'.
# * Test `cvs update -d foo' (where foo does not exist).
# * Test `cvs update foo bar' (where foo and bar are both from the
# same directory in the repository). Suppose one is a branch--make
@@ -6252,9 +6899,9 @@ echo "OK, all tests completed."
# * cvs rm twice (should be a nice error message).
# * -P option to checkout--(a) refrains from checking out new empty dirs,
# (b) prunes empty dirs already there.
-# * Test that cvs -d `hostname`:/tmp/cvs-sanity/non/existent co foo
+# * Test that cvs -d `hostname`:${TESTDIR}/non/existent co foo
# gives an appropriate error (e.g.
-# Cannot access /tmp/cvs-sanity/non-existent/CVSROOT
+# Cannot access ${TESTDIR}/non-existent/CVSROOT
# No such file or directory).
# (like basica-9, but for remote).
# * Test ability to send notifications in response to watches. (currently
diff --git a/gnu/usr.bin/cvs/src/status.c b/gnu/usr.bin/cvs/src/status.c
index 67b71beb565..cdc09493601 100644
--- a/gnu/usr.bin/cvs/src/status.c
+++ b/gnu/usr.bin/cvs/src/status.c
@@ -40,7 +40,7 @@ status (argc, argv)
if (argc == -1)
usage (status_usage);
- optind = 1;
+ optind = 0;
while ((c = getopt (argc, argv, "+vlR")) != -1)
{
switch (c)
diff --git a/gnu/usr.bin/cvs/src/tag.c b/gnu/usr.bin/cvs/src/tag.c
index 9c49da562bb..93e6c6723fc 100644
--- a/gnu/usr.bin/cvs/src/tag.c
+++ b/gnu/usr.bin/cvs/src/tag.c
@@ -82,7 +82,7 @@ cvstag (argc, argv)
if (argc == -1)
usage (tag_usage);
- optind = 1;
+ optind = 0;
while ((c = getopt (argc, argv, "+FQqlRcdr:D:bf")) != -1)
{
switch (c)
diff --git a/gnu/usr.bin/cvs/src/vers_ts.c b/gnu/usr.bin/cvs/src/vers_ts.c
index 03a0036202c..613e52eb21e 100644
--- a/gnu/usr.bin/cvs/src/vers_ts.c
+++ b/gnu/usr.bin/cvs/src/vers_ts.c
@@ -177,13 +177,26 @@ Version_TS (finfo, options, tag, date, force_tag_match, set_time)
*/
if (set_time)
{
- struct utimbuf t;
+#ifdef SERVER_SUPPORT
+ if (server_active)
+ server_modtime (finfo, vers_ts);
+ else
+#endif
+ {
+ struct utimbuf t;
- memset ((char *) &t, 0, sizeof (t));
- if (vers_ts->vn_rcs &&
- (t.actime = t.modtime = RCS_getrevtime (rcsdata,
- vers_ts->vn_rcs, (char *) 0, 0)) != -1)
- (void) utime (finfo->file, &t);
+ memset (&t, 0, sizeof (t));
+ if (vers_ts->vn_rcs)
+ {
+ t.modtime =
+ RCS_getrevtime (rcsdata, vers_ts->vn_rcs, 0, 0);
+ if (t.modtime != (time_t) -1)
+ {
+ t.actime = t.modtime;
+ (void) utime (finfo->file, &t);
+ }
+ }
+ }
}
}
diff --git a/gnu/usr.bin/cvs/src/version.c b/gnu/usr.bin/cvs/src/version.c
index 8e19b26bf35..c44217985a3 100644
--- a/gnu/usr.bin/cvs/src/version.c
+++ b/gnu/usr.bin/cvs/src/version.c
@@ -12,7 +12,7 @@
#include "cvs.h"
-char *version_string = "\nConcurrent Versions System (CVS) 1.9.8";
+char *version_string = "\nConcurrent Versions System (CVS) 1.9.10";
#ifdef CLIENT_SUPPORT
#ifdef SERVER_SUPPORT
diff --git a/gnu/usr.bin/cvs/src/watch.c b/gnu/usr.bin/cvs/src/watch.c
index 70deb7c3477..6cec1573621 100644
--- a/gnu/usr.bin/cvs/src/watch.c
+++ b/gnu/usr.bin/cvs/src/watch.c
@@ -17,10 +17,11 @@
const char *const watch_usage[] =
{
- "Usage: %s %s [on|off|add|remove] [-l] [-a action] [files...]\n",
+ "Usage: %s %s [on|off|add|remove] [-lR] [-a action] [files...]\n",
"on/off: turn on/off read-only checkouts of files\n",
"add/remove: add or remove notification on actions\n",
"-l (on/off/add/remove): Local directory only, not recursive\n",
+ "-R (on/off/add/remove): Process directories recursively\n",
"-a (add/remove): Specify what actions, one of\n",
" edit,unedit,commit,all,none\n",
NULL
@@ -255,14 +256,17 @@ watch_addremove (argc, argv)
the_args.commit = 0;
the_args.edit = 0;
the_args.unedit = 0;
- optind = 1;
- while ((c = getopt (argc, argv, "+la:")) != -1)
+ optind = 0;
+ while ((c = getopt (argc, argv, "+lRa:")) != -1)
{
switch (c)
{
case 'l':
local = 1;
break;
+ case 'R':
+ local = 0;
+ break;
case 'a':
a_omitted = 0;
if (strcmp (optarg, "edit") == 0)
@@ -410,7 +414,9 @@ watch (argc, argv)
static const char *const watchers_usage[] =
{
- "Usage: %s %s [files...]\n",
+ "Usage: %s %s [-lR] [files...]\n",
+ "\t-l\tProcess this directory only (not recursive).\n",
+ "\t-R\tProcess directories recursively.\n",
NULL
};
@@ -479,14 +485,17 @@ watchers (argc, argv)
if (argc == -1)
usage (watchers_usage);
- optind = 1;
- while ((c = getopt (argc, argv, "+l")) != -1)
+ optind = 0;
+ while ((c = getopt (argc, argv, "+lR")) != -1)
{
switch (c)
{
case 'l':
local = 1;
break;
+ case 'R':
+ local = 0;
+ break;
case '?':
default:
usage (watchers_usage);
diff --git a/gnu/usr.bin/cvs/vms/ChangeLog b/gnu/usr.bin/cvs/vms/ChangeLog
index 730bcf18697..26d000dceed 100644
--- a/gnu/usr.bin/cvs/vms/ChangeLog
+++ b/gnu/usr.bin/cvs/vms/ChangeLog
@@ -1,3 +1,11 @@
+Sun Jun 8 23:42:42 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * config.h (HAVE_MKFIFO): Remove; not used anywhere.
+
+Sun May 11 11:49:05 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * config.h: Remove USE_DIRECT_TCP; see ../ChangeLog for rationale.
+
Wed Mar 12 16:10:01 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
* config.h (HAVE_SETVBUF): Removed; no longer used.
diff --git a/gnu/usr.bin/cvs/vms/config.h b/gnu/usr.bin/cvs/vms/config.h
index 4cb79eaba0a..a22a3738cf1 100644
--- a/gnu/usr.bin/cvs/vms/config.h
+++ b/gnu/usr.bin/cvs/vms/config.h
@@ -83,9 +83,6 @@
/* Define if the closedir function returns void instead of int. */
/* #undef VOID_CLOSEDIR */
-/* Define if you want direct TCP access to server */
-#define USE_DIRECT_TCP 1
-
/* Define if you have MIT Kerberos version 4 available. */
/* #undef HAVE_KERBEROS */
@@ -119,9 +116,6 @@
/* Define if you have the strdup function */
#define HAVE_STRDUP 1
-/* Define if you have the mkfifo function. */
-/* #undef HAVE_MKFIFO */
-
/* Define if you have the putenv function. */
/* #undef HAVE_PUTENV */
diff --git a/gnu/usr.bin/cvs/windows-NT/ChangeLog b/gnu/usr.bin/cvs/windows-NT/ChangeLog
index 9db56c70e32..806b73a3345 100644
--- a/gnu/usr.bin/cvs/windows-NT/ChangeLog
+++ b/gnu/usr.bin/cvs/windows-NT/ChangeLog
@@ -1,3 +1,21 @@
+Tue Jun 17 16:35:06 1997 Jim Kingdon (unknown@beezley)
+
+ * rcmd.c: Check HAVE_WINSOCK_H in figuring out which files
+ to include (see comment about making this portable). If not
+ HAVE_WINSOCK_H, make various #definitions.
+ * rcmd.c (init_winsock): Move from here...
+ * win32.c: ...to here.
+ * rcmd.c (bind_and_connect, resolve_address): Shut up gcc -Wall
+ (which doesn't know that error (1, ...) doesn't return).
+
+Sun Jun 8 23:43:21 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * config.h (HAVE_MKFIFO): Remove; not used anywhere.
+
+Sat May 3 11:15:46 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
+
+ * rcmd.c: Add "copyright" notice.
+
Thu Apr 17 00:15:36 1997 Jim Kingdon <kingdon@harvey.cyclic.com>
* Makefile.in: Add sockerror.c.
diff --git a/gnu/usr.bin/cvs/windows-NT/config.h b/gnu/usr.bin/cvs/windows-NT/config.h
index 0fb42bf9d3b..b4d6f94765b 100644
--- a/gnu/usr.bin/cvs/windows-NT/config.h
+++ b/gnu/usr.bin/cvs/windows-NT/config.h
@@ -129,9 +129,6 @@
/* Define if you have the krb_get_err_text function. */
#undef HAVE_KRB_GET_ERR_TEXT
-/* Define if you have the mkfifo function. */
-#undef HAVE_MKFIFO
-
/* Define if you have the putenv function. */
#define HAVE_PUTENV 1
diff --git a/gnu/usr.bin/cvs/windows-NT/ndir.c b/gnu/usr.bin/cvs/windows-NT/ndir.c
index 17639e348ea..a5045b210af 100644
--- a/gnu/usr.bin/cvs/windows-NT/ndir.c
+++ b/gnu/usr.bin/cvs/windows-NT/ndir.c
@@ -11,7 +11,7 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- $Header: /cvs/OpenBSD/src/gnu/usr.bin/cvs/windows-NT/ndir.c,v 1.1.1.2 1997/02/21 06:38:34 tholo Exp $
+ $Header: /cvs/OpenBSD/src/gnu/usr.bin/cvs/windows-NT/ndir.c,v 1.1.1.3 1997/06/28 03:29:36 tholo Exp $
*/
/* Everything non trivial in this code is from: @(#)msd_dir.c 1.4
diff --git a/gnu/usr.bin/cvs/windows-NT/ndir.h b/gnu/usr.bin/cvs/windows-NT/ndir.h
index 3acae87eb5e..6cc9e40fc9b 100644
--- a/gnu/usr.bin/cvs/windows-NT/ndir.h
+++ b/gnu/usr.bin/cvs/windows-NT/ndir.h
@@ -11,7 +11,7 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- $Header: /cvs/OpenBSD/src/gnu/usr.bin/cvs/windows-NT/ndir.h,v 1.1.1.3 1997/02/21 06:38:30 tholo Exp $
+ $Header: /cvs/OpenBSD/src/gnu/usr.bin/cvs/windows-NT/ndir.h,v 1.1.1.4 1997/06/28 03:29:35 tholo Exp $
*/
/* Everything non trivial in this code is taken from: @(#)msd_dir.c 1.4
diff --git a/gnu/usr.bin/cvs/windows-NT/pwd.c b/gnu/usr.bin/cvs/windows-NT/pwd.c
index b2e3432b6ba..3a3d10097c2 100644
--- a/gnu/usr.bin/cvs/windows-NT/pwd.c
+++ b/gnu/usr.bin/cvs/windows-NT/pwd.c
@@ -11,7 +11,7 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- $Header: /cvs/OpenBSD/src/gnu/usr.bin/cvs/windows-NT/pwd.c,v 1.1.1.2 1997/02/21 06:38:34 tholo Exp $
+ $Header: /cvs/OpenBSD/src/gnu/usr.bin/cvs/windows-NT/pwd.c,v 1.1.1.3 1997/06/28 03:29:37 tholo Exp $
*/
/* This 'implementation' is conjectured from the use of this functions in
diff --git a/gnu/usr.bin/cvs/windows-NT/pwd.h b/gnu/usr.bin/cvs/windows-NT/pwd.h
index f76bbbc5455..614c41785ac 100644
--- a/gnu/usr.bin/cvs/windows-NT/pwd.h
+++ b/gnu/usr.bin/cvs/windows-NT/pwd.h
@@ -11,7 +11,7 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- $Header: /cvs/OpenBSD/src/gnu/usr.bin/cvs/windows-NT/pwd.h,v 1.1.1.2 1997/02/21 06:38:31 tholo Exp $
+ $Header: /cvs/OpenBSD/src/gnu/usr.bin/cvs/windows-NT/pwd.h,v 1.1.1.3 1997/06/28 03:29:35 tholo Exp $
*/
/* This 'implementation' is conjectured from the use of this functions in
diff --git a/gnu/usr.bin/cvs/windows-NT/rcmd.c b/gnu/usr.bin/cvs/windows-NT/rcmd.c
index d31cba2c04b..3a45b625623 100644
--- a/gnu/usr.bin/cvs/windows-NT/rcmd.c
+++ b/gnu/usr.bin/cvs/windows-NT/rcmd.c
@@ -1,29 +1,47 @@
/* rcmd.c --- execute a command on a remote host from Windows NT
+
+ 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.
+
Jim Blandy <jimb@cyclic.com> --- August 1995 */
#include <io.h>
#include <fcntl.h>
#include <malloc.h>
#include <errno.h>
-#include <winsock.h>
+
+#ifdef HAVE_WINSOCK_H
+ #include <winsock.h>
+#else
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+ #include <netdb.h>
+ typedef int SOCKET;
+ #define closesocket close
+ #define SOCK_ERRNO errno
+ #define SOCK_STRERROR strerror
+ /* Probably would be cleaner to just use EADDRINUSE, as NT has that too. */
+ #define WSAEADDRINUSE EADDRINUSE
+ /* Probably would be cleaner to just check for < 0. Might want to
+ double-check that doing so would seem to work on NT. */
+ #define SOCKET_ERROR -1
+ #define INVALID_SOCKET -1
+#endif
+
#include <stdio.h>
#include <assert.h>
#include "cvs.h"
#include "rcmd.h"
-void
-init_winsock ()
-{
- WSADATA data;
-
- if (WSAStartup (MAKEWORD (1, 1), &data))
- {
- fprintf (stderr, "cvs: unable to initialize winsock\n");
- exit (1);
- }
-}
-
/* The rest of this file contains the rcmd() code, which is used
only by START_SERVER. The idea for a long-term direction is
that this code can be made portable (by using SOCK_ERRNO and
@@ -60,6 +78,8 @@ resolve_address (const char **ahost, struct sockaddr_in *sai)
}
error (1, 0, "no such host %s", *ahost);
+ /* Shut up gcc -Wall. */
+ return 1;
}
static SOCKET
@@ -113,6 +133,8 @@ bind_and_connect (struct sockaddr_in *server_sai)
}
error (1, 0, "cannot find free port");
+ /* Shut up gcc -Wall. */
+ return s;
}
static int
diff --git a/gnu/usr.bin/cvs/windows-NT/win32.c b/gnu/usr.bin/cvs/windows-NT/win32.c
index 57c81ee8308..35710ef63c6 100644
--- a/gnu/usr.bin/cvs/windows-NT/win32.c
+++ b/gnu/usr.bin/cvs/windows-NT/win32.c
@@ -13,6 +13,18 @@
#include <config.h>
+void
+init_winsock ()
+{
+ WSADATA data;
+
+ if (WSAStartup (MAKEWORD (1, 1), &data))
+ {
+ fprintf (stderr, "cvs: unable to initialize winsock\n");
+ exit (1);
+ }
+}
+
unsigned sleep(unsigned seconds)
{
Sleep(1000*seconds);