summaryrefslogtreecommitdiff
path: root/gnu/usr.bin/cvs
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/usr.bin/cvs')
-rw-r--r--gnu/usr.bin/cvs/BUGS2
-rw-r--r--gnu/usr.bin/cvs/ChangeLog84
-rw-r--r--gnu/usr.bin/cvs/HACKING107
-rw-r--r--gnu/usr.bin/cvs/INSTALL1
-rw-r--r--gnu/usr.bin/cvs/TESTS8
-rw-r--r--gnu/usr.bin/cvs/cvsnt.dsp1148
-rw-r--r--gnu/usr.bin/cvs/cvsnt.dsw59
-rw-r--r--gnu/usr.bin/cvs/cvsnt.mak714
-rw-r--r--gnu/usr.bin/cvs/diff/.cvsignore3
-rw-r--r--gnu/usr.bin/cvs/diff/ChangeLog35
-rw-r--r--gnu/usr.bin/cvs/diff/diff.c3
-rw-r--r--gnu/usr.bin/cvs/diff/diff3.c10
-rw-r--r--gnu/usr.bin/cvs/diff/libdiff.dsp134
-rw-r--r--gnu/usr.bin/cvs/doc/ChangeLog163
-rw-r--r--gnu/usr.bin/cvs/doc/cvsclient.texi56
-rw-r--r--gnu/usr.bin/cvs/emx/ChangeLog9
-rw-r--r--gnu/usr.bin/cvs/emx/Makefile.in2
-rw-r--r--gnu/usr.bin/cvs/emx/options.h17
-rw-r--r--gnu/usr.bin/cvs/lib/ChangeLog4
-rw-r--r--gnu/usr.bin/cvs/lib/getopt.h12
-rw-r--r--gnu/usr.bin/cvs/os2/ChangeLog6
-rw-r--r--gnu/usr.bin/cvs/os2/options.h36
-rw-r--r--gnu/usr.bin/cvs/src/ChangeLog449
-rw-r--r--gnu/usr.bin/cvs/src/add.c73
-rw-r--r--gnu/usr.bin/cvs/src/fileattr.h20
-rw-r--r--gnu/usr.bin/cvs/src/run.c18
-rw-r--r--gnu/usr.bin/cvs/src/sanity.sh1471
-rw-r--r--gnu/usr.bin/cvs/src/status.c71
-rw-r--r--gnu/usr.bin/cvs/src/tag.c7
-rw-r--r--gnu/usr.bin/cvs/src/version.c2
-rw-r--r--gnu/usr.bin/cvs/vms/ChangeLog6
-rw-r--r--gnu/usr.bin/cvs/vms/options.h36
-rw-r--r--gnu/usr.bin/cvs/windows-NT/ChangeLog6
-rw-r--r--gnu/usr.bin/cvs/windows-NT/SCC/ChangeLog4
-rw-r--r--gnu/usr.bin/cvs/windows-NT/SCC/Makefile.in2
-rw-r--r--gnu/usr.bin/cvs/windows-NT/SCC/SCC.dsp108
-rw-r--r--gnu/usr.bin/cvs/windows-NT/options.h36
-rw-r--r--gnu/usr.bin/cvs/zlib/.cvsignore5
-rw-r--r--gnu/usr.bin/cvs/zlib/ChangeLog23
-rw-r--r--gnu/usr.bin/cvs/zlib/Makefile.in2
-rw-r--r--gnu/usr.bin/cvs/zlib/zlib.dsp146
41 files changed, 4342 insertions, 756 deletions
diff --git a/gnu/usr.bin/cvs/BUGS b/gnu/usr.bin/cvs/BUGS
index 713d4c05882..3609af4cd39 100644
--- a/gnu/usr.bin/cvs/BUGS
+++ b/gnu/usr.bin/cvs/BUGS
@@ -95,8 +95,6 @@ file's description.
rtag does not recognize the -D option. It is documented to do so and I've
tested the use of -D with cvs update and cvs diff and it works fine there.
-* Defining RELATIVE_REPOS is said to not work with client/server CVS.
-
* From: "Charles M. Hannum" <mycroft@ai.mit.edu>
To: info-cvs@prep.ai.mit.edu
Subject: Still one more bug
diff --git a/gnu/usr.bin/cvs/ChangeLog b/gnu/usr.bin/cvs/ChangeLog
index cc0da9ea698..8a97c2f60bd 100644
--- a/gnu/usr.bin/cvs/ChangeLog
+++ b/gnu/usr.bin/cvs/ChangeLog
@@ -1,3 +1,87 @@
+1999-07-12 Larry Jones <larry.jones@sdrc.com>
+
+ * TESTS: Remove suspicion that setting LC_COLLATE has fixed the
+ problem with Solaris sort -- people are still reporting it.
+
+1999-05-17 Jim Kingdon <http://www.cyclic.com>
+
+ (These changes were run by devel-cvs; feedback was "They look fine"
+ from Jim Meyering and "I concur" from Noel Cragg).
+ * HACKING (Submitting patches): Rewrite parts to try to sketch out
+ a process which is less centralized and hopefully describes the
+ status quo better (for example, I've mostly removed the word
+ "submit" because it describes a process of sending your patch to a
+ central authority rather than to whoever wants it). Update to
+ reflect some of the current practices/thinking regarding quality
+ and other matters. Try to be more concise where feasible.
+
+1999-05-13 Jim Kingdon <http://www.cyclic.com>
+
+ * BUGS: Remove item about RELATIVE_REPOS not working with
+ client/server CVS; it must have been fixed because the testsuite
+ is working fine with RELATIVE_REPOS.
+
+1999-05-07 Jim Kingdon <http://www.cyclic.com>
+
+ * TESTS: Add note about send-expect style interaction.
+
+1999-04-26 Jim Kingdon
+
+ * cvsnt.mak: Revert to the version before today's changes
+ (modulo one "because the IDE feels like it" change). I
+ couldn't get O'Connor's cvsnt.mak to work with MSVC 4.0 at
+ all (I tried the IDE, which tried to wrap the makefile and
+ wouldn't build even with the wrap, and the command line NMAKE).
+ * .cvsignore: Add back cvsnt.mdp WinDebug WinRel, accordingly.
+
+1999-04-26 Jim Kingdon <http://www.cyclic.com>
+
+ * Makefile.in (DISTFILES): Add cvsnt.dsw.
+
+1999-04-26 (submitted 1999-03-24) John O'Connor <john@shore.net>
+
+ * cvsnt.dsw: new file. The workspace file used by MSVC 5+ to
+ manage multiple projects. It contains three projects: cvsnt,
+ zlib and diff.
+
+ * cvsnt.dsp: Fixed problem where CVS wouldn't build because of
+ file name conflicts. Removed all the files from zlib and diff
+ directories and moved to separate project files.
+
+ * cvsnt.mak: Re-generated due to the changes in cvsnt.dsp.
+
+ * .cvsignore: Removed un-used entries related to MSVC. Added
+ entries to cover all files generated by the NT build: *.ncb,
+ *.opt, *.plg, Debug and Release.
+
+1999-04-09 Jim Kingdon <http://www.cyclic.com>
+
+ * HACKING: Add a sentence about sending patches somewhere other
+ than bug-cvs, while still granting permission for people to use
+ them under the GPL.
+
+1999-04-08 Jim Kingdon <http://www.cyclic.com>
+
+ * configure.in (AC_OUTPUT): Remove macintosh/Makefile (overlooked
+ in change of 1999-02-26; thanks to Erik Bertelsen for reporting it).
+ * configure: Regenerated.
+
+1999-02-26 Jim Kingdon <http://www.cyclic.com>
+
+ * macintosh: Remove this subdirectory and all its contents. It
+ contained MacCVS 2.x, but pretty much everyone has moved on to
+ MacCVS 3.x, MacCVS Pro, or MacCVSClient.
+ * Makefile.in (SUBDIRS): Remove macintosh.
+
+1999-02-25 Mehul N. Sanghvi (and Jim Kingdon)
+
+ * INSTALL: Add MkLinux on PowerPC.
+
+1999-02-18 Jim Kingdon
+
+ * cvsnt.mak: Remove vasprintf. Plus of course the usual
+ "because the IDE feels like it" changes.
+
1999-02-09 Jim Kingdon <http://www.cyclic.com>
* configure.in (AC_REPLACE_FUNCS): Remove vasprintf; see
diff --git a/gnu/usr.bin/cvs/HACKING b/gnu/usr.bin/cvs/HACKING
index 4c49228b4f5..aa6029dd5bd 100644
--- a/gnu/usr.bin/cvs/HACKING
+++ b/gnu/usr.bin/cvs/HACKING
@@ -98,32 +98,25 @@ Filenames for .c and .h files may contain _ but should not contain -
(the latter causes Visual C++ 2.1 to create makefiles which Visual C++
4.0 cannot use).
-* Submitting patches (strategy)
+* Writing patches (strategy)
Only some kinds of changes are suitable for inclusion in the
"official" CVS. Bugfixes, where CVS's behavior contradicts the
documentation and/or expectations that everyone agrees on, should be
OK (strategically). For features, the desirable attributes are that
the need is clear and that they fit nicely into the architecture of
-CVS.
-
-However, if there is reason to think that a change would significantly
-inconvenience any significant body of CVS users, or would be
-controversial for other reasons, then the design should be re-thought.
-Go back to the requirements (writing documentation might help, if you
-write the documentation to explain why one would use the feature not
-just what the feature does). Think about whether there is a behavior
-which works in both your situation and the other situations. Make a
-list of the issues (for example, submit a comment or documentation
-change). Ask your coworkers, a newsgroup, or a mailing list, and see
-what other people think. Distribute some experimental patches outside
-the "official" CVS and see what people think. By this process, the
-intention is that once-controversial changes can be refined to the
-point where they are relatively uncontroversial before they are
-actually checked in to the "official" CVS. Features like zlib,
-encryption, and others have benefitted from this process in the past
-by being mentioned in the documentation and/or discussed, before an
-implementation was checked in.
+CVS. Is it worth the cost (in terms of complexity or any other
+tradeoffs involved)? Are there better solutions?
+
+If the design is not yet clear (which is true of most features), then
+the design is likely to benefit from more work and community input.
+Make a list of issues, or write documentation including rationales for
+how one would use the feature. Discuss it with coworkers, a
+newsgroup, or a mailing list, and see what other people think.
+Distribute some experimental patches and see what people think. The
+intention is arrive at some kind of rough community consensus before
+changing the "official" CVS. Features like zlib, encryption, and
+the RCS library have benefitted from this process in the past.
If longstanding CVS behavior, that people may be relying on, is
clearly deficient, it can be changed, but only slowly and carefully.
@@ -131,37 +124,49 @@ For example, the global -q option was introduced in CVS 1.3 but the
command -q options, which the global -q replaced, were not removed
until CVS 1.6.
-* Submitting patches (tactics)
-
-Please include a ChangeLog entry (see the GNU coding standards for
-information on writing one) with patches. Include a description of
-what the patch does (sometimes the ChangeLog entry and/or comments in
-the code are appropriate for this, but not always)--patches should not
-be checked in unless there is some reason for them, and the
-description may be helpful if there is a better way to solve the
-problem. In addition to the ChangeLog entry, there should be a change
-to the NEWS file and cvs.texinfo, if the change is a user-visible
-change worth mentioning.
-
-It is nice to have a test case (see TESTS), especially for fixes which
-involve subtle behaviors or twisted sections of the code.
-
-If you solve several unrelated problems, submit a separate
-patch for each one. Patches should be tested before submission. Use
-context diffs or unidiffs for patches.
-
-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.
-Submit changes to bug-cvs@gnu.org.
-
-Generally speaking if you follow the guidelines in this file you can
-expect a yes or no answer about whether your patch is accepted. But
-even in this case there is no guarantee because wading through a bunch
-of submissions can be time consuming, and noone has volunteered to
-offer any such guarantee. If you don't receive an answer one way or
-another within a month, feel free to ask what the status is. You can,
-if you wish, distribute your patch on mailing lists or newsgroups, if
-you want to make it available before it gets merged.
+* Writing patches (tactics)
+
+When you first distribute a patch it may be suitable to just put forth
+a rough patch, or even just an idea. But before the end of the
+process the following should exist:
+
+ - ChangeLog entry (see the GNU coding standards for details).
+
+ - Changes to the NEWS file and cvs.texinfo, if the change is a
+ user-visible change worth mentioning.
+
+ - Somewhere, a description of what the patch fixes (often in
+ comments in the code, or maybe the ChangeLog or documentation).
+
+ - Most of the time, a test case (see TESTS). It can be quite
+ frustrating to fix a bug only to see it reappear later, and adding
+ the case to the testsuite, where feasible, solves this and other
+ problems.
+
+If you solve several unrelated problems, it is generally easier to
+consider the desirability of the changes if there is a separate patch
+for each issue. Use context diffs or unidiffs for patches.
+
+Include words like "I grant permission to distribute this patch under
+the terms of the GNU Public License" with your patch. By sending a
+patch to bug-cvs@gnu.org, you implicitly grant this permission.
+
+Submitting a patch to bug-cvs is the way to reach the people who have
+signed up to receive such submissions (including CVS developers), but
+there may or may not be much (or any) response. If you want to pursue
+the matter further, you are probably best off working with the larger
+CVS community. Distribute your patch as widely as desired (mailing
+lists, newsgroups, web sites, whatever). Write a web page or other
+information describing what the patch is for. It is neither practical
+nor desirable for all/most contributions to be distributed through the
+"official" (whatever that means) mechanisms of CVS releases and CVS
+developers. Now, the "official" mechanisms do try to incorporate
+those patches which seem most suitable for widespread usage, together
+with test cases and documentation. So if a patch becomes sufficiently
+popular in the CVS community, it is likely that one of the CVS
+developers will eventually try to do something with it. But dealing
+with the CVS developers may be the last step of the process rather
+than the first.
* What is the schedule for the next release?
diff --git a/gnu/usr.bin/cvs/INSTALL b/gnu/usr.bin/cvs/INSTALL
index 27acf8203be..2400f07640c 100644
--- a/gnu/usr.bin/cvs/INSTALL
+++ b/gnu/usr.bin/cvs/INSTALL
@@ -175,6 +175,7 @@ PowerPC or RS/6000:
IBM RS/6000 running AIX 4.1 (1.9)
Lynx 2.3.1 120495 (1.6.86) (footnote 9)
Lynx 2.5 (1.9) (footnote 10)
+ MkLinux DR3 GENERIC #6 (1.10.5.1) (presumably LinuxPPC too)
SPARC:
Sun SPARC running SunOS 4.1.x (1.10)
Sun SPARCstation 10 running Solaris 2.3 using gcc and cc (about 1.4A2)
diff --git a/gnu/usr.bin/cvs/TESTS b/gnu/usr.bin/cvs/TESTS
index b3fe5c288c9..c27f9701909 100644
--- a/gnu/usr.bin/cvs/TESTS
+++ b/gnu/usr.bin/cvs/TESTS
@@ -22,8 +22,7 @@ require expr.
With CVS 1.10 people also had trouble with the Solaris sort program
not behaving the way that the testsuite expects (with Solaris, lines
-starting with tabs sort before blank lines). I suspect this is fixed
-now that the testsuite sets LC_COLLATE.
+starting with tabs sort before blank lines).
If there is some unexpected output, that is a failure which can be
somewhat hard to track down. Finding out which test is producing the
@@ -146,3 +145,8 @@ workaround).
b. pass stdin to the program under test (sanity.sh, again, handles
this by bypassing dotest).
+
+c. have a send-expect type dialog with the program under test
+ (e.g. see server-7 or pserver-4 which want to talk the CVS
+ protocol, or the many tests which need to answer the prompt of "cvs
+ release", e.g. deep-5).
diff --git a/gnu/usr.bin/cvs/cvsnt.dsp b/gnu/usr.bin/cvs/cvsnt.dsp
index 4af92c05888..7deb03e4b77 100644
--- a/gnu/usr.bin/cvs/cvsnt.dsp
+++ b/gnu/usr.bin/cvs/cvsnt.dsp
@@ -31,37 +31,40 @@ RSC=rc.exe
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir ".\WinRel"
-# PROP BASE Intermediate_Dir ".\WinRel"
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ".\WinRel"
-# PROP Intermediate_Dir ".\WinRel"
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /FR /YX /c
-# ADD CPP /nologo /W3 /GX /Ob1 /I ".\windows-NT" /I ".\lib" /I ".\src" /I ".\zlib" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "HAVE_CONFIG_H" /Fr /YX /FD /c
-# SUBTRACT CPP /WX
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# ADD BASE CPP /nologo /W3 /GX /Ob1 /I ".\windows-NT" /I ".\lib" /I ".\src" /I ".\zlib" /I ".\diff" /D "NDEBUG" /D "WANT_WIN_COMPILER_VERSION" /D "_CONSOLE" /D "HAVE_CONFIG_H" /D "WIN32" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /Ob1 /I ".\windows-NT" /I ".\lib" /I ".\src" /I ".\zlib" /I ".\diff" /D "NDEBUG" /D "WANT_WIN_COMPILER_VERSION" /D "_CONSOLE" /D "HAVE_CONFIG_H" /D "WIN32" /YX /FD /c
+# SUBTRACT BASE CPP /WX /Fr
+# SUBTRACT CPP /WX /Fr
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 advapi32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 wsock32.lib 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 /out:".\WinRel\cvs.exe"
+# ADD BASE LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib zlib\Release\zlib.lib diff\Release\libdiff.lib /nologo /subsystem:console /machine:I386 /out:".\Release\cvs.exe"
+# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib zlib\Release\zlib.lib diff\Release\libdiff.lib /nologo /subsystem:console /machine:I386 /out:".\Release\cvs.exe"
!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir ".\WinDebug"
-# PROP BASE Intermediate_Dir ".\WinDebug"
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\WinDebug"
-# PROP Intermediate_Dir ".\WinDebug"
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
-# ADD BASE CPP /nologo /W3 /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FR /YX /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /Ob1 /I ".\windows-NT" /I ".\lib" /I ".\src" /I ".\zlib" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "HAVE_CONFIG_H" /YX /FD /c
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Ob1 /I ".\windows-NT" /I ".\lib" /I ".\src" /I ".\zlib" /I ".\diff" /D "_DEBUG" /D "_CONSOLE" /D "HAVE_CONFIG_H" /D "WIN32" /D "WANT_WIN_COMPILER_VERSION" /YX /FD /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /Ob1 /I ".\windows-NT" /I ".\lib" /I ".\src" /I ".\zlib" /I ".\diff" /D "_DEBUG" /D "_CONSOLE" /D "HAVE_CONFIG_H" /D "WIN32" /D "WANT_WIN_COMPILER_VERSION" /YX /FD /c
+# SUBTRACT BASE CPP /Fr
# SUBTRACT CPP /Fr
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
@@ -69,8 +72,10 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 advapi32.lib /nologo /subsystem:console /debug /machine:I386
-# ADD LINK32 wsock32.lib 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 /out:".\WinDebug\cvs.exe"
+# ADD BASE LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib zlib\Debug\zlib.lib diff\Debug\libdiff.lib /nologo /subsystem:console /pdb:".\Debug\cvs.pdb" /debug /machine:I386 /out:".\Debug\cvs.exe"
+# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib zlib\Debug\zlib.lib diff\Debug\libdiff.lib /nologo /subsystem:console /pdb:".\Debug\cvs.pdb" /debug /machine:I386 /out:".\Debug\cvs.exe"
+# SUBTRACT BASE LINK32 /pdb:none
+# SUBTRACT LINK32 /pdb:none
!ENDIF
@@ -84,102 +89,164 @@ LINK32=link.exe
# Begin Source File
SOURCE=.\src\add.c
-# End Source File
-# Begin Source File
-SOURCE=.\zlib\adler32.c
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\admin.c
-# End Source File
-# Begin Source File
-SOURCE=.\diff\analyze.c
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\lib\argmatch.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\buffer.c
-# End Source File
-# Begin Source File
-SOURCE=.\src\ChangeLog
-# End Source File
-# Begin Source File
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
-SOURCE=".\windows-NT\ChangeLog"
# End Source File
# Begin Source File
SOURCE=.\src\checkin.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\checkout.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\classify.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\client.c
-# End Source File
-# Begin Source File
-SOURCE=.\diff\cmpbuf.c
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\commit.c
-# End Source File
-# Begin Source File
-SOURCE=.\zlib\compress.c
-# End Source File
-# Begin Source File
+!IF "$(CFG)" == "cvsnt - Win32 Release"
-SOURCE=.\diff\context.c
-# End Source File
-# Begin Source File
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
-SOURCE=.\zlib\crc32.c
# End Source File
# Begin Source File
SOURCE=.\src\create_adm.c
-# End Source File
-# Begin Source File
-SOURCE=.\src\cvsrc.c
-# End Source File
-# Begin Source File
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
-SOURCE=.\zlib\deflate.c
# End Source File
# Begin Source File
-SOURCE=.\diff\diff.c
+SOURCE=.\src\cvsrc.c
!IF "$(CFG)" == "cvsnt - Win32 Release"
-!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
-
-# PROP Intermediate_Dir ".\diff"
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build
-InputPath=.\diff\diff.c
+# PROP Intermediate_Dir "Release"
-"diff\diff.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- cl /MLd /W3 /Gm /GX /Zi /Ob1 /I ".\diff" /I ".\lib" /I ".\src" /I\
- ".\windows-NT" /D "HAVE_CONFIG_H" /Fp".\diff" /YX /Fo".\diff\diff.obj"\
- /Fd".\diff" /FD /c diff\diff.c
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
-# End Custom Build
+# PROP Intermediate_Dir "Debug"
!ENDIF
@@ -190,64 +257,179 @@ SOURCE=.\src\diff.c
!IF "$(CFG)" == "cvsnt - Win32 Release"
+# PROP Intermediate_Dir "Release"
+
!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
-# SUBTRACT CPP /nologo
+# PROP Intermediate_Dir "Debug"
!ENDIF
# End Source File
# Begin Source File
-SOURCE=.\diff\diff3.c
-# End Source File
-# Begin Source File
+SOURCE=.\src\edit.c
-SOURCE=.\diff\dir.c
-# End Source File
-# Begin Source File
+!IF "$(CFG)" == "cvsnt - Win32 Release"
-SOURCE=.\diff\ed.c
-# End Source File
-# Begin Source File
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
-SOURCE=.\src\edit.c
# End Source File
# Begin Source File
SOURCE=.\src\entries.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\error.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\expand_path.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\fileattr.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=".\windows-NT\filesubr.c"
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\find_names.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\lib\fncase.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\lib\fnmatch.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\lib\getdate.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\lib\getline.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
@@ -259,79 +441,138 @@ SOURCE=.\lib\getopt1.c
# End Source File
# Begin Source File
-SOURCE=.\lib\getwd.c
-# End Source File
-# Begin Source File
+SOURCE=.\src\hash.c
-SOURCE=.\zlib\gzio.c
-# End Source File
-# Begin Source File
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
-SOURCE=.\src\hash.c
# End Source File
# Begin Source File
SOURCE=.\src\history.c
-# End Source File
-# Begin Source File
-SOURCE=.\diff\ifdef.c
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\ignore.c
-# End Source File
-# Begin Source File
-SOURCE=.\src\import.c
-# End Source File
-# Begin Source File
+!IF "$(CFG)" == "cvsnt - Win32 Release"
-SOURCE=.\zlib\infblock.c
-# End Source File
-# Begin Source File
+# PROP Intermediate_Dir "Release"
-SOURCE=.\zlib\infcodes.c
-# End Source File
-# Begin Source File
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
-SOURCE=.\zlib\inffast.c
-# End Source File
-# Begin Source File
+# PROP Intermediate_Dir "Debug"
-SOURCE=.\zlib\inflate.c
-# End Source File
-# Begin Source File
+!ENDIF
-SOURCE=.\zlib\inftrees.c
# End Source File
# Begin Source File
-SOURCE=.\zlib\infutil.c
-# End Source File
-# Begin Source File
+SOURCE=.\src\import.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
-SOURCE=.\diff\io.c
# End Source File
# Begin Source File
SOURCE=.\src\lock.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\log.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\login.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\logmsg.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\main.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
@@ -340,38 +581,122 @@ SOURCE=.\lib\md5.c
# Begin Source File
SOURCE=".\windows-NT\mkdir.c"
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\mkmodules.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\modules.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\myndbm.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=".\windows-NT\ndir.c"
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\no_diff.c
-# End Source File
-# Begin Source File
-SOURCE=.\diff\normal.c
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\parseinfo.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\patch.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
@@ -380,46 +705,167 @@ SOURCE=".\windows-NT\pwd.c"
# Begin Source File
SOURCE=".\windows-NT\rcmd.c"
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\rcs.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\rcscmds.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\recurse.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\lib\regex.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\release.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\remove.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\repos.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\root.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\rtag.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=".\windows-NT\run.c"
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
@@ -428,18 +874,47 @@ SOURCE=.\lib\savecwd.c
# Begin Source File
SOURCE=.\src\scramble.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\server.c
-# End Source File
-# Begin Source File
-SOURCE=.\diff\side.c
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\lib\sighandle.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
@@ -448,69 +923,108 @@ SOURCE=".\windows-NT\sockerror.c"
# Begin Source File
SOURCE=".\windows-NT\startserver.c"
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\status.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
-SOURCE=".\windows-NT\stripslash.c"
+SOURCE=.\lib\stripslash.c
# End Source File
# Begin Source File
SOURCE=.\src\subr.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\tag.c
-# End Source File
-# Begin Source File
-SOURCE=.\zlib\trees.c
-# End Source File
-# Begin Source File
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
-SOURCE=.\zlib\uncompr.c
# End Source File
# Begin Source File
SOURCE=.\src\update.c
-# End Source File
-# Begin Source File
-SOURCE=.\diff\util.c
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\lib\valloc.c
-# End Source File
-# Begin Source File
-SOURCE=.\lib\vasprintf.c
-# End Source File
-# Begin Source File
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
-SOURCE=.\src\vers_ts.c
# End Source File
# Begin Source File
-SOURCE=.\diff\version.c
+SOURCE=.\src\vers_ts.c
!IF "$(CFG)" == "cvsnt - Win32 Release"
-!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
-
-# PROP Intermediate_Dir ".\diff"
-# PROP Ignore_Default_Tool 1
-# Begin Custom Build
-InputPath=.\diff\version.c
+# PROP Intermediate_Dir "Release"
-"diff\version.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
- cl /MLd /W3 /Gm /GX /Zi /Ob1 /Fp".\diff\" /YX /Fo".\diff\" /Fd".\diff\" /FD /c\
- diff/version.c
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
-# End Custom Build
+# PROP Intermediate_Dir "Debug"
!ENDIF
@@ -518,6 +1032,17 @@ InputPath=.\diff\version.c
# Begin Source File
SOURCE=.\src\version.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
@@ -526,18 +1051,62 @@ SOURCE=".\windows-NT\waitpid.c"
# Begin Source File
SOURCE=.\src\watch.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=".\windows-NT\win32.c"
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\wrapper.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\lib\xgetwd.c
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
@@ -546,10 +1115,17 @@ SOURCE=.\lib\yesno.c
# Begin Source File
SOURCE=.\src\zlib.c
-# End Source File
-# Begin Source File
-SOURCE=.\zlib\zutil.c
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# End Group
# Begin Group "Header Files"
@@ -558,123 +1134,393 @@ SOURCE=.\zlib\zutil.c
# Begin Source File
SOURCE=.\src\buffer.h
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\client.h
-# End Source File
-# Begin Source File
-SOURCE=.\diff\cmpbuf.h
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\zlib\deflate.h
-# End Source File
-# Begin Source File
-SOURCE=.\diff\diff.h
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\edit.h
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\fileattr.h
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\lib\fnmatch.h
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\lib\getline.h
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\lib\getopt.h
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\hash.h
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\zlib\infblock.h
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\zlib\infcodes.h
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\zlib\inffast.h
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\zlib\inftrees.h
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\zlib\infutil.h
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\lib\md5.h
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\myndbm.h
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=".\windows-NT\ndir.h"
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=".\windows-NT\pwd.h"
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=".\windows-NT\rcmd.h"
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\rcs.h
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\lib\regex.h
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\lib\savecwd.h
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\server.h
-# End Source File
-# Begin Source File
-SOURCE=.\diff\system.h
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\update.h
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\src\watch.h
+
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
# End Source File
# Begin Source File
SOURCE=.\zlib\zutil.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
+!IF "$(CFG)" == "cvsnt - Win32 Release"
+
+# PROP Intermediate_Dir "Release"
+
+!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug"
+
+# PROP Intermediate_Dir "Debug"
+
+!ENDIF
+
+# End Source File
# End Group
# End Target
# End Project
diff --git a/gnu/usr.bin/cvs/cvsnt.dsw b/gnu/usr.bin/cvs/cvsnt.dsw
new file mode 100644
index 00000000000..42e2022a8c7
--- /dev/null
+++ b/gnu/usr.bin/cvs/cvsnt.dsw
@@ -0,0 +1,59 @@
+Microsoft Developer Studio Workspace File, Format Version 5.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "cvsnt"=.\cvsnt.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name libdiff
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name zlib
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "libdiff"=.\diff\libdiff.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "zlib"=.\zlib\zlib.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/gnu/usr.bin/cvs/cvsnt.mak b/gnu/usr.bin/cvs/cvsnt.mak
index 08ea6b65510..75675bc5a10 100644
--- a/gnu/usr.bin/cvs/cvsnt.mak
+++ b/gnu/usr.bin/cvs/cvsnt.mak
@@ -31,8 +31,8 @@ NULL=nul
################################################################################
# Begin Project
# PROP Target_Last_Scanned "cvsnt - Win32 Debug"
-CPP=cl.exe
RSC=rc.exe
+CPP=cl.exe
!IF "$(CFG)" == "cvsnt - Win32 Release"
@@ -51,110 +51,109 @@ ALL : "$(OUTDIR)\cvs.exe"
CLEAN :
-@erase ".\WinRel\cvs.exe"
+ -@erase ".\WinRel\inflate.obj"
+ -@erase ".\WinRel\trees.obj"
+ -@erase ".\WinRel\getline.obj"
+ -@erase ".\WinRel\edit.obj"
-@erase ".\WinRel\zutil.obj"
- -@erase ".\WinRel\buffer.obj"
- -@erase ".\WinRel\admin.obj"
- -@erase ".\WinRel\subr.obj"
- -@erase ".\WinRel\diff3.obj"
- -@erase ".\WinRel\2\version.obj"
+ -@erase ".\WinRel\ifdef.obj"
+ -@erase ".\WinRel\create_adm.obj"
+ -@erase ".\WinRel\zlib.obj"
+ -@erase ".\WinRel\main.obj"
+ -@erase ".\WinRel\cmpbuf.obj"
+ -@erase ".\WinRel\crc32.obj"
+ -@erase ".\WinRel\infcodes.obj"
+ -@erase ".\WinRel\myndbm.obj"
-@erase ".\WinRel\savecwd.obj"
- -@erase ".\WinRel\getopt.obj"
- -@erase ".\WinRel\expand_path.obj"
- -@erase ".\WinRel\login.obj"
+ -@erase ".\WinRel\client.obj"
+ -@erase ".\WinRel\1\diff.obj"
+ -@erase ".\WinRel\scramble.obj"
+ -@erase ".\WinRel\filesubr.obj"
-@erase ".\WinRel\infutil.obj"
- -@erase ".\WinRel\classify.obj"
+ -@erase ".\WinRel\gzio.obj"
+ -@erase ".\WinRel\fnmatch.obj"
+ -@erase ".\WinRel\side.obj"
+ -@erase ".\WinRel\win32.obj"
-@erase ".\WinRel\inffast.obj"
- -@erase ".\WinRel\create_adm.obj"
- -@erase ".\WinRel\dir.obj"
- -@erase ".\WinRel\mkmodules.obj"
- -@erase ".\WinRel\normal.obj"
- -@erase ".\WinRel\yesno.obj"
- -@erase ".\WinRel\md5.obj"
- -@erase ".\WinRel\fileattr.obj"
- -@erase ".\WinRel\logmsg.obj"
- -@erase ".\WinRel\sighandle.obj"
- -@erase ".\WinRel\edit.obj"
+ -@erase ".\WinRel\startserver.obj"
+ -@erase ".\WinRel\ignore.obj"
+ -@erase ".\WinRel\expand_path.obj"
+ -@erase ".\WinRel\repos.obj"
+ -@erase ".\WinRel\rtag.obj"
+ -@erase ".\WinRel\valloc.obj"
+ -@erase ".\WinRel\cvsrc.obj"
+ -@erase ".\WinRel\lock.obj"
+ -@erase ".\WinRel\log.obj"
+ -@erase ".\WinRel\ed.obj"
-@erase ".\WinRel\deflate.obj"
-@erase ".\WinRel\analyze.obj"
- -@erase ".\WinRel\regex.obj"
- -@erase ".\WinRel\tag.obj"
- -@erase ".\WinRel\zlib.obj"
- -@erase ".\WinRel\pwd.obj"
- -@erase ".\WinRel\main.obj"
- -@erase ".\WinRel\xgetwd.obj"
+ -@erase ".\WinRel\commit.obj"
+ -@erase ".\WinRel\patch.obj"
+ -@erase ".\WinRel\classify.obj"
+ -@erase ".\WinRel\2\diff.obj"
-@erase ".\WinRel\history.obj"
- -@erase ".\WinRel\error.obj"
+ -@erase ".\WinRel\add.obj"
+ -@erase ".\WinRel\update.obj"
+ -@erase ".\WinRel\2\version.obj"
-@erase ".\WinRel\uncompr.obj"
- -@erase ".\WinRel\io.obj"
- -@erase ".\WinRel\server.obj"
- -@erase ".\WinRel\gzio.obj"
- -@erase ".\WinRel\log.obj"
- -@erase ".\WinRel\modules.obj"
- -@erase ".\WinRel\1\version.obj"
- -@erase ".\WinRel\vasprintf.obj"
- -@erase ".\WinRel\filesubr.obj"
- -@erase ".\WinRel\rtag.obj"
- -@erase ".\WinRel\root.obj"
- -@erase ".\WinRel\fncase.obj"
- -@erase ".\WinRel\lock.obj"
- -@erase ".\WinRel\infblock.obj"
- -@erase ".\WinRel\inftrees.obj"
+ -@erase ".\WinRel\buffer.obj"
+ -@erase ".\WinRel\rcmd.obj"
-@erase ".\WinRel\find_names.obj"
- -@erase ".\WinRel\import.obj"
+ -@erase ".\WinRel\watch.obj"
+ -@erase ".\WinRel\getopt.obj"
+ -@erase ".\WinRel\checkin.obj"
+ -@erase ".\WinRel\fileattr.obj"
+ -@erase ".\WinRel\modules.obj"
+ -@erase ".\WinRel\rcs.obj"
+ -@erase ".\WinRel\admin.obj"
+ -@erase ".\WinRel\mkmodules.obj"
+ -@erase ".\WinRel\diff3.obj"
+ -@erase ".\WinRel\run.obj"
+ -@erase ".\WinRel\compress.obj"
-@erase ".\WinRel\waitpid.obj"
+ -@erase ".\WinRel\normal.obj"
-@erase ".\WinRel\adler32.obj"
- -@erase ".\WinRel\inflate.obj"
- -@erase ".\WinRel\checkout.obj"
+ -@erase ".\WinRel\login.obj"
+ -@erase ".\WinRel\sighandle.obj"
+ -@erase ".\WinRel\util.obj"
+ -@erase ".\WinRel\logmsg.obj"
+ -@erase ".\WinRel\remove.obj"
-@erase ".\WinRel\entries.obj"
- -@erase ".\WinRel\status.obj"
- -@erase ".\WinRel\sockerror.obj"
+ -@erase ".\WinRel\dir.obj"
-@erase ".\WinRel\getopt1.obj"
- -@erase ".\WinRel\ifdef.obj"
- -@erase ".\WinRel\startserver.obj"
- -@erase ".\WinRel\rcs.obj"
- -@erase ".\WinRel\rcmd.obj"
- -@erase ".\WinRel\crc32.obj"
+ -@erase ".\WinRel\md5.obj"
+ -@erase ".\WinRel\xgetwd.obj"
+ -@erase ".\WinRel\yesno.obj"
-@erase ".\WinRel\no_diff.obj"
- -@erase ".\WinRel\argmatch.obj"
- -@erase ".\WinRel\run.obj"
- -@erase ".\WinRel\fnmatch.obj"
- -@erase ".\WinRel\ndir.obj"
+ -@erase ".\WinRel\root.obj"
+ -@erase ".\WinRel\tag.obj"
+ -@erase ".\WinRel\server.obj"
+ -@erase ".\WinRel\pwd.obj"
+ -@erase ".\WinRel\parseinfo.obj"
+ -@erase ".\WinRel\infblock.obj"
+ -@erase ".\WinRel\inftrees.obj"
+ -@erase ".\WinRel\regex.obj"
+ -@erase ".\WinRel\io.obj"
+ -@erase ".\WinRel\1\version.obj"
-@erase ".\WinRel\vers_ts.obj"
- -@erase ".\WinRel\win32.obj"
- -@erase ".\WinRel\cmpbuf.obj"
- -@erase ".\WinRel\myndbm.obj"
- -@erase ".\WinRel\client.obj"
- -@erase ".\WinRel\repos.obj"
- -@erase ".\WinRel\1\diff.obj"
- -@erase ".\WinRel\util.obj"
- -@erase ".\WinRel\remove.obj"
- -@erase ".\WinRel\cvsrc.obj"
+ -@erase ".\WinRel\checkout.obj"
+ -@erase ".\WinRel\stripslash.obj"
+ -@erase ".\WinRel\error.obj"
+ -@erase ".\WinRel\hash.obj"
+ -@erase ".\WinRel\subr.obj"
+ -@erase ".\WinRel\fncase.obj"
+ -@erase ".\WinRel\import.obj"
-@erase ".\WinRel\release.obj"
-@erase ".\WinRel\recurse.obj"
- -@erase ".\WinRel\parseinfo.obj"
- -@erase ".\WinRel\compress.obj"
+ -@erase ".\WinRel\argmatch.obj"
+ -@erase ".\WinRel\sockerror.obj"
-@erase ".\WinRel\context.obj"
-@erase ".\WinRel\rcscmds.obj"
- -@erase ".\WinRel\infcodes.obj"
- -@erase ".\WinRel\ignore.obj"
-@erase ".\WinRel\wrapper.obj"
- -@erase ".\WinRel\patch.obj"
- -@erase ".\WinRel\stripslash.obj"
- -@erase ".\WinRel\scramble.obj"
- -@erase ".\WinRel\ed.obj"
- -@erase ".\WinRel\valloc.obj"
+ -@erase ".\WinRel\status.obj"
+ -@erase ".\WinRel\ndir.obj"
-@erase ".\WinRel\getdate.obj"
-@erase ".\WinRel\mkdir.obj"
- -@erase ".\WinRel\add.obj"
- -@erase ".\WinRel\watch.obj"
- -@erase ".\WinRel\checkin.obj"
- -@erase ".\WinRel\side.obj"
- -@erase ".\WinRel\commit.obj"
- -@erase ".\WinRel\trees.obj"
- -@erase ".\WinRel\getline.obj"
- -@erase ".\WinRel\2\diff.obj"
- -@erase ".\WinRel\update.obj"
- -@erase ".\WinRel\hash.obj"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
@@ -182,110 +181,109 @@ LINK32_FLAGS=wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib\
/subsystem:console /incremental:no /pdb:"$(OUTDIR)/cvs.pdb" /machine:I386\
/out:"$(OUTDIR)/cvs.exe"
LINK32_OBJS= \
+ "$(INTDIR)/inflate.obj" \
+ "$(INTDIR)/trees.obj" \
+ "$(INTDIR)/getline.obj" \
+ "$(INTDIR)/edit.obj" \
"$(INTDIR)/zutil.obj" \
- "$(INTDIR)/buffer.obj" \
- "$(INTDIR)/admin.obj" \
- "$(INTDIR)/subr.obj" \
- "$(INTDIR)/diff3.obj" \
- ".\WinRel\2\version.obj" \
+ "$(INTDIR)/ifdef.obj" \
+ "$(INTDIR)/create_adm.obj" \
+ "$(INTDIR)/zlib.obj" \
+ "$(INTDIR)/main.obj" \
+ "$(INTDIR)/cmpbuf.obj" \
+ "$(INTDIR)/crc32.obj" \
+ "$(INTDIR)/infcodes.obj" \
+ "$(INTDIR)/myndbm.obj" \
"$(INTDIR)/savecwd.obj" \
- "$(INTDIR)/getopt.obj" \
- "$(INTDIR)/expand_path.obj" \
- "$(INTDIR)/login.obj" \
+ "$(INTDIR)/client.obj" \
+ ".\WinRel\1\diff.obj" \
+ "$(INTDIR)/scramble.obj" \
+ "$(INTDIR)/filesubr.obj" \
"$(INTDIR)/infutil.obj" \
- "$(INTDIR)/classify.obj" \
+ "$(INTDIR)/gzio.obj" \
+ "$(INTDIR)/fnmatch.obj" \
+ "$(INTDIR)/side.obj" \
+ "$(INTDIR)/win32.obj" \
"$(INTDIR)/inffast.obj" \
- "$(INTDIR)/create_adm.obj" \
- "$(INTDIR)/dir.obj" \
- "$(INTDIR)/mkmodules.obj" \
- "$(INTDIR)/normal.obj" \
- "$(INTDIR)/yesno.obj" \
- "$(INTDIR)/md5.obj" \
- "$(INTDIR)/fileattr.obj" \
- "$(INTDIR)/logmsg.obj" \
- "$(INTDIR)/sighandle.obj" \
- "$(INTDIR)/edit.obj" \
+ "$(INTDIR)/startserver.obj" \
+ "$(INTDIR)/ignore.obj" \
+ "$(INTDIR)/expand_path.obj" \
+ "$(INTDIR)/repos.obj" \
+ "$(INTDIR)/rtag.obj" \
+ "$(INTDIR)/valloc.obj" \
+ "$(INTDIR)/cvsrc.obj" \
+ "$(INTDIR)/lock.obj" \
+ "$(INTDIR)/log.obj" \
+ "$(INTDIR)/ed.obj" \
"$(INTDIR)/deflate.obj" \
"$(INTDIR)/analyze.obj" \
- "$(INTDIR)/regex.obj" \
- "$(INTDIR)/tag.obj" \
- "$(INTDIR)/zlib.obj" \
- "$(INTDIR)/pwd.obj" \
- "$(INTDIR)/main.obj" \
- "$(INTDIR)/xgetwd.obj" \
+ "$(INTDIR)/commit.obj" \
+ "$(INTDIR)/patch.obj" \
+ "$(INTDIR)/classify.obj" \
+ ".\WinRel\2\diff.obj" \
"$(INTDIR)/history.obj" \
- "$(INTDIR)/error.obj" \
+ "$(INTDIR)/add.obj" \
+ "$(INTDIR)/update.obj" \
+ ".\WinRel\2\version.obj" \
"$(INTDIR)/uncompr.obj" \
- "$(INTDIR)/io.obj" \
- "$(INTDIR)/server.obj" \
- "$(INTDIR)/gzio.obj" \
- "$(INTDIR)/log.obj" \
- "$(INTDIR)/modules.obj" \
- ".\WinRel\1\version.obj" \
- "$(INTDIR)/vasprintf.obj" \
- "$(INTDIR)/filesubr.obj" \
- "$(INTDIR)/rtag.obj" \
- "$(INTDIR)/root.obj" \
- "$(INTDIR)/fncase.obj" \
- "$(INTDIR)/lock.obj" \
- "$(INTDIR)/infblock.obj" \
- "$(INTDIR)/inftrees.obj" \
+ "$(INTDIR)/buffer.obj" \
+ "$(INTDIR)/rcmd.obj" \
"$(INTDIR)/find_names.obj" \
- "$(INTDIR)/import.obj" \
+ "$(INTDIR)/watch.obj" \
+ "$(INTDIR)/getopt.obj" \
+ "$(INTDIR)/checkin.obj" \
+ "$(INTDIR)/fileattr.obj" \
+ "$(INTDIR)/modules.obj" \
+ "$(INTDIR)/rcs.obj" \
+ "$(INTDIR)/admin.obj" \
+ "$(INTDIR)/mkmodules.obj" \
+ "$(INTDIR)/diff3.obj" \
+ "$(INTDIR)/run.obj" \
+ "$(INTDIR)/compress.obj" \
"$(INTDIR)/waitpid.obj" \
+ "$(INTDIR)/normal.obj" \
"$(INTDIR)/adler32.obj" \
- "$(INTDIR)/inflate.obj" \
- "$(INTDIR)/checkout.obj" \
+ "$(INTDIR)/login.obj" \
+ "$(INTDIR)/sighandle.obj" \
+ "$(INTDIR)/util.obj" \
+ "$(INTDIR)/logmsg.obj" \
+ "$(INTDIR)/remove.obj" \
"$(INTDIR)/entries.obj" \
- "$(INTDIR)/status.obj" \
- "$(INTDIR)/sockerror.obj" \
+ "$(INTDIR)/dir.obj" \
"$(INTDIR)/getopt1.obj" \
- "$(INTDIR)/ifdef.obj" \
- "$(INTDIR)/startserver.obj" \
- "$(INTDIR)/rcs.obj" \
- "$(INTDIR)/rcmd.obj" \
- "$(INTDIR)/crc32.obj" \
+ "$(INTDIR)/md5.obj" \
+ "$(INTDIR)/xgetwd.obj" \
+ "$(INTDIR)/yesno.obj" \
"$(INTDIR)/no_diff.obj" \
- "$(INTDIR)/argmatch.obj" \
- "$(INTDIR)/run.obj" \
- "$(INTDIR)/fnmatch.obj" \
- "$(INTDIR)/ndir.obj" \
+ "$(INTDIR)/root.obj" \
+ "$(INTDIR)/tag.obj" \
+ "$(INTDIR)/server.obj" \
+ "$(INTDIR)/pwd.obj" \
+ "$(INTDIR)/parseinfo.obj" \
+ "$(INTDIR)/infblock.obj" \
+ "$(INTDIR)/inftrees.obj" \
+ "$(INTDIR)/regex.obj" \
+ "$(INTDIR)/io.obj" \
+ ".\WinRel\1\version.obj" \
"$(INTDIR)/vers_ts.obj" \
- "$(INTDIR)/win32.obj" \
- "$(INTDIR)/cmpbuf.obj" \
- "$(INTDIR)/myndbm.obj" \
- "$(INTDIR)/client.obj" \
- "$(INTDIR)/repos.obj" \
- ".\WinRel\1\diff.obj" \
- "$(INTDIR)/util.obj" \
- "$(INTDIR)/remove.obj" \
- "$(INTDIR)/cvsrc.obj" \
+ "$(INTDIR)/checkout.obj" \
+ "$(INTDIR)/stripslash.obj" \
+ "$(INTDIR)/error.obj" \
+ "$(INTDIR)/hash.obj" \
+ "$(INTDIR)/subr.obj" \
+ "$(INTDIR)/fncase.obj" \
+ "$(INTDIR)/import.obj" \
"$(INTDIR)/release.obj" \
"$(INTDIR)/recurse.obj" \
- "$(INTDIR)/parseinfo.obj" \
- "$(INTDIR)/compress.obj" \
+ "$(INTDIR)/argmatch.obj" \
+ "$(INTDIR)/sockerror.obj" \
"$(INTDIR)/context.obj" \
"$(INTDIR)/rcscmds.obj" \
- "$(INTDIR)/infcodes.obj" \
- "$(INTDIR)/ignore.obj" \
"$(INTDIR)/wrapper.obj" \
- "$(INTDIR)/patch.obj" \
- "$(INTDIR)/stripslash.obj" \
- "$(INTDIR)/scramble.obj" \
- "$(INTDIR)/ed.obj" \
- "$(INTDIR)/valloc.obj" \
+ "$(INTDIR)/status.obj" \
+ "$(INTDIR)/ndir.obj" \
"$(INTDIR)/getdate.obj" \
- "$(INTDIR)/mkdir.obj" \
- "$(INTDIR)/add.obj" \
- "$(INTDIR)/watch.obj" \
- "$(INTDIR)/checkin.obj" \
- "$(INTDIR)/side.obj" \
- "$(INTDIR)/commit.obj" \
- "$(INTDIR)/trees.obj" \
- "$(INTDIR)/getline.obj" \
- ".\WinRel\2\diff.obj" \
- "$(INTDIR)/update.obj" \
- "$(INTDIR)/hash.obj"
+ "$(INTDIR)/mkdir.obj"
"$(OUTDIR)\cvs.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
@@ -315,110 +313,109 @@ CLEAN :
-@erase ".\WinDebug\2\vc40.pdb"
-@erase ".\WinDebug\2\vc40.idb"
-@erase ".\WinDebug\cvs.exe"
+ -@erase ".\WinDebug\regex.obj"
+ -@erase ".\WinDebug\normal.obj"
+ -@erase ".\WinDebug\client.obj"
+ -@erase ".\WinDebug\util.obj"
+ -@erase ".\WinDebug\create_adm.obj"
+ -@erase ".\WinDebug\vers_ts.obj"
+ -@erase ".\WinDebug\logmsg.obj"
+ -@erase ".\WinDebug\mkmodules.obj"
+ -@erase ".\WinDebug\remove.obj"
+ -@erase ".\WinDebug\sighandle.obj"
+ -@erase ".\WinDebug\watch.obj"
+ -@erase ".\WinDebug\release.obj"
+ -@erase ".\WinDebug\server.obj"
+ -@erase ".\WinDebug\recurse.obj"
+ -@erase ".\WinDebug\checkout.obj"
+ -@erase ".\WinDebug\context.obj"
+ -@erase ".\WinDebug\rcscmds.obj"
+ -@erase ".\WinDebug\side.obj"
+ -@erase ".\WinDebug\wrapper.obj"
+ -@erase ".\WinDebug\getdate.obj"
+ -@erase ".\WinDebug\parseinfo.obj"
+ -@erase ".\WinDebug\login.obj"
+ -@erase ".\WinDebug\hash.obj"
+ -@erase ".\WinDebug\1\version.obj"
+ -@erase ".\WinDebug\subr.obj"
+ -@erase ".\WinDebug\fncase.obj"
+ -@erase ".\WinDebug\fileattr.obj"
-@erase ".\WinDebug\import.obj"
+ -@erase ".\WinDebug\getline.obj"
+ -@erase ".\WinDebug\ifdef.obj"
+ -@erase ".\WinDebug\crc32.obj"
+ -@erase ".\WinDebug\find_names.obj"
+ -@erase ".\WinDebug\status.obj"
+ -@erase ".\WinDebug\ndir.obj"
-@erase ".\WinDebug\savecwd.obj"
+ -@erase ".\WinDebug\log.obj"
+ -@erase ".\WinDebug\sockerror.obj"
-@erase ".\WinDebug\infutil.obj"
- -@erase ".\WinDebug\fnmatch.obj"
- -@erase ".\WinDebug\edit.obj"
- -@erase ".\WinDebug\status.obj"
- -@erase ".\WinDebug\io.obj"
+ -@erase ".\WinDebug\win32.obj"
-@erase ".\WinDebug\inffast.obj"
- -@erase ".\WinDebug\rcs.obj"
+ -@erase ".\WinDebug\ed.obj"
+ -@erase ".\WinDebug\edit.obj"
+ -@erase ".\WinDebug\add.obj"
+ -@erase ".\WinDebug\repos.obj"
+ -@erase ".\WinDebug\error.obj"
-@erase ".\WinDebug\zlib.obj"
-@erase ".\WinDebug\main.obj"
- -@erase ".\WinDebug\run.obj"
+ -@erase ".\WinDebug\filesubr.obj"
+ -@erase ".\WinDebug\cmpbuf.obj"
+ -@erase ".\WinDebug\myndbm.obj"
+ -@erase ".\WinDebug\xgetwd.obj"
-@erase ".\WinDebug\infblock.obj"
- -@erase ".\WinDebug\gzio.obj"
+ -@erase ".\WinDebug\inftrees.obj"
-@erase ".\WinDebug\deflate.obj"
- -@erase ".\WinDebug\startserver.obj"
- -@erase ".\WinDebug\checkout.obj"
+ -@erase ".\WinDebug\1\diff.obj"
-@erase ".\WinDebug\analyze.obj"
- -@erase ".\WinDebug\dir.obj"
- -@erase ".\WinDebug\ifdef.obj"
- -@erase ".\WinDebug\expand_path.obj"
- -@erase ".\WinDebug\cmpbuf.obj"
- -@erase ".\WinDebug\stripslash.obj"
- -@erase ".\WinDebug\myndbm.obj"
- -@erase ".\WinDebug\crc32.obj"
- -@erase ".\WinDebug\2\version.obj"
- -@erase ".\WinDebug\client.obj"
+ -@erase ".\WinDebug\gzio.obj"
+ -@erase ".\WinDebug\patch.obj"
+ -@erase ".\WinDebug\rcs.obj"
-@erase ".\WinDebug\history.obj"
- -@erase ".\WinDebug\1\diff.obj"
+ -@erase ".\WinDebug\run.obj"
+ -@erase ".\WinDebug\mkdir.obj"
+ -@erase ".\WinDebug\uncompr.obj"
+ -@erase ".\WinDebug\ignore.obj"
-@erase ".\WinDebug\rtag.obj"
-@erase ".\WinDebug\root.obj"
- -@erase ".\WinDebug\uncompr.obj"
- -@erase ".\WinDebug\lock.obj"
- -@erase ".\WinDebug\argmatch.obj"
+ -@erase ".\WinDebug\trees.obj"
-@erase ".\WinDebug\checkin.obj"
- -@erase ".\WinDebug\win32.obj"
- -@erase ".\WinDebug\modules.obj"
- -@erase ".\WinDebug\ignore.obj"
- -@erase ".\WinDebug\mkmodules.obj"
- -@erase ".\WinDebug\repos.obj"
-@erase ".\WinDebug\valloc.obj"
- -@erase ".\WinDebug\rcmd.obj"
- -@erase ".\WinDebug\cvsrc.obj"
- -@erase ".\WinDebug\sighandle.obj"
- -@erase ".\WinDebug\waitpid.obj"
- -@erase ".\WinDebug\adler32.obj"
- -@erase ".\WinDebug\commit.obj"
- -@erase ".\WinDebug\patch.obj"
- -@erase ".\WinDebug\2\diff.obj"
- -@erase ".\WinDebug\entries.obj"
- -@erase ".\WinDebug\create_adm.obj"
- -@erase ".\WinDebug\update.obj"
- -@erase ".\WinDebug\getopt1.obj"
- -@erase ".\WinDebug\infcodes.obj"
- -@erase ".\WinDebug\ndir.obj"
- -@erase ".\WinDebug\buffer.obj"
- -@erase ".\WinDebug\mkdir.obj"
- -@erase ".\WinDebug\scramble.obj"
- -@erase ".\WinDebug\filesubr.obj"
- -@erase ".\WinDebug\watch.obj"
- -@erase ".\WinDebug\getopt.obj"
- -@erase ".\WinDebug\no_diff.obj"
- -@erase ".\WinDebug\inftrees.obj"
- -@erase ".\WinDebug\util.obj"
- -@erase ".\WinDebug\parseinfo.obj"
- -@erase ".\WinDebug\trees.obj"
- -@erase ".\WinDebug\1\version.obj"
- -@erase ".\WinDebug\vasprintf.obj"
- -@erase ".\WinDebug\ed.obj"
- -@erase ".\WinDebug\vers_ts.obj"
+ -@erase ".\WinDebug\argmatch.obj"
+ -@erase ".\WinDebug\lock.obj"
+ -@erase ".\WinDebug\modules.obj"
+ -@erase ".\WinDebug\classify.obj"
+ -@erase ".\WinDebug\dir.obj"
+ -@erase ".\WinDebug\startserver.obj"
-@erase ".\WinDebug\zutil.obj"
+ -@erase ".\WinDebug\stripslash.obj"
+ -@erase ".\WinDebug\md5.obj"
-@erase ".\WinDebug\admin.obj"
+ -@erase ".\WinDebug\commit.obj"
-@erase ".\WinDebug\diff3.obj"
- -@erase ".\WinDebug\md5.obj"
- -@erase ".\WinDebug\normal.obj"
- -@erase ".\WinDebug\login.obj"
- -@erase ".\WinDebug\logmsg.obj"
- -@erase ".\WinDebug\remove.obj"
+ -@erase ".\WinDebug\expand_path.obj"
+ -@erase ".\WinDebug\2\diff.obj"
+ -@erase ".\WinDebug\update.obj"
+ -@erase ".\WinDebug\waitpid.obj"
+ -@erase ".\WinDebug\adler32.obj"
+ -@erase ".\WinDebug\inflate.obj"
-@erase ".\WinDebug\tag.obj"
- -@erase ".\WinDebug\release.obj"
+ -@erase ".\WinDebug\buffer.obj"
+ -@erase ".\WinDebug\rcmd.obj"
-@erase ".\WinDebug\pwd.obj"
- -@erase ".\WinDebug\side.obj"
- -@erase ".\WinDebug\sockerror.obj"
- -@erase ".\WinDebug\classify.obj"
- -@erase ".\WinDebug\recurse.obj"
- -@erase ".\WinDebug\context.obj"
- -@erase ".\WinDebug\rcscmds.obj"
- -@erase ".\WinDebug\xgetwd.obj"
- -@erase ".\WinDebug\wrapper.obj"
+ -@erase ".\WinDebug\getopt.obj"
+ -@erase ".\WinDebug\entries.obj"
+ -@erase ".\WinDebug\getopt1.obj"
+ -@erase ".\WinDebug\2\version.obj"
-@erase ".\WinDebug\yesno.obj"
- -@erase ".\WinDebug\hash.obj"
- -@erase ".\WinDebug\find_names.obj"
- -@erase ".\WinDebug\server.obj"
- -@erase ".\WinDebug\getdate.obj"
- -@erase ".\WinDebug\subr.obj"
- -@erase ".\WinDebug\fileattr.obj"
- -@erase ".\WinDebug\log.obj"
- -@erase ".\WinDebug\regex.obj"
- -@erase ".\WinDebug\inflate.obj"
- -@erase ".\WinDebug\getline.obj"
-@erase ".\WinDebug\compress.obj"
- -@erase ".\WinDebug\error.obj"
- -@erase ".\WinDebug\add.obj"
- -@erase ".\WinDebug\fncase.obj"
+ -@erase ".\WinDebug\io.obj"
+ -@erase ".\WinDebug\infcodes.obj"
+ -@erase ".\WinDebug\no_diff.obj"
+ -@erase ".\WinDebug\scramble.obj"
+ -@erase ".\WinDebug\cvsrc.obj"
+ -@erase ".\WinDebug\fnmatch.obj"
-@erase ".\WinDebug\cvs.ilk"
-@erase ".\WinDebug\cvs.pdb"
@@ -448,110 +445,109 @@ LINK32_FLAGS=wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib\
/subsystem:console /incremental:yes /pdb:"$(OUTDIR)/cvs.pdb" /debug\
/machine:I386 /out:"$(OUTDIR)/cvs.exe"
LINK32_OBJS= \
+ "$(INTDIR)/regex.obj" \
+ "$(INTDIR)/normal.obj" \
+ "$(INTDIR)/client.obj" \
+ "$(INTDIR)/util.obj" \
+ "$(INTDIR)/create_adm.obj" \
+ "$(INTDIR)/vers_ts.obj" \
+ "$(INTDIR)/logmsg.obj" \
+ "$(INTDIR)/mkmodules.obj" \
+ "$(INTDIR)/remove.obj" \
+ "$(INTDIR)/sighandle.obj" \
+ "$(INTDIR)/watch.obj" \
+ "$(INTDIR)/release.obj" \
+ "$(INTDIR)/server.obj" \
+ "$(INTDIR)/recurse.obj" \
+ "$(INTDIR)/checkout.obj" \
+ "$(INTDIR)/context.obj" \
+ "$(INTDIR)/rcscmds.obj" \
+ "$(INTDIR)/side.obj" \
+ "$(INTDIR)/wrapper.obj" \
+ "$(INTDIR)/getdate.obj" \
+ "$(INTDIR)/parseinfo.obj" \
+ "$(INTDIR)/login.obj" \
+ "$(INTDIR)/hash.obj" \
+ ".\WinDebug\1\version.obj" \
+ "$(INTDIR)/subr.obj" \
+ "$(INTDIR)/fncase.obj" \
+ "$(INTDIR)/fileattr.obj" \
"$(INTDIR)/import.obj" \
+ "$(INTDIR)/getline.obj" \
+ "$(INTDIR)/ifdef.obj" \
+ "$(INTDIR)/crc32.obj" \
+ "$(INTDIR)/find_names.obj" \
+ "$(INTDIR)/status.obj" \
+ "$(INTDIR)/ndir.obj" \
"$(INTDIR)/savecwd.obj" \
+ "$(INTDIR)/log.obj" \
+ "$(INTDIR)/sockerror.obj" \
"$(INTDIR)/infutil.obj" \
- "$(INTDIR)/fnmatch.obj" \
- "$(INTDIR)/edit.obj" \
- "$(INTDIR)/status.obj" \
- "$(INTDIR)/io.obj" \
+ "$(INTDIR)/win32.obj" \
"$(INTDIR)/inffast.obj" \
- "$(INTDIR)/rcs.obj" \
+ "$(INTDIR)/ed.obj" \
+ "$(INTDIR)/edit.obj" \
+ "$(INTDIR)/add.obj" \
+ "$(INTDIR)/repos.obj" \
+ "$(INTDIR)/error.obj" \
"$(INTDIR)/zlib.obj" \
"$(INTDIR)/main.obj" \
- "$(INTDIR)/run.obj" \
+ "$(INTDIR)/filesubr.obj" \
+ "$(INTDIR)/cmpbuf.obj" \
+ "$(INTDIR)/myndbm.obj" \
+ "$(INTDIR)/xgetwd.obj" \
"$(INTDIR)/infblock.obj" \
- "$(INTDIR)/gzio.obj" \
+ "$(INTDIR)/inftrees.obj" \
"$(INTDIR)/deflate.obj" \
- "$(INTDIR)/startserver.obj" \
- "$(INTDIR)/checkout.obj" \
+ ".\WinDebug\1\diff.obj" \
"$(INTDIR)/analyze.obj" \
- "$(INTDIR)/dir.obj" \
- "$(INTDIR)/ifdef.obj" \
- "$(INTDIR)/expand_path.obj" \
- "$(INTDIR)/cmpbuf.obj" \
- "$(INTDIR)/stripslash.obj" \
- "$(INTDIR)/myndbm.obj" \
- "$(INTDIR)/crc32.obj" \
- ".\WinDebug\2\version.obj" \
- "$(INTDIR)/client.obj" \
+ "$(INTDIR)/gzio.obj" \
+ "$(INTDIR)/patch.obj" \
+ "$(INTDIR)/rcs.obj" \
"$(INTDIR)/history.obj" \
- ".\WinDebug\1\diff.obj" \
+ "$(INTDIR)/run.obj" \
+ "$(INTDIR)/mkdir.obj" \
+ "$(INTDIR)/uncompr.obj" \
+ "$(INTDIR)/ignore.obj" \
"$(INTDIR)/rtag.obj" \
"$(INTDIR)/root.obj" \
- "$(INTDIR)/uncompr.obj" \
- "$(INTDIR)/lock.obj" \
- "$(INTDIR)/argmatch.obj" \
+ "$(INTDIR)/trees.obj" \
"$(INTDIR)/checkin.obj" \
- "$(INTDIR)/win32.obj" \
- "$(INTDIR)/modules.obj" \
- "$(INTDIR)/ignore.obj" \
- "$(INTDIR)/mkmodules.obj" \
- "$(INTDIR)/repos.obj" \
"$(INTDIR)/valloc.obj" \
- "$(INTDIR)/rcmd.obj" \
- "$(INTDIR)/cvsrc.obj" \
- "$(INTDIR)/sighandle.obj" \
- "$(INTDIR)/waitpid.obj" \
- "$(INTDIR)/adler32.obj" \
- "$(INTDIR)/commit.obj" \
- "$(INTDIR)/patch.obj" \
- ".\WinDebug\2\diff.obj" \
- "$(INTDIR)/entries.obj" \
- "$(INTDIR)/create_adm.obj" \
- "$(INTDIR)/update.obj" \
- "$(INTDIR)/getopt1.obj" \
- "$(INTDIR)/infcodes.obj" \
- "$(INTDIR)/ndir.obj" \
- "$(INTDIR)/buffer.obj" \
- "$(INTDIR)/mkdir.obj" \
- "$(INTDIR)/scramble.obj" \
- "$(INTDIR)/filesubr.obj" \
- "$(INTDIR)/watch.obj" \
- "$(INTDIR)/getopt.obj" \
- "$(INTDIR)/no_diff.obj" \
- "$(INTDIR)/inftrees.obj" \
- "$(INTDIR)/util.obj" \
- "$(INTDIR)/parseinfo.obj" \
- "$(INTDIR)/trees.obj" \
- ".\WinDebug\1\version.obj" \
- "$(INTDIR)/vasprintf.obj" \
- "$(INTDIR)/ed.obj" \
- "$(INTDIR)/vers_ts.obj" \
+ "$(INTDIR)/argmatch.obj" \
+ "$(INTDIR)/lock.obj" \
+ "$(INTDIR)/modules.obj" \
+ "$(INTDIR)/classify.obj" \
+ "$(INTDIR)/dir.obj" \
+ "$(INTDIR)/startserver.obj" \
"$(INTDIR)/zutil.obj" \
+ "$(INTDIR)/stripslash.obj" \
+ "$(INTDIR)/md5.obj" \
"$(INTDIR)/admin.obj" \
+ "$(INTDIR)/commit.obj" \
"$(INTDIR)/diff3.obj" \
- "$(INTDIR)/md5.obj" \
- "$(INTDIR)/normal.obj" \
- "$(INTDIR)/login.obj" \
- "$(INTDIR)/logmsg.obj" \
- "$(INTDIR)/remove.obj" \
+ "$(INTDIR)/expand_path.obj" \
+ ".\WinDebug\2\diff.obj" \
+ "$(INTDIR)/update.obj" \
+ "$(INTDIR)/waitpid.obj" \
+ "$(INTDIR)/adler32.obj" \
+ "$(INTDIR)/inflate.obj" \
"$(INTDIR)/tag.obj" \
- "$(INTDIR)/release.obj" \
+ "$(INTDIR)/buffer.obj" \
+ "$(INTDIR)/rcmd.obj" \
"$(INTDIR)/pwd.obj" \
- "$(INTDIR)/side.obj" \
- "$(INTDIR)/sockerror.obj" \
- "$(INTDIR)/classify.obj" \
- "$(INTDIR)/recurse.obj" \
- "$(INTDIR)/context.obj" \
- "$(INTDIR)/rcscmds.obj" \
- "$(INTDIR)/xgetwd.obj" \
- "$(INTDIR)/wrapper.obj" \
+ "$(INTDIR)/getopt.obj" \
+ "$(INTDIR)/entries.obj" \
+ "$(INTDIR)/getopt1.obj" \
+ ".\WinDebug\2\version.obj" \
"$(INTDIR)/yesno.obj" \
- "$(INTDIR)/hash.obj" \
- "$(INTDIR)/find_names.obj" \
- "$(INTDIR)/server.obj" \
- "$(INTDIR)/getdate.obj" \
- "$(INTDIR)/subr.obj" \
- "$(INTDIR)/fileattr.obj" \
- "$(INTDIR)/log.obj" \
- "$(INTDIR)/regex.obj" \
- "$(INTDIR)/inflate.obj" \
- "$(INTDIR)/getline.obj" \
"$(INTDIR)/compress.obj" \
- "$(INTDIR)/error.obj" \
- "$(INTDIR)/add.obj" \
- "$(INTDIR)/fncase.obj"
+ "$(INTDIR)/io.obj" \
+ "$(INTDIR)/infcodes.obj" \
+ "$(INTDIR)/no_diff.obj" \
+ "$(INTDIR)/scramble.obj" \
+ "$(INTDIR)/cvsrc.obj" \
+ "$(INTDIR)/fnmatch.obj"
"$(OUTDIR)\cvs.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
@@ -1980,6 +1976,7 @@ NODEP_CPP_PATCH=\
SOURCE=.\src\release.c
DEP_CPP_RELEA=\
".\src\cvs.h"\
+ ".\lib\savecwd.h"\
".\lib\getline.h"\
".\windows-NT\config.h"\
".\windows-NT\options.h"\
@@ -2725,7 +2722,16 @@ NODEP_CPP_REGEX=\
SOURCE=.\lib\fnmatch.c
DEP_CPP_FNMAT=\
".\windows-NT\config.h"\
+ ".\lib\system.h"\
".\lib\fnmatch.h"\
+ {$(INCLUDE)}"\sys\Types.h"\
+ {$(INCLUDE)}"\sys\Stat.h"\
+ {$(INCLUDE)}"\sys\Timeb.h"\
+ {$(INCLUDE)}"\sys\Utime.h"\
+ ".\windows-NT\ndir.h"\
+
+NODEP_CPP_FNMAT=\
+ ".\lib\tcpip.h"\
"$(INTDIR)\fnmatch.obj" : $(SOURCE) $(DEP_CPP_FNMAT) "$(INTDIR)"
@@ -2779,19 +2785,6 @@ DEP_CPP_SAVEC=\
################################################################################
# Begin Source File
-SOURCE=.\lib\vasprintf.c
-DEP_CPP_VASPR=\
- ".\windows-NT\config.h"\
-
-
-"$(INTDIR)\vasprintf.obj" : $(SOURCE) $(DEP_CPP_VASPR) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-# End Source File
-################################################################################
-# Begin Source File
-
SOURCE=".\windows-NT\mkdir.c"
DEP_CPP_MKDIR=\
".\src\cvs.h"\
@@ -2916,6 +2909,29 @@ NODEP_CPP_FILES=\
SOURCE=".\windows-NT\win32.c"
DEP_CPP_WIN32=\
".\windows-NT\config.h"\
+ ".\src\cvs.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_WIN32=\
+ ".\src\popen.h"\
+ ".\lib\tcpip.h"\
"$(INTDIR)\win32.obj" : $(SOURCE) $(DEP_CPP_WIN32) "$(INTDIR)"
@@ -3430,7 +3446,7 @@ DEP_CPP_DIR_C=\
# Begin Source File
SOURCE=.\diff\ed.c
-DEP_CPP_ED_Cba=\
+DEP_CPP_ED_Cb8=\
".\diff\diff.h"\
".\diff\system.h"\
".\lib\regex.h"\
@@ -3441,7 +3457,7 @@ DEP_CPP_ED_Cba=\
".\windows-NT\ndir.h"\
-"$(INTDIR)\ed.obj" : $(SOURCE) $(DEP_CPP_ED_Cba) "$(INTDIR)"
+"$(INTDIR)\ed.obj" : $(SOURCE) $(DEP_CPP_ED_Cb8) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
@@ -3470,7 +3486,7 @@ DEP_CPP_IFDEF=\
# Begin Source File
SOURCE=.\diff\io.c
-DEP_CPP_IO_Cbe=\
+DEP_CPP_IO_Cbc=\
".\diff\diff.h"\
".\diff\system.h"\
".\lib\regex.h"\
@@ -3481,7 +3497,7 @@ DEP_CPP_IO_Cbe=\
".\windows-NT\ndir.h"\
-"$(INTDIR)\io.obj" : $(SOURCE) $(DEP_CPP_IO_Cbe) "$(INTDIR)"
+"$(INTDIR)\io.obj" : $(SOURCE) $(DEP_CPP_IO_Cbc) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
diff --git a/gnu/usr.bin/cvs/diff/.cvsignore b/gnu/usr.bin/cvs/diff/.cvsignore
new file mode 100644
index 00000000000..be755f8b416
--- /dev/null
+++ b/gnu/usr.bin/cvs/diff/.cvsignore
@@ -0,0 +1,3 @@
+Makefile
+Debug
+Release
diff --git a/gnu/usr.bin/cvs/diff/ChangeLog b/gnu/usr.bin/cvs/diff/ChangeLog
index 90ba69b11b9..a43518258d0 100644
--- a/gnu/usr.bin/cvs/diff/ChangeLog
+++ b/gnu/usr.bin/cvs/diff/ChangeLog
@@ -1,3 +1,38 @@
+1999-05-06 Jim Kingdon <http://www.cyclic.com>
+
+ * Makefile.in (DISTFILES): Remove libdiff.mak.
+ * libdiff.mak: Removed; we are back to a single makefile for
+ Visual C++ version 4.
+
+1999-04-29 Jim Kingdon <http://www.cyclic.com>
+
+ * diff.c (diff_run): Use separate statement for setjmp call and if
+ statement. This is better style in general (IMHO) but in the case
+ of setjmp the UNICOS compiler apparently cares (I don't have the
+ standard handy, but there are lots of legitimate restrictions on
+ how you can call setjmp).
+
+1999-04-26 Jim Kingdon <http://www.cyclic.com>
+
+ * Makefile.in (DISTFILES): Add libdiff.dsp libdiff.mak .cvsignore.
+
+1999-04-26 (submitted 1999-03-24) John O'Connor <john@shore.net>
+
+ * libdiff.dsp: new file. MSVC project file used to build the library.
+
+ * libdiff.mak: new file. Makefile for building from the command-line.
+
+ * .cvsignore: Removed un-used entries related to MSVC. Added
+ entries to ignore directories generated by the NT build, Debug
+ and Release.
+
+1999-03-24 Larry Jones <larry.jones@sdrc.com>
+ and Olaf Brandes
+
+ * diff3.c (diff3_run): Use a separate stream for the input to
+ output_diff3_merge instead of reopening stdin to avoid problems
+ with leaving it open.
+
1999-02-17 Jim Kingdon <http://www.cyclic.com>
and Hallvard B Furuseth.
diff --git a/gnu/usr.bin/cvs/diff/diff.c b/gnu/usr.bin/cvs/diff/diff.c
index bc951c4105f..e5f7e42bfcd 100644
--- a/gnu/usr.bin/cvs/diff/diff.c
+++ b/gnu/usr.bin/cvs/diff/diff.c
@@ -688,7 +688,8 @@ diff_run (argc, argv, out, callbacks_arg)
/* Set the jump buffer, so that diff may abort execution without
terminating the process. */
- if ((val = setjmp (diff_abort_buf)) != 0)
+ val = setjmp (diff_abort_buf);
+ if (val != 0)
{
optind = optind_old;
if (opened_file)
diff --git a/gnu/usr.bin/cvs/diff/diff3.c b/gnu/usr.bin/cvs/diff/diff3.c
index 65b783b3e67..e3be1503e86 100644
--- a/gnu/usr.bin/cvs/diff/diff3.c
+++ b/gnu/usr.bin/cvs/diff/diff3.c
@@ -457,13 +457,15 @@ diff3_run (argc, argv, out, callbacks_arg)
tag_strings[0], tag_strings[1], tag_strings[2]);
else if (merge)
{
- if (! freopen (file[rev_mapping[FILE0]], "r", stdin))
+ FILE *mfp = fopen (file[rev_mapping[FILE0]], "r");
+ if (! mfp)
diff3_perror_with_exit (file[rev_mapping[FILE0]]);
- conflicts_found
- = output_diff3_merge (stdin, diff3, mapping, rev_mapping,
+ conflicts_found = output_diff3_merge (mfp, diff3, mapping, rev_mapping,
tag_strings[0], tag_strings[1], tag_strings[2]);
- if (ferror (stdin))
+ if (ferror (mfp))
diff3_fatal ("read error");
+ if (fclose(mfp) != 0)
+ perror_with_name (file[rev_mapping[FILE0]]);
}
else
{
diff --git a/gnu/usr.bin/cvs/diff/libdiff.dsp b/gnu/usr.bin/cvs/diff/libdiff.dsp
new file mode 100644
index 00000000000..90cda23e84c
--- /dev/null
+++ b/gnu/usr.bin/cvs/diff/libdiff.dsp
@@ -0,0 +1,134 @@
+# Microsoft Developer Studio Project File - Name="libdiff" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=libdiff - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "libdiff.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "libdiff.mak" CFG="libdiff - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "libdiff - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "libdiff - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+
+!IF "$(CFG)" == "libdiff - 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 ".\libdiff"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ".\libdiff"
+# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\windows-NT" /I "..\lib" /D "_WINDOWS" /D "HAVE_TIME_H" /D "CLOSEDIR_VOID" /D "NDEBUG" /D "WIN32" /D "WANT_WIN_COMPILER_VERSION" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "..\windows-NT" /I "..\lib" /D "_WINDOWS" /D "HAVE_TIME_H" /D "CLOSEDIR_VOID" /D "NDEBUG" /D "WIN32" /D "WANT_WIN_COMPILER_VERSION" /YX /FD /c
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "libdiff - 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 ".\libdiff"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ".\libdiff"
+# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /I "..\windows-NT" /I "..\lib" /D "_DEBUG" /D "_WINDOWS" /D "WIN32" /D "HAVE_TIME_H" /D "CLOSEDIR_VOID" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /Z7 /Od /I "..\windows-NT" /I "..\lib" /D "_DEBUG" /D "_WINDOWS" /D "WIN32" /D "HAVE_TIME_H" /D "CLOSEDIR_VOID" /YX /FD /c
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "libdiff - Win32 Release"
+# Name "libdiff - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+# Begin Source File
+
+SOURCE=.\analyze.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\cmpbuf.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\context.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\diff.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\diff3.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\dir.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ed.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ifdef.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\io.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\normal.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\side.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\util.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\version.c
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/gnu/usr.bin/cvs/doc/ChangeLog b/gnu/usr.bin/cvs/doc/ChangeLog
index 15547b5fec9..33b7f91d518 100644
--- a/gnu/usr.bin/cvs/doc/ChangeLog
+++ b/gnu/usr.bin/cvs/doc/ChangeLog
@@ -1,3 +1,166 @@
+1999-07-16 Tom Tromey <tromey@cygnus.com>
+
+ * cvs.texinfo (admin): Mention admin -k exception. Add cvsadmin
+ to index.
+
+1999-07-14 Larry Jones <larry.jones@sdrc.com>
+
+ * cvs.texinfo (Password authentication server): Note inetd limits
+ and suggest using shell script to avoid.
+
+1999-06-01 Jim Kingdon <http://www.cyclic.com>
+
+ * cvsclient.texi (Requests): For the import command, the
+ repository given to the Directory requests is ignored.
+
+1999-05-27 Jim Kingdon <http://www.cyclic.com>
+
+ * cvsclient.texi (Requests): Clarify that Modified, Is-modified,
+ Notify and Unchanged must specify a file within the current
+ directory.
+
+1999-05-24 Jim Kingdon <http://www.cyclic.com>
+
+ * cvs.texinfo (checkoutlist): New node, contains more complete
+ documentation of this feature.
+ (CVSROOT storage): Refer to the new node when mentioning
+ checkoutlist.
+ (Administrative files): Update the menu entry for Wrappers.
+
+1999-05-17 Jim Kingdon <http://www.cyclic.com>
+
+ * cvsclient.texi (Requests): For Notify request, strike duplicate
+ "Response expected: no" and fix "a edit" -> "an edit".
+
+1999-05-14 Jim Kingdon <http://www.cyclic.com>
+
+ * cvs.texinfo (Working directory storage): Try to be more clear
+ about the conflict field.
+
+1999-05-11 Jim Kingdon <http://www.cyclic.com>
+
+ * cvs.texinfo (config): Use comma after @xref (thanks to Pavel
+ Roskin for the report/fix).
+
+1999-05-10 Jim Kingdon <http://www.cyclic.com>
+
+ * cvsclient.texi (Requests): Document restrictions on characters
+ in Notify requests.
+
+1999-05-04 Jim Kingdon <http://www.cyclic.com>
+
+ * cvs.texinfo (Password authentication security): Remove sentence
+ about how no one has audited pserver for holes; a lot of holes
+ have been closed, looking for, &c, since that was written.
+ In the summary, reword to reflect the fact that sniffing a
+ readonly password does not imply general system access (as far as
+ I know, of course).
+
+ * cvs.texinfo (Connection): Also suggest inetd -d.
+
+1999-04-28 Jim Kingdon <http://www.cyclic.com>
+
+ * cvsclient.texi (Requests): Say what goes in the "watches" field
+ of the "Notify" request.
+
+ * cvs.texinfo (Common options): -r is for branches too.
+
+ * cvs.texinfo (Error messages): Add "no such tag" message.
+ (Common options): -f does not override val-tags check.
+
+1999-04-26 Jim Kingdon <http://www.cyclic.com>
+
+ * cvs.texinfo (Locks): #cvs.rfl locks must start with "#cvs.rfl."
+ not just "#cvs.rfl". As far as I know CVS has always implemented
+ the former behavior, and this just fixes the documentation.
+
+1999-04-23 Yoshiki Hayashi of u-tokyo.ac.jp
+
+ * cvs.texinfo (verifymsg): Correct wrong file name (bugid.edit ->
+ bugid.verify).
+
+1999-04-22 Jim Kingdon <http://www.cyclic.com>
+
+ * cvsclient.texi (Responses): The text in the "M" response is not
+ designed for machine parsing. Likewise for "error" in regular
+ protocol. Likewise for "E" and "error" in authentication protocol.
+
+1999-04-19 Jim Kingdon <http://www.cyclic.com>
+
+ * cvs.texinfo (Error messages): Add "Cannot check out files into
+ the repository itself".
+
+1999-04-16 Jim Kingdon <http://www.cyclic.com>
+
+ * cvs.texinfo (Other problems): Add the Windows problem with home
+ directory ending in a slash.
+
+1999-04-14 Jim Kingdon <http://www.cyclic.com>
+
+ * cvs.texinfo (CVS in repository): Include the format of the
+ fileattr file here, rather than referring to the CVS source code.
+
+1999-04-09 Jim Kingdon <http://www.cyclic.com>
+
+ * cvs.texinfo (Working directory storage): Whether the timestamp
+ in CVS/Entries is local or universal actually depends on the system.
+
+1999-04-05 Derek Price
+ <http://www-personal.engin.umich.edu/~oberon/resume.html>
+
+ * cvs.texinfo (export options): Remove notation that the -r
+ tag is sticky. 'cvs export' doesn't store that data.
+
+1999-04-08 Jim Kingdon <http://www.cyclic.com>
+
+ * cvs.texinfo (Error messages): Add "EOF in RCS file" and
+ "unexpected EOF" (in RCS file) messages.
+
+1999-03-25 Jim Kingdon <http://www.cyclic.com>
+
+ * cvs.texinfo (admin options): Say there can be no space between
+ -e and its argument (since the previous sentence said the argument
+ can be omitted, this is the only possibility).
+
+1999-02-26 Jim Kingdon <http://www.cyclic.com>
+
+ * cvs.texinfo (Merging and keywords): When including conflict
+ markers, put @asis{} at the start of the line, in case this file
+ itself is in CVS. Thanks to Derek Price for pointing this out.
+
+1999-02-25 Jim Kingdon <http://www.cyclic.com>
+
+ * cvs.texinfo: Refer to "keywords" not "RCS keywords". We had
+ only used the latter term in a few places, and it seems like a
+ somewhat odd term in that this style of keyword is by no means
+ specific to RCS.
+ (Merging a branch): Remove spurious ")". Use ref, not xref, after
+ "see".
+ (Merging a branch, Substitution modes): Make sure that @ref is
+ followed by comma, since info wants that.
+ (Merging and keywords): Use samp not code for "-kk". Something of
+ a judgement call, but the rest of the manual uses samp and that
+ seems better to me.
+ (Merging and keywords): Rewrite, to (a) better motivate the
+ discussion based on what the user wants to do, (b) fix up lots of
+ convoluted sentences, (c) move the discussion of the binary files
+ to the end, that is get across the basic idea first and then
+ embellish it. Remove a few unnecessary index entries. Expand
+ example. Just tell people to avoid -kk with binary files (comment
+ out the discussion of using -A after the commit).
+
+1999-01-29 Derek Price
+ <http://www-personal.engin.umich.edu/~oberon/resume.html>
+
+ * cvs.texinfo: Added new node/section on merging and keywords. It
+ contains advice on how to avoid RCS keyword conflicts when merging
+ and avoid corrupting your binary files while doing it.
+
+1999-02-24 Jim Kingdon <http://www.cyclic.com>
+
+ * cvsclient.texi (Request intro): Add paragraph about transmitting
+ more than one command.
+
1999-01-29 Jim Kingdon <http://www.cyclic.com>
* cvs.texinfo: Use EXAMPLE.COM EXAMPLE.ORG and EXAMPLE.NET instead
diff --git a/gnu/usr.bin/cvs/doc/cvsclient.texi b/gnu/usr.bin/cvs/doc/cvsclient.texi
index c9224e3d720..394c0cafb09 100644
--- a/gnu/usr.bin/cvs/doc/cvsclient.texi
+++ b/gnu/usr.bin/cvs/doc/cvsclient.texi
@@ -217,6 +217,10 @@ The @var{text} should be supplied to the
user. Compatibility note: @sc{cvs} 1.9.10 and older clients will print
@code{unrecognized auth response} and @var{text}, and then exit, upon
receiving this response.
+Note that @var{text} for this response, or the @var{text} in an @code{E}
+response, is not designed for machine parsing. More vigorous use of
+@var{code}, or future extensions, will be needed to prove a cleaner
+machine-parseable indication of what the error was.
@end table
@c If you are thinking of putting samp or code around BEGIN AUTH REQUEST
@@ -506,6 +510,16 @@ exception is @samp{gzip-file-contents}. Unrecognized requests will
always elicit a response from the server, even if that request begins
with a capital letter.
+The term @dfn{command} means a request which expects a response (except
+@code{valid-requests}). The general model is that the client transmits
+a great number of requests, but nothing happens until the very end when
+the client transmits a command. Although the intention is that
+transmitting several commands in one connection should be legal,
+existing servers probably have some bugs with some combinations of more
+than one command, and so clients may find it necessary to make several
+connections in some cases. This should be thought of as a workaround
+rather than a desired attribute of the protocol.
+
@node Requests
@section Requests
@@ -794,7 +808,8 @@ affect the @code{ci} request or other relevant requests if any.
@item Modified @var{filename} \n
Response expected: no. Additional data: mode, \n, file transmission.
Send the server a copy of one locally modified file. @var{filename} is
-relative to the most recent repository sent with @code{Directory}. If
+a file within the most recent directory sent with @code{Directory}; it
+must not contain @samp{/}. If
the user is operating on only some files in a directory, only those
files need to be included. This can also be sent without @code{Entry},
if there is no entry for the file.
@@ -836,8 +851,9 @@ investigation, the more conservative course of action is to stick to
@item Unchanged @var{filename} \n
Response expected: no. Tell the server that @var{filename} has not been
-modified in the checked out directory. The name is relative to the most
-recent repository sent with @code{Directory}.
+modified in the checked out directory. The @var{filename} is
+a file within the most recent directory sent with @code{Directory}; it
+must not contain @samp{/}.
@item UseUnchanged \n
Response expected: no. To specify the version of the protocol described
@@ -846,10 +862,13 @@ not do anything) and clients must issue it.
@item Notify @var{filename} \n
Response expected: no.
-Tell the server that a @code{edit} or @code{unedit} command has taken
+Tell the server that an @code{edit} or @code{unedit} command has taken
place. The server needs to send a @code{Notified} response, but such
response is deferred until the next time that the server is sending
-responses. Response expected: no. Additional data:
+responses.
+The @var{filename} is a file within the most recent directory sent with
+@code{Directory}; it must not contain @samp{/}.
+Additional data:
@example
@var{notification-type} \t @var{time} \t @var{clienthost} \t
@var{working-dir} \t @var{watches} \n
@@ -867,9 +886,17 @@ time as an opaque string rather than interpreting it).
@var{clienthost} is the name of the host on which the edit or unedit
took place, and @var{working-dir} is the pathname of the working
directory where the edit or unedit took place. @var{watches} are the
-temporary watches to set. If @var{watches} is followed by \t then the
+temporary watches, zero or more of the following characters in the
+following order: @samp{E} for edit, @samp{U} for unedit, @samp{C} for
+commit, and all other letters should be silently ignored for future
+expansion. If @var{notification-type} is @samp{E} the temporary watches
+are set; if it is @samp{U} they are cleared.
+If @var{watches} is followed by \t then the
\t and the rest of the line should be ignored, for future expansion.
+The @var{time}, @var{clienthost}, and @var{working-dir} fields may not
+contain the characters @samp{+}, @samp{,}, @samp{>}, @samp{;}, or @samp{=}.
+
Note that a client may be capable of performing an @code{edit} or
@code{unedit} operation without connecting to the server at that time,
and instead connecting to the server when it is convenient (for example,
@@ -1101,7 +1128,9 @@ Response expected: yes. Actually do a @code{cvs import} command. 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. The files to be imported are sent in @code{Modified}
+of the operation - unlike most commands, the repository field of each
+@code{Directory} request is ignored (it merely must point somewhere
+within the root). The files to be imported are sent in @code{Modified}
requests (files which the client knows should be ignored are not sent;
the server must still process the CVSROOT/cvsignore file unless -I ! is
sent). A log message must have been specified with a @code{-m}
@@ -1557,6 +1586,13 @@ extending this one, for graceful handling of @code{Valid-responses}).
@item M @var{text} \n
A one-line message for the user.
+Note that the format of @var{text} is not designed for machine parsing.
+Although sometimes scripts and clients will have little choice, the
+exact text which is output is subject to vary at the discretion of the
+server and the example output given in this document is just that,
+example output. Servers are encouraged to use the @samp{MT} response,
+and future versions of this document will hopefully standardize more of
+the @samp{MT} tags; see @ref{Text tags}.
@item Mbinary \n
Additional data: file transmission (note: compressed file transmissions
@@ -1654,6 +1690,12 @@ feature, or if it's not appropriate for this particular message, it just
omits the errno-code (in that case there are two spaces after
@samp{error}). Text is an error message such as that provided by
strerror(), or any other message the server wants to use.
+The @var{text} is like the @code{M} response, in the sense that it is
+not particularly intended to be machine-parsed; servers may wish to
+print an error message with @code{MT} responses, and then issue a
+@code{error} response without @var{text} (although it should be noted
+that @code{MT} currently has no way of flagging the output as intended
+for standard error, the way that the @code{E} response does).
@item ok \n
The command completed successfully.
diff --git a/gnu/usr.bin/cvs/emx/ChangeLog b/gnu/usr.bin/cvs/emx/ChangeLog
index 6a5f0184e30..ad5d9629e3f 100644
--- a/gnu/usr.bin/cvs/emx/ChangeLog
+++ b/gnu/usr.bin/cvs/emx/ChangeLog
@@ -1,3 +1,12 @@
+1999-03-27 Jim Kingdon <http://www.cyclic.com>
+
+ * Makefile.in (LIB_OBJECTS, LIB_SOURCES): Remove vasprintf.
+
+1999-02-26 Jim Kingdon <http://www.cyclic.com>
+
+ * options.h: Make RELATIVE_REPOS the default, as in
+ ../src/options.h.in.
+
1998-08-24 Jim Kingdon <kingdon@harvey.cyclic.com>
* Makefile.in (rcscmds.o): New rule, so we can supply -I for
diff --git a/gnu/usr.bin/cvs/emx/Makefile.in b/gnu/usr.bin/cvs/emx/Makefile.in
index f76368d1d5d..d475085f2a9 100644
--- a/gnu/usr.bin/cvs/emx/Makefile.in
+++ b/gnu/usr.bin/cvs/emx/Makefile.in
@@ -146,7 +146,6 @@ DIFF_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 \
@@ -242,7 +241,6 @@ DIFF_OBJECTS = \
# objects from ../lib
LIB_OBJECTS = \
- ${lib_dir}/vasprintf.o \
${lib_dir}/argmatch.o \
${lib_dir}/getline.o \
${lib_dir}/getopt.o \
diff --git a/gnu/usr.bin/cvs/emx/options.h b/gnu/usr.bin/cvs/emx/options.h
index c247ccb155c..99b4f9d4426 100644
--- a/gnu/usr.bin/cvs/emx/options.h
+++ b/gnu/usr.bin/cvs/emx/options.h
@@ -84,15 +84,18 @@
* 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
+ *
+ * The big 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.
+ * repository, change the contents of CVS/Root files in your
+ * checked-out code, and CVS will work without problems.
+ *
+ * Therefore, RELATIVE_REPOS is now the default. In the future, this
+ * is likely to disappear entirely as a compile-time (or other) option,
+ * so if you have other software which relies on absolute pathnames,
+ * update them.
*/
-#ifndef RELATIVE_REPOS
-/* #define RELATIVE_REPOS */
-#endif
+#define RELATIVE_REPOS 1
/*
* When committing or importing files, you must enter a log message.
diff --git a/gnu/usr.bin/cvs/lib/ChangeLog b/gnu/usr.bin/cvs/lib/ChangeLog
index 6338f847ab6..37cc6ab9f5d 100644
--- a/gnu/usr.bin/cvs/lib/ChangeLog
+++ b/gnu/usr.bin/cvs/lib/ChangeLog
@@ -1,3 +1,7 @@
+1999-03-26 Jim Kingdon <http://www.cyclic.com>
+
+ * getopt.h: Don't declare the arguments to getopt.
+
1999-02-09 Jim Kingdon <http://www.cyclic.com>
* vasprintf.c: Removed; there is apparently no clean, portable
diff --git a/gnu/usr.bin/cvs/lib/getopt.h b/gnu/usr.bin/cvs/lib/getopt.h
index c872f414205..7fc2cca396d 100644
--- a/gnu/usr.bin/cvs/lib/getopt.h
+++ b/gnu/usr.bin/cvs/lib/getopt.h
@@ -91,14 +91,14 @@ struct option
#define optional_argument 2
#if __STDC__
-#if defined(__GNU_LIBRARY__)
/* Many other libraries have conflicting prototypes for getopt, with
- differences in the consts, in stdlib.h. To avoid compilation
- errors, only prototype getopt for the GNU C library. */
-extern int getopt (int argc, char *const *argv, const char *shortopts);
-#else /* not __GNU_LIBRARY__ */
+ differences in the consts, in stdlib.h. We used to try to prototype
+ it if __GNU_LIBRARY__ but that wasn't problem free either (I'm not sure
+ exactly why), and there is no particular need to prototype it.
+ We really shouldn't be trampling on the system's namespace at all by
+ declaring getopt() but that is a bigger issue. */
extern int getopt ();
-#endif /* not __GNU_LIBRARY__ */
+
extern int getopt_long (int argc, char *const *argv, const char *shortopts,
const struct option *longopts, int *longind);
extern int getopt_long_only (int argc, char *const *argv,
diff --git a/gnu/usr.bin/cvs/os2/ChangeLog b/gnu/usr.bin/cvs/os2/ChangeLog
index e4371461129..0b52588be83 100644
--- a/gnu/usr.bin/cvs/os2/ChangeLog
+++ b/gnu/usr.bin/cvs/os2/ChangeLog
@@ -1,3 +1,9 @@
+1999-02-26 Jim Kingdon <http://www.cyclic.com>
+
+ * options.h: Make RELATIVE_REPOS the default, as in
+ ../src/options.h.in.
+ Remove CVS_DIFFDATE; removed from CVS on 27 Jun 1996.
+
1998-12-29 Jim Kingdon <http://www.cyclic.com>
* Makefile.in: Use the getdate.c in ../lib rather than the one
diff --git a/gnu/usr.bin/cvs/os2/options.h b/gnu/usr.bin/cvs/os2/options.h
index be629655487..d55268ff8bd 100644
--- a/gnu/usr.bin/cvs/os2/options.h
+++ b/gnu/usr.bin/cvs/os2/options.h
@@ -87,18 +87,22 @@
#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 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.
+ * The big advantage that I can see to having a relative path is that
+ * one can change the physical location of the master source
+ * repository, change the contents of CVS/Root files in your
+ * checked-out code, and CVS will work without problems.
+ *
+ * Therefore, RELATIVE_REPOS is now the default. In the future, this
+ * is likely to disappear entirely as a compile-time (or other) option,
+ * so if you have other software which relies on absolute pathnames,
+ * update them.
*/
-#ifndef RELATIVE_REPOS
-/* #define RELATIVE_REPOS */
-#endif
+#define RELATIVE_REPOS 1
/*
* When committing or importing files, you must enter a log message.
@@ -146,18 +150,6 @@
#undef CVS_BADROOT
/*
- * The "cvs diff" command accepts all the single-character options that GNU
- * diff (1.15) accepts. Except -D. GNU diff uses -D as a way to put
- * cpp-style #define's around the output differences. CVS, by default, uses
- * -D to specify a free-form date (like "cvs diff -D '1 week ago'"). If
- * you would prefer that the -D option of "cvs diff" work like the GNU diff
- * option, then comment out this define.
- */
-#ifndef CVS_DIFFDATE
-#define CVS_DIFFDATE
-#endif
-
-/*
* define this to enable the SETXID support (see FAQ 4D.13)
* [ We have no such thing under OS/2, so far as I know. ]
*/
diff --git a/gnu/usr.bin/cvs/src/ChangeLog b/gnu/usr.bin/cvs/src/ChangeLog
index 7acccf5cbfe..0d1889185a3 100644
--- a/gnu/usr.bin/cvs/src/ChangeLog
+++ b/gnu/usr.bin/cvs/src/ChangeLog
@@ -1,3 +1,452 @@
+1999-07-28 Eric Sink <eric@sourcegear.com>
+
+ * sanity.sh: before running basicc-11, we need to see if
+ the cwd has been deleted (by basicc-8). If so, we
+ recreate it to allow basicc-11 to proceed. This may be
+ something that only happens under the Linux 2.2 kernel.
+
+1999-07-18 Karl Fogel <kfogel@floss.red-bean.com>
+
+ * edit.c (notify_do): chop newline, if any, from the value
+ obtained from CVSROOT/users. Otherwise it just gets passed along
+ in the argument to the notification program (usually mail), which
+ will misinterpret it as signifying the end of the command.
+
+1999-07-19 Larry Jones <larry.jones@sdrc.com>
+
+ * rcs.c (RCS_delete_revs): In the WIN32 kludge, be sure that the result
+ of RCS_getexpand is not NULL before trying to use what it points to.
+ (Patch submitted by Timothy L. Taylor <ttaylor@mitre.org>.)
+
+1999-07-16 Tom Tromey <tromey@cygnus.com>
+
+ * admin.c (admin): Allow `-k' options to be used unrestricted.
+
+1999-06-23 Jim Kingdon <http://www.cyclic.com>
+
+ * sanity.sh (symlinks2): New test, for symlinks in working
+ directory without PreservePermissions. This test (modulo a few
+ details not relevant to testing whether we are following symlinks)
+ worked remote as of now, or either remote or local for CVS 1.9.
+ * subr.c (get_file): Revert 1998-02-15 change to special-case
+ symlinks. This makes the above test work local too.
+ * rcs.c (RCS_checkin): Move the logic to handle special-case
+ symlinks (and other files other than regular files) here, and make
+ it only happen if PreservePermissions is on.
+
+1999-06-18 Larry Jones <larry.jones@sdrc.com>
+
+ * sanity.sh (devcom3-9a): Be less specific about the expected
+ error message (BSD/OS 4.0 has a bug that can cause exec* to fail
+ with EACCES instead of ENOENT).
+
+1999-06-08 Larry Jones <larry.jones@sdrc.com>
+
+ * sanity.sh (diff-4, dirs2-10, tagf-13, importc-7, conflicts2-142b8):
+ Use ${PROG} instead of "cvs".
+
+1999-06-05 Jim Kingdon <http://www.cyclic.com>
+
+ * recurse.c (do_recursion, do_dir_proc): Make the SERVER_ACTIVE
+ #ifdef be only around the check for server_active. Modulo a few
+ cosmetic tweaks, same as a patch submitted by Johannes Stezenbach
+ of propack-data.de.
+
+1999-06-01 Jim Kingdon <http://www.cyclic.com>
+
+ * sanity.sh: Add comment about rcs2-7 failures on certain days.
+
+ Make "cvs status -v" on a removed file work:
+ * status.c (cvsstatus): Reindent the client code.
+ (status_fileproc): Don't need a CVS/Entries listing to show the
+ tags.
+ * sanity.sh (rmadd2): New test rmadd2-16 tests the existing
+ behavior with "cvs log"; new test rmadd2-17 tests the new behavior
+ with "cvs status".
+
+ * sanity.sh (basicc): To match no output in dotest, put the empty
+ regexp first. Remove tests which check that first-dir exists,
+ since that isn't true in the case where the OS let us delete it.
+ (dotest_internal): Fix so that things work with two regexps, with
+ an empty one first.
+
+1999-05-28 Larry Jones <larry.jones@sdrc.com>
+
+ * sanity.sh (server-4): Replace bogus directory with real one since
+ the server now checks it.
+
+1999-05-27 Jim Kingdon <http://www.cyclic.com>
+
+ * sanity.sh (spacefiles): Clean up -c, top, and -b at end.
+ (spacefiles, files): Fix bad references to CVSROOT_DIRNAME.
+
+ Fix two problems pointed out by Olaf Kirch of swb.de/caldera.de:
+ * server.c (outside_root): New function, contains expanded version
+ of code from serve_directory.
+ (serve_directory): Call outside_root.
+ (outside_dir): New function
+ (serve_modified, serve_is_modified, serve_notify,
+ serve_questionable, serve_unchanged): Call outside_dir.
+ * sanity.sh (server2): New tests, for these fixes.
+
+1999-05-26 Jim Kingdon <http://www.cyclic.com>
+
+ * cvs.h, subr.c (xmalloc): Return void* not char*, like xrealloc
+ has done for some time.
+ * modules.c (do_module): If we find the module as a directory/file
+ (rather than in the modules file), skip a bunch of processing
+ which was unnecessary and also broken in most of the cases
+ now tested for by the spacefiles sanity.sh test.
+ * sanity.sh (spacefiles): New test, for specifying filenames
+ (containing spaces, or starting with '-', or starting with '/') to
+ "cvs co".
+
+1999-05-25 Jim Kingdon <http://www.cyclic.com>
+
+ * client.c (update_entries): Make the old DONT_USE_PATCH code the
+ only code. This means that if people are still on CVS 1.9
+ servers, then CVS will fall back to transferring entire files.
+ This is better than looking for an external "patch" program which
+ causes no end of troubles (especially on Windows, but someone just
+ posted to info-cvs about a problem with the Solaris patch). (This
+ change was run by devel-cvs and feedback was positive).
+
+ * subr.c (xmalloc, xrealloc): The new error.c does not support
+ %lu; use sprintf instead.
+
+1999-05-25 Derek Price
+ <http://www-personal.engin.umich.edu/~oberon/resume.html>
+
+ * sanity.sh (server): Escaped a few more newlines in
+ another awk script. Solaris awk still don't like 'em.
+
+1999-05-25 Derek Price
+ <http://www-personal.engin.umich.edu/~oberon/resume.html>
+ and Jim Kingdon
+
+ * log.c: Remove comment which said "you can delete [this line]"
+ and which stuck around for over 3 years.
+ * sanity.sh (errmsg2 & tagdate): Added tests to prove the
+ current functionality with respect to combining -r and -D.
+
+1999-05-20 Larry Jones <larry.jones@sdrc.com>
+
+ * server.c (pserver_authenticate_connection): Previous changes
+ broke verify_and_exit (reported by Robert Fitzsimons, thanks).
+ * sanity.sh (pserver): New tests pserver-7 and pserver-8 for this.
+
+1999-05-18 Derek Price
+ <http://www-personal.engin.umich.edu/~oberon/resume.html>
+
+ * sanity.sh (keyword2): Escaped a newline in an awk script.
+ Apparently Solaris awk don't like 'em.
+
+1999-05-18 Jim Kingdon <http://www.cyclic.com>
+
+ * sanity.sh (basicc): Allow the behavior whereby unlink(".")
+ succeeds. Reported by Jeremy Buhler and Pavel Roskin.
+
+1999-05-17 Steve Cameron of Compaq
+
+ * sanity.sh: Modified to no longer use "test -e" for existence
+ test as it has turned out to be not portable enough. Instead use
+ "test -f", "test -d", etc.
+ [SCO Unixware 7 apparently doesn't always support it -kingdon]
+
+1999-05-17 Jim Kingdon <http://www.cyclic.com>
+
+ * version.c: Push version number to 1.10.6.1.
+
+ * version.c: Version 1.10.6.
+
+1999-05-16 Jim Kingdon <http://www.cyclic.com>
+
+ * update.c (patch_file): When we are passing vn_rcs to
+ RCS_checkout, pass vn_tag as well.
+ * sanity.sh (keyword): In test keyword-22, test for the fixed
+ behavior rather than the buggy behavior. Adjust keyword-23. Add
+ test keyword-24, to see whether keyword-23 really worked.
+
+1999-05-12 Larry Jones <larry.jones@sdrc.com>
+
+ * sanity.sh (pserver-4, pserver-5): Bogus error messages from
+ non-root initgroups on some 4.4BSD derived systems now show up
+ in different places in the output.
+
+1999-05-12 Jim Kingdon <http://www.cyclic.com>
+
+ * import.c (import): Don't allow the user to supply a repository
+ directory which takes us out of the cvsroot.
+ * sanity.sh (importc): New tests importc-10 to importc-12, for this.
+
+1999-05-11 Larry Jones <larry.jones@sdrc.com>
+
+ * server.c (serve_notify): Allocate enough memory to hold the
+ "misformed Notify request" message in pending_error_text.
+
+1999-05-11 Jim Kingdon <http://www.cyclic.com>
+
+ * server.c (switch_to_user): Ignore EPERM from initgroups. Fixes
+ pserver-4 in testsuite.
+ (pserver_authenticate_connection): Only print "I LOVE YOU" after
+ switch_to_user has come back successfully.
+
+ * server.c (pserver_authenticate_connection): Call error_exit
+ rather than reinventing the wheel ourselves.
+ (switch_to_user): Check for errors from setuid, setgid, and
+ initgroups. Fix the #ifdef's (the previous code would skip the
+ setuid call if SETXID_SUPPORT).
+
+1999-05-10 Jim Kingdon <http://www.cyclic.com>
+
+ * server.c (serve_notify), edit.c (notify_do): Check for
+ and reject characters which will get confused with delimiters.
+ * sanity.sh (server): New tests server-7 through server-15 test
+ for this and for other notify behaviors.
+
+ * rcs.c (RCS_tag2rev): Also look for a physical branch with
+ RCS_getversion.
+ * sanity.sh (tagf): Adjust tagf-12 and following tests to test for
+ the fixed behavior rather than the broken behavior.
+
+1999-05-07 Jim Kingdon <http://www.cyclic.com>
+
+ * server.c (server_notify): Also set last_node to NULL.
+ * sanity.sh (server): New tests server-6 and server-7, for this.
+
+1999-05-05 Jim Kingdon <http://www.cyclic.com>
+
+ * rcs.c (rcs_internal_lockfile): Remove unused variable lockfile.
+
+ * add.c (add): Look for directories with the same name in a
+ different case where appropriate (analogous to fopen_case).
+ In client code, add comment about how this doesn't do quite
+ everything.
+
+1999-05-03 Jim Meyering <meyering@ascend.com>
+
+ Remove rcs-style ,file, lock files upon signal.
+ * rcs.c (rcs_lockfile): New file-scoped global.
+ (rcs_cleanup): New function (similar to patch_cleanup).
+ (rcs_internal_lockfile): Register rcs_cleanup the first time this
+ function is called. Rename uses of local `lockfile' to refer to new
+ global, `rcs_lockfile'. Don't free the lock file name string, now
+ that it's global.
+ (rcs_internal_unlockfile): Rename `lockfile', as above, and carefully
+ free and NULL-out the global, rcs_lockfile.
+
+1999-04-30 Jim Kingdon <http://www.cyclic.com>
+
+ * rcs.c (annotate_fileproc): Don't cast NULL in passing it to
+ RCS_deltas. Because there is a prototype in scope the cast is
+ unnecessary (per HACKING's ANSI C or SunOS4 rule), and in fact it
+ was causing failures on UNICOS because it cast to size_t instead
+ of size_t*. (Thanks to Dean Kopesky for reporting this).
+
+1999-04-29 Jim Kingdon <http://www.cyclic.com>
+
+ * sanity.sh: If invoked without any arguments, print a usage
+ message (thanks to Pavel Roskin for a report/patch).
+
+ * run.c (piped_child): Make the error messages more verbose.
+ (close_on_exec): Reindent.
+ * sanity.sh (devcom3): Several errors are possible in devcom3-9a.
+ Adjust for change to piped_child error message.
+
+1999-04-28 Jim Kingdon <http://www.cyclic.com>
+
+ * sanity.sh (devcom3): Add some tests of the CVS/Notify file and
+ disconnected "cvs edit".
+
+ * main.c (opt_usage): Remove -b.
+
+1999-04-20 Derek Price
+ <http://www-personal.engin.umich.edu/~oberon/resume.html>
+
+ * rcs.c (RCS_delete_revs): RCS_delete_revs uses an
+ RCS_checkout call to get a new copy of a revision to be
+ used internally after old revisions were deleted and it was
+ performing keyword substitutions. This munged all the
+ the revisions of the file on the branch containing the
+ deleted revisions and its sub-branches, as the original they
+ were being patched from was incorrect. Corrected this by
+ passing in "-ko" as an option to RCS_checkout.
+ * sanity.sh (keywordlog): modified this test to verify the
+ correct behavior of 'cvs admin -o'.
+ [Fixed use of \$ in keywordlog test; added code in RCS_delete_revs
+ to abort on binary file on Windows -kingdon]
+
+1999-04-21 Derek Price
+ <http://www-personal.engin.umich.edu/~oberon/resume.html>
+ and Jim Kingdon
+
+ * tag.c (tag_check_valid): A bug was causing CVS to spin
+ indefinately when -j:<date> was specified. CVS now returns
+ an error.
+ * sanity.sh: Added a test (tagdate-12) to test this.
+
+1999-04-19 Jim Kingdon <http://www.cyclic.com>
+
+ * sanity.sh (backuprecover): Clean up the repository at the end.
+
+1999-04-18 Derek Price
+ <http://www-personal.engin.umich.edu/~oberon/resume.html>
+
+ * sanity.sh added a test (backuprecover) to test cvs behavior
+ with a repository that is out of date relative to the
+ developer's workspaces.
+ [Fix --keep code; move test to "Repository Storage" section since
+ it doesn't really exercise the diff/diff3 library. -kingdon]
+
+1999-04-13 Derek Price
+ <http://www-personal.engin.umich.edu/~oberon/resume.html>
+
+ * sanity.sh (diff): Tests to verify correct operation of
+ the --ifdef parameter to cvs diff.
+ [indentation fixed -kingdon].
+
+1999-04-13 Derek Price
+ <http://www-personal.engin.umich.edu/~oberon/resume.html>
+ for Noah Friedman <friedman@splode.com>
+
+ * diff.c (diff): Put "--ifdef=" in opts string, not "-D"; the
+ latter is confused by pserver for a date spec.
+
+1999-04-14 Jim Kingdon <http://www.cyclic.com>
+
+ * fileattr.h: Adjust comments to reflect the official version of
+ the fileattr format now being in cvs.texinfo.
+
+1999-04-05 Jim Kingdon
+
+ * sanity.sh (watch5): Remove nonstandard --keep code. Don't pass
+ -f to rm when cleaning up (that tends to mask bugs). Add watch5
+ to list of tests at start. Add comment explaining why we consider
+ the behavior we test for the right one. Rename a few tests which
+ had been erroneously named watch6* instead of watch5*.
+ * client.c (update_entries): Add comment with brief discussion of
+ whether there is a better way.
+
+1999-04-05 Derek Price
+ <http://www-personal.engin.umich.edu/~oberon/resume.html>
+
+ * client.c (update_entries): Only call mark_up_to_date
+ (which deletes the CVS/Base/<filename> file for watched
+ and edited files) on commit.
+ * sanity.sh: Make sure the CVS/Base/<filename> file for
+ a watched and edited file is not removed on a status or
+ update of a touched/unmodfied file.
+
+1999-03-30 Larry Jones <larry.jones@sdrc.com>
+
+ * client.c (get_responses_and_close), commit.c (commit),
+ update.c (do_update): If the sleep(1) call returns prematurely
+ (due to the way wakeup is scheduled or receiving a signal), do
+ it again.
+
+1999-03-26 Jim Kingdon <http://www.cyclic.com>
+
+ * server.c (server): Add comment about Gzip-stream vs. RQ_ROOTLESS.
+
+ * sanity.sh (modules3-11b): Adjust exact text of error message to
+ reflect 1999-03-24 change to dirswitch.
+
+1999-03-25 Jim Kingdon <http://www.cyclic.com>
+
+ * admin.c (admin): Make argument to -e optional, to match the
+ documentation.
+ * sanity.sh (admin-19a-2): Test for this.
+
+ * server.c (serve_root): Update comment about checking for missing
+ Root request.
+
+1999-03-24 Jim Kingdon <http://www.cyclic.com>
+
+ * server.c (dirswitch): Also check dir here, similar to
+ what server_pathname_check does for other cases.
+ * sanity.sh (files): Adjust files-14 to test for this.
+
+1999-03-24 Derek Price
+ <http://www-personal.engin.umich.edu/~oberon/resume.html>
+ and Jim Kingdon
+
+ * sanity.sh: added a test (files-13) to test .. indirection
+ in a path and another (files-14) to make sure we still fail
+ out when the '..' indirection takes us into the $CVSROOT
+ directory or beyond.
+
+1999-03-24 Larry Jones <larry.jones@sdrc.com>
+
+ * rcs.c: Change enum constants ADD and DELETE to something less
+ likely to run into conflicts.
+
+1999-03-21 Jim Kingdon <http://www.cyclic.com>
+
+ * sanity.sh (tagf): New test, tests for moving a branch tag to a
+ non-branch tag and trying to recover.
+
+1999-03-12 Jim Kingdon <http://www.cyclic.com>
+
+ * sanity.sh (branches): Tweak test branches-5 to test the case in
+ which one modifies a file and then branches it.
+
+1999-03-09 John Bley of duke.edu
+
+ * mkmodules.c (filelist): Missed a NULL in this struct (should
+ have 3 members, only had 2).
+
+1999-03-07 Jim Kingdon <http://www.cyclic.com>
+
+ * sanity.sh (Index): Rename new test from rm_CVS/Root to rmroot
+ (we don't have a formal rule about funky punctuation in test names
+ but both underscore and a slash is too funky for me :-)).
+ Reindent a few tests which were off.
+
+ * root.c: Remove the sentence which had the improper English;
+ there isn't really a need for that sentence and it isn't
+ particularly accurate any more.
+
+1999-02-27 Derek Price
+ <http://www-personal.engin.umich.edu/~oberon/resume.html>
+
+ * sanity.sh: Added rm_CVS/Root test to test that CVS uses
+ $CVSROOT rather than dumping core when running remotely and
+ the admin file CVS/Root is deleted from the workspace.
+
+ Also, altered a few 'cvs commit' 's in regular expressions to
+ fit the .${PROG} commit. portability syntax.
+
+ * recurse.c: Stopped CVS from dumping core in the case tested
+ above.
+
+ * root.c: Fixed somebody's improper english.
+
+1999-02-25 Larry Jones <larry.jones@sdrc.com>
+
+ * sanity.sh (keyword2-12): Use ${QUESTION} instead of ? in the
+ expected result.
+
+1999-02-24 Jim Kingdon <http://www.cyclic.com>
+
+ * sanity.sh (keyword2): Restore the original \\\$ instead of $.
+ The latter ends up working due to various kludgy semantics in the
+ shell and regular expressions, but the former is cleaner.
+
+ * sanity.sh (keyword2): Protect keywords against accidental
+ expansion in sanity.sh itself (most occurrences had this, but not
+ all).
+
+1999-02-23 Derek Price <http://www.cyclic.com>
+ and Jim Kingdon.
+
+ * sanity.sh (keyword2): New test, tests for merging with -kk.
+
+1999-02-22 Jim Kingdon <http://www.cyclic.com>
+
+ * version.c: Ease version number to 1.10.5.1.
+
+ * version.c: Version 1.10.5.
+
1999-02-18 Jim Kingdon <http://www.cyclic.com>
* sanity.sh (files): New test, for a relatively obscure spurious
diff --git a/gnu/usr.bin/cvs/src/add.c b/gnu/usr.bin/cvs/src/add.c
index fa569507ab6..db1f5278f71 100644
--- a/gnu/usr.bin/cvs/src/add.c
+++ b/gnu/usr.bin/cvs/src/add.c
@@ -172,9 +172,20 @@ add (argc, argv)
}
for (i = 0; i < argc; ++i)
+ {
/* FIXME: Does this erroneously call Create_Admin in error
conditions which are only detected once the server gets its
hands on things? */
+ /* FIXME-also: if filenames are case-insensitive on the
+ client, and the directory in the repository already
+ exists and is named "foo", and the command is "cvs add
+ FOO", this call to Create_Admin puts the wrong thing in
+ CVS/Repository and so a subsequent "cvs update" will
+ give an error. The fix will be to have the server report
+ back what it actually did (e.g. use tagged text for the
+ "Directory %s added" message), and then Create_Admin,
+ which should also fix the error handling concerns. */
+
if (isdir (argv[i]))
{
char *tag;
@@ -240,6 +251,7 @@ add (argc, argv)
free (repository);
free (filedir);
}
+ }
send_files (argc, argv, 0, 0, SEND_BUILD_DIRS | SEND_NO_CONTENTS);
send_file_names (argc, argv, SEND_EXPAND_WILD);
send_to_server ("add\012", 0);
@@ -258,6 +270,9 @@ add (argc, argv)
#endif
struct file_info finfo;
char *p;
+#if defined (SERVER_SUPPORT) && !defined (FILENAMES_CASE_INSENSITIVE)
+ char *found_name;
+#endif
memset (&finfo, 0, sizeof finfo);
@@ -294,6 +309,60 @@ add (argc, argv)
finfo.repository = repository;
finfo.entries = entries;
+#if defined (SERVER_SUPPORT) && !defined (FILENAMES_CASE_INSENSITIVE)
+ if (ign_case)
+ {
+ /* Need to check whether there is a directory with the
+ same name but different case. We'll check for files
+ with the same name later (when Version_TS calls
+ RCS_parse which calls fopen_case). If CVS some day
+ records directories in the RCS files, then we should be
+ able to skip the separate check here, which would be
+ cleaner. */
+ DIR *dirp;
+ struct dirent *dp;
+
+ dirp = CVS_OPENDIR (finfo.repository);
+ if (dirp == NULL)
+ error (1, errno, "cannot read directory %s", finfo.repository);
+ found_name = NULL;
+ errno = 0;
+ while ((dp = readdir (dirp)) != NULL)
+ {
+ if (cvs_casecmp (dp->d_name, finfo.file) == 0)
+ {
+ if (found_name != NULL)
+ error (1, 0, "%s is ambiguous; could mean %s or %s",
+ finfo.file, dp->d_name, found_name);
+ found_name = xstrdup (dp->d_name);
+ }
+ }
+ if (errno != 0)
+ error (1, errno, "cannot read directory %s", finfo.repository);
+ closedir (dirp);
+
+ if (found_name != NULL)
+ {
+ /* OK, we are about to patch up the name, so patch up
+ the temporary directory too to match. The isdir
+ should "always" be true (since files have ,v), but
+ I guess we might as well make some attempt to not
+ get confused by stray files in the repository. */
+ if (isdir (finfo.file))
+ {
+ if (CVS_MKDIR (found_name, 0777) < 0
+ && errno != EEXIST)
+ error (0, errno, "cannot create %s", finfo.file);
+ }
+
+ /* OK, we found a directory with the same name, maybe in
+ a different case. Treat it as if the name were the
+ same. */
+ finfo.file = found_name;
+ }
+ }
+#endif
+
/* We pass force_tag_match as 1. If the directory has a
sticky branch tag, and there is already an RCS file which
does not have that tag, then the head revision is
@@ -538,6 +607,10 @@ cannot resurrect %s; RCS file removed by second party", finfo.fullname);
free_cwd (&cwd);
free (finfo.fullname);
+#if defined (SERVER_SUPPORT) && !defined (FILENAMES_CASE_INSENSITIVE)
+ if (ign_case && found_name != NULL)
+ free (found_name);
+#endif
}
if (added_files)
error (0, 0, "use '%s commit' to add %s permanently",
diff --git a/gnu/usr.bin/cvs/src/fileattr.h b/gnu/usr.bin/cvs/src/fileattr.h
index 7e02b3a3cdb..046b97547ed 100644
--- a/gnu/usr.bin/cvs/src/fileattr.h
+++ b/gnu/usr.bin/cvs/src/fileattr.h
@@ -12,28 +12,24 @@
#ifndef FILEATTR_H
-/* File containing per-file attributes. Format is a series of entries:
+/* File containing per-file attributes. The format of this file is in
+ cvs.texinfo but here is a quick summary. The file contains a
+ series of entries:
ENT-TYPE FILENAME <tab> ATTRNAME = ATTRVAL
{; ATTRNAME = ATTRVAL} <linefeed>
- ENT-TYPE is 'F' for a file, in which case the entry specifies the
- attributes for that file.
+ ENT-TYPE is 'F' for a file.
- ENT-TYPE is 'D', and FILENAME empty, to specify default attributes
- to be used for newly added files.
+ ENT-TYPE is 'D', and FILENAME empty, for default attributes.
- Other ENT-TYPE are reserved for future expansion. CVS 1.9 and older
- will delete them any time it writes file attributes. Current versions
- of CVS will preserve them.
+ Other ENT-TYPE are reserved for future expansion.
Note that the order of the line is not significant; CVS is free to
rearrange them at its convenience.
- There is currently no way of quoting tabs or linefeeds in the
- filename, '=' in ATTRNAME, ';' in ATTRVAL, etc. I'm not sure
- whether I think we need one. Note: the current implementation also
- doesn't handle '\0' in any of the fields.
+ FIXME: this implementation doesn't handle '\0' in any of the
+ fields. We are encouraged to fix this (by cvs.texinfo).
By convention, ATTRNAME starting with '_' is for an attribute given
special meaning by CVS; other ATTRNAMEs are for user-defined attributes
diff --git a/gnu/usr.bin/cvs/src/run.c b/gnu/usr.bin/cvs/src/run.c
index 6d2c3b1cec6..41f445756d6 100644
--- a/gnu/usr.bin/cvs/src/run.c
+++ b/gnu/usr.bin/cvs/src/run.c
@@ -406,21 +406,21 @@ piped_child (command, tofdp, fromfdp)
if (pid == 0)
{
if (dup2 (to_child_pipe[0], STDIN_FILENO) < 0)
- error (1, errno, "cannot dup2");
+ error (1, errno, "cannot dup2 pipe");
if (close (to_child_pipe[1]) < 0)
- error (1, errno, "cannot close");
+ error (1, errno, "cannot close pipe");
if (close (from_child_pipe[0]) < 0)
- error (1, errno, "cannot close");
+ error (1, errno, "cannot close pipe");
if (dup2 (from_child_pipe[1], STDOUT_FILENO) < 0)
- error (1, errno, "cannot dup2");
+ error (1, errno, "cannot dup2 pipe");
execvp (command[0], command);
- error (1, errno, "cannot exec");
+ error (1, errno, "cannot exec %s", command[0]);
}
if (close (to_child_pipe[0]) < 0)
- error (1, errno, "cannot close");
+ error (1, errno, "cannot close pipe");
if (close (from_child_pipe[1]) < 0)
- error (1, errno, "cannot close");
+ error (1, errno, "cannot close pipe");
*tofdp = to_child_pipe[1];
*fromfdp = from_child_pipe[0];
@@ -433,7 +433,7 @@ close_on_exec (fd)
int fd;
{
#if defined (FD_CLOEXEC) && defined (F_SETFD)
- if (fcntl (fd, F_SETFD, 1))
- error (1, errno, "can't set close-on-exec flag on %d", fd);
+ if (fcntl (fd, F_SETFD, 1))
+ error (1, errno, "can't set close-on-exec flag on %d", fd);
#endif
}
diff --git a/gnu/usr.bin/cvs/src/sanity.sh b/gnu/usr.bin/cvs/src/sanity.sh
index 690398441ea..6130289c42d 100644
--- a/gnu/usr.bin/cvs/src/sanity.sh
+++ b/gnu/usr.bin/cvs/src/sanity.sh
@@ -97,12 +97,16 @@ fi
# Use full path for CVS executable, so that CVS_SERVER gets set properly
# for remote.
case $1 in
+"")
+ echo "Usage: `basename $0` [-r] [--keep] CVS-TO-TEST [TESTS-TO-RUN...]" 1>&2
+ exit 1
+ ;;
/*)
- testcvs=$1
- ;;
+ testcvs=$1
+ ;;
*)
- testcvs=`pwd`/$1
- ;;
+ testcvs=`pwd`/$1
+ ;;
esac
shift
@@ -281,13 +285,18 @@ dotest_internal ()
# so special-case it.
if test -z "$3"; then
if test -s ${TESTDIR}/dotest.tmp; then
- echo "** expected: " >>${LOGFILE}
- echo "$3" >>${LOGFILE}
- echo "$3" > ${TESTDIR}/dotest.exp
- rm -f ${TESTDIR}/dotest.ex2
- echo "** got: " >>${LOGFILE}
- cat ${TESTDIR}/dotest.tmp >>${LOGFILE}
- fail "$1"
+ if test x"$4" != x; then
+ # We want to match either the empty string or $4.
+ dotest_internal "$1" "$2" "$4"
+ else
+ echo "** expected: " >>${LOGFILE}
+ echo "$3" >>${LOGFILE}
+ echo "$3" > ${TESTDIR}/dotest.exp
+ rm -f ${TESTDIR}/dotest.ex2
+ echo "** got: " >>${LOGFILE}
+ cat ${TESTDIR}/dotest.tmp >>${LOGFILE}
+ fail "$1"
+ fi
else
pass "$1"
fi
@@ -557,10 +566,11 @@ RCSINIT=; export RCSINIT
if test x"$*" = x; then
# Basic/miscellaneous functionality
- tests="basica basicb basicc basic1 deep basic2 files commit-readonly"
+ tests="basica basicb basicc basic1 deep basic2"
+ tests="${tests} files spacefiles commit-readonly"
# Branching, tagging, removing, adding, multiple directories
tests="${tests} rdiff diff death death2 rmadd rmadd2 dirs dirs2"
- tests="${tests} branches branches2 tagc"
+ tests="${tests} branches branches2 tagc tagf"
tests="${tests} rcslib multibranch import importb importc"
tests="${tests} import-after-initial"
tests="${tests} join join2 join3 join-readonly-conflict"
@@ -572,7 +582,7 @@ if test x"$*" = x; then
# Log messages, error messages.
tests="${tests} mflag editor errmsg1 errmsg2"
# Watches, binary files, history browsing, &c.
- tests="${tests} devcom devcom2 devcom3 watch4"
+ tests="${tests} devcom devcom2 devcom3 watch4 watch5"
tests="${tests} unedit-without-baserev"
tests="${tests} ignore binfiles binfiles2 binfiles3"
tests="${tests} mcopy binwrap binwrap2"
@@ -580,14 +590,14 @@ if test x"$*" = x; then
tests="${tests} serverpatch log log2 ann ann-id"
# Repository Storage (RCS file format, CVS lock files, creating
# a repository without "cvs init", &c).
- tests="${tests} crerepos rcs rcs2 rcs3 lockfiles"
+ tests="${tests} crerepos rcs rcs2 rcs3 lockfiles backuprecover"
# More history browsing, &c.
tests="${tests} history"
tests="${tests} big modes modes2 modes3 stamps"
# PreservePermissions stuff: permissions, symlinks et al.
- tests="${tests} perms symlinks hardlinks"
+ tests="${tests} perms symlinks symlinks2 hardlinks"
# More tag and branch tests, keywords.
- tests="${tests} sticky keyword keywordlog"
+ tests="${tests} sticky keyword keyword2 keywordlog"
tests="${tests} head tagdate multibranch2 tag8k"
# "cvs admin", reserved checkouts.
tests="${tests} admin reserved"
@@ -597,7 +607,7 @@ if test x"$*" = x; then
tests="${tests} release"
# Multiple root directories and low-level protocol tests.
tests="${tests} multiroot multiroot2 multiroot3 multiroot4"
- tests="${tests} reposmv pserver server client"
+ tests="${tests} rmroot reposmv pserver server server2 client"
else
tests="$*"
fi
@@ -1174,13 +1184,24 @@ ${PROG} [a-z]*: Updating second-dir"
cd first-dir
dotest basicc-6 "${testcvs} release -d" ""
dotest basicc-7 "test -d ../first-dir" ""
+ # The Linux 2.2 kernel lets you delete ".". That's OK either way,
+ # the point is that CVS must not mess with anything *outside* "."
+ # the way that CVS 1.10 and older tried to.
dotest basicc-8 "${testcvs} -Q release -d ." \
-"${PROG} release: deletion of directory \. failed: .*"
+"" "${PROG} release: deletion of directory \. failed: .*"
dotest basicc-9 "test -d ../second-dir" ""
- dotest basicc-10 "test -d ../first-dir" ""
# For CVS to make a syntactic check for "." wouldn't suffice.
+ # On Linux 2.2 systems, the cwd may be gone, so we recreate it
+ # to allow basicc-11 to actually happen
+ if ! test -d ../first-dir; then
+ cd ..
+ mkdir ./first-dir
+ cd ./first-dir
+ fi
dotest basicc-11 "${testcvs} -Q release -d ./." \
-"${PROG} release: deletion of directory \./\. failed: .*"
+"" "${PROG} release: deletion of directory \./\. failed: .*"
+ dotest basicc-11a "test -d ../second-dir" ""
+
cd ..
cd ..
@@ -2173,6 +2194,20 @@ done"
"${testcvs} commit -f -m test ./sdir/ssdir/.file ./.file" \
"${PROG} server: Up-to-date check failed for .\.file'
${PROG} \[server aborted\]: correct above errors first!"
+
+ # Sync up the version numbers so that the rest of the
+ # tests don't need to expect different numbers based
+ # local or remote.
+ dotest files-12-workaround \
+"${testcvs} commit -f -m test sdir/ssdir/.file .file" \
+"Checking in sdir/ssdir/\.file;
+${TESTDIR}/cvsroot/first-dir/dir/sdir/ssdir/Attic/\.file,v <-- \.file
+new revision: 1\.1\.2\.3; previous revision: 1\.1\.2\.2
+done
+Checking in \.file;
+${TESTDIR}/cvsroot/first-dir/dir/Attic/\.file,v <-- \.file
+new revision: 1\.1\.2\.3; previous revision: 1\.1\.2\.2
+done"
else
dotest files-12 \
"${testcvs} commit -f -m test ./sdir/ssdir/.file ./.file" \
@@ -2185,10 +2220,130 @@ ${TESTDIR}/cvsroot/first-dir/dir/Attic/\.file,v <-- \.file
new revision: 1\.1\.2\.3; previous revision: 1\.1\.2\.2
done"
fi
+ dotest files-13 \
+"${testcvs} commit -fmtest ./sdir/../sdir/ssdir/..///ssdir/.file" \
+"Checking in \./sdir/\.\./sdir/ssdir/\.\.///ssdir/\.file;
+${TESTDIR}/cvsroot/first-dir/dir/sdir/ssdir/Attic/\.file,v <-- \.file
+new revision: 1\.1\.2\.4; previous revision: 1\.1\.2\.3
+done"
+ if test "$remote" = yes; then
+ dotest_fail files-14 \
+"${testcvs} commit -fmtest ../../first-dir/dir/.file" \
+"protocol error: .\.\./\.\./first-dir/dir' has too many \.\."
+ else
+ dotest files-14 \
+"${testcvs} commit -fmtest ../../first-dir/dir/.file" \
+"Checking in \.\./\.\./first-dir/dir/\.file;
+${TESTDIR}/cvsroot/first-dir/dir/Attic/\.file,v <-- \.file
+new revision: 1\.1\.2\.4; previous revision: 1\.1\.2\.3
+done"
+ fi
cd ../../..
rm -r 1
- rm -rf ${CVSROOT_DIRECTORY}/first-dir
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
+ ;;
+
+ spacefiles)
+ # More filename tests, in particular spaces in file names.
+ # If we start using eval in dotest, this test should become
+ # easier to write (in fact, it may be possible to just
+ # change a few of the names in basica or some other test,
+ # always good to keep the testsuite concise).
+
+ # I wrote this test to worry about problems in do_module;
+ # but then I found that the CVS server has its own problems
+ # with filenames starting with "-". Work around it for now.
+ if test "$remote" = yes; then
+ dashb=dashb
+ dashc=dashc
+ else
+ dashb=-b
+ dashc=-c
+ fi
+
+ mkdir 1; cd 1
+ dotest spacefiles-1 "${testcvs} -q co -l ." ""
+ touch ./${dashc} top
+ dotest spacefiles-2 "${testcvs} add -- ${dashc} top" \
+"${PROG} [a-z]*: scheduling file .${dashc}. for addition
+${PROG} [a-z]*: scheduling file .top. for addition
+${PROG} [a-z]*: use .${PROG} commit. to add these files permanently"
+ dotest spacefiles-3 "${testcvs} -q ci -m add" \
+"RCS file: ${TESTDIR}/cvsroot/${dashc},v
+done
+Checking in ${dashc};
+${TESTDIR}/cvsroot/${dashc},v <-- ${dashc}
+initial revision: 1\.1
+done
+RCS file: ${TESTDIR}/cvsroot/top,v
+done
+Checking in top;
+${TESTDIR}/cvsroot/top,v <-- top
+initial revision: 1\.1
+done"
+ mkdir 'first dir'
+ if ${testcvs} add 'first dir' >${TESTDIR}/output.tmp 2>&1; then
+ dotest spacefiles-4 "cat ${TESTDIR}/output.tmp" \
+"Directory ${TESTDIR}/cvsroot/first dir added to the repository"
+ else
+ fail spacefiles-4
+ fi
+ mkdir ./${dashb}
+ dotest spacefiles-5 "${testcvs} add -- ${dashb}" \
+"Directory ${TESTDIR}/cvsroot/${dashb} added to the repository"
+ cd 'first dir'
+ touch 'a file'
+ if ${testcvs} add 'a file' >${TESTDIR}/output.tmp 2>&1; then
+ dotest spacefiles-6 "cat ${TESTDIR}/output.tmp" \
+"${PROG} [a-z]*: scheduling file .a file. for addition
+${PROG} [a-z]*: use .${PROG} commit. to add this file permanently"
+ else
+ fail spacefiles-6
+ fi
+ dotest spacefiles-7 "${testcvs} -q ci -m add" \
+"RCS file: ${TESTDIR}/cvsroot/first dir/a file,v
+done
+Checking in a file;
+${TESTDIR}/cvsroot/first dir/a file,v <-- a file
+initial revision: 1\.1
+done"
+ dotest spacefiles-8 "${testcvs} -q tag new-tag" "T a file"
+ cd ../..
+
+ mkdir 2; cd 2
+ # Leading slash strikes me as kind of oddball, but there is
+ # a special case for it in do_module. And (in the case of
+ # "top", rather than "-c") it has worked in CVS 1.10.6 and
+ # presumably back to CVS 1.3 or so.
+ dotest spacefiles-9 "${testcvs} -q co -- /top" "U \./top"
+ dotest spacefiles-10 "${testcvs} co -- ${dashb}" \
+"${PROG} [a-z]*: Updating ${dashb}"
+ dotest spacefiles-11 "${testcvs} -q co -- ${dashc}" "U \./${dashc}"
+ rm ./${dashc}
+ dotest spacefiles-12 "${testcvs} -q co -- /${dashc}" "U \./${dashc}"
+ if ${testcvs} -q co 'first dir' >${TESTDIR}/output.tmp 2>&1; then
+ dotest spacefiles-13 "cat ${TESTDIR}/output.tmp" \
+"U first dir/a file"
+ else
+ fail spacefiles-13
+ fi
+ cd ..
+
+ mkdir 3; cd 3
+ if ${testcvs} -q co 'first dir/a file' >${TESTDIR}/output.tmp 2>&1
+ then
+ dotest spacefiles-14 "cat ${TESTDIR}/output.tmp" \
+"U first dir/a file"
+ else
+ fail spacefiles-14
+ fi
+ cd ..
+
+ rm -r 1 2 3
+ rm -rf "${CVSROOT_DIRNAME}/first dir"
+ rm -r ${CVSROOT_DIRNAME}/${dashb}
+ rm -f ${CVSROOT_DIRNAME}/${dashc},v ${CVSROOT_DIRNAME}/top,v
;;
commit-readonly)
@@ -2357,6 +2512,41 @@ diff -c /dev/null trdiff/new:1\.1
# diff says "I know nothing". Shrug.
dotest_fail diff-3 "${testcvs} diff xyzpdq" \
"${PROG} [a-z]*: I know nothing about xyzpdq"
+ touch abc
+ dotest diff-4 "${testcvs} add abc" \
+"${PROG} [a-z]*: scheduling file .abc. for addition
+${PROG} [a-z]*: use .${PROG} commit. to add this file permanently"
+ dotest diff-5 "${testcvs} -q ci -mtest" \
+"RCS file: ${TESTDIR}/cvsroot/first-dir/abc,v
+done
+Checking in abc;
+${TESTDIR}/cvsroot/first-dir/abc,v <-- abc
+initial revision: 1\.1
+done"
+ echo "extern int gethostname ();" >abc
+ dotest diff-6 "${testcvs} -q ci -mtest" \
+"Checking in abc;
+${TESTDIR}/cvsroot/first-dir/abc,v <-- abc
+new revision: 1\.2; previous revision: 1\.1
+done"
+ echo "#include <winsock.h>" >abc
+ # check the behavior of the --ifdef=MACRO option
+ dotest_fail diff-7 "${testcvs} -q diff --ifdef=HAVE_WINSOCK_H" \
+"Index: abc
+===================================================================
+RCS file: ${TESTDIR}/cvsroot/first-dir/abc,v
+retrieving revision 1\.2
+diff --ifdef=HAVE_WINSOCK_H -r1\.2 abc
+#ifndef HAVE_WINSOCK_H
+extern int gethostname ();
+#else /\* HAVE_WINSOCK_H \*/
+#include <winsock\.h>
+#endif /\* HAVE_WINSOCK_H \*/"
+
+ if test "$keep" = yes; then
+ echo Keeping ${TESTDIR} and exiting due to --keep
+ exit 0
+ fi
cd ../..
rm -rf ${CVSROOT_DIRNAME}/first-dir
@@ -3264,6 +3454,7 @@ Checking in file1;
${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
initial revision: 1\.1
done"
+ dotest rmadd2-4a "${testcvs} -Q tag tagone" ""
dotest rmadd2-5 "${testcvs} rm -f file1" \
"${PROG} [a-z]*: scheduling .file1. for removal
${PROG} [a-z]*: use .${PROG} commit. to remove this file permanently"
@@ -3306,6 +3497,28 @@ done"
${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
new revision: delete; previous revision: 1\.5
done"
+ dotest rmadd2-16 "${testcvs} log -h file1" "
+RCS file: ${TESTDIR}/cvsroot/first-dir/Attic/file1,v
+Working file: file1
+head: 1\.6
+branch:
+locks: strict
+access list:
+symbolic names:
+ tagone: 1\.1
+keyword substitution: kv
+total revisions: 6
+============================================================================="
+ dotest rmadd2-17 "${testcvs} status -v file1" \
+"===================================================================
+File: no file file1 Status: Up-to-date
+
+ Working revision: No entry for file1
+ Repository revision: 1\.6 ${TESTDIR}/cvsroot/first-dir/Attic/file1,v
+
+ Existing Tags:
+ tagone (revision: 1.1)"
+
cd ../..
rm -r 1
@@ -3485,7 +3698,7 @@ ${PROG} update: cannot open CVS/Tag: No such file or directory"
else
dotest_fail dirs2-10 "${testcvs} update -d -r br" \
"${PROG} update: in directory sdir:
-${PROG} \[update aborted\]: there is no version here; do 'cvs checkout' first"
+${PROG} \[update aborted\]: there is no version here; do '${PROG} checkout' first"
fi
cd ../..
@@ -3585,14 +3798,18 @@ done"
T file2
T file3
T file4"
+ # Modify this file before branching, to deal with the case where
+ # someone is hacking along, says "oops, I should be doing this on
+ # a branch", and only then creates the branch.
+ echo 1:br1 >file1
dotest branches-4 "${testcvs} tag -b br1" "${PROG}"' [a-z]*: Tagging \.
T file1
T file2
T file3
T file4'
dotest branches-5 "${testcvs} update -r br1" \
-"${PROG}"' [a-z]*: Updating \.'
- echo 1:br1 >file1
+"${PROG} [a-z]*: Updating \.
+M file1"
echo 2:br1 >file2
echo 4:br1 >file4
dotest branches-6 "${testcvs} -q ci -m modify" \
@@ -4077,6 +4294,120 @@ ${PROG} \[[a-z]* aborted\]: correct the above errors first!"
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
+ tagf)
+ # More tagging tests, including using tag -F to convert a
+ # branch tag to a regular tag and recovering thereof.
+
+ # Setup; check in first-dir/file1
+ mkdir 1; cd 1
+ dotest tagf-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest tagf-2 "${testcvs} add first-dir" \
+"Directory ${TESTDIR}/cvsroot/first-dir added to the repository"
+ cd first-dir
+ touch file1 file2
+ dotest tagf-3 "${testcvs} add file1 file2" \
+"${PROG} [a-z]*: scheduling file .file1. for addition
+${PROG} [a-z]*: scheduling file .file2. for addition
+${PROG} [a-z]*: use .${PROG} commit. to add these files permanently"
+ dotest tagf-4 "${testcvs} -q ci -m add" \
+"RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
+done
+Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
+initial revision: 1\.1
+done
+RCS file: ${TESTDIR}/cvsroot/first-dir/file2,v
+done
+Checking in file2;
+${TESTDIR}/cvsroot/first-dir/file2,v <-- file2
+initial revision: 1\.1
+done"
+
+ # Now create a branch and commit a revision there.
+ dotest tagf-5 "${testcvs} -q tag -b br" "T file1
+T file2"
+ dotest tagf-6 "${testcvs} -q update -r br" ""
+ echo brmod >> file1
+ echo brmod >> file2
+ dotest tagf-7 "${testcvs} -q ci -m modify" \
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
+new revision: 1\.1\.2\.1; previous revision: 1\.1
+done
+Checking in file2;
+${TESTDIR}/cvsroot/first-dir/file2,v <-- file2
+new revision: 1\.1\.2\.1; previous revision: 1\.1
+done"
+ # Here we make it a non-branch tag. Some think this should
+ # be an error. But if -F means "I want to put this tag here,
+ # never mind whether there was a tag of that name before", then
+ # an error wouldn't fit.
+ dotest tagf-8 "${testcvs} -q tag -F br" "T file1
+T file2"
+ echo moremod >> file1
+ echo moremod >> file2
+ dotest tagf-9 "${testcvs} -q status -v file1" \
+"===================================================================
+File: file1 Status: Locally Modified
+
+ Working revision: 1\.1\.2\.1.*
+ Repository revision: 1\.1\.2\.1 ${TESTDIR}/cvsroot/first-dir/file1,v
+ Sticky Tag: br (revision: 1\.1\.2\.1)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+ Existing Tags:
+ br (revision: 1\.1\.2\.1)"
+
+ # Now, how do we recover?
+ dotest tagf-10 "${testcvs} -q tag -d br" "D file1
+D file2"
+ # This creates a new branch, 1.1.4. See the code in RCS_magicrev
+ # which will notice that there is a (non-magic) 1.1.2 and thus
+ # skip that number.
+ dotest tagf-11 "${testcvs} -q tag -r 1.1 -b br file1" "T file1"
+ # Fix it with admin -n (cf admin-18, admin-26-4).
+ dotest tagf-12 "${testcvs} -q admin -nbr:1.1.2 file2" \
+"RCS file: ${TESTDIR}/cvsroot/first-dir/file2,v
+done"
+ # Another variation on the file2 test would be to use two working
+ # directories so that the update -r br would need to
+ # a merge to get from 1.1.2.1 to the head of the 1.1.2 branch.
+ dotest tagf-13 "${testcvs} -q update -r br" \
+"RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
+retrieving revision 1\.1\.2\.1
+retrieving revision 1\.1
+Merging differences between 1\.1\.2\.1 and 1\.1 into file1
+rcsmerge: warning: conflicts during merge
+${PROG} [a-z]*: conflicts found in file1
+C file1
+M file2"
+ # CVS is giving a conflict because we are trying to get back to
+ # 1.1.4. I'm not sure why it is a conflict rather than just
+ # "M file1".
+ dotest tagf-14 "cat file1" \
+"<<<<<<< file1
+brmod
+moremod
+[=]======
+[>]>>>>>> 1\.1"
+ echo resolve >file1
+ dotest tagf-15 "${testcvs} -q ci -m recovered" \
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
+new revision: 1\.1\.4\.1; previous revision: 1\.1
+done
+Checking in file2;
+${TESTDIR}/cvsroot/first-dir/file2,v <-- file2
+new revision: 1\.1\.2\.2; previous revision: 1\.1\.2\.1
+done"
+ cd ../..
+
+ rm -r 1
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
+ ;;
+
rcslib)
# Test librarification of RCS.
# First: test whether `cvs diff' handles $Name expansion
@@ -4814,7 +5145,7 @@ ${PROG} [a-z]*: Updating bdir/subdir"
# 1.9 did not).
dotest_fail importc-7 "${testcvs} -q ci -m modify -r wip_test" \
"${PROG} [a-z]*: in directory adir/sub1/ssdir:
-${PROG} \[[a-z]* aborted\]: there is no version here; do .cvs checkout. first"
+${PROG} \[[a-z]* aborted\]: there is no version here; do .${PROG} checkout. first"
# The workaround is to leave off the "-r wip_test".
dotest importc-8 "${testcvs} -q ci -m modify" \
"Checking in cdir/cfile;
@@ -4888,7 +5219,17 @@ import-it
============================================================================="
cd ..
+ # Now tests of absolute pathnames and .. as repository directory.
+ cd ../1
+ dotest_fail importc-10 \
+"${testcvs} import -m imp ../other vendor release2" \
+"${PROG} \[[a-z]* aborted\]: directory \.\./other not relative within the repository"
+ dotest_fail importc-11 \
+"${testcvs} import -m imp ${TESTDIR}/other vendor release3" \
+"${PROG} \[[a-z]* aborted\]: directory ${TESTDIR}/other not relative within the repository"
+ dotest_fail importc-12 "test -d ${TESTDIR}/other" ""
cd ..
+
rm -r 1 2
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
@@ -6132,7 +6473,7 @@ ${PROG} [a-z]*: use .${PROG} commit. to remove this file permanently"
# Haven't investigated this one.
dotest_fail conflicts2-142b8 "${testcvs} add first-dir/a" \
"${PROG} add: in directory \.:
-${PROG} \[add aborted\]: there is no version here; do 'cvs checkout' first"
+${PROG} \[add aborted\]: there is no version here; do '${PROG} checkout' first"
cd first-dir
fi
@@ -7137,7 +7478,7 @@ done"
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"
+"absolute pathname .${TESTDIR}/1/src/sub1/sub2/sub3/dir. illegal for server"
fi # end of remote-only tests
cd ..
@@ -9729,6 +10070,10 @@ Checking in first-dir/sdir10/ssdir/ssfile;
${TESTDIR}/cvsroot/first-dir/sdir10/ssdir/ssfile,v <-- ssfile
initial revision: 1\.1
done"
+ dotest errmsg2-18 "${testcvs} -Q tag test" ''
+
+ dotest_fail errmsg2-19 "${testcvs} annotate -rtest -Dyesterday" \
+"${PROG} \[[a-z]* aborted\]: rcsbuf_open: internal error"
cd ..
rm -r 1
@@ -10078,6 +10423,31 @@ Fw1 _watched=
Enew line here
G@#..!@#=&"
+ # Now test disconnected "cvs edit" and the format of the
+ # CVS/Notify file.
+ if test "$remote" = yes; then
+ CVS_SERVER_SAVED=${CVS_SERVER}
+ CVS_SERVER=${TESTDIR}/cvs-none; export CVS_SERVER
+
+ # The ${DOTSTAR} matches the exact exec error message
+ # (which varies) and either "end of file from server"
+ # (if the process doing the exec exits before the parent
+ # gets around to sending data to it) or "broken pipe" (if it
+ # is the other way around).
+ dotest_fail devcom3-9a "${testcvs} edit w1" \
+"${PROG} \[edit aborted\]: cannot exec ${TESTDIR}/cvs-none: ${DOTSTAR}"
+ dotest devcom3-9b "test -w w1" ""
+ dotest devcom3-9c "cat CVS/Notify" \
+"Ew1 [SMTWF][uoehra][neduit] [JFAMSOND][aepuco][nbrylgptvc] [0-9 ][0-9] [0-9:]* [0-9][0-9][0-9][0-9] GMT [-a-zA-Z_.0-9]* ${TESTDIR}/1/first-dir EUC"
+ CVS_SERVER=${CVS_SERVER_SAVED}; export CVS_SERVER
+ dotest devcom3-9d "${testcvs} -q update" ""
+ dotest_fail devcom3-9e "test -f CVS/Notify" ""
+ dotest devcom3-9f "${testcvs} watchers w1" \
+"w1 ${username} tedit tunedit tcommit"
+ dotest devcom3-9g "${testcvs} unedit w1" ""
+ dotest devcom3-9h "${testcvs} watchers w1" ""
+ fi
+
cd ../..
# OK, now change the tab to a space, and see that CVS gives
# a reasonable error (this is database corruption but CVS should
@@ -10187,6 +10557,71 @@ C file1"
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
+ watch5)
+ # This test was designed to catch a problem in server
+ # mode where an 'cvs edit'd file disappeared from the
+ # CVS/Base directory when 'cvs status' or 'cvs update'
+ # was called on the file after the file was touched.
+ #
+ # This test is still here to prevent the bug from
+ # being reintroduced.
+ #
+ # The rationale for having CVS/Base stay around is that
+ # CVS/Base should be there if "cvs edit" has been run (this
+ # may be helpful as a "cvs editors" analogue, it is
+ # client-side and based on working directory not username;
+ # but more importantly, it isn't clear why a "cvs status"
+ # would act like an unedit, and even if it does, it would
+ # need to make the file read-only again).
+
+ mkdir watch5; cd watch5
+ dotest watch5-0a "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest watch5-0b "${testcvs} add first-dir" \
+"Directory ${TESTDIR}/cvsroot/first-dir added to the repository"
+
+ cd first-dir
+ dotest watch5-1 "${testcvs} watch on" ''
+ # This is just like the 173 test
+ touch file1
+ dotest watch5-2 "${testcvs} add file1" \
+"${PROG} [a-z]*: scheduling file .file1. for addition
+${PROG} [a-z]*: use .${PROG} commit. to add this file permanently"
+ dotest watch5-3 "${testcvs} -q ci -m add" \
+"RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
+done
+Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
+initial revision: 1\.1
+done"
+ dotest watch5-4 "${testcvs} edit file1" ''
+ dotest watch5-5 "test -f CVS/Base/file1" ''
+ if ${testcvs} status file1 >>${LOGFILE} 2>&1; then
+ pass watch5-6
+ else
+ fail watch5-6
+ fi
+ dotest watch5-7 "test -f CVS/Base/file1" ''
+
+ # Here's where the file used to dissappear
+ touch file1
+ if ${testcvs} status file1 >>${LOGFILE} 2>&1; then
+ pass watch5-8
+ else
+ fail watch5-8
+ fi
+ dotest watch5-10 "test -f CVS/Base/file1" ''
+
+ # Make sure update won't remove the file either
+ touch file1
+ dotest watch5-11 "${testcvs} -q up" ''
+ dotest watch5-12 "test -f CVS/Base/file1" ''
+
+ cd ../..
+ rm -r watch5
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
+ ;;
+
unedit-without-baserev)
mkdir 1; cd 1
module=x
@@ -10912,7 +11347,7 @@ done"
cp ../binfile.dat file1
dotest binfiles3-6 "${testcvs} add -kb file1" \
"${PROG} [a-z]*: re-adding file file1 (in place of dead revision 1\.2)
-${PROG} [a-z]*: use .cvs commit. to add this file permanently"
+${PROG} [a-z]*: use .${PROG} commit. to add this file permanently"
# The idea behind this test is to make sure that the file
# gets opened in binary mode to send to "cvs ci".
dotest binfiles3-6a "cat CVS/Entries" \
@@ -13295,6 +13730,12 @@ EOF
# features, which always seems to be problematic since then
# someone feels like documenting them and things go downhill
# from there).
+ #
+ # Hmm, if this test is run on the 31st of the month, and 100
+ # months from now is a month with only 30 days (e.g. run on
+ # 31 May 1999), it seems to fail.
+ #
+ # Sigh.
if ${testcvs} -q update -p -D '100 months' file1 \
>${TESTDIR}/rcs4.tmp 2>&1
then
@@ -13460,6 +13901,297 @@ ${PROG} [a-z]*: Rebuilding administrative file database"
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
+ backuprecover)
+ # Tests to make sure we get the expected behavior
+ # when we recover a repository from an old backup
+ #
+ # Details:
+ # Backup will be older than some developer's workspaces
+ # This means the first attempt at an update will fail
+ # The workaround for this is to replace the CVS
+ # directories with those from a "new" checkout from
+ # the recovered repository. Due to this, multiple
+ # merges should cause conflicts (the same data
+ # will be merged more than once).
+ # A workspace updated before the date of the recovered
+ # copy will not need any extra attention
+ #
+ # Note that backuprecover-15 is probably a failure case
+ # If nobody else had a more recent update, the data would be lost
+ # permanently
+ # Granted, the developer should have been notified not to do this
+ # by now, but still...
+ #
+ mkdir backuprecover; cd backuprecover
+ mkdir 1; cd 1
+ dotest backuprecover-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest backuprecover-2 "${testcvs} add first-dir" \
+"Directory ${TESTDIR}/cvsroot/first-dir added to the repository"
+ cd first-dir
+ mkdir dir
+ dotest backuprecover-3 "${testcvs} add dir" \
+"Directory ${TESTDIR}/cvsroot/first-dir/dir added to the repository"
+ touch file1 dir/file2
+ dotest backuprecover-4 "${testcvs} -q add file1 dir/file2" \
+"${PROG} [a-z]*: use '${PROG} commit' to add these files permanently"
+ dotest backuprecover-5 "${testcvs} -q ci -mtest" \
+"RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
+done
+Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
+initial revision: 1\.1
+done
+RCS file: ${TESTDIR}/cvsroot/first-dir/dir/file2,v
+done
+Checking in dir/file2;
+${TESTDIR}/cvsroot/first-dir/dir/file2,v <-- file2
+initial revision: 1\.1
+done"
+ echo "Line one" >>file1
+ echo " is the place" >>file1
+ echo " we like to begin" >>file1
+ echo "Anything else" >>file1
+ echo " looks like" >>file1
+ echo " a sin" >>file1
+ echo "File 2" >>dir/file2
+ echo " is the place" >>dir/file2
+ echo " the rest of it goes" >>dir/file2
+ echo "Why I don't use" >>dir/file2
+ echo " something like 'foo'" >>dir/file2
+ echo " God only knows" >>dir/file2
+ dotest backuprecover-6 "${testcvs} -q ci -mtest" \
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
+new revision: 1\.2; previous revision: 1\.1
+done
+Checking in dir/file2;
+${TESTDIR}/cvsroot/first-dir/dir/file2,v <-- file2
+new revision: 1\.2; previous revision: 1\.1
+done"
+
+ # Simulate the lazy developer
+ # (he did some work but didn't check it in...)
+ cd ../..
+ mkdir 2; cd 2
+ dotest backuprecover-7 "${testcvs} -Q co first-dir" ''
+ cd first-dir
+ sed -e"s/looks like/just looks like/" file1 >tmp; mv tmp file1
+ sed -e"s/don't use/don't just use/" dir/file2 >tmp; mv tmp dir/file2
+
+ # developer 1 is on a roll
+ cd ../../1/first-dir
+ echo "I need some more words" >>file1
+ echo " to fill up this space" >>file1
+ echo " anything else would be a disgrace" >>file1
+ echo "My rhymes cross many boundries" >>dir/file2
+ echo " this time it's files" >>dir/file2
+ echo " a word that fits here would be something like dials" >>dir/file2
+ dotest backuprecover-8 "${testcvs} -q ci -mtest" \
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
+new revision: 1\.3; previous revision: 1\.2
+done
+Checking in dir/file2;
+${TESTDIR}/cvsroot/first-dir/dir/file2,v <-- file2
+new revision: 1\.3; previous revision: 1\.2
+done"
+
+ # Save a backup copy
+ cp -r ${TESTDIR}/cvsroot/first-dir ${TESTDIR}/cvsroot/backup
+
+ # Simulate developer 3
+ cd ../..
+ mkdir 3; cd 3
+ dotest backuprecover-9a "${testcvs} -Q co first-dir" ''
+ cd first-dir
+ echo >>file1
+ echo >>dir/file2
+ echo "Developer 1 makes very lame rhymes" >>file1
+ echo " I think he should quit and become a mime" >>file1
+ echo "What the %*^# kind of rhyme crosses a boundry?" >>dir/file2
+ echo " I think you should quit and get a job in the foundry" >>dir/file2
+ dotest backuprecover-9b "${testcvs} -q ci -mtest" \
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
+new revision: 1\.4; previous revision: 1\.3
+done
+Checking in dir/file2;
+${TESTDIR}/cvsroot/first-dir/dir/file2,v <-- file2
+new revision: 1\.4; previous revision: 1\.3
+done"
+
+ # Developer 4 so we can simulate a conflict later...
+ cd ../..
+ mkdir 4; cd 4
+ dotest backuprecover-10 "${testcvs} -Q co first-dir" ''
+ cd first-dir
+ sed -e"s/quit and/be fired so he can/" dir/file2 >tmp; mv tmp dir/file2
+
+ # And back to developer 1
+ cd ../../1/first-dir
+ dotest backuprecover-11 "${testcvs} -Q update" ''
+ echo >>file1
+ echo >>dir/file2
+ echo "Oh yeah, well rhyme this" >>file1
+ echo " developer three" >>file1
+ echo " you want opposition" >>file1
+ echo " you found some in me!" >>file1
+ echo "I'll give you mimes" >>dir/file2
+ echo " and foundries galore!" >>dir/file2
+ echo " your head will spin" >>dir/file2
+ echo " once you find what's in store!" >>dir/file2
+ dotest backuprecover-12 "${testcvs} -q ci -mtest" \
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
+new revision: 1\.5; previous revision: 1\.4
+done
+Checking in dir/file2;
+${TESTDIR}/cvsroot/first-dir/dir/file2,v <-- file2
+new revision: 1\.5; previous revision: 1\.4
+done"
+
+ # developer 3'll do a bit of work that never gets checked in
+ cd ../../3/first-dir
+ dotest backuprecover-13 "${testcvs} -Q update" ''
+ sed -e"s/very/some extremely/" file1 >tmp; mv tmp file1
+ dotest backuprecover-14 "${testcvs} -q ci -mtest" \
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
+new revision: 1\.6; previous revision: 1\.5
+done"
+ echo >>file1
+ echo "Tee hee hee hee" >>file1
+ echo >>dir/file2
+ echo "Find what's in store?" >>dir/file2
+ echo " Oh, I'm so sure!" >>dir/file2
+ echo " You've got an ill, and I have the cure!" >>dir/file2
+
+ # Slag the original and restore it a few revisions back
+ rm -rf ${TESTDIR}/cvsroot/first-dir
+ mv ${TESTDIR}/cvsroot/backup ${TESTDIR}/cvsroot/first-dir
+
+ # Have developer 1 try an update and lose some data
+ #
+ # Feel free to imagine the horrific scream of despair
+ cd ../../1/first-dir
+ dotest backuprecover-15 "${testcvs} update" \
+"${PROG} [a-z]*: Updating .
+U file1
+${PROG} [a-z]*: Updating dir
+U dir/file2"
+
+ # Developer 3 tries the same thing (he has an office)
+ # but fails without losing data since all of his files have
+ # uncommitted changes
+ cd ../../3/first-dir
+ dotest_fail backuprecover-16 "${testcvs} update" \
+"${PROG} [a-z]*: Updating \.
+${PROG} \[[a-z]* aborted\]: could not find desired version 1\.6 in ${TESTDIR}/cvsroot/first-dir/file1,v"
+
+ # create our workspace fixin' script
+ cd ../..
+ echo \
+"#!/bin/sh
+
+# This script will copy the CVS database dirs from the checked out
+# version of a newly recovered repository and replace the CVS
+# database dirs in a workspace with later revisions than those in the
+# recovered repository
+cd repos-first-dir
+DATADIRS=\`find . -name CVS\`
+cd ../first-dir
+find . -name CVS |xargs rm -rf
+for file in \${DATADIRS}; do
+ cp -r ../repos-first-dir/\${file} \${file}
+done" >fixit
+
+ # We only need to fix the workspaces of developers 3 and 4
+ # (1 lost all her data and 2 has an update date from
+ # before the date the backup was made)
+ cd 3
+ dotest backuprecover-17 \
+ "${testcvs} -Q co -d repos-first-dir first-dir" ''
+ cd ../4
+ dotest backuprecover-18 \
+ "${testcvs} -Q co -d repos-first-dir first-dir" ''
+ sh ../fixit
+ cd ../3; sh ../fixit
+
+ # (re)commit developer 3's stuff
+ cd first-dir
+ dotest backuprecover-19 "${testcvs} -q ci -mrecover/merge" \
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
+new revision: 1\.4; previous revision: 1\.3
+done
+Checking in dir/file2;
+${TESTDIR}/cvsroot/first-dir/dir/file2,v <-- file2
+new revision: 1\.4; previous revision: 1\.3
+done"
+
+ # and we should get a conflict on developer 4's stuff
+ cd ../../4/first-dir
+ dotest backuprecover-20 "${testcvs} update" \
+"${PROG} [a-z]*: Updating \.
+RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
+retrieving revision 1\.3
+retrieving revision 1\.4
+Merging differences between 1\.3 and 1\.4 into file1
+rcsmerge: warning: conflicts during merge
+${PROG} [a-z]*: conflicts found in file1
+C file1
+${PROG} [a-z]*: Updating dir
+RCS file: ${TESTDIR}/cvsroot/first-dir/dir/file2,v
+retrieving revision 1\.3
+retrieving revision 1\.4
+Merging differences between 1\.3 and 1\.4 into file2
+rcsmerge: warning: conflicts during merge
+${PROG} [a-z]*: conflicts found in dir/file2
+C dir/file2"
+ sed -e \
+"/^<<<<<<</,/^=======/d
+/^>>>>>>>/d" file1 >tmp; mv tmp file1
+ sed -e \
+"/^<<<<<<</,/^=======/d
+/^>>>>>>>/d
+s/quit and/be fired so he can/" dir/file2 >tmp; mv tmp dir/file2
+ dotest backuprecover-21 "${testcvs} -q ci -mrecover/merge" \
+"Checking in dir/file2;
+${TESTDIR}/cvsroot/first-dir/dir/file2,v <-- file2
+new revision: 1\.5; previous revision: 1\.4
+done"
+
+ # go back and commit developer 2's stuff to prove it can still be done
+ cd ../../2/first-dir
+ dotest backuprecover-22 "${testcvs} -Q update" \
+"RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
+retrieving revision 1\.2
+retrieving revision 1\.4
+Merging differences between 1\.2 and 1\.4 into file1
+RCS file: ${TESTDIR}/cvsroot/first-dir/dir/file2,v
+retrieving revision 1\.2
+retrieving revision 1\.5
+Merging differences between 1\.2 and 1\.5 into file2"
+ dotest backuprecover-23 "${testcvs} -q ci -mtest" \
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
+new revision: 1\.5; previous revision: 1\.4
+done
+Checking in dir/file2;
+${TESTDIR}/cvsroot/first-dir/dir/file2,v <-- file2
+new revision: 1\.6; previous revision: 1\.5
+done"
+
+ # and restore the data to developer 1
+ cd ../../1/first-dir
+ dotest backuprecover-24 "${testcvs} -Q update" ''
+
+ cd ../../..
+ rm -r backuprecover
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
+ ;;
+
history)
# CVSROOT/history tests:
# history: various "cvs history" invocations
@@ -14034,6 +14766,45 @@ done"
chmod 444 ${CVSROOT_DIRNAME}/CVSROOT/config
;;
+ symlinks2)
+ # Symlinks in working directory without PreservePermissions.
+ # Also see: symlinks: with PreservePermissions
+ # rcslib-symlink-*: symlinks in repository.
+ mkdir 1; cd 1
+ dotest symlinks2-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest symlinks2-2 "${testcvs} add first-dir" \
+"Directory ${TESTDIR}/cvsroot/first-dir added to the repository"
+ cd first-dir
+ echo nonsymlink > slink
+ dotest symlinks2-3 "${testcvs} add slink" \
+"${PROG} [a-z]*: scheduling file .slink. for addition
+${PROG} [a-z]*: use .${PROG} commit. to add this file permanently"
+ dotest symlinks2-4 "${testcvs} -q ci -m ''" \
+"RCS file: ${CVSROOT_DIRNAME}/first-dir/slink,v
+done
+Checking in slink;
+${TESTDIR}/cvsroot/first-dir/slink,v <-- slink
+initial revision: 1\.1
+done"
+ rm slink
+ # Choose name cvslog.* so it is in default ignore list.
+ echo second file >cvslog.file2
+ dotest symlinks2-5 "ln -s cvslog.file2 slink" ""
+ dotest symlinks2-6 "${testcvs} -q ci -m linkify" \
+"Checking in slink;
+${TESTDIR}/cvsroot/first-dir/slink,v <-- slink
+new revision: 1\.2; previous revision: 1\.1
+done"
+ dotest symlinks2-7 "${testcvs} -q update -r 1.1 slink" "[UP] slink"
+ dotest symlinks2-8 "cat slink" "nonsymlink"
+ dotest symlinks2-9 "ls -l slink" "-[-rwx]* .* slink"
+ cd ../..
+
+ rm -rf 1
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
+ ;;
+
hardlinks)
# short cut around checking out and committing CVSROOT
rm -f ${CVSROOT_DIRNAME}/CVSROOT/config
@@ -14241,6 +15012,7 @@ U file1" "U file1"
# "rdiff" tests "cvs co -k".
# "binfiles" (and this test) test "cvs update -k".
# "binwrap" tests setting the mode from wrappers.
+ # "keyword2" tests "cvs update -kk -j" with text and binary files
# I don't think any test is testing "cvs import -k".
# Other keyword expansion tests:
# keywordlog - $Log.
@@ -14422,12 +15194,20 @@ new revision: 1\.3; previous revision: 1\.2
done"
dotest keyword-21 "${testcvs} -q update -r tag1" "[UP] file1"
- # FIXME: This test fails when remote. The second expect
- # string below should be removed when this is fixed.
- dotest keyword-22 "cat file1" '\$'"Name: tag1 "'\$' \
-'\$'"Name: "'\$'
+ dotest keyword-22 "cat file1" '\$'"Name: tag1 "'\$'
- dotest keyword-23 "${testcvs} update -A file1" "[UP] file1"
+ if test "$remote" = yes; then
+ # Like serverpatch-8. Not sure there is anything much we
+ # can or should do about this.
+ dotest keyword-23 "${testcvs} update -A file1" "P file1
+${PROG} update: checksum failure after patch to \./file1; will refetch
+${PROG} client: refetching unpatchable files
+U file1"
+ else
+ dotest keyword-23 "${testcvs} update -A file1" "[UP] file1"
+ fi
+ dotest keyword-24 "cat file1" '\$'"Name: "'\$'"
+change"
cd ../..
rm -r 1
@@ -14626,10 +15406,199 @@ xx"
1\.5 (${username} *[0-9a-zA-Z-]*): change"
cd ../..
+ #
+ # test the operation of 'admin -o' in conjunction with keywords
+ # (especially Log - this used to munge the RCS file for all time)
+ #
+
+ dotest keywordlog-24 \
+"${testcvs} admin -oHEAD 1/first-dir/file1" \
+"RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
+deleting revision 1\.5
+done"
+
+ dotest keywordlog-25 \
+"${testcvs} -q co -p first-dir/file1" \
+"initial
+xx "'\$'"Log: file1,v "'\$'"
+xx Revision 1\.4 [0-9/]* [0-9:]* ${username}
+xx First log line
+xx Second log line
+xx"
+
+ 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
;;
+ keyword2)
+ # Test merging on files with keywords:
+ # without -kk
+ # with -kk
+ # on text files
+ # on binary files
+ # Note: This test assumes that CVS has already passed the binfiles
+ # test sequence
+ # Note2: We are testing positive on binary corruption here
+ # we probably really DON'T want to 'cvs update -kk' a binary file...
+ mkdir 1; cd 1
+ dotest keyword2-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest keyword2-2 "${testcvs} add first-dir" \
+"Directory ${TESTDIR}/cvsroot/first-dir added to the repository"
+ cd first-dir
+
+ echo '$''Revision$' >> file1
+ echo "I" >>file1
+ echo "like" >>file1
+ echo "long" >>file1
+ echo "files!" >>file1
+ echo "" >>file1
+ echo "a test line for our times" >>file1
+ echo "" >>file1
+ echo "They" >>file1
+ echo "make" >>file1
+ echo "diff" >>file1
+ echo "look like it" >>file1
+ echo "did a much better" >>file1
+ echo "job." >>file1
+ dotest keyword2-3 "${testcvs} add file1" \
+"${PROG} [a-z]*: scheduling file .file1. for addition
+${PROG} [a-z]*: use .${PROG} commit. to add this file permanently"
+
+ awk 'BEGIN { printf "%c%c%c%sRevision: 1.1 $@%c%c", \
+ 2, 10, 137, "$", 13, 10 }' \
+ </dev/null | tr '@' '\000' >../binfile.dat
+ cp ../binfile.dat .
+ dotest keyword2-5 "${testcvs} add -kb binfile.dat" \
+"${PROG} [a-z]*: scheduling file .binfile\.dat. for addition
+${PROG} [a-z]*: use .${PROG} commit. to add this file permanently"
+
+ dotest keyword2-6 "${testcvs} -q ci -m add" \
+"RCS file: ${TESTDIR}/cvsroot/first-dir/binfile\.dat,v
+done
+Checking in binfile\.dat;
+${TESTDIR}/cvsroot/first-dir/binfile\.dat,v <-- binfile\.dat
+initial revision: 1\.1
+done
+RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
+done
+Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
+initial revision: 1\.1
+done"
+
+ dotest keyword2-7 "${testcvs} -q tag -b branch" \
+"T binfile\.dat
+T file1"
+
+ sed -e 's/our/the best of and the worst of/' file1 >f; mv f file1
+ dotest keyword2-8 "${testcvs} -q ci -m change" \
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
+new revision: 1\.2; previous revision: 1\.1
+done"
+
+ dotest keyword2-9 "${testcvs} -q update -r branch" '[UP] file1'
+
+ echo "what else do we have?" >>file1
+ dotest keyword2-10 "${testcvs} -q ci -m change" \
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
+new revision: 1\.1\.2\.1; previous revision: 1\.1
+done"
+
+ # Okay, first a conflict in file1 - should be okay with binfile.dat
+ dotest keyword2-11 "${testcvs} -q update -A -j branch" \
+"U file1
+RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
+retrieving revision 1\.1
+retrieving revision 1\.1\.2\.1
+Merging differences between 1\.1 and 1\.1\.2\.1 into file1
+rcsmerge: warning: conflicts during merge"
+
+ dotest_fail keyword2-12 "${testcvs} diff file1" \
+"Index: file1
+===================================================================
+RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
+retrieving revision 1\.2
+diff -r1\.2 file1
+0a1
+> <<<<<<< file1
+1a3,5
+> =======
+> \\\$""Revision: 1\.1\.2\.1 \\\$
+> >>>>>>> 1\.1\.2\.1
+14a19
+> what else do we have${QUESTION}"
+
+ # Here's the problem... shouldn't -kk a binary file...
+ rm file1
+ if test "$remote" = yes; then
+ dotest keyword2-13 "${testcvs} -q update -A -kk -j branch" \
+"U binfile.dat
+U file1
+RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
+retrieving revision 1\.1
+retrieving revision 1\.1\.2\.1
+Merging differences between 1\.1 and 1\.1\.2\.1 into file1"
+ else
+ dotest keyword2-13 "${testcvs} -q update -A -kk -j branch" \
+"U binfile.dat
+${PROG} [a-z]*: warning: file1 was lost
+U file1
+RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
+retrieving revision 1\.1
+retrieving revision 1\.1\.2\.1
+Merging differences between 1\.1 and 1\.1\.2\.1 into file1"
+ fi
+
+ # binfile won't get checked in, but it is now corrupt and could
+ # have been checked in if it had changed on the branch...
+ dotest keyword2-14 "${testcvs} -q ci -m change" \
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
+new revision: 1\.3; previous revision: 1\.2
+done"
+
+ dotest_fail keyword2-15 "cmp binfile.dat ../binfile.dat" \
+"binfile\.dat \.\./binfile\.dat differ: char 13, line 2"
+
+ # Okay, restore everything and make CVS try and merge a binary file...
+ dotest keyword2-16 "${testcvs} -q update -A" \
+"[UP] binfile.dat
+[UP] file1"
+ dotest keyword2-17 "${testcvs} -q tag -b branch2" \
+"T binfile\.dat
+T file1"
+ dotest keyword2-18 "${testcvs} -q update -r branch2" ''
+
+ awk 'BEGIN { printf "%c%c%c@%c%c", 2, 10, 137, 13, 10 }' \
+ </dev/null | tr '@' '\000' >>binfile.dat
+ dotest keyword2-19 "${testcvs} -q ci -m badbadbad" \
+"Checking in binfile\.dat;
+${TESTDIR}/cvsroot/first-dir/binfile\.dat,v <-- binfile\.dat
+new revision: 1\.1\.4\.1; previous revision: 1\.1
+done"
+ dotest keyword2-20 "${testcvs} -q update -A -kk -j branch2" \
+"U binfile\.dat
+RCS file: ${TESTDIR}/cvsroot/first-dir/binfile\.dat,v
+retrieving revision 1\.1
+retrieving revision 1\.1\.4\.1
+Merging differences between 1\.1 and 1\.1\.4\.1 into binfile\.dat
+U file1"
+
+ # Yep, it's broke, 'cept for that gal in Hodunk who uses -kk
+ # so that some files only merge when she says so. Time to clean up...
+ cd ../..
+ rm -r 1
+ rm -rf ${CVSROOT_DIRNAME}/first-dir
+ ;;
+
head)
# Testing handling of the HEAD special tag.
# There are many cases involving added and removed files
@@ -14800,6 +15769,21 @@ done"
tagdate)
# Test combining -r and -D.
+ #
+ # Note that this is not a complete test. It relies on the fact
+ # that update, checkout and export have a LOT of shared code.
+ # Notice:
+ # 1) checkout is never tested at all with -r -D
+ # 2) update never uses an argument to '-D' besides 'now'
+ # (this test does not provide enough data to prove
+ # that 'cvs update' with both a '-r' and a '-D'
+ # specified does not ignore '-D': a 'cvs up
+ # -r<branch> -Dnow' and a 'cvs up -r<branch>'
+ # should specify the same file revision).
+ # 3) export uses '-r<branch> -D<when there was a different
+ # revision>', hopefully completing this behavior test
+ # for checkout and update as well.
+ #
mkdir 1; cd 1
dotest tagdate-1 "${testcvs} -q co -l ." ''
mkdir first-dir
@@ -14837,11 +15821,95 @@ done"
${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
new revision: 1\.1\.4\.1; previous revision: 1\.1
done"
+
# Then the case where br2 does have revisions:
dotest tagdate-11 "${testcvs} -q update -p -r br1 -D now" "trunk-1"
+ # For some reason, doing this on a branch seems to be relevant.
+ dotest_fail tagdate-12 "${testcvs} -q update -j:yesterday" \
+"${PROG} \[[a-z]* aborted\]: argument to join may not contain a date specifier without a tag"
+ # And check export
+
+ # Wish some shorter sleep interval would suffice, but I need to
+ # guarantee that the point in time specified by the argument to -D
+ # in tagdate-14 and tagdate-16
+ # falls in the space of time between commits to br2 and I
+ # figure 60 seconds is probably a large enough range to
+ # account for most network file system delays and such...
+ # as it stands, it takes between 1 and 2 seconds between
+ # calling CVS on my machine and the -D argument being used to
+ # recall the file revision and this timing will certainly vary
+ # by several seconds between machines - dependant on CPUspeeds,
+ # I/O speeds, load, etc.
+ sleep 60
+
+ echo br2-2 >file1
+ dotest tagdate-13 "${testcvs} -q ci -m modify-2-on-br2" \
+"Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
+new revision: 1\.1\.4\.2; previous revision: 1\.1\.4\.1
+done"
cd ../..
- rm -r 1
+ mkdir 2; cd
+ if ${testcvs} -q export -r br2 -D'1 minute ago' first-dir \
+ >${TESTDIR}/tagdate.tmp 2>&1; then
+ if ${EXPR} "`cat ${TESTDIR}/tagdate.tmp`" : \
+"[UP] first-dir/file1" >/dev/null; then
+ pass tagdate-14
+ else
+ echo "** expected: " >>${LOGFILE}
+ echo "[UP] first-dir/file1" >>${LOGFILE}
+ echo "** got: " >>${LOGFILE}
+ cat ${TESTDIR}/tagdate.tmp >>${LOGFILE}
+ fail tagdate-14
+ fi
+ else
+ echo "Bad exit status" >>${LOGFILE}
+ fail tagdate-14
+ fi
+
+ if ${EXPR} "`cat first-dir/file1`" : "br2-1" >/dev/null; then
+ pass tagdate-15
+ else
+ fail tagdate-15
+ fi
+
+ # Now for annotate
+ cd ../1/first-dir
+ if ${testcvs} annotate -rbr2 -D'1 minute ago' \
+ >${TESTDIR}/tagdate.tmp 2>&1; then
+ if ${EXPR} "`cat ${TESTDIR}/tagdate.tmp`" : \
+"Annotations for file1
+\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
+1\.1\.4\.1 (${username} *[0-9a-zA-Z-]*): br2-1" >/dev/null; then
+ pass tagdate-16
+ else
+ echo "** expected: " >>${LOGFILE}
+ echo "Annotations for file1
+\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
+1\.1\.4\.1 (${username} *[0-9a-zA-Z-]*): br2-1" >>${LOGFILE}
+ echo "** got: " >>${LOGFILE}
+ cat ${TESTDIR}/tagdate.tmp >>${LOGFILE}
+ fail tagdate-16
+ fi
+ else
+ echo "Bad exit status" >>${LOGFILE}
+ fail tagdate-16
+ fi
+
+ dotest tagdate-17 "${testcvs} annotate -rbr2 -Dnow" \
+"Annotations for file1
+\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
+1\.1\.4\.2 (${username} *[0-9a-zA-Z-]*): br2-2"
+
+ if test $keep = yes; then
+ echo Keeping ${TESTDIR} and exiting due to --keep
+ exit 0
+ fi
+
+ cd ../..
+ rm ${TESTDIR}/tagdate.tmp
+ rm -r 1 2
rm -rf ${CVSROOT_DIRNAME}/first-dir
;;
@@ -15084,6 +16152,7 @@ done"
# 1.3.2.6::1.3.2
# 1.3.2.1::1.3.2.6
# 1.3::1.3.2.6 (error? or synonym for ::1.3.2.6?)
+ # -n: admin, tagf tests.
mkdir 1; cd 1
dotest admin-1 "${testcvs} -q co -l ." ''
@@ -15389,6 +16458,11 @@ total revisions: 2
done"
fi # end of tests skipped for remote
+ # Now test that plain -e is at least parsed right. CVS 1.10
+ # would wrongly treat "-e file1" as "-efile1".
+ dotest_fail admin-19a-2 "${testcvs} -q admin -e file1" \
+"${PROG} \[[a-z]* aborted\]: removing entire access list not yet implemented"
+
# Add another revision to file2, so we can delete one.
echo 'add a line' >> file2
dotest admin-21 "${testcvs} -q ci -m modify file2" \
@@ -17402,24 +18476,24 @@ ${PROG} [a-z]*: Tagging mod2-2"
${PROG} [a-z]*: scheduling file .mod2-1/anotherfile2-1. for addition
${PROG} [a-z]*: scheduling file .mod2-2/mod1-2/anotherfile1-2. for addition
${PROG} [a-z]*: scheduling file .mod1-2/mod2-2/anotherfile2-2. for addition
-${PROG} [a-z]*: use 'cvs commit' to add these files permanently"
+${PROG} [a-z]*: use .${PROG} commit. to add these files permanently"
else
cd mod1-1
dotest multiroot-add-1a "${testcvs} add anotherfile1-1" \
"${PROG} [a-z]*: scheduling file .anotherfile1-1. for addition
-${PROG} [a-z]*: use 'cvs commit' to add this file permanently"
+${PROG} [a-z]*: use .${PROG} commit. to add this file permanently"
cd ../mod2-1
dotest multiroot-add-1b "${testcvs} add anotherfile2-1" \
"${PROG} [a-z]*: scheduling file .anotherfile2-1. for addition
-${PROG} [a-z]*: use 'cvs commit' to add this file permanently"
+${PROG} [a-z]*: use .${PROG} commit. to add this file permanently"
cd ../mod2-2/mod1-2
dotest multiroot-add-1c "${testcvs} add anotherfile1-2" \
"${PROG} [a-z]*: scheduling file .anotherfile1-2. for addition
-${PROG} [a-z]*: use 'cvs commit' to add this file permanently"
+${PROG} [a-z]*: use .${PROG} commit. to add this file permanently"
cd ../../mod1-2/mod2-2
dotest multiroot-add-1d "${testcvs} add anotherfile2-2" \
"${PROG} [a-z]*: scheduling file .anotherfile2-2. for addition
-${PROG} [a-z]*: use 'cvs commit' to add this file permanently"
+${PROG} [a-z]*: use .${PROG} commit. to add this file permanently"
cd ../..
fi
@@ -18510,6 +19584,47 @@ done"
unset CVSROOT2
;;
+ rmroot)
+ # When the Entries/Root file is removed from an existing
+ # workspace, CVS should assume $CVSROOT instead
+ #
+ # Right now only checking that CVS exits normally on an
+ # update once CVS/Root is deleted
+ #
+ # There was a time when this would core dump when run in
+ # client/server mode
+
+ mkdir 1; cd 1
+ dotest rmroot-setup-1 "${testcvs} -q co -l ." ''
+ mkdir first-dir
+ dotest rmroot-setup-2 "${testcvs} add first-dir" \
+"Directory ${TESTDIR}/cvsroot/first-dir added to the repository"
+ cd first-dir
+ touch file1 file2
+ dotest rmroot-setup-3 "${testcvs} add file1 file2" \
+"${PROG} [a-z]*: scheduling file .file1. for addition
+${PROG} [a-z]*: scheduling file .file2. for addition
+${PROG} [a-z]*: use .${PROG} commit. to add these files permanently"
+ dotest rmroot-setup-4 "${testcvs} -q commit -minit" \
+"RCS file: ${TESTDIR}/cvsroot/first-dir/file1,v
+done
+Checking in file1;
+${TESTDIR}/cvsroot/first-dir/file1,v <-- file1
+initial revision: 1\.1
+done
+RCS file: ${TESTDIR}/cvsroot/first-dir/file2,v
+done
+Checking in file2;
+${TESTDIR}/cvsroot/first-dir/file2,v <-- file2
+initial revision: 1\.1
+done"
+ rm CVS/Root
+ dotest rmroot-1 "${testcvs} -q update" ''
+
+ cd ../..
+ rm -rf 1
+ ;;
+
reposmv)
# More tests of repositories and specifying them.
# Similar to crerepos but that test is probably getting big
@@ -18656,7 +19771,8 @@ Root ${CVSROOT_DIRNAME}
noop
EOF
dotest pserver-4 "cat ${TESTDIR}/pserver.tmp" \
-"I LOVE YOU${DOTSTAR}ok"
+"${DOTSTAR} LOVE YOU
+ok"
${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver >${TESTDIR}/pserver.tmp 2>&1 <<EOF
BEGIN AUTH REQUEST
@@ -18668,7 +19784,8 @@ Root ${TESTDIR}/1
noop
EOF
dotest pserver-5 "cat ${TESTDIR}/pserver.tmp" \
-"I LOVE YOU${DOTSTAR}E Protocol error: Root says \"${TESTDIR}/1\" but pserver says \"${CVSROOT_DIRNAME}\"
+"${DOTSTAR} LOVE YOU
+E Protocol error: Root says \"${TESTDIR}/1\" but pserver says \"${CVSROOT_DIRNAME}\"
error "
${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver >${TESTDIR}/pserver.tmp 2>&1 <<EOF
@@ -18681,6 +19798,26 @@ EOF
dotest pserver-6 "cat ${TESTDIR}/pserver.tmp" \
"I HATE YOU"
+ ${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver >${TESTDIR}/pserver.tmp 2>&1 <<EOF
+BEGIN VERIFICATION REQUEST
+${CVSROOT_DIRNAME}
+testme
+Ay::'d^b?hd
+END VERIFICATION REQUEST
+EOF
+ dotest pserver-7 "cat ${TESTDIR}/pserver.tmp" \
+"I HATE YOU"
+
+ ${testcvs} --allow-root=${CVSROOT_DIRNAME} pserver >${TESTDIR}/pserver.tmp 2>&1 <<EOF
+BEGIN VERIFICATION REQUEST
+${CVSROOT_DIRNAME}
+testme
+Ay::'d
+END VERIFICATION REQUEST
+EOF
+ dotest pserver-8 "cat ${TESTDIR}/pserver.tmp" \
+"${DOTSTAR} LOVE YOU"
+
# Clean up.
echo "# comments only" >config
dotest pserver-cleanup-1 "${testcvs} -q ci -m config-it" \
@@ -18726,14 +19863,14 @@ EOF
dotest server-3 "test -d ${TESTDIR}/crerepos/CVSROOT" ""
# Now some tests of gzip-file-contents (used by jCVS).
- awk 'BEGIN {
-printf "%c%c%c%c%c%c.6%c%c+I-.%c%c%c%c5%c;%c%c%c%c",
+ awk 'BEGIN { \
+printf "%c%c%c%c%c%c.6%c%c+I-.%c%c%c%c5%c;%c%c%c%c", \
31, 139, 8, 64, 5, 7, 64, 3, 225, 2, 64, 198, 185, 5, 64, 64, 64}' \
</dev/null | tr '\100' '\000' >gzipped.dat
- echo Root ${TESTDIR}/crerepos >session.dat
# Note that the CVS client sends "-b 1.1.1", and this
# test doesn't. But the server also defaults to that.
- cat <<EOF >>session.dat
+ cat <<EOF >session.dat
+Root ${TESTDIR}/crerepos
UseUnchanged
gzip-file-contents 3
Argument -m
@@ -18743,7 +19880,7 @@ Argument dir1
Argument tag1
Argument tag2
Directory .
-in-real-life-this-is-funky-but-server-seems-to-ignore-it
+${TESTDIR}/crerepos
Modified file1
u=rw,g=r,o=r
z25
@@ -18763,6 +19900,177 @@ ok"
dotest server-5 \
"${testcvs} -q -d ${TESTDIR}/crerepos co -p dir1/file1" "test"
+ # OK, here are some notify tests.
+ if ${testcvs} server >${TESTDIR}/server.tmp <<EOF; then
+Root ${TESTDIR}/crerepos
+Directory .
+${TESTDIR}/crerepos/dir1
+Notify file1
+E Fri May 7 13:21:09 1999 GMT myhost some-work-dir EUC
+noop
+EOF
+ dotest server-6 "cat ${TESTDIR}/server.tmp" \
+"Notified \./
+${TESTDIR}/crerepos/dir1/file1
+ok"
+ else
+ echo "exit status was $?" >>${LOGFILE}
+ fail server-6
+ fi
+ # Sending the second "noop" before waiting for the output
+ # from the first is bogus but hopefully we can get away
+ # with it.
+ if ${testcvs} server >${TESTDIR}/server.tmp <<EOF; then
+Root ${TESTDIR}/crerepos
+Directory .
+${TESTDIR}/crerepos/dir1
+Notify file1
+E Fri May 7 13:21:09 1999 GMT myhost some-work-dir EUC
+noop
+Notify file1
+E The 57th day of Discord in the YOLD 3165 myhost some-work-dir EUC
+noop
+EOF
+ dotest server-7 "cat ${TESTDIR}/server.tmp" \
+"Notified \./
+${TESTDIR}/crerepos/dir1/file1
+ok
+Notified \./
+${TESTDIR}/crerepos/dir1/file1
+ok"
+ else
+ echo "exit status was $?" >>${LOGFILE}
+ fail server-7
+ fi
+
+ # OK, now test a few error conditions.
+ if ${testcvs} server >${TESTDIR}/server.tmp <<EOF; then
+Root ${TESTDIR}/crerepos
+Directory .
+${TESTDIR}/crerepos/dir1
+Notify file1
+E Setting Orange, the 52th day of Discord in the YOLD 3165 myhost some-work-dir EUC
+noop
+EOF
+ # FIXCVS: should give "error" and no "Notified", like server-9
+ dotest server-8 "cat ${TESTDIR}/server.tmp" \
+"E ${PROG} server: invalid character in editor value
+Notified \./
+${TESTDIR}/crerepos/dir1/file1
+ok"
+ else
+ echo "exit status was $?" >>${LOGFILE}
+ fail server-8
+ fi
+
+ if ${testcvs} server >${TESTDIR}/server.tmp <<EOF; then
+Root ${TESTDIR}/crerepos
+Directory .
+${TESTDIR}/crerepos/dir1
+Notify file1
+E Setting Orange+57th day of Discord myhost some-work-dir EUC
+noop
+EOF
+ dotest server-9 "cat ${TESTDIR}/server.tmp" \
+"E Protocol error; misformed Notify request
+error "
+ else
+ echo "exit status was $?" >>${LOGFILE}
+ fail server-9
+ fi
+
+ # First demonstrate an interesting quirk in the protocol.
+ # The "watchers" request selects the files to operate based
+ # on files which exist in the working directory. So if we
+ # don't send "Entry" or the like, it won't do anything.
+ # Wants to be documented in cvsclient.texi...
+ if ${testcvs} server >${TESTDIR}/server.tmp <<EOF; then
+Root ${TESTDIR}/crerepos
+Directory .
+${TESTDIR}/crerepos/dir1
+watchers
+EOF
+ dotest server-10 "cat ${TESTDIR}/server.tmp" \
+"ok"
+ else
+ echo "exit status was $?" >>${LOGFILE}
+ fail server-10
+ fi
+
+ # See if "watchers" and "editors" display the right thing.
+ if ${testcvs} server >${TESTDIR}/server.tmp <<EOF; then
+Root ${TESTDIR}/crerepos
+Directory .
+${TESTDIR}/crerepos/dir1
+Entry /file1/1.1////
+watchers
+EOF
+ dotest server-11 "cat ${TESTDIR}/server.tmp" \
+"M file1 ${username} tedit tunedit tcommit
+ok"
+ else
+ echo "exit status was $?" >>${LOGFILE}
+ fail server-11
+ fi
+ if ${testcvs} server >${TESTDIR}/server.tmp <<EOF; then
+Root ${TESTDIR}/crerepos
+Directory .
+${TESTDIR}/crerepos/dir1
+Entry /file1/1.1////
+editors
+EOF
+ dotest server-12 "cat ${TESTDIR}/server.tmp" \
+"M file1 ${username} The 57th day of Discord in the YOLD 3165 myhost some-work-dir
+ok"
+ else
+ echo "exit status was $?" >>${LOGFILE}
+ fail server-12
+ fi
+
+ # Now do an unedit.
+ if ${testcvs} server >${TESTDIR}/server.tmp <<EOF; then
+Root ${TESTDIR}/crerepos
+Directory .
+${TESTDIR}/crerepos/dir1
+Notify file1
+U 7 May 1999 15:00 GMT myhost some-work-dir EUC
+noop
+EOF
+ dotest server-13 "cat ${TESTDIR}/server.tmp" \
+"Notified \./
+${TESTDIR}/crerepos/dir1/file1
+ok"
+ else
+ echo "exit status was $?" >>${LOGFILE}
+ fail server-13
+ fi
+
+ # Now try "watchers" and "editors" again.
+ if ${testcvs} server >${TESTDIR}/server.tmp <<EOF; then
+Root ${TESTDIR}/crerepos
+Directory .
+${TESTDIR}/crerepos/dir1
+watchers
+EOF
+ dotest server-14 "cat ${TESTDIR}/server.tmp" \
+"ok"
+ else
+ echo "exit status was $?" >>${LOGFILE}
+ fail server-14
+ fi
+ if ${testcvs} server >${TESTDIR}/server.tmp <<EOF; then
+Root ${TESTDIR}/crerepos
+Directory .
+${TESTDIR}/crerepos/dir1
+editors
+EOF
+ dotest server-15 "cat ${TESTDIR}/server.tmp" \
+"ok"
+ else
+ echo "exit status was $?" >>${LOGFILE}
+ fail server-15
+ fi
+
if test "$keep" = yes; then
echo Keeping ${TESTDIR} and exiting due to --keep
exit 0
@@ -18774,6 +20082,73 @@ ok"
fi # skip the whole thing for local
;;
+ server2)
+ # More server tests, in particular testing that various
+ # possible security holes are plugged.
+ if test "$remote" = yes; then
+ if ${testcvs} server >${TESTDIR}/server.tmp <<EOF; then
+Root ${TESTDIR}/cvsroot
+Directory .
+${TESTDIR}/cvsroot/../dir1
+noop
+EOF
+ dotest server2-1 "cat ${TESTDIR}/server.tmp" \
+"E protocol error: directory '${TESTDIR}/cvsroot/\.\./dir1' not within root '${TESTDIR}/cvsroot'
+error "
+ else
+ echo "exit status was $?" >>${LOGFILE}
+ fail server2-1
+ fi
+
+ if ${testcvs} server >${TESTDIR}/server.tmp <<EOF; then
+Root ${TESTDIR}/cvsroot
+Directory .
+${TESTDIR}/cvsrootdir1
+noop
+EOF
+ dotest server2-2 "cat ${TESTDIR}/server.tmp" \
+"E protocol error: directory '${TESTDIR}/cvsrootdir1' not within root '${TESTDIR}/cvsroot'
+error "
+ else
+ echo "exit status was $?" >>${LOGFILE}
+ fail server2-2
+ fi
+
+ if ${testcvs} server >${TESTDIR}/server.tmp <<EOF; then
+Root ${TESTDIR}/cvsroot
+Directory .
+${TESTDIR}
+noop
+EOF
+ dotest server2-3 "cat ${TESTDIR}/server.tmp" \
+"E protocol error: directory '${TESTDIR}' not within root '${TESTDIR}/cvsroot'
+error "
+ else
+ echo "exit status was $?" >>${LOGFILE}
+ fail server2-3
+ fi
+
+ # OK, now a few tests for the rule that one cannot pass a
+ # filename containing a slash to Modified, Is-modified,
+ # Notify, Questionable, or Unchanged. For completeness
+ # we'd try them all. For lazyness/conciseness we don't.
+ if ${testcvs} server >${TESTDIR}/server.tmp <<EOF; then
+Root ${TESTDIR}/cvsroot
+Directory .
+${TESTDIR}/cvsroot
+Unchanged foo/bar
+noop
+EOF
+ dotest server2-4 "cat ${TESTDIR}/server.tmp" \
+"E protocol error: directory 'foo/bar' not within current directory
+error "
+ else
+ echo "exit status was $?" >>${LOGFILE}
+ fail server2-4
+ fi
+ fi
+ ;;
+
client)
# Some tests of the client (independent of the server).
if test "$remote" = yes; then
@@ -18917,8 +20292,6 @@ echo "OK, all tests completed."
# * Test ability to send notifications in response to watches. (currently
# hard to test because CVS doesn't send notifications if username is the
# same).
-# * Test that remote edit and/or unedit works when disconnected from
-# server (e.g. set CVS_SERVER to "foobar").
# * Test the contents of adm files other than Root and Repository.
# Entries seems the next most important thing.
# * Test the following compatibility issues:
diff --git a/gnu/usr.bin/cvs/src/status.c b/gnu/usr.bin/cvs/src/status.c
index c405c454515..4e5ddcbd658 100644
--- a/gnu/usr.bin/cvs/src/status.c
+++ b/gnu/usr.bin/cvs/src/status.c
@@ -67,37 +67,38 @@ cvsstatus (argc, argv)
wrap_setup ();
#ifdef CLIENT_SUPPORT
- if (client_active) {
- start_server ();
+ if (client_active)
+ {
+ start_server ();
- ign_setup ();
+ ign_setup ();
- if (long_format)
- send_arg("-v");
- if (local)
- send_arg("-l");
+ if (long_format)
+ send_arg("-v");
+ if (local)
+ send_arg("-l");
- /* For a while, we tried setting SEND_NO_CONTENTS here so this
- could be a fast operation. That prevents the
- server from updating our timestamp if the timestamp is
- changed but the file is unmodified. Worse, it is user-visible
- (shows "locally modified" instead of "up to date" if
- timestamp is changed but file is not). And there is no good
- workaround (you might not want to run "cvs update"; "cvs -n
- update" doesn't update CVS/Entries; "cvs diff --brief" or
- something perhaps could be made to work but somehow that
- seems nonintuitive to me even if so). Given that timestamps
- seem to have the potential to get munged for any number of
- reasons, it seems better to not rely too much on them. */
+ /* For a while, we tried setting SEND_NO_CONTENTS here so this
+ could be a fast operation. That prevents the
+ server from updating our timestamp if the timestamp is
+ changed but the file is unmodified. Worse, it is user-visible
+ (shows "locally modified" instead of "up to date" if
+ timestamp is changed but file is not). And there is no good
+ workaround (you might not want to run "cvs update"; "cvs -n
+ update" doesn't update CVS/Entries; "cvs diff --brief" or
+ something perhaps could be made to work but somehow that
+ seems nonintuitive to me even if so). Given that timestamps
+ seem to have the potential to get munged for any number of
+ reasons, it seems better to not rely too much on them. */
- send_files (argc, argv, local, 0, 0);
+ send_files (argc, argv, local, 0, 0);
- send_file_names (argc, argv, SEND_EXPAND_WILD);
+ send_file_names (argc, argv, SEND_EXPAND_WILD);
- send_to_server ("status\012", 0);
- err = get_responses_and_close ();
+ send_to_server ("status\012", 0);
+ err = get_responses_and_close ();
- return err;
+ return err;
}
#endif
@@ -288,20 +289,20 @@ status_fileproc (callerdat, finfo)
}
else if (!really_quiet)
cvs_output (" Sticky Options:\t(none)\n", 0);
+ }
- if (long_format && vers->srcfile)
- {
- List *symbols = RCS_symbols(vers->srcfile);
+ if (long_format && vers->srcfile)
+ {
+ List *symbols = RCS_symbols(vers->srcfile);
- cvs_output ("\n Existing Tags:\n", 0);
- if (symbols)
- {
- xrcsnode = finfo->rcs;
- (void) walklist (symbols, tag_list_proc, NULL);
- }
- else
- cvs_output ("\tNo Tags Exist\n", 0);
+ cvs_output ("\n Existing Tags:\n", 0);
+ if (symbols)
+ {
+ xrcsnode = finfo->rcs;
+ (void) walklist (symbols, tag_list_proc, NULL);
}
+ else
+ cvs_output ("\tNo Tags Exist\n", 0);
}
cvs_output ("\n", 0);
diff --git a/gnu/usr.bin/cvs/src/tag.c b/gnu/usr.bin/cvs/src/tag.c
index fa713455d96..fb19cbae78a 100644
--- a/gnu/usr.bin/cvs/src/tag.c
+++ b/gnu/usr.bin/cvs/src/tag.c
@@ -914,6 +914,13 @@ tag_check_valid_join (join_tag, argc, argv, local, aflag, repository)
join_tag);
*s = '\0';
+ /* hmmm... I think it makes sense to allow -j:<date>, but
+ * for now this fixes a bug where CVS just spins and spins (I
+ * think in the RCS code) looking for a zero length tag.
+ */
+ if (!*c)
+ error (1, 0,
+ "argument to join may not contain a date specifier without a tag");
}
tag_check_valid (c, argc, argv, local, aflag, repository);
diff --git a/gnu/usr.bin/cvs/src/version.c b/gnu/usr.bin/cvs/src/version.c
index ca5a98b21b4..97622ffa797 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.10.5";
+char *version_string = "\nConcurrent Versions System (CVS) 1.10.7";
#ifdef CLIENT_SUPPORT
#ifdef SERVER_SUPPORT
diff --git a/gnu/usr.bin/cvs/vms/ChangeLog b/gnu/usr.bin/cvs/vms/ChangeLog
index 7938093ce12..49f9a85b84e 100644
--- a/gnu/usr.bin/cvs/vms/ChangeLog
+++ b/gnu/usr.bin/cvs/vms/ChangeLog
@@ -1,3 +1,9 @@
+1999-02-26 Jim Kingdon <http://www.cyclic.com>
+
+ * options.h: Make RELATIVE_REPOS the default, as in
+ ../src/options.h.in.
+ Remove CVS_DIFFDATE; removed from CVS on 27 Jun 1996.
+
1998-05-12 Jim Meyering <meyering@ascend.com>
* Makefile.in (distclean): New rule to remove Makefile.
diff --git a/gnu/usr.bin/cvs/vms/options.h b/gnu/usr.bin/cvs/vms/options.h
index b2eb89bec3f..77bf3701cb2 100644
--- a/gnu/usr.bin/cvs/vms/options.h
+++ b/gnu/usr.bin/cvs/vms/options.h
@@ -78,18 +78,22 @@
#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 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.
+ * The big advantage that I can see to having a relative path is that
+ * one can change the physical location of the master source
+ * repository, change the contents of CVS/Root files in your
+ * checked-out code, and CVS will work without problems.
+ *
+ * Therefore, RELATIVE_REPOS is now the default. In the future, this
+ * is likely to disappear entirely as a compile-time (or other) option,
+ * so if you have other software which relies on absolute pathnames,
+ * update them.
*/
-#ifndef RELATIVE_REPOS
-/* #define RELATIVE_REPOS */
-#endif
+#define RELATIVE_REPOS 1
/*
* When committing or importing files, you must enter a log message.
@@ -131,18 +135,6 @@
#endif
/*
- * The "cvs diff" command accepts all the single-character options that GNU
- * diff (1.15) accepts. Except -D. GNU diff uses -D as a way to put
- * cpp-style #define's around the output differences. CVS, by default, uses
- * -D to specify a free-form date (like "cvs diff -D '1 week ago'"). If
- * you would prefer that the -D option of "cvs diff" work like the GNU diff
- * option, then comment out this define.
- */
-#ifndef CVS_DIFFDATE
-#define CVS_DIFFDATE
-#endif
-
-/*
* Yes, we can do the authenticated client.
*/
#define AUTH_CLIENT_SUPPORT 1
diff --git a/gnu/usr.bin/cvs/windows-NT/ChangeLog b/gnu/usr.bin/cvs/windows-NT/ChangeLog
index 574a7658309..c6f954be2e5 100644
--- a/gnu/usr.bin/cvs/windows-NT/ChangeLog
+++ b/gnu/usr.bin/cvs/windows-NT/ChangeLog
@@ -1,3 +1,9 @@
+1999-02-26 Jim Kingdon <http://www.cyclic.com>
+
+ * options.h: Make RELATIVE_REPOS the default, as in
+ ../src/options.h.in.
+ Remove CVS_DIFFDATE; removed from CVS on 27 Jun 1996.
+
1998-10-13 Jim Kingdon
* README: Update information about make/project files, cygwin and
diff --git a/gnu/usr.bin/cvs/windows-NT/SCC/ChangeLog b/gnu/usr.bin/cvs/windows-NT/SCC/ChangeLog
index babd748a8c4..0039f34c0a5 100644
--- a/gnu/usr.bin/cvs/windows-NT/SCC/ChangeLog
+++ b/gnu/usr.bin/cvs/windows-NT/SCC/ChangeLog
@@ -1,3 +1,7 @@
+1999-04-09 Jim Kingdon <http://www.cyclic.com>
+
+ * Makefile.in (DISTFILES): Add SCC.dsp.
+
1998-09-21 Jim Kingdon <kingdon@harvey.cyclic.com>
* README.txt: Also mention HAHTsite.
diff --git a/gnu/usr.bin/cvs/windows-NT/SCC/Makefile.in b/gnu/usr.bin/cvs/windows-NT/SCC/Makefile.in
index cafed149acd..7e346bd5980 100644
--- a/gnu/usr.bin/cvs/windows-NT/SCC/Makefile.in
+++ b/gnu/usr.bin/cvs/windows-NT/SCC/Makefile.in
@@ -14,7 +14,7 @@ SHELL = /bin/sh
DISTFILES = \
.cvsignore ChangeLog Makefile.in README.txt \
- SCC.mak scc.c scc.def pubscc.h
+ SCC.mak SCC.dsp scc.c scc.def pubscc.h
all:
.PHONY: all
diff --git a/gnu/usr.bin/cvs/windows-NT/SCC/SCC.dsp b/gnu/usr.bin/cvs/windows-NT/SCC/SCC.dsp
new file mode 100644
index 00000000000..5a50f0180ff
--- /dev/null
+++ b/gnu/usr.bin/cvs/windows-NT/SCC/SCC.dsp
@@ -0,0 +1,108 @@
+# Microsoft Developer Studio Project File - Name="SCC" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=SCC - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "SCC.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "SCC.mak" CFG="SCC - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "SCC - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "SCC - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "SCC - 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 ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+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:windows /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:I386
+
+!ELSEIF "$(CFG)" == "SCC - 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 ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+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:windows /dll /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 /nologo /subsystem:windows /dll /debug /machine:I386
+
+!ENDIF
+
+# Begin Target
+
+# Name "SCC - Win32 Release"
+# Name "SCC - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+# Begin Source File
+
+SOURCE=.\scc.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\scc.def
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/gnu/usr.bin/cvs/windows-NT/options.h b/gnu/usr.bin/cvs/windows-NT/options.h
index d8f17fc1acc..4e6254af314 100644
--- a/gnu/usr.bin/cvs/windows-NT/options.h
+++ b/gnu/usr.bin/cvs/windows-NT/options.h
@@ -83,18 +83,22 @@
#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 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.
+ * The big advantage that I can see to having a relative path is that
+ * one can change the physical location of the master source
+ * repository, change the contents of CVS/Root files in your
+ * checked-out code, and CVS will work without problems.
+ *
+ * Therefore, RELATIVE_REPOS is now the default. In the future, this
+ * is likely to disappear entirely as a compile-time (or other) option,
+ * so if you have other software which relies on absolute pathnames,
+ * update them.
*/
-#ifndef RELATIVE_REPOS
-/* #define RELATIVE_REPOS */
-#endif
+#define RELATIVE_REPOS 1
/*
* When committing or importing files, you must enter a log message.
@@ -140,18 +144,6 @@
#undef CVS_BADROOT
/*
- * The "cvs diff" command accepts all the single-character options that GNU
- * diff (1.15) accepts. Except -D. GNU diff uses -D as a way to put
- * cpp-style #define's around the output differences. CVS, by default, uses
- * -D to specify a free-form date (like "cvs diff -D '1 week ago'"). If
- * you would prefer that the -D option of "cvs diff" work like the GNU diff
- * option, then comment out this define.
- */
-#ifndef CVS_DIFFDATE
-#define CVS_DIFFDATE
-#endif
-
-/*
* Yes, we can do the authenticated client.
*/
#define AUTH_CLIENT_SUPPORT 1
diff --git a/gnu/usr.bin/cvs/zlib/.cvsignore b/gnu/usr.bin/cvs/zlib/.cvsignore
new file mode 100644
index 00000000000..51de950c818
--- /dev/null
+++ b/gnu/usr.bin/cvs/zlib/.cvsignore
@@ -0,0 +1,5 @@
+Makefile
+example
+minigzip
+Debug
+Release
diff --git a/gnu/usr.bin/cvs/zlib/ChangeLog b/gnu/usr.bin/cvs/zlib/ChangeLog
index 02f090f5e49..7686cb17726 100644
--- a/gnu/usr.bin/cvs/zlib/ChangeLog
+++ b/gnu/usr.bin/cvs/zlib/ChangeLog
@@ -1,3 +1,26 @@
+1999-05-06 Jim Kingdon <http://www.cyclic.com>
+
+ * Makefile.in (DISTFILES): Remove zlib.mak.
+ * zlib.mak: Removed; we are back to a single makefile for
+ Visual C++ version 4.
+
+1999-04-26 Jim Kingdon <http://www.cyclic.com>
+
+ * Makefile.in (DISTFILES): Add zlib.dsp zlib.mak.
+
+1999-04-26 (submitted 1999-03-24) John O'Connor <john@shore.net>
+
+ * zlib.dsp: new file. MSVC project file used to build the library.
+
+ * zlib.mak: new file. Makefile for building from the command-line.
+
+ * .cvsignore: Added entries to ignore directories generated by the
+ NT build, Debug and Release.
+
+1999-02-24 Jim Kingdon <http://www.cyclic.com>
+
+ * Makefile.in (DISTFILES): Add .cvsignore.
+
Tue Mar 18 13:05:37 1997 Jim Meyering <meyering@totoro.cyclic.com>
* Makefile.in (DISTFILES): Change glob pattern so that it doesn't
diff --git a/gnu/usr.bin/cvs/zlib/Makefile.in b/gnu/usr.bin/cvs/zlib/Makefile.in
index 93b60964d7f..6d09f330809 100644
--- a/gnu/usr.bin/cvs/zlib/Makefile.in
+++ b/gnu/usr.bin/cvs/zlib/Makefile.in
@@ -45,7 +45,7 @@ TEST_OBJS = example.o minigzip.o
# build_zlib.com added for CVS
DISTFILES = README INDEX ChangeLog configure Makefile.*[a-z0-9] Make_vms.com \
descrip.mms zlib.def zlib.rc algorithm.doc *.[ch] \
- build_zlib.com
+ build_zlib.com zlib.dsp .cvsignore
# For CVS, just build libz.a
all: libz.a
diff --git a/gnu/usr.bin/cvs/zlib/zlib.dsp b/gnu/usr.bin/cvs/zlib/zlib.dsp
new file mode 100644
index 00000000000..7a20a8f9cbf
--- /dev/null
+++ b/gnu/usr.bin/cvs/zlib/zlib.dsp
@@ -0,0 +1,146 @@
+# Microsoft Developer Studio Project File - Name="zlib" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=zlib - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "zlib.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "zlib.mak" CFG="zlib - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "zlib - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "zlib - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+
+!IF "$(CFG)" == "zlib - 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 ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "zlib - 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 ""
+# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "zlib - Win32 Release"
+# Name "zlib - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "*.c"
+# Begin Source File
+
+SOURCE=.\adler32.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\compress.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\crc32.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\deflate.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\example.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\gzio.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\infblock.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\infcodes.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\inffast.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\inflate.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\inftrees.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\infutil.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\minigzip.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\trees.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\uncompr.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\zutil.c
+# End Source File
+# End Group
+# End Target
+# End Project