diff options
71 files changed, 5686 insertions, 2220 deletions
diff --git a/gnu/usr.bin/cvs/BUGS b/gnu/usr.bin/cvs/BUGS index 7d1f77fc11a..3c4a0d612ef 100644 --- a/gnu/usr.bin/cvs/BUGS +++ b/gnu/usr.bin/cvs/BUGS @@ -63,6 +63,25 @@ file's description. however. +* The following bug was reported against CVS 1.9: + + Create a module named test with a file named test in it. + + cactus:sfavor> cvs get test + cvs checkout: Updating test + U test/test + cactus:sfavor> cd test + cactus:sfavor> cvs get test + cvs checkout: cannot chdir to test: Not a directory + cvs checkout: ignoring module test + Exit 1 + cactus:sfavor> cvs update + cvs update: Updating . + rcs.c:2139: failed assertion `rev == NULL || isdigit (*rev)' + Abort (core dumped) + Exit 134 + + * pcl-cvs doesn't like it when you try to check in a file which isn't up-to-date. The messages produced by the server perhaps don't match what pcl-cvs is looking for. diff --git a/gnu/usr.bin/cvs/ChangeLog b/gnu/usr.bin/cvs/ChangeLog index d8e23da53e7..3c4bfc72579 100644 --- a/gnu/usr.bin/cvs/ChangeLog +++ b/gnu/usr.bin/cvs/ChangeLog @@ -1,3 +1,144 @@ +13 Mar 1997 Jim Kingdon + + * cvsnt.mak: Recent changes have added a number of getline.h + dependencies. + +Thu Mar 13 08:43:04 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * configure.in (AC_C_CROSS): Add comment about obsolescence + thereof. + * config.h.in, configure: Regenerated with autoconf 2.10. + +Thu Mar 13 05:50:29 1997 Philippe De Muyter <phdm@info.ucl.ac.be> + + Here are the fixes I needed to make to cvs-1.9 to get it to + compile and successfully pass 'make check' on m68k-motorola-sysv. + * lib/getwd.c (getwd): Added declaration for getcwd(). + * lib/wait.h (WIFSTOPPED et al.): Macro defined if not defined. + * lib/waitpid.c (waitpid): Use wait, not wait3, if !HAVE_WAIT3. + * src/admin.c (admin): Added declaration for getgrnam(). + * src/server.c (fcntl.h): Do not include file twice. Already included + from system.h from cvs.h. + * src/sanity.sh (imported-f*): Renamed from imported-file*, that were + too long for sysv. + * configure.in (wait3): Added to AC_CHECK_FUNCS list. + +Wed Mar 12 14:32:50 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * BUGS: Add "failed assertion `rev == NULL || isdigit (*rev)'" bug. + + * TODO: Remove item 135; this is solved by %v and %V in loginfo. + + * configure.in (AC_CHECK_FUNCS): Don't check for setvbuf; + HAVE_SETVBUF is no longer used. + * config.h, configure: Regenerated with autoconf 2.10. + + * TODO: Add item 184, concerning MD5-based password hash. + Remove item 14, concerning "pathname stripper". I think that was + a reference to the late unlamented strip_path. + +Sat Mar 8 21:22:54 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * INSTALL: NT 4.0 is client and local (like other NT 3.51 & Win95). + +Fri Mar 7 16:51:13 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * INSTALL: Just talked to a NT 4.0 user; add it to the list. + +Sun Mar 2 22:01:23 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * NEWS: Add item about "cvs admin" vs. "cvs admin .". + + * TODO: Remove item #169. It doesn't really explain what an + "archive library" is or in general what the feature they discuss is + supposed to do--I mean, CVS _can_ be used to store .o's, if + that is what they are talking about. + + * TODO: Add item #183, about greater documentation/visiblity for + Entries.Static and CVS/Tag. + + * INSTALL (footnote 5): Add note about how /usr/tmp vs. /var/tmp + shouldn't be an issue anymore + +Thu Feb 20 13:53:19 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * INSTALL: Update Cray entry per mail from John Bowman + <bowman@ipp-garching.mpg.de> + + * configure.in: Add comments about autoconf version. + +Mon Feb 17 09:55:35 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * configure: Regenerated. + +Sat Feb 15 15:37:39 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * configure.in (AC_OUTPUT): Add windows-NT/SCC/Makefile. + +Sun Dec 15 13:12:30 1996 Michael Douglass <mikedoug@texas.net> + and Jim Kingdon <kingdon@harvey.cyclic.com> + + * NEWS: Mention "cvs logout". + +1997-02-12 Jim Kingdon + + * cvsnt.mak: Visual C++ seems to want to make some cosmetic + changes (reordering *.obj files), perhaps prodded by "Save + All". I hope that putting in these changes will make it + happy... + +1997-02-11 Jim Kingdon <kingdon@cyclic.com> + + * cvsnt.mak: Replace with version from Visual C++ 4.0. If someone + wants the 2.x one back, I suppose we can put them side by side, + but I won't be able to update the 2.x one any more as I won't be + having access to 2.x. + +Tue Feb 11 16:43:43 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * .cvsignore: Add cvsnt.mdp and cvsnt.ncb. They seem to be files + created by Visual C++ 4.x which were not created by Visual C++ 2.x. + +Tue Feb 4 11:42:30 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * INSTALL: OS/2 port is client only. + + * Rename devel-cvs (which had only been in the repository, not the + distribution) to DEVEL-CVS. Add "Charter for the devel-cvs + mailing list:" heading, "CVS Development Policies" title, and + one-sentence introduction (editorial changes, not run by + devel-cvs). Revise paragraph concerning membership in the list to + reflect policy change to make read-only membership different from + the ability to send to the list (the new wording was approved by + devel-cvs, as was the rename and including it in the + distribution). + * Makefile.in (DISTFILES): Add DEVEL-CVS. + * HACKING: Add "Mailing lists" section. + +Tue Jan 28 10:41:05 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * configure.in: Remove AC_CHECK_SIZEOF; no longer needed with + lib/md5.c changes. + * acconfig.h: Add HAVE_CONNECT. This is needed so that autoheader + 2.10 works; I think this has been broken since 2 Dec 1996. + * config.h.in: Regenerated with autoheader 2.10. + * configure: Regenerated with autoconf 2.10. + + * HACKING: Revise criterion for whether something goes in NEWS + again (now "user-visible change worth mentioning"--the language + from the GNU coding standards). + +Mon Jan 27 23:05:24 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * HACKING: Criterion for whether something goes in NEWS is not + whether it is user-visible; it is whether it is a bugfix or a + feature. + +Tue Jan 21 10:21:53 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * INSTALL: Warn people against pre-5.x RCS; describe how to find + out what version of RCS you have. + Wed Jan 8 14:50:47 1997 Jim Kingdon <kingdon@harvey.cyclic.com> * Makefile.in, NEWS, README, TODO, configure.in: Remove CVSid; we diff --git a/gnu/usr.bin/cvs/DEVEL-CVS b/gnu/usr.bin/cvs/DEVEL-CVS new file mode 100644 index 00000000000..defbba51032 --- /dev/null +++ b/gnu/usr.bin/cvs/DEVEL-CVS @@ -0,0 +1,54 @@ + CVS Development Policies + +This file, DEVEL-CVS, contains the policies by which the CVS +development group operates. Also see the HACKING file. + +---------------------------------------------------------------------- +Charter for the devel-cvs mailing list: + +The CVS Developers' List <devel-cvs@cyclic.com> exists to help people +with access to the CVS source repository co-ordinate changes, make +releases, and administer the repository. + +Everyone who has been given checkin access to the repository for the +CVS sources should read devel-cvs. Only those with checkin access may +send messages to the list. + +The devel-cvs list may be used to discuss: +- administrivia regarding the CVS source repository and release + process, and +- changes and features intended for inclusion in the official CVS + release (either source code or documentation), which someone plans + to implement, or has implemented. + +The devel-cvs list should not be used to discuss: +- changes or features to packages other than the CVS release + (e.g., related packages like tkCVS, RAD/CVS, or other groups' + distributions of CVS, like RCVS, etc.), +- changes which nobody has offered to implement, or +- the philosophy of CVS (as opposed to a specific change to CVS). +These topics should either go on info-cvs, or have a new mailing list +created for them. + +The topic restrictions in this charter do not reflect the development +group's future plans for CVS; rather, they reflect a topic +classification which the group finds helpful. + +---------------------------------------------------------------------- +Policies regarding the CVS source repository: + +By checking items into the repository, developers agree to permit +distribution of such items under the terms of the GNU Public License. + +---------------------------------------------------------------------- +Procedure for dealing with people who want to be developers: + +People who want checkin access (checkout-only access is available primarily +via snapshots, for technical reasons) are first requested to send +patches and have them reviewed by a developer. If they submit some +good ones (preferably over a period of time, to demonstrate sustained +interest), then one of the developers can ask the devel-cvs mailing +list whether it is OK to make this person a developer (after first +sending the prospective developer a copy of this file and then having +the prospective developer say they want to be a developer). If there +are no objections, an account will be created. diff --git a/gnu/usr.bin/cvs/HACKING b/gnu/usr.bin/cvs/HACKING index 6ccd4f9f4b4..89f7399e0e0 100644 --- a/gnu/usr.bin/cvs/HACKING +++ b/gnu/usr.bin/cvs/HACKING @@ -133,7 +133,8 @@ 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 in the case of a user-visible 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. @@ -162,3 +163,30 @@ even hinted at, really) until the feature freeze which is approximately 2 weeks before the final release (at this time test releases start appearing and are announced on info-cvs). This is intentional, to avoid a last minute rush to get new features in. + +* Mailing lists + +Anyone can add themselves to the following mailing lists: + + devel-cvs. Unless you are accepted as a CVS developer as + described in the DEVEL-CVS file, you will only be able to + read this list, not send to it. The charter of the list is + also in DEVEL-CVS. + commit-cvs. The only messages sent to this list are sent + automatically, via the CVS `loginfo' mechanism, when someone + checks something in to the master CVS repository. + test-results. The only messages sent to this list are sent + automatically, daily, by a script which runs "make check" + and "make remotecheck" on the master CVS sources. +To subscribe to devel-cvs, commit-cvs, or test-results, send +a message to "majordomo@cyclic.com" whose body consists of +"subscribe <list>", where <list> is devel-cvs, commit-cvs or +test-results. + +One other list related to CVS development is bug-cvs. This is the +list which users are requested to send bug reports to. Anyone can +subscribe; to do so send mail to bug-cvs-request@prep.ai.mit.edu. + +Other CVS discussions take place on the info-cvs mailing list +(send mail to info-cvs-request@prep.ai.mit.edu to subscribe) or on +the newsgroup comp.software.config-mgmt. diff --git a/gnu/usr.bin/cvs/INSTALL b/gnu/usr.bin/cvs/INSTALL index 00ff5604927..253e7b17081 100644 --- a/gnu/usr.bin/cvs/INSTALL +++ b/gnu/usr.bin/cvs/INSTALL @@ -17,7 +17,8 @@ Alpha: DEC Alpha running OSF/1 version 3.2 (1.9) DEC Alpha running VMS 6.2 (1.8.85 client-only) Cray: - J90 running unicos 9 (CVS version unknown; Oct 1996) (footnote 10) + J90 (CVS 970215 snapshot) + T3E (CVS 970215 snapshot) HPPA: HP 9000/710 running HP-UX 8.07A using gcc (about 1.4A2) HPPA running HP-UX 9 (1.8) @@ -39,9 +40,10 @@ i386 family: SCO OpenServer 5 (1.8.86) Lynx 2.3.0 080695 (1.6.86) (footnote 9) Windows NT 3.51 (1.8.86 client; 1.8.3 local) + Windows NT 4.0 (1.9 client and local) Windows 95 (1.8.86 client and local) QNX 4 (1.7 + obvious patches) - OS/2 Version 3 using IBM C/C++ Tools 2.01 (1.8.86 + patches) + OS/2 Version 3 using IBM C/C++ Tools 2.01 (1.8.86 + patches, client) m68k: Sun 3 running SunOS 4.1.1_U1 w/ bundled K&R /usr/5bin/cc (1.8.86+) NextSTEP 3.3p1 (1.8.87) @@ -92,6 +94,9 @@ VAX: You also may have to make sure TIME_WITH_SYS_TIME is undef'ed. (footnote 5) Change /usr/tmp to /var/tmp in src/server.c (2 places) (1.4.93). + (This should no longer be needed; CVS doesn't have /usr/tmp in + src/server.c any more. Has anyone tried a more recent version + on BSDI? If so, please report it so we can update this file). (footnote 6) Build in ucb universe with COFF compiler tools. Put /usr/local/bin first in PATH while doing a configure, make @@ -116,11 +121,6 @@ VAX: So after running configure I had to undef HAVE_DIRENT_H and define HAVE_SYS_DIR_H. -(footnote 10) - remove CLIENT_SUPPORT and SERVER_SUPPORT from config.h - remove md5.o from lib/Makefile - remove "#include "regex.h" from cvs.h - ------------------------------------------------------------------------------- Installation under Unix (if you got a binary distribution from @@ -157,7 +157,11 @@ distribution, then skip to step 5): or a path specified with the -b option). If you don't have RCS, you will need to get it from GNU as well. It is best to get the version 5.7 (or later) version of RCS, available from - prep.ai.mit.edu in the file pub/gnu/rcs-5.7.tar.gz. + prep.ai.mit.edu in the file pub/gnu/rcs-5.7.tar.gz. If you do not + have RCS version 5.x (for example, if you are using the old RCS + shipped with some versions of HPUX), CVS will probably fail to work + entirely. To find out what version of RCS you have, invoke "co -V". + If it fails to print a version number, it is an old version. If you want version control of files with binary data, make sure that the RCS configure script finds GNU diff 1.15 or later and diff --git a/gnu/usr.bin/cvs/NEWS b/gnu/usr.bin/cvs/NEWS index 3d8868ce27f..9d7ee3a790a 100644 --- a/gnu/usr.bin/cvs/NEWS +++ b/gnu/usr.bin/cvs/NEWS @@ -1,5 +1,13 @@ Changes since 1.9: +* "cvs admin [options]" will now recurse. In previous versions of +CVS, it was an error and one needed to specify "cvs admin [options] ." +to recurse. This change brings admin in line with the other CVS +commands. + +* New "logout" command to remove the password for a remote cvs +repository from the cvspass file. + * Read-only repository access is implemented for the password-authenticated server (other access methods are just governed by Unix file permissions, since they require login access to the diff --git a/gnu/usr.bin/cvs/TODO b/gnu/usr.bin/cvs/TODO index de6b13f2021..8a1fd93cc53 100644 --- a/gnu/usr.bin/cvs/TODO +++ b/gnu/usr.bin/cvs/TODO @@ -1,9 +1,3 @@ -14. Pathname stripper, for checkout, as well as for writing the - Repository file. - [[ I have a simple one, but need to make sure to call it at all the - appropriate points ]] - (I'm not sure what this means -kingdon, Jun 1995). - 22. Catch signals for cleanup when "add"ing files. 24. Insist on a log message. @@ -179,10 +173,6 @@ see if an error had occurred. (we should be checking for errors, quite aside from NFS issues -kingdon, June 1996). -135. The email CVS sends with each checkin, should include the version - number of each file it is checking in. - [[ Sort of solved by contrib/log.pl, which does a good job of this ]] - 137. Some sites might want CVS to fsync() the RCS ,v file to protect against nasty hardware errors. There is a slight performance hit with doing so, though, so it should be configurable in the .cvsrc file. @@ -329,13 +319,6 @@ - What all the tags mean in an "import" command - Tags are important; revision numbers are not -169. We are using CVS as the configuration control for a software reuse library. - What we do is do system calls passing the needed arguments. In the next - release, it would be nice to see an option to put cvs .o files into a - archive library with an API. This enhancement would go nicely with the - notion of being able to integrate tools into a large software engineering - environment. - 170. Is there an "info" file that can be invoked when a file is checked out, or updated ? What I want to do is to advise users, particularly novices, of the state of their working source whenever they check something out, as @@ -404,3 +387,13 @@ cut it, because it is inclusive on the bar end. I'm not sure that is ever a useful or logical behavior ("cvs diff -r foo -r bar" is not similarly inclusive), but is compatibility an issue? +183. "cvs status" should report on Entries.Static flag and CVS/Tag (how? +maybe a "cvs status -d" to give directory status?). There should also +be more documentation of how these get set and how/when to re-set them. + +184. Would be nice to implement the FreeBSD MD5-based password hash +algorithm in pserver. For more info see "6.1. DES, MD5, and Crypt" in +the FreeBSD Handbook, and src/lib/libcrypt/crypt.c in the FreeBSD +sources. Certainly in the context of non-unix servers this algorithm +makes more sense than the traditional unix crypt() algorithm, which +suffers from export control problems. diff --git a/gnu/usr.bin/cvs/acconfig.h b/gnu/usr.bin/cvs/acconfig.h index 5e74b1baddc..8bbda6ff3b2 100644 --- a/gnu/usr.bin/cvs/acconfig.h +++ b/gnu/usr.bin/cvs/acconfig.h @@ -13,3 +13,6 @@ /* Define if you want encryption support. */ #undef ENCRYPTION + +/* Define if you have the connect function. */ +#undef HAVE_CONNECT diff --git a/gnu/usr.bin/cvs/config.h.in b/gnu/usr.bin/cvs/config.h.in index 51b305af261..3b0fe39f418 100644 --- a/gnu/usr.bin/cvs/config.h.in +++ b/gnu/usr.bin/cvs/config.h.in @@ -72,12 +72,6 @@ /* Define if you want encryption support. */ #undef ENCRYPTION -/* The number of bytes in a int. */ -#undef SIZEOF_INT - -/* The number of bytes in a long. */ -#undef SIZEOF_LONG - /* Define if you have the connect function. */ #undef HAVE_CONNECT @@ -120,9 +114,6 @@ /* Define if you have the readlink function. */ #undef HAVE_READLINK -/* Define if you have the setvbuf function. */ -#undef HAVE_SETVBUF - /* Define if you have the sigaction function. */ #undef HAVE_SIGACTION @@ -150,6 +141,9 @@ /* Define if you have the vprintf function. */ #undef HAVE_VPRINTF +/* Define if you have the wait3 function. */ +#undef HAVE_WAIT3 + /* Define if you have the <direct.h> header file. */ #undef HAVE_DIRECT_H diff --git a/gnu/usr.bin/cvs/contrib/.cvsignore b/gnu/usr.bin/cvs/contrib/.cvsignore index f2c988ff62a..deb5efc5de7 100644 --- a/gnu/usr.bin/cvs/contrib/.cvsignore +++ b/gnu/usr.bin/cvs/contrib/.cvsignore @@ -2,6 +2,7 @@ Makefile clmerge cln_hist commit_prep +cvs2vendor cvs_acls cvscheck log diff --git a/gnu/usr.bin/cvs/contrib/ChangeLog b/gnu/usr.bin/cvs/contrib/ChangeLog index 70dcf921cab..95507335ca7 100644 --- a/gnu/usr.bin/cvs/contrib/ChangeLog +++ b/gnu/usr.bin/cvs/contrib/ChangeLog @@ -1,3 +1,45 @@ +Thu Feb 20 22:43:45 1997 David J MacKenzie <djm@va.pubnix.com> + + * rcs-to-cvs.sh: Put temporary files in /var/tmp or /usr/tmp + whichever one exists. Just call "vi" not "/usr/ucb/vi". + +Mon Feb 17 08:51:37 1997 Greg A. Woods <woods@most.weird.com> + + * .cvsignore: added 'cvs2vendor' target from Feb. 12 changes. + + * log_accum.pl (build_header): added "Repository:" to the report + header to show the first argument supplied to the script by CVS. + [[this value seems spuriously to be wrong when client is used]] + ($hostdomain): correct order of initialization from the Feb. 12 + changes. + ($modulename): add more commentary about using '-M' to to get a + meaningful string here. + Tweak a few other comments from the Feb. 12 changes. + +Wed Feb 12 10:27:48 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * cln_hist.pl, commit_prep.pl, cvs2vendor.sh, cvs_acls.pl, + cvscheck.man, cvscheck.sh, cvshelp.man, descend.man, descend.sh, + log_accum.pl, mfpipe.pl, rcs-to-cvs.sh, rcs2log.sh, rcs2sccs.sh, + sccs2rcs.csh: Remove $Id; we decided to get rid of these some + time ago. + +Wed Feb 12 00:24:33 1997 Greg A. Woods <woods@most.weird.com> + + * cvs2vendor.sh: new script. + * README: noted new cvs2vendor script. + * Makefile.in (DISTFILES): added cvs2vendor.sh. + (CONTRIB_PROGS): added cvs2vendor. + + * log_accum.pl (show_wd): new variable, initialized to 0. + - set $show_wd if '-w' option found while parsing @ARGV. + - don't add 'In directory' line to report header unless $show_wd + is set. + (domainname): prepend a leading '.' if none there so that + concatenation with $hostname works (those with a FQDN hostname + *and* a domainname still lose). + (mail_notification): don't set a "From:" header -- the mailer will. + Wed Jan 8 14:48:58 1997 Jim Kingdon <kingdon@harvey.cyclic.com> * Makefile.in, README, log.pl: Remove CVSid; we decided to get rid diff --git a/gnu/usr.bin/cvs/contrib/README b/gnu/usr.bin/cvs/contrib/README index 81caec5f571..900b0c75f74 100644 --- a/gnu/usr.bin/cvs/contrib/README +++ b/gnu/usr.bin/cvs/contrib/README @@ -105,3 +105,7 @@ An attempt at a table of Contents for this directory: by hostname, then runs a subprocess whose input/output is redirected through the port. Contributed by Benjamin J. Lee <benjamin@cyclic.com> + cvs2vendor A shell script to move changes from a repository + that was started without a vendor branch to one + that has a vendor branch. + Contributed by Greg A. Woods <woods@planix.com> diff --git a/gnu/usr.bin/cvs/contrib/cvs2vendor.sh b/gnu/usr.bin/cvs/contrib/cvs2vendor.sh new file mode 100644 index 00000000000..234f4d95e5d --- /dev/null +++ b/gnu/usr.bin/cvs/contrib/cvs2vendor.sh @@ -0,0 +1,142 @@ +#! /bin/sh +# +# cvs2vendor - move revsisions from files in A to files in B +# +# The primary reason for this script is to move deltas from a +# non-vendor branched repository onto a fresh vendor branched one, +# skipping the initial checkin in assumption that it is the same in +# both repositories. This way you can take a project that was moved +# into CVS without the benefit of the vendor branch and for all +# intents and purposes add the vendor branch underneath the existing +# deltas. +# +# This script is also a decent example of repository maintenance using +# raw RCS commands (if I do say so myself! ;-). +# +# Tags are preserved. +# +# The timestamp of the initial vendor branch revision will be adjusted +# to be the same as the 1.1 revision of each source file. +# +# Extra branches in the source directory will cause breakage. +# +# Intermediate files are created in the current working directory +# where this script is started. +# +# Written by Greg A. Woods <woods@planix.com>, based on rcs2sccs +# (retains some of the rlog parsing from it). +# +# The copyright is in the Public Domain. +# + +if [ $# -ne 2 ]; then + echo USAGE: $0 srcdir dstdir + exit 2 +fi +tsrcdir=$1 +tdstdir=$2 + +revfile=/tmp/cvs2vendor_$$_rev +rm -f $revfile + +commentfile=/tmp/cvs2vendor_$$_comment +rm -f $commentfile + +srcdirs=`cd $tsrcdir && find . -type d -print | sed 's~^\.[/]*~~'` + +# the "" is a trick to get $tsrcdir itself without resorting to '.' +for ldir in "" $srcdirs; do + + srcdir=$tsrcdir/$ldir + dstdir=$tdstdir/$ldir + + # Loop over every RCS file in srcdir + # + for vfile in $srcdir/*,v; do + # get rid of the ",v" at the end of the name + file=`echo $vfile | sed -e 's/,v$//'` + bfile=`basename $file` + + if [ ! -d $dstdir ]; then + echo "making locally added directory $dstdir" + mkdir -p $dstdir + fi + if [ ! -f $dstdir/$bfile,v ]; then + echo "copying locally added file $dstdir/$bfile ..." + cp $vfile $dstdir + continue; + fi + + # work on each rev of that file in ascending order + rlog $file | grep "^revision [0-9][0-9]*\." | awk '{print $2}' | sed -e 's/\./ /g' | sort -n -u +0 +1 +2 +3 +4 +5 +6 +7 +8 | sed -e 's/ /./g' > $revfile + + for rev in `cat $revfile`; do + + case "$rev" in + 1.1) + newdate=`rlog -r$rev $file | grep "^date: " | awk '{printf("%s.%s\n",$2,$3); exit}' | sed -e 's~/~.~g' -e 's/:/./g' -e 's/;//' -e 's/^19//'` + olddate=`rlog -r1.1.1.1 $dstdir/$bfile | grep "^date: " | awk '{printf("%s.%s\n",$2,$3); exit}' | sed -e 's~/~.~g' -e 's/:/./g' -e 's/;//' -e 's/^19//'` + sed "s/$olddate/$newdate/" < $dstdir/$bfile,v > $dstdir/$bfile.x + mv -f $dstdir/$bfile.x $dstdir/$bfile,v + chmod -w $dstdir/$bfile,v + symname=`rlog -h $file | sed -e '1,/^symbolic names:/d' -e 's/[ ]*//g' | awk -F: '$2 == "'"$rev"'" {printf("-n%s:1.1.1.1\n",$1)}'` + if [ -n "$symname" ]; then + echo "tagging $file with $symname ..." + rcs $symname $dstdir/$bfile,v + if [ $? != 0 ]; then + echo ERROR - rcs $symname $dstdir/$bfile,v + exit 1 + fi + fi + continue # skip first rev.... + ;; + esac + + # get a lock on the destination local branch tip revision + co -r1 -l $dstdir/$bfile + if [ $? != 0 ]; then + echo ERROR - co -r1 -l $dstdir/$bfile + exit 1 + fi + rm -f $dstdir/$bfile + + # get file into current dir and get stats + date=`rlog -r$rev $file | grep "^date: " | awk '{printf("%s %s\n",$2,$3); exit}' | sed -e 's/;//'` + author=`rlog -r$rev $file | grep "^date: " | awk '{print $5; exit}' | sed -e 's/;//'` + + symname=`rlog -h $file | sed -e '1,/^symbolic names:/d' -e 's/[ ]*//g' | awk -F: '$2 == "'"$rev"'" {printf("-n%s\n",$1)}'` + + rlog -r$rev $file | sed -e '/^branches: /d' -e '1,/^date: /d' -e '/^===========/d' | awk '{if ((total += length($0) + 1) < 510) print $0}' > $commentfile + + echo "==> file $file, rev=$rev, date=$date, author=$author $symname" + + co -p -r$rev $file > $bfile + if [ $? != 0 ]; then + echo ERROR - co -p -r$rev $file + exit 1 + fi + + # check file into vendor repository... + ci -f -m"`cat $commentfile`" -d"$date" $symname -w"$author" $bfile $dstdir/$bfile,v + if [ $? != 0 ]; then + echo ERROR - ci -f -m"`cat $commentfile`" -d"$date" $symname -w"$author" $bfile $dstdir/$bfile,v + exit 1 + fi + rm -f $bfile + + # set the default branch to the trunk... + # XXX really only need to do this once.... + rcs -b1 $dstdir/$bfile + if [ $? != 0 ]; then + echo ERROR - rcs -b1 $dstdir/$bfile + exit 1 + fi + done + done +done + +echo cleaning up... +rm -f $commentfile +echo " Conversion Completed Successfully" + +exit 0 diff --git a/gnu/usr.bin/cvs/contrib/cvscheck.man b/gnu/usr.bin/cvs/contrib/cvscheck.man index a9537cb87de..2b90b49a14c 100644 --- a/gnu/usr.bin/cvs/contrib/cvscheck.man +++ b/gnu/usr.bin/cvs/contrib/cvscheck.man @@ -1,4 +1,3 @@ -.\" $Id: cvscheck.man,v 1.1.1.1 1995/12/19 09:21:39 deraadt Exp $ .\" Contributed by Lowell Skoog <fluke!lowell@uunet.uu.net> .TH CVSCHECK LOCAL "4 March 1991" FLUKE .SH NAME diff --git a/gnu/usr.bin/cvs/contrib/cvscheck.sh b/gnu/usr.bin/cvs/contrib/cvscheck.sh index bc33d7972e2..f711b430e0f 100644 --- a/gnu/usr.bin/cvs/contrib/cvscheck.sh +++ b/gnu/usr.bin/cvs/contrib/cvscheck.sh @@ -1,5 +1,4 @@ #! /bin/sh -# $Id: cvscheck.sh,v 1.1.1.1 1995/12/19 09:21:39 deraadt Exp $ # # cvscheck - identify files added, changed, or removed # in CVS working directory diff --git a/gnu/usr.bin/cvs/contrib/cvshelp.man b/gnu/usr.bin/cvs/contrib/cvshelp.man index cf6ccb78210..b166af69528 100644 --- a/gnu/usr.bin/cvs/contrib/cvshelp.man +++ b/gnu/usr.bin/cvs/contrib/cvshelp.man @@ -1,4 +1,3 @@ -.\" $Id: cvshelp.man,v 1.1.1.1 1995/12/19 09:21:40 deraadt Exp $ .\" Contributed by Lowell Skoog <fluke!lowell@uunet.uu.net> .\" Full space in nroff; half space in troff .de SP diff --git a/gnu/usr.bin/cvs/contrib/descend.man b/gnu/usr.bin/cvs/contrib/descend.man index ef5b2bbdc61..0434ca8b43c 100644 --- a/gnu/usr.bin/cvs/contrib/descend.man +++ b/gnu/usr.bin/cvs/contrib/descend.man @@ -1,4 +1,3 @@ -.\" $Id: descend.man,v 1.1.1.1 1995/12/19 09:21:40 deraadt Exp $ .TH DESCEND 1 "31 March 1992" .SH NAME descend \- walk directory tree and execute a command at each node diff --git a/gnu/usr.bin/cvs/contrib/descend.sh b/gnu/usr.bin/cvs/contrib/descend.sh index f3a1790be7d..039a7a3d3ee 100644 --- a/gnu/usr.bin/cvs/contrib/descend.sh +++ b/gnu/usr.bin/cvs/contrib/descend.sh @@ -1,5 +1,4 @@ #! /bin/sh -# $Id: descend.sh,v 1.1.1.1 1995/12/19 09:21:40 deraadt Exp $ # # descend - walk down a directory tree and execute a command at each node diff --git a/gnu/usr.bin/cvs/contrib/rcs-to-cvs.sh b/gnu/usr.bin/cvs/contrib/rcs-to-cvs.sh index 737beebfc6f..66a62a9da5e 100644 --- a/gnu/usr.bin/cvs/contrib/rcs-to-cvs.sh +++ b/gnu/usr.bin/cvs/contrib/rcs-to-cvs.sh @@ -1,6 +1,5 @@ #! /bin/sh # -# $Id: rcs-to-cvs.sh,v 1.1.1.1 1995/12/19 09:21:40 deraadt Exp $ # Based on the CVS 1.0 checkin csh script. # Contributed by Per Cederqvist <ceder@signum.se>. # Rewritten in sh by David MacKenzie <djm@cygnus.com>. @@ -33,7 +32,7 @@ usage="Usage: rcs-to-cvs [-v] [-m message] [-f message_file] repository" vbose=0 message="" -message_file=/usr/tmp/checkin.$$ +if [ -d /var/tmp ]; then message_file=/var/tmp/checkin.$$; else message_file=/usr/tmp/checkin.$$; fi got_one=0 if [ $# -lt 1 ]; then @@ -79,7 +78,7 @@ fi if [ $got_one -eq 0 ]; then echo "Please Edit this file to contain the RCS log information" >$message_file echo "to be associated with this directory (please remove these lines)">>$message_file - ${EDITOR-/usr/ucb/vi} $message_file + ${EDITOR-vi} $message_file got_one=1 fi diff --git a/gnu/usr.bin/cvs/contrib/rcs2sccs.sh b/gnu/usr.bin/cvs/contrib/rcs2sccs.sh index e87a941dc6e..b089dfef065 100644 --- a/gnu/usr.bin/cvs/contrib/rcs2sccs.sh +++ b/gnu/usr.bin/cvs/contrib/rcs2sccs.sh @@ -1,8 +1,6 @@ #! /bin/sh # # -# OrigId: rcs2sccs,v 1.12 90/10/04 20:52:23 kenc Exp Locker: kenc -# $Id: rcs2sccs.sh,v 1.1.1.1 1996/04/27 19:42:52 tholo Exp $ ############################################################ # Error checking diff --git a/gnu/usr.bin/cvs/cvsnt.mak b/gnu/usr.bin/cvs/cvsnt.mak index e3a52e707eb..cfa7575b401 100644 --- a/gnu/usr.bin/cvs/cvsnt.mak +++ b/gnu/usr.bin/cvs/cvsnt.mak @@ -1,35 +1,40 @@ -# Microsoft Visual C++ Generated NMAKE File, Format Version 2.00 +# Microsoft Developer Studio Generated NMAKE File, Format Version 40001 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 !IF "$(CFG)" == "" -CFG=Win32 Debug -!MESSAGE No configuration specified. Defaulting to Win32 Debug. +CFG=cvsnt - Win32 Debug +!MESSAGE No configuration specified. Defaulting to cvsnt - Win32 Debug. !ENDIF -!IF "$(CFG)" != "Win32 Release" && "$(CFG)" != "Win32 Debug" +!IF "$(CFG)" != "cvsnt - Win32 Release" && "$(CFG)" != "cvsnt - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE on this makefile !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE -!MESSAGE NMAKE /f "cvsnt.mak" CFG="Win32 Debug" +!MESSAGE NMAKE /f "cvsnt.mak" CFG="cvsnt - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE -!MESSAGE "Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "cvsnt - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "cvsnt - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF +!IF "$(OS)" == "Windows_NT" +NULL= +!ELSE +NULL=nul +!ENDIF ################################################################################ # Begin Project -# PROP Target_Last_Scanned "Win32 Debug" +# PROP Target_Last_Scanned "cvsnt - Win32 Debug" CPP=cl.exe RSC=rc.exe -!IF "$(CFG)" == "Win32 Release" +!IF "$(CFG)" == "cvsnt - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 @@ -42,225 +47,224 @@ RSC=rc.exe OUTDIR=.\WinRel INTDIR=.\WinRel -ALL : $(OUTDIR)/cvs.exe $(OUTDIR)/cvsnt.bsc - -$(OUTDIR) : - if not exist $(OUTDIR)/nul mkdir $(OUTDIR) - -# ADD BASE CPP /nologo /W3 /GX /YX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /FR /c -# ADD CPP /nologo /W3 /GX /YX /Ob1 /I "windows-NT" /I "lib" /I "src" /I "zlib" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "HAVE_CONFIG_H" /FR /c -# SUBTRACT CPP /WX -CPP_PROJ=/nologo /W3 /GX /YX /Ob1 /I "windows-NT" /I "lib" /I "src" /I "zlib"\ - /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "HAVE_CONFIG_H" /FR$(INTDIR)/\ - /Fp$(OUTDIR)/"cvsnt.pch" /Fo$(INTDIR)/ /c +ALL : "$(OUTDIR)\cvs.exe" + +CLEAN : + -@erase ".\WinRel\cvs.exe" + -@erase ".\WinRel\commit.obj" + -@erase ".\WinRel\scramble.obj" + -@erase ".\WinRel\filesubr.obj" + -@erase ".\WinRel\rcs.obj" + -@erase ".\WinRel\uncompr.obj" + -@erase ".\WinRel\inftrees.obj" + -@erase ".\WinRel\update.obj" + -@erase ".\WinRel\release.obj" + -@erase ".\WinRel\login.obj" + -@erase ".\WinRel\run.obj" + -@erase ".\WinRel\buffer.obj" + -@erase ".\WinRel\hash.obj" + -@erase ".\WinRel\modules.obj" + -@erase ".\WinRel\getopt.obj" + -@erase ".\WinRel\subr.obj" + -@erase ".\WinRel\mkmodules.obj" + -@erase ".\WinRel\getdate.obj" + -@erase ".\WinRel\waitpid.obj" + -@erase ".\WinRel\sighandle.obj" + -@erase ".\WinRel\inflate.obj" + -@erase ".\WinRel\classify.obj" + -@erase ".\WinRel\tag.obj" + -@erase ".\WinRel\entries.obj" + -@erase ".\WinRel\win32.obj" + -@erase ".\WinRel\pwd.obj" + -@erase ".\WinRel\getopt1.obj" + -@erase ".\WinRel\logmsg.obj" + -@erase ".\WinRel\error.obj" + -@erase ".\WinRel\fileattr.obj" + -@erase ".\WinRel\stripslash.obj" + -@erase ".\WinRel\xgetwd.obj" + -@erase ".\WinRel\infutil.obj" + -@erase ".\WinRel\fnmatch.obj" + -@erase ".\WinRel\parseinfo.obj" + -@erase ".\WinRel\zlib.obj" + -@erase ".\WinRel\main.obj" + -@erase ".\WinRel\vasprintf.obj" + -@erase ".\WinRel\server.obj" + -@erase ".\WinRel\vers_ts.obj" + -@erase ".\WinRel\patch.obj" + -@erase ".\WinRel\compress.obj" + -@erase ".\WinRel\getwd.obj" + -@erase ".\WinRel\gzio.obj" + -@erase ".\WinRel\diff.obj" + -@erase ".\WinRel\mkdir.obj" + -@erase ".\WinRel\trees.obj" + -@erase ".\WinRel\recurse.obj" + -@erase ".\WinRel\import.obj" + -@erase ".\WinRel\rtag.obj" + -@erase ".\WinRel\rcscmds.obj" + -@erase ".\WinRel\root.obj" + -@erase ".\WinRel\wrapper.obj" + -@erase ".\WinRel\lock.obj" + -@erase ".\WinRel\zutil.obj" + -@erase ".\WinRel\history.obj" + -@erase ".\WinRel\admin.obj" + -@erase ".\WinRel\version.obj" + -@erase ".\WinRel\crc32.obj" + -@erase ".\WinRel\create_adm.obj" + -@erase ".\WinRel\infblock.obj" + -@erase ".\WinRel\status.obj" + -@erase ".\WinRel\md5.obj" + -@erase ".\WinRel\checkin.obj" + -@erase ".\WinRel\checkout.obj" + -@erase ".\WinRel\getline.obj" + -@erase ".\WinRel\rcmd.obj" + -@erase ".\WinRel\yesno.obj" + -@erase ".\WinRel\adler32.obj" + -@erase ".\WinRel\savecwd.obj" + -@erase ".\WinRel\repos.obj" + -@erase ".\WinRel\argmatch.obj" + -@erase ".\WinRel\ndir.obj" + -@erase ".\WinRel\myndbm.obj" + -@erase ".\WinRel\cvsrc.obj" + -@erase ".\WinRel\startserver.obj" + -@erase ".\WinRel\client.obj" + -@erase ".\WinRel\regex.obj" + -@erase ".\WinRel\log.obj" + -@erase ".\WinRel\inffast.obj" + -@erase ".\WinRel\expand_path.obj" + -@erase ".\WinRel\remove.obj" + -@erase ".\WinRel\no_diff.obj" + -@erase ".\WinRel\edit.obj" + -@erase ".\WinRel\ignore.obj" + -@erase ".\WinRel\add.obj" + -@erase ".\WinRel\watch.obj" + -@erase ".\WinRel\deflate.obj" + -@erase ".\WinRel\find_names.obj" + -@erase ".\WinRel\valloc.obj" + -@erase ".\WinRel\infcodes.obj" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +# 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" /YX /c +# SUBTRACT CPP /WX /Fr +CPP_PROJ=/nologo /ML /W3 /GX /Ob1 /I "windows-NT" /I "lib" /I "src" /I "zlib"\ + /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "HAVE_CONFIG_H"\ + /Fp"$(INTDIR)/cvsnt.pch" /YX /Fo"$(INTDIR)/" /c CPP_OBJS=.\WinRel/ +CPP_SBRS= # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo -BSC32_FLAGS=/nologo /o$(OUTDIR)/"cvsnt.bsc" -BSC32_SBRS= \ - $(INTDIR)/mkmodules.sbr \ - $(INTDIR)/subr.sbr \ - $(INTDIR)/admin.sbr \ - $(INTDIR)/server.sbr \ - $(INTDIR)/diff.sbr \ - $(INTDIR)/client.sbr \ - $(INTDIR)/checkout.sbr \ - $(INTDIR)/no_diff.sbr \ - $(INTDIR)/entries.sbr \ - $(INTDIR)/tag.sbr \ - $(INTDIR)/rtag.sbr \ - $(INTDIR)/status.sbr \ - $(INTDIR)/root.sbr \ - $(INTDIR)/myndbm.sbr \ - $(INTDIR)/hash.sbr \ - $(INTDIR)/repos.sbr \ - $(INTDIR)/parseinfo.sbr \ - $(INTDIR)/vers_ts.sbr \ - $(INTDIR)/checkin.sbr \ - $(INTDIR)/commit.sbr \ - $(INTDIR)/version.sbr \ - $(INTDIR)/cvsrc.sbr \ - $(INTDIR)/remove.sbr \ - $(INTDIR)/update.sbr \ - $(INTDIR)/logmsg.sbr \ - $(INTDIR)/classify.sbr \ - $(INTDIR)/history.sbr \ - $(INTDIR)/add.sbr \ - $(INTDIR)/lock.sbr \ - $(INTDIR)/recurse.sbr \ - $(INTDIR)/modules.sbr \ - $(INTDIR)/find_names.sbr \ - $(INTDIR)/rcs.sbr \ - $(INTDIR)/create_adm.sbr \ - $(INTDIR)/main.sbr \ - $(INTDIR)/patch.sbr \ - $(INTDIR)/release.sbr \ - $(INTDIR)/rcscmds.sbr \ - $(INTDIR)/import.sbr \ - $(INTDIR)/ignore.sbr \ - $(INTDIR)/log.sbr \ - $(INTDIR)/wrapper.sbr \ - $(INTDIR)/error.sbr \ - $(INTDIR)/expand_path.sbr \ - $(INTDIR)/edit.sbr \ - $(INTDIR)/fileattr.sbr \ - $(INTDIR)/watch.sbr \ - $(INTDIR)/login.sbr \ - $(INTDIR)/scramble.sbr \ - $(INTDIR)/buffer.sbr \ - $(INTDIR)/zlib.sbr \ - $(INTDIR)/getwd.sbr \ - $(INTDIR)/sighandle.sbr \ - $(INTDIR)/getopt.sbr \ - $(INTDIR)/argmatch.sbr \ - $(INTDIR)/md5.sbr \ - $(INTDIR)/yesno.sbr \ - $(INTDIR)/getopt1.sbr \ - $(INTDIR)/valloc.sbr \ - $(INTDIR)/xgetwd.sbr \ - $(INTDIR)/regex.sbr \ - $(INTDIR)/fnmatch.sbr \ - $(INTDIR)/getdate.sbr \ - $(INTDIR)/getline.sbr \ - $(INTDIR)/savecwd.sbr \ - $(INTDIR)/vasprintf.sbr \ - $(INTDIR)/mkdir.sbr \ - $(INTDIR)/run.sbr \ - $(INTDIR)/pwd.sbr \ - $(INTDIR)/filesubr.sbr \ - $(INTDIR)/win32.sbr \ - $(INTDIR)/waitpid.sbr \ - $(INTDIR)/ndir.sbr \ - $(INTDIR)/stripslash.sbr \ - $(INTDIR)/rcmd.sbr \ - $(INTDIR)/startserver.sbr \ - $(INTDIR)/zutil.sbr \ - $(INTDIR)/infutil.sbr \ - $(INTDIR)/infblock.sbr \ - $(INTDIR)/compress.sbr \ - $(INTDIR)/uncompr.sbr \ - $(INTDIR)/inflate.sbr \ - $(INTDIR)/inftrees.sbr \ - $(INTDIR)/gzio.sbr \ - $(INTDIR)/infcodes.sbr \ - $(INTDIR)/deflate.sbr \ - $(INTDIR)/adler32.sbr \ - $(INTDIR)/crc32.sbr \ - $(INTDIR)/inffast.sbr \ - $(INTDIR)/trees.sbr - -$(OUTDIR)/cvsnt.bsc : $(OUTDIR) $(BSC32_SBRS) - $(BSC32) @<< - $(BSC32_FLAGS) $(BSC32_SBRS) -<< - +BSC32_FLAGS=/nologo /o"$(OUTDIR)/cvsnt.bsc" +BSC32_SBRS= LINK32=link.exe -# ADD BASE LINK32 advapi32.lib /NOLOGO /SUBSYSTEM:console /MACHINE:I386 -# ADD LINK32 advapi32.lib wsock32.lib /NOLOGO /SUBSYSTEM:console /MACHINE:I386 /OUT:"WinRel/cvs.exe" -LINK32_FLAGS=advapi32.lib wsock32.lib /NOLOGO /SUBSYSTEM:console\ - /INCREMENTAL:no /PDB:$(OUTDIR)/"cvsnt.pdb" /MACHINE:I386 /OUT:"WinRel/cvs.exe" -DEF_FILE= +# 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" +LINK32_FLAGS=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 /incremental:no /pdb:"$(OUTDIR)/cvs.pdb" /machine:I386\ + /out:"$(OUTDIR)/cvs.exe" LINK32_OBJS= \ - $(INTDIR)/mkmodules.obj \ - $(INTDIR)/subr.obj \ - $(INTDIR)/admin.obj \ - $(INTDIR)/server.obj \ - $(INTDIR)/diff.obj \ - $(INTDIR)/client.obj \ - $(INTDIR)/checkout.obj \ - $(INTDIR)/no_diff.obj \ - $(INTDIR)/entries.obj \ - $(INTDIR)/tag.obj \ - $(INTDIR)/rtag.obj \ - $(INTDIR)/status.obj \ - $(INTDIR)/root.obj \ - $(INTDIR)/myndbm.obj \ - $(INTDIR)/hash.obj \ - $(INTDIR)/repos.obj \ - $(INTDIR)/parseinfo.obj \ - $(INTDIR)/vers_ts.obj \ - $(INTDIR)/checkin.obj \ - $(INTDIR)/commit.obj \ - $(INTDIR)/version.obj \ - $(INTDIR)/cvsrc.obj \ - $(INTDIR)/remove.obj \ - $(INTDIR)/update.obj \ - $(INTDIR)/logmsg.obj \ - $(INTDIR)/classify.obj \ - $(INTDIR)/history.obj \ - $(INTDIR)/add.obj \ - $(INTDIR)/lock.obj \ - $(INTDIR)/recurse.obj \ - $(INTDIR)/modules.obj \ - $(INTDIR)/find_names.obj \ - $(INTDIR)/rcs.obj \ - $(INTDIR)/create_adm.obj \ - $(INTDIR)/main.obj \ - $(INTDIR)/patch.obj \ - $(INTDIR)/release.obj \ - $(INTDIR)/rcscmds.obj \ - $(INTDIR)/import.obj \ - $(INTDIR)/ignore.obj \ - $(INTDIR)/log.obj \ - $(INTDIR)/wrapper.obj \ - $(INTDIR)/error.obj \ - $(INTDIR)/expand_path.obj \ - $(INTDIR)/edit.obj \ - $(INTDIR)/fileattr.obj \ - $(INTDIR)/watch.obj \ - $(INTDIR)/login.obj \ - $(INTDIR)/scramble.obj \ - $(INTDIR)/buffer.obj \ - $(INTDIR)/zlib.obj \ - $(INTDIR)/getwd.obj \ - $(INTDIR)/sighandle.obj \ - $(INTDIR)/getopt.obj \ - $(INTDIR)/argmatch.obj \ - $(INTDIR)/md5.obj \ - $(INTDIR)/yesno.obj \ - $(INTDIR)/getopt1.obj \ - $(INTDIR)/valloc.obj \ - $(INTDIR)/xgetwd.obj \ - $(INTDIR)/regex.obj \ - $(INTDIR)/fnmatch.obj \ - $(INTDIR)/getdate.obj \ - $(INTDIR)/getline.obj \ - $(INTDIR)/savecwd.obj \ - $(INTDIR)/vasprintf.obj \ - $(INTDIR)/mkdir.obj \ - $(INTDIR)/run.obj \ - $(INTDIR)/pwd.obj \ - $(INTDIR)/filesubr.obj \ - $(INTDIR)/win32.obj \ - $(INTDIR)/waitpid.obj \ - $(INTDIR)/ndir.obj \ - $(INTDIR)/stripslash.obj \ - $(INTDIR)/rcmd.obj \ - $(INTDIR)/startserver.obj \ - $(INTDIR)/zutil.obj \ - $(INTDIR)/infutil.obj \ - $(INTDIR)/infblock.obj \ - $(INTDIR)/compress.obj \ - $(INTDIR)/uncompr.obj \ - $(INTDIR)/inflate.obj \ - $(INTDIR)/inftrees.obj \ - $(INTDIR)/gzio.obj \ - $(INTDIR)/infcodes.obj \ - $(INTDIR)/deflate.obj \ - $(INTDIR)/adler32.obj \ - $(INTDIR)/crc32.obj \ - $(INTDIR)/inffast.obj \ - $(INTDIR)/trees.obj - -$(OUTDIR)/cvs.exe : $(OUTDIR) $(DEF_FILE) $(LINK32_OBJS) + "$(INTDIR)/commit.obj" \ + "$(INTDIR)/scramble.obj" \ + "$(INTDIR)/filesubr.obj" \ + "$(INTDIR)/rcs.obj" \ + "$(INTDIR)/uncompr.obj" \ + "$(INTDIR)/inftrees.obj" \ + "$(INTDIR)/update.obj" \ + "$(INTDIR)/release.obj" \ + "$(INTDIR)/login.obj" \ + "$(INTDIR)/run.obj" \ + "$(INTDIR)/buffer.obj" \ + "$(INTDIR)/hash.obj" \ + "$(INTDIR)/modules.obj" \ + "$(INTDIR)/getopt.obj" \ + "$(INTDIR)/subr.obj" \ + "$(INTDIR)/mkmodules.obj" \ + "$(INTDIR)/getdate.obj" \ + "$(INTDIR)/waitpid.obj" \ + "$(INTDIR)/sighandle.obj" \ + "$(INTDIR)/inflate.obj" \ + "$(INTDIR)/classify.obj" \ + "$(INTDIR)/tag.obj" \ + "$(INTDIR)/entries.obj" \ + "$(INTDIR)/win32.obj" \ + "$(INTDIR)/pwd.obj" \ + "$(INTDIR)/getopt1.obj" \ + "$(INTDIR)/logmsg.obj" \ + "$(INTDIR)/error.obj" \ + "$(INTDIR)/fileattr.obj" \ + "$(INTDIR)/stripslash.obj" \ + "$(INTDIR)/xgetwd.obj" \ + "$(INTDIR)/infutil.obj" \ + "$(INTDIR)/fnmatch.obj" \ + "$(INTDIR)/parseinfo.obj" \ + "$(INTDIR)/zlib.obj" \ + "$(INTDIR)/main.obj" \ + "$(INTDIR)/vasprintf.obj" \ + "$(INTDIR)/server.obj" \ + "$(INTDIR)/vers_ts.obj" \ + "$(INTDIR)/patch.obj" \ + "$(INTDIR)/compress.obj" \ + "$(INTDIR)/getwd.obj" \ + "$(INTDIR)/gzio.obj" \ + "$(INTDIR)/diff.obj" \ + "$(INTDIR)/mkdir.obj" \ + "$(INTDIR)/trees.obj" \ + "$(INTDIR)/recurse.obj" \ + "$(INTDIR)/import.obj" \ + "$(INTDIR)/rtag.obj" \ + "$(INTDIR)/rcscmds.obj" \ + "$(INTDIR)/root.obj" \ + "$(INTDIR)/wrapper.obj" \ + "$(INTDIR)/lock.obj" \ + "$(INTDIR)/zutil.obj" \ + "$(INTDIR)/history.obj" \ + "$(INTDIR)/admin.obj" \ + "$(INTDIR)/version.obj" \ + "$(INTDIR)/crc32.obj" \ + "$(INTDIR)/create_adm.obj" \ + "$(INTDIR)/infblock.obj" \ + "$(INTDIR)/status.obj" \ + "$(INTDIR)/md5.obj" \ + "$(INTDIR)/checkin.obj" \ + "$(INTDIR)/checkout.obj" \ + "$(INTDIR)/getline.obj" \ + "$(INTDIR)/rcmd.obj" \ + "$(INTDIR)/yesno.obj" \ + "$(INTDIR)/adler32.obj" \ + "$(INTDIR)/savecwd.obj" \ + "$(INTDIR)/repos.obj" \ + "$(INTDIR)/argmatch.obj" \ + "$(INTDIR)/ndir.obj" \ + "$(INTDIR)/myndbm.obj" \ + "$(INTDIR)/cvsrc.obj" \ + "$(INTDIR)/startserver.obj" \ + "$(INTDIR)/client.obj" \ + "$(INTDIR)/regex.obj" \ + "$(INTDIR)/log.obj" \ + "$(INTDIR)/inffast.obj" \ + "$(INTDIR)/expand_path.obj" \ + "$(INTDIR)/remove.obj" \ + "$(INTDIR)/no_diff.obj" \ + "$(INTDIR)/edit.obj" \ + "$(INTDIR)/ignore.obj" \ + "$(INTDIR)/add.obj" \ + "$(INTDIR)/watch.obj" \ + "$(INTDIR)/deflate.obj" \ + "$(INTDIR)/find_names.obj" \ + "$(INTDIR)/valloc.obj" \ + "$(INTDIR)/infcodes.obj" + +"$(OUTDIR)\cvs.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << -!ELSEIF "$(CFG)" == "Win32 Debug" +!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 @@ -273,220 +277,223 @@ $(OUTDIR)/cvs.exe : $(OUTDIR) $(DEF_FILE) $(LINK32_OBJS) OUTDIR=.\WinDebug INTDIR=.\WinDebug -ALL : $(OUTDIR)/cvs.exe $(OUTDIR)/cvsnt.bsc - -$(OUTDIR) : - if not exist $(OUTDIR)/nul mkdir $(OUTDIR) - -# ADD BASE CPP /nologo /W3 /GX /Zi /YX /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FR /c -# ADD CPP /nologo /W3 /GX /Zi /YX /Ob1 /I "windows-NT" /I "lib" /I "src" /I "zlib" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "HAVE_CONFIG_H" /FR /c -CPP_PROJ=/nologo /W3 /GX /Zi /YX /Ob1 /I "windows-NT" /I "lib" /I "src" /I\ - "zlib" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "HAVE_CONFIG_H" /FR$(INTDIR)/\ - /Fp$(OUTDIR)/"cvsnt.pch" /Fo$(INTDIR)/ /Fd$(OUTDIR)/"cvsnt.pdb" /c +ALL : "$(OUTDIR)\cvs.exe" + +CLEAN : + -@erase ".\WinDebug\vc40.pdb" + -@erase ".\WinDebug\vc40.idb" + -@erase ".\WinDebug\cvs.exe" + -@erase ".\WinDebug\add.obj" + -@erase ".\WinDebug\savecwd.obj" + -@erase ".\WinDebug\infcodes.obj" + -@erase ".\WinDebug\valloc.obj" + -@erase ".\WinDebug\server.obj" + -@erase ".\WinDebug\scramble.obj" + -@erase ".\WinDebug\filesubr.obj" + -@erase ".\WinDebug\win32.obj" + -@erase ".\WinDebug\inffast.obj" + -@erase ".\WinDebug\inftrees.obj" + -@erase ".\WinDebug\no_diff.obj" + -@erase ".\WinDebug\repos.obj" + -@erase ".\WinDebug\edit.obj" + -@erase ".\WinDebug\cvsrc.obj" + -@erase ".\WinDebug\startserver.obj" + -@erase ".\WinDebug\getopt.obj" + -@erase ".\WinDebug\zlib.obj" + -@erase ".\WinDebug\deflate.obj" + -@erase ".\WinDebug\main.obj" + -@erase ".\WinDebug\expand_path.obj" + -@erase ".\WinDebug\getwd.obj" + -@erase ".\WinDebug\md5.obj" + -@erase ".\WinDebug\gzio.obj" + -@erase ".\WinDebug\classify.obj" + -@erase ".\WinDebug\uncompr.obj" + -@erase ".\WinDebug\diff.obj" + -@erase ".\WinDebug\watch.obj" + -@erase ".\WinDebug\release.obj" + -@erase ".\WinDebug\tag.obj" + -@erase ".\WinDebug\logmsg.obj" + -@erase ".\WinDebug\pwd.obj" + -@erase ".\WinDebug\modules.obj" + -@erase ".\WinDebug\rtag.obj" + -@erase ".\WinDebug\root.obj" + -@erase ".\WinDebug\admin.obj" + -@erase ".\WinDebug\lock.obj" + -@erase ".\WinDebug\getdate.obj" + -@erase ".\WinDebug\myndbm.obj" + -@erase ".\WinDebug\xgetwd.obj" + -@erase ".\WinDebug\waitpid.obj" + -@erase ".\WinDebug\login.obj" + -@erase ".\WinDebug\adler32.obj" + -@erase ".\WinDebug\inflate.obj" + -@erase ".\WinDebug\compress.obj" + -@erase ".\WinDebug\log.obj" + -@erase ".\WinDebug\entries.obj" + -@erase ".\WinDebug\stripslash.obj" + -@erase ".\WinDebug\rcmd.obj" + -@erase ".\WinDebug\getopt1.obj" + -@erase ".\WinDebug\ignore.obj" + -@erase ".\WinDebug\yesno.obj" + -@erase ".\WinDebug\infutil.obj" + -@erase ".\WinDebug\fnmatch.obj" + -@erase ".\WinDebug\import.obj" + -@erase ".\WinDebug\ndir.obj" + -@erase ".\WinDebug\regex.obj" + -@erase ".\WinDebug\commit.obj" + -@erase ".\WinDebug\mkmodules.obj" + -@erase ".\WinDebug\vers_ts.obj" + -@erase ".\WinDebug\infblock.obj" + -@erase ".\WinDebug\find_names.obj" + -@erase ".\WinDebug\rcs.obj" + -@erase ".\WinDebug\sighandle.obj" + -@erase ".\WinDebug\status.obj" + -@erase ".\WinDebug\update.obj" + -@erase ".\WinDebug\error.obj" + -@erase ".\WinDebug\checkout.obj" + -@erase ".\WinDebug\buffer.obj" + -@erase ".\WinDebug\run.obj" + -@erase ".\WinDebug\create_adm.obj" + -@erase ".\WinDebug\recurse.obj" + -@erase ".\WinDebug\patch.obj" + -@erase ".\WinDebug\rcscmds.obj" + -@erase ".\WinDebug\wrapper.obj" + -@erase ".\WinDebug\argmatch.obj" + -@erase ".\WinDebug\fileattr.obj" + -@erase ".\WinDebug\history.obj" + -@erase ".\WinDebug\version.obj" + -@erase ".\WinDebug\parseinfo.obj" + -@erase ".\WinDebug\mkdir.obj" + -@erase ".\WinDebug\vasprintf.obj" + -@erase ".\WinDebug\client.obj" + -@erase ".\WinDebug\checkin.obj" + -@erase ".\WinDebug\trees.obj" + -@erase ".\WinDebug\remove.obj" + -@erase ".\WinDebug\getline.obj" + -@erase ".\WinDebug\hash.obj" + -@erase ".\WinDebug\subr.obj" + -@erase ".\WinDebug\zutil.obj" + -@erase ".\WinDebug\crc32.obj" + -@erase ".\WinDebug\cvs.ilk" + -@erase ".\WinDebug\cvs.pdb" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +# 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 /c +# SUBTRACT CPP /Fr +CPP_PROJ=/nologo /MLd /W3 /Gm /GX /Zi /Ob1 /I "windows-NT" /I "lib" /I "src" /I\ + "zlib" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "HAVE_CONFIG_H"\ + /Fp"$(INTDIR)/cvsnt.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c CPP_OBJS=.\WinDebug/ +CPP_SBRS= # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo -BSC32_FLAGS=/nologo /o$(OUTDIR)/"cvsnt.bsc" -BSC32_SBRS= \ - $(INTDIR)/mkmodules.sbr \ - $(INTDIR)/subr.sbr \ - $(INTDIR)/admin.sbr \ - $(INTDIR)/server.sbr \ - $(INTDIR)/diff.sbr \ - $(INTDIR)/client.sbr \ - $(INTDIR)/checkout.sbr \ - $(INTDIR)/no_diff.sbr \ - $(INTDIR)/entries.sbr \ - $(INTDIR)/tag.sbr \ - $(INTDIR)/rtag.sbr \ - $(INTDIR)/status.sbr \ - $(INTDIR)/root.sbr \ - $(INTDIR)/myndbm.sbr \ - $(INTDIR)/hash.sbr \ - $(INTDIR)/repos.sbr \ - $(INTDIR)/parseinfo.sbr \ - $(INTDIR)/vers_ts.sbr \ - $(INTDIR)/checkin.sbr \ - $(INTDIR)/commit.sbr \ - $(INTDIR)/version.sbr \ - $(INTDIR)/cvsrc.sbr \ - $(INTDIR)/remove.sbr \ - $(INTDIR)/update.sbr \ - $(INTDIR)/logmsg.sbr \ - $(INTDIR)/classify.sbr \ - $(INTDIR)/history.sbr \ - $(INTDIR)/add.sbr \ - $(INTDIR)/lock.sbr \ - $(INTDIR)/recurse.sbr \ - $(INTDIR)/modules.sbr \ - $(INTDIR)/find_names.sbr \ - $(INTDIR)/rcs.sbr \ - $(INTDIR)/create_adm.sbr \ - $(INTDIR)/main.sbr \ - $(INTDIR)/patch.sbr \ - $(INTDIR)/release.sbr \ - $(INTDIR)/rcscmds.sbr \ - $(INTDIR)/import.sbr \ - $(INTDIR)/ignore.sbr \ - $(INTDIR)/log.sbr \ - $(INTDIR)/wrapper.sbr \ - $(INTDIR)/error.sbr \ - $(INTDIR)/expand_path.sbr \ - $(INTDIR)/edit.sbr \ - $(INTDIR)/fileattr.sbr \ - $(INTDIR)/watch.sbr \ - $(INTDIR)/login.sbr \ - $(INTDIR)/scramble.sbr \ - $(INTDIR)/buffer.sbr \ - $(INTDIR)/zlib.sbr \ - $(INTDIR)/getwd.sbr \ - $(INTDIR)/sighandle.sbr \ - $(INTDIR)/getopt.sbr \ - $(INTDIR)/argmatch.sbr \ - $(INTDIR)/md5.sbr \ - $(INTDIR)/yesno.sbr \ - $(INTDIR)/getopt1.sbr \ - $(INTDIR)/valloc.sbr \ - $(INTDIR)/xgetwd.sbr \ - $(INTDIR)/regex.sbr \ - $(INTDIR)/fnmatch.sbr \ - $(INTDIR)/getdate.sbr \ - $(INTDIR)/getline.sbr \ - $(INTDIR)/savecwd.sbr \ - $(INTDIR)/vasprintf.sbr \ - $(INTDIR)/mkdir.sbr \ - $(INTDIR)/run.sbr \ - $(INTDIR)/pwd.sbr \ - $(INTDIR)/filesubr.sbr \ - $(INTDIR)/win32.sbr \ - $(INTDIR)/waitpid.sbr \ - $(INTDIR)/ndir.sbr \ - $(INTDIR)/stripslash.sbr \ - $(INTDIR)/rcmd.sbr \ - $(INTDIR)/startserver.sbr \ - $(INTDIR)/zutil.sbr \ - $(INTDIR)/infutil.sbr \ - $(INTDIR)/infblock.sbr \ - $(INTDIR)/compress.sbr \ - $(INTDIR)/uncompr.sbr \ - $(INTDIR)/inflate.sbr \ - $(INTDIR)/inftrees.sbr \ - $(INTDIR)/gzio.sbr \ - $(INTDIR)/infcodes.sbr \ - $(INTDIR)/deflate.sbr \ - $(INTDIR)/adler32.sbr \ - $(INTDIR)/crc32.sbr \ - $(INTDIR)/inffast.sbr \ - $(INTDIR)/trees.sbr - -$(OUTDIR)/cvsnt.bsc : $(OUTDIR) $(BSC32_SBRS) - $(BSC32) @<< - $(BSC32_FLAGS) $(BSC32_SBRS) -<< - +BSC32_FLAGS=/nologo /o"$(OUTDIR)/cvsnt.bsc" +BSC32_SBRS= LINK32=link.exe -# ADD BASE LINK32 advapi32.lib /NOLOGO /SUBSYSTEM:console /DEBUG /MACHINE:I386 -# ADD LINK32 advapi32.lib wsock32.lib /NOLOGO /SUBSYSTEM:console /DEBUG /MACHINE:I386 /OUT:"WinDebug/cvs.exe" -LINK32_FLAGS=advapi32.lib wsock32.lib /NOLOGO /SUBSYSTEM:console\ - /INCREMENTAL:yes /PDB:$(OUTDIR)/"cvsnt.pdb" /DEBUG /MACHINE:I386\ - /OUT:"WinDebug/cvs.exe" -DEF_FILE= +# 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" +LINK32_FLAGS=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 /incremental:yes /pdb:"$(OUTDIR)/cvs.pdb" /debug\ + /machine:I386 /out:"$(OUTDIR)/cvs.exe" LINK32_OBJS= \ - $(INTDIR)/mkmodules.obj \ - $(INTDIR)/subr.obj \ - $(INTDIR)/admin.obj \ - $(INTDIR)/server.obj \ - $(INTDIR)/diff.obj \ - $(INTDIR)/client.obj \ - $(INTDIR)/checkout.obj \ - $(INTDIR)/no_diff.obj \ - $(INTDIR)/entries.obj \ - $(INTDIR)/tag.obj \ - $(INTDIR)/rtag.obj \ - $(INTDIR)/status.obj \ - $(INTDIR)/root.obj \ - $(INTDIR)/myndbm.obj \ - $(INTDIR)/hash.obj \ - $(INTDIR)/repos.obj \ - $(INTDIR)/parseinfo.obj \ - $(INTDIR)/vers_ts.obj \ - $(INTDIR)/checkin.obj \ - $(INTDIR)/commit.obj \ - $(INTDIR)/version.obj \ - $(INTDIR)/cvsrc.obj \ - $(INTDIR)/remove.obj \ - $(INTDIR)/update.obj \ - $(INTDIR)/logmsg.obj \ - $(INTDIR)/classify.obj \ - $(INTDIR)/history.obj \ - $(INTDIR)/add.obj \ - $(INTDIR)/lock.obj \ - $(INTDIR)/recurse.obj \ - $(INTDIR)/modules.obj \ - $(INTDIR)/find_names.obj \ - $(INTDIR)/rcs.obj \ - $(INTDIR)/create_adm.obj \ - $(INTDIR)/main.obj \ - $(INTDIR)/patch.obj \ - $(INTDIR)/release.obj \ - $(INTDIR)/rcscmds.obj \ - $(INTDIR)/import.obj \ - $(INTDIR)/ignore.obj \ - $(INTDIR)/log.obj \ - $(INTDIR)/wrapper.obj \ - $(INTDIR)/error.obj \ - $(INTDIR)/expand_path.obj \ - $(INTDIR)/edit.obj \ - $(INTDIR)/fileattr.obj \ - $(INTDIR)/watch.obj \ - $(INTDIR)/login.obj \ - $(INTDIR)/scramble.obj \ - $(INTDIR)/buffer.obj \ - $(INTDIR)/zlib.obj \ - $(INTDIR)/getwd.obj \ - $(INTDIR)/sighandle.obj \ - $(INTDIR)/getopt.obj \ - $(INTDIR)/argmatch.obj \ - $(INTDIR)/md5.obj \ - $(INTDIR)/yesno.obj \ - $(INTDIR)/getopt1.obj \ - $(INTDIR)/valloc.obj \ - $(INTDIR)/xgetwd.obj \ - $(INTDIR)/regex.obj \ - $(INTDIR)/fnmatch.obj \ - $(INTDIR)/getdate.obj \ - $(INTDIR)/getline.obj \ - $(INTDIR)/savecwd.obj \ - $(INTDIR)/vasprintf.obj \ - $(INTDIR)/mkdir.obj \ - $(INTDIR)/run.obj \ - $(INTDIR)/pwd.obj \ - $(INTDIR)/filesubr.obj \ - $(INTDIR)/win32.obj \ - $(INTDIR)/waitpid.obj \ - $(INTDIR)/ndir.obj \ - $(INTDIR)/stripslash.obj \ - $(INTDIR)/rcmd.obj \ - $(INTDIR)/startserver.obj \ - $(INTDIR)/zutil.obj \ - $(INTDIR)/infutil.obj \ - $(INTDIR)/infblock.obj \ - $(INTDIR)/compress.obj \ - $(INTDIR)/uncompr.obj \ - $(INTDIR)/inflate.obj \ - $(INTDIR)/inftrees.obj \ - $(INTDIR)/gzio.obj \ - $(INTDIR)/infcodes.obj \ - $(INTDIR)/deflate.obj \ - $(INTDIR)/adler32.obj \ - $(INTDIR)/crc32.obj \ - $(INTDIR)/inffast.obj \ - $(INTDIR)/trees.obj - -$(OUTDIR)/cvs.exe : $(OUTDIR) $(DEF_FILE) $(LINK32_OBJS) + "$(INTDIR)/add.obj" \ + "$(INTDIR)/savecwd.obj" \ + "$(INTDIR)/infcodes.obj" \ + "$(INTDIR)/valloc.obj" \ + "$(INTDIR)/server.obj" \ + "$(INTDIR)/scramble.obj" \ + "$(INTDIR)/filesubr.obj" \ + "$(INTDIR)/win32.obj" \ + "$(INTDIR)/inffast.obj" \ + "$(INTDIR)/inftrees.obj" \ + "$(INTDIR)/no_diff.obj" \ + "$(INTDIR)/repos.obj" \ + "$(INTDIR)/edit.obj" \ + "$(INTDIR)/cvsrc.obj" \ + "$(INTDIR)/startserver.obj" \ + "$(INTDIR)/getopt.obj" \ + "$(INTDIR)/zlib.obj" \ + "$(INTDIR)/deflate.obj" \ + "$(INTDIR)/main.obj" \ + "$(INTDIR)/expand_path.obj" \ + "$(INTDIR)/getwd.obj" \ + "$(INTDIR)/md5.obj" \ + "$(INTDIR)/gzio.obj" \ + "$(INTDIR)/classify.obj" \ + "$(INTDIR)/uncompr.obj" \ + "$(INTDIR)/diff.obj" \ + "$(INTDIR)/watch.obj" \ + "$(INTDIR)/release.obj" \ + "$(INTDIR)/tag.obj" \ + "$(INTDIR)/logmsg.obj" \ + "$(INTDIR)/pwd.obj" \ + "$(INTDIR)/modules.obj" \ + "$(INTDIR)/rtag.obj" \ + "$(INTDIR)/root.obj" \ + "$(INTDIR)/admin.obj" \ + "$(INTDIR)/lock.obj" \ + "$(INTDIR)/getdate.obj" \ + "$(INTDIR)/myndbm.obj" \ + "$(INTDIR)/xgetwd.obj" \ + "$(INTDIR)/waitpid.obj" \ + "$(INTDIR)/login.obj" \ + "$(INTDIR)/adler32.obj" \ + "$(INTDIR)/inflate.obj" \ + "$(INTDIR)/compress.obj" \ + "$(INTDIR)/log.obj" \ + "$(INTDIR)/entries.obj" \ + "$(INTDIR)/stripslash.obj" \ + "$(INTDIR)/rcmd.obj" \ + "$(INTDIR)/getopt1.obj" \ + "$(INTDIR)/ignore.obj" \ + "$(INTDIR)/yesno.obj" \ + "$(INTDIR)/infutil.obj" \ + "$(INTDIR)/fnmatch.obj" \ + "$(INTDIR)/import.obj" \ + "$(INTDIR)/ndir.obj" \ + "$(INTDIR)/regex.obj" \ + "$(INTDIR)/commit.obj" \ + "$(INTDIR)/mkmodules.obj" \ + "$(INTDIR)/vers_ts.obj" \ + "$(INTDIR)/infblock.obj" \ + "$(INTDIR)/find_names.obj" \ + "$(INTDIR)/rcs.obj" \ + "$(INTDIR)/sighandle.obj" \ + "$(INTDIR)/status.obj" \ + "$(INTDIR)/update.obj" \ + "$(INTDIR)/error.obj" \ + "$(INTDIR)/checkout.obj" \ + "$(INTDIR)/buffer.obj" \ + "$(INTDIR)/run.obj" \ + "$(INTDIR)/create_adm.obj" \ + "$(INTDIR)/recurse.obj" \ + "$(INTDIR)/patch.obj" \ + "$(INTDIR)/rcscmds.obj" \ + "$(INTDIR)/wrapper.obj" \ + "$(INTDIR)/argmatch.obj" \ + "$(INTDIR)/fileattr.obj" \ + "$(INTDIR)/history.obj" \ + "$(INTDIR)/version.obj" \ + "$(INTDIR)/parseinfo.obj" \ + "$(INTDIR)/mkdir.obj" \ + "$(INTDIR)/vasprintf.obj" \ + "$(INTDIR)/client.obj" \ + "$(INTDIR)/checkin.obj" \ + "$(INTDIR)/trees.obj" \ + "$(INTDIR)/remove.obj" \ + "$(INTDIR)/getline.obj" \ + "$(INTDIR)/hash.obj" \ + "$(INTDIR)/subr.obj" \ + "$(INTDIR)/zutil.obj" \ + "$(INTDIR)/crc32.obj" + +"$(OUTDIR)\cvs.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << @@ -502,1742 +509,2338 @@ $(OUTDIR)/cvs.exe : $(OUTDIR) $(DEF_FILE) $(LINK32_OBJS) .cxx{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + ################################################################################ -# Begin Group "src" +# Begin Target + +# Name "cvsnt - Win32 Release" +# Name "cvsnt - Win32 Debug" + +!IF "$(CFG)" == "cvsnt - Win32 Release" + +!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug" + +!ENDIF ################################################################################ # Begin Source File SOURCE=.\src\mkmodules.c -DEP_MKMOD=\ - .\src\cvs.h\ - .\lib\savecwd.h\ +DEP_CPP_MKMOD=\ + ".\src\cvs.h"\ + ".\lib\savecwd.h"\ + ".\lib\getline.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_MKMOD=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\mkmodules.obj" : $(SOURCE) $(DEP_CPP_MKMOD) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/mkmodules.obj : $(SOURCE) $(DEP_MKMOD) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\subr.c -DEP_SUBR_=\ - .\src\cvs.h\ +DEP_CPP_SUBR_=\ + ".\src\cvs.h"\ + ".\lib\getline.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_SUBR_=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\subr.obj" : $(SOURCE) $(DEP_CPP_SUBR_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/subr.obj : $(SOURCE) $(DEP_SUBR_) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\admin.c -DEP_ADMIN=\ - .\src\cvs.h\ +DEP_CPP_ADMIN=\ + ".\src\cvs.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_ADMIN=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\admin.obj" : $(SOURCE) $(DEP_CPP_ADMIN) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/admin.obj : $(SOURCE) $(DEP_ADMIN) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\server.c -DEP_SERVE=\ - .\src\cvs.h\ - .\src\watch.h\ - .\src\edit.h\ - .\src\fileattr.h\ +DEP_CPP_SERVE=\ + ".\src\cvs.h"\ + ".\src\watch.h"\ + ".\src\edit.h"\ + ".\src\fileattr.h"\ + ".\lib\getline.h"\ + ".\src\buffer.h"\ + {$(INCLUDE)}"\sys\Types.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_SERVE=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\server.obj" : $(SOURCE) $(DEP_CPP_SERVE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/server.obj : $(SOURCE) $(DEP_SERVE) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\diff.c -DEP_DIFF_=\ - .\src\cvs.h\ +DEP_CPP_DIFF_=\ + ".\src\cvs.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_DIFF_=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\diff.obj" : $(SOURCE) $(DEP_CPP_DIFF_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/diff.obj : $(SOURCE) $(DEP_DIFF_) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\client.c -DEP_CLIEN=\ +DEP_CPP_CLIEN=\ ".\windows-NT\config.h"\ - .\src\cvs.h\ - .\lib\getline.h\ - .\src\edit.h\ - .\lib\md5.h\ + ".\src\cvs.h"\ + ".\lib\getline.h"\ + ".\src\edit.h"\ + ".\src\buffer.h"\ + ".\lib\md5.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_CLIEN=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\client.obj" : $(SOURCE) $(DEP_CPP_CLIEN) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/client.obj : $(SOURCE) $(DEP_CLIEN) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\checkout.c -DEP_CHECK=\ - .\src\cvs.h\ +DEP_CPP_CHECK=\ + ".\src\cvs.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_CHECK=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\checkout.obj" : $(SOURCE) $(DEP_CPP_CHECK) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/checkout.obj : $(SOURCE) $(DEP_CHECK) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\no_diff.c -DEP_NO_DI=\ - .\src\cvs.h\ +DEP_CPP_NO_DI=\ + ".\src\cvs.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_NO_DI=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\no_diff.obj" : $(SOURCE) $(DEP_CPP_NO_DI) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/no_diff.obj : $(SOURCE) $(DEP_NO_DI) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\entries.c -DEP_ENTRI=\ - .\src\cvs.h\ - .\lib\getline.h\ +DEP_CPP_ENTRI=\ + ".\src\cvs.h"\ + ".\lib\getline.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_ENTRI=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\entries.obj" : $(SOURCE) $(DEP_CPP_ENTRI) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/entries.obj : $(SOURCE) $(DEP_ENTRI) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\tag.c -DEP_TAG_C=\ - .\src\cvs.h\ - .\lib\savecwd.h\ +DEP_CPP_TAG_C=\ + ".\src\cvs.h"\ + ".\lib\savecwd.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_TAG_C=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\tag.obj" : $(SOURCE) $(DEP_CPP_TAG_C) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/tag.obj : $(SOURCE) $(DEP_TAG_C) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\rtag.c -DEP_RTAG_=\ - .\src\cvs.h\ +DEP_CPP_RTAG_=\ + ".\src\cvs.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_RTAG_=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\rtag.obj" : $(SOURCE) $(DEP_CPP_RTAG_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/rtag.obj : $(SOURCE) $(DEP_RTAG_) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\status.c -DEP_STATU=\ - .\src\cvs.h\ +DEP_CPP_STATU=\ + ".\src\cvs.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_STATU=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\status.obj" : $(SOURCE) $(DEP_CPP_STATU) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/status.obj : $(SOURCE) $(DEP_STATU) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\root.c -DEP_ROOT_=\ - .\src\cvs.h\ +DEP_CPP_ROOT_=\ + ".\src\cvs.h"\ + ".\lib\getline.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_ROOT_=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\root.obj" : $(SOURCE) $(DEP_CPP_ROOT_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/root.obj : $(SOURCE) $(DEP_ROOT_) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\myndbm.c -DEP_MYNDB=\ - .\src\cvs.h\ - .\lib\getline.h\ +DEP_CPP_MYNDB=\ + ".\src\cvs.h"\ + ".\lib\getline.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_MYNDB=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\myndbm.obj" : $(SOURCE) $(DEP_CPP_MYNDB) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/myndbm.obj : $(SOURCE) $(DEP_MYNDB) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\hash.c -DEP_HASH_=\ - .\src\cvs.h\ +DEP_CPP_HASH_=\ + ".\src\cvs.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_HASH_=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\hash.obj" : $(SOURCE) $(DEP_CPP_HASH_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/hash.obj : $(SOURCE) $(DEP_HASH_) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\repos.c -DEP_REPOS=\ - .\src\cvs.h\ +DEP_CPP_REPOS=\ + ".\src\cvs.h"\ + ".\lib\getline.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_REPOS=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\repos.obj" : $(SOURCE) $(DEP_CPP_REPOS) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/repos.obj : $(SOURCE) $(DEP_REPOS) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\parseinfo.c -DEP_PARSE=\ - .\src\cvs.h\ +DEP_CPP_PARSE=\ + ".\src\cvs.h"\ + ".\lib\getline.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_PARSE=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\parseinfo.obj" : $(SOURCE) $(DEP_CPP_PARSE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/parseinfo.obj : $(SOURCE) $(DEP_PARSE) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\vers_ts.c -DEP_VERS_=\ - .\src\cvs.h\ +DEP_CPP_VERS_=\ + ".\src\cvs.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_VERS_=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\vers_ts.obj" : $(SOURCE) $(DEP_CPP_VERS_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/vers_ts.obj : $(SOURCE) $(DEP_VERS_) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\checkin.c -DEP_CHECKI=\ - .\src\cvs.h\ - .\src\fileattr.h\ - .\src\edit.h\ +DEP_CPP_CHECKI=\ + ".\src\cvs.h"\ + ".\src\fileattr.h"\ + ".\src\edit.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_CHECKI=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\checkin.obj" : $(SOURCE) $(DEP_CPP_CHECKI) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/checkin.obj : $(SOURCE) $(DEP_CHECKI) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\commit.c -DEP_COMMI=\ - .\src\cvs.h\ - .\lib\getline.h\ - .\src\edit.h\ - .\src\fileattr.h\ +DEP_CPP_COMMI=\ + ".\src\cvs.h"\ + ".\lib\getline.h"\ + ".\src\edit.h"\ + ".\src\fileattr.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_COMMI=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\commit.obj" : $(SOURCE) $(DEP_CPP_COMMI) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/commit.obj : $(SOURCE) $(DEP_COMMI) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\version.c -DEP_VERSI=\ - .\src\cvs.h\ +DEP_CPP_VERSI=\ + ".\src\cvs.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_VERSI=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\version.obj" : $(SOURCE) $(DEP_CPP_VERSI) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/version.obj : $(SOURCE) $(DEP_VERSI) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\cvsrc.c -DEP_CVSRC=\ - .\src\cvs.h\ - .\lib\getline.h\ +DEP_CPP_CVSRC=\ + ".\src\cvs.h"\ + ".\lib\getline.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_CVSRC=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\cvsrc.obj" : $(SOURCE) $(DEP_CPP_CVSRC) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/cvsrc.obj : $(SOURCE) $(DEP_CVSRC) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\remove.c -DEP_REMOV=\ - .\src\cvs.h\ +DEP_CPP_REMOV=\ + ".\src\cvs.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_REMOV=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\remove.obj" : $(SOURCE) $(DEP_CPP_REMOV) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/remove.obj : $(SOURCE) $(DEP_REMOV) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\update.c -DEP_UPDAT=\ - .\src\cvs.h\ - .\lib\md5.h\ - .\src\watch.h\ - .\src\fileattr.h\ - .\src\edit.h\ +DEP_CPP_UPDAT=\ + ".\src\cvs.h"\ + ".\lib\savecwd.h"\ + ".\lib\md5.h"\ + ".\src\watch.h"\ + ".\src\fileattr.h"\ + ".\src\edit.h"\ + ".\lib\getline.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_UPDAT=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\update.obj" : $(SOURCE) $(DEP_CPP_UPDAT) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/update.obj : $(SOURCE) $(DEP_UPDAT) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\logmsg.c -DEP_LOGMS=\ - .\src\cvs.h\ - .\lib\getline.h\ +DEP_CPP_LOGMS=\ + ".\src\cvs.h"\ + ".\lib\getline.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_LOGMS=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\logmsg.obj" : $(SOURCE) $(DEP_CPP_LOGMS) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/logmsg.obj : $(SOURCE) $(DEP_LOGMS) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\classify.c -DEP_CLASS=\ - .\src\cvs.h\ +DEP_CPP_CLASS=\ + ".\src\cvs.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_CLASS=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\classify.obj" : $(SOURCE) $(DEP_CPP_CLASS) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/classify.obj : $(SOURCE) $(DEP_CLASS) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\history.c -DEP_HISTO=\ - .\src\cvs.h\ +DEP_CPP_HISTO=\ + ".\src\cvs.h"\ + ".\lib\savecwd.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_HISTO=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\history.obj" : $(SOURCE) $(DEP_CPP_HISTO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/history.obj : $(SOURCE) $(DEP_HISTO) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\add.c -DEP_ADD_C=\ - .\src\cvs.h\ - .\lib\savecwd.h\ +DEP_CPP_ADD_C=\ + ".\src\cvs.h"\ + ".\lib\savecwd.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_ADD_C=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\add.obj" : $(SOURCE) $(DEP_CPP_ADD_C) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/add.obj : $(SOURCE) $(DEP_ADD_C) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\lock.c -DEP_LOCK_=\ - .\src\cvs.h\ +DEP_CPP_LOCK_=\ + ".\src\cvs.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_LOCK_=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\lock.obj" : $(SOURCE) $(DEP_CPP_LOCK_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/lock.obj : $(SOURCE) $(DEP_LOCK_) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\recurse.c -DEP_RECUR=\ - .\src\cvs.h\ - .\lib\savecwd.h\ - .\src\fileattr.h\ - .\src\edit.h\ +DEP_CPP_RECUR=\ + ".\src\cvs.h"\ + ".\lib\savecwd.h"\ + ".\src\fileattr.h"\ + ".\src\edit.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_RECUR=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\recurse.obj" : $(SOURCE) $(DEP_CPP_RECUR) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/recurse.obj : $(SOURCE) $(DEP_RECUR) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\modules.c -DEP_MODUL=\ - .\src\cvs.h\ - .\lib\savecwd.h\ +DEP_CPP_MODUL=\ + ".\src\cvs.h"\ + ".\lib\savecwd.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_MODUL=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\modules.obj" : $(SOURCE) $(DEP_CPP_MODUL) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/modules.obj : $(SOURCE) $(DEP_MODUL) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\find_names.c -DEP_FIND_=\ - .\src\cvs.h\ +DEP_CPP_FIND_=\ + ".\src\cvs.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_FIND_=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\find_names.obj" : $(SOURCE) $(DEP_CPP_FIND_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/find_names.obj : $(SOURCE) $(DEP_FIND_) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\rcs.c -DEP_RCS_C=\ - .\src\cvs.h\ +DEP_CPP_RCS_C=\ + ".\src\cvs.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_RCS_C=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\rcs.obj" : $(SOURCE) $(DEP_CPP_RCS_C) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/rcs.obj : $(SOURCE) $(DEP_RCS_C) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\create_adm.c -DEP_CREAT=\ - .\src\cvs.h\ +DEP_CPP_CREAT=\ + ".\src\cvs.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_CREAT=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\create_adm.obj" : $(SOURCE) $(DEP_CPP_CREAT) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/create_adm.obj : $(SOURCE) $(DEP_CREAT) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\main.c -DEP_MAIN_=\ - .\src\cvs.h\ +DEP_CPP_MAIN_=\ + ".\src\cvs.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_MAIN_=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\main.obj" : $(SOURCE) $(DEP_CPP_MAIN_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/main.obj : $(SOURCE) $(DEP_MAIN_) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\patch.c -DEP_PATCH=\ - .\src\cvs.h\ - .\lib\getline.h\ +DEP_CPP_PATCH=\ + ".\src\cvs.h"\ + ".\lib\getline.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_PATCH=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\patch.obj" : $(SOURCE) $(DEP_CPP_PATCH) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/patch.obj : $(SOURCE) $(DEP_PATCH) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\release.c -DEP_RELEA=\ - .\src\cvs.h\ +DEP_CPP_RELEA=\ + ".\src\cvs.h"\ + ".\lib\getline.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_RELEA=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\release.obj" : $(SOURCE) $(DEP_CPP_RELEA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/release.obj : $(SOURCE) $(DEP_RELEA) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\rcscmds.c -DEP_RCSCM=\ - .\src\cvs.h\ +DEP_CPP_RCSCM=\ + ".\src\cvs.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_RCSCM=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\rcscmds.obj" : $(SOURCE) $(DEP_CPP_RCSCM) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/rcscmds.obj : $(SOURCE) $(DEP_RCSCM) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\import.c -DEP_IMPOR=\ - .\src\cvs.h\ - .\lib\savecwd.h\ +DEP_CPP_IMPOR=\ + ".\src\cvs.h"\ + ".\lib\savecwd.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_IMPOR=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\import.obj" : $(SOURCE) $(DEP_CPP_IMPOR) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/import.obj : $(SOURCE) $(DEP_IMPOR) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\ignore.c -DEP_IGNOR=\ - .\src\cvs.h\ +DEP_CPP_IGNOR=\ + ".\src\cvs.h"\ + ".\lib\getline.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_IGNOR=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\ignore.obj" : $(SOURCE) $(DEP_CPP_IGNOR) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/ignore.obj : $(SOURCE) $(DEP_IGNOR) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\log.c -DEP_LOG_C=\ - .\src\cvs.h\ +DEP_CPP_LOG_C=\ + ".\src\cvs.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_LOG_C=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\log.obj" : $(SOURCE) $(DEP_CPP_LOG_C) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/log.obj : $(SOURCE) $(DEP_LOG_C) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\wrapper.c -DEP_WRAPP=\ - .\src\cvs.h\ +DEP_CPP_WRAPP=\ + ".\src\cvs.h"\ + ".\lib\getline.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_WRAPP=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\wrapper.obj" : $(SOURCE) $(DEP_CPP_WRAPP) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/wrapper.obj : $(SOURCE) $(DEP_WRAPP) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\error.c -DEP_ERROR=\ - .\src\cvs.h\ +DEP_CPP_ERROR=\ + ".\src\cvs.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_ERROR=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\error.obj" : $(SOURCE) $(DEP_CPP_ERROR) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/error.obj : $(SOURCE) $(DEP_ERROR) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\expand_path.c -DEP_EXPAN=\ - .\src\cvs.h\ +DEP_CPP_EXPAN=\ + ".\src\cvs.h"\ + {$(INCLUDE)}"\sys\Types.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_EXPAN=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\expand_path.obj" : $(SOURCE) $(DEP_CPP_EXPAN) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/expand_path.obj : $(SOURCE) $(DEP_EXPAN) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\edit.c -DEP_EDIT_=\ - .\src\cvs.h\ - .\lib\getline.h\ - .\src\watch.h\ - .\src\edit.h\ - .\src\fileattr.h\ +DEP_CPP_EDIT_=\ + ".\src\cvs.h"\ + ".\lib\getline.h"\ + ".\src\watch.h"\ + ".\src\edit.h"\ + ".\src\fileattr.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_EDIT_=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\edit.obj" : $(SOURCE) $(DEP_CPP_EDIT_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/edit.obj : $(SOURCE) $(DEP_EDIT_) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\fileattr.c -DEP_FILEA=\ - .\src\cvs.h\ - .\lib\getline.h\ - .\src\fileattr.h\ +DEP_CPP_FILEA=\ + ".\src\cvs.h"\ + ".\lib\getline.h"\ + ".\src\fileattr.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_FILEA=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\fileattr.obj" : $(SOURCE) $(DEP_CPP_FILEA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/fileattr.obj : $(SOURCE) $(DEP_FILEA) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\watch.c -DEP_WATCH=\ - .\src\cvs.h\ - .\src\edit.h\ - .\src\fileattr.h\ - .\src\watch.h\ +DEP_CPP_WATCH=\ + ".\src\cvs.h"\ + ".\src\edit.h"\ + ".\src\fileattr.h"\ + ".\src\watch.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_WATCH=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\watch.obj" : $(SOURCE) $(DEP_CPP_WATCH) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/watch.obj : $(SOURCE) $(DEP_WATCH) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\login.c -DEP_LOGIN=\ - .\src\cvs.h\ - .\lib\getline.h\ +DEP_CPP_LOGIN=\ + ".\src\cvs.h"\ + ".\lib\getline.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_LOGIN=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\login.obj" : $(SOURCE) $(DEP_CPP_LOGIN) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/login.obj : $(SOURCE) $(DEP_LOGIN) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\scramble.c -DEP_SCRAM=\ - .\src\cvs.h\ +DEP_CPP_SCRAM=\ + ".\src\cvs.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_SCRAM=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\scramble.obj" : $(SOURCE) $(DEP_CPP_SCRAM) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/scramble.obj : $(SOURCE) $(DEP_SCRAM) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\buffer.c -DEP_BUFFE=\ - .\src\cvs.h\ - .\src\buffer.h\ +DEP_CPP_BUFFE=\ + ".\src\cvs.h"\ + ".\src\buffer.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.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\error.h\ - .\src\update.h\ - .\src\server.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_BUFFE=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\buffer.obj" : $(SOURCE) $(DEP_CPP_BUFFE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/buffer.obj : $(SOURCE) $(DEP_BUFFE) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\zlib.c -DEP_ZLIB_=\ - .\src\cvs.h\ - .\src\buffer.h\ +DEP_CPP_ZLIB_=\ + ".\src\cvs.h"\ + ".\src\buffer.h"\ + ".\zlib\zlib.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.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\error.h\ - .\src\update.h\ - .\src\server.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + ".\zlib\zconf.h"\ + +NODEP_CPP_ZLIB_=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\zlib.obj" : $(SOURCE) $(DEP_CPP_ZLIB_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/zlib.obj : $(SOURCE) $(DEP_ZLIB_) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\src\ChangeLog -# End Source File -# End Group -################################################################################ -# Begin Group "lib" +!IF "$(CFG)" == "cvsnt - Win32 Release" + +!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug" + +!ENDIF + +# End Source File ################################################################################ # Begin Source File SOURCE=.\lib\getwd.c -DEP_GETWD=\ +DEP_CPP_GETWD=\ ".\windows-NT\config.h"\ - .\lib\system.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_GETWD=\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\getwd.obj" : $(SOURCE) $(DEP_CPP_GETWD) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/getwd.obj : $(SOURCE) $(DEP_GETWD) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\sighandle.c -DEP_SIGHA=\ +DEP_CPP_SIGHA=\ ".\windows-NT\config.h"\ - .\lib\system.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_SIGHA=\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\sighandle.obj" : $(SOURCE) $(DEP_CPP_SIGHA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/sighandle.obj : $(SOURCE) $(DEP_SIGHA) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\getopt.c -DEP_GETOP=\ +DEP_CPP_GETOP=\ ".\windows-NT\config.h"\ - .\lib\getopt.h + ".\lib\getopt.h"\ + + +"$(INTDIR)\getopt.obj" : $(SOURCE) $(DEP_CPP_GETOP) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/getopt.obj : $(SOURCE) $(DEP_GETOP) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\argmatch.c -DEP_ARGMA=\ - ".\windows-NT\config.h" +DEP_CPP_ARGMA=\ + ".\windows-NT\config.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + + +"$(INTDIR)\argmatch.obj" : $(SOURCE) $(DEP_CPP_ARGMA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/argmatch.obj : $(SOURCE) $(DEP_ARGMA) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\md5.c -DEP_MD5_C=\ +DEP_CPP_MD5_C=\ ".\windows-NT\config.h"\ - .\lib\md5.h + ".\lib\md5.h"\ + + +"$(INTDIR)\md5.obj" : $(SOURCE) $(DEP_CPP_MD5_C) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/md5.obj : $(SOURCE) $(DEP_MD5_C) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\yesno.c -DEP_YESNO=\ - ".\windows-NT\config.h" +DEP_CPP_YESNO=\ + ".\windows-NT\config.h"\ + + +"$(INTDIR)\yesno.obj" : $(SOURCE) $(DEP_CPP_YESNO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/yesno.obj : $(SOURCE) $(DEP_YESNO) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\getopt1.c -DEP_GETOPT=\ +DEP_CPP_GETOPT=\ ".\windows-NT\config.h"\ - .\lib\getopt.h + ".\lib\getopt.h"\ + + +"$(INTDIR)\getopt1.obj" : $(SOURCE) $(DEP_CPP_GETOPT) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/getopt1.obj : $(SOURCE) $(DEP_GETOPT) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\valloc.c -DEP_VALLO=\ +DEP_CPP_VALLO=\ ".\windows-NT\config.h"\ - .\lib\system.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_VALLO=\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\valloc.obj" : $(SOURCE) $(DEP_CPP_VALLO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/valloc.obj : $(SOURCE) $(DEP_VALLO) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\xgetwd.c -DEP_XGETW=\ +DEP_CPP_XGETW=\ ".\windows-NT\config.h"\ - .\lib\system.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_XGETW=\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\xgetwd.obj" : $(SOURCE) $(DEP_CPP_XGETW) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/xgetwd.obj : $(SOURCE) $(DEP_XGETW) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\regex.c -DEP_REGEX=\ +DEP_CPP_REGEX=\ + {$(INCLUDE)}"\sys\Types.h"\ ".\windows-NT\config.h"\ - .\lib\regex.h + ".\src\buffer.h"\ + ".\lib\regex.h"\ + +NODEP_CPP_REGEX=\ + ".\lib\lisp.h"\ + ".\lib\syntax.h"\ + + +"$(INTDIR)\regex.obj" : $(SOURCE) $(DEP_CPP_REGEX) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/regex.obj : $(SOURCE) $(DEP_REGEX) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\fnmatch.c -DEP_FNMAT=\ +DEP_CPP_FNMAT=\ ".\windows-NT\config.h"\ - .\lib\fnmatch.h + ".\lib\fnmatch.h"\ + + +"$(INTDIR)\fnmatch.obj" : $(SOURCE) $(DEP_CPP_FNMAT) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/fnmatch.obj : $(SOURCE) $(DEP_FNMAT) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\getdate.c -DEP_GETDA=\ - ".\windows-NT\config.h" +DEP_CPP_GETDA=\ + ".\windows-NT\config.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + + +"$(INTDIR)\getdate.obj" : $(SOURCE) $(DEP_CPP_GETDA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/getdate.obj : $(SOURCE) $(DEP_GETDA) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\getline.c -DEP_GETLI=\ - ".\windows-NT\config.h" +DEP_CPP_GETLI=\ + ".\windows-NT\config.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + + +"$(INTDIR)\getline.obj" : $(SOURCE) $(DEP_CPP_GETLI) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/getline.obj : $(SOURCE) $(DEP_GETLI) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\savecwd.c -DEP_SAVEC=\ +DEP_CPP_SAVEC=\ ".\windows-NT\config.h"\ - .\lib\savecwd.h\ - .\src\error.h + ".\lib\savecwd.h"\ + + +"$(INTDIR)\savecwd.obj" : $(SOURCE) $(DEP_CPP_SAVEC) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/savecwd.obj : $(SOURCE) $(DEP_SAVEC) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\vasprintf.c -DEP_VASPR=\ - ".\windows-NT\config.h" +DEP_CPP_VASPR=\ + ".\windows-NT\config.h"\ + -$(INTDIR)/vasprintf.obj : $(SOURCE) $(DEP_VASPR) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) +"$(INTDIR)\vasprintf.obj" : $(SOURCE) $(DEP_CPP_VASPR) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -# End Source File -# End Group -################################################################################ -# Begin Group "windows-NT" +# End Source File ################################################################################ # Begin Source File SOURCE=".\windows-NT\mkdir.c" -DEP_MKDIR=\ - .\src\cvs.h\ +DEP_CPP_MKDIR=\ + ".\src\cvs.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_MKDIR=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\mkdir.obj" : $(SOURCE) $(DEP_CPP_MKDIR) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/mkdir.obj : $(SOURCE) $(DEP_MKDIR) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=".\windows-NT\run.c" -DEP_RUN_C=\ - .\src\cvs.h\ +DEP_CPP_RUN_C=\ + ".\src\cvs.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_RUN_C=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\run.obj" : $(SOURCE) $(DEP_CPP_RUN_C) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/run.obj : $(SOURCE) $(DEP_RUN_C) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=".\windows-NT\pwd.c" -DEP_PWD_C=\ - ".\windows-NT\pwd.h" +DEP_CPP_PWD_C=\ + ".\windows-NT\pwd.h"\ + + +"$(INTDIR)\pwd.obj" : $(SOURCE) $(DEP_CPP_PWD_C) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/pwd.obj : $(SOURCE) $(DEP_PWD_C) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=".\windows-NT\filesubr.c" -DEP_FILES=\ - .\src\cvs.h\ +DEP_CPP_FILES=\ + ".\src\cvs.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_FILES=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\filesubr.obj" : $(SOURCE) $(DEP_CPP_FILES) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/filesubr.obj : $(SOURCE) $(DEP_FILES) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=".\windows-NT\win32.c" -DEP_WIN32=\ - ".\windows-NT\config.h" +DEP_CPP_WIN32=\ + ".\windows-NT\config.h"\ + + +"$(INTDIR)\win32.obj" : $(SOURCE) $(DEP_CPP_WIN32) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/win32.obj : $(SOURCE) $(DEP_WIN32) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=".\windows-NT\waitpid.c" -DEP_WAITP=\ - ".\windows-NT\config.h" +DEP_CPP_WAITP=\ + ".\windows-NT\config.h"\ + + +"$(INTDIR)\waitpid.obj" : $(SOURCE) $(DEP_CPP_WAITP) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/waitpid.obj : $(SOURCE) $(DEP_WAITP) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=".\windows-NT\ndir.c" -DEP_NDIR_=\ - ".\windows-NT\ndir.h" +DEP_CPP_NDIR_=\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + ".\windows-NT\ndir.h"\ + + +"$(INTDIR)\ndir.obj" : $(SOURCE) $(DEP_CPP_NDIR_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/ndir.obj : $(SOURCE) $(DEP_NDIR_) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ @@ -2245,258 +2848,325 @@ $(INTDIR)/ndir.obj : $(SOURCE) $(DEP_NDIR_) $(INTDIR) SOURCE=".\windows-NT\stripslash.c" -$(INTDIR)/stripslash.obj : $(SOURCE) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) +"$(INTDIR)\stripslash.obj" : $(SOURCE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) + # End Source File ################################################################################ # Begin Source File SOURCE=".\windows-NT\rcmd.c" -DEP_RCMD_=\ - ".\windows-NT\rcmd.h" +DEP_CPP_RCMD_=\ + ".\src\cvs.h"\ + ".\windows-NT\rcmd.h"\ + ".\windows-NT\config.h"\ + ".\windows-NT\options.h"\ + ".\lib\fnmatch.h"\ + ".\windows-NT\pwd.h"\ + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_RCMD_=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\rcmd.obj" : $(SOURCE) $(DEP_CPP_RCMD_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/rcmd.obj : $(SOURCE) $(DEP_RCMD_) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=".\windows-NT\startserver.c" -DEP_START=\ - .\src\cvs.h\ +DEP_CPP_START=\ + ".\src\cvs.h"\ ".\windows-NT\rcmd.h"\ ".\windows-NT\config.h"\ ".\windows-NT\options.h"\ - .\lib\fnmatch.h\ + ".\lib\fnmatch.h"\ ".\windows-NT\pwd.h"\ - .\lib\system.h\ - .\src\hash.h\ - .\src\server.h\ - .\src\client.h\ - .\src\myndbm.h\ - .\lib\regex.h\ - .\lib\getopt.h\ - .\lib\wait.h\ - .\src\rcs.h\ - .\src\error.h\ - .\src\update.h\ - ".\windows-NT\ndir.h" + ".\lib\system.h"\ + ".\src\hash.h"\ + ".\src\client.h"\ + ".\src\myndbm.h"\ + ".\lib\regex.h"\ + ".\lib\getopt.h"\ + ".\lib\wait.h"\ + ".\src\rcs.h"\ + ".\src\update.h"\ + ".\src\server.h"\ + {$(INCLUDE)}"\sys\Types.h"\ + {$(INCLUDE)}"\sys\Stat.h"\ + {$(INCLUDE)}"\sys\Timeb.h"\ + {$(INCLUDE)}"\sys\Utime.h"\ + ".\windows-NT\ndir.h"\ + +NODEP_CPP_START=\ + ".\src\popen.h"\ + ".\lib\tcpip.h"\ + + +"$(INTDIR)\startserver.obj" : $(SOURCE) $(DEP_CPP_START) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/startserver.obj : $(SOURCE) $(DEP_START) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=".\windows-NT\ChangeLog" -# End Source File -# End Group -################################################################################ -# Begin Group "zlib" +!IF "$(CFG)" == "cvsnt - Win32 Release" + +!ELSEIF "$(CFG)" == "cvsnt - Win32 Debug" + +!ENDIF + +# End Source File ################################################################################ # Begin Source File SOURCE=.\zlib\zutil.c -DEP_ZUTIL=\ - .\zlib\zutil.h\ - .\zlib\zlib.h\ - .\zlib\zconf.h +DEP_CPP_ZUTIL=\ + ".\zlib\zutil.h"\ + ".\zlib\zlib.h"\ + ".\zlib\zconf.h"\ + + +"$(INTDIR)\zutil.obj" : $(SOURCE) $(DEP_CPP_ZUTIL) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/zutil.obj : $(SOURCE) $(DEP_ZUTIL) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\zlib\infutil.c -DEP_INFUT=\ - .\zlib\zutil.h\ - .\zlib\infblock.h\ - .\zlib\inftrees.h\ - .\zlib\infcodes.h\ - .\zlib\infutil.h\ - .\zlib\zlib.h\ - .\zlib\zconf.h +DEP_CPP_INFUT=\ + ".\zlib\zutil.h"\ + ".\zlib\infblock.h"\ + ".\zlib\inftrees.h"\ + ".\zlib\infcodes.h"\ + ".\zlib\infutil.h"\ + ".\zlib\zlib.h"\ + ".\zlib\zconf.h"\ + + +"$(INTDIR)\infutil.obj" : $(SOURCE) $(DEP_CPP_INFUT) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/infutil.obj : $(SOURCE) $(DEP_INFUT) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\zlib\infblock.c -DEP_INFBL=\ - .\zlib\zutil.h\ - .\zlib\infblock.h\ - .\zlib\inftrees.h\ - .\zlib\infcodes.h\ - .\zlib\infutil.h\ - .\zlib\zlib.h\ - .\zlib\zconf.h +DEP_CPP_INFBL=\ + ".\zlib\zutil.h"\ + ".\zlib\infblock.h"\ + ".\zlib\inftrees.h"\ + ".\zlib\infcodes.h"\ + ".\zlib\infutil.h"\ + ".\zlib\zlib.h"\ + ".\zlib\zconf.h"\ + + +"$(INTDIR)\infblock.obj" : $(SOURCE) $(DEP_CPP_INFBL) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/infblock.obj : $(SOURCE) $(DEP_INFBL) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\zlib\compress.c -DEP_COMPR=\ - .\zlib\zlib.h\ - .\zlib\zconf.h +DEP_CPP_COMPR=\ + ".\zlib\zlib.h"\ + ".\zlib\zconf.h"\ + + +"$(INTDIR)\compress.obj" : $(SOURCE) $(DEP_CPP_COMPR) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/compress.obj : $(SOURCE) $(DEP_COMPR) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\zlib\uncompr.c -DEP_UNCOM=\ - .\zlib\zlib.h\ - .\zlib\zconf.h +DEP_CPP_UNCOM=\ + ".\zlib\zlib.h"\ + ".\zlib\zconf.h"\ + + +"$(INTDIR)\uncompr.obj" : $(SOURCE) $(DEP_CPP_UNCOM) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/uncompr.obj : $(SOURCE) $(DEP_UNCOM) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\zlib\inflate.c -DEP_INFLA=\ - .\zlib\zutil.h\ - .\zlib\infblock.h\ - .\zlib\zlib.h\ - .\zlib\zconf.h +DEP_CPP_INFLA=\ + ".\zlib\zutil.h"\ + ".\zlib\infblock.h"\ + ".\zlib\zlib.h"\ + ".\zlib\zconf.h"\ + + +"$(INTDIR)\inflate.obj" : $(SOURCE) $(DEP_CPP_INFLA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/inflate.obj : $(SOURCE) $(DEP_INFLA) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\zlib\inftrees.c -DEP_INFTR=\ - .\zlib\zutil.h\ - .\zlib\inftrees.h\ - .\zlib\zlib.h\ - .\zlib\zconf.h +DEP_CPP_INFTR=\ + ".\zlib\zutil.h"\ + ".\zlib\inftrees.h"\ + ".\zlib\zlib.h"\ + ".\zlib\zconf.h"\ + + +"$(INTDIR)\inftrees.obj" : $(SOURCE) $(DEP_CPP_INFTR) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/inftrees.obj : $(SOURCE) $(DEP_INFTR) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\zlib\gzio.c -DEP_GZIO_=\ - .\zlib\zutil.h\ - .\zlib\zlib.h\ - .\zlib\zconf.h +DEP_CPP_GZIO_=\ + ".\zlib\zutil.h"\ + ".\zlib\zlib.h"\ + ".\zlib\zconf.h"\ + + +"$(INTDIR)\gzio.obj" : $(SOURCE) $(DEP_CPP_GZIO_) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/gzio.obj : $(SOURCE) $(DEP_GZIO_) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\zlib\infcodes.c -DEP_INFCO=\ - .\zlib\zutil.h\ - .\zlib\inftrees.h\ - .\zlib\infblock.h\ - .\zlib\infcodes.h\ - .\zlib\infutil.h\ - .\zlib\inffast.h\ - .\zlib\zlib.h\ - .\zlib\zconf.h +DEP_CPP_INFCO=\ + ".\zlib\zutil.h"\ + ".\zlib\inftrees.h"\ + ".\zlib\infblock.h"\ + ".\zlib\infcodes.h"\ + ".\zlib\infutil.h"\ + ".\zlib\inffast.h"\ + ".\zlib\zlib.h"\ + ".\zlib\zconf.h"\ + + +"$(INTDIR)\infcodes.obj" : $(SOURCE) $(DEP_CPP_INFCO) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/infcodes.obj : $(SOURCE) $(DEP_INFCO) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\zlib\deflate.c -DEP_DEFLA=\ - .\zlib\deflate.h\ - .\zlib\zutil.h\ - .\zlib\zlib.h\ - .\zlib\zconf.h +DEP_CPP_DEFLA=\ + ".\zlib\deflate.h"\ + ".\zlib\zutil.h"\ + ".\zlib\zlib.h"\ + ".\zlib\zconf.h"\ + + +"$(INTDIR)\deflate.obj" : $(SOURCE) $(DEP_CPP_DEFLA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/deflate.obj : $(SOURCE) $(DEP_DEFLA) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\zlib\adler32.c -DEP_ADLER=\ - .\zlib\zlib.h\ - .\zlib\zconf.h +DEP_CPP_ADLER=\ + ".\zlib\zlib.h"\ + ".\zlib\zconf.h"\ + + +"$(INTDIR)\adler32.obj" : $(SOURCE) $(DEP_CPP_ADLER) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/adler32.obj : $(SOURCE) $(DEP_ADLER) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\zlib\crc32.c -DEP_CRC32=\ - .\zlib\zlib.h\ - .\zlib\zconf.h +DEP_CPP_CRC32=\ + ".\zlib\zlib.h"\ + ".\zlib\zconf.h"\ + + +"$(INTDIR)\crc32.obj" : $(SOURCE) $(DEP_CPP_CRC32) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/crc32.obj : $(SOURCE) $(DEP_CRC32) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\zlib\inffast.c -DEP_INFFA=\ - .\zlib\zutil.h\ - .\zlib\inftrees.h\ - .\zlib\infblock.h\ - .\zlib\infcodes.h\ - .\zlib\infutil.h\ - .\zlib\inffast.h\ - .\zlib\zlib.h\ - .\zlib\zconf.h +DEP_CPP_INFFA=\ + ".\zlib\zutil.h"\ + ".\zlib\inftrees.h"\ + ".\zlib\infblock.h"\ + ".\zlib\infcodes.h"\ + ".\zlib\infutil.h"\ + ".\zlib\inffast.h"\ + ".\zlib\zlib.h"\ + ".\zlib\zconf.h"\ + + +"$(INTDIR)\inffast.obj" : $(SOURCE) $(DEP_CPP_INFFA) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/inffast.obj : $(SOURCE) $(DEP_INFFA) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\zlib\trees.c -DEP_TREES=\ - .\zlib\deflate.h\ - .\zlib\zutil.h\ - .\zlib\zlib.h\ - .\zlib\zconf.h +DEP_CPP_TREES=\ + ".\zlib\deflate.h"\ + ".\zlib\zutil.h"\ + ".\zlib\zlib.h"\ + ".\zlib\zconf.h"\ + + +"$(INTDIR)\trees.obj" : $(SOURCE) $(DEP_CPP_TREES) "$(INTDIR)" + $(CPP) $(CPP_PROJ) $(SOURCE) -$(INTDIR)/trees.obj : $(SOURCE) $(DEP_TREES) $(INTDIR) - $(CPP) $(CPP_PROJ) $(SOURCE) # 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 4cfcb234b48..e956d4f791d 100644 --- a/gnu/usr.bin/cvs/doc/ChangeLog +++ b/gnu/usr.bin/cvs/doc/ChangeLog @@ -1,3 +1,133 @@ +Sun Mar 16 12:37:12 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * cvs.texinfo (File permissions): CVSUMASK now works for RCS + files; but it is (still) awkward for client/server CVS. + +Sat Mar 15 17:41:12 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * cvs.texinfo (Magic branch numbers): Add comment about where this + should go. + +Thu Mar 13 09:11:36 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * cvs.texinfo (Credits): Fix grammatical mistake ("manual about" + -> "manual is about"). Reported by Philippe De Muyter. + +Sun Mar 9 09:06:40 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * cvs.texinfo (File permissions): Add comment about val-tags and + CVSUMASK. + +Sun Mar 2 12:33:26 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * cvs.texinfo (From scratch): Add comment about creating + directories with add rather than import. + + * cvs.texinfo (Creating a repository): Add comment about how this + somewhat duplicates Server requirements. + + * cvs.texinfo (Connecting via rsh): Add comment about rsh + vs. remsh. Also wording fix ("incorrect" -> "inapplicable"). + + * cvs.texinfo (Outside): Add comment about renames and annotate. + + * cvs.texinfo (Server requirements): New node. + +Thu Feb 27 15:20:49 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * cvs.texinfo (Multiple developers): Reword section on "cvs admin + -l". As nearly as I can tell based on when it came up on info-cvs + and other contexts, people who are into reserved checkouts + generally find that cvs admin -l is OK. Add a bunch more notes + (inside @ignore) about reserved checkout implementation ideas. + +Sun Feb 23 16:12:03 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * cvs.texinfo (Common options): Add various additional comments + about date formats. + + * RCSFILES: Remove diff for Id and explain it in words instead. + The previous values for Id had been clobbered by keyword expansion + on the RCSFILES file itself. + +Sat Feb 22 14:16:28 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * Makefile.in (DISTFILES): Fix typo (missing backslash). + +Fri Feb 21 23:08:38 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * RCSFILES: New file. + * Makefile.in (DISTFILES): Add RCSFILES. + +20 Feb 1997 Lenny Foner <foner@media.mit.edu> + + * cvs.texinfo (Checklist): Fix typo ("keword" -> "keyword"). + +Thu Feb 20 21:57:05 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * cvs.texinfo (Keeping a checked out copy): Add "web" to index. + +Wed Feb 12 18:44:16 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * cvs.texinfo (Password authentication client, Invoking CVS): + Document "cvs logout" command. + +Tue Feb 11 20:42:45 1997 Ian Lance Taylor <ian@cygnus.com> + + * cvs.texinfo (commit options): Document that the -f option to + commit disables recursion. + +Sun Feb 9 13:58:59 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * cvs.texinfo (diff options): Document all the options we pass + through to diff. Remove paragraph about -D sometimes meaning + --ifdef since that is no longer true. + + * cvs.texinfo (Multiple developers): Add lengthy comment about + reserved checkout design issues. + + * cvs.texinfo (Wrappers): Add paragraph about timestamps. + + * cvs.texinfo (commit options): Don't try to document what CVS 1.3 + does with -f and how recent versions differ: 1.3 is pretty old + anyway, we generally only try to document the current version, and + the way it was described here was pretty confusing. + (Environment variables): Likewise for CVSEDITOR. + + * cvs.texinfo (import output): Add index entries for symbolic + links. Add brief mention of whether behavior should be + different. Add comments on other symbolic link issues. + +Wed Feb 5 13:02:37 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * cvs.texinfo (Concurrency): Add comment about commit/commit + atomicity. + +Mon Feb 3 10:55:41 1997 joel boutros <nihilis@moral.addiction.com> + + * cvs.texinfo (Connecting via rsh): Fix typo (programs -> problems). + +Fri Jan 31 12:18:47 1997 Ian Lance Taylor <ian@cygnus.com> + + * cvsclient.texi (Connection and Authentication): Correct typo + (``sent'' for ``send''), and rewrite sentence for clarity. + +Fri Jan 24 10:31:57 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * cvs.texinfo (File status): Change "Unresolved Conflict" to "File + had conflicts on merge" per change to CVS. + +Sun Jan 19 16:21:17 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * cvs.texinfo (admin): Add comments about "group" and "compiled in + value". At least one info-cvs poster was confused by this. + +Thu Jan 16 17:54:51 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * cvs.texinfo (Wrappers): It is just -t/-f which doesn't work + client/server. -k *does* (well, except for the problem with + import noted in BUGS). -m I don't know and I doubt anyone cares. + Mon Jan 13 15:41:02 1997 Karl Fogel <kfogel@ynu38.ynu.edu.cn> * cvs.texinfo (Read-only access): rephrase to imply that there may diff --git a/gnu/usr.bin/cvs/doc/RCSFILES b/gnu/usr.bin/cvs/doc/RCSFILES new file mode 100644 index 00000000000..0ac61aa1d42 --- /dev/null +++ b/gnu/usr.bin/cvs/doc/RCSFILES @@ -0,0 +1,123 @@ +It would be nice for the RCS file format (which is implemented by a +great many tools, both free and non-free, both by calling GNU RCS and +by reimplementing access to RCS files) were documented in some +standard separate from any one tool. But as far as I know no such +standard exists. Hence this file. + +The place to start is the rcsfile.5 manpage in the GNU RCS 5.7 +distribution. Then look at the diff at the end of this file (which +contains a few fixes and clarifications to that manpage). + +If you are interested in MKS RCS, src/ci.c in GNU RCS 5.7 has a +comment about their date format. However, as far as we know there +isn't really any document describing MKS's changes to the RCS file +format. + +The rcsfile.5 manpage does not document what goes in the "text" field +for each revision. The answer is that the head revision contains the +contents of that revision and every other revision contain a bunch of +edits to produce that revision ("a" and "d" lines). The GNU diff +manual (the version I looked at was for GNU diff 2.4) documents this +format somewhat (as the "RCS output format"), but the presentation is +a bit confusing as it is all tangled up with the documentation of +several other output formats. If you just want some source code to +look at, the part of CVS which applies these is RCS_deltas in +src/rcs.c. + +The first time I read rcsfile.5 I didn't really notice the part about +the order of the revisions. This order _is_ important and CVS relies +on it. It is documented but it would be clearer if the example in +rcsfile.5 also showed the order of the revisions (and the "next" and +"branch" fields and anything else where it would be useful to have an +example of how a revision tree is represented in an RCS file). + +There is one case where CVS uses CVS-specific, non-compatible changes +to the RCS file format, and this is magic branches. See cvs.texinfo +for more information on them. CVS also sets the RCS state to "dead" +to indicate that a file does not exist in a given revision (this is +stored just as any other RCS state is). + +Diff follows: + +(Note that in the following diff the old value for the Id keyword was: + Id: rcsfile.5in,v 5.6 1995/06/05 08:28:35 eggert Exp +and the new one was: + Id: rcsfile.5in,v 5.7 1996/12/09 17:31:44 eggert Exp +but since this file itself might be subject to keyword expansion I +haven't included a diff for that fact). + +=================================================================== +RCS file: RCS/rcsfile.5in,v +retrieving revision 5.6 +retrieving revision 5.7 +diff -u -r5.6 -r5.7 +--- rcsfile.5in 1995/06/05 08:28:35 5.6 ++++ rcsfile.5in 1996/12/09 17:31:44 5.7 +@@ -85,7 +85,8 @@ + .LP + \f2sym\fP ::= {\f2digit\fP}* \f2idchar\fP {\f2idchar\fP | \f2digit\fP}* + .LP +-\f2idchar\fP ::= any visible graphic character except \f2special\fP ++\f2idchar\fP ::= any visible graphic character, ++ except \f2digit\fP or \f2special\fP + .LP + \f2special\fP ::= \f3$\fP | \f3,\fP | \f3.\fP | \f3:\fP | \f3;\fP | \f3@\fP + .LP +@@ -119,12 +120,23 @@ + the minute (00\-59), + and + .I ss +-the second (00\-60). ++the second (00\-59). ++If + .I Y +-contains just the last two digits of the year +-for years from 1900 through 1999, +-and all the digits of years thereafter. +-Dates use the Gregorian calendar; times use UTC. ++contains exactly two digits, ++they are the last two digits of a year from 1900 through 1999; ++otherwise, ++.I Y ++contains all the digits of the year. ++Dates use the Gregorian calendar. ++Times use UTC, except that for portability's sake leap seconds are not allowed; ++implementations that support leap seconds should output ++.B 59 ++for ++.I ss ++during an inserted leap second, and should accept ++.B 59 ++for a deleted leap second. + .PP + The + .I newphrase +@@ -144,16 +156,23 @@ + field in order of decreasing numbers. + The + .B head +-field in the +-.I admin +-node points to the head of that sequence (i.e., contains ++field points to the head of that sequence (i.e., contains + the highest pair). + The + .B branch +-node in the admin node indicates the default ++field indicates the default + branch (or revision) for most \*r operations. + If empty, the default + branch is the highest branch on the trunk. ++The ++.B symbols ++field associates symbolic names with revisions. ++For example, if the file contains ++.B "symbols rr:1.1;" ++then ++.B rr ++is a name for revision ++.BR 1.1 . + .PP + All + .I delta + diff --git a/gnu/usr.bin/cvs/doc/cvsclient.texi b/gnu/usr.bin/cvs/doc/cvsclient.texi index 7420014b4db..6e3fbee9544 100644 --- a/gnu/usr.bin/cvs/doc/cvsclient.texi +++ b/gnu/usr.bin/cvs/doc/cvsclient.texi @@ -177,8 +177,8 @@ implementation, by having inetd call "cvs pserver") which defaults to connects, sends the string @samp{BEGIN AUTH REQUEST}, a linefeed, the cvs root, a linefeed, the username, a linefeed, the password trivially encoded (see scramble.c in the cvs sources), a linefeed, the string -@samp{END AUTH REQUEST}, and a linefeed. The client must sent the -identical string for cvs root here, as it sends later, in the +@samp{END AUTH REQUEST}, and a linefeed. The client must send the +identical string for cvs root both here and later in the @code{Root} request of the cvs protocol itself. Servers are encouraged to enforce this restriction. The server responds with diff --git a/gnu/usr.bin/cvs/lib/ChangeLog b/gnu/usr.bin/cvs/lib/ChangeLog index 601cfacb310..02750d388de 100644 --- a/gnu/usr.bin/cvs/lib/ChangeLog +++ b/gnu/usr.bin/cvs/lib/ChangeLog @@ -1,3 +1,47 @@ +Thu Mar 6 17:14:49 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * regex.c: Partial merge with version from emacs 19.34. I brought + over most trivial changes (whitespace and so on). Most of the + changes to portability cruft I did not bring over, on the theory + of sticking to the devil that we know. I did bring over the + change to undef MAX and MIN (this is a better solution to a + problem we had been handling a different way). There were a + variety of changes I probably could/should have brought over, but + elected not to try to understand them and whether they would cause + trouble (printchar -> putchar, changes to output format in + print_partial_compiled_pattern, internationalization, + FREE_STACK_RETURN and friends which would appear to be fixing + memory leaks in error cases, RE_TRANSLATE_TYPE, and others). I + did merge the changes (union fail_stack_elt, PUSH_FAILURE_POINTER, + etc.) to use a union for the failure stack rather than playing + games with pointers and integers (that was my reason for + bothering; the code had been broken on the Alpha). + +Mon Feb 10 18:52:18 1997 Ullrich von Bassewitz <uz@musoftware.com> + + * md5.c: Make the parameter to getu32 const since the function will + only read the values and this will avoid compiler warnings in other + places. + +Mon Feb 10 18:29:04 1997 Ullrich von Bassewitz <uz@musoftware.com> + + * vasprintf.c: Added a #define for systems where a va_list is + defined as an array, not as a pointer. + +Mon Feb 10 09:31:38 1997 Ken Raeburn <raeburn@cygnus.com> + + * md5.c (MD5STEP): Truncate to 32 bits before shifting right. + +Thu Jan 30 11:35:26 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * regex.h: Don't prototype re_comp and re_exec. + +Tue Jan 28 17:45:46 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * md5.c, md5.h: Changes so these work without having an integer + type which is exactly 32 bits. Modeled after changes by Tatu Ylonen + <ylo@cs.hut.fi> as part of SSH but rewritten. + Wed Jan 8 14:50:47 1997 Jim Kingdon <kingdon@harvey.cyclic.com> * Makefile.in, getopt.h, sighandle.c, system.h: Remove CVSid; we diff --git a/gnu/usr.bin/cvs/lib/md5.h b/gnu/usr.bin/cvs/lib/md5.h index bfe79ccd7f2..65bac1fad3f 100644 --- a/gnu/usr.bin/cvs/lib/md5.h +++ b/gnu/usr.bin/cvs/lib/md5.h @@ -1,16 +1,14 @@ +/* See md5.c for explanation and copyright information. */ + #ifndef MD5_H #define MD5_H -#if SIZEOF_LONG == 4 +/* Unlike previous versions of this code, uint32 need not be exactly + 32 bits, merely 32 bits or more. Choosing a data type which is 32 + bits instead of 64 is not important; speed is considerably more + important. ANSI guarantees that "unsigned long" will be big enough, + and always using it seems to have few disadvantages. */ typedef unsigned long uint32; -#else -#if SIZEOF_INT == 4 -typedef unsigned int uint32; -#else -Congratulations! You get to rewrite this code so that it does not require -a 32-bit integer type! (Or maybe you just need to reconfigure.) -#endif -#endif struct MD5Context { uint32 buf[4]; @@ -21,7 +19,7 @@ struct MD5Context { void MD5Init PROTO((struct MD5Context *context)); void MD5Update PROTO((struct MD5Context *context, unsigned char const *buf, unsigned len)); void MD5Final PROTO((unsigned char digest[16], struct MD5Context *context)); -void MD5Transform PROTO((uint32 buf[4], uint32 const in[16])); +void MD5Transform PROTO((uint32 buf[4], const unsigned char in[64])); /* * This is needed to make RSAREF happy on some MS-DOS compilers. diff --git a/gnu/usr.bin/cvs/lib/regex.c b/gnu/usr.bin/cvs/lib/regex.c index f785f623802..ddeca2a2af1 100644 --- a/gnu/usr.bin/cvs/lib/regex.c +++ b/gnu/usr.bin/cvs/lib/regex.c @@ -3,7 +3,7 @@ (Implements POSIX draft P10003.2/D11.2, except for internationalization features.) - Copyright (C) 1993 Free Software Foundation, Inc. + Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -75,7 +75,7 @@ char *realloc (); /* This must be nonzero for the wordchar and notwordchar pattern commands in re_match_2. */ -#ifndef Sword +#ifndef Sword #define Sword 1 #endif @@ -173,8 +173,8 @@ init_syntax_once () use `alloca' instead of `malloc'. This is because using malloc in re_search* or re_match* could cause memory leaks when C-g is used in Emacs; also, malloc is slower and causes storage fragmentation. On - the other hand, malloc is more portable, and easier to debug. - + the other hand, malloc is more portable, and easier to debug. + Because we sometimes use alloca, some routines have to be macros, not functions -- `alloca'-allocated space disappears at the end of the function it is called in. */ @@ -230,13 +230,10 @@ char *alloca (); #define STREQ(s1, s2) ((strcmp (s1, s2) == 0)) -/* The Mac CodeWarrier9 compiler defines MAX and MIN. */ -#ifndef MAX +#undef MAX +#undef MIN #define MAX(a, b) ((a) > (b) ? (a) : (b)) -#endif -#ifndef MIN #define MIN(a, b) ((a) < (b) ? (a) : (b)) -#endif typedef char boolean; #define false 0 @@ -307,9 +304,9 @@ typedef enum /* Analogously, for end of buffer/string. */ endbuf, - + /* Followed by two byte relative address to which to jump. */ - jump, + jump, /* Same as jump, but marks the end of an alternative. */ jump_past_alt, @@ -317,11 +314,11 @@ typedef enum /* Followed by two-byte relative address of place to resume at in case of failure. */ on_failure_jump, - + /* Like on_failure_jump, but pushes a placeholder instead of the current string position when executed. */ on_failure_keep_string_jump, - + /* Throw away latest failure point and then jump to following two-byte relative address. */ pop_failure_jump, @@ -417,7 +414,7 @@ extract_number (dest, source) int *dest; unsigned char *source; { - int temp = SIGN_EXTEND_CHAR (*(source + 1)); + int temp = SIGN_EXTEND_CHAR (*(source + 1)); *dest = *source & 0377; *dest += temp << 8; } @@ -443,7 +440,7 @@ static void extract_number_and_incr (destination, source) int *destination; unsigned char **source; -{ +{ extract_number (destination, *source); *source += 2; } @@ -492,8 +489,8 @@ print_fastmap (fastmap) char *fastmap; { unsigned was_a_range = 0; - unsigned i = 0; - + unsigned i = 0; + while (i < (1 << BYTEWIDTH)) { if (fastmap[i++]) @@ -512,7 +509,7 @@ print_fastmap (fastmap) } } } - putchar ('\n'); + putchar ('\n'); } @@ -533,7 +530,7 @@ print_partial_compiled_pattern (start, end) printf ("(null)\n"); return; } - + /* Loop over pattern commands. */ while (p < pend) { @@ -644,24 +641,24 @@ print_partial_compiled_pattern (start, end) printf ("/jump/0/%d", mcnt); break; - case succeed_n: + case succeed_n: extract_number_and_incr (&mcnt, &p); extract_number_and_incr (&mcnt2, &p); printf ("/succeed_n/0/%d/0/%d", mcnt, mcnt2); break; - - case jump_n: + + case jump_n: extract_number_and_incr (&mcnt, &p); extract_number_and_incr (&mcnt2, &p); printf ("/jump_n/0/%d/0/%d", mcnt, mcnt2); break; - - case set_number_at: + + case set_number_at: extract_number_and_incr (&mcnt, &p); extract_number_and_incr (&mcnt2, &p); printf ("/set_number_at/0/%d/0/%d", mcnt, mcnt2); break; - + case wordbound: printf ("/wordbound"); break; @@ -673,10 +670,10 @@ print_partial_compiled_pattern (start, end) case wordbeg: printf ("/wordbeg"); break; - + case wordend: printf ("/wordend"); - + #ifdef emacs case before_dot: printf ("/before_dot"); @@ -695,7 +692,7 @@ print_partial_compiled_pattern (start, end) mcnt = *p++; printf ("/%d", mcnt); break; - + case notsyntaxspec: printf ("/notsyntaxspec"); mcnt = *p++; @@ -706,7 +703,7 @@ print_partial_compiled_pattern (start, end) case wordchar: printf ("/wordchar"); break; - + case notwordchar: printf ("/notwordchar"); break; @@ -763,7 +760,7 @@ print_double_string (where, string1, size1, string2, size2) int size2; { unsigned this_char; - + if (where == NULL) printf ("(null)"); else @@ -773,7 +770,7 @@ print_double_string (where, string1, size1, string2, size2) for (this_char = where - string1; this_char < size1; this_char++) printchar (string1[this_char]); - where = string2; + where = string2; } for (this_char = where - string2; this_char < size2; this_char++) @@ -814,7 +811,7 @@ re_set_syntax (syntax) reg_syntax_t syntax; { reg_syntax_t ret = re_syntax_options; - + re_syntax_options = syntax; return ret; } @@ -990,7 +987,7 @@ typedef struct pattern_offset_t begalt_offset; pattern_offset_t fixup_alt_jump; pattern_offset_t inner_group_offset; - pattern_offset_t laststart_offset; + pattern_offset_t laststart_offset; regnum_t regnum; } compile_stack_elt_t; @@ -1033,7 +1030,7 @@ typedef struct PATFETCH (c); \ } \ } \ - } + } #define CHAR_CLASS_MAX_LENGTH 6 /* Namely, `xdigit'. */ @@ -1059,7 +1056,7 @@ typedef struct `fastmap_accurate' is zero; `re_nsub' is the number of subexpressions in PATTERN; `not_bol' and `not_eol' are zero; - + The `fastmap' and `newline_anchor' fields are neither examined nor set. */ @@ -1074,20 +1071,20 @@ regex_compile (pattern, size, syntax, bufp) `char *' (i.e., signed), we declare these variables as unsigned, so they can be reliably used as array indices. */ register unsigned char c, c1; - - /* A random tempory spot in PATTERN. */ + + /* A random temporary spot in PATTERN. */ const char *p1; /* Points to the end of the buffer, where we should append. */ register unsigned char *b; - + /* Keeps track of unclosed groups. */ compile_stack_type compile_stack; /* Points to the current (ending) position in the pattern. */ const char *p = pattern; const char *pend = pattern + size; - + /* How to translate the characters in the pattern. */ char *translate = bufp->translate; @@ -1108,7 +1105,7 @@ regex_compile (pattern, size, syntax, bufp) /* Place in the uncompiled pattern (i.e., the {) to which to go back if the interval is invalid. */ const char *beg_interval; - + /* Address of the place where a forward jump should go to the end of the containing expression. Each alternative of an `or' -- except the last -- ends with a forward jump of this sort. */ @@ -1124,7 +1121,7 @@ regex_compile (pattern, size, syntax, bufp) if (debug) { unsigned debug_count; - + for (debug_count = 0; debug_count < size; debug_count++) printchar (pattern[debug_count]); putchar ('\n'); @@ -1148,9 +1145,9 @@ regex_compile (pattern, size, syntax, bufp) printer (for debugging) will think there's no pattern. We reset it at the end. */ bufp->used = 0; - + /* Always count groups, whether or not bufp->no_sub is set. */ - bufp->re_nsub = 0; + bufp->re_nsub = 0; #if !defined (emacs) && !defined (SYNTAX_TABLE) /* Initialize the syntax table. */ @@ -1201,7 +1198,7 @@ regex_compile (pattern, size, syntax, bufp) case '$': { if ( /* If at end of pattern, it's an operator. */ - p == pend + p == pend /* If context independent, it's an operator. */ || syntax & RE_CONTEXT_INDEP_ANCHORS /* Otherwise, depends on what's next. */ @@ -1232,7 +1229,7 @@ regex_compile (pattern, size, syntax, bufp) { /* Are we optimizing this jump? */ boolean keep_string_p = false; - + /* 1 means zero (many) matches is allowed. */ char zero_times_ok = 0, many_times_ok = 0; @@ -1280,7 +1277,7 @@ regex_compile (pattern, size, syntax, bufp) /* Star, etc. applied to an empty pattern is equivalent to an empty pattern. */ - if (!laststart) + if (!laststart) break; /* Now we know whether or not zero matches is allowed @@ -1289,7 +1286,7 @@ regex_compile (pattern, size, syntax, bufp) { /* More than one repetition is allowed, so put in at the end a backward relative jump from `b' to before the next jump we're going to put in below (which jumps from - laststart to after this jump). + laststart to after this jump). But if we are at the `*' in the exact sequence `.*\n', insert an unconditional jump backwards to the ., @@ -1416,8 +1413,8 @@ regex_compile (pattern, size, syntax, bufp) was a character: if this is a hyphen not at the beginning or the end of a list, then it's the range operator. */ - if (c == '-' - && !(p - 2 >= pattern && p[-2] == '[') + if (c == '-' + && !(p - 2 >= pattern && p[-2] == '[') && !(p - 3 >= pattern && p[-3] == '[' && p[-2] == '^') && *p != ']') { @@ -1432,7 +1429,7 @@ regex_compile (pattern, size, syntax, bufp) /* Move past the `-'. */ PATFETCH (c1); - + ret = compile_range (&p, pend, translate, syntax, b); if (ret != REG_NOERROR) return ret; } @@ -1461,7 +1458,7 @@ regex_compile (pattern, size, syntax, bufp) str[c1] = '\0'; /* If isn't a word bracketed by `[:' and:`]': - undo the ending character, the letters, and leave + undo the ending character, the letters, and leave the leading `:' and `[' (but set bits for them). */ if (c == ':' && *p == ']') { @@ -1478,12 +1475,12 @@ regex_compile (pattern, size, syntax, bufp) boolean is_space = STREQ (str, "space"); boolean is_upper = STREQ (str, "upper"); boolean is_xdigit = STREQ (str, "xdigit"); - + if (!IS_CHAR_CLASS (str)) return REG_ECTYPE; /* Throw away the ] at the end of the character class. */ - PATFETCH (c); + PATFETCH (c); if (p == pend) return REG_EBRACK; @@ -1508,7 +1505,7 @@ regex_compile (pattern, size, syntax, bufp) else { c1++; - while (c1--) + while (c1--) PATUNFETCH; SET_LIST_BIT ('['); SET_LIST_BIT (':'); @@ -1524,8 +1521,8 @@ regex_compile (pattern, size, syntax, bufp) /* Discard any (non)matching list bytes that are all 0 at the end of the map. Decrease the map-length byte too. */ - while ((int) b[-1] > 0 && b[b[-1] - 1] == 0) - b[-1]--; + while ((int) b[-1] > 0 && b[b[-1] - 1] == 0) + b[-1]--; b += b[-1]; } break; @@ -1585,7 +1582,7 @@ regex_compile (pattern, size, syntax, bufp) regnum++; if (COMPILE_STACK_FULL) - { + { RETALLOC (compile_stack.stack, compile_stack.size << 1, compile_stack_elt_t); if (compile_stack.stack == NULL) return REG_ESPACE; @@ -1598,7 +1595,7 @@ regex_compile (pattern, size, syntax, bufp) whole pattern moves because of realloc, they will still be valid. */ COMPILE_STACK_TOP.begalt_offset = begalt - bufp->buffer; - COMPILE_STACK_TOP.fixup_alt_jump + COMPILE_STACK_TOP.fixup_alt_jump = fixup_alt_jump ? fixup_alt_jump - bufp->buffer + 1 : 0; COMPILE_STACK_TOP.laststart_offset = b - bufp->buffer; COMPILE_STACK_TOP.regnum = regnum; @@ -1612,7 +1609,7 @@ regex_compile (pattern, size, syntax, bufp) COMPILE_STACK_TOP.inner_group_offset = b - bufp->buffer + 2; BUF_PUSH_3 (start_memory, regnum, 0); } - + compile_stack.avail++; fixup_alt_jump = 0; @@ -1641,7 +1638,7 @@ regex_compile (pattern, size, syntax, bufp) `pop_failure_jump' to pop. See comments at `push_dummy_failure' in `re_match_2'. */ BUF_PUSH (push_dummy_failure); - + /* We allocated space for this jump when we assigned to `fixup_alt_jump', in the `handle_alt' case below. */ STORE_JUMP (jump_past_alt, fixup_alt_jump, b - 1); @@ -1663,11 +1660,11 @@ regex_compile (pattern, size, syntax, bufp) as in `(ab)c(de)' -- the second group is #2. */ regnum_t this_group_regnum; - compile_stack.avail--; + compile_stack.avail--; begalt = bufp->buffer + COMPILE_STACK_TOP.begalt_offset; fixup_alt_jump = COMPILE_STACK_TOP.fixup_alt_jump - ? bufp->buffer + COMPILE_STACK_TOP.fixup_alt_jump - 1 + ? bufp->buffer + COMPILE_STACK_TOP.fixup_alt_jump - 1 : 0; laststart = bufp->buffer + COMPILE_STACK_TOP.laststart_offset; this_group_regnum = COMPILE_STACK_TOP.regnum; @@ -1682,7 +1679,7 @@ regex_compile (pattern, size, syntax, bufp) { unsigned char *inner_group_loc = bufp->buffer + COMPILE_STACK_TOP.inner_group_offset; - + *inner_group_loc = regnum - this_group_regnum; BUF_PUSH_3 (stop_memory, this_group_regnum, regnum - this_group_regnum); @@ -1711,10 +1708,10 @@ regex_compile (pattern, size, syntax, bufp) jump (put in below, which in turn will jump to the next (if any) alternative's such jump, etc.). The last such jump jumps to the correct final destination. A picture: - _____ _____ - | | | | - | v | v - a | b | c + _____ _____ + | | | | + | v | v + a | b | c If we are at `b', then fixup_alt_jump right now points to a three-byte space after `a'. We'll put in the jump, set @@ -1736,10 +1733,10 @@ regex_compile (pattern, size, syntax, bufp) break; - case '{': + case '{': /* If \{ is a literal. */ if (!(syntax & RE_INTERVALS) - /* If we're at `\{' and it's not the open-interval + /* If we're at `\{' and it's not the open-interval operator. */ || ((syntax & RE_INTERVALS) && (syntax & RE_NO_BK_BRACES)) || (p - 2 == pattern && p == pend)) @@ -1778,11 +1775,11 @@ regex_compile (pattern, size, syntax, bufp) { if (syntax & RE_NO_BK_BRACES) goto unfetch_interval; - else + else return REG_BADBR; } - if (!(syntax & RE_NO_BK_BRACES)) + if (!(syntax & RE_NO_BK_BRACES)) { if (c != '\\') return REG_EBRACE; @@ -1793,7 +1790,7 @@ regex_compile (pattern, size, syntax, bufp) { if (syntax & RE_NO_BK_BRACES) goto unfetch_interval; - else + else return REG_BADBR; } @@ -1824,12 +1821,12 @@ regex_compile (pattern, size, syntax, bufp) we're all done, the pattern will look like: set_number_at <jump count> <upper bound> set_number_at <succeed_n count> <lower bound> - succeed_n <after jump addr> <succed_n count> + succeed_n <after jump addr> <succeed_n count> <body of loop> jump_n <succeed_n addr> <jump count> (The upper bound and `jump_n' are omitted if `upper_bound' is 1, though.) */ - else + else { /* If the upper bound is > 1, we need to insert more at the end of the loop. */ unsigned nbytes = 10 + (upper_bound > 1) * 10; @@ -1846,7 +1843,7 @@ regex_compile (pattern, size, syntax, bufp) lower_bound); b += 5; - /* Code to initialize the lower bound. Insert + /* Code to initialize the lower bound. Insert before the `succeed_n'. The `5' is the last two bytes of this `set_number_at', plus 3 bytes of the following `succeed_n'. */ @@ -1857,7 +1854,7 @@ regex_compile (pattern, size, syntax, bufp) { /* More than one repetition is allowed, so append a backward jump to the `succeed_n' that starts this interval. - + When we've reached this during matching, we'll have matched the interval once, so jump back only `upper_bound - 1' times. */ @@ -1875,7 +1872,7 @@ regex_compile (pattern, size, syntax, bufp) so everything is getting moved up by 5. Conclusion: (b - 2) - (laststart + 3) + 5, i.e., b - laststart. - + We insert this at the beginning of the loop so that if we fail during matching, we'll reinitialize the bounds. */ @@ -1896,7 +1893,7 @@ regex_compile (pattern, size, syntax, bufp) beg_interval = NULL; /* normal_char and normal_backslash need `c'. */ - PATFETCH (c); + PATFETCH (c); if (!(syntax & RE_NO_BK_BRACES)) { @@ -1912,7 +1909,7 @@ regex_compile (pattern, size, syntax, bufp) BUF_PUSH (at_dot); break; - case 's': + case 's': laststart = b; PATFETCH (c); BUF_PUSH_2 (syntaxspec, syntax_spec_code[c]); @@ -2003,11 +2000,11 @@ regex_compile (pattern, size, syntax, bufp) /* Expects the character in `c'. */ normal_char: /* If no exactn currently being built. */ - if (!pending_exact + if (!pending_exact /* If last exactn not at current position. */ || pending_exact + *pending_exact + 1 != b - + /* We have only one byte following the exactn for the count. */ || *pending_exact == (1 << BYTEWIDTH) - 1 @@ -2022,26 +2019,26 @@ regex_compile (pattern, size, syntax, bufp) : (p[0] == '\\' && p[1] == '{')))) { /* Start building a new exactn. */ - + laststart = b; BUF_PUSH_2 (exactn, 0); pending_exact = b - 1; } - + BUF_PUSH (c); (*pending_exact)++; break; } /* switch (c) */ } /* while p != pend */ - + /* Through the pattern now. */ - + if (fixup_alt_jump) STORE_JUMP (jump_past_alt, fixup_alt_jump, b); - if (!COMPILE_STACK_EMPTY) + if (!COMPILE_STACK_EMPTY) return REG_EPAREN; free (compile_stack.stack); @@ -2097,14 +2094,14 @@ insert_op1 (op, loc, arg, end) re_opcode_t op; unsigned char *loc; int arg; - unsigned char *end; + unsigned char *end; { register unsigned char *pfrom = end; register unsigned char *pto = end + 3; while (pfrom != loc) *--pto = *--pfrom; - + store_op1 (op, loc, arg); } @@ -2116,14 +2113,14 @@ insert_op2 (op, loc, arg1, arg2, end) re_opcode_t op; unsigned char *loc; int arg1, arg2; - unsigned char *end; + unsigned char *end; { register unsigned char *pfrom = end; register unsigned char *pto = end + 5; while (pfrom != loc) *--pto = *--pfrom; - + store_op2 (op, loc, arg1, arg2); } @@ -2139,7 +2136,7 @@ at_begline_loc_p (pattern, p, syntax) { const char *prev = p - 2; boolean prev_prev_backslash = prev > pattern && prev[-1] == '\\'; - + return /* After a subexpression? */ (*prev == '(' && (syntax & RE_NO_BK_PARENS || prev_prev_backslash)) @@ -2264,7 +2261,13 @@ compile_range (p_ptr, pend, translate, syntax, b) change it ourselves. */ int re_max_failures = 2000; -typedef const unsigned char *fail_stack_elt_t; +union fail_stack_elt +{ + unsigned char *pointer; + int integer; +}; + +typedef union fail_stack_elt fail_stack_elt_t; typedef struct { @@ -2319,26 +2322,41 @@ typedef struct Return 1 if was able to do so and 0 if ran out of memory allocating space to do so. */ -#define PUSH_PATTERN_OP(pattern_op, fail_stack) \ +#define PUSH_PATTERN_OP(POINTER, FAIL_STACK) \ ((FAIL_STACK_FULL () \ - && !DOUBLE_FAIL_STACK (fail_stack)) \ - ? 0 \ - : ((fail_stack).stack[(fail_stack).avail++] = pattern_op, \ - 1)) + && !DOUBLE_FAIL_STACK (FAIL_STACK)) \ + ? 0 \ + : ((FAIL_STACK).stack[(FAIL_STACK).avail++].pointer = POINTER, \ + 1)) + +/* Push a pointer value onto the failure stack. + Assumes the variable `fail_stack'. Probably should only + be called from within `PUSH_FAILURE_POINT'. */ +#define PUSH_FAILURE_POINTER(item) \ + fail_stack.stack[fail_stack.avail++].pointer = (unsigned char *) (item) + +/* This pushes an integer-valued item onto the failure stack. + Assumes the variable `fail_stack'. Probably should only + be called from within `PUSH_FAILURE_POINT'. */ +#define PUSH_FAILURE_INT(item) \ + fail_stack.stack[fail_stack.avail++].integer = (item) -/* This pushes an item onto the failure stack. Must be a four-byte - value. Assumes the variable `fail_stack'. Probably should only +/* Push a fail_stack_elt_t value onto the failure stack. + Assumes the variable `fail_stack'. Probably should only be called from within `PUSH_FAILURE_POINT'. */ -#define PUSH_FAILURE_ITEM(item) \ - fail_stack.stack[fail_stack.avail++] = (fail_stack_elt_t) item +#define PUSH_FAILURE_ELT(item) \ + fail_stack.stack[fail_stack.avail++] = (item) -/* The complement operation. Assumes `fail_stack' is nonempty. */ -#define POP_FAILURE_ITEM() fail_stack.stack[--fail_stack.avail] +/* These three POP... operations complement the three PUSH... operations. + All assume that `fail_stack' is nonempty. */ +#define POP_FAILURE_POINTER() fail_stack.stack[--fail_stack.avail].pointer +#define POP_FAILURE_INT() fail_stack.stack[--fail_stack.avail].integer +#define POP_FAILURE_ELT() fail_stack.stack[--fail_stack.avail] /* Used to omit pushing failure point id's when we're not debugging. */ #ifdef DEBUG -#define DEBUG_PUSH PUSH_FAILURE_ITEM -#define DEBUG_POP(item_addr) *(item_addr) = POP_FAILURE_ITEM () +#define DEBUG_PUSH PUSH_FAILURE_INT +#define DEBUG_POP(item_addr) *(item_addr) = POP_FAILURE_INT () #else #define DEBUG_PUSH(item) #define DEBUG_POP(item_addr) @@ -2346,12 +2364,12 @@ typedef struct /* Push the information about the state we will need - if we ever fail back to it. - + if we ever fail back to it. + Requires variables fail_stack, regstart, regend, reg_info, and num_regs be declared. DOUBLE_FAIL_STACK requires `destination' be declared. - + Does `return FAILURE_CODE' if runs out of memory. */ #define PUSH_FAILURE_POINT(pattern_place, string_place, failure_code) \ @@ -2373,7 +2391,7 @@ typedef struct /* Ensure we have enough space allocated for what we will push. */ \ while (REMAINING_AVAIL_SLOTS < NUM_FAILURE_ITEMS) \ { \ - if (!DOUBLE_FAIL_STACK (fail_stack)) \ + if (!DOUBLE_FAIL_STACK (fail_stack)) \ return failure_code; \ \ DEBUG_PRINT2 ("\n Doubled stack; size now: %d\n", \ @@ -2384,45 +2402,46 @@ typedef struct /* Push the info, starting with the registers. */ \ DEBUG_PRINT1 ("\n"); \ \ - for (this_reg = lowest_active_reg; this_reg <= highest_active_reg; \ - this_reg++) \ - { \ - DEBUG_PRINT2 (" Pushing reg: %d\n", this_reg); \ - DEBUG_STATEMENT (num_regs_pushed++); \ + if (1) \ + for (this_reg = lowest_active_reg; this_reg <= highest_active_reg; \ + this_reg++) \ + { \ + DEBUG_PRINT2 (" Pushing reg: %d\n", this_reg); \ + DEBUG_STATEMENT (num_regs_pushed++); \ \ - DEBUG_PRINT2 (" start: 0x%x\n", regstart[this_reg]); \ - PUSH_FAILURE_ITEM (regstart[this_reg]); \ - \ - DEBUG_PRINT2 (" end: 0x%x\n", regend[this_reg]); \ - PUSH_FAILURE_ITEM (regend[this_reg]); \ + DEBUG_PRINT2 (" start: 0x%x\n", regstart[this_reg]); \ + PUSH_FAILURE_POINTER (regstart[this_reg]); \ \ - DEBUG_PRINT2 (" info: 0x%x\n ", reg_info[this_reg]); \ - DEBUG_PRINT2 (" match_null=%d", \ - REG_MATCH_NULL_STRING_P (reg_info[this_reg])); \ - DEBUG_PRINT2 (" active=%d", IS_ACTIVE (reg_info[this_reg])); \ - DEBUG_PRINT2 (" matched_something=%d", \ - MATCHED_SOMETHING (reg_info[this_reg])); \ - DEBUG_PRINT2 (" ever_matched=%d", \ - EVER_MATCHED_SOMETHING (reg_info[this_reg])); \ - DEBUG_PRINT1 ("\n"); \ - PUSH_FAILURE_ITEM (reg_info[this_reg].word); \ - } \ + DEBUG_PRINT2 (" end: 0x%x\n", regend[this_reg]); \ + PUSH_FAILURE_POINTER (regend[this_reg]); \ + \ + DEBUG_PRINT2 (" info: 0x%x\n ", reg_info[this_reg]); \ + DEBUG_PRINT2 (" match_null=%d", \ + REG_MATCH_NULL_STRING_P (reg_info[this_reg])); \ + DEBUG_PRINT2 (" active=%d", IS_ACTIVE (reg_info[this_reg])); \ + DEBUG_PRINT2 (" matched_something=%d", \ + MATCHED_SOMETHING (reg_info[this_reg])); \ + DEBUG_PRINT2 (" ever_matched=%d", \ + EVER_MATCHED_SOMETHING (reg_info[this_reg])); \ + DEBUG_PRINT1 ("\n"); \ + PUSH_FAILURE_ELT (reg_info[this_reg].word); \ + } \ \ DEBUG_PRINT2 (" Pushing low active reg: %d\n", lowest_active_reg);\ - PUSH_FAILURE_ITEM (lowest_active_reg); \ + PUSH_FAILURE_INT (lowest_active_reg); \ \ DEBUG_PRINT2 (" Pushing high active reg: %d\n", highest_active_reg);\ - PUSH_FAILURE_ITEM (highest_active_reg); \ + PUSH_FAILURE_INT (highest_active_reg); \ \ DEBUG_PRINT2 (" Pushing pattern 0x%x: ", pattern_place); \ DEBUG_PRINT_COMPILED_PATTERN (bufp, pattern_place, pend); \ - PUSH_FAILURE_ITEM (pattern_place); \ + PUSH_FAILURE_POINTER (pattern_place); \ \ DEBUG_PRINT2 (" Pushing string 0x%x: `", string_place); \ DEBUG_PRINT_DOUBLE_STRING (string_place, string1, size1, string2, \ size2); \ DEBUG_PRINT1 ("'\n"); \ - PUSH_FAILURE_ITEM (string_place); \ + PUSH_FAILURE_POINTER (string_place); \ \ DEBUG_PRINT2 (" Pushing failure id: %u\n", failure_id); \ DEBUG_PUSH (failure_id); \ @@ -2459,7 +2478,7 @@ typedef struct LOW_REG, HIGH_REG -- the highest and lowest active registers. REGSTART, REGEND -- arrays of string positions. REG_INFO -- array of information about each subexpression. - + Also assumes the variables `fail_stack' and (if debugging), `bufp', `pend', `string1', `size1', `string2', and `size2'. */ @@ -2484,7 +2503,7 @@ typedef struct /* If the saved string location is NULL, it came from an \ on_failure_keep_string_jump opcode, and we want to throw away the \ saved NULL, thus retaining our current position in the string. */ \ - string_temp = POP_FAILURE_ITEM (); \ + string_temp = POP_FAILURE_POINTER (); \ if (string_temp != NULL) \ str = (const char *) string_temp; \ \ @@ -2492,29 +2511,40 @@ typedef struct DEBUG_PRINT_DOUBLE_STRING (str, string1, size1, string2, size2); \ DEBUG_PRINT1 ("'\n"); \ \ - pat = (unsigned char *) POP_FAILURE_ITEM (); \ + pat = (unsigned char *) POP_FAILURE_POINTER (); \ DEBUG_PRINT2 (" Popping pattern 0x%x: ", pat); \ DEBUG_PRINT_COMPILED_PATTERN (bufp, pat, pend); \ \ /* Restore register info. */ \ - high_reg = (unsigned) POP_FAILURE_ITEM (); \ + high_reg = (unsigned) POP_FAILURE_INT (); \ DEBUG_PRINT2 (" Popping high active reg: %d\n", high_reg); \ \ - low_reg = (unsigned) POP_FAILURE_ITEM (); \ + low_reg = (unsigned) POP_FAILURE_INT (); \ DEBUG_PRINT2 (" Popping low active reg: %d\n", low_reg); \ \ - for (this_reg = high_reg; this_reg >= low_reg; this_reg--) \ - { \ - DEBUG_PRINT2 (" Popping reg: %d\n", this_reg); \ + if (1) \ + for (this_reg = high_reg; this_reg >= low_reg; this_reg--) \ + { \ + DEBUG_PRINT2 (" Popping reg: %d\n", this_reg); \ \ - reg_info[this_reg].word = POP_FAILURE_ITEM (); \ - DEBUG_PRINT2 (" info: 0x%x\n", reg_info[this_reg]); \ + reg_info[this_reg].word = POP_FAILURE_ELT (); \ + DEBUG_PRINT2 (" info: 0x%x\n", reg_info[this_reg]); \ \ - regend[this_reg] = (const char *) POP_FAILURE_ITEM (); \ - DEBUG_PRINT2 (" end: 0x%x\n", regend[this_reg]); \ + regend[this_reg] = (const char *) POP_FAILURE_POINTER (); \ + DEBUG_PRINT2 (" end: 0x%x\n", regend[this_reg]); \ \ - regstart[this_reg] = (const char *) POP_FAILURE_ITEM (); \ - DEBUG_PRINT2 (" start: 0x%x\n", regstart[this_reg]); \ + regstart[this_reg] = (const char *) POP_FAILURE_POINTER (); \ + DEBUG_PRINT2 (" start: 0x%x\n", regstart[this_reg]); \ + } \ + else \ + { \ + for (this_reg = highest_active_reg; this_reg > high_reg; this_reg--) \ + { \ + reg_info[this_reg].word.integer = 0; \ + regend[this_reg] = 0; \ + regstart[this_reg] = 0; \ + } \ + highest_active_reg = high_reg; \ } \ \ DEBUG_STATEMENT (nfailure_points_popped++); \ @@ -2527,7 +2557,7 @@ typedef struct The caller must supply the address of a (1 << BYTEWIDTH)-byte data area as BUFP->fastmap. - + We set the `fastmap', `fastmap_accurate', and `can_be_null' fields in the pattern buffer. @@ -2544,11 +2574,11 @@ re_compile_fastmap (bufp) #endif /* We don't push any register information onto the failure stack. */ unsigned num_regs = 0; - + register char *fastmap = bufp->fastmap; unsigned char *pattern = bufp->buffer; unsigned long size = bufp->used; - const unsigned char *p = pattern; + unsigned char *p = pattern; register unsigned char *pend = pattern + size; /* Assume that each path through the pattern can be null until @@ -2561,12 +2591,12 @@ re_compile_fastmap (bufp) boolean succeed_n_p = false; assert (fastmap != NULL && p != NULL); - + INIT_FAIL_STACK (); bzero (fastmap, 1 << BYTEWIDTH); /* Assume nothing's valid. */ bufp->fastmap_accurate = 1; /* It will be when we're done. */ bufp->can_be_null = 0; - + while (p != pend || !FAIL_STACK_EMPTY ()) { if (p == pend) @@ -2576,7 +2606,7 @@ re_compile_fastmap (bufp) /* Reset for next path. */ path_can_be_null = true; - p = fail_stack.stack[--fail_stack.avail]; + p = fail_stack.stack[--fail_stack.avail].pointer; } /* We should never be about to go beyond the end of the pattern. */ @@ -2705,10 +2735,10 @@ re_compile_fastmap (bufp) case jump_past_alt: case dummy_failure_jump: EXTRACT_NUMBER_AND_INCR (j, p); - p += j; + p += j; if (j > 0) continue; - + /* Jump backward implies we just went through the body of a loop and matched nothing. Opcode jumped to should be `on_failure_jump' or `succeed_n'. Just treat it like an @@ -2720,11 +2750,11 @@ re_compile_fastmap (bufp) p++; EXTRACT_NUMBER_AND_INCR (j, p); - p += j; - + p += j; + /* If what's on the stack is where we are now, pop it. */ - if (!FAIL_STACK_EMPTY () - && fail_stack.stack[fail_stack.avail - 1] == p) + if (!FAIL_STACK_EMPTY () + && fail_stack.stack[fail_stack.avail - 1].pointer == p) fail_stack.avail--; continue; @@ -2761,7 +2791,7 @@ re_compile_fastmap (bufp) case succeed_n: /* Get to the number of times to succeed. */ - p += 2; + p += 2; /* Increment p past the n for when k != 0. */ EXTRACT_NUMBER_AND_INCR (k, p); @@ -2852,7 +2882,7 @@ re_search (bufp, string, size, startpos, range, regs) int size, startpos, range; struct re_registers *regs; { - return re_search_2 (bufp, NULL, 0, string, size, startpos, range, + return re_search_2 (bufp, NULL, 0, string, size, startpos, range, regs, size); } @@ -2860,17 +2890,17 @@ re_search (bufp, string, size, startpos, range, regs) /* Using the compiled pattern in BUFP->buffer, first tries to match the virtual concatenation of STRING1 and STRING2, starting first at index STARTPOS, then at STARTPOS + 1, and so on. - + STRING1 and STRING2 have length SIZE1 and SIZE2, respectively. - + RANGE is how far to scan while trying to match. RANGE = 0 means try only at STARTPOS; in general, the last start tried is STARTPOS + RANGE. - + In REGS, return the indices of the virtual concatenation of STRING1 and STRING2 that matched the entire BUFP->buffer and its contained subexpressions. - + Do not consider matching one past the index STOP in the virtual concatenation of STRING1 and STRING2. @@ -2897,7 +2927,7 @@ re_search_2 (bufp, string1, size1, string2, size2, startpos, range, regs, stop) /* Check for out-of-range STARTPOS. */ if (startpos < 0 || startpos > total_size) return -1; - + /* Fix up RANGE if it might eventually take us outside the virtual concatenation of STRING1 and STRING2. */ if (endpos < -1) @@ -2915,14 +2945,25 @@ re_search_2 (bufp, string1, size1, string2, size2, startpos, range, regs, stop) range = 1; } +#ifdef emacs + /* In a forward search for something that starts with \=. + don't keep searching past point. */ + if (bufp->used > 0 && (re_opcode_t) bufp->buffer[0] == at_dot && range > 0) + { + range = PT - startpos; + if (range <= 0) + return -1; + } +#endif /* emacs */ + /* Update the fastmap now if not correct already. */ if (fastmap && !bufp->fastmap_accurate) if (re_compile_fastmap (bufp) == -2) return -2; - + /* Loop through the string, looking for a place to start matching. */ for (;;) - { + { /* If a fastmap is supplied, skip quickly over characters that cannot be the start of a match. If the pattern can match the null string, however, we don't need to skip characters; we want @@ -2939,7 +2980,7 @@ re_search_2 (bufp, string1, size1, string2, size2, startpos, range, regs, stop) lim = range - (size1 - startpos); d = (startpos >= size1 ? string2 - size1 : string1) + startpos; - + /* Written out as an if-else to avoid testing `translate' inside the loop. */ if (translate) @@ -2956,7 +2997,7 @@ re_search_2 (bufp, string1, size1, string2, size2, startpos, range, regs, stop) else /* Searching backwards. */ { register char c = (size1 == 0 || startpos >= size1 - ? string2[startpos - size1] + ? string2[startpos - size1] : string1[startpos]); if (!fastmap[(unsigned char) TRANSLATE (c)]) @@ -2973,21 +3014,21 @@ re_search_2 (bufp, string1, size1, string2, size2, startpos, range, regs, stop) startpos, regs, stop); if (val >= 0) return startpos; - + if (val == -2) return -2; advance: - if (!range) + if (!range) break; - else if (range > 0) + else if (range > 0) { - range--; + range--; startpos++; } else { - range++; + range++; startpos--; } } @@ -3002,16 +3043,16 @@ static boolean alt_match_null_string_p (), group_match_null_string_p (); /* Structure for per-register (a.k.a. per-group) information. - This must not be longer than one word, because we push this value - onto the failure stack. Other register information, such as the + Other register information, such as the starting and ending positions (which are addresses), and the list of inner groups (which is a bits list) are maintained in separate - variables. - + variables. + We are making a (strictly speaking) nonportable assumption here: that the compiler will pack our bit fields into something that fits into the type of `word', i.e., is something that fits into one item on the failure stack. */ + typedef union { fail_stack_elt_t word; @@ -3081,7 +3122,7 @@ typedef union /* Test if at very beginning or at very end of the virtual concatenation of `string1' and `string2'. If only one string, it's `string2'. */ #define AT_STRINGS_BEG(d) ((d) == (size1 ? string1 : string2) || !size2) -#define AT_STRINGS_END(d) ((d) == end2) +#define AT_STRINGS_END(d) ((d) == end2) /* Test if D points to a character which is word-constituent. We have @@ -3153,7 +3194,7 @@ re_match (bufp, string, size, pos, regs) the (virtual) concatenation of STRING1 and STRING2 (of length SIZE1 and SIZE2, respectively). We start matching at POS, and stop matching at STOP. - + If REGS is non-null and the `no_sub' field of BUFP is nonzero, we store offsets for the substring each group matched in REGS. See the documentation for exactly how many groups we fill. @@ -3184,7 +3225,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) /* Where we are in the data, and the end of the current string. */ const char *d, *dend; - + /* Where we are in the pattern, and the end of the pattern. */ unsigned char *p = bufp->buffer; register unsigned char *pend = p + bufp->used; @@ -3211,7 +3252,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) return, for use in backreferences. The number here includes an element for register zero. */ unsigned num_regs = bufp->re_nsub + 1; - + /* The currently active registers. */ unsigned lowest_active_reg = NO_LOWEST_ACTIVE_REG; unsigned highest_active_reg = NO_HIGHEST_ACTIVE_REG; @@ -3238,10 +3279,10 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) matched any of the pattern so far this time through the reg_num-th subexpression. These two fields get reset each time through any loop their register is in. */ - register_info_type *reg_info; + register_info_type *reg_info; /* The following record the register info as found in the above - variables when we find a match better than any we've seen before. + variables when we find a match better than any we've seen before. This happens as we backtrack through the failure points, which in turn happens only if we have not yet matched the entire string. */ unsigned best_regs_set = false; @@ -3263,13 +3304,13 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) #ifdef DEBUG /* Counts the total number of registers pushed. */ - unsigned num_regs_pushed = 0; + unsigned num_regs_pushed = 0; #endif DEBUG_PRINT1 ("\n\nEntering re_match_2.\n"); - + INIT_FAIL_STACK (); - + /* Do not bother to initialize all the register variables if there are no groups in the pattern, as it takes a fair amount of time. If there are groups, we include space for register 0 (the whole @@ -3287,8 +3328,8 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) reg_dummy = REGEX_TALLOC (num_regs, const char *); reg_info_dummy = REGEX_TALLOC (num_regs, register_info_type); - if (!(regstart && regend && old_regstart && old_regend && reg_info - && best_regstart && best_regend && reg_dummy && reg_info_dummy)) + if (!(regstart && regend && old_regstart && old_regend && reg_info + && best_regstart && best_regend && reg_dummy && reg_info_dummy)) { FREE_VARIABLES (); return -2; @@ -3311,21 +3352,21 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) FREE_VARIABLES (); return -1; } - + /* Initialize subexpression text positions to -1 to mark ones that no start_memory/stop_memory has been seen for. Also initialize the register information struct. */ for (mcnt = 1; mcnt < num_regs; mcnt++) { - regstart[mcnt] = regend[mcnt] + regstart[mcnt] = regend[mcnt] = old_regstart[mcnt] = old_regend[mcnt] = REG_UNSET_VALUE; - + REG_MATCH_NULL_STRING_P (reg_info[mcnt]) = MATCH_NULL_UNSET_VALUE; IS_ACTIVE (reg_info[mcnt]) = 0; MATCHED_SOMETHING (reg_info[mcnt]) = 0; EVER_MATCHED_SOMETHING (reg_info[mcnt]) = 0; } - + /* We move `string1' into `string2' if the latter's empty -- but not if `string1' is null. */ if (size2 == 0 && string1 != NULL) @@ -3350,7 +3391,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) end_match_2 = string2 + stop - size1; } - /* `p' scans through the pattern as `d' scans through the data. + /* `p' scans through the pattern as `d' scans through the data. `dend' is the end of the input string that `d' points within. `d' is advanced into the following input string whenever necessary, but this happens before fetching; therefore, at the beginning of the @@ -3372,7 +3413,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) DEBUG_PRINT1 ("The string to match is: `"); DEBUG_PRINT_DOUBLE_STRING (d, string1, size1, string2, size2); DEBUG_PRINT1 ("'\n"); - + /* This loops over pattern commands. It exits by returning from the function if the match is complete, or it drops through if the match fails at this starting point in the input data. */ @@ -3383,13 +3424,13 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) if (p == pend) { /* End of pattern means we might have succeeded. */ DEBUG_PRINT1 ("end of pattern ... "); - + /* If we haven't matched the entire string, and we want the longest match, try backtracking. */ if (d != end_match_2) { DEBUG_PRINT1 ("backtracking.\n"); - + if (!FAIL_STACK_EMPTY ()) { /* More failure points to try. */ boolean same_str_p = (FIRST_STRING_P (match_end) @@ -3402,16 +3443,16 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) { best_regs_set = true; match_end = d; - + DEBUG_PRINT1 ("\nSAVING match as best so far.\n"); - + for (mcnt = 1; mcnt < num_regs; mcnt++) { best_regstart[mcnt] = regstart[mcnt]; best_regend[mcnt] = regend[mcnt]; } } - goto fail; + goto fail; } /* If no failure points, don't restore garbage. */ @@ -3424,7 +3465,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) strings `x-' and `y-z-', if the two strings are not consecutive in memory. */ DEBUG_PRINT1 ("Restoring best registers.\n"); - + d = match_end; dend = ((d >= string1 && d <= end1) ? end_match_1 : end_match_2); @@ -3468,7 +3509,11 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) } } else - assert (bufp->regs_allocated == REGS_FIXED); + { + /* These braces fend off a "empty body in an else-statement" + warning under GCC when assert expands to nothing. */ + assert (bufp->regs_allocated == REGS_FIXED); + } /* Convert the pointer data in `regstart' and `regend' to indices. Register zero has to be set differently, @@ -3479,7 +3524,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) regs->end[0] = (MATCHING_IN_FIRST_STRING ? d - string1 : d - string2 + size1); } - + /* Go through the first `min (num_regs, regs->num_regs)' registers, since that is all we initialized. */ for (mcnt = 1; mcnt < MIN (num_regs, regs->num_regs); mcnt++) @@ -3492,7 +3537,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) regs->end[mcnt] = POINTER_TO_OFFSET (regend[mcnt]); } } - + /* If the regs structure we return has more elements than were in the pattern, set the extra elements to -1. If we (re)allocated the registers, this is the case, @@ -3508,8 +3553,8 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) nfailure_points_pushed - nfailure_points_popped); DEBUG_PRINT2 ("%u registers pushed.\n", num_regs_pushed); - mcnt = d - pos - (MATCHING_IN_FIRST_STRING - ? string1 + mcnt = d - pos - (MATCHING_IN_FIRST_STRING + ? string1 : string2 - size1); DEBUG_PRINT2 ("Returning %d from re_match_2.\n", mcnt); @@ -3599,7 +3644,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) p += 1 + *p; if (!not) goto fail; - + SET_REGS_MATCHED (); d++; break; @@ -3616,9 +3661,9 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) /* Find out if this group can match the empty string. */ p1 = p; /* To send to group_match_null_string_p. */ - + if (REG_MATCH_NULL_STRING_P (reg_info[*p]) == MATCH_NULL_UNSET_VALUE) - REG_MATCH_NULL_STRING_P (reg_info[*p]) + REG_MATCH_NULL_STRING_P (reg_info[*p]) = group_match_null_string_p (&p1, pend, reg_info); /* Save the position in the string where we were the last time @@ -3629,7 +3674,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) old_regstart[*p] = REG_MATCH_NULL_STRING_P (reg_info[*p]) ? REG_UNSET (regstart[*p]) ? d : regstart[*p] : regstart[*p]; - DEBUG_PRINT2 (" old_regstart: %d\n", + DEBUG_PRINT2 (" old_regstart: %d\n", POINTER_TO_OFFSET (old_regstart[*p])); regstart[*p] = d; @@ -3637,10 +3682,10 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) IS_ACTIVE (reg_info[*p]) = 1; MATCHED_SOMETHING (reg_info[*p]) = 0; - + /* This is the new highest active register. */ highest_active_reg = *p; - + /* If nothing was active before, this is the new lowest active register. */ if (lowest_active_reg == NO_LOWEST_ACTIVE_REG) @@ -3656,7 +3701,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) number, and the number of inner groups. */ case stop_memory: DEBUG_PRINT3 ("EXECUTING stop_memory %d (%d):\n", *p, p[1]); - + /* We need to save the string position the last time we were at this close-group operator in case the group is operated upon by a repetition operator, e.g., with `((a*)*(b*)*)*' @@ -3665,7 +3710,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) old_regend[*p] = REG_MATCH_NULL_STRING_P (reg_info[*p]) ? REG_UNSET (regend[*p]) ? d : regend[*p] : regend[*p]; - DEBUG_PRINT2 (" old_regend: %d\n", + DEBUG_PRINT2 (" old_regend: %d\n", POINTER_TO_OFFSET (old_regend[*p])); regend[*p] = d; @@ -3673,7 +3718,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) /* This register isn't active anymore. */ IS_ACTIVE (reg_info[*p]) = 0; - + /* If this was the only register active, nothing is active anymore. */ if (lowest_active_reg == highest_active_reg) @@ -3689,7 +3734,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) unsigned char r = *p - 1; while (r > 0 && !IS_ACTIVE (reg_info[r])) r--; - + /* If we end up at register zero, that means that we saved the registers as the result of an `on_failure_jump', not a `start_memory', and we jumped to past the innermost @@ -3705,7 +3750,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) else highest_active_reg = r; } - + /* If just failed to match something this time around with a group that's operated on by a repetition operator, try to force exit from the ``loop'', and restore the register @@ -3716,7 +3761,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) && (p + 2) < pend) { boolean is_a_jump_n = false; - + p1 = p + 2; mcnt = 0; switch ((re_opcode_t) *p1++) @@ -3731,12 +3776,12 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) if (is_a_jump_n) p1 += 2; break; - + default: /* do nothing */ ; } p1 += mcnt; - + /* If the next operation is a jump backwards in the pattern to an on_failure_jump right before the start_memory corresponding to this stop_memory, exit from the loop @@ -3750,17 +3795,17 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) failed match, e.g., with `(a*)*b' against `ab' for regstart[1], and, e.g., with `((a*)*(b*)*)*' against `aba' for regend[3]. - + Also restore the registers for inner groups for, e.g., `((a*)(b*))*' against `aba' (register 3 would otherwise get trashed). */ - + if (EVER_MATCHED_SOMETHING (reg_info[*p])) { - unsigned r; - + unsigned r; + EVER_MATCHED_SOMETHING (reg_info[*p]) = 0; - + /* Restore this and inner groups' (if any) registers. */ for (r = *p; r < *p + *(p + 1); r++) { @@ -3769,7 +3814,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) /* xx why this test? */ if ((int) old_regend[r] >= (int) regstart[r]) regend[r] = old_regend[r]; - } + } } p1++; EXTRACT_NUMBER_AND_INCR (mcnt, p1); @@ -3778,7 +3823,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) goto fail; } } - + /* Move past the register number and the inner group count. */ p += 2; break; @@ -3795,16 +3840,16 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) /* Can't back reference a group which we've never matched. */ if (REG_UNSET (regstart[regno]) || REG_UNSET (regend[regno])) goto fail; - + /* Where in input to try to start matching. */ d2 = regstart[regno]; - + /* Where to stop matching; if both the place to start and the place to stop matching are in the same string, then set to the place to stop, otherwise, for now have to use the end of the first string. */ - dend2 = ((FIRST_STRING_P (regstart[regno]) + dend2 = ((FIRST_STRING_P (regstart[regno]) == FIRST_STRING_P (regend[regno])) ? regend[regno] : end_match_1); for (;;) @@ -3828,16 +3873,16 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) /* How many characters left in this segment to match. */ mcnt = dend - d; - + /* Want how many consecutive characters we can match in one shot, so, if necessary, adjust the count. */ if (mcnt > dend2 - d2) mcnt = dend2 - d2; - + /* Compare that many; failure if mismatch, else move past them. */ - if (translate - ? bcmp_translate (d, d2, mcnt, translate) + if (translate + ? bcmp_translate (d, d2, mcnt, translate) : bcmp (d, d2, mcnt)) goto fail; d += mcnt, d2 += mcnt; @@ -3851,7 +3896,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) `newline_anchor' is set, after newlines. */ case begline: DEBUG_PRINT1 ("EXECUTING begline.\n"); - + if (AT_STRINGS_BEG (d)) { if (!bufp->not_bol) break; @@ -3872,7 +3917,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) { if (!bufp->not_eol) break; } - + /* We have to ``prefetch'' the next character. */ else if ((d == end1 ? *string2 : *d) == '\n' && bufp->newline_anchor) @@ -3906,7 +3951,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) then the . fails against the \n. But the next thing we want to do is match the \n against the \n; if we restored the string value, we would be back at the foo. - + Because this is used only in specific cases, we don't need to check all the things that `on_failure_jump' does, to make sure the right things get saved on the stack. Hence we don't @@ -3916,7 +3961,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) case; that seems worse than this. */ case on_failure_keep_string_jump: DEBUG_PRINT1 ("EXECUTING on_failure_keep_string_jump"); - + EXTRACT_NUMBER_AND_INCR (mcnt, p); DEBUG_PRINT3 (" %d (to 0x%x):\n", mcnt, p + mcnt); @@ -3925,7 +3970,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) /* Uses of on_failure_jump: - + Each alternative starts with an on_failure_jump that points to the beginning of the next alternative. Each alternative except the last ends with a jump that in effect jumps past @@ -3991,7 +4036,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) would have to backtrack because of (as in, e.g., `a*a') then we can change to pop_failure_jump, because we'll never have to backtrack. - + This is not true in the case of alternatives: in `(a|ab)*' we do need to backtrack to the `ab' alternative (e.g., if the string was `ab'). But instead of trying to @@ -4031,12 +4076,12 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) DEBUG_PRINT3 (" %c != %c => pop_failure_jump.\n", c, p1[5]); } - + else if ((re_opcode_t) p1[3] == charset || (re_opcode_t) p1[3] == charset_not) { int not = (re_opcode_t) p1[3] == charset_not; - + if (c < (unsigned char) (p1[4] * BYTEWIDTH) && p1[5 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH))) not = !not; @@ -4085,7 +4130,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) } /* Note fall through. */ - + /* Unconditionally jump (without popping any failure points). */ case jump: unconditional_jump: @@ -4095,7 +4140,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) DEBUG_PRINT2 ("(to 0x%x).\n", p); break; - + /* We need this opcode so we can detect where alternatives end in `group_match_null_string_p' et al. */ case jump_past_alt: @@ -4130,7 +4175,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) /* Have to succeed matching what follows at least n times. After that, handle like `on_failure_jump'. */ - case succeed_n: + case succeed_n: EXTRACT_NUMBER (mcnt, p + 2); DEBUG_PRINT2 ("EXECUTING succeed_n %d.\n", mcnt); @@ -4151,8 +4196,8 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) goto on_failure; } break; - - case jump_n: + + case jump_n: EXTRACT_NUMBER (mcnt, p + 2); DEBUG_PRINT2 ("EXECUTING jump_n %d.\n", mcnt); @@ -4161,13 +4206,13 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) { mcnt--; STORE_NUMBER (p + 2, mcnt); - goto unconditional_jump; + goto unconditional_jump; } /* If don't have to jump any more, skip over the rest of command. */ - else - p += 4; + else + p += 4; break; - + case set_number_at: { DEBUG_PRINT1 ("EXECUTING set_number_at.\n"); @@ -4206,31 +4251,23 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) goto fail; #ifdef emacs -#ifdef emacs19 case before_dot: DEBUG_PRINT1 ("EXECUTING before_dot.\n"); if (PTR_CHAR_POS ((unsigned char *) d) >= point) goto fail; break; - + case at_dot: DEBUG_PRINT1 ("EXECUTING at_dot.\n"); if (PTR_CHAR_POS ((unsigned char *) d) != point) goto fail; break; - + case after_dot: DEBUG_PRINT1 ("EXECUTING after_dot.\n"); if (PTR_CHAR_POS ((unsigned char *) d) <= point) goto fail; break; -#else /* not emacs19 */ - case at_dot: - DEBUG_PRINT1 ("EXECUTING at_dot.\n"); - if (PTR_CHAR_POS ((unsigned char *) d) + 1 != point) - goto fail; - break; -#endif /* not emacs19 */ case syntaxspec: DEBUG_PRINT2 ("EXECUTING syntaxspec %d.\n", mcnt); @@ -4244,6 +4281,10 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) PREFETCH (); if (SYNTAX (*d++) != (enum syntaxcode) mcnt) goto fail; + /* Can't use *d++ here; SYNTAX may be an unsafe macro. */ + d++; + if (SYNTAX (d[-1]) != (enum syntaxcode) mcnt) + goto fail; SET_REGS_MATCHED (); break; @@ -4257,8 +4298,10 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) mcnt = (int) Sword; matchnotsyntax: PREFETCH (); - if (SYNTAX (*d++) == (enum syntaxcode) mcnt) - goto fail; + /* Can't use *d++ here; SYNTAX may be an unsafe macro. */ + d++; + if (SYNTAX (d[-1]) == (enum syntaxcode) mcnt) + goto fail; SET_REGS_MATCHED (); break; @@ -4271,7 +4314,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) SET_REGS_MATCHED (); d++; break; - + case notwordchar: DEBUG_PRINT1 ("EXECUTING non-Emacs notwordchar.\n"); PREFETCH (); @@ -4281,7 +4324,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) d++; break; #endif /* not emacs */ - + default: abort (); } @@ -4306,7 +4349,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) if (p < pend) { boolean is_a_jump_n = false; - + /* If failed to a backwards jump that's part of a repetition loop, need to pop this failure point and use the next one. */ switch ((re_opcode_t) *p) @@ -4318,7 +4361,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) case jump: p1 = p + 1; EXTRACT_NUMBER_AND_INCR (mcnt, p1); - p1 += mcnt; + p1 += mcnt; if ((is_a_jump_n && (re_opcode_t) *p1 == succeed_n) || (!is_a_jump_n @@ -4349,10 +4392,10 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) /* We are passed P pointing to a register number after a start_memory. - + Return true if the pattern up to the corresponding stop_memory can match the empty string, and false otherwise. - + If we find the matching stop_memory, sets P to point to one past its number. Otherwise, sets P to an undefined byte less than or equal to END. @@ -4366,20 +4409,20 @@ group_match_null_string_p (p, end, reg_info) int mcnt; /* Point to after the args to the start_memory. */ unsigned char *p1 = *p + 2; - + while (p1 < end) { /* Skip over opcodes that can match nothing, and return true or false, as appropriate, when we get to one that can't, or to the matching stop_memory. */ - + switch ((re_opcode_t) *p1) { /* Could be either a loop or a series of alternatives. */ case on_failure_jump: p1++; EXTRACT_NUMBER_AND_INCR (mcnt, p1); - + /* If the next operation is not a jump backwards in the pattern. */ @@ -4393,7 +4436,7 @@ group_match_null_string_p (p, end, reg_info) /on_failure_jump/0/6/exactn/1/a/jump_past_alt/0/6 /on_failure_jump/0/6/exactn/1/b/jump_past_alt/0/3 - /exactn/1/c + /exactn/1/c So, we have to first go through the first (n-1) alternatives and then deal with the last one separately. */ @@ -4409,19 +4452,19 @@ group_match_null_string_p (p, end, reg_info) is, including the ending `jump_past_alt' and its number. */ - if (!alt_match_null_string_p (p1, p1 + mcnt - 3, + if (!alt_match_null_string_p (p1, p1 + mcnt - 3, reg_info)) return false; /* Move to right after this alternative, including the jump_past_alt. */ - p1 += mcnt; + p1 += mcnt; /* Break if it's the beginning of an n-th alternative that doesn't begin with an on_failure_jump. */ if ((re_opcode_t) *p1 != on_failure_jump) break; - + /* Still have to check that it's not an n-th alternative that starts with an on_failure_jump. */ p1++; @@ -4446,14 +4489,14 @@ group_match_null_string_p (p, end, reg_info) } /* if mcnt > 0 */ break; - + case stop_memory: assert (p1[1] == **p); *p = p1 + 2; return true; - - default: + + default: if (!common_op_match_null_string_p (&p1, end, reg_info)) return false; } @@ -4466,7 +4509,7 @@ group_match_null_string_p (p, end, reg_info) /* Similar to group_match_null_string_p, but doesn't deal with alternatives: It expects P to be the first byte of a single alternative and END one byte past the last. The alternative can contain groups. */ - + static boolean alt_match_null_string_p (p, end, reg_info) unsigned char *p, *end; @@ -4474,12 +4517,12 @@ alt_match_null_string_p (p, end, reg_info) { int mcnt; unsigned char *p1 = p; - + while (p1 < end) { - /* Skip over opcodes that can match nothing, and break when we get + /* Skip over opcodes that can match nothing, and break when we get to one that can't. */ - + switch ((re_opcode_t) *p1) { /* It's a loop. */ @@ -4488,8 +4531,8 @@ alt_match_null_string_p (p, end, reg_info) EXTRACT_NUMBER_AND_INCR (mcnt, p1); p1 += mcnt; break; - - default: + + default: if (!common_op_match_null_string_p (&p1, end, reg_info)) return false; } @@ -4500,8 +4543,8 @@ alt_match_null_string_p (p, end, reg_info) /* Deals with the ops common to group_match_null_string_p and - alt_match_null_string_p. - + alt_match_null_string_p. + Sets P to one after the op and its arguments, if any. */ static boolean @@ -4536,7 +4579,7 @@ common_op_match_null_string_p (p, end, reg_info) reg_no = *p1; assert (reg_no > 0 && reg_no <= MAX_REGNUM); ret = group_match_null_string_p (&p1, end, reg_info); - + /* Have to set this here in case we're checking a group which contains a group and a back reference to it. */ @@ -4546,7 +4589,7 @@ common_op_match_null_string_p (p, end, reg_info) if (!ret) return false; break; - + /* If this is an optimized succeed_n for zero times, make the jump. */ case jump: EXTRACT_NUMBER_AND_INCR (mcnt, p1); @@ -4558,7 +4601,7 @@ common_op_match_null_string_p (p, end, reg_info) case succeed_n: /* Get to the number of times to succeed. */ - p1 += 2; + p1 += 2; EXTRACT_NUMBER_AND_INCR (mcnt, p1); if (mcnt == 0) @@ -4571,7 +4614,7 @@ common_op_match_null_string_p (p, end, reg_info) return false; break; - case duplicate: + case duplicate: if (!REG_MATCH_NULL_STRING_P (reg_info[*p1])) return false; break; @@ -4591,7 +4634,7 @@ common_op_match_null_string_p (p, end, reg_info) /* Return zero if TRANSLATE[S1] and TRANSLATE[S2] are identical for LEN bytes; nonzero otherwise. */ - + static int bcmp_translate (s1, s2, len, translate) unsigned char *s1, *s2; @@ -4612,10 +4655,10 @@ bcmp_translate (s1, s2, len, translate) /* re_compile_pattern is the GNU regular expression compiler: it compiles PATTERN (of length SIZE) and puts the result in BUFP. Returns 0 if the pattern was valid, otherwise an error string. - + Assumes the `allocated' (and perhaps `buffer') and `translate' fields are set in BUFP on entry. - + We call regex_compile to do the actual compilation. */ const char * @@ -4625,19 +4668,19 @@ re_compile_pattern (pattern, length, bufp) struct re_pattern_buffer *bufp; { reg_errcode_t ret; - + /* GNU code is written to assume at least RE_NREGS registers will be set (and at least one extra will be -1). */ bufp->regs_allocated = REGS_UNALLOCATED; - + /* And GNU code determines whether or not to get register information by passing null for the REGS argument to re_match, etc., not by setting no_sub. */ bufp->no_sub = 0; - + /* Match anchors at newline. */ bufp->newline_anchor = 1; - + ret = regex_compile (pattern, length, re_syntax_options, bufp); return re_error_msg[(int) ret]; @@ -4656,7 +4699,7 @@ re_comp (s) const char *s; { reg_errcode_t ret; - + if (!s) { if (!re_comp_buf.buffer) @@ -4740,7 +4783,7 @@ re_exec (s) int regcomp (preg, pattern, cflags) regex_t *preg; - const char *pattern; + const char *pattern; int cflags; { reg_errcode_t ret; @@ -4751,17 +4794,17 @@ regcomp (preg, pattern, cflags) /* regex_compile will allocate the space for the compiled pattern. */ preg->buffer = 0; preg->allocated = 0; - + /* Don't bother to use a fastmap when searching. This simplifies the REG_NEWLINE case: if we used a fastmap, we'd have to put all the characters after newlines into the fastmap. This way, we just try every character. */ preg->fastmap = 0; - + if (cflags & REG_ICASE) { unsigned i; - + preg->translate = (char *) malloc (CHAR_SET_SIZE); if (preg->translate == NULL) return (int) REG_ESPACE; @@ -4786,38 +4829,38 @@ regcomp (preg, pattern, cflags) preg->no_sub = !!(cflags & REG_NOSUB); - /* POSIX says a null character in the pattern terminates it, so we + /* POSIX says a null character in the pattern terminates it, so we can use strlen here in compiling the pattern. */ ret = regex_compile (pattern, strlen (pattern), syntax, preg); - + /* POSIX doesn't distinguish between an unmatched open-group and an unmatched close-group: both are REG_EPAREN. */ if (ret == REG_ERPAREN) ret = REG_EPAREN; - + return (int) ret; } /* regexec searches for a given pattern, specified by PREG, in the string STRING. - + If NMATCH is zero or REG_NOSUB was set in the cflags argument to `regcomp', we ignore PMATCH. Otherwise, we assume PMATCH has at least NMATCH elements, and we set them to the offsets of the corresponding matched substrings. - + EFLAGS specifies `execution flags' which affect matching: if REG_NOTBOL is set, then ^ does not match at the beginning of the string; if REG_NOTEOL is set, then $ does not match at the end. - + We return 0 if we find a match and REG_NOMATCH if not. */ int regexec (preg, string, nmatch, pmatch, eflags) const regex_t *preg; - const char *string; - size_t nmatch; - regmatch_t pmatch[]; + const char *string; + size_t nmatch; + regmatch_t pmatch[]; int eflags; { int ret; @@ -4827,15 +4870,15 @@ regexec (preg, string, nmatch, pmatch, eflags) boolean want_reg_info = !preg->no_sub && nmatch > 0; private_preg = *preg; - + private_preg.not_bol = !!(eflags & REG_NOTBOL); private_preg.not_eol = !!(eflags & REG_NOTEOL); - + /* The user has told us exactly how many registers to return information about, via `nmatch'. We have to pass that on to the matching routines. */ private_preg.regs_allocated = REGS_FIXED; - + if (want_reg_info) { regs.num_regs = nmatch; @@ -4849,7 +4892,7 @@ regexec (preg, string, nmatch, pmatch, eflags) ret = re_search (&private_preg, string, len, /* start: */ 0, /* range: */ len, want_reg_info ? ®s : (struct re_registers *) 0); - + /* Copy the register information to the POSIX structure. */ if (want_reg_info) { @@ -4889,7 +4932,7 @@ regerror (errcode, preg, errbuf, errbuf_size) if (errcode < 0 || errcode >= (sizeof (re_error_msg) / sizeof (re_error_msg[0]))) - /* Only error codes returned by the rest of the code should be passed + /* Only error codes returned by the rest of the code should be passed to this routine. If we are given anything else, or if other regex code generates an invalid error code, then the program has a bug. Dump core so we can fix it. */ @@ -4903,7 +4946,7 @@ regerror (errcode, preg, errbuf, errbuf_size) msg = "Success"; msg_size = strlen (msg) + 1; /* Includes the null. */ - + if (errbuf_size != 0) { if (msg_size > errbuf_size) @@ -4928,7 +4971,7 @@ regfree (preg) if (preg->buffer != NULL) free (preg->buffer); preg->buffer = NULL; - + preg->allocated = 0; preg->used = 0; @@ -4943,11 +4986,3 @@ regfree (preg) } #endif /* not emacs */ - -/* -Local variables: -make-backup-files: t -version-control: t -trim-versions-without-asking: nil -End: -*/ diff --git a/gnu/usr.bin/cvs/lib/regex.h b/gnu/usr.bin/cvs/lib/regex.h index 20cb5f21dd3..6ab52c38a5d 100644 --- a/gnu/usr.bin/cvs/lib/regex.h +++ b/gnu/usr.bin/cvs/lib/regex.h @@ -461,9 +461,11 @@ extern void re_set_registers _RE_ARGS ((struct re_pattern_buffer *buffer, struct re_registers *regs, unsigned num_regs, regoff_t *starts, regoff_t *ends)); -/* 4.2 bsd compatibility. */ -extern char *re_comp _RE_ARGS ((const char *)); -extern int re_exec _RE_ARGS ((const char *)); +/* 4.2 bsd compatibility. System headers may declare the argument as + either "char *" (e.g. Cray unistd.h) or "const char *" (e.g. linux + regex.h), so don't prototype them here. */ +extern char *re_comp (); +extern int re_exec (); /* POSIX compatibility. */ extern int regcomp _RE_ARGS ((regex_t *preg, const char *pattern, int cflags)); diff --git a/gnu/usr.bin/cvs/lib/wait.h b/gnu/usr.bin/cvs/lib/wait.h index 2dbc6d9a248..60ed47a2724 100644 --- a/gnu/usr.bin/cvs/lib/wait.h +++ b/gnu/usr.bin/cvs/lib/wait.h @@ -17,12 +17,23 @@ #include <sys/resource.h> /* for rusage */ #endif #include <sys/wait.h> -#else +#endif +#ifndef WIFSTOPPED #define WIFSTOPPED(w) (((w) & 0xff) == 0x7f) +#endif +#ifndef WIFSIGNALED #define WIFSIGNALED(w) (((w) & 0xff) != 0x7f && ((w) & 0xff) != 0) +#endif +#ifndef WIFEXITED #define WIFEXITED(w) (((w) & 0xff) == 0) +#endif +#ifndef WSTOPSIG #define WSTOPSIG(w) (((w) >> 8) & 0xff) +#endif +#ifndef WTERMSIG #define WTERMSIG(w) ((w) & 0x7f) +#endif +#ifndef WEXITSTATUS #define WEXITSTATUS(w) (((w) >> 8) & 0xff) #endif diff --git a/gnu/usr.bin/cvs/lib/waitpid.c b/gnu/usr.bin/cvs/lib/waitpid.c index e8ddeb8a85a..02d6acb29f4 100644 --- a/gnu/usr.bin/cvs/lib/waitpid.c +++ b/gnu/usr.bin/cvs/lib/waitpid.c @@ -63,7 +63,11 @@ pid_t waitpid (pid, status, options) while (1) { +#ifdef HAVE_WAIT3 pid_t p = wait3 (status, options, (struct rusage *) 0); +#else + pid_t p = wait (status); +#endif if (p == 0 || p == -1 || p == pid) return p; diff --git a/gnu/usr.bin/cvs/man/ChangeLog b/gnu/usr.bin/cvs/man/ChangeLog index 93580e506e8..6023631036a 100644 --- a/gnu/usr.bin/cvs/man/ChangeLog +++ b/gnu/usr.bin/cvs/man/ChangeLog @@ -1,3 +1,7 @@ +Wed Feb 12 14:20:43 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * Makefile.in (install): Depend on installdirs. + Thu Jan 2 13:30:56 1997 Jim Kingdon <kingdon@harvey.cyclic.com> * Makefile.in, cvsbug.8: Remove "675" paragraph; diff --git a/gnu/usr.bin/cvs/man/Makefile.in b/gnu/usr.bin/cvs/man/Makefile.in index 79198fff027..ffc36139e0b 100644 --- a/gnu/usr.bin/cvs/man/Makefile.in +++ b/gnu/usr.bin/cvs/man/Makefile.in @@ -35,10 +35,9 @@ man8dir = $(mandir)/man8 all: .PHONY: all -# This used to depend on installdirs, but someone took it out (I think -# maybe it is/was some kind of Cygnus convention to not depend on installdirs; -# I'm not sure). I don't know what the pro(s) and con(s) are. -install: all +# This needs to depend on installdirs so that (for example) the +# install will not fail if $(prefix)/man/man5 does not yet exist. +install: all installdirs for f in $(MAN1FILES); do \ $(INSTALL_DATA) $(srcdir)/$$f $(man1dir)/$$f; \ done diff --git a/gnu/usr.bin/cvs/os2/ChangeLog b/gnu/usr.bin/cvs/os2/ChangeLog index 38627ef0fe1..da351ca2160 100644 --- a/gnu/usr.bin/cvs/os2/ChangeLog +++ b/gnu/usr.bin/cvs/os2/ChangeLog @@ -1,3 +1,37 @@ +Wed Mar 12 16:10:01 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * config.h (HAVE_SETVBUF): Removed; no longer used. + +Mon Feb 10 20:01:20 1997 Ullrich von Bassewitz <uz@musoftware.com> + + * filesubr.c: Add an OS/2 specific chdir function that will not + only change the path but will also make the drive current that + is given in the argument string. + config.h: #define the macro CVS_CHDIR to os2_chdir so cvs will + use the os2_chdir function instead of chdir. + +Mon Feb 10 18:29:04 1997 Ullrich von Bassewitz <uz@musoftware.com> + + * config.h: Define VA_LIST_IS_ARRAY so that vasprintf will work + correctly with the watcom compiler. + +Sun Feb 9 20:17:41 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * README: Most of the compiler warnings are gone. + +1997-02-09 Jim Kingdon <kingdon@cyclic.com> + + * popen.h: Arguments to popen are const char * not char *. + +Wed Jan 29 18:27:11 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * options.h, config.h (GREP): Remove; no longer used. + +Tue Jan 28 18:29:03 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * config.h: Remove SIZEOF_INT and SIZEOF_LONG; no longer needed + with lib/md5.c changes. + Wed Jan 15 23:56:12 1997 Jim Kingdon <kingdon@harvey.cyclic.com> * watcom.mak (OS2_OBJECTS): Remove strippath. diff --git a/gnu/usr.bin/cvs/os2/README b/gnu/usr.bin/cvs/os2/README index 45c769d27e4..64da1ce21db 100644 --- a/gnu/usr.bin/cvs/os2/README +++ b/gnu/usr.bin/cvs/os2/README @@ -16,7 +16,9 @@ differently. This is (IMHO) a bizarre behavior, but you need to convert the linefeeds to CRLF pairs (editing the file with an editor such as emacs will generally do this). - You will get warnings during the compilation; ignore them. + There are two compiler warnings in os2/popen.c which we haven't +figured out the cause of. Other than that there probably aren't a whole +lot of warnings (but there might be a few). Report bugs to <bug-cvs@prep.ai.mit.edu>. diff --git a/gnu/usr.bin/cvs/os2/config.h b/gnu/usr.bin/cvs/os2/config.h index 08c0388ec58..a14074b248f 100644 --- a/gnu/usr.bin/cvs/os2/config.h +++ b/gnu/usr.bin/cvs/os2/config.h @@ -36,6 +36,14 @@ #define _cwait cwait #endif +/* Some more WATCOM stuff: The watcom compiler defines va_list as an array, + * not as a pointer, which will make the vasprintf code break without the + * following define: + */ +#ifdef __WATCOMC__ +#define VA_LIST_IS_ARRAY +#endif + /* Define if on AIX 3. System headers sometimes define this. We just want to avoid a redefinition error message. */ @@ -132,16 +140,6 @@ /* We don't need this for CLIENT side. */ #undef DIFF -/* the path to the gnu grep program on your system */ -/* We don't need this for CLIENT side. */ -#undef GREP - -/* The number of bytes in a int. */ -#define SIZEOF_INT 4 - -/* The number of bytes in a long. */ -#define SIZEOF_LONG 4 - /* Define if you have the connect function. */ /* Not used? */ /* It appears to be used in client.c now... don't know yet it OS/2 has it. */ @@ -174,9 +172,6 @@ /* Define if you have the putenv function. */ #define HAVE_PUTENV 1 -/* Define if you have the setvbuf function. */ -#define HAVE_SETVBUF 1 - /* Define if you have the sigaction function. */ #undef HAVE_SIGACTION @@ -289,6 +284,10 @@ #define CVS_MKDIR os2_mkdir extern int os2_mkdir (const char *PATH, int MODE); +/* OS/2 needs a special chdir functions that handles drives */ +#define CVS_CHDIR os2_chdir +extern int os2_chdir (const char *Dir); + /* This function doesn't exist under OS/2; we provide a stub. */ extern int readlink (char *path, char *buf, int buf_size); diff --git a/gnu/usr.bin/cvs/os2/filesubr.c b/gnu/usr.bin/cvs/os2/filesubr.c index f2aa88ee4b6..a8653cb7037 100644 --- a/gnu/usr.bin/cvs/os2/filesubr.c +++ b/gnu/usr.bin/cvs/os2/filesubr.c @@ -915,3 +915,52 @@ expand_wild (argc, argv, pargc, pargv) *pargc = new_argc; *pargv = new_argv; } + +int +os2_chdir (const char *Dir) +/* Change drive and directory to the path given in Dir */ +{ + /* If the path includes a drive, change the current drive to the one given */ + if (strlen (Dir) >= 2 && Dir [1] == ':') + { + /* A drive is given in Dir. Extract the drive from the string, then + * remove the drive from Dir by incrementing it. + */ + int Drive = Dir [0]; + Dir += 2; + + /* Check if the given drive is valid, convert to a drive number + * (A: == 1, B: == 2, etc.). The compare below assumes ascii, but + * that is not a problem with OS/2. + */ + if (Drive >= 'a' && Drive <= 'z') + { + Drive -= 'a' - 1; + } + else if (Drive >= 'A' && Drive <= 'Z') + { + Drive -= 'A' - 1; + } + else + { + /* An invalid drive letter. Set errno and return an error */ + errno = EACCES; + return -1; + } + + /* We have a valid drive given, so change the drive now */ + if (DosSetDefaultDisk (Drive) != 0) + { + /* We had an error. Assume that the drive does not exist */ + errno = ENODEV; + return -1; + } + + } + + /* Now we have a path without a drive left. Make it the current dir */ + return chdir (Dir); +} + + + diff --git a/gnu/usr.bin/cvs/os2/options.h b/gnu/usr.bin/cvs/os2/options.h index d41909ae894..fe4aa9a1480 100644 --- a/gnu/usr.bin/cvs/os2/options.h +++ b/gnu/usr.bin/cvs/os2/options.h @@ -55,17 +55,6 @@ #endif /* - * The "grep" program to execute when checking to see if a merged file had - * any conflicts. This "grep" must support the "-s" option and a standard - * regular expression as an argument. Specify a full pathname if your site - * wants to use a particular grep. - */ - -#ifndef GREP -#define GREP "grep" -#endif - -/* * The "patch" program to run when using the CVS server and accepting * patches across the network. Specify a full pathname if your site * wants to use a particular patch. diff --git a/gnu/usr.bin/cvs/os2/popen.h b/gnu/usr.bin/cvs/os2/popen.h index 8daf29eaef0..fec94e0ad57 100644 --- a/gnu/usr.bin/cvs/os2/popen.h +++ b/gnu/usr.bin/cvs/os2/popen.h @@ -1,6 +1,6 @@ /* We roll our own popen()/pclose() in OS/2. Thanks, Glenn Gribble! */ -FILE *popen (char *cmd, char *mode); +FILE *popen (const char *cmd, const char *mode); int popenRW (char **cmd, int *pipes); int pclose (FILE *stream); diff --git a/gnu/usr.bin/cvs/src/ChangeLog b/gnu/usr.bin/cvs/src/ChangeLog index c9d0f394f64..a78216d0505 100644 --- a/gnu/usr.bin/cvs/src/ChangeLog +++ b/gnu/usr.bin/cvs/src/ChangeLog @@ -1,5 +1,448 @@ +Sun Mar 16 10:18:28 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * version.c: Version 1.9.4. + + * rcscmds.c (RCS_checkin): Preserve the mode of the rcsfile. + RCS_CI usually, but not always, does this for us. + * commit.c (fix_rcs_modes): Replace algorithm with a more + CVSUMASK-friendly one. + * sanity.sh (modes): Update tests modes-5, modes-7, modes-10, and + modes-15 so they test that CVSUMASK is honored. + +Sun Mar 16 10:18:28 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * sanity.sh (modes): New tests modes-7a and modes-7b test behavior + if one manually changes the modes in the repository. + + * server.c (server): Revise code which checks for errors creating + temporary directory. This won't solve the intermittent + can't create temporary directory + Unknown error -1 + but it will mean (a) the right message based on errno gets + printed, instead of "unknown error -1", and (b) the message says + that it happened in chmod instead of mkdir_p. + +Sat Mar 15 16:47:12 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * sanity.sh (modes): New tests. Note that (for now) these are + just testing how CVS already behaves; I want to record that before + I move on to changing CVS's behavior with modes of RCS files. + +13 Mar 1997 Jim Kingdon + + * subr.c (line2argv): Change argv_allocated from size_t to int. + +Wed Mar 12 22:16:44 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * add.c (add_directory): If repository has an extraneous "." + directory at the end, strip it off. This fixes a bug which was + introduced when strip_path was nuked (this fix is much more + limited in scope than strip_path was; I _think_ that is a good + thing). + (add): Likewise, for client. + (combine_dir): New function, helps with above. + * sanity.sh (modules3): Reenable tests for this behavior. + (basica-0b, basicb-0e): Adjust test to reflect "foo/bar" instead + of "foo/./bar" in message. As with the rest of this, I believe + this is just restoring the behavior prior to the strip_path nuking + (I tried it with CVS 1.9). + +Sun Mar 9 10:06:29 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * root.c (parse_cvsroot), server.c (serve_root, serve_init): + If CVSroot_directory is not an absolute pathname, give a fatal error. + * sanity.sh (crerepos): New tests crerepos-6* test for above fixes. + +Sat Mar 8 22:06:17 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + This cleans up the last known code which can overflow its buffers + (except the Mac client). I've skimmed through much of CVS looking + for other such places; but I didn't read everything. If I missed + any please report it to bug-cvs. + * logmsg.c (logfile_write, title_proc): Realloc str_list as + needed; don't assume MAXLISTLEN is enough. + * cvs.h (MAXLISTLEN, MAXFILEPERDIR): Removed; no longer used. + * add.c, myndbm.c, parseinfo.c, update.c: Nuke MAXLINELEN limit. + * parseinfo.c, update.c, mkmodules.c: Check for errors reading file. + * cvs.h (MAXLINELEN): Removed; no longer used. + * logmsg (MAXHOSTNAMELEN): Removed; not used. + * main.c (cmd_synonyms): Allocate based on fullname, nick1, and + nick2, just in case someone makes those big enough so that 100 + bytes is not enough. + (Make_Date): Use MAXDATELEN rather than our own fixed size. + * mkmodules.c (mkmodules): Nuke arbitrary limit on line length. + * rcs.c (ALLOCINCR): Remove; not used. + (RCS_check_kflag): Add comment concerning karg size. + * run.c: Allocate run_prog to the needed size, rather than + allocating a fixed size buffer. + +Fri Mar 7 22:39:08 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * logmsg.c (logfile_write): Allocate prog to needed length rather + than assuming MAXPROGLEN is enough. + * cvs.h (MAXPROGLEN): Removed; no longer used. + * subr.c (MIN_INCR): Update comment to reflect MAXPROGLEN's demise. + + * subr.c (free_names): Fix comment: this function is not used to + free memory allocated by Find_Names (at least it hasn't for a long + time). + * subr.c, cvs.h (line2argv): Change calling convention so that we + allocate argv array rather than the caller. The previous one had + no way of checking whether we overflowed the passed-in buffer. + * subr.c (free_names): Free the argv array too. + * modules.c (do_module, cat_module): Update callers. + +Thu Mar 6 12:44:42 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * import.c: Allocate vhead and vbranch dynamically; removes + arbitrary limit. + * history.c: Likewise (since_rev, since_tag, backto, rec_types). + * ignore.c: Likewise (line). Also check for errors from getline + and add 'copyright' notice to top of file. + * wrapper.c (wrap_add_file): Likewise (line). Also check for + errors from various calls and add 'copyright' notice to top of file. + +Tue Mar 4 17:39:15 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * client.c (update_entries): Add comment about "move away <file>" + message. + +Mon Mar 3 21:51:40 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * sanity.sh (basicb): Clean up topfile,v at end of test. Fixes + failure in modules-155b. + +Sun Mar 2 18:11:09 1997 Dan Wilder <dan@gasboy.com> + and Jim Kingdon + + * admin.c (admin): Arrange to perform recursion if "cvs admin" + is passed only options. + +Sun Mar 2 18:11:09 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * sanity.sh (basicb): New tests basicb-0* test for files at top + level. + + * error.c (error): Add newline to "out of memory" message. I think + that its omission probably could cause the message to be lost in + the bowels of server.c and never passed to the user. + + * client.c (start_rsh_server): Add comment about "remsh" vs. "rsh". + + * cvs.h: Move copyright notice to top of file. + +Sun Mar 2 13:44:36 1997 Ian Lance Taylor <ian@cygnus.com> + + * sanity.sh: Use -n when testing whether rsh works. + + * server.c (serve_root): Free path. + +Sun Mar 2 13:12:46 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + The following are things that I noticed in the process of trying + to track down: + can't create temporary directory + Unknown error -1 + FAIL: test 28 + from nightly testing. I'm not sure that either item explains that + message however. + * server.c (server): Allocate pending_error_text; + print_pending_error will try to free it so + pending_error_text = "foo" + won't work. + (mkdir_p): Don't assume that isdir will leave errno unmolested. + +Thu Feb 27 15:29:58 1997 Ian Lance Taylor <ian@cygnus.com> + + * remove.c (cvsremove): When forcing removal in client mode, use + start_recursion rather than calling CVS_UNLINK on each argument. + (remove_force_fileproc): New static function. + * sanity.sh (deep): Add tests deep-rm7 through deep-rm10 for above + patch. + + * sanity.sh (death): Enable death-76a0 and death-76a1 tests for + remote, since they now work. + +Wed Feb 26 16:13:26 1997 Ian Lance Taylor <ian@cygnus.com> + + * client.c (add_prune_candidate): Skip adding this directory if + it is the same as the first directory already on the list. + +Mon Feb 24 21:36:43 1997 Noel Cragg <noel@gargle.rain.org> + + * main.c (lookup_command_attribute): Add the "init" command to the + list of commands that don't use the current working directory. + +Sun Feb 23 09:54:49 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * sanity.sh (devcom3): Clean up at end of test. + + * sanity.sh (basicb): Add commented out test basicb-8a0, for + whether CVS can print an error on bad numeric revision to diff. + Commented out until we get around to fixing CVS. + * diff.c (diff_file_nodiff): Add comment about this case. + + * fileattr.c (fileattr_read): If a filename is duplicated, + continue to ignore subsequent lines but free the node so that we + don't leak memory. + * sanity.sh (devcom3): New tests devcom3-8 and devcom3-9 test for + behavior on duplicated filenames. + + * fileattr.h: Add comment about unrecognized ENT-TYPE and order of + lines in fileattr file. + * fileattr.c (struct unrecog, unrecog_head): New variables, to + record unrecognized lines. + (fileattr_startdir): Assert that unrecog_head == NULL. + (fileattr_read): Record unrecognized lines in unrecog_head linked + list rather than ignoring them. + (fileattr_write): Also write out unrecognized lines, if any. + * sanity.sh (devcom3): New tests, test for above fix. + + * fileattr.h (fileattr_modify): Fix example in comment. + +Sat Feb 22 08:30:27 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * sanity.sh: Add variable username. + (basica rdiff multibranch log log2): Use it instead of our own + (inconsistent) ways of matching an author name. + + * filesubr.c, root.c, rtag.c, server.c, subr.c, update.c, + wrapper.c: Nuke PATH_MAX. + * cvs.h, wrapper.c (wrap_fromcvs_process_file): Now returns void + (return value had been unused). + * cvs.h: Adjust comment to reflect the fact that PATH_MAX is + gone, at least from src/*.c (except safe_location, as noted). + +22 Feb 1997 patch by Tom Hageman <tom@basil.icce.rug.nl> (4 Jun 1996) + updated and commented by Jim Kingdon <kingdon@harvey.cyclic.com> + + * update.c (checkout_file): Call unlink_file_dir on backup, not + unlink_file. + +Fri Feb 21 16:40:03 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * Makefile.in (DISTFILES): Remove NOTES. + + * NOTES: Removed. bcopy->memcpy is done. "static buffers" I + assume refers to what is covered by reentrancy text in HACKING. + Obstack idea moved to comment in hash.c (at nodecache). Checking + system calls for error returns largely done, and isn't a very + helpful suggestion unless you know where the bogus calls are + anyway. Sizing limits--we're in the progress of removing them + (assuming it meant things like PATH_MAX and earlier, already + nuked, limits). Removed various items about changes which were + done a long time ago (I realize that the ChangeLog's probably + aren't reliable that far back, but I'm not convinced anyone cares + anymore). CONFIRM_DIRECTORY_ADDS: I assume this is a + reference to the #if 0'd code in add_directory which asks for + confirmation--a better way of making it harder to accidentally add + directories would be to have to add and commit directories like + for files. I don't know what FORCE_MESSAGE_ON_ADD meant. + + * rcs.c (RCS_getrevtime): Fix documentation (in particular, the + size of the array that DATE must point to, but many other things + too). + * patch.c, recurse.c, release.c, remove.c, repos.c: Nuke PATH_MAX. + (patch_fileproc): Use MAXDATELEN not hardcoded 50. + +Sun Feb 16 12:00:44 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * client.c (client_process_import_file): New variable fullname; + pass it to send_modified. This finishes the job of untangling the + old short_pathname variable into update_dir vs. fullname. + + * client.c (client_process_import_file): Nuke first_time. If + toplevel_repos were ever NULL here, the code would dump core in + strncmp a few lines down. And client_import_setup ensures + toplevel_repos is not NULL. + +Sun Feb 16 08:16:48 1997 Ian Lance Taylor <ian@cygnus.com> + + * client.c (client_process_import_file): Rename short_pathname to + update_dir (to reflect its function) and make sure that it doesn't + point to uninitialized memory if repository and toplevel_repos + contain the same string. + +Sun Feb 16 08:16:48 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * client.c (start_rsh_server): Nuke comment about weirdnesses with + pre-1.5 versions of CVS and .bashrc/.cshrc. The remote protocol + is interoperable only back to 1.5, and people who need to know are + unlikely to see this comment anyway. + +Sun Dec 15 13:12:30 1996 Michael Douglass <mikedoug@texas.net> + and Jim Kingdon <kingdon@harvey.cyclic.com> + + * main.c (cmds): Added an entry for new logout command. + (cmd_usage): Added an entry for new logout command. + (lookup_command_attribute): Added 'logout' to list of commands + that set need_to_crate_root to 1. + * login.c, cvs.h (logout): New command for removing entries from + the .cvspass file. + (logout_usage): Usage information on the logout command. + +Wed Feb 12 11:19:42 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * client.c (struct send_data): Fix indentation. + +Wed Feb 12 08:48:04 1997 Greg A. Woods <woods@most.weird.com> + + * mkmodules.c (loginfo_contents): add missing comma in + initializer statement (caused syntax error on SunOS-4). + +Tue Feb 11 21:14:28 1997 Ian Lance Taylor <ian@cygnus.com> + + * commit.c (find_fileproc): If force_ci is set, set the status to + T_MODIFIED even if the file hasn't changed. + (commit): Pass force_ci to send_files as new force argument. + * client.c (struct send_data): Define. + (send_fileproc): The callerdat parameter now points to a send_data + struct. If force is set, always call send_modified. + (send_dirent_proc): The callerdat parameter now points to a + send_data struct. + (send_files): Add force parameter. Change all callers. Set up a + send_data struct and pass it to start_recursion as callerdat. + * client.h (send_files): Update declaration. + * sanity.sh (basica): Add a simple test for the above patch. + +Sun Feb 9 12:58:59 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * tag.c (cvstag), rtag.c (rtag): Pass -f to server if specified in + the client. I haven't tried to come up with a test case because + the fix seems obvious. + + * import.c (add_rcs_file): Change size of altdate1 and altdate2 to + MAXDATELEN. + * cvs.h (MAXDATELEN): Fix comments; describe what this is for. + + * diff.c (diff_usage): Document --ifdef and try to briefly say + what "rcsdiff-options" means. + + * update.c (update): If update had a nonzero status and we haven't + yet tried to fetch unpatchable files, go ahead and try it again. + The previous behavior was to quit, which meant that updates would + keep failing until you hacked around the problem. Patch and bug + report by Ian; comment, ChangeLog entry, and willingness to take + the flak if checking it is premature by Jim. + + * server.c (alloc_pending): New function. + * server.c: Call it. Fixes places where we had neglected to + check for NULL return from malloc. + + * sanity.sh (binwrap): Add test binwrap-0, tests for import.c fix + below. + +Sun, 9 Feb 1997 (submitted 19 Jul 1996) John Polstra <jdp@polstra.com> + + * import.c (import): Give error if the same tag is specified more + than once. The previous behavior was to write an RCS file which + had the same tag listed twice, once pointing to each revision, + which is not legal. + +Sun Feb 9 12:37:09 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * checkin.c (Checkin): Use cvs_output to print message (should + make out of order bugs no worse, as it merely substitues a + protocol_pipe vs. stderr_pipe race instead of a stdout_pipe + vs. stderr_pipe race). Add comment about stdout vs. stderr. + +Fri Feb 7 08:29:52 1997 Josef Nelissen <josef.nelissen@munich.ixos.de> + + * server.c (check_command_legal_p): Don't use ANSI-style definition. + +Thu Feb 6 10:55:37 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * patch.c (patch): Give a fatal error for -V option (see comment + for rationale). + + * diff.c (diff): Also send "options" to server. Pretty much the + patch submitted independently by josef.nelissen@munich.ixos.de and + Ronald Khoo <ronald@demon.net>. + +Wed Feb 5 18:57:14 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * modules.c (do_module): Fix typo in 30 Jan 97 PATH_MAX nuking + (free -> free_cwd). Testsuite test 151 gets credit for catching + this one. + +Mon Feb 3 16:14:54 1997 Ian Lance Taylor <ian@cygnus.com> + + * main.c (lookup_command_attribute): Don't use an ANSI prototype + when defining the function. + +Fri Jan 31 12:49:02 1997 Ian Lance Taylor <ian@cygnus.com> + + * modules.c (do_module): Actually goto found if is_found is set + (fixes thinko in PATH_MAX nuking of 30 Jan 97). + +Fri Jan 31 12:49:02 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * sanity.sh: Add modules3 and big to list of tests to run + by default; they were omitted by accident. + +Thu Jan 30 11:46:33 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * logmsg.c, main.c, mkmodules.c, modules.c, parseinfo.c, patch.c: + Nuke more PATH_MAX. + + * server.c (server_updated): After we send Created or + Update-existing for a file, mark it as unchanged, in case we + process it again. + * sanity.sh (modules3): New tests, test for above fix. + + * logmsg.c (do_verify): Error return from fopen is NULL, not -1. + Pass errno to error(). + + * login.c [_CRAY]: Don't declare getpass. + +Mon Jan 27 17:25:27 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * import.c (process_import_file): Fix freeing of rcs (Don't free + it before we are done using it, and don't free it twice). + + * modules.c (cat_module): Allocate line right before we use + it. The previous code was wrong because the length of the + s_h->rest changes between the time we allocate line and the time we + sprintf s_h->rest into it. + +Sun Jan 26 21:58:16 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * expand_path.c (expand_path): Revise to call expand_string as + needed. Nuke PATH_MAX. + * find_names.c (find_dirs): Likewise. + * import.c, lock.c: Nuke more PATH_MAX. + + * server.c (mkdir_p): Set retval to 0 at start of function. + Previously it had been uninitialized for some cases. Thanks are + due to nightly testing for catching this one. + +Sat Jan 25 21:34:19 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * subr.c, cvs.h (expand_string): New function. + * rcs.c (getrcskey, getrcsrev): Call it. This greatly reduces the + number of calls to realloc if there is a very large file in the + RCS file. Credit goes to Mike Heath <mike@pswtech.com> for + pointing out the problem and the basic solution (MIN_INCR, + MAX_INCR); I adapted it into the separate function expand_string. + * sanity.sh (big): New test helps insure this hasn't broken + anything obvious. + +Wed Jan 22 10:06:13 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * status.c (status_fileproc): Change message which is printed for + T_MODIFIED and ts_conflict set, so that it doesn't say "unresolved + confict". This message occurs whether the conflict is resolved or + not. + * sanity.sh (conflicts): Add tests conflicts-status-* to test + output of "cvs status" in the context of conflicts. Tests for + above fix. + + * rtag.c (rtag): Send -n if run_module_prog is NOT true. + Thu Jan 16 00:06:00 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + * version.c: Change version number to 1.9.3. + * version.c: Version 1.9.2. Wed Jan 15 09:14:38 1997 Jim Kingdon <kingdon@harvey.cyclic.com> diff --git a/gnu/usr.bin/cvs/src/add.c b/gnu/usr.bin/cvs/src/add.c index fadc48bf3a0..28faecc7839 100644 --- a/gnu/usr.bin/cvs/src/add.c +++ b/gnu/usr.bin/cvs/src/add.c @@ -39,6 +39,47 @@ static const char *const add_usage[] = NULL }; +static char *combine_dir PROTO ((char *, char *)); + +/* Given a directory DIR and a subdirectory within it, SUBDIR, combine + the two into a new directory name. Returns a newly malloc'd string. + For now this is a fairly simple affair, but perhaps it will want + to have grander ambitions in the context of VMS or others (or perhaps + not, perhaps that should all be hidden inside CVS_FOPEN and libc and so + on, and CVS should just see foo/bar/baz style pathnames). */ +static char * +combine_dir (dir, subdir) + char *dir; + char *subdir; +{ + char *retval; + size_t dir_len; + + dir_len = strlen (dir); + retval = xmalloc (dir_len + strlen (subdir) + 10); + if (dir_len >= 2 + && dir[dir_len - 1] == '.' + && ISDIRSEP (dir[dir_len - 2])) + { + /* The dir name has an extraneous "." at the end. + I'm not completely sure that this is the best place + to strip it off--it is possible that Name_Repository + should do so, or it shouldn't be in the CVS/Repository + file in the first place. Fixing it here seems like + a safe, small change, but I'm not sure it catches + all the cases. */ + strncpy (retval, dir, dir_len - 2); + retval[dir_len - 2] = '\0'; + } + else + { + strcpy (retval, dir); + } + strcat (retval, "/"); + strcat (retval, subdir); + return retval; +} + int add (argc, argv) int argc; @@ -106,14 +147,13 @@ add (argc, argv) { char *tag; char *date; - char *rcsdir = xmalloc (strlen (repository) - + strlen (argv[i]) + 10); + char *rcsdir; /* before we do anything else, see if we have any per-directory tags */ ParseTag (&tag, &date); - sprintf (rcsdir, "%s/%s", repository, argv[i]); + rcsdir = combine_dir (repository, argv[i]); strip_trailing_slashes (argv[i]); @@ -139,7 +179,7 @@ add (argc, argv) } } send_file_names (argc, argv, SEND_EXPAND_WILD); - send_files (argc, argv, 0, 0, 1); + send_files (argc, argv, 0, 0, 1, 0); send_to_server ("add\012", 0); return get_responses_and_close (); } @@ -440,8 +480,7 @@ add_directory (repository, entries, dir) goto out; } - rcsdir = xmalloc (strlen (repository) + strlen (dir) + 10); - (void) sprintf (rcsdir, "%s/%s", repository, dir); + rcsdir = combine_dir (repository, dir); if (isfile (rcsdir) && !isdir (rcsdir)) { error (0, 0, "%s is not a directory; %s not added", rcsdir, dir); @@ -471,20 +510,13 @@ add_directory (repository, entries, dir) List *ulist; struct logfile_info *li; -#if 0 - char line[MAXLINELEN]; - - (void) printf ("Add directory %s to the repository (y/n) [n] ? ", - rcsdir); - (void) fflush (stdout); - clearerr (stdin); - if (fgets (line, sizeof (line), stdin) == NULL || - (line[0] != 'y' && line[0] != 'Y')) - { - error (0, 0, "directory %s not added", rcsdir); - goto out; - } -#endif + /* There used to be some code here which would prompt for + whether to add the directory. The details of that code had + bitrotted, but more to the point it can't work + client/server, doesn't ask in the right way for GUIs, etc. + A better way of making it harder to accidentally add + directories would be to have to add and commit directories + like for files. The code was #if 0'd at least since CVS 1.5. */ if (!noexec) { @@ -562,7 +594,7 @@ build_entry (repository, user, options, message, entries, tag) char *tag; { char *fname; - char line[MAXLINELEN]; + char *line; FILE *fp; if (noexec) @@ -587,7 +619,9 @@ build_entry (repository, user, options, message, entries, tag) * without needing to clean anything up (well, we could clean up the * ,t file, but who cares). */ + line = xmalloc (strlen (user) + 20); (void) sprintf (line, "Initial %s", user); Register (entries, user, "0", line, options, tag, (char *) 0, (char *) 0); + free (line); return (0); } diff --git a/gnu/usr.bin/cvs/src/checkin.c b/gnu/usr.bin/cvs/src/checkin.c index 4f54a8bc333..c5b5d073f16 100644 --- a/gnu/usr.bin/cvs/src/checkin.c +++ b/gnu/usr.bin/cvs/src/checkin.c @@ -34,7 +34,14 @@ Checkin (type, finfo, rcs, rev, tag, options, message) int set_time; char *tocvsPath = NULL; - (void) printf ("Checking in %s;\n", finfo->fullname); + /* Hmm. This message goes to stdout and the "foo,v <-- foo" + message from "ci" goes to stderr. This doesn't make a whole + lot of sense, but making everything go to stdout can only be + gracefully achieved once RCS_checkin is librarified. */ + cvs_output ("Checking in ", 0); + cvs_output (finfo->fullname, 0); + cvs_output (";\n", 0); + fname = xmalloc (strlen (finfo->file) + 80); (void) sprintf (fname, "%s/%s%s", CVSADM, CVSPREFIX, finfo->file); diff --git a/gnu/usr.bin/cvs/src/client.h b/gnu/usr.bin/cvs/src/client.h index 10e1759f049..d313c965e6e 100644 --- a/gnu/usr.bin/cvs/src/client.h +++ b/gnu/usr.bin/cvs/src/client.h @@ -83,7 +83,7 @@ send_file_names PROTO((int argc, char **argv, unsigned int flags)); */ void send_files PROTO((int argc, char **argv, int local, int aflag, - int build_dirs)); + int build_dirs, int force)); /* Send an argument to the remote server. */ void diff --git a/gnu/usr.bin/cvs/src/error.c b/gnu/usr.bin/cvs/src/error.c index a772cca0e8f..0ed7eb24d37 100644 --- a/gnu/usr.bin/cvs/src/error.c +++ b/gnu/usr.bin/cvs/src/error.c @@ -149,7 +149,7 @@ error (status, errnum, message, va_alist) free (mess); } } - cvs_outerr (entire ? entire : "out of memory", 0); + cvs_outerr (entire ? entire : "out of memory\n", 0); if (entire != NULL) free (entire); } diff --git a/gnu/usr.bin/cvs/src/expand_path.c b/gnu/usr.bin/cvs/src/expand_path.c index ab093512955..7d0bc39e5ab 100644 --- a/gnu/usr.bin/cvs/src/expand_path.c +++ b/gnu/usr.bin/cvs/src/expand_path.c @@ -95,40 +95,82 @@ expand_path (name, file, line) { char *s; char *d; - /* FIXME: arbitrary limit. */ - char mybuf[PATH_MAX]; - char buf[PATH_MAX]; + + char *mybuf = NULL; + size_t mybuf_size = 0; + char *buf = NULL; + size_t buf_size = 0; + + size_t doff; + char *result; + + /* Sorry this routine is so ugly; it is a head-on collision + between the `traditional' unix *d++ style and the need to + dynamically allocate. It would be much cleaner (and probably + faster, not that this is a bottleneck for CVS) with more use of + strcpy & friends, but I haven't taken the effort to rewrite it + thusly. */ + + /* First copy from NAME to MYBUF, expanding $<foo> as we go. */ s = name; d = mybuf; + doff = d - mybuf; + expand_string (&mybuf, &mybuf_size, doff + 1); + d = mybuf + doff; while ((*d++ = *s)) + { if (*s++ == '$') { char *p = d; char *e; int flag = (*s == '{'); + doff = d - mybuf; + expand_string (&mybuf, &mybuf_size, doff + 1); + d = mybuf + doff; for (; (*d++ = *s); s++) + { if (flag ? *s =='}' : isalnum (*s) == 0 && *s != '_') break; - *--d = 0; + doff = d - mybuf; + expand_string (&mybuf, &mybuf_size, doff + 1); + d = mybuf + doff; + } + *--d = '\0'; e = expand_variable (&p[flag], file, line); if (e) { + doff = d - mybuf; + expand_string (&mybuf, &mybuf_size, doff + 1); + d = mybuf + doff; for (d = &p[-1]; (*d++ = *e++);) - ; + { + doff = d - mybuf; + expand_string (&mybuf, &mybuf_size, doff + 1); + d = mybuf + doff; + } --d; if (flag && *s) s++; } else /* expand_variable has already printed an error message. */ - return NULL; + goto error_exit; } - *d = 0; + doff = d - mybuf; + expand_string (&mybuf, &mybuf_size, doff + 1); + d = mybuf + doff; + } + doff = d - mybuf; + expand_string (&mybuf, &mybuf_size, doff + 1); + d = mybuf + doff; + *d = '\0'; + + /* Then copy from MYBUF to BUF, expanding ~. */ s = mybuf; d = buf; /* If you don't want ~username ~/ to be expanded simply remove @@ -158,8 +200,15 @@ expand_path (name, file, line) } t = ps->pw_dir; } + doff = d - buf; + expand_string (&buf, &buf_size, doff + 1); + d = buf + doff; while ((*d++ = *t++)) - ; + { + doff = d - buf; + expand_string (&buf, &buf_size, doff + 1); + d = buf + doff; + } --d; if (*p == 0) *p = '/'; /* always add / */ @@ -168,12 +217,35 @@ expand_path (name, file, line) else --s; /* Kill up to here */ + doff = d - buf; + expand_string (&buf, &buf_size, doff + 1); + d = buf + doff; while ((*d++ = *s++)) - ; - *d=0; - result = xmalloc (sizeof(char) * strlen(buf)+1); - strcpy (result, buf); + { + doff = d - buf; + expand_string (&buf, &buf_size, doff + 1); + d = buf + doff; + } + doff = d - buf; + expand_string (&buf, &buf_size, doff + 1); + d = buf + doff; + *d = '\0'; + + /* OK, buf contains the value we want to return. Clean up and return + it. */ + free (mybuf); + /* Save a little memory with xstrdup; buf will tend to allocate + more than it needs to. */ + result = xstrdup (buf); + free (buf); return result; + + error_exit: + if (mybuf != NULL) + free (mybuf); + if (buf != NULL) + free (buf); + return NULL; } static char * diff --git a/gnu/usr.bin/cvs/src/fileattr.h b/gnu/usr.bin/cvs/src/fileattr.h index 0ca7eae1515..c6362afa993 100644 --- a/gnu/usr.bin/cvs/src/fileattr.h +++ b/gnu/usr.bin/cvs/src/fileattr.h @@ -23,6 +23,13 @@ ENT-TYPE is 'D', and FILENAME empty, to specify default attributes to be used for newly added files. + 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. + + 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 @@ -91,7 +98,7 @@ extern char *fileattr_get0 PROTO ((const char *filename, => "abc=val;def=v2" fileattr_modify ("abc=v1;def=v2", "def", "val", '=', ';')) => "abc=v1;def=val" - fileattr_modify ("abc=v1;def=v2", "xxx", "val")) + fileattr_modify ("abc=v1;def=v2", "xxx", "val", '=', ';')) => "abc=v1;def=v2;xxx=val" fileattr_modify ("abc=v1;def=v2;ghi=v3", "def", "val", '=', ';')) => "abc=v1;def=val;ghi=v3" diff --git a/gnu/usr.bin/cvs/src/find_names.c b/gnu/usr.bin/cvs/src/find_names.c index 8bfce8c75b7..a7a91bbfd3e 100644 --- a/gnu/usr.bin/cvs/src/find_names.c +++ b/gnu/usr.bin/cvs/src/find_names.c @@ -288,7 +288,8 @@ find_dirs (dir, list, checkadm, entries) List *entries; { Node *p; - char tmp[PATH_MAX]; + char *tmp = NULL; + size_t tmp_size = 0; struct dirent *dp; DIR *dirp; @@ -322,6 +323,9 @@ find_dirs (dir, list, checkadm, entries) if (fnmatch (RCSPAT, dp->d_name, 0) == 0) continue; + expand_string (&tmp, + &tmp_size, + strlen (dir) + strlen (dp->d_name) + 10); sprintf (tmp, "%s/%s", dir, dp->d_name); if (!isdir (tmp)) continue; @@ -341,9 +345,8 @@ find_dirs (dir, list, checkadm, entries) if (dp->d_type == DT_LNK) continue; #endif - /* FIXME: tmp is not set here, or doesn't seem to be. - This would appear to just be a mistake... Needs more - investigation to be sure... */ + /* Note that we only get here if we already set tmp + above. */ if (islink (tmp)) continue; #ifdef DT_DIR @@ -351,6 +354,10 @@ find_dirs (dir, list, checkadm, entries) #endif /* check for new style */ + expand_string (&tmp, + &tmp_size, + (strlen (dir) + strlen (dp->d_name) + + sizeof (CVSADM) + 10)); (void) sprintf (tmp, "%s/%s/%s", dir, dp->d_name, CVSADM); if (!isdir (tmp)) continue; @@ -364,5 +371,7 @@ find_dirs (dir, list, checkadm, entries) freenode (p); } (void) closedir (dirp); + if (tmp != NULL) + free (tmp); return (0); } diff --git a/gnu/usr.bin/cvs/src/hash.c b/gnu/usr.bin/cvs/src/hash.c index e9f49355f5b..60998d108f9 100644 --- a/gnu/usr.bin/cvs/src/hash.c +++ b/gnu/usr.bin/cvs/src/hash.c @@ -10,7 +10,10 @@ #include "cvs.h" #include <assert.h> -/* global caches */ +/* Global caches. The idea is that we maintain a linked list of "free"d + nodes or lists, and get new items from there. It has been suggested + to use an obstack instead, but off the top of my head, I'm not sure + that would gain enough to be worth worrying about. */ static List *listcache = NULL; static Node *nodecache = NULL; diff --git a/gnu/usr.bin/cvs/src/myndbm.c b/gnu/usr.bin/cvs/src/myndbm.c index 99fe9521ace..1a3fcaea1a2 100644 --- a/gnu/usr.bin/cvs/src/myndbm.c +++ b/gnu/usr.bin/cvs/src/myndbm.c @@ -199,11 +199,14 @@ mydbm_load_file (fp, list) { char *line = NULL; size_t line_len; - /* FIXME: arbitrary limit. */ - char value[MAXLINELEN]; + char *value; + size_t value_allocated; char *cp, *vp; int len, cont; + value_allocated = 1; + value = xmalloc (value_allocated); + for (cont = 0; getline (&line, &line_len, fp) >= 0;) { if ((cp = strrchr (line, '\012')) != NULL) @@ -221,9 +224,8 @@ mydbm_load_file (fp, list) * line; otherwise at the beginning, but only after any trailing * backslash is removed. */ - vp = value; - if (cont) - vp += strlen (value); + if (!cont) + value[0] = '\0'; /* * See if the line we read is a continuation line, and strip the @@ -243,7 +245,11 @@ mydbm_load_file (fp, list) { cont = 0; } - (void) strcpy (vp, line); + expand_string (&value, + &value_allocated, + strlen (value) + strlen (line) + 5); + strcat (value, line); + if (value[0] == '#') continue; /* comment line */ vp = value; @@ -283,6 +289,7 @@ mydbm_load_file (fp, list) } } free (line); + free (value); } #endif /* MY_NDBM */ diff --git a/gnu/usr.bin/cvs/src/remove.c b/gnu/usr.bin/cvs/src/remove.c index 08a67bed58c..6f31e0acb55 100644 --- a/gnu/usr.bin/cvs/src/remove.c +++ b/gnu/usr.bin/cvs/src/remove.c @@ -17,6 +17,10 @@ #include "cvs.h" +#ifdef CLIENT_SUPPORT +static int remove_force_fileproc PROTO ((void *callerdat, + struct file_info *finfo)); +#endif static int remove_fileproc PROTO ((void *callerdat, struct file_info *finfo)); static Dtype remove_dirproc PROTO ((void *callerdat, char *dir, char *repos, char *update_dir, @@ -82,15 +86,10 @@ cvsremove (argc, argv) { if (!noexec) { - int i; - - for (i = 0; i < argc; i++) - { - if ( CVS_UNLINK (argv[i]) < 0 && ! existence_error (errno)) - { - error (0, errno, "unable to remove %s", argv[i]); - } - } + start_recursion (remove_force_fileproc, (FILESDONEPROC) NULL, + (DIRENTPROC) NULL, (DIRLEAVEPROC) NULL, + (void *) NULL, argc, argv, local, W_LOCAL, + 0, 0, (char *) NULL, 0); } /* else FIXME should probably act as if the file doesn't exist in doing the following checks. */ @@ -101,7 +100,7 @@ cvsremove (argc, argv) if (local) send_arg("-l"); send_file_names (argc, argv, 0); - send_files (argc, argv, local, 0, 0); + send_files (argc, argv, local, 0, 0, 0); send_to_server ("remove\012", 0); return get_responses_and_close (); } @@ -127,6 +126,26 @@ cvsremove (argc, argv) return (err); } +#ifdef CLIENT_SUPPORT + +/* + * This is called via start_recursion if we are running as the client + * and the -f option was used. We just physically remove the file. + */ + +/*ARGSUSED*/ +static int +remove_force_fileproc (callerdat, finfo) + void *callerdat; + struct file_info *finfo; +{ + if (CVS_UNLINK (finfo->file) < 0 && ! existence_error (errno)) + error (0, errno, "unable to remove %s", finfo->fullname); + return 0; +} + +#endif + /* * remove the file, only if it has already been physically removed */ @@ -136,7 +155,6 @@ remove_fileproc (callerdat, finfo) void *callerdat; struct file_info *finfo; { - char fname[PATH_MAX]; Vers_TS *vers; if (force) @@ -168,11 +186,17 @@ remove_fileproc (callerdat, finfo) } else if (vers->vn_user[0] == '0' && vers->vn_user[1] == '\0') { + char *fname; + /* * It's a file that has been added, but not commited yet. So, * remove the ,t file for it and scratch it from the * entries file. */ Scratch_Entry (finfo->entries, finfo->file); + fname = xmalloc (strlen (finfo->file) + + sizeof (CVSADM) + + sizeof (CVSEXT_LOG) + + 10); (void) sprintf (fname, "%s/%s%s", CVSADM, finfo->file, CVSEXT_LOG); (void) unlink_file (fname); if (!quiet) @@ -182,6 +206,7 @@ remove_fileproc (callerdat, finfo) if (server_active) server_checked_in (finfo->file, finfo->update_dir, finfo->repository); #endif + free (fname); } else if (vers->vn_user[0] == '-') { @@ -191,7 +216,10 @@ remove_fileproc (callerdat, finfo) } else { + char *fname; + /* Re-register it with a negative version number. */ + fname = xmalloc (strlen (vers->vn_user) + 5); (void) strcpy (fname, "-"); (void) strcat (fname, vers->vn_user); Register (finfo->entries, finfo->file, fname, vers->ts_rcs, vers->options, @@ -204,6 +232,7 @@ remove_fileproc (callerdat, finfo) if (server_active) server_checked_in (finfo->file, finfo->update_dir, finfo->repository); #endif + free (fname); } freevers_ts (&vers); diff --git a/gnu/usr.bin/cvs/src/run.c b/gnu/usr.bin/cvs/src/run.c index df594312a8f..74e418dc3ed 100644 --- a/gnu/usr.bin/cvs/src/run.c +++ b/gnu/usr.bin/cvs/src/run.c @@ -28,10 +28,11 @@ #endif static void run_add_arg PROTO((const char *s)); -static void run_init_prog PROTO((void)); extern char *strtok (); +extern int vasprintf (); + /* * To exec a program under CVS, first call run_setup() to setup any initial * arguments. The options to run_setup are essentially like printf(). The @@ -45,7 +46,6 @@ extern char *strtok (); * The execvp() syscall will be used, so that the PATH is searched correctly. * File redirections can be performed in the call to run_exec(). */ -static char *run_prog; static char **run_argv; static int run_argc; static int run_argc_allocated; @@ -66,8 +66,7 @@ run_setup (fmt, va_alist) #endif char *cp; int i; - - run_init_prog (); + char *run_prog; /* clean out any malloc'ed values from run_argv */ for (i = 0; i < run_argc; i++) @@ -83,15 +82,18 @@ run_setup (fmt, va_alist) /* process the varargs into run_prog */ #ifdef HAVE_VPRINTF VA_START (args, fmt); - (void) vsprintf (run_prog, fmt, args); + (void) vasprintf (&run_prog, fmt, args); va_end (args); #else - (void) sprintf (run_prog, fmt, a1, a2, a3, a4, a5, a6, a7, a8); + you lose #endif + if (run_prog == NULL) + error (1, 0, "out of memory"); /* put each word into run_argv, allocating it as we go */ for (cp = strtok (run_prog, " \t"); cp; cp = strtok ((char *) NULL, " \t")) run_add_arg (cp); + free (run_prog); } void @@ -115,20 +117,22 @@ run_args (fmt, va_alist) #ifdef HAVE_VPRINTF va_list args; #endif - - run_init_prog (); + char *run_prog; /* process the varargs into run_prog */ #ifdef HAVE_VPRINTF VA_START (args, fmt); - (void) vsprintf (run_prog, fmt, args); + (void) vasprintf (&run_prog, fmt, args); va_end (args); #else - (void) sprintf (run_prog, fmt, a1, a2, a3, a4, a5, a6, a7, a8); + you lose #endif + if (run_prog == NULL) + error (1, 0, "out of memory"); /* and add the (single) argument to the run_argv list */ run_add_arg (run_prog); + free (run_prog); } static void @@ -149,14 +153,6 @@ run_add_arg (s) run_argv[run_argc] = (char *) 0; /* not post-incremented on purpose! */ } -static void -run_init_prog () -{ - /* make sure that run_prog is allocated once */ - if (run_prog == (char *) 0) - run_prog = xmalloc (10 * 1024); /* 10K of args for _setup and _arg */ -} - int run_exec (stin, stout, sterr, flags) char *stin; diff --git a/gnu/usr.bin/cvs/src/sanity.sh b/gnu/usr.bin/cvs/src/sanity.sh index ecf296cf028..84e678c25bb 100644 --- a/gnu/usr.bin/cvs/src/sanity.sh +++ b/gnu/usr.bin/cvs/src/sanity.sh @@ -41,7 +41,7 @@ if test x"$1" = x"-r"; then remote=yes # If we're going to do remote testing, make sure 'rsh' works first. host="`hostname`" - if test "x`${CVS_RSH-rsh} $host 'echo hi'`" != "xhi"; then + if test "x`${CVS_RSH-rsh} $host -n 'echo hi'`" != "xhi"; then echo "ERROR: cannot test remote CVS, because \`rsh $host' fails." >&2 exit 1 fi @@ -80,6 +80,11 @@ shift # special characters we are probably in big trouble. PROG=`basename ${testcvs}` +# Regexp to match an author name. I'm not really sure what characters +# should be here. a-zA-Z obviously. People complained when 0-9 were +# not allowed in usernames. Other than that I'm not sure. +username="[a-zA-Z0-9][a-zA-Z0-9]*" + # FIXME: try things (what things? checkins?) without -m. # # Some of these tests are written to expect -Q. But testing with @@ -451,7 +456,7 @@ HOME=${TESTDIR}/home; export HOME # tests. if test x"$*" = x; then - tests="basica basicb basic1 deep basic2 rdiff death death2 branches multibranch import join new newb conflicts conflicts2 modules modules2 mflag errmsg1 devcom devcom2 ignore binfiles binwrap info serverpatch log log2 crerepos rcs" + tests="basica basicb basic1 deep basic2 rdiff death death2 branches multibranch import join new newb conflicts conflicts2 modules modules2 modules3 mflag errmsg1 devcom devcom2 devcom3 ignore binfiles binwrap info serverpatch log log2 crerepos rcs big modes" else tests="$*" fi @@ -526,7 +531,7 @@ for what in $tests; do dotest basica-0a "${testcvs} -q co -l ." '' mkdir first-dir dotest basica-0b "${testcvs} add first-dir" \ -"Directory /tmp/cvs-sanity/cvsroot/\./first-dir added to the repository" +"Directory /tmp/cvs-sanity/cvsroot/first-dir added to the repository" cd .. rm -rf 1 @@ -626,6 +631,22 @@ done' '"${PROG}"' \[[a-z]* aborted\]: correct above errors first!' dotest basica-8 "${testcvs} -q update" '' + # Test the -f option to ci + cd sdir/ssdir + dotest basica-8a "${testcvs} -q ci -f -m force-it" \ +'Checking in ssfile; +/tmp/cvs-sanity/cvsroot/first-dir/sdir/ssdir/ssfile,v <-- ssfile +new revision: 1\.3; previous revision: 1\.2 +done' + cd ../.. + dotest basica-8b "${testcvs} -q diff -r1.2 -r1.3" \ +'Index: sdir/ssdir/ssfile +=================================================================== +RCS file: /tmp/cvs-sanity/cvsroot/first-dir/sdir/ssdir/ssfile,v +retrieving revision 1\.2 +retrieving revision 1\.3 +diff -r1\.2 -r1\.3' + # The .* here will normally be "No such file or directory", # but if memory serves some systems (AIX?) have a different message. : dotest_fail basica-9 \ @@ -638,8 +659,8 @@ done' dotest basica-10 "${testcvs} annotate" \ 'Annotations for sdir/ssdir/ssfile \*\*\*\*\*\*\*\*\*\*\*\*\*\*\* -1\.1 .[a-z0-9@][a-z0-9@ ]* [0-9a-zA-Z-]*.: ssfile -1\.2 .[a-z0-9@][a-z0-9@ ]* [0-9a-zA-Z-]*.: ssfile line 2' +1\.1 .'"${username}"' *[0-9a-zA-Z-]*.: ssfile +1\.2 .'"${username}"' *[0-9a-zA-Z-]*.: ssfile line 2' cd .. rm -rf ${CVSROOT_DIRNAME}/first-dir @@ -648,7 +669,30 @@ done' basicb) # More basic tests, including non-branch tags and co -d. - mkdir ${CVSROOT_DIRNAME}/first-dir + mkdir 1; cd 1 + dotest basicb-0a "${testcvs} -q co -l ." '' + touch topfile + dotest basicb-0b "${testcvs} add topfile" \ +"${PROG} [a-z]*: scheduling file .topfile. for addition +${PROG} [a-z]*: use .cvs commit. to add this file permanently" + dotest basicb-0c "${testcvs} -q ci -m add-it topfile" \ +'RCS file: /tmp/cvs-sanity/cvsroot/./topfile,v +done +Checking in topfile; +/tmp/cvs-sanity/cvsroot/./topfile,v <-- topfile +initial revision: 1\.1 +done' + cd .. + rm -rf 1 + mkdir 2; cd 2 + dotest basicb-0d "${testcvs} -q co -l ." "U topfile" + mkdir first-dir + dotest basicb-0e "${testcvs} add first-dir" \ +"Directory /tmp/cvs-sanity/cvsroot/first-dir added to the repository" + cd .. + rm -rf 2 + +: mkdir ${CVSROOT_DIRNAME}/first-dir dotest basicb-1 "${testcvs} -q co first-dir" '' dotest basicb-1a "test -d CVS" '' cd first-dir @@ -714,6 +758,10 @@ T sdir2/sfile2' /tmp/cvs-sanity/cvsroot/first-dir/sdir2/sfile2,v <-- sfile2 new revision: 1\.2; previous revision: 1\.1 done' + # See if CVS can correctly notice when an invalid numeric + # revision is specified. + # Commented out until we get around to fixing CVS +: dotest basicb-8a0 "${testcvs} diff -r 1.5 -r 1.7 sfile2" 'error msg' cd .. # Test that we recurse into the correct directory when checking @@ -737,6 +785,7 @@ sfile2 starts" rm -rf newdir rm -rf ${CVSROOT_DIRNAME}/first-dir + rm -f ${CVSROOT_DIRNAME}/topfile,v ;; basic1) # first dive - add a files, first singly, then in a group. @@ -965,7 +1014,27 @@ done' dotest deep-rm5 "${testcvs} -q update -d -P" '' dotest_fail deep-rm6 "test -d dir7" '' - cd ../../../../../../.. + # Test rm -f -R. + cd ../.. + dotest deep-rm7 "${testcvs} rm -f -R dir5" \ +"${PROG} [a-z]*: Removing dir5 +${PROG} [a-z]*: scheduling .dir5/file1. for removal +${PROG} [a-z]*: Removing dir5/dir6 +${PROG} [a-z]*: scheduling .dir5/dir6/file1. for removal +${PROG} [a-z]*: use .${PROG} commit. to remove these files permanently" + dotest deep-rm8 "${testcvs} -q ci -m rm-it" \ +'Removing dir5/file1; +/tmp/cvs-sanity/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/file1,v <-- file1 +new revision: delete; previous revision: 1\.1 +done +Removing dir5/dir6/file1; +/tmp/cvs-sanity/cvsroot/first-dir/dir1/dir2/dir3/dir4/dir5/dir6/file1,v <-- file1 +new revision: delete; previous revision: 1\.1 +done' + dotest deep-rm9 "${testcvs} -q update -d -P" '' + dotest_fail deep-rm10 "test -d dir5" + + cd ../../../../.. if echo "yes" | ${testcvs} release -d first-dir >>${LOGFILE}; then pass deep-5 @@ -1429,10 +1498,10 @@ diff -c trdiff/foo:1\.1\.1\.1 trdiff/foo:1\.2 --- trdiff/foo .* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\* 1,2 \*\*\*\* -! \$''Id: foo,v 1\.1\.1\.1 [0-9/]* [0-9:]* [a-zA-Z0-9][a-zA-Z0-9]* Exp \$ +! \$''Id: foo,v 1\.1\.1\.1 [0-9/]* [0-9:]* '"${username}"' Exp \$ ! \$''Name: T1 \$ --- 1,3 ---- -! \$''Id: foo,v 1\.2 [0-9/]* [0-9:]* [a-zA-Z0-9][a-zA-Z0-9]* Exp \$ +! \$''Id: foo,v 1\.2 [0-9/]* [0-9:]* '"${username}"' Exp \$ ! \$''Name: local-v0 \$ ! something Index: trdiff/new @@ -1442,7 +1511,7 @@ diff -c /dev/null trdiff/new:1\.1 \*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\* 0 \*\*\*\* --- 1,2 ---- -'"${PLUS}"' #ident "@(#)trdiff:\$''Name: local-v0 \$:\$''Id: new,v 1\.1 [0-9/]* [0-9:]* [a-zA-Z0-9][a-zA-Z0-9]* Exp \$" +'"${PLUS}"' #ident "@(#)trdiff:\$''Name: local-v0 \$:\$''Id: new,v 1\.1 [0-9/]* [0-9:]* '"${username}"' Exp \$" '"${PLUS}"' new file' # FIXME: will this work here? @@ -1621,10 +1690,7 @@ T file2' echo "FAIL: test 76" | tee -a ${LOGFILE} ; exit 1 fi - # Remote CVS outputs nothing for 76a0 and 76a1; until - # this bug is fixed just skip those tests for remote. - if test "x$remote" = xno; then - dotest death-76a0 \ + dotest death-76a0 \ "${testcvs} -q rdiff -r bp_branch1 -r branch1 first-dir" \ "Index: first-dir/file3 diff -c /dev/null first-dir/file3:1\.1\.2\.1 @@ -1634,7 +1700,7 @@ diff -c /dev/null first-dir/file3:1\.1\.2\.1 \*\*\* 0 \*\*\*\* --- 1 ---- ${PLUS} line1 from branch1" - dotest death-76a1 \ + dotest death-76a1 \ "${testcvs} -q rdiff -r branch1 -r bp_branch1 first-dir" \ 'Index: first-dir/file3 diff -c first-dir/file3:1\.1\.2\.1 first-dir/file3:removed @@ -1644,7 +1710,6 @@ diff -c first-dir/file3:1\.1\.2\.1 first-dir/file3:removed \*\*\* 1 \*\*\*\* - line1 from branch1 --- 0 ----' - fi # remove rm file3 @@ -2395,16 +2460,16 @@ total revisions: 3; selected revisions: 3 description: ---------------------------- revision 1\.1 -date: [0-9/]* [0-9:]*; author: [0-9a-zA-Z-]*; state: Exp; +date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; branches: 1\.1\.2; 1\.1\.4; add-it ---------------------------- revision 1\.1\.4\.1 -date: [0-9/]* [0-9:]*; author: [0-9a-zA-Z-]*; state: Exp; lines: ${PLUS}1 -0 +date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -0 modify-on-br2 ---------------------------- revision 1\.1\.2\.1 -date: [0-9/]* [0-9:]*; author: [0-9a-zA-Z-]*; state: Exp; lines: ${PLUS}1 -1 +date: [0-9/]* [0-9:]*; author: ${username}; state: Exp; lines: ${PLUS}1 -1 modify-on-br1 =============================================================================" cd .. @@ -2423,7 +2488,7 @@ modify-on-br1 mkdir import-dir ; cd import-dir for i in 1 2 3 4 ; do - echo imported file"$i" > imported-file"$i" + echo imported file"$i" > imported-f"$i" done # This directory should be on the default ignore list, @@ -2431,8 +2496,8 @@ modify-on-br1 mkdir RCS echo ignore.me >RCS/ignore.me - echo 'import should not expand $''Id$' >>imported-file2 - cp imported-file2 ../imported-file2-orig.tmp + echo 'import should not expand $''Id$' >>imported-f2 + cp imported-f2 ../imported-f2-orig.tmp if ${CVS} import -m first-import first-dir vendor-branch junk-1_0 ; then echo "PASS: test 96" >>${LOGFILE} @@ -2440,7 +2505,7 @@ modify-on-br1 echo "FAIL: test 96" | tee -a ${LOGFILE} ; exit 1 fi - if cmp ../imported-file2-orig.tmp imported-file2; then + if cmp ../imported-f2-orig.tmp imported-f2; then pass 96.5 else fail 96.5 @@ -2456,7 +2521,7 @@ modify-on-br1 cd first-dir for i in 1 2 3 4 ; do - if test -f imported-file"$i" ; then + if test -f imported-f"$i" ; then echo "PASS: test 98-$i" >>${LOGFILE} else echo "FAIL: test 98-$i" | tee -a ${LOGFILE} ; exit 1 @@ -2469,15 +2534,15 @@ modify-on-br1 fi # remove - rm imported-file1 - if ${CVS} rm imported-file1 2>> ${LOGFILE}; then + rm imported-f1 + if ${CVS} rm imported-f1 2>> ${LOGFILE}; then echo "PASS: test 99" >>${LOGFILE} else echo "FAIL: test 99" | tee -a ${LOGFILE} ; exit 1 fi # change - echo local-change >> imported-file2 + echo local-change >> imported-f2 # commit if ${CVS} ci -m local-changes >> ${LOGFILE} 2>&1; then @@ -2487,7 +2552,7 @@ modify-on-br1 fi # log - if ${CVS} log imported-file1 | grep '1.1.1.2 (dead)' ; then + if ${CVS} log imported-f1 | grep '1.1.1.2 (dead)' ; then echo "FAIL: test 101" | tee -a ${LOGFILE} ; exit 1 else echo "PASS: test 101" >>${LOGFILE} @@ -2501,16 +2566,16 @@ modify-on-br1 fi # remove file4 on the vendor branch - rm imported-file4 + rm imported-f4 - if ${CVS} rm imported-file4 2>> ${LOGFILE}; then + if ${CVS} rm imported-f4 2>> ${LOGFILE}; then echo "PASS: test 103" >>${LOGFILE} else echo "FAIL: test 103" | tee -a ${LOGFILE} ; exit 1 fi # commit - if ${CVS} ci -m vendor-removed imported-file4 >>${LOGFILE}; then + if ${CVS} ci -m vendor-removed imported-f4 >>${LOGFILE}; then echo "PASS: test 104" >>${LOGFILE} else echo "FAIL: test 104" | tee -a ${LOGFILE} ; exit 1 @@ -2526,16 +2591,16 @@ modify-on-br1 # second import - file4 deliberately unchanged cd ../import-dir for i in 1 2 3 ; do - echo rev 2 of file $i >> imported-file"$i" + echo rev 2 of file $i >> imported-f"$i" done - cp imported-file2 ../imported-file2-orig.tmp + cp imported-f2 ../imported-f2-orig.tmp if ${CVS} import -m second-import first-dir vendor-branch junk-2_0 ; then echo "PASS: test 106" >>${LOGFILE} else echo "FAIL: test 106" | tee -a ${LOGFILE} ; exit 1 fi - if cmp ../imported-file2-orig.tmp imported-file2; then + if cmp ../imported-f2-orig.tmp imported-f2; then pass 106.5 else fail 106.5 @@ -2551,14 +2616,14 @@ modify-on-br1 cd first-dir - if test -f imported-file1 ; then + if test -f imported-f1 ; then echo "FAIL: test 108" | tee -a ${LOGFILE} ; exit 1 else echo "PASS: test 108" >>${LOGFILE} fi for i in 2 3 ; do - if test -f imported-file"$i" ; then + if test -f imported-f"$i" ; then echo "PASS: test 109-$i" >>${LOGFILE} else echo "FAIL: test 109-$i" | tee -a ${LOGFILE} ; exit 1 @@ -2572,7 +2637,7 @@ modify-on-br1 echo "FAIL: test 110" | tee -a ${LOGFILE} ; exit 1 fi - if test -f imported-file4 ; then + if test -f imported-f4 ; then echo "PASS: test 111" >>${LOGFILE} else echo "FAIL: test 111" | tee -a ${LOGFILE} ; exit 1 @@ -2589,36 +2654,36 @@ modify-on-br1 dotest import-113 \ "${testcvs} -q co -jjunk-1_0 -jjunk-2_0 first-dir" \ -"${PROG}"' [a-z]*: file first-dir/imported-file1 is present in revision junk-2_0 -RCS file: /tmp/cvs-sanity/cvsroot/first-dir/imported-file2,v +"${PROG}"' [a-z]*: file first-dir/imported-f1 is present in revision junk-2_0 +RCS file: /tmp/cvs-sanity/cvsroot/first-dir/imported-f2,v retrieving revision 1\.1\.1\.1 retrieving revision 1\.1\.1\.2 -Merging differences between 1\.1\.1\.1 and 1\.1\.1\.2 into imported-file2 +Merging differences between 1\.1\.1\.1 and 1\.1\.1\.2 into imported-f2 rcsmerge: warning: conflicts during merge' cd first-dir - if test -f imported-file1 ; then + if test -f imported-f1 ; then echo "FAIL: test 114" | tee -a ${LOGFILE} ; exit 1 else echo "PASS: test 114" >>${LOGFILE} fi for i in 2 3 ; do - if test -f imported-file"$i" ; then + if test -f imported-f"$i" ; then echo "PASS: test 115-$i" >>${LOGFILE} else echo "FAIL: test 115-$i" | tee -a ${LOGFILE} ; exit 1 fi done - dotest import-116 'cat imported-file2' \ + dotest import-116 'cat imported-f2' \ 'imported file2 -[<]<<<<<< imported-file2 -import should not expand \$''Id: imported-file2,v 1\.2 [0-9/]* [0-9:]* [a-z0-9@][a-z0-9@]* Exp \$ +[<]<<<<<< imported-f2 +import should not expand \$''Id: imported-f2,v 1\.2 [0-9/]* [0-9:]* [a-z0-9@][a-z0-9@]* Exp \$ local-change [=]====== -import should not expand \$''Id: imported-file2,v 1\.1\.1\.2 [0-9/]* [0-9:]* [a-z0-9@][a-z0-9@]* Exp \$ +import should not expand \$''Id: imported-f2,v 1\.1\.1\.2 [0-9/]* [0-9:]* [a-z0-9@][a-z0-9@]* Exp \$ rev 2 of file 2 [>]>>>>>> 1\.1\.1\.2' @@ -3189,6 +3254,15 @@ add a line' '"${PROG}"' \[[a-z]* aborted\]: correct above errors first!' mkdir dir1 mkdir sdir + dotest conflicts-status-0 "${testcvs} status a" \ +"=================================================================== +File: a Status: Needs Merge + + Working revision: 1\.1.* + Repository revision: 1\.2 /tmp/cvs-sanity/cvsroot/first-dir/a,v + Sticky Tag: (none) + Sticky Date: (none) + Sticky Options: (none)" dotest conflicts-130 "${testcvs} -q update" \ 'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/a,v retrieving revision 1\.1 @@ -3210,22 +3284,58 @@ rcsmerge: warning: conflicts during merge C a' rmdir dir1 sdir + dotest conflicts-status-1 "${testcvs} status a" \ +"=================================================================== +File: a Status: File had conflicts on merge + + Working revision: 1\.2.* + Repository revision: 1\.2 /tmp/cvs-sanity/cvsroot/first-dir/a,v + Sticky Tag: (none) + Sticky Date: (none) + Sticky Options: (none)" dotest_fail conflicts-131 "${testcvs} -q ci -m try" \ "${PROG} [a-z]*: file .a. had a conflict and has not been modified ${PROG} \[[a-z]* aborted\]: correct above errors first!" echo lame attempt at resolving it >>a # Try to check in the file with the conflict markers in it. + dotest conflicts-status-2 "${testcvs} status a" \ +"=================================================================== +File: a Status: File had conflicts on merge + + Working revision: 1\.2.* + Repository revision: 1\.2 /tmp/cvs-sanity/cvsroot/first-dir/a,v + Sticky Tag: (none) + Sticky Date: (none) + Sticky Options: (none)" dotest_fail conflicts-132 "${testcvs} -q ci -m try" \ "${PROG} [a-z]*: file .a. still contains conflict indicators ${PROG} \[[a-z]* aborted\]: correct above errors first!" echo resolve conflict >a + dotest conflicts-status-3 "${testcvs} status a" \ +"=================================================================== +File: a Status: File had conflicts on merge + + Working revision: 1\.2.* + Repository revision: 1\.2 /tmp/cvs-sanity/cvsroot/first-dir/a,v + Sticky Tag: (none) + Sticky Date: (none) + Sticky Options: (none)" dotest conflicts-133 "${testcvs} -q ci -m resolved" \ "Checking in a; /tmp/cvs-sanity/cvsroot/first-dir/a,v <-- a new revision: 1\.3; previous revision: 1\.2 done" + dotest conflicts-status-4 "${testcvs} status a" \ +"=================================================================== +File: a Status: Up-to-date + + Working revision: 1\.3.* + Repository revision: 1\.3 /tmp/cvs-sanity/cvsroot/first-dir/a,v + Sticky Tag: (none) + Sticky Date: (none) + Sticky Options: (none)" # Now test that we can add a file in one working directory # and have an update in another get it. @@ -3777,6 +3887,56 @@ ${PROG} \[[a-z]* aborted\]: cannot expand modules" rm -rf ${CVSROOT_DIRNAME}/second-dir ;; + modules3) + # More tests of modules, in particular what happens if several + # modules point to the same file. + + # First just set up a directory first-dir and a file file1 in it. + mkdir 1; cd 1 + + dotest modules3-0 "${testcvs} -q co -l ." '' + mkdir first-dir + dotest modules3-1 "${testcvs} add first-dir" \ +"Directory /tmp/cvs-sanity/cvsroot/first-dir added to the repository" + + cd first-dir + echo file1 >file1 + dotest modules3-2 "${testcvs} add file1" \ +"${PROG}"' [a-z]*: scheduling file `file1'\'' for addition +'"${PROG}"' [a-z]*: use '\''cvs commit'\'' to add this file permanently' + dotest modules3-3 "${testcvs} -q ci -m add-it" \ +'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file1,v +done +Checking in file1; +/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1 +initial revision: 1\.1 +done' + cd .. + + dotest modules3-4 "${testcvs} -q co CVSROOT/modules" \ +'U CVSROOT/modules' + cd CVSROOT + cat >modules <<EOF +mod1 -a first-dir/file1 +bigmod -a mod1 first-dir/file1 +EOF + dotest modules3-5 "${testcvs} -q ci -m add-modules" \ +"Checking in modules; +/tmp/cvs-sanity/cvsroot/CVSROOT/modules,v <-- modules +new revision: 1\.[0-9]*; previous revision: 1\.[0-9]* +done +${PROG} [a-z]*: Rebuilding administrative file database" + cd .. + + dotest modules3-6 "${testcvs} -q co bigmod" '' + rm -rf first-dir + dotest modules3-7 "${testcvs} -q co bigmod" 'U first-dir/file1' + cd .. + + rm -r 1 + rm -rf ${CVSROOT_DIRNAME}/first-dir + ;; + mflag) for message in '' ' ' ' ' ' test' ; do @@ -4179,6 +4339,61 @@ U first-dir/w3' rm -rf 1 2 ${CVSROOT_DIRNAME}/first-dir ;; + devcom3) + # More watch tests, most notably handling of features designed + # for future expansion. + mkdir ${CVSROOT_DIRNAME}/first-dir + mkdir 1 + cd 1 + dotest devcom3-1 "${testcvs} -q co first-dir" '' + cd first-dir + + touch w1 w2 + dotest devcom3-2 "${testcvs} add w1 w2" "${DOTSTAR}" + dotest devcom3-3 "${testcvs} watch on w1 w2" '' + dotest devcom3-4 "${testcvs} -q ci -m add-them" "${DOTSTAR}" + + # OK, since we are about to delve into CVS's internals, make + # sure that we seem to be correct about how they work. + dotest devcom3-5 "cat ${CVSROOT_DIRNAME}/first-dir/CVS/fileattr" \ +"Fw1 _watched= +Fw2 _watched=" + # Now write a few more lines, just as if we were a newer version + # of CVS implementing some new feature. + cat <<EOF >>${CVSROOT_DIRNAME}/first-dir/CVS/fileattr +Enew line here +G@#$^!@#=& +EOF + # Now get CVS to write to the fileattr file.... + dotest devcom3-6 "${testcvs} watch off w1" '' + # ...and make sure that it hasn't clobbered our new lines. + # Note that writing these lines in another order would be OK + # too. + dotest devcom3-7 "cat ${CVSROOT_DIRNAME}/first-dir/CVS/fileattr" \ +"Fw2 _watched= +G@#..!@#=& +Enew line here" + + # See what CVS does when a file name is duplicated. The + # behavior of all versions of CVS since file attributes were + # implemented is that it nukes the duplications. This seems + # reasonable enough, although it means it isn't clear how + # useful duplicates would be for purposes of future + # expansion. But in the interests of keeping behaviors + # predictable, might as well test for it, I guess. + echo 'Fw2 duplicate=' >>${CVSROOT_DIRNAME}/first-dir/CVS/fileattr + dotest devcom3-8 "${testcvs} watch on w1" '' + dotest devcom3-9 "cat ${CVSROOT_DIRNAME}/first-dir/CVS/fileattr" \ +"Fw2 _watched= +Fw1 _watched= +Enew line here +G@#..!@#=&" + + cd ../.. + + rm -rf 1 ${CVSROOT_DIRNAME}/first-dir + ;; + ignore) dotest 187a1 "${testcvs} -q co CVSROOT" "U CVSROOT/${DOTSTAR}" cd CVSROOT @@ -4547,6 +4762,12 @@ File: nibfile Status: Up-to-date mkdir dir-to-import cd dir-to-import touch foo.c foo.exe + + # While we're here, test for rejection of duplicate tag names. + dotest_fail binwrap-0 \ + "${testcvs} import -m msg -I ! first-dir dup dup" \ +"${PROG} \[[a-z]* aborted\]: tag .dup. was specified more than once" + if ${testcvs} import -m message -I ! -W "*.exe -k 'b'" \ first-dir tag1 tag2 >>${LOGFILE}; then pass binwrap-1 @@ -4854,7 +5075,7 @@ access list:' log_header2='keyword substitution: kv' log_dash='---------------------------- revision' - log_date='date: [0-9/]* [0-9:]*; author: [a-zA-Z0-9@]*; state: Exp;' + log_date="date: [0-9/]* [0-9:]*; author: ${username}; state: Exp;" log_lines=" lines: ${PLUS}1 -1" log_rev1="${log_dash} 1\.1 ${log_date} @@ -5041,7 +5262,7 @@ description: file1-is-for-testing ---------------------------- revision 1\.1 -date: [0-9/]* [0-9:]*; author: [a-zA-Z0-9@]*; state: Exp; +date: [0-9/]* [0-9:]*; author: '"${username}"'; state: Exp; 1 =============================================================================' @@ -5055,7 +5276,9 @@ date: [0-9/]* [0-9:]*; author: [a-zA-Z0-9@]*; state: Exp; # Various tests relating to creating repositories, operating # on repositories created with old versions of CVS, etc. - # At the moment local only but that should be changed. + # Because this test is all about -d options and such, it + # at least to some extent needs to be different for remote vs. + # local. if test "x$remote" = "xno"; then # First, if the repository doesn't exist at all... @@ -5092,17 +5315,53 @@ ${testcvs} -d ${TESTDIR}/crerepos release -d CVSROOT >>${LOGFILE}; then fi rm -rf CVS cd .. - # The directory tmp should be empty dotest crerepos-6 "rmdir tmp" '' - # CVS better not create a history file--if the administrator - # doesn't need it and wants to save on disk space, they just - # delete it. - dotest_fail crerepos-7 \ -"test -f ${TESTDIR}/crerepos/CVSROOT/history" '' + else + # For remote, just create the repository. We don't yet do + # the various other tests above for remote but that should be + # changed. + mkdir crerepos + mkdir crerepos/CVSROOT + fi + + if test "x$remote" = "xno"; then + # Test that CVS rejects a relative path in CVSROOT. + mkdir 1; cd 1 + dotest_fail crerepos-6a "${testcvs} -q -d ../crerepos get ." \ +"${PROG} \[[a-z]* aborted\]: CVSROOT ../crerepos must be an absolute pathname" + cd .. + rm -rf 1 + mkdir 1; cd 1 + dotest_fail crerepos-6b "${testcvs} -d crerepos init" \ +"${PROG} \[[a-z]* aborted\]: CVSROOT crerepos must be an absolute pathname" + cd .. + rm -rf 1 + else # remote + # Test that CVS rejects a relative path in CVSROOT. + mkdir 1; cd 1 + dotest_fail crerepos-6a \ +"${testcvs} -q -d :ext:`hostname`:../crerepos get ." \ +"Root ../crerepos must be an absolute pathname" + cd .. + rm -rf 1 + + mkdir 1; cd 1 + dotest_fail crerepos-6b \ +"${testcvs} -d :ext:`hostname`:crerepos init" \ +"Root crerepos must be an absolute pathname" + cd .. + rm -rf 1 fi # end of tests to be skipped for remote + + # CVS better not create a history file--if the administrator + # doesn't need it and wants to save on disk space, they just + # delete it. + dotest_fail crerepos-7 \ +"test -f ${TESTDIR}/crerepos/CVSROOT/history" '' + ;; rcs) @@ -5280,6 +5539,171 @@ add file1 rm -rf first-dir ${CVSROOT_DIRNAME}/first-dir ${TESTDIR}/rcs4.tmp ;; + big) + + # Test ability to operate on big files. Intention is to + # test various realloc'ing code in RCS_deltas, rcsgetkey, + # etc. "big" is currently defined to be 1000 lines (64000 + # bytes), which in terms of files that users will use is not + # large, merely average, but my reasoning is that this + # should be big enough to make sure realloc'ing is going on + # and that raising it a lot would start to stress resources + # on machines which run the tests, without any significant + # benefit. + + mkdir ${CVSROOT_DIRNAME}/first-dir + dotest big-1 "${testcvs} -q co first-dir" '' + cd first-dir + for i in 0 1 2 3 4 5 6 7 8 9; do + for j in 0 1 2 3 4 5 6 7 8 9; do + for k in 0 1 2 3 4 5 6 7 8 9; do + echo \ +"This is line ($i,$j,$k) which goes into the file file1 for testing" >>file1 + done + done + done + dotest big-2 "${testcvs} add file1" \ +"${PROG} [a-z]*: scheduling file .file1. for addition +${PROG} [a-z]*: use .cvs commit. to add this file permanently" + dotest big-3 "${testcvs} -q ci -m add" \ +'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/file1,v +done +Checking in file1; +/tmp/cvs-sanity/cvsroot/first-dir/file1,v <-- file1 +initial revision: 1\.1 +done' + cd .. + rm -rf first-dir + dotest big-4 "${testcvs} -q get first-dir" "U first-dir/file1" + + if test "$keep" = yes; then + echo Keeping /tmp/cvs-sanity and exiting due to --keep + exit 0 + fi + + rm -rf first-dir + rm -rf ${CVSROOT_DIRNAME}/first-dir + ;; + + modes) + # Test repository permissions (CVSUMASK and so on). + # Although the tests in this section "cheat" by testing + # repository permissions, which are sort of not a user-visible + # sort of thing, the modes do have user-visible consequences, + # such as whether a second user can check out the files. But + # it would be awkward to test the consequences, so we don't. + + export -n CVSUMASK # if unset, defaults to 002 + umask 077 + mkdir 1; cd 1 + dotest modes-1 "${testcvs} -q co -l ." '' + mkdir first-dir + dotest modes-2 "${testcvs} add first-dir" \ +"Directory /tmp/cvs-sanity/cvsroot/first-dir added to the repository" + cd first-dir + touch aa + dotest modes-3 "${testcvs} add aa" \ +"${PROG} [a-z]*: scheduling file .aa. for addition +${PROG} [a-z]*: use .cvs commit. to add this file permanently" + dotest modes-4 "${testcvs} -q ci -m add" \ +'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/aa,v +done +Checking in aa; +/tmp/cvs-sanity/cvsroot/first-dir/aa,v <-- aa +initial revision: 1\.1 +done' + dotest modes-5 "ls -l /tmp/cvs-sanity/cvsroot/first-dir/aa,v" \ +"-r--r--r-- .*" + + # Test for whether we can set the execute bit. + chmod +x aa + echo change it >>aa + dotest modes-6 "${testcvs} -q ci -m set-execute-bit" \ +'Checking in aa; +/tmp/cvs-sanity/cvsroot/first-dir/aa,v <-- aa +new revision: 1\.2; previous revision: 1\.1 +done' + # If CVS let us update the execute bit, it would be set here. + # But it doesn't, and as far as I know that is longstanding + # CVS behavior. + dotest modes-7 "ls -l /tmp/cvs-sanity/cvsroot/first-dir/aa,v" \ +"-r--r--r-- .*" + + # OK, now manually change the modes and see what happens. + chmod g=r,o= /tmp/cvs-sanity/cvsroot/first-dir/aa,v + echo second line >>aa + dotest modes-7a "${testcvs} -q ci -m set-execute-bit" \ +"Checking in aa; +${TESTDIR}/cvsroot/first-dir/aa,v <-- aa +new revision: 1\.3; previous revision: 1\.2 +done" + dotest modes-7b "ls -l /tmp/cvs-sanity/cvsroot/first-dir/aa,v" \ +"-r--r----- .*" + + CVSUMASK=007 + export CVSUMASK + touch ab + # Might as well test the execute bit too. + chmod +x ab + dotest modes-8 "${testcvs} add ab" \ +"${PROG} [a-z]*: scheduling file .ab. for addition +${PROG} [a-z]*: use .cvs commit. to add this file permanently" + dotest modes-9 "${testcvs} -q ci -m add" \ +'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/ab,v +done +Checking in ab; +/tmp/cvs-sanity/cvsroot/first-dir/ab,v <-- ab +initial revision: 1\.1 +done' + if test "x$remote" = xyes; then + # The problem here is that the CVSUMASK environment variable + # needs to be set on the server (e.g. .bashrc). This is, of + # course, bogus, but that is the way it is currently. + dotest modes-10 "ls -l /tmp/cvs-sanity/cvsroot/first-dir/ab,v" \ +"-r-xr-x---.*" "-r-xr-xr-x.*" + else + dotest modes-10 "ls -l /tmp/cvs-sanity/cvsroot/first-dir/ab,v" \ +"-r-xr-x---.*" + fi + + # OK, now add a file on a branch. Check that the mode gets + # set the same way (it is a different code path in CVS). + dotest modes-11 "${testcvs} -q tag -b br" 'T aa +T ab' + dotest modes-12 "${testcvs} -q update -r br" '' + touch ac + dotest modes-13 "${testcvs} add ac" \ +"${PROG} [a-z]*: scheduling file .ac. for addition on branch .br. +${PROG} [a-z]*: use .cvs commit. to add this file permanently" + # Not sure it really makes sense to refer to a "previous revision" + # when we are just now adding the file; as far as I know + # that is longstanding CVS behavior, for what it's worth. + dotest modes-14 "${testcvs} -q ci -m add" \ +'RCS file: /tmp/cvs-sanity/cvsroot/first-dir/Attic/ac,v +done +Checking in ac; +/tmp/cvs-sanity/cvsroot/first-dir/Attic/ac,v <-- ac +new revision: 1\.1\.2\.1; previous revision: 1\.1 +done' + if test "x$remote" = xyes; then + # The problem here is that the CVSUMASK environment variable + # needs to be set on the server (e.g. .bashrc). This is, of + # course, bogus, but that is the way it is currently. + dotest modes-15 \ +"ls -l /tmp/cvs-sanity/cvsroot/first-dir/Attic/ac,v" \ +"-r--r--r--.*" + else + dotest modes-15 \ +"ls -l /tmp/cvs-sanity/cvsroot/first-dir/Attic/ac,v" \ +"-r--r-----.*" + fi + + cd ../.. + rm -rf 1 ${TESTDIR}/first-dir + # Perhaps should restore the umask and CVSUMASK. But the other + # tests "should" not care about them... + ;; + *) echo $what is not the name of a test -- ignored ;; diff --git a/gnu/usr.bin/cvs/src/status.c b/gnu/usr.bin/cvs/src/status.c index 7254b1cfb2c..b794a2e43ab 100644 --- a/gnu/usr.bin/cvs/src/status.c +++ b/gnu/usr.bin/cvs/src/status.c @@ -79,7 +79,7 @@ status (argc, argv) send_file_names (argc, argv, SEND_EXPAND_WILD); /* XXX This should only need to send file info; the file contents themselves will not be examined. */ - send_files (argc, argv, local, 0, 0); + send_files (argc, argv, local, 0, 0, 0); send_to_server ("status\012", 0); err = get_responses_and_close (); @@ -127,6 +127,9 @@ status_fileproc (callerdat, finfo) break; #endif case T_CONFLICT: + /* I _think_ that "unresolved" is correct; that if it has + been resolved then the status will change. But I'm not + sure about that. */ sstat = "Unresolved Conflict"; break; case T_ADDED: @@ -137,7 +140,7 @@ status_fileproc (callerdat, finfo) break; case T_MODIFIED: if (vers->ts_conflict) - sstat = "Unresolved Conflict"; + sstat = "File had conflicts on merge"; else sstat = "Locally Modified"; break; diff --git a/gnu/usr.bin/cvs/src/tag.c b/gnu/usr.bin/cvs/src/tag.c index b09979e7d00..cee7aecbbe8 100644 --- a/gnu/usr.bin/cvs/src/tag.c +++ b/gnu/usr.bin/cvs/src/tag.c @@ -156,6 +156,8 @@ cvstag (argc, argv) ign_setup (); + if (!force_tag_match) + send_arg ("-f"); if (local) send_arg("-l"); if (delete_flag) @@ -178,7 +180,7 @@ cvstag (argc, argv) /* FIXME: We shouldn't have to send current files, but I'm not sure whether it works. So send the files -- it's slower but it works. */ - send_files (argc, argv, local, 0, 0); + send_files (argc, argv, local, 0, 0, 0); send_to_server ("tag\012", 0); return get_responses_and_close (); } diff --git a/gnu/usr.bin/cvs/src/version.c b/gnu/usr.bin/cvs/src/version.c index 26d1bd05fc0..f09017c3174 100644 --- a/gnu/usr.bin/cvs/src/version.c +++ b/gnu/usr.bin/cvs/src/version.c @@ -12,7 +12,7 @@ #include "cvs.h" -char *version_string = "\nConcurrent Versions System (CVS) 1.9.2"; +char *version_string = "\nConcurrent Versions System (CVS) 1.9.4"; #ifdef CLIENT_SUPPORT #ifdef SERVER_SUPPORT diff --git a/gnu/usr.bin/cvs/src/watch.c b/gnu/usr.bin/cvs/src/watch.c index 4fedda29c69..51b50fcd10e 100644 --- a/gnu/usr.bin/cvs/src/watch.c +++ b/gnu/usr.bin/cvs/src/watch.c @@ -336,7 +336,7 @@ watch_addremove (argc, argv) /* FIXME: We shouldn't have to send current files, but I'm not sure whether it works. So send the files -- it's slower but it works. */ - send_files (argc, argv, local, 0, 0); + send_files (argc, argv, local, 0, 0, 0); send_to_server (the_args.adding ? "watch-add\012" : "watch-remove\012", 0); @@ -511,7 +511,7 @@ watchers (argc, argv) /* FIXME: We shouldn't have to send current files, but I'm not sure whether it works. So send the files -- it's slower but it works. */ - send_files (argc, argv, local, 0, 0); + send_files (argc, argv, local, 0, 0, 0); send_to_server ("watchers\012", 0); return get_responses_and_close (); } diff --git a/gnu/usr.bin/cvs/vms/ChangeLog b/gnu/usr.bin/cvs/vms/ChangeLog index bd4239d81ff..730bcf18697 100644 --- a/gnu/usr.bin/cvs/vms/ChangeLog +++ b/gnu/usr.bin/cvs/vms/ChangeLog @@ -1,3 +1,16 @@ +Wed Mar 12 16:10:01 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * config.h (HAVE_SETVBUF): Removed; no longer used. + +Wed Jan 29 18:27:41 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * options.h (GREP): Remove; no longer used. + +Tue Jan 28 18:29:03 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * config.h: Remove SIZEOF_INT and SIZEOF_LONG; no longer needed + with lib/md5.c changes. + Thu Jan 2 13:30:56 1997 Jim Kingdon <kingdon@harvey.cyclic.com> * dir.h, filesubr.c, filutils.c, filutils.h, misc.c, misc.h, diff --git a/gnu/usr.bin/cvs/vms/config.h b/gnu/usr.bin/cvs/vms/config.h index d115228e309..4cb79eaba0a 100644 --- a/gnu/usr.bin/cvs/vms/config.h +++ b/gnu/usr.bin/cvs/vms/config.h @@ -89,12 +89,6 @@ /* Define if you have MIT Kerberos version 4 available. */ /* #undef HAVE_KERBEROS */ -/* The number of bytes in a int. */ -#define SIZEOF_INT 4 - -/* The number of bytes in a long. */ -#define SIZEOF_LONG 4 - /* Define if you have the fchmod function. */ /* #undef HAVE_FCHMOD */ @@ -131,9 +125,6 @@ /* Define if you have the putenv function. */ /* #undef HAVE_PUTENV */ -/* Define if you have the setvbuf function. */ -/* #undef HAVE_SETVBUF */ - /* Define if you have the timezone function. */ /* #undef HAVE_TIMEZONE */ diff --git a/gnu/usr.bin/cvs/vms/options.h b/gnu/usr.bin/cvs/vms/options.h index 264bfe146b5..a53091e0aeb 100644 --- a/gnu/usr.bin/cvs/vms/options.h +++ b/gnu/usr.bin/cvs/vms/options.h @@ -55,17 +55,6 @@ #endif /* - * The "grep" program to execute when checking to see if a merged file had - * any conflicts. This "grep" must support a standard basic - * regular expression as an argument. Specify a full pathname if your site - * wants to use a particular grep. - */ - -#ifndef GREP -#define GREP "grep" -#endif - -/* * The "patch" program to run when using the CVS server and accepting * patches across the network. Specify a full pathname if your site * wants to use a particular patch. diff --git a/gnu/usr.bin/cvs/windows-NT/ChangeLog b/gnu/usr.bin/cvs/windows-NT/ChangeLog index c902c92c76f..3ec249be90d 100644 --- a/gnu/usr.bin/cvs/windows-NT/ChangeLog +++ b/gnu/usr.bin/cvs/windows-NT/ChangeLog @@ -1,3 +1,36 @@ +13 Mar 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * filesubr.c (get_homedir): Allocate pathbuf; removes arbitrary + limit. + +Wed Mar 12 16:10:01 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * filesubr.c (get_homedir): Expand comment about HOME + vs. HOMEDRIVE/HOMEPATH. + + * config.h (HAVE_SETVBUF): Removed; no longer used. + +Thu Mar 6 19:46:53 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * README: tab stop setting apparently was under "Editor" in Visual + C++ 2.x but it is under "Tabs" in Visual C++ 4.x. + List number of warnings for regex.c (103, which is actually down + from 121 prior to the change I just made to regex.c). + +Sat Feb 15 15:27:39 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * Makefile.in (dist-dir): Also handle SUBDIRS. + (SUBDIRS): New variable. + +Wed Jan 29 18:28:17 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * config.h, options.h (GREP): Remove; no longer used. + +Tue Jan 28 18:29:03 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * config.h: Remove SIZEOF_INT and SIZEOF_LONG; no longer needed + with lib/md5.c changes. + 1997-01-08 Jim Kingdon * filesubr.c (expand_wild): If we just find a file (that diff --git a/gnu/usr.bin/cvs/windows-NT/Makefile.in b/gnu/usr.bin/cvs/windows-NT/Makefile.in index 76d7760c59f..1798db912ee 100644 --- a/gnu/usr.bin/cvs/windows-NT/Makefile.in +++ b/gnu/usr.bin/cvs/windows-NT/Makefile.in @@ -33,6 +33,8 @@ SOURCES = \ DISTFILES = ${HEADERS} ${SOURCES} \ README ChangeLog Makefile.in .cvsignore +SUBDIRS=SCC + all: .PHONY: all install uninstall @@ -63,6 +65,9 @@ dist-dir: for i in ${DISTFILES}; do \ ln $(srcdir)/$${i} ${DISTDIR}; \ done + for i in ${SUBDIRS}; do \ + cd $${i}; ${MAKE} dist-dir DISTDIR="../${DISTDIR}/$${i}"; \ + done clean: @echo make clean does nothing in windows-NT subdir diff --git a/gnu/usr.bin/cvs/windows-NT/README b/gnu/usr.bin/cvs/windows-NT/README index b86a28601d4..f4115e9f7d2 100644 --- a/gnu/usr.bin/cvs/windows-NT/README +++ b/gnu/usr.bin/cvs/windows-NT/README @@ -77,17 +77,19 @@ Here are some other things which may be of interest for unix junkies: http://www.halcyon.com/gvr/vim/ (VI clone) ftp://wuarchive.wustl.edu/systems/ibmpc/gnuish/less177.zip +If you want to browse/edit the sources using Visual C++, we recommend +setting tab stops to 8 spaces, since that is what the CVS sources +expect. The tab stop setting is in the "Editor" or "Tabs" section of +the "Options..." dialog which is in the "Tools..." menu. + The following harmless warnings are known: -- regex.c: These are signed/unsigned comparison conflicts. I am not - going to *touch* this code. :-) I got my fill of it when I was +- regex.c: 103 warnings, mostly signed/unsigned comparison conflicts. + I am not going to *touch* this code. :-) I got my fill of it when I was hacking GNU Emacs. + .\lib\getdate.c(760) : warning C4013: 'getdate_yyparse' undefined; assuming extern returning int .\lib\getdate.c(1612) : warning C4102: 'yyerrlab' : unreferenced label .\lib\getdate.c(1612) : warning C4102: 'yynewstate' : unreferenced label -If you want to browse/edit the sources using Visual C++, we recommend -setting tab stops to 8 spaces, since that is what the CVS sources -expect. The tab stop setting is in the "Editor" section of the "Options..." -dialog which is in the "Tools..." menu. diff --git a/gnu/usr.bin/cvs/windows-NT/SCC/.cvsignore b/gnu/usr.bin/cvs/windows-NT/SCC/.cvsignore new file mode 100644 index 00000000000..fa65c0961ea --- /dev/null +++ b/gnu/usr.bin/cvs/windows-NT/SCC/.cvsignore @@ -0,0 +1,3 @@ +SCC.mdp +SCC.ncb +Debug diff --git a/gnu/usr.bin/cvs/windows-NT/SCC/ChangeLog b/gnu/usr.bin/cvs/windows-NT/SCC/ChangeLog new file mode 100644 index 00000000000..5b3ca835f1e --- /dev/null +++ b/gnu/usr.bin/cvs/windows-NT/SCC/ChangeLog @@ -0,0 +1,52 @@ +14 Mar 1997 Jim Kingdon + + * scc.c: Go back to using debuglog not outproc for + most debugging messages. Developer Studio tends to + erase the outproc messages on an error. + More playing around with projects. + * README.txt: Describe results of this. I am making + grey (source controlled) file icons appear, which is + exciting. + +4 Mar 1997 Jim Kingdon + + Still some distance from being able to open a + project, but that's what I'm playing with: + * scc.c (SccOpenProject): Use outproc not debuglog + for debugging messages. + (SccGet): Add debugging messages. + (SccAddFromScc): Implemented. + (SccInitialize): Return AddFromScc in capabilities. + * scc.c: Change out_proc to outproc for consistency. + +2 Mar 1997 Jim Kingdon + + * scc.c: Add a bunch of things, to SccOpenProject, + SccGetProjPath, and perhaps elsewhere. The project + stuff doesn't really work yet, but the outproc does. + +27 Feb 1997 Jim Kingdon + + * scc.c (SCC_max_init_path, SCC_max_name): Added. + (SccInitialize): Set and use more arguments. + (SccUninitialize): Might want to check ferror here. + (SccOpenProject): Print to debug log if we get here. + +Thu Feb 27 19:02:50 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * README.txt (TOOLS IMPLEMENTING THE SCC): New section. + +Wed Feb 26 22:55:43 1997 David H. Hovemeyer <Hovemeyer_D@mediasoft.net> + and Jim Kingdon <kingdon@harvey.cyclic.com> + + * scc.c (SccGetVersion): Return the version number of the SCC + spec; we don't get to pick what to return here. + * README.txt: Update with current status. + +Sat Feb 15 15:19:41 1997 Jim Kingdon <kingdon@harvey.cyclic.com> + + * Makefile.in: New file. + + * README.txt: Clarify a little more what this stuff does (and more + the point, does not) do. + diff --git a/gnu/usr.bin/cvs/windows-NT/SCC/Makefile.in b/gnu/usr.bin/cvs/windows-NT/SCC/Makefile.in new file mode 100644 index 00000000000..9b1f59428a1 --- /dev/null +++ b/gnu/usr.bin/cvs/windows-NT/SCC/Makefile.in @@ -0,0 +1,39 @@ +# Makefile for distributing files. Note that it only has a dist-dir +# target, so other targets should not recurse into this directory. +# This makefile is in the public domain. + +#### Start of system configuration section. #### + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +# Just in case... +SHELL = /bin/sh +@SET_MAKE@ + +DISTFILES = \ + .cvsignore ChangeLog Makefile.in README.txt \ + SCC.mak scc.c scc.def + +all: +.PHONY: all + +dist-dir: ${DISTFILES} + mkdir ${DISTDIR} + for i in ${DISTFILES}; do \ + ln $(srcdir)/$${i} ${DISTDIR}; \ + done +.PHONY: dist-dir + +subdir = windows-NT/SCC +Makefile: ../../config.status Makefile.in + cd ../.. && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status + +# CYGNUS LOCAL: don't depend on auto-re-config +#../config.status: ../configure +# cd .. ; $(SHELL) config.status --recheck + +# CYGNUS LOCAL: don't depend on auto-re-config +#../configure: ../configure.in +# cd $(top_srcdir) ; autoconf diff --git a/gnu/usr.bin/cvs/windows-NT/SCC/README.txt b/gnu/usr.bin/cvs/windows-NT/SCC/README.txt new file mode 100644 index 00000000000..bc8cc76c6c3 --- /dev/null +++ b/gnu/usr.bin/cvs/windows-NT/SCC/README.txt @@ -0,0 +1,66 @@ +This is an experimental attempt to interface to the SCC API. + +Note that this code doesn't (yet) do anything useful; this file +is currently for people who want to help hack on our SCC interface, +not people who want to use it. + +To install it, build scc.dll and then add the following +to the registry using the registry editor: + +key/value what to put there +HKEY_LOCAL_MACHINE + SOFTWARE + CVS + CVS + SCCServerName Concurrent Versions System + SCCServerPath <full pathname of scc.dll> + SourceCodeControlProvider + ProviderRegKey "SOFTWARE\CVS\CVS" + InstalledSCCProviders + Concurrent Versions System "SOFTWARE\CVS\CVS" + +Note that ProviderRegKey is the default source control +system, and InstalledSCCProviders list _all_ installed +source control systems. A development environment is allowed +to use either or both, so you should set both of them. + +Note also that we are using "CVS" as the supplier of CVS. +CVS is not owned by any one company, so CVS seems like the +most appropriate string to put there. + +If you do this right, then "Source Control" should appear +under the "Tools" menu. + +NOW WHAT? + +Well, I haven't yet figured out _all_ the different ways +that projects work at the SCC level. But here is what I +have done which has worked. SPECIAL NOTE: many paths are +hardcoded in scc.c, so you will need to fix that or put +things the same place I did. As you try the following you +will want to follow along in d:\debug.scc. + +* Create a dummy project in d:\sccwork. +* On the Tools/Source Control menu, select "Share from CVS..." +* This will cause SccAddFromScc to be called, which will + claim there are two files, foo.c and bar.c, which should + appear as source controlled (grey) files in the file + listing. +* Now select one of the files and pick "Get Latest Version..." + from Tools/Source Control. You'll get a cheezy dialog (we + need to see why it is cheezy--by that I mean the size and + placement are funny), and if you say OK, then SccGet will + get called (which doesn't currently do anything). + +TOOLS IMPLEMENTING THE SCC + +I'm not sure whether we'll want to try to make this a comprehensive +list, but at least for the moment it seems worthwhile to list a few of +the programs which implement the Integrated Development Environment +(IDE) side of the SCC. Some of this information is based on rumor or, +worse yet, usenet posting, so it probably should be verified before +relying on it. + +* Microsoft Developer Studio 4.x Professional (not Standard, not 2.x) +* Powersoft's Optima++ +* CodeWright editor diff --git a/gnu/usr.bin/cvs/windows-NT/SCC/SCC.mak b/gnu/usr.bin/cvs/windows-NT/SCC/SCC.mak new file mode 100644 index 00000000000..ef4da647699 --- /dev/null +++ b/gnu/usr.bin/cvs/windows-NT/SCC/SCC.mak @@ -0,0 +1,216 @@ +# Microsoft Developer Studio Generated NMAKE File, Format Version 40001 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +!IF "$(CFG)" == "" +CFG=SCC - Win32 Debug +!MESSAGE No configuration specified. Defaulting to SCC - Win32 Debug. +!ENDIF + +!IF "$(CFG)" != "SCC - Win32 Release" && "$(CFG)" != "SCC - Win32 Debug" +!MESSAGE Invalid configuration "$(CFG)" specified. +!MESSAGE You can specify a configuration when running NMAKE on this makefile +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "SCC.mak" CFG="SCC - Win32 Debug" +!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 +!ERROR An invalid configuration is specified. +!ENDIF + +!IF "$(OS)" == "Windows_NT" +NULL= +!ELSE +NULL=nul +!ENDIF +################################################################################ +# Begin Project +# PROP Target_Last_Scanned "SCC - Win32 Debug" +CPP=cl.exe +RSC=rc.exe +MTL=mktyplib.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 "" +OUTDIR=.\Release +INTDIR=.\Release + +ALL : "$(OUTDIR)\SCC.dll" + +CLEAN : + -@erase ".\Release\SCC.dll" + -@erase ".\Release\scc.obj" + -@erase ".\Release\SCC.lib" + -@erase ".\Release\SCC.exp" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +# 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 /c +CPP_PROJ=/nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\ + /Fp"$(INTDIR)/SCC.pch" /YX /Fo"$(INTDIR)/" /c +CPP_OBJS=.\Release/ +CPP_SBRS= +# ADD BASE MTL /nologo /D "NDEBUG" /win32 +# ADD MTL /nologo /D "NDEBUG" /win32 +MTL_PROJ=/nologo /D "NDEBUG" /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/SCC.bsc" +BSC32_SBRS= +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem: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 +LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ + advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\ + /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)/SCC.pdb" /machine:I386\ + /def:".\scc.def" /out:"$(OUTDIR)/SCC.dll" /implib:"$(OUTDIR)/SCC.lib" +DEF_FILE= \ + ".\scc.def" +LINK32_OBJS= \ + "$(INTDIR)/scc.obj" + +"$(OUTDIR)\SCC.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!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 "" +OUTDIR=.\Debug +INTDIR=.\Debug + +ALL : "$(OUTDIR)\SCC.dll" + +CLEAN : + -@erase ".\Debug\vc40.pdb" + -@erase ".\Debug\vc40.idb" + -@erase ".\Debug\SCC.dll" + -@erase ".\Debug\scc.obj" + -@erase ".\Debug\SCC.ilk" + -@erase ".\Debug\SCC.lib" + -@erase ".\Debug\SCC.exp" + -@erase ".\Debug\SCC.pdb" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +# 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 /c +CPP_PROJ=/nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\ + /Fp"$(INTDIR)/SCC.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c +CPP_OBJS=.\Debug/ +CPP_SBRS= +# ADD BASE MTL /nologo /D "_DEBUG" /win32 +# ADD MTL /nologo /D "_DEBUG" /win32 +MTL_PROJ=/nologo /D "_DEBUG" /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +BSC32_FLAGS=/nologo /o"$(OUTDIR)/SCC.bsc" +BSC32_SBRS= +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem: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 +LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ + advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\ + /subsystem:windows /dll /incremental:yes /pdb:"$(OUTDIR)/SCC.pdb" /debug\ + /machine:I386 /def:".\scc.def" /out:"$(OUTDIR)/SCC.dll"\ + /implib:"$(OUTDIR)/SCC.lib" +DEF_FILE= \ + ".\scc.def" +LINK32_OBJS= \ + "$(INTDIR)/scc.obj" + +"$(OUTDIR)\SCC.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ENDIF + +.c{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_OBJS)}.obj: + $(CPP) $(CPP_PROJ) $< + +.c{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cpp{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +.cxx{$(CPP_SBRS)}.sbr: + $(CPP) $(CPP_PROJ) $< + +################################################################################ +# Begin Target + +# Name "SCC - Win32 Release" +# Name "SCC - Win32 Debug" + +!IF "$(CFG)" == "SCC - Win32 Release" + +!ELSEIF "$(CFG)" == "SCC - Win32 Debug" + +!ENDIF + +################################################################################ +# Begin Source File + +SOURCE=.\scc.c + +"$(INTDIR)\scc.obj" : $(SOURCE) "$(INTDIR)" + + +# End Source File +################################################################################ +# Begin Source File + +SOURCE=.\scc.def + +!IF "$(CFG)" == "SCC - Win32 Release" + +!ELSEIF "$(CFG)" == "SCC - Win32 Debug" + +!ENDIF + +# End Source File +# End Target +# End Project +################################################################################ diff --git a/gnu/usr.bin/cvs/windows-NT/SCC/scc.c b/gnu/usr.bin/cvs/windows-NT/SCC/scc.c new file mode 100644 index 00000000000..6815208f357 --- /dev/null +++ b/gnu/usr.bin/cvs/windows-NT/SCC/scc.c @@ -0,0 +1,486 @@ +/* This file was written by Jim Kingdon, and is hereby placed + in the public domain. */ + +#include <Wtypes.h> +#include <stdio.h> +#include <direct.h> /* For chdir */ + + +/* Bits of the interface. + For paranoia's sake, I'm not using the same names as Microsoft. + I don't imagine copying a few names could be a credible copyright + case, but it seems safer to stick to only what is necessary for + the interface to work. */ +typedef long SCC_return; +#define SCC_return_success 0 +#define SCC_return_unknown_project -2 +#define SCC_return_not_supported -14 +#define SCC_return_non_specific_error -15 +enum SCC_command +{ + SCC_command_get, + SCC_command_checkout, + SCC_command_checkin, + SCC_command_uncheckout, + SCC_command_add, + SCC_command_remove, + SCC_command_diff, + SCC_command_history, + SCC_command_rename, + SCC_command_properties, + SCC_command_options +}; + +/* Outproc codes, for second argument to outproc. */ +#define SCC_outproc_info 1 +#define SCC_outproc_warning 2 +#define SCC_outproc_error 3 +typedef long (*SCC_outproc) (char *, long); + +typedef BOOL (*SCC_popul_proc) (LPVOID callerdat, BOOL add_keep, + LONG status, LPCSTR file); + +/* Maximum sizes of various strings. These are arbitrary limits + which are imposed by the SCC. */ +/* Name argument to SccInitialize. */ +#define SCC_max_name 31 +/* Path argument to SccInitialize. */ +#define SCC_max_init_path 31 +/* Various paths many places in the interface. */ +#include <stdlib.h> +#define SCC_max_path _MAX_PATH + +/* Bits to set in the caps used by SccInitialize. */ +#define SCC_cap_GetProjPath 0x200L +#define SCC_cap_AddFromScc 0x400L +#define SCC_cap_want_outproc 0x8000L + +/* Flags for SccGet. */ +#define SCC_RECURSE 2L +/* This means to get all the files in a directory. */ +#define SCC_DIR 1L + + +/* We get to put whatever we want here, and the caller will pass it + to us, so we don't need any global variables. */ +struct context { + FILE *debuglog; + /* Value of the CVSROOT we are currently working with (that is, the + "open project" in SCC terminology), malloc'd, or NULL if there is + no project currently open. */ + char *root; + /* Local directory (working directory in CVS parlance). */ + char *local; + SCC_outproc outproc; +}; + +#include <windows.h> + +/* Report a malloc error and return the SCC_return_* value which the + caller should return to the IDE. Probably this should be getting + the window argument too, but for the moment we don't need it. + Note that we only use this for errors which occur after the + context->outproc is set up. */ +SCC_return +malloc_error (struct context *context) +{ + (*context->outproc) ("Out of memory\n", SCC_outproc_error); + return SCC_return_non_specific_error; +} + +/* Return the version of the SCC spec, major version in the high word, + minor version in the low word. */ +LONG +SccGetVersion () +{ + /* We implement version 1.1 of the spec. */ + return 0x10001; +} + +SCC_return +SccInitialize (void **contextp, HWND window, LPSTR caller, LPSTR name, + LPLONG caps, LPSTR path, LPDWORD co_comment_len, + LPDWORD comment_len) +{ + struct context *context; + FILE *fp; + fp = fopen ("d:\\debug.scc", "w"); + if (fp == NULL) + /* Do what? Return some error value? */ + abort (); + context = malloc (sizeof (struct context)); + if (context == NULL) + { + fprintf (fp, "Out of memory\n"); + fclose (fp); + /* Do what? Return some error? */ + abort (); + } + context->debuglog = fp; + context->root = NULL; + *contextp = context; + fprintf (fp, "Made it into SccInitialize!\n"); + *caps = (SCC_cap_GetProjPath + | SCC_cap_AddFromScc + | SCC_cap_want_outproc); + + /* I think maybe this should have some more CVS-like + name, like "CVS Root", if we decide that is what + a SCC "project" is. */ + strncpy (path, "CVS Project:", SCC_max_init_path); + fprintf (fp, "Caller name is %s\n", caller); + strncpy (name, "CVS", SCC_max_name); + /* CVS has no limit on comment length. But I suppose + we need to return a value which is small enough for + a caller to allocate a buffer this big. Not that I + would write a caller that way, but..... */ + *co_comment_len = 8192; + *comment_len = 8192; + fflush (fp); + return SCC_return_success; +} + +SCC_return +SccUninitialize (void *context_arg) +{ + struct context *context = (struct context *)context_arg; + if (ferror (context->debuglog)) + /* FIXME: return error value... */ + if (fclose (context->debuglog) == EOF) + /* FIXME: return error value, I think. */ + ; + free (context); + return SCC_return_success; +} + +SCC_return +SccOpenProject (void *context_arg, HWND window, LPSTR user, + LPSTR project, LPSTR local_proj, LPSTR aux_proj, + LPSTR comment, SCC_outproc outproc, LONG flags) +{ + struct context *context = (struct context *)context_arg; + + /* This can happen if the IDE opens a project which is not under + CVS control. I'm not sure whether checking for aux_proj + being "" is the right way to detect this case, but it seems + it should work because I think that the source code control + system is what has control over the contents of aux_proj. */ + if (aux_proj[0] == '\0') + return SCC_return_unknown_project; + + context->root = malloc (strlen (aux_proj) + 5); + if (context->root == NULL) + return SCC_return_non_specific_error; + strcpy (context->root, aux_proj); + /* Since we don't yet support creating projects, we don't + do anything with flags. */ + + if (outproc == 0) + { + /* This supposedly can happen if the IDE chooses not to implement + the outproc feature. */ + fprintf (context->debuglog, "Uh oh. outproc is a null pointer\n"); + context->root = NULL; + fflush (context->debuglog); + return SCC_return_non_specific_error; + } + context->outproc = outproc; + + fprintf (context->debuglog, "SccOpenProject (aux_proj=%s)\n", aux_proj); + + context->local = malloc (strlen (local_proj) + 5); + if (context->local == NULL) + return malloc_error (context); + strcpy (context->local, local_proj); + + fflush (context->debuglog); + return SCC_return_success; +} + +SCC_return +SccCloseProject (void *context_arg) +{ + struct context *context = (struct context *)context_arg; + fprintf (context->debuglog, "SccCloseProject\n"); + fflush (context->debuglog); + if (context->root != NULL) + free (context->root); + context->root = NULL; + return SCC_return_success; +} + +/* cvs get. */ +SCC_return +SccGet (void *context_arg, HWND window, LONG num_files, + LPSTR *file_names, LONG options, void *prov_options) +{ + struct context *context = (struct context *)context_arg; + int i; + char *fname; + + fprintf (context->debuglog, "SccGet: %d; files:", num_files); +#if 1 + for (i = 0; i < num_files; ++i) + { + fprintf (context->debuglog, "%s ", file_names[i]); + } +#endif + fprintf (context->debuglog, "\n"); + if (options & SCC_DIR) + fprintf (context->debuglog, " Get all\n"); + /* Should be using this flag to set -R vs. -l. */ + if (options & SCC_RECURSE) + fprintf (context->debuglog, " recurse\n"); + + for (i = 0; i < num_files; ++i) + { + FILE *fp; + + /* As with all file names passed to us by the SCC, these + file names are absolute pathnames. I think they will + tend to be paths within context->local, although I + don't know whether there are any exceptions to that. */ + fname = file_names[i]; + fprintf (context->debuglog, "%s ", fname); +#if 0 + fp = fopen (fname, "w"); +#endif + } + fprintf (context->debuglog, "\nExiting SccGet\n"); + fflush (context->debuglog); + return SCC_return_success; +} + +/* cvs edit. */ +SCC_return +SccCheckout (void *context_arg, HWND window, LONG num_files, + LPSTR *file_names, LPSTR comment, LONG options, + void *prov_options) +{ + return SCC_return_not_supported; +} + +/* cvs ci. */ +SCC_return +SccCheckin (void *context_arg, HWND window, LONG num_files, + LPSTR *file_names, LPSTR comment, LONG options, + void *prov_options) +{ + return SCC_return_not_supported; +} + +/* cvs unedit. */ +SCC_return +SccUncheckout (void *context_arg, HWND window, LONG num_files, + LPSTR *file_names, LONG options, void *prov_options) +{ + return SCC_return_not_supported; +} + +/* cvs add + cvs ci, more or less, I think (but see also + the "keep checked out" flag in options). */ +SCC_return +SccAdd (void *context_arg, HWND window, LONG num_files, + LPSTR *file_names, LPSTR comment, LONG *options, + void *prov_options) +{ + return SCC_return_not_supported; +} + +/* cvs rm -f + cvs ci, I think. Should barf if SCC_REMOVE_KEEP + (or maybe just put the file there, as if the user had removed + it and then done a "copy <saved-file> <filename>". */ +SCC_return +SccRemove (void *context_arg, HWND window, LONG num_files, + LPSTR *file_names, LPSTR comment, LONG options, + void *prov_options) +{ + return SCC_return_not_supported; +} + +/* mv, cvs add, cvs rm, and cvs ci, I think. */ +SCC_return +SccRename (void *context_arg, HWND window, LPSTR old_name, + LPSTR new_name) +{ + return SCC_return_not_supported; +} + +/* If "contents flag", then implement this ourself. For no + args or checksum (which we fall back to full compare) basically a + call to No_Diff or ? in the client case. For timestamp, just a + Classify_File. Now, if contents not set, then want to do a + cvs diff, and preferably start up WinDiff or something (to be + determined, for now perhaps could just shove in the text). */ +SCC_return +SccDiff (void *context_arg, HWND window, LPSTR file_name, + LONG options, void *prov_options) +{ + return SCC_return_not_supported; +} + +/* cvs log, I presume. If we want to get fancier we could bring + up a screen more analogous to the tkCVS log window, let the user + do "cvs update -r", etc. */ +SCC_return +SccHistory (void *context_arg, HWND window, LONG num_files, + LPSTR file_names, LONG options, void *prov_options) +{ + return SCC_return_not_supported; +} + +/* cvs status, presumably. */ +SCC_return +SccProperties (void *context_arg, HWND window, LPSTR file_name) +{ + return SCC_return_not_supported; +} + +/* Not sure what this should do. The most obvious thing is some + kind of front-end to "cvs admin" but I'm not actually sure that + is the most useful thing. */ +SCC_return +SccRunScc (void *context_arg, HWND window, LONG num_files, + LPSTR *file_names) +{ + return SCC_return_not_supported; +} + +/* Lots of things that we could do here. Options to get/update + such as -r -D -k etc. just for starters. */ +SCC_return +SccGetCommandOptions (void *context_arg, HWND window, + enum SCC_command command, + void **prov_optionsp) +{ + return SCC_return_not_supported; +} + +/* Not existing CVS functionality, I don't think. + Need to be able to tell user about what files + are out there without actually getting them. */ +SCC_return +SccPopulateList (void *context_arg, enum SCC_command command, + LONG num_files, + LPSTR *file_names, SCC_popul_proc populate, + void *callerdat, LONG options) +{ + return SCC_return_success; +} + +/* cvs status, sort of. */ +SCC_return +SccQueryInfo (void *context_arg, LONG num_files, LPSTR *file_names, + LPLONG status) +{ + return SCC_return_not_supported; +} + +SCC_return +SccGetEvents (void *context_arg, LPSTR file_name, LPLONG status, + LPLONG events_remaining) +{ + /* They say this is supposed to only return cached status + information, not go to disk or anything. OK, although I + haven't really figured out what calls would cause us to + cache status without returning it then. */ + return SCC_return_success; +} + +/* This is where the user gives us the CVSROOT. */ +SCC_return +SccGetProjPath (void *context_arg, HWND window, LPSTR user, + LPSTR proj_name, LPSTR local_proj, LPSTR aux_proj, + BOOL allow_change, BOOL *new) +{ + /* For now we just hardcode the CVSROOT. In the future we will + of course prompt the user for it (simple implementation would + have them supply a string; potentially better implementation + would have menus or something for access methods and so on, + although it might also have a way of bypassing that in case + CVS supports new features that the GUI code doesn't + understand). We probably will also at some point want a + "project" to encompass both a CVSROOT and a directory or + module name within that CVSROOT, but we don't try to handle + that yet either. We also will want to be able to use "user" + instead of having the username encoded in the aux_proj or + proj_name, probably. */ + + struct context *context = (struct context *)context_arg; + fprintf (context->debuglog, "SccGetProjPath called\n"); + + /* At least for now we leave the proj_name alone, and just use + the aux_proj. */ + strncpy (proj_name, "zwork", SCC_max_path); + strncpy (aux_proj, ":server:harvey:/home/kingdon/zwork/cvsroot", + SCC_max_path); + if (local_proj[0] == '\0' && allow_change) + strncpy (local_proj, "d:\\sccwork", SCC_max_path); + /* I don't think I saw anything in the spec about this, + but let's see if it helps. */ + if (_chdir (local_proj) < 0) + fprintf (context->debuglog, "Error in chdir: %s", strerror (errno)); + + if (*new) + /* It is OK for us to prompt the user for creating a new + project. */ + /* We will say that the user said to create a new one. */ + *new = 1; + + fflush (context->debuglog); + return SCC_return_success; +} + +/* Pretty much similar to SccPopulateList. */ +SCC_return +SccAddFromScc (void *context_arg, HWND window, LONG *files, + char ***file_names) +{ + struct context *context = (struct context *)context_arg; + + /* For now we have hardcoded the notion that there are two files, + foo.c and bar.c. */ +#define NUM_FILES 2 + if (files == NULL) + { + char **p; + + /* This means to free the memory that is allocated for + file_names. */ + for (p = *file_names; *p != NULL; ++p) + { + fprintf (context->debuglog, "Freeing %s\n", *p); + free (*p); + } + } + else + { + *file_names = malloc ((NUM_FILES + 1) * sizeof (char **)); + if (*file_names == NULL) + return malloc_error (context); + (*file_names)[0] = malloc (80); + if ((*file_names)[0] == NULL) + return malloc_error (context); + strcpy ((*file_names)[0], "foo.c"); + (*file_names)[1] = malloc (80); + if ((*file_names)[1] == NULL) + return malloc_error (context); + strcpy ((*file_names)[1], "bar.c"); + (*file_names)[2] = NULL; + *files = 2; + + /* Are we supposed to also Get the files? Or is the IDE + next going to call SccGet on each one? The spec doesn't + say explicitly. */ + } + fprintf (context->debuglog, "Success in SccAddFromScc\n"); + fflush (context->debuglog); + return SCC_return_success; +} + +/* This changes several aspects of how we interact with the IDE. */ +SCC_return +SccSetOption (void *context_arg, LONG option, LONG val) +{ + return SCC_return_success; +} diff --git a/gnu/usr.bin/cvs/windows-NT/SCC/scc.def b/gnu/usr.bin/cvs/windows-NT/SCC/scc.def new file mode 100644 index 00000000000..cf4eded511e --- /dev/null +++ b/gnu/usr.bin/cvs/windows-NT/SCC/scc.def @@ -0,0 +1,25 @@ +LIBRARY SCC +EXPORTS + SccInitialize @1 + SccUninitialize @2 + SccOpenProject @3 + SccCloseProject @4 + SccGet @5 + SccCheckout @6 + SccUncheckout @7 + SccCheckin @8 + SccAdd @9 + SccRemove @10 + SccRename @11 + SccDiff @12 + SccHistory @13 + SccProperties @14 + SccRunScc @15 + SccGetCommandOptions @16 + SccQueryInfo @17 + SccGetEvents @18 + SccGetProjPath @19 + SccPopulateList @20 + SccAddFromScc @21 + SccSetOption @22 + SccGetVersion @23 diff --git a/gnu/usr.bin/cvs/windows-NT/config.h b/gnu/usr.bin/cvs/windows-NT/config.h index 736390a7b4b..abcf0189597 100644 --- a/gnu/usr.bin/cvs/windows-NT/config.h +++ b/gnu/usr.bin/cvs/windows-NT/config.h @@ -104,16 +104,6 @@ /* We don't need this for CLIENT side. */ #undef DIFF -/* the path to the gnu grep program on your system */ -/* We don't need this for CLIENT side. */ -#undef GREP - -/* The number of bytes in a int. */ -#define SIZEOF_INT 4 - -/* The number of bytes in a long. */ -#define SIZEOF_LONG 4 - /* Define if you have the connect function. */ /* Not used? */ #define HAVE_CONNECT @@ -145,9 +135,6 @@ /* Define if you have the putenv function. */ #define HAVE_PUTENV 1 -/* Define if you have the setvbuf function. */ -#define HAVE_SETVBUF 1 - /* Define if you have the sigaction function. */ #undef HAVE_SIGACTION diff --git a/gnu/usr.bin/cvs/windows-NT/filesubr.c b/gnu/usr.bin/cvs/windows-NT/filesubr.c index 7ab5814d0f5..da5a3c86230 100644 --- a/gnu/usr.bin/cvs/windows-NT/filesubr.c +++ b/gnu/usr.bin/cvs/windows-NT/filesubr.c @@ -831,27 +831,43 @@ convert_file (char *infile, int inflags, when combined as ${HOMEDRIVE}${HOMEPATH}, give the unix equivalent of HOME. Some NT users are just too unixy, though, and set the HOME variable themselves. Therefore, we check for HOME first, and - then try to combine the other two if that fails. */ + then try to combine the other two if that fails. + + Looking for HOME strikes me as bogus, particularly if the only reason + is to cater to "unixy users". On the other hand, if the reasoning is + there should be a single variable, rather than requiring people to + set both HOMEDRIVE and HOMEPATH, then it starts to make a little more + sense. + + Win95: The system doesn't set HOME, HOMEDRIVE, or HOMEPATH (at + least if you set it up as the "all users under one user ID" or + whatever the name of that option is). Based on thing overheard on + the net, it seems that users of the pserver client have gotten in + the habit of setting HOME (if you don't use pserver, you can + probably get away without having a reasonable return from + get_homedir. Of course you lose .cvsrc and .cvsignore, but many + users won't notice). So it would seem that we should be somewhat + careful if we try to change the current behavior. + + NT 3.51 or NT 4.0: I haven't checked this myself, but I am told + that HOME gets set, but not to the user's home directory. It is + said to be set to c:\users\default by default. */ char * get_homedir () { - static char pathbuf[PATH_MAX * 2]; + static char *pathbuf; char *hd, *hp; - if ((hd = getenv ("HOME"))) + if (pathbuf != NULL) + return pathbuf; + else if ((hd = getenv ("HOME"))) return hd; else if ((hd = getenv ("HOMEDRIVE")) && (hp = getenv ("HOMEPATH"))) { - /* Watch for buffer overruns. */ - -#define cvs_min(x,y) ((x <= y) ? (x) : (y)) - - int ld = cvs_min (PATH_MAX, strlen (hd)); - int lp = cvs_min (PATH_MAX, strlen (hp)); - - strncpy (pathbuf, hd, ld); - strncpy (pathbuf + ld, hp, lp); + pathbuf = xmalloc (strlen (hd) + strlen (hp) + 5); + strcpy (pathbuf, hd); + strcat (pathbuf, hp); return pathbuf; } diff --git a/gnu/usr.bin/cvs/windows-NT/options.h b/gnu/usr.bin/cvs/windows-NT/options.h index b9bba3ffc3a..33103dda051 100644 --- a/gnu/usr.bin/cvs/windows-NT/options.h +++ b/gnu/usr.bin/cvs/windows-NT/options.h @@ -55,17 +55,6 @@ #endif /* - * The "grep" program to execute when checking to see if a merged file had - * any conflicts. This "grep" must support the "-s" option and a standard - * regular expression as an argument. Specify a full pathname if your site - * wants to use a particular grep. - */ - -#ifndef GREP -#define GREP "grep" -#endif - -/* * The "patch" program to run when using the CVS server and accepting * patches across the network. Specify a full pathname if your site * wants to use a particular patch. |