summaryrefslogtreecommitdiff
path: root/gnu/usr.bin
diff options
context:
space:
mode:
authorThorsten Lockert <tholo@cvs.openbsd.org>1999-09-10 05:21:34 +0000
committerThorsten Lockert <tholo@cvs.openbsd.org>1999-09-10 05:21:34 +0000
commit266781f9b0960e70692e00339adb15dbb50d8071 (patch)
treeb04cdee1e040fbea0fd52fdbf3bc13c5ba0e5c40 /gnu/usr.bin
parent9c8d611dcb7b2503e40f35cdee447fd422c8d895 (diff)
Integrate local changes
Diffstat (limited to 'gnu/usr.bin')
-rw-r--r--gnu/usr.bin/cvs/Makefile.in4
-rw-r--r--gnu/usr.bin/cvs/configure4
-rw-r--r--gnu/usr.bin/cvs/configure.in2
-rw-r--r--gnu/usr.bin/cvs/diff/Makefile.in3
-rw-r--r--gnu/usr.bin/cvs/macintosh/AE_example.pl95
-rw-r--r--gnu/usr.bin/cvs/macintosh/ChangeLog190
-rw-r--r--gnu/usr.bin/cvs/macintosh/MacCVS68k.sit.hqx179
-rw-r--r--gnu/usr.bin/cvs/macintosh/MacCVSPPC.sit.hqx209
-rw-r--r--gnu/usr.bin/cvs/macintosh/Makefile.in66
-rw-r--r--gnu/usr.bin/cvs/macintosh/README.MacCVS125
-rw-r--r--gnu/usr.bin/cvs/macintosh/ae_if.c423
-rw-r--r--gnu/usr.bin/cvs/macintosh/config.h136
-rw-r--r--gnu/usr.bin/cvs/macintosh/filesubr.c707
-rw-r--r--gnu/usr.bin/cvs/macintosh/mac_config.h15
-rw-r--r--gnu/usr.bin/cvs/macintosh/mac_init.c71
-rw-r--r--gnu/usr.bin/cvs/macintosh/maccvs.pch7
-rw-r--r--gnu/usr.bin/cvs/macintosh/maccvs.r52
-rw-r--r--gnu/usr.bin/cvs/macintosh/macos_filesys.c211
-rw-r--r--gnu/usr.bin/cvs/macintosh/options.h273
-rw-r--r--gnu/usr.bin/cvs/macintosh/pwd.c65
-rw-r--r--gnu/usr.bin/cvs/macintosh/pwd.h37
-rw-r--r--gnu/usr.bin/cvs/macintosh/rcmd.c247
-rw-r--r--gnu/usr.bin/cvs/macintosh/run.c19
-rw-r--r--gnu/usr.bin/cvs/macintosh/server_if.c63
-rw-r--r--gnu/usr.bin/cvs/macintosh/services91
-rw-r--r--gnu/usr.bin/cvs/src/commit.c5
-rw-r--r--gnu/usr.bin/cvs/src/cvs.h2
-rw-r--r--gnu/usr.bin/cvs/src/import.c11
-rw-r--r--gnu/usr.bin/cvs/src/main.c2
-rw-r--r--gnu/usr.bin/cvs/src/mkmodules.c2
-rw-r--r--gnu/usr.bin/cvs/src/rcs.c154
-rw-r--r--gnu/usr.bin/cvs/src/recurse.c22
-rw-r--r--gnu/usr.bin/cvs/src/server.c248
-rw-r--r--gnu/usr.bin/cvs/src/update.c9
34 files changed, 345 insertions, 3404 deletions
diff --git a/gnu/usr.bin/cvs/Makefile.in b/gnu/usr.bin/cvs/Makefile.in
index 970a5196745..7822dfeb0fa 100644
--- a/gnu/usr.bin/cvs/Makefile.in
+++ b/gnu/usr.bin/cvs/Makefile.in
@@ -89,7 +89,7 @@ DISTFILES = \
ChangeLog NEWS ChangeLog.zoo \
configure configure.in stamp-h.in config.h.in Makefile.in acconfig.h \
cvs-format.el mkinstalldirs install-sh \
- cvsnt.mak cvsnt.dsp \
+ cvsnt.mak cvsnt.dsp cvsnt.dsw \
.cvsignore cvs.spec
### Subdirectories to run make in for the primary targets.
@@ -99,7 +99,7 @@ USOURCE_SUBDIRS = lib @ZLIBSUBDIRS@ diff src
INSTALL_MAN=man
# All other subdirs:
SUBDIRS = ${USOURCE_SUBDIRS} ${INSTALL_MAN} doc contrib tools \
- windows-NT os2 emx macintosh vms
+ windows-NT os2 emx vms
# Only make TAGS/tags files in these directories.
TSUBDIRS= src lib
diff --git a/gnu/usr.bin/cvs/configure b/gnu/usr.bin/cvs/configure
index 808d939b694..775d6b3c540 100644
--- a/gnu/usr.bin/cvs/configure
+++ b/gnu/usr.bin/cvs/configure
@@ -3731,7 +3731,7 @@ trap 'rm -fr `echo "Makefile lib/Makefile src/Makefile zlib/Makefile diff/Makefi
man/Makefile tools/Makefile \
contrib/Makefile \
windows-NT/Makefile windows-NT/SCC/Makefile \
- os2/Makefile emx/Makefile macintosh/Makefile vms/Makefile \
+ os2/Makefile emx/Makefile vms/Makefile \
stamp-h config.h src/options.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
EOF
cat >> $CONFIG_STATUS <<EOF
@@ -3824,7 +3824,7 @@ CONFIG_FILES=\${CONFIG_FILES-"Makefile lib/Makefile src/Makefile zlib/Makefile d
man/Makefile tools/Makefile \
contrib/Makefile \
windows-NT/Makefile windows-NT/SCC/Makefile \
- os2/Makefile emx/Makefile macintosh/Makefile vms/Makefile \
+ os2/Makefile emx/Makefile vms/Makefile \
stamp-h"}
EOF
cat >> $CONFIG_STATUS <<\EOF
diff --git a/gnu/usr.bin/cvs/configure.in b/gnu/usr.bin/cvs/configure.in
index e1550fed466..83ecf1033e2 100644
--- a/gnu/usr.bin/cvs/configure.in
+++ b/gnu/usr.bin/cvs/configure.in
@@ -402,5 +402,5 @@ AC_OUTPUT(Makefile lib/Makefile src/Makefile zlib/Makefile diff/Makefile doc/Mak
man/Makefile tools/Makefile \
contrib/Makefile \
windows-NT/Makefile windows-NT/SCC/Makefile \
- os2/Makefile emx/Makefile macintosh/Makefile vms/Makefile \
+ os2/Makefile emx/Makefile vms/Makefile \
stamp-h)
diff --git a/gnu/usr.bin/cvs/diff/Makefile.in b/gnu/usr.bin/cvs/diff/Makefile.in
index effc1cdbfd2..c4d253aca22 100644
--- a/gnu/usr.bin/cvs/diff/Makefile.in
+++ b/gnu/usr.bin/cvs/diff/Makefile.in
@@ -43,7 +43,8 @@ SOURCES = diff.c diff3.c analyze.c cmpbuf.c cmpbuf.h io.c context.c ed.c \
diffrun.h
OBJECTS = diff.o diff3.o analyze.o cmpbuf.o dir.o io.o util.o \
context.o ed.o ifdef.o normal.o side.o version.o
-DISTFILES = $(SOURCES) ChangeLog build_diff.com Makefile.in diagmeet.note
+DISTFILES = $(SOURCES) ChangeLog build_diff.com Makefile.in diagmeet.note \
+ libdiff.dsp .cvsignore
all: libdiff.a
diff --git a/gnu/usr.bin/cvs/macintosh/AE_example.pl b/gnu/usr.bin/cvs/macintosh/AE_example.pl
deleted file mode 100644
index 4fa4ccf69e9..00000000000
--- a/gnu/usr.bin/cvs/macintosh/AE_example.pl
+++ /dev/null
@@ -1,95 +0,0 @@
-#
-# This fragment illustrates how to invoke MacCVS via AppleEvents and pass environment
-# variables to MacCVS. Not all CVS environment variables make sense for MacOS. This
-# fragment also illustrates the default result handling mode, which is to put the info on
-# a SIOUX console.
-#
-
-&MacPerl'DoAppleScript(<<ENDIT);
-tell application "Data:Mike:Projects:cvs-1.8.6:macintosh:MacCVS"
- do script { "status" } environment { "CVSROOT", "ladwig\@manic:/projects/sdt/repository/eM2" }
-end tell
-ENDIT
-
-exit(0);
-
-
-
-#
-# This fragment illustrates how to invoke MacCVS change its directory prior to executing
-# the CVS command. This is akin to being in a directory when you invoke CVS.
-#
-
-&MacPerl'DoAppleScript(<<ENDIT);
-tell application "Data:Mike:Projects:cvs-1.8.6:macintosh:MacCVS"
- do script { "status" } environment { "CVSROOT", "ladwig\@manic:/projects/sdt/repository/eM2" } pathway "OS:Workspace:eM:src:daemon"
-end tell
-ENDIT
-
-exit(0);
-
-
-
-#
-# This fragment illustrates how to get MacCVS to return results via AppleEvents.
-# Note: If you add "NoLineBuffer True" after the "Mode AE", each individual line
-# of results will be returned in a separate AppleEvent.
-#
-
-use Mac::AppleEvents;
-
-AEInstallEventHandler("MCVS", "DATA", "MacCVSData", 0);
-
-&MacPerl'DoAppleScript(<<ENDIT);
-tell application "Data:Mike:Projects:cvs-1.8.6:macintosh:MacCVS.PPC"
- do script { "-help add" } environment { "CVSROOT", "ladwig\@manic:/projects/sdt/repository/sdt" } Mode AE
-end tell
-ENDIT
-
-$done = 0;
-$in = 0;
-while( $done = 0 ) { sleep(1);}
-print "QUITTING!\n";
-
-AERemoveEventHandler ("MCVS", "DATA");
-exit(0);
-
-sub MacCVSData {
- my($event) = @_;
-
- print "**** MCVS/Data Handler called\n";
-
- $rDesc = AEGetParamDesc($event, "----");
- if( $rDesc )
- {
- $data = AEPrint($rDesc);
- chop $data; $data = substr($data, 1);
- print "---- data = <$data> \n";
- }
- AEDisposeDesc($rDesc);
-
- $rDesc = AEGetParamDesc($event, "DONE");
- if( $rDesc )
- { print "!!!! DONE\n"; $done = 1; AEDisposeDesc($rDesc); }
-
- print "Exiting MCVS/Data Handler ****\n";
- return 0;
-}
-
-
-
-
-
-#
-# This fragment illustrates how to have MacCVS save the results to a file in your MacOS
-# filesystem.
-#
-
-&MacPerl'DoAppleScript(<<ENDIT);
-tell application "Data:Projects:cvs-1.8.6:macintosh:MacCVS"
- do script { "-d ladwig\@manic:/projects/sdt/repository/eM2", "status" } mode file filename "os:out.file"
-end tell
-ENDIT
-
-exit(0);
-
diff --git a/gnu/usr.bin/cvs/macintosh/ChangeLog b/gnu/usr.bin/cvs/macintosh/ChangeLog
deleted file mode 100644
index 22c25d6cfdf..00000000000
--- a/gnu/usr.bin/cvs/macintosh/ChangeLog
+++ /dev/null
@@ -1,190 +0,0 @@
-Mon Sept 30 13:17:07 1996 Mike Ladwig <mike@twinpeaks.prc.com>
-
- * ae_if.c (DoScript): Fixed bug cutting off the last character of
- the path in the 'SPWD' AE Parameter.
-
-Tue Sep 24 14:39:40 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
-
- * options.h: Add TMPDIR_DFLT.
-
-Wed Sep 4 13:40:35 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
-
- * Makefile.in (Makefile): New rule.
-
-Mon Aug 26 12:46:10 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
-
- * filesubr.c (mkdir_if_needed): Added.
-
-Fri Aug 16 16:04:26 1996 Norbert Kiesel <nk@col.sw-ley.de>
-
- * Makefile.in (installdirs): new (empty) target
-
-Wed Aug 14 12:01:39 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
-
- * MacCVS68k.sit.hqx, MacCVSPPC.sit.hqx: New copies of these files
- from Mike Ladwig (gets rid of alloca.c; presumably adds
- mac_config.h; not sure if there are other changes).
-
-Tue Aug 13 15:02:15 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
-
- * ae_if.c: Part of the 9 Aug change didn't get checked in. Fix it.
-
-Fri Aug 9 14:53:01 1996 Mike Ladwig <mike@twinpeaks.prc.com>
-
- * ae_if.c: Include 'mac_config.h" to get macintosh configuration
- values. Reworked application I/O code (many routines) to make
- MacCVS either a "pure" faceless application (AE or file output) _OR_
- a SIOUX console application. This decision is made at compilation
- time by defining (or not) AE_IO_HANDLERS.
- * mac_config.h: Added, moving many configuration parameters from the
- maccvs.pch header file here. This makes it possible to change
- macintosh build -specific parameters without recompiling all CVS and
- Mac port code.
- * mac_init.c: Include 'mac_config.h" to get macintosh configuration
- values. Removed unnecessary toolbox initialization code. Made
- AE/Console choice at buildtime.
- * maccvs.pch: Moved most configuration parmeters to 'mac_config.h"
- * filesubr.c, macos_filesys.c, pwd.c, rcmd.c, run.c server_if.c:
- Include 'mac_config.h" to get macintosh configuration values.
-
-Wed Jul 31 11:41:55 1996 Mike Ladwig <mike@twinpeaks.prc.com>
- and Jim Kingdon <kingdon@harvey.cyclic.com>
-
- * server_if.c (macos_start_server): If getservbyname returns NULL,
- use port 514 rather than giving an error.
-
-Wed Jul 31 11:41:55 1996 Mike Ladwig <mike@twinpeaks.prc.com>
- and Jim Kingdon <kingdon@harvey.cyclic.com>
-
- * Makefile.in (DISTFILES): Add maccvs.r.
-
-Mon Jul 29 14:48:45 1996 Jim Blandy <jimb@totoro.cyclic.com>
-
- * Makefile.in (DISTFILES): Fix capitalization of MacCVS68k.sit.hqx.
-
-Fri Jul 26 16:17:48 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
-
- * README.MacCVS: Change CVS version number from 1.86 to 1.8.6.
- They are not the same and the latter is what is intended.
-
- * run.c: Remove Popen; it has been replaced by run_popen.
-
- * options.h: Remove RM and SORT; CVS no longer uses them (this
- restores some changes which were wiped out by Ladwig's 26 Jul 96
- submission).
-
- * config.h: Remove alloca cruft. CVS no longer uses alloca.
- * Makefile.in (SOURCES): Remove alloca.c.
- * alloca.c: Removed.
-
-Fri Jul 26 16:17:48 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
-
- * server_if.c: Revert to version before Ladwig's 26 Jul 96
- submission. In particular, this is to pick up the following
- changes:
-
- Tue Mar 19 17:51:52 1996 Norbert Kiesel <nk@col.sw-ley.de>
-
- * server_if.c (macos_start_server): Added support for
- CVS_RCMD_PORT (and thus made consistent with WindowsNT and VMS)
-
- Wed Feb 28 11:31:11 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
-
- * server_if.c (macos_start_server): Don't use alloca.
-
-Fri Jul 26 16:17:48 1996 Jim Kingdon <kingdon@harvey.cyclic.com>
-
- * Makefile.in (HEADERS): Remove SIOUX*.h.
- (SOURCES): Remove SIOUX.c. These files are copyright by
- metrowerks and therefore we cannot distribute them.
-
-Fri Jul 19 14:23:01 1996 Mike Ladwig <mike@twinpeaks.prc.com>
-
- * Added support for zlib (and Gzip-stream compression) to both the PPC and
- 68k ports.
-
-Mon Jul 15 11:53:41 1996 Mike Ladwig <mike@twinpeaks.prc.com>
-
- * For the 68k port, setup memory allocation differently in order to keep the
- heap and stack from colliding in large recursive operations. The 68k and PPC
- versions now both allocate 128k to the stack.
-
-Tues Jun 25 09:26:32 1996 Mike Ladwig <mike@twinpeaks.prc.com>
-
- * Removed the requirement for the 'services' file; it only needs to be there
- if you want to use a non-standard port.
-
-Mon Jun 24 10:12:17 1996 Mike Ladwig <mike@twinpeaks.prc.com>
-
- * Fixed bug in NoLineBuffer that sent an AE for every character in certain CVS
- modes (e.g. help).
- * Fixed bug in 68K port that didn't set the HLE flag in the size resource
-
-Thurs Jun 7 18:11:43 1996 Mike Ladwig <mike@twinpeaks.prc.com>
-
- * MacCVS fixes inserted into the "mainstream" CVS sources - thanks, Jim!
- * Fixed bug with reading log information from a file
-
-Thurs Jun 6 16:09:03 1996 Mike Ladwig <mike@twinpeaks.prc.com>
-
- * Improved MacCVS builds by moving the maccvs.rsrc information to maccvs.r
- * Fixed bug where MacCVS would crash if an error was encountered and
- output was going to AppleEvents or a file
-
-Thurs Jun 6 12:38:54 1996 Mike Ladwig <mike@twinpeaks.prc.com>
-
- * Fixed bug keeping CRLF conversion code from getting called
- * Modified "file results" code to use an intermediate file, and to
- rename that file to the requested filename when complete.
-
-Tue Jun 4 13:58:01 1996 Mike Ladwig <mike@twinpeaks.prc.com>
-
- * CVS Code base updated to cvs-1.8.2 (5/27/96 snapshot)
- * Updated to CodeWarrier 9. The SIOUX redirection stuff is broken under
- CW9. Using MSL seems promising, but MSL's ccommand is broken.
- * Redid the 680x0 port.
-
-Fri May 16 14:54:21 1996 Mike Ladwig <mike@twinpeaks.prc.com>
-
- * CVS Code base updated to cvs-1.8.2 (5/16/96 snapshot)
- * Bugs in macos_filesys.c related to relative pathnames fixed
-
-Fri May 1 15:58:41 1996 Mike Ladwig <mike@twinpeaks.prc.com>
-
- * Added AppleEvents support (undocumented)
-
-Fri Feb 9 11:26:32 1996 Mike Ladwig <mike@twinpeaks.prc.com>
-
- * CVS Code base updated to cvs-1.7
-
-Wed Jan 10 11:40:32 1996 Mike Ladwig <mike@twinpeaks.prc.com>
-
- * CVS Code base updated to cvs-1.6.5 1/8/95 snapshot
-
-Fri Dec 27 14:20:12 1995 Mike Ladwig <mike@twinpeaks.prc.com>
-
- * Cleanup of rcmd code, removing inappropriate tests
- * CVS Code base updated to cvs-1.6.3 12/27/95 snapshot
- * Again fixed(?) binary/text file handling.
- * OT problem traced to GUSI - OT bug. Corresponding with Matthias.
-
-Fri Dec 08 12:39:22 1995 Mike Ladwig <mike@twinpeaks.prc.com>
-
- * Fixed problem with 'stat' emulation
- * Used better GUSI resource template so file type/creator was available
-
-Thurs Dec 07 16:13:09 1995 Mike Ladwig <mike@twinpeaks.prc.com>
-
- * Port cleanup for inclusion into main cvs distribution
- * Fixed(?) binary file handling
- * Better SIOUX feedback
- * Updates only via whole files (no '-u' to update)
-
-Wed Nov 29 09:33:16 1995 Mike Ladwig <mike@twinpeaks.prc.com>
-
- * Initial port of CVS 1.6.1 snapshot 11/14/95
- * Requires CW GUSI 1.6.4 and CodeWarrier 7
- * 68k version is essentially untested, due to lack of a 68k machine
- * 'release' doesn't work, due to cvs implementation approach
- * Tons of obvious "TODOs", but at least the heavy stuff is done
-
diff --git a/gnu/usr.bin/cvs/macintosh/MacCVS68k.sit.hqx b/gnu/usr.bin/cvs/macintosh/MacCVS68k.sit.hqx
deleted file mode 100644
index 7b260948dac..00000000000
--- a/gnu/usr.bin/cvs/macintosh/MacCVS68k.sit.hqx
+++ /dev/null
@@ -1,179 +0,0 @@
-(This file must be converted with BinHex 4.0)
-:%%eKBd0@8bif1'XZY5jcDA3!8dP84&0*9#%!N!3K%!#3"'Zc8dP8)3!"!!!K%(*
--BA8#r`#3!aErr`d0$%eKBd0@8bif1'XZY9"`&!"$UBS!N!1!!*!%!eJmC#D(!*!
-Drj!%68e38N0A588"!+dX5cQZ-2[8!!!ZC`!!fMB!!!Sj!!!@86j(Rqm!N!BBS`h
-!q#r,DmdZ"d8h*I5ikfCRYfPRC'8VMpfQK2*edcVk-Spl[TZYc1GkfjL%DE*e-if
-[qAZe,MR0c3JMR"c[k(kk'D(E#0Z%FR+F((-cXJNEE'N4YSr`YpJqZNp#YjIZCdF
-fhBb`*)cXBa(ZEF)MarB46MCKj$Nj&Me#Yb[`eAGpYeN1cH0Vj2DaFe01EKmMqmK
-S(pN[RQaJ[!%"D'BA!!F!f5X"&Z%Tc%%3+SZU+c9'Rk1H`!ZKXpSGPV89aTcF4ih
-2'hLmBEADbLe9UiSi#'+mKbZa9IlIYlMdIS"Ij3!B0a+I+S0PL58lfe#GLeFZ"Q@
-PHJK'[q25p9$-3"j9,Nqjj9B5$)h4lDSlIb8@0+3"TF#J!8i1`RQ)BVH'8f"NAX#
-[4b))Q%K!PBhNkm3EYr2I#KjCa+S!X&#LK#S5C6GkQ`*M@I+CKZ3IqIpKVT1,i6H
-2jPN@UXcY1LYCNK&Cc,r'03Y$i!CB@J)3EmGl*Y"52e(5"B-KIGiE9YC66`%m'+5
-2AD'+aQLYASrGi4e[#C!!"E&F(lmep(qT1#PY%*@![@peK5%RYp43j[)mk[4IC#*
-RX0NXec+N&GKXC4p+Y4E2!Tm2pD%'`-0U,5Z-j0'AZHS-UaTpARq!5RXPKp9@9U`
-5`+2+XN)GS+lP&C0@i#mm*1p49qrilSami,qr%QDr!29"rM'Hm+5Mr8(J1h5&GVI
-Ekr8B9MVG2Xb*Gr[ap0&pBDQTQlJ3$piiEQ''[G"eG5MHc*'GV3V!3c!kaJ[b!3m
-UZcT!AAfhL%ccF,B`(YcaBpd0h3h`EG1,SdR+RDdA%lqaq5cllcl6%pEVC3FmABq
-%%)paH8!FmV$C4BIGIE1`XLHhLfS"2+jiqkQk+TjF5cc'1Y%8$plSpl*'&0EVbb0
-jK('pRQ`2ke8Flp0D,%1"f-Mk01@mh+HV,DXRI8`#*5QHF$)E[)kQ#)p)N!$rm)X
-6FimT(Q+pqm,Bilh3fiVHVbVb#$5T"2#Jd"K4*IqZUifd'2(N+L#1'dYl*FGGahf
-$KfU!iejG@'+BV)I99K@TKpU(FlpHeE[1IB,(Y(1Ij(((Z8r@pBjcMr!)1rHrL[d
-rc[eU2IlTh'm8pZr12F,MMR1r5Z-IcRf#KhU!FpFB4HG'863ahHZh2"I+&IZ%e!H
-3!%H*[CNQ`D(J-Nj,i[ceFMD)9[p`h,K4F5A(AFGpR3H&5S$MaM@,T4mhY16QA(2
-F-Apc6&Ih2X+GBFSa6I#BGMU6pEMMG#)mTMVja&l-G#GAFGL[1GqTKLF5f%,'H(M
-V'Qla@&hA%1%aNbc$Y5E&)Sl0KSbY,Pr'kC[Hie+-H)r3E%J9J)I&,BTJG,MYBei
-S'T9id`[GTk0I0Y04"DJ(Qm@S!["3CM&Xp[+r@8b8X3'VIl-HIpD(l&eG[M'GNAH
-0m(KNPFh`S6lSPhPA93#G-HqU#X#$3UX+d)HN6Ui'S!rd(eQiTHI'A5hDeH-iXcN
-pP'cSQEGJb0Z!j`r`2!C$5mUiHErY![MQA%MDXhr-4+JiK,3CbCETEJ5ViG#"-f(
-mG(FQD1EQGap[iGB!Tc@Ed@UCcAc[Z5`m1r#d8Dq%P&HUki2RmX2iUj@c+k&d4a[
-I5lKP49%aP`2FB3b&'prlMJlcqD#djK&)q@QZG1IF9TBrBlZ#RcTA"k8`QpX$4BH
-kG&XN2RK[Mjbr2aK-ANEmq5mr5Icl&Ik-C+pZ#m0R&"Z!ImG0I2Mf@DRm%qY`me6
-U#(MUq(DpKQq2DmGr(prqRAjF#P`QekJ@CI-6aKr[F%0-!pMac'DU+8N%-P,UT*S
--S#B'8"-$YYFaU#Df6#JPA+N*Pd-+'0(!`"#HYINlN!"(5!-$c(mJa,B#qGl"Ce%
-2+m+D'$Jef-TiGFRjAe)dL"UJ1XMiUjAm$c(KZV1-6kMQT!RL)H2%KfRJ+f[5830
-jI([mXI-D',5&0&#kSjpkBE6Ch%U03(McGl@J2G`5l2[5!m'q,lEKZC0XM2$QllF
-KPKlXqpUlH"jPrDI2N!!Fl2YP@bCef36q3'iRIq$q3PJM#*Nq38K+$IEp`XFIqCa
-0f,A[&0h"A0XJZZXX(2ad[b$--T'Q+$$r'Y$X`V(3Mr0dAKUE8PrE@IXZ,3EcFfS
-a9cHr-A8ZT1h9)AB)V')qRU&p$%(ib$H%[I9RK,fZ4PEI)mY6q50j0[j)mdX-2f4
-pQR3Y#)QTQ+X6S#FCFmc!-`&2$CikVK+i4$2fJ+U((UjBCACj(1kQ$Fk,H%Mhm@d
-U$,d`i9qpF"EfJF4Dl!-Gild3Vm5ET9@BLLBI68A-+LbH#2f!2Y`(F-jN0MX#iJJ
-qkJIdbHS,IZ$VqbrkJ4U6kEBIb1R#(P#0RZMYF6q3!$HU!HD0)#114ikRZ*jGpAJ
-HaV06d8"8,T356[F[Di$VfCf(plY(0)$iITC2eJ$Qq!0NG,b0*p-PiSEG"aQ[%e,
-qh5$aHk@DDaRdKA(N5aXE0GXCIbi3Jrd*SdI5J))6(p)!ekSpc$Ark$QZ05U6fl6
-H"($2ir,pcV!'pU0[i(@J9DISF+S,`DN#[$'J&K,*S%&$bY3J[4SJ#b1@2FZ!*m2
-e%)d)1q3-,e-IL3frH,&`)CkP4V35(j!!Em6NdJjLe-PUjQVr'`pLK-!UH)ZEaEG
-4Y6kk#!IDLA3TkZ5&P-YJKSc%1TT&A"M!BTEH@-3+4bbq-4&Z*mIT(BXrY4JeS&L
-rAJcBrEFHh9!r#-j%6hRJfamiU&@ld5V0qdX+eKBJP+bmkU,B"cR)8i4[SB2S8`I
-T%-RX&4`eQMK)R90(`jCLPpYCk43$aZGY&R+)`aD4(*[N!!@FN!$35@-ZG3!['*(
-YX&HN9hTiIM-eTHdi8hhXm`JBQErM4ecHqi6`E559'0e,LKPp1HVm1eU#CqH*P%r
-KPA6Z"H"pIZGR)325I'YT%iel[++bI"lqEp--6f+MH)M$AceKpld)mr%hNc"(#h`
-#IpQmce%%Y+ZrMV!eIf6VQ'bc,5N12S0mf03V23[`A5fFLQ1N[3'E%1XJc2SXI!'
-aEa%@EB'[)RD#X*UI`j0Bd!@%a5`"I%2TRPf%jEB!rXpKq`)"%qc$#F0[#%Zd`[F
-3'b3XhJBr!jM,TJY@2lb'@"VVH&[J0')XAq"T`(hIHHaHG4rJM(GH&Z0pP1SeRbQ
-TaXdP!5aJDhaY24bq3VD!Y!1cjk-hK3@XhJm8Fjm%q"M64-2V(#iLCZ849VkE@id
-BUdIc-acQ@VLB#HS3cC-AQ@9jTH"j,`(#@AD2k8PRmhXER)k!`HS5(G'&IZmQdHQ
-29bkK@%@Aea-[EfCAfIdHPfHMU'GlN!!'LlI4KchI2j-fB5hH$Fk(R*lBm&BXZbB
-c84JS+I8+`k+@J0mZDSXfZ!*H[kEBk`PS+qhqMFk!VX$KF)SL,S8(k[%q5c16(VQ
-3!)NQ%,E#*H+#PV1a$LR&KPr!B(PNKRTTpc0%A)+95QSYa9C-TQ0lNR,'QI4iPF+
-5X&'@iCHYSJR#Y@1@6mkYNajB`DTjR'iGlXq&L2mI!*!$$X$i@$TXd-$Vc2`Z&Z9
-HAV4a)pr,kr2Xj%FE0,#M'dmpkFYG*aarACGY"jDGCjBAffalRB1mc*([@DAAT22
--2JH,,R`jIS[T`TH"&bHr%"lK4rJ92mYC+A!A-&jkhIVX1Y8qVRKQRlG)&R*m)C2
-GNB8-1!3J%*JH(RJ&kVcXFJH$2J"3m2p!J(rm*Ijr&A19q2mJr0N`b),4i)*KH4@
-UHel9N!$+S"iH8K@-k'i0m[!2FPG"'H3M'SA,KAL!H+8,U`KS*[lU2[c06$LGm'E
-[`-YRH(1m0EUU0fN'abZ%!B4hj!kmh(-XY)mq!1M4!hmc"2rJS6H`BdI[`#ZBXD"
-UPJ8*VNhiQpliCpEAT`d2Hmh`"[DTDM,#QTm3[CV4$V%YA2crIr@$8D[5YIUP%#B
-+a1p@rqfpVY8[V+)dr[l[TZ*[0[0Xd36mlId[i1rISYq2GUeqmB92R[bRGCmmqFm
-&RccjqhpM[bFH!qDhQ,qam(Um3[@#Dq@UYq"+Z+Hp&JA+RQ0mEq[4[0PqV"daAr`
-kiGr'm&dVqNehVHJc%Q!NpN[Jimp"QBTU89$"@9D-4#LH1,QGj#+LcC0djE++bMR
-P,!1ZUFL6bFrPFQdTpRPV1LJ@hE$j"N,&$24JU*0FKD@9[SM"rRFJ4cGXQQZKETS
-,"c(8L5mA9XfDYq!XeKl@TNp40cjc++&L"RSbe"0lp+ZF8aA@[B'kmNM!E46Aq5,
-DYU,AhP4a1D*@c#PK'FMLIIe0[`SeA)p9BV&$KShhMTVX'EkYD1cQfk+[Ed1f@@[
-HI*4NK$'+Jc[Cd$+VF,1bI&l*k80B"R)ikX$XFUp2-iVVECPU1AVjCPJq[qbXq6b
-65kMcQd+GU0(SJ,8Q+XrN68Ae+TL6ir(U@L#FJQeqrZR&*LV2j,0D6aQ4EB3phQ#
-QeLQYIk"D@DE!V$@leKd)qp+Sc4m1HC0UCCP#%cAID$*'DESH50EEr2a6EeNG`N`
-[Xd-jf#&NGDVBH)GkQl8@X&SM!5q#ld4ZI[kC`keD-G1R[80ZMeDEC"mbClhJd(V
-Sba@Pj*!!DA1VCT@V+#E$5cr6X1L'e`j9PTZ+mYUKF,#*fTp3jijLZ#0'**!!SaY
-lh%@SQ)&$fMX86ZY$miG($lDBKjP$fe%cR'hT1E!rk4$,(%EDi'D&IUi0E`[Q[3h
-p605XX0HI!8h`YEpJ192b!b`rR%ei[G8m[qTf0aM&)AF(EQ[4Q"N+4f8C1-*N3bp
-%VIF'Y&&U`2"q@[(D,5pFDYE+-`0-e0i@DT*pDdjVq,@*bM0(%SHD'P4ITjC[q2Y
-Ce&H@'8KDlJlk3fTDbe[k$[dAiL[,(0A1FQr3EE1mZ93pM,5"C3DCU(N-e3LRUQf
-jjFCDUT9P"TXcbL'P`B$('rB'!kS2"d8p'1paG2#@UG4APKPLSZD80H#)NUC$(29
-S%cArM)MA[F5MUie*pDSC3+JmF`bK9RLADTk+S#FT4Y'Ua64lmFcA606HSYEjfY*
-2+4'If)DDU,RcUKD%[@QH4cImqQ5,jCJjPYK3SIQ$HP1DjE&DLkL[dd)KRcCIp5e
-*XL''HTb*fUYdIJPV%9*fjqJ34ae'IChZ9Ah"ZP4IikM$,CEVHP$r6jBI6e0[K4C
-!eq$!V$c#4-e$(3VV`46eiUJMUDq,[!&2X$(GejLLR%#e-NNS3pAlSYCLBPj9@!e
-i90h$[)"ZjSfL@LY9pa+e,Q8$a&&(QkJ&PC@Pc+JS#5lGL4Y((G-q!@5Q0Tb3!(2
-&V*`,BpXRE#2SAU*em!%Rj&q*@IPA-)j3!eSBKkM`+'qJ!rApkkd*QfA'QkMCL1K
-*@`#`jY+4#fMfBTN*0%@C(N!+GYfI0VjVS[,-4%,0Z!Dm3aYA$+-1XF`N%l@204e
-U1"DT1fTHihr[61S3bda'G`jkpmqY$IM9X,Zqf*h8SEmCmAYcIQ8C1*&3kj!!$@T
-BXe'MMcaACk+b$*c8KZV$$U93*m!@3X8-R'bLjL"U-"5f35%kkBi2#48cF%TEVBJ
-kaSCYl[R)85BUbm#T*QSfSMCk8U8Q8%mc8A[k2425Q"aeN!"!(346U&CGUp1@TR'
-M[pRm'[89-c#9qQUS$CSlh52%HPfJ[Jl6604m`eYAMc-!b[p1h'MIqJ#KBJC+,&4
-d4%,S!L69SFAliGZN$CL"8K1eJ+-D2YASJ%8XBMR,`(5UY8%e3ZLrK'Z6(BVeYBb
-dBHNZ`VE-Z)p3@3E+LAQi5B!1B*Tj*r5R[V)-c$#G(R4%!VAHY$r81VLCDQ8CQ'Q
-UFKCh[M0H921a$p-NbM+cb,2*H*3FG8VV&Z&&EF(pLCL@*h&4I3E5h-!bXrrF9a1
-9CqD3!&ZQ'SDQTrfKk*6eMeJG`Na&6-Y6Nde-AqF5+Nj4Z(14VM@Q$I1S3ck[hp[
-Tp%aTI8G`k"fST$N[XXXmA22(NmMjjTNcfLH!0-N6%m#CfbD!&#jL(503Mi'Uq!4
-J1chM5iiJ0Q!'jV0pRGiHTLK"2H0Yh,aU*LNPCQ#"jBPkkp"H1m#KK@eqZDTh1UR
-V(aADm#JX-P&cUhI"V[[Vh[p!Xc,,R'AfYDIUbFaVU&i$Y$G)P6%$Ca-E9)mIarm
-8EQYZLBp3-32RQ+LjlRV0[550fhV`4GB%J"Nied60ikM"L$h"Y[Dld+S9-l$B3X8
-"b[$@0Rf"HTk*QZ2fHGN'KYhBeN(Rd*c(-R#qK4VdSe5Q8@-FUMC4#pbkKKC!09*
-T*c*Um9Y#PGq#Va2cd#cAhCRCDr%eIb48c)"USQCj[,A*`G$Xd*%2qUP$Q)%D3Y@
-B8jC"c5d*#TB(`8dX4`+aaDl-K'e0KjJ"ccCp65Z+Djh&)Fb!CU)@DNY$1*CAfc0
-fke%j0#Zc$0550Y5LMkH'`hDjU$j@VCL"1YT8B+K'T#D&@M5'R"k@JATLH5hkP08
-"eCmN423r20EXK4R`%[2UlHQI8(h9la!UCZ!#BPipfPl-MNlVkjZLVfr#%P)[(&'
-#HXT8JZLV(iHT9Xb!cd,eKh"RX92c,$CJ"[c89aqkMCf+-ZJF5e%`!`'D8G$!rRa
-'LHP3N!!8"9%lCa48RhH&$Vd,)HSVS[U0G,Ra[PjSSZElPrL$RJME&1Y`Aelp1#)
-i&!'Gq2Sj*ZpV523e"!Ceb0m8m04dc!c8erG%Apq$-08D#&Ch$J(4Malr!k&L"L,
-8ej!!UKZD0e#EG([LY6B3me#1dilSpVif%XYeh!$XC2R"&eR-```XTEiLUY[[5A-
-SKYTNS@VZ#(BfKAT8$ZNVbm!bJBTc3aS91I#qB-2lm!hLUiil)JeTI881A#MBF#&
-F4"c5Y4"Zj+3jG15$eL5+'ELBp&82"MXRYRL(,V&3`fUR`-BlG#Re&IfV"LdpXU'
-#kd,,G9KZSH+H%Lk*C0KJS@)',U-1CHBZhYH,,ep'IF8-I*-8C9GE'BFX(F)-A%i
-GLS3kVAR@9d2deB"[N6BJ&3cFT8STLR+fa9I-`,IE8D[4C%ZVXZA0B`DZ)'eSh+f
-[@cPd*GADU+ZK8*U`VBF0*LeR'9K"(',,H4PR$UFJDkE%$&aPcXUjD&)L'9,)k)4
-D%cCQB+@*fM18GZ9-jVed+MQT,(2eePNj$4ZGdG#$1)3Cq%j-[@aFj0X(JRNI`$8
-aImK'MIY$emBQYP5YVYpC,-F-I0Id+E-DeG5H%SZ@$FImUiR+-V#UIBV+F#MkqVr
-62-3bm,fBjU8k"02r4+LBJG8*(k8$0qihI(qVUj6Kkk3lXkP@c-"emGfA*($,Jdp
-F3'c!$&br65R6VZhl9ep#U*L"(jJka2C%JdBephZD2YAQeU+a"eP1cpL$i)IYkY8
-jE450l503qm!0*QU@MY0Vjqa90,Dr31d20e+Y1Lj&lDU9pJ"B"Qib8I00cD[f*Pd
-!a"SU8)I#cArH(L!hQQ9qa1m"2&Z)+k8c0G@$mmh1N`9i1k!A,+qS+*h*-lI3hSC
-j45#pYq&j)iYUCCPE59(mDUI4Nh#9INcUCEKee9pMVr4!Y1RDMdQ(-!1hdEB(l5[
-Vk4PPJPAV5a2J*kb[*ee&p`"X8&Ml9hG209&C"Qih8I2`9NBRm0SKVeUSQ)%l604
-H*DV2&``'E13ikTdQDYpTC3Y3(ZCVZRmRm0TI[SrA%6JUCZ!Z%c9r@YQmQJXd0dk
-`1eZdGS4ZeBSCZ0Y%,CK@GUC@KeiP@T@I`FBlG-r8RVKCXY,F"%T4#*U2lhZFLFS
-bX)Df&4RUQ@LC9eGfE#XH[r"@#hAKVE$@V$AAV"9KNl8q9S3Z1rXpbm#kYPhfDQm
-JjCQh&Tfhb0,AmaC"-meH0C(DfX`NfPSidCUL-!-Y-G585a&$MC+@ibSl@V!Te*C
-RVU1Y#*D"9Y,ACHak3dCIHkf`I"6-`(T!$[94FP9FPp2(M8hj$38VDF*Q'EMA4-e
-MHr1kCYL@5"ceTbCUYPYhTb[GMRSIG3M242Jb9NmFGB1*QP@h$-pYC0J33pe)I88
-6Y5EMIL-@H3!X!rHhSETarch$KUfS$e"I%E9@09*'B"ce`6E8,MCX4AfSV80KA6[
-3SBIEDX9&-Grq@Rp',1mXG!IUckP@2#h$0#96kdF#p50iK'TGeYQIlDL2dJ5!Sb&
-HXNKHk@%6`1**H"%%Tek@J8fN+&aIdij)[0E(V!kaaF-dE"aeFeccNVKapATm'aX
-1e2T%3[15rP#-VdmQ&'8IkLm55VN2pDQi$UACX"AekELqIS(kM+N0fDU@FPj-E9M
-dSM8G,RS4RQ8hThUV"@bQc'bBYKDGDqh-B3CGLa"Z91&P-%6R0kYBZ(M'ZE3LiR$
-kASJlJ[`'9D`1TimLRU([4lR@+I!Xlj!!JUiSZmD9PkM,F9C%h%EIGh&23B'lZ8Z
-J`*hFQ9$J$XVI`hd!"GEb'9f"0Ac#9q"fq[e2Z0HL+,p9AX&UaLIkiEL!)Rj!hdA
-m)S-#!rP&&`8'mpXB#XcQHlm+M+$I(dII`qJlMepc8Q!ii3fKl`*qH8Q"(-+Cb6H
-F&CM(Gd891),IYP&J%Vp(S-!!IV9'J@-*lhMk2SCI4e&J2,qXS-!iITG"JD(mNSN
-#S`KR0(dIc5pQ+2!ebKI6Gckrfk0!,rVZ6pppq#8P"3Vjc5F&$Z8AL"3iLYqS8@!
-X[akK`#"qI8D"-I`'K3+(m2Y'#NcJYaX8k-h[1#P`-rF4&6L"kZj(GHEb@eN+614
-A'a5Sj"[%#SbNIKh*lqmS#Ee4cPIBYE@KRqPKTeXMBPdA[bdq@cbfq*[JlBqidjR
-QEB+I#9lH`Mh2EKlq2rlCI%[b#eeBTXJ&#AijIVL)(p+ha3Z,$b[jPNHkheErV(l
-Cr(p*H4QV'jISMq1mLlLKLrm*A6q-hp,k2hfA&qLkaDH%[LqJH8+qS211[RITZMe
-(1VX4)Qj-kNkLrrYeaPAVBS0e@D)IcYD&L*ZN!6ScLpqdk0DEdrN9#jR#A#RId"p
-l[Vb'lhBT-)2QqK9mmke0$m`,%!T8m"XF#Pc0pmlDGBY[H5P`&Gpp8f!9hm45i%a
-qT8+"lr#0-`AQdKcm2EjcTF"hqCjAQml`LkIYZYGeb8%%FhANCMVMk%X9[f[5V62
-RZjK[-MfK-mlY$a&R5ppdaY'AJ)YG6Lj2k)Zcf55L*Di[FrLP**Q9cM6c663*KGi
-i9iP%R#-0QfHqcrI+fh4Q0Gp1Pa(S6A*qGZjCL6KAHMFrTr4Peq8c%BZPGrTbL@X
-jUX2-lIj-eidm%HG*Xr6PJ#q6Q*Z[ijG@GZM1'Ia'T`a!IaTF5e%pq2ABQ2lXZVB
-SiRcTQ9pMkiqdB+jflR@+U*EHcGA*r5hRXUX)HMZ+4%aIT!YcM(-,@)3Ukr-(RD[
-4)UahXNMhr"QiRYpU6-h4c[ea%GE[jAGcG(*[d,PB,m)MMG'CKIbe#M)-[9R%hmF
-JSGMVFYik)%+6h[NfbEdDje8-)QVMqL+rfVXrS$2bJlfDT&rM[+Y#4*hdE+k4"pa
-(X[HhZPlL)F)kMbRGfppbhQ`L`LXYQjqP#6kJmmSA%4G)lqDBT,iilm%4X86@0bF
-l,`F5`Gj2+RI6PkrZ9$T[64,KPrA0bFkVT%3%C(ecX[0q,4(@FfEPGh[-YKr6pH)
-a%IbG`e)mRE(pQ+jA'SQi9GBh,cY[X"0aS6629lE[bhbK-S#[r*2PkBcp$S+ZGak
-+X*l3,KrE*j8Zq$21#b&&K'9pqc,1@c*&4+4pqc*GV`i9d5$lfjGahUNUSP&DjXY
-)%h6'HGQX#(E06BkR-mQlImjEH%8d5F2QCRR!qfHqZXrJ[+CBa$*CRprX[,YCa$G
-NIIVL[0"Da%@b2Reah[)YiQ*jRljd2BrFLNYNIIVL[+pDa)qPGrTbVBZpmr2dlIj
-Her[c49`UhGU2qGrhD-N6hTeLqme'@!e(pKL#l08dFMkrCZmE'9KF*Vh6&hZ[HEm
-G#0q8[ZR,JEdrqrefNC!!*r2-q,DiA$UhErU92j1,CU(K$ADIS2b@V-qIiIT5(Hi
-f!,mY[G1Aj0bFhEMr[Y%9dX'jZ9&A3k%pLcCA5ZrQ'[ZpJ-YmhTUpaR1VY'b25eU
-J0r"BDm(+Mr"lNrQY2+dmLqSa"RV%jj[DJ(rIC$hjbrRQJ0lB1L-[d*H%VXJRp#5
-K)jCZN!"H+*Z8cFM#dGYjA+H&pbd@R#J0Q&0Y(NYpq1[c"VVjHp,q1A!feHhSXMb
-(aehmc8(q"N0l,TDFr08F*Hh4A@ZqlY4Ij1qBh33q4IV%hjH8Pj&pia,mc8Eq0RV
-f''QR5JIiQr$,j!NqQIb#clB[PZ!eq9Hf,[IdHbEXfmXp6GUNbr6HFGYIa$YaGGV
-523bH)R[bT5aIfCk[FJfe3A2[QE#Q5JYmBR[1NYI`fGSVS(eejEI++mM+m3PHja[
-HZRTm@1[Z3eA6T#9cXhaMVm5HRap3(N*fMYV"Eh`1FQMhUfN"5Q40ml20f`,1@m1
-hqe@9TG)QhLERj*`'eBG2VqXf2+,5+Kmbk@2P0kK'52F'`Xi,BDC,4r4B2[&ZDIZ
-pdJPp6[SG18[h,`U8GI(i`(l9IrYCmKUphZphC$GT4X"jB`f,FQR6[X$j`1iX()4
-r-ApC43Y5(cGf0h2AdlG96hc2fDi[cahdKh60f(fJjYkre*IYeYelZJI`dklkVS!
-9M!lEqH(4DRelph[[Sqq%$L4dG$2@brE(%r8r[UX2@AA,[([P&6E3Yke,LAlBIEJ
-9EX-U#VEc'Cp59,2hMCXEpr2K#DbAlG[rJVkIT1qRk0[Zcpf`"UXVr+`rlU#Rqk&
-Nprp2Ijk@"I3T&rY8UaVGLkX25"2kC1XIpQQIrMhiCCqql!2MG9MAZRR0TY1pIE"
-imDAq-6j%`PlIEMim,$h3[b42X[H4"10RdS"jaCiV)`%qqHhZa-rr-TGP,p[(3S"
-(T!(c8$R-l2%lr1iCkd2"M!99XiVRi#fCLC0RGrD"Sf&BG@6&kZJrE@l9V(*ef0a
-4ilh$5dH-B1@`XVEAFI#Z1JkK1PJ9U4TBp0e94fk&kTjA9Ba(FVViCGh95GC4@&V
-TLaMXIeFYPTq8V+0IjC`Uh-`)e*@MX"M&GEk)eP'3!-A2C"ejmi0"(h,#+,BH-*U
--l+kq9XfDYq#XcaPQKU9EGPmVF%8)+m"#KL"T4dhf$1mS51!L93*h()lik+3G2lU
-bh-GIBYFMF$[kVL2aP9R4818F`hSY'kZ61H1ZbLUYlT02a)m'iNq'XGm`AIVr!!#
-b#J!!:
diff --git a/gnu/usr.bin/cvs/macintosh/MacCVSPPC.sit.hqx b/gnu/usr.bin/cvs/macintosh/MacCVSPPC.sit.hqx
deleted file mode 100644
index b9cdc9b60db..00000000000
--- a/gnu/usr.bin/cvs/macintosh/MacCVSPPC.sit.hqx
+++ /dev/null
@@ -1,209 +0,0 @@
-(This file must be converted with BinHex 4.0)
-:%%eKBd0@8bj38%-ZY5jcDA3!8dP84&0*9#%!N!3Qf!#3"2bm8dP8)3!"!!!Qf(*
--BA8#r`#3!aErr`d0$%eKBd0@8bj38%-ZY9"`&!"$UBS!N!1!!*!%!eJmC"@&!*!
-Drj!%68e38N0A588"!+Z[LaLZ-2[+!!#9(J!!fEJ!!"!j!!!@'AGNSHF!N!BXQJl
-!q,j"RTaQEaIPElqb`5DEGC5hERD%dfj6[[+*RYNe81l+U6ABIZc%Xr@N,lXeIkq
-$11@88m,1"RNVfrV4YZGYeX52FMmkUD0EZjbNQd@j[9eD*YPRZ[8fB3h)*V`MM($
-#pNQ1CclK&,J'e,kchpl#1VmcFTc`@mJQl(,NCB-)$CKXJ28%6Mrl!$J!Q,-1S"6
-re5N6RhbRF""HbXCE,&E#`D#N(M#`1&+pG-TVG4pUcEc01-+UYeL-qJGe+XaL0PX
-bM5-(QcLS`l-YVT`5qE[U[K[M!GBq$$$h()LmT8IG`1)&[3U6*N&5M4fk*@''8Je
-dCYr&#hX9&NrT99LMJHi+*mAC%If6*d0N5JPNP203K(QkeNb%EZ@6S(ML'am8eLb
-%q*TciFcYqEUA6)6Z%eHp8jLd#%Q9lq0434Kq4B%Qa"9S-FV*4iU,Rr@RpjEiMK-
-1+NbNCU6LepFjGad9SSJL!&#``lJB`Vl#H,dli0qCD5$l%-@"(r,hF+k8kk#k[M(
-0Z"a%`d%b`mBY4DC!NmVlqIm$Y5cXJHL89"B*pSY*#6LFpN'#dc2BC4F+$j-Cr%R
-eRIr-b6+0bM*EV$V8#&0FTbe*)V&d@35[Xcqb&-Y`!dc2"iKi%-Ar02*e-D2,B(D
--&``@VhZFB22l$(*+RG8Gm0S%h5VP3Rp$-fFGS"c+q4`2)X+MKRLi#(i-!CJ,#cT
-QQIZ0k@mGBh6iE1ia@FDYp'Q+!J(R6RTh#8Q6Mi4pUaDj+R0Ff9k94U8kI(k[Bfc
-![apZ5+8jj51'[GHZdKrY8fNMCc5(3KI[9HKT-ZekNI8@KHD@PicZhDj3`ck&EZD
--jY"Sq9k0aLTmThRG,VrJXKr5D&lP'rf'Y@[ddKD0KMJM8'STkh1)R1HKa6Y55L(
-SU,lcY8IDGAT4LdiPcLL9@QVKEH2jA-&h5+2M+YpIQddde0)3Cc5(6KIYe@N(KI-
-@6bTL',qXrpeRYHYd3)Y15442fNRKfZS4E)iFKqeJ)3hQhr1Xlj3R[Da&Rb(1D!k
-G9Zl9D@HCmbc"jpGEE9k(CeIEpQ1GZLSbhP[IVY2,MqLdL6-#aI'JK-B,13jR@kF
-8-44@pVLQT&fTrIFV9H'-jY$R[SQ$MScVKXTd@*rAPEppASpfI9jb8*q0R&%S%`G
-Q`@X,q"eZ[DfYLKC9TNkY*KBQ$KSj)e88QYHQd1XVjVem2Y@J815-3&&SY0Q5E"V
-ZGcKpE88d1)%%U+&*hbUdJ60D4D&(LfK`BX@m2m@3!!d+cD04ZJA)pSJXUpmVm2P
-kfq&aN!"J#GE39G4#Yf!,C`5+5Q1D'$p55S16X)lf*"DQ5*Xj)e*UUFIM&%`&JX[
-IiNQ$Nl'@,U-ADQN6Cr5+5JmAdq!8V+AaT)0+U44IQX)lR@khbkFILi($+TeD&Ij
-U)EQJdXfFN5L6T#('@`IJJMFXkaYh!l8`5GV%'BR5alBBd`IVHH(iES0TjA0A1DL
-&2RB$Cc5(3KIX9@L%a(EE)!M$-,dbqqDlfa@DH&LK*%S2@kkIq6LKe+E1B"@AYja
-NU*m5Ch4+r6`fJBdBCP3ZA$@6C+LI9-F%pS%C%'3kfC4PDP0Sm-BUc[d+Z6!$%Z+
--4ZRL',%EiRB+,3-J$-0-%Q!'j%!ATj%c)U@+bRbh69,0)J%Q3!j@dAV15*5jH%Z
-UeqdjdFB*cXBUqLYUB5kqRM-DTB)bVTf#rjJ2,DfXHL+IA+LJ)FjS&"pUXMY`HKN
-lmke90$J(+qK$j))2EH5-@0&SUa%0rKapk!9dJdE*MMR%rEX5,DC#h'AR3mCE[8l
-`jXUU9HG5#lX5QcLM8ES&DEL2jQ5hB#jkR9-lq!jd#a61#"9pYZhq3!ccd1F-S"R
-d5D0i(25KDEL`-b29P0E@+rK&GHqP$j!!#ckdN6-DC@Y"QKXPN!$KjZfYN`A"qHK
-aRL)AYKCXjSa'kBZQ1pdiVhamLmkYU0*(bB@qD)Jc@N@KEE-IYe9XA(&UKf@E3UQ
-8f3qf,[pN0qGfV+'2N3[G!S8c3N@I*lSjGf!hCbM0S%qbSjYc3*pQhZ%k@6r[*"R
-UTm)CSD,2%r9c!GE2,*T"Rf6+jLQ,9mJ4[),,*V4ZRPU)pI0aFQ&EcQE1k"@9(YN
-mY3LVk'M53D98bZBTLdm)f0h5V-Z4MBKhN3"Gki-UEH+-4TNYD'#mC50L'FQ`%A%
-cCc4+hb$6jl@Gl"[FMChV*mQ&[S(#'BfL6bYIm0d8iQ,d1L[)"AdUR"%UqMa42jH
-Jbr(4$2UN86D3!10Z-1RG$mHhq#r&q[NEFQ%h@)Jc8N@KalEihi-9Y*KU8#MC882
-h[rc$NL9imadZYp1GHpf42CA"FK*J2qAqPhpXjia'kB`fXRjiXd5`DPNLr`pbS61
-kQ6-5j88kPZrHa)!BUY'6VU3@AU46caQPSXpM6ChJ-R5NdiN'I9)Gmam(1JBM(5k
-lqpVM2CelXAl@NJXGJa"RT)T#Mr9dlU[BZ'STeD"3XU1RXfmMEhLQ+6R9E$UU6RC
-QG#RR*VlEVY!,pbP8iBa#f5FK-De2YPJbMUScV[cY2YF4#rXN'MQM8"b1c$BZ)@k
-VRefVZ#QRYS0pkh!D1508&'T1hNEJ0`VY9Xk9k'N'KBUF%5S+Y@BH8qMTk(+SKFQ
-24XiSP"PHUq"RY)m3['cYia'&aPFXIhd@X6$$fm`CKI+k!ZYeq4N1erLM4C5Tp)c
-blKGF55bmVN$KM1*3Cf,p'eLrIP'VNL81)rh8Yh%[Dhi*b0U&3`!k-REk3MKlV@`
-)CIflAmq42YQjp9D!bq[B6lc#hXlD)GcXG[%fpblXDZJ$89bYUU6qHcXjRHk(-2D
-Da@&@(6kX9XGN+AJYFJ)GV2XEUKh8FSB"582P$-e3iXA1caqRkEQSSKT326B)1[r
-lcIVEACk)qe3J88@Ea-"[!a[CUfMC3fTS!"aQFdB+k1eZfdiF-4Q1XEV"q4khemq
-ShB,$m4ll0&XbdSJ!(#10U63!Vm05KZLqj!1lfA[ib'3QPJ6JJrN'YAjXRXhRNh"
-dQh4,#-FkdD9Sj4Hpk0M',2QUkTFj)Jje[`f,f$I$SG,EG[1U0Br8'ApS6%LSCh8
-EV`b(4Qp,5#!"F+Me0KXCJ-0$!q"!AMdH)J#(8,J,aalGKr5DpadIc&T)I(KXH5G
-`-'2$F)3c(!N*"!!1PGkl'iFk8bK5kZXfI66Uc#INlUb,J$L'm!8mUi[+e9"Gh#M
-@4Dcd!@MA+k[6APbD332Jm18jam)A1SZaQ0,fq!qI2d!%i'"(mi8IfX-VXlYE2A"
-c3XAKVL!$(#i"J11!`d9U2eE3!BIl+3l*i4)![-V1P!$!368i8d8GTjcTjcMqkdb
-ra2'0-rf5efqFi"iFp))crB523mld%ab(R1RR11J!CkV5qhEAaA#N)GQA,pC&j@T
-cA4aP()DqiA-qBPQ5HJmRFG[-"rhKF(IiS3-1G`F1GQJ!KaXYYKSq-EIL18edZ-A
-GrS*+rkaRXIddpLcU(5i*J-2Sp2P!Eh2b1bY9"&E1chSS8U85R5N*`)IS6%N!()S
-chBAMrjeTQ(iFX[mCMUrd)6X,KfHRcTLcf)2MUX%@l%dAlFEa&4qL)b!"G#Bk!K)
-!KqL)5)!k*&9b#N!I1)l6"c3i[D(",h`I2QF`m!QV1Ilm&k(,+eV)$0-#2#mHb1`
-"#4C)rAiCP+4l6HPLmJJiJq-6rQbcXmIRilN(lK,I6ar*AXdI1Y,Pfr[B4h$m"BX
-j3fq)M+KlfTi)F(%0XaIXpLdV9F`ULhB$-C9#Yp'TN!!CMNrF"rL)2G%ImH-pY"q
-U6IMGGqdLMJIGTPJ,3b!H"2UdI34Fq9'fL2+LIr89r`d2[FMaLCMc"`b&CJYf#6$
-QN51SJA#$`HNBDc"3'"VJZUpI$lU01Z5[QL$3!&Bm5N-$EfdL"c5!Ia%'3a%V"1T
-R(XQ'm1F,kfTRA&CA1ldBrmYB#98rmqKXM(@[Ujhc%Ikr*'+[eFA9eIkqf1A@pEK
-8Ch)(r,UaJSd2U0@p2@TePrLkfYpj9'YqDP%[AED"hF&FXb&LrLCik2&0DR@R[Z[
-PSr-lmN'c&&PqmK+YQmh*-I@8CBX+8*fEMEN@UA,MHm+C&9U-V3DcEb$qedrjUp9
-Rc&0Aj,fPVN!F,1@D5q09DbkaU0B8L(9IYGTm"k0CVHiFMlP+!DVM-%FNrXIL[`E
-rYD`1G$BB$-D4kF1YJ`d1PmdCX!X'!e94"lV(-Mr`e`hNJ"p)"e9(0Qf)$AeV`-1
-k+iC"!Qr(S9"$IECdmlYFqK8IiRGjb2RGe4-k&`hFi3YTKm-81&QYL%[KEhiKidr
-K8)V2$q*r+DX$-D%kJ2elJf'r(bMQ8+bdJKpiXj3Fm!0mN`C%Em3'8a[L!lRUaDA
-3jD80d2@CV-KU'&VMj+TCh)M231%'!#HU48&@[53$mpA!8-p9d2AC*1R1iT9LrV0
-R[LARd#dZJk(3$9p#2RM&4Zd%#3rQH8[+[b3@BNqI$&fI'X89rRZ4'*IaLb#VY42
-%H'5D$P4,UKNHVZ$aeCbr`hbC"MD"UZ@+`NCa44&6ZD*`#hIY''3F-8Ri&c(YL2M
-&1bSYK%1deC'2$jA5T3K#ka[5#*!!Jj@-JK'"H1,%hT%XLSB6KE@De@[T9Ja%B%6
-mNr1X`MS#BE`HrI&am*IMN6EEF#@MYNiNYq+T$`lR5VN1UZZh#,mCC5*%+ScE#Rc
-BS0GMkleql'*Vf@M3"r-FbVfAa6Rj(EN)Rc0QM-r2Hdm8'!,JF(faVmVU($CUU4Z
-YXRlrN!$N%FNBLQ298(3,XRf3!!rc&#&6J3lL14UN3X5"h#)KCmkMV(*'BH201-,
-+609jjfe2NSqA*3FBYNlk"h4SSeC5#,*Ym)VrFBTkdGqT'PhH&i!dC)cPNa36&HS
-V5&ji$QUl&2r9+@TAfCYGVm!VhERR31h"*f[!fG$6JfYk-022dU`Ql(eamkaCQEh
-`Zda6`hVRV0X!N!"DJ*QB[m#6kiA[i@G[&V[L3qL2RpMj!aJr%pMXc$8XPY-4f,"
-E$SXP&X$9q2NqLdfm#3S`drdXP[3U6-2BheQXm!AF0J01NF&"EX$qZR-!Ld9HM9e
-`F%jPX6jr`$de-%(X(A[,!(IH6"2aGEXGISflF"!AjSk'e4LEc@,4-f!YaK!,32B
-i`'Qpi,dX&R%@i"c2$$&Ijq@!RG3CiMh0"e`-aK!,jPl1G3@iFCk)fm6e"*JT@UB
-aicJpaPjRX9'c1+aM-m@C)'dLKlYNCMh-BTN",K0JpSXX0M+0'`e`NmK(4LU(qi&
-ZNLVXDYE",AfK@F,Ac)&Fe*lBS99[%R-JRlLP4PlRSj0A+QQ9Z"NAmd5NH0hAqJ4
-[4`[[Xr&1h8MHkh+iFRdaZ%`cdkJcZ[-pq*B+Eh4KdJ!-fS9d`4A&BY)3SRK0KK1
-cH9Q3!!*)34#MS-CAb(PjAcKl-*lEUf([p3V2iVfjJPqEE--AN!$iG"EHRiIha66
-4E&q0M$Z@a9)G2TcK%[,()U5Sd$)E-Bp#K$5'@`pF#L[%KK[6c*K-+djSb4QMfFi
-!"5@,0D%-,45)B#'Fpa6cbEQedT`YXZB5R&Sf[+X!ram!N!-1`0(1-rXQACkG[5H
-hTpcY`-lVE1cE41l*PHXek1hSaP221MahIH2iVmZf!m[1R'A[p@DkfAB5ZqL!GhV
-E3GV&kMa[0q$,J1adiC&EI-PJmG+&AqPRRVGG21!ZB2c4kr3U6fh!9@DIYdJ@FR`
-KNjeNa"F!XJ$3``1[3*fA"h!"A3m$!-2rK`2mC!lqEm*D$IiIM$mE"d9`-K6!Z**
-U*6#hYVa'0kbec!rP2cQB4I'AJ2p2K3Ri6DHJ32aUA%RPJYVb@MeZ"05ecNpKFm%
-X&ReZ84GD&eiTajZM04L+d3T[3SASEb,qFL,fGmSf22mP$YVQG`!'$F,IP1%I22%
-U6Qa),plKC62ReeBjN!#UUCTEKV"e)(Cr`fYE68Z0%++QQZ80VH@mKi*H22lr[qF
-"PH@ePQ*THK64f)D#%pK'mAm*Qffq[)4ahX&b0M[q-K6'EG#a&pq"[eh*CP[$UBe
-2X0R0-9E#EQ8P"4VqEa@r,m9DD8'V0eU#a[rcDZG9E[XPlqrI"Hq4!ri*lm*mGKZ
-lU1!Uj+"rd'@$@kBS4T5G)C!!iU)fflT$c'X3X-Nim61H+UZ+@US48J)UNZ'phY[
-R2MLCA@GDm3CHJ3+"HVH[@V'DqJ"Ye,qrB6fL0S8EH!8'FG66IMkdHQ(P[(M8dL,
-Uq1hJ(@ZHq9GfAAA0R"Qm!S2YASI8e&6@SHBKSMPHIkrAUL(Bkk,+Z60i"3VYZIT
-UV@"PEN),EhIQLK8S%UJh$Teb)@T1jAKXZ@p#D`qE5"2##[JimiB&#j9JF(`J`pr
-18HUVE'AGp%9e[!,&0UT2#8DdD!Dhdcme6+KB!Eq0kJmdUB%P'Gc1!kjkK9#a!L8
-fDSP!eH0@#VEci#ZGAV%#T3jU@$&0,G6k!@UCM9SF#'YUe1X888GI%L98V+$5%US
-HL@KCe"i1$E94b`+'UPKU29*T"h,(6pIraNEP&4K'c!XdQdBJ`lb1aEHp5kKBJH%
-fDP&3#i@b01mml2%)63JV-),iLP6JbiJ(M(0jhCh3kh!!68Je$0h)DN2"``iEX!)
-(fUK$e+8a*4UXMk%iEmIZ2+,i$8,&#Rb-1"65%$1U4&*$k[M2)#N+Vm""a)BQaGc
-4T)-DVRq68,%#"a-EQM66dJe28,Kk[HDUefX`NV4"DicUKTVZYZ-A[lHS9kc!)3j
-U*)DlEdj4IZdUbUrK8*TV@!mXbE&mp#@kUeikM+)0)+`h[Vm"q+FkU&L"`iMPL*V
-E!&!4hR+ei5hFpZd*4C3FD(*#4a$c)RS`(XlS%-iPjNiS"U1*3j(@D,#K6eYT3Vp
-c*r3l'%1p4[AkR&KfE(lfYi5+&5Lh88YMLQ'U@M5Npq%QHMf51)4L&mJ+8@+ZBiQ
-[4L$0"0)K4aZ`!NI4A"%e%!PQ105$HV5$UJEL10NdkK(&T*5m!XF3m``eSMGR0!q
-RHD8lebZKJYKJU$%p1eRF6*cG#bY`,#Q+SHXCR46-HpYPhYX`cN'eP*cS*5EdFCU
-VL8C+2$-La$*F9!11Sel0H%0f(B+1UkpI4K2##Ka2,0mj)-i'4aZ`!LI3K1+a)1k
-8ZIh9G2A9K"1*jFfUBD*"P'BjZpKK(PCJI$GU[CAC$MFrZmP9bNe`%U'f'%SXTUB
-*dAR3'&*+AK&Z)!a6r(U-1eMQH1i@ENFGdqEXP&K"Ke#JiPiH$@Q0(LK(GI`'V+$
-[K$l+X*(q4YA+NDKMhGmddPbaJQkKLaV@SKR858$l+kqJbbK3La%94j[C88krhq%
-39Q"59kq)1X'$E5YFGi50bLY`QShU3p5@V0H63$hG4Lf-"#IPG!La4VZSSq%-kY9
-3'p@Plfq([h*9q9G`TSeDDQU06@J#K&-XkKM44$V%+h!@F@MTcX'fchb8@-iVF$C
-0#'hCD'TE%lfH10,a0V!#jj!!+U2lNTB6VLLM9-F$`!UFbjfjFilhQ9C3dc1i(HG
-hrKEXARRP2%*YE9E#f@ile[a6&D(bb[Q68I2+jT5DVHC*k-$JE(FJYlh`r'pX9&'
-CE2H+Qdd`V$@NQde-D)VGDh%mLTC)-)hDY[E'FG3VVdcYRP!JU)C5XfelBF-McS5
-`8YQ0DVA'd!AS3pedj"K#jC9T0ZV3L"*S3P8q5BQDfR[!UpriKfYY9&'CEU-1Fe"
-6rDikVrR(0UUSc,!j9&6([H'-1#3i002ZYBc20FZMYKFf(Z+`!5ZcE035`BC-[iM
-PGe(p81@bh0#LQAdS-D%,D0X)452#TdM"SZiI6VhbbQa5V`!RcrZDplVEkqX`apl
-B#Q-Sj$Pp(IhLZ6DUU&3lFd@663RRj[UQfqZEF#&0++Z5K2U'LrS'c+9Y!jQ(5Be
--VcpGlcL1@)'DEVjbpb#&fhl[h5'l9e'jL%rSc--2V05M38e%0m)BL$(3(GN+hc(
-QMFNd)9kC4f`)DfK'CaD(""YUl3RjiPNjiCVhlPQV5I0iTBj33i'SP5%HUR,jDii
-UBf9qYjCRNGX,$ap*E1#9"E4Y"$@$Hr2TEH1&$B[G[@%a,0cLp@C9H@Ec)1)V9Q#
-4ir5S"YSE'3jYI[BGepYi"blZ53qNrBDHp-!P26jPZYH#AcSH!&EJdUdEGSCjKH[
-'ZR[j@&MFicHN1G6M!9aQSaDe+*KZb(#SIFhBRp1'M4@i[0ZRc'Tjab[r3BiMVd$
-pe[4!'VIpRMYQ8DpB`AM49YmVc5'BpJIU&5ZJG(XEf3NP[)f'K0163Qjrr2YAd)5
-`!J&5C8bMU1MSCe6jNA@1+Q-PD'YH%Fq!jG5VlCJR#C9A9&*+c+1JYCc'E4pap,q
-3!,lb5UKEP68pi+Pb@k9b%1NVVc6D1iU[,V16L`PeM++p395DE06LkFdSP0NGT@H
-cdDMA'4T2!@5diFMPkfQZ[(+&M9Sk*4B,Uh9+H%PUfqK"A@+M$UfXQcVIdX+iIZe
-S1B%DYP&,DT6!%U8a2D3%DX4',D18f&5p6p!6U0&Zjm$%a)IDah6FJRlNlN-r!Te
-3SkU&iQ@GK$Q-(DK[hq@i,l`5Scd2%B-CH`K@AA[#I0S1HH9+dL(EfdM$2[b(Y@r
-CU+*Lf+M$(IG&aH9AfBDq+[+lHG3VVjKG$TCLj,b04jjfpI9TX'a8Ire1f)IrGYJ
-rdi4i*IiRApP'&C9QHfmSiqj,c-4B@PrNSehE4!iaVd",cbDDGI5Gc!&@B+RMT2*
-H[5b9k*AF69k"9T&aI'P)EGAFqB[5!8*-%'jFa*EE#F+0Lf#CcBC5Hd,e@LScdeN
-am@LD%&EJNcCUNB&TP&`#Sf,L5"Ge*&`e'GP39LebYA`iI%JlpU&a*p#%X!*A%iF
-`Ua3a-h'+4*VUQS6[PB*Yrl[M#C9Ai&Sh-40@P8aL*T&(@GlYHqA5(K86KlYX'!l
-AfDMFTp60qK$ILPVIbf%JeQ!AG6"mLRSe8**hpNSH!+r!pBk(VHRaV0r3%AbeL25
-99cjYpeU#%q+@H5c3"paC-@'QdqZ%QI!CbQlbL5U@jGN!LD6G$6CUNBTH@@jA2[d
-"Rj1PH-!(Rl94I5djEa0Cr[BYea$,X3)hENA0*EHf*)&ZfM+Kpe0(@j*f0bICd)H
--((#b,eL"@i5@rh!)'SDc9#@)'CdG8SNTjD0JHA9ej5a4ZCAf9h3F,802a`i5QqK
-YK&UR,V@QCpLA3,hG4[8[a1bQhT,HjpXE4T%()#UI)e8fP@BeN!"aL6Y1RASSX4`
-VF!IPmb*,hXm3B[BblUB`ir"jBTiC-*4)JaG(JBl@fhp2U&L",p$ZeDbB-I6CVG3
-qP(#)[dJZa89a,E!ND#JY+CHLK`eh%QUeYP309Z["P"[98EZBQ#FUGpQS`paH1A'
-h)5IiqLALkpaDESLNqGUajXGR8kqmmQ8EYEJDXi!BQNel86fpIS9kRDBTZ,4PY+%
-(p@l(9H,HiAqj5Pqe8Ah9DK4$IIYGTAYXe+&iU8)8VB-Jpk3'r+'[r5Np3"2LPA[
-*Ek!Yb[$fKY%[6R)mJ"FR`3SqSE0Z)QI1!iA9IrA3C"Z99q$V0QS*hN54!ejGrJX
-(&5Z`dNBG1P8*Kh8pkL%R8,pKSikB-RdqQJGeUK(C!EckVppH6kKBJIYXe0)TdqF
-fA+%'d$lF-D,9aaY1VeL"qfh8XLR6jkQ0',0",GS1QjM3!j-,d@qifICIda5#YZ0
-'('ZMmJSm5"iE4jf(-IhkQMk2lEJ&+ac8"5[J)EYA[pdV`UCkr9l&Zf`jrcf[`$F
-6qe$'EpLbEDbL[9ai"TPF+QlMML1#&9MGYFhADp(d$YYCFGP#"r@bKI!`Z5m0m9!
-Sjf!01HdeYPbJBJADHP$6(PX2DM[T+dEQ-!5IlV9pijeK'j9A-"CJcaA&&4f+P+F
-N(*(6d&A#ACPAS"13!+r$Q9r"S+*abN5[fFkbQpqK#@%&(V&45lJhEkLQ&jY0S(l
-,4[8&M%#Qdel8Ep1%-'3AcLCC%kL2fUK&MFX`V*Ke+AT3ep"F-IcHN!#pI`#a0VQ
-SQf"Y&fS!YpFX'lDJISIQLUJKa8aE+3R8alT3qpQ`"IAaVJPCKVTr3NpdpBU"U[#
-qATmNPZFDhBEkAHSe(K@DNZeeXiZk'CkLATIPjY1,ZSkdB9NZ*GU,qV66+cI--l!
-*e'F5kTA#6HM3plE1GAq[H1G1MhVe!5HBpfa5'rDLIMqTHAY4Ij!!8*3-'lDJ2TG
-3bJp3RbHI8V!mZ`%-[6&'U&L"$IB@j928G!C!S&BXr%G#a3TXj,H!$92+q%kCc90
-d9PckLS0kk5Zicik$!-c#(c+1Ejm#8FPlcHlj0(d[`,3IATk9l#-r4rGXS1m1X48
-bf#JQa!T#"A`!dh[RdlpcZfF9I9mKR#-'UNKT-EK)Z&B-EUAI,D([f5*"bq!V9&m
-JmSm-,K5j93Ch%fi6IGYC6!BDi9dJFVX-JL*$aQ#Hb)8bQ#Bbd3`-NE0K-&fNR4P
-mQA#r5Yph#Qq438aNIaMS)MR%i%[#"f33*T`)IFm4f9d'Aa41*S1lk(I9e2Fp9$p
-AT*!!'8bQlbVkRLTbi3c1&`Pf"[0&5T4"5165'%4&hSP"MFM5-TJP-Y!-+N8bR-'
-9)Qh%B+C)9$1iMIUG3IdeLU3DJbNLYFkJ9L4H'Ga1mcT2j1dCA#a5R!`QL*32Jh0
-%jTqjHP![%SS-&SXX*B1&)Q(UkJ4F)[+F$%i@GeB`Z&cN)"PF+K+E$"D*E#Q$ZF+
-jBI!*N9eNF*P)@H)md0e'@8RU60iYG-qpp(fIm-NBh#qF,`EI%'iEJj98Id"i@``
-H%Vi6J`H&DmAJkr6l&F)rC1abaLpl1hUl,ZGF)rHXlYFp4qmFIA2dc0%a4lpZ%BQ
-'M(iPG5UT6pH,"-Z!r[bIlRKkiqK,BUpJ2f-[)cY16I)VR`*bchApr)U6MLAhLq4
-HNGmRj!Pl4(*rN!![l!eI)ehqbrk3!1!hV)#9b-kb*,rcf6$h,+G[Kfm1cjapbq1
-&-epRITlq[-KH`Zj15FiRRq4ccbHP!A[YI[f4aqb[HGe*lC(jR+"l2TA5RH6mpqQ
--jjrNFkEZ@5E,mdpFRA([f#AGklm4e6dqkCR1j2APFb*K1U!cPaG`AfaD8QIbGqL
-kTeMkTM0jIBN@a&!GCL6e*CqlFmr$#Ad*L"YSC&BkdbB5Ma)+[FRIlZdH[c4XRlP
-"h+24T61I%EGab!Md*V8rjqq&Gdq*p'jr6Z[,cKF%Z+G8HUF[ea6`C-kXARqQrkd
-*lX&hA8Lbp'@r,j2FQa[%2C(EG%F4Ydl+!25RZ@!TUXI-EIUcmp85lR(H%b)[mfX
-mrC%@l0AjGfqiCkMdEUp1jEIb,b4acc$TQ,j)&rDBr*YDh11mSNHkj`rQE`Yecdf
-b2Rm'2LYZY%h[dIRArlKRK$4[MdlP"[2[4A,2!G)BR6(&$IBb$,faa*hj%STF9rk
-P8Hij8(VRfk4b0IRlfYecFd*Ij&Hjqrdk)fr)eI5rKF`p(j2ej@VbVfCccd(5XVe
-'QV$(j0pCjjk$TAGl6%TImLrbFmp)@GqHR(qlSAX1NElTbdIh"qCIqqLH3f9pHh,
-qACMZ'5AVfj2c,`Kecf(5[(bTjmId[rl+29G,mh6'mf2khcEV(RcjY*a[AmkrBFX
-pr$8(FMaIfE[hi`19!AbGX5a2ClclkI[IjqbHdG+b2+Pd`Cr*[qcD2@0NIAQCr"[
-!h9-ZlF[,p,m@h6e(b[lb-[RhaEYRV,6-Pj%Qk%cq4IVZ18UDTc1TqpM`4ED"1$S
-cZh6QD'RBhL`2H*I+4rFcj&m#l*jVCAeqFl'",kYYhRf2d6'b2Rh"&mE(m-Aj!dj
-JKDa2AiS-AGrl[S&MjAhkBLPl,c!D*q[6PrcV`0hcHHQG[YaH`'rXZ+$Ahl2I1cQ
-``E4)Yr)aIhNRP$cK25#HhfaDLS82CGqP4aqAp[NeHpl'c-padMYpmA,0qqa!1&l
-kTLrlFhrHZpVLX@$fQI&Gj`6TA0ld)hr'MfDKUHN$9e#H+1[cCi5qe&X$"Z"ikCf
-qT2CQAmZqqieZP!lZc5f'%S[Y$YUF*,hEDlahh#d,D`elM1IRT@8j,QQ"hX$6R@8
-hEmE[GIBhfm"qL1Sa!3BPpTY30,*hXllQ`reQ[pji1L-[d*HNVXJRp#5T)ijZN!"
-HX'IBHQ6KbEdmEP5Y[F'#LG+!2GAMXG5([f%Y1X$I8rEYJA(U1kr,mK`Hpr1h'2Q
-VahEI@(,U4hZ8Y%GhRIdkTlr)h`Ql#$a*qX6I&pP,BJY+m0H(r'd*lME56T-1m$I
-TPmN6I$,j"CmpAbc*Dr+[2&dZM!3RlFhPRLjYdQ9kKlER,q)pFBhUdYd-2N2fj%X
-j[V+hArP0T9N0l0k`[LNYm)Qp28YH`fFR9d"jGIBcpV*`Ra+m,M@eaLCmm1LZLkV
-1P*EXcI+0A)Qh2cr'RK!TY&jqic0pBlYHX`V!8jG5T[hCiffCi+dCh[@UbQCT%fp
-6Hh*aXa,'TpF0'"lYdLSI-Z9MP6BVCXc3SPEqK6"IN!#1k,&miMh*hMZ5NrUFmMZ
-+Pqi,#Tc9cq2pqDVrmE2N0AUpcqr`YDTQ02r''Rl1PMEP"5i(IXr#B2cVmCF9Y##
-08bEZBQiRI6[p*(,1ARmP!6d5-e4ce`8eMrbj2er!#1bH(X#hq[Zl3GaJiZrP4e!
-0KIINHlp0hdNG51VS-pJ[cimRqrrHcMN805l6pXJV2%VIRLiPjq(0B3@Xa#l+H[Q
--6bPUf22'c6Alq,!Hqq9jqqr6pl2dr32kpZEc%+c#lSCXRdp!$`imP'cYrmlR19R
-!R2`iTj!!BJi%9lmM6CL6ThmiTlhkppL(FrT`$TcAPU%1m2VaIA0`H2'KrR%qa#d
-Y[)X2I%Z@'qKILLHq[56"mk3dB&rapXTi9'aqZbEah6r[CEjPHeN)m*3dB"qD!E-
-'r4+r#h[Q8$CcIQh9q$PiPda06@9Z$PI4Yp0(88mI3kGF@&Y9AXQli0eNqR"`8hd
--UDfD1hr43"[3ZV-2Akd9V0cCJAdF2U6k++Z+@US48J*UIc-#,6Z2DSc5l*Q(Fmq
-2al2UKCAciP&,LkJl#H,i@al2N!"KGESHaKl-mATf(UjZB8[4qi1)2`-[ipjF-b0
-XfVqjlpr`dY(*+)$MDZDB9[FJTr'2QPUemBprG(q%Vj3X'-Gr`rRbr`#3!e0a!!!:
diff --git a/gnu/usr.bin/cvs/macintosh/Makefile.in b/gnu/usr.bin/cvs/macintosh/Makefile.in
deleted file mode 100644
index 8843a248d00..00000000000
--- a/gnu/usr.bin/cvs/macintosh/Makefile.in
+++ /dev/null
@@ -1,66 +0,0 @@
-#### Under MacOS and CodeWarrier, we use project files, not
-#### this makefile. However, we need this file in order for 'make
-#### dist' to work properly on Unix machines.
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-cvs_srcdir = @top_srcdir@/src
-VPATH = @srcdir@
-
-SHELL = /bin/sh
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-
-HEADERS = \
- config.h \
- options.h \
- maccvs.pch
-
-SOURCES = \
- macos_filesys.c \
- pwd.c \
- rcmd.c \
- run.c \
- server_if.c
-
-DISTFILES = \
- ${HEADERS} \
- ${SOURCES} \
- README.MacCVS \
- Makefile.in \
- services \
- maccvs.rsrc.sit.hqx \
- maccvs165.patch \
- maccvs.projects.sit.hqx
-
-all:
-
-.PHONY: all install uninstall
-all install uninstall:
-
-.PHONY: tags TAGS
-tags TAGS:
-
-.PHONY: ls
-ls:
- @echo ${DISTFILES}
-
-.PHONY: clean distclean realclean mostlyclean
-clean distclean realclean mostlyclean:
-
-.PHONY: lint
-lint:
-
-.PHONY: dist-dir
-dist-dir:
- mkdir ${DISTDIR}
- for i in ${DISTFILES}; do \
- ln $(srcdir)/$${i} ${DISTDIR}; \
- done
- ln Makefile ${DISTDIR}
-
-clean:
- @echo make clean does nothing in macintosh subdir
-
diff --git a/gnu/usr.bin/cvs/macintosh/README.MacCVS b/gnu/usr.bin/cvs/macintosh/README.MacCVS
deleted file mode 100644
index 7adddd571b9..00000000000
--- a/gnu/usr.bin/cvs/macintosh/README.MacCVS
+++ /dev/null
@@ -1,125 +0,0 @@
-NOTE: this port is still in progress and should not be considered a
- finished product. Use at your own risk.
-
-__________________________________
-MacOS / Concurrent Versions System (CVS)
-Current Mac port version: d5
-
-Mike Ladwig <mike@twinpeaks.prc.com>
-__________________________________
-
-This is a port of the CVS client (1.6.5 ) to MacOS.
-
-1. Setup
-
-In order to use this, you must be willing to consider the Macintosh
-a trusted host to the UN*X box where the CVS 1.6.3 server resides.
-This is a really dumb thing to do if you have any security concerns.
-I don't, so I can live with the problem.
-
-For the following example, "twinpeaks" is the repository host, and
-"cicily" is the Macintosh client. "maggie" is the login account on
-twinpeaks
-
-* 'twinpeaks' must have a login account which trusts 'cicily'. For
-me this is 'maggie', and 'maggie' has a .rhosts file that contains
-the line 'cicily joel'.
-
-* 'cicily' must have the Sharing Setup control panel configured
-to have "Owner Name" set to "joel" and "Macintosh Name" set to
-'cicily'.
-
-* 'cicily' must have the 'services' file (included) located in
-the "Preferences" folder. You must rename this file to be
-'sys/services'.
-
-
-2. Usage
-
-Well, the interface is about as ugly as it could be. When you launch
-MacCVS, it allows you to enter the command line and redirect the
-output of CVS to the screen or to a file. If you send it to the screen,
-you can choose to save it to a file when you quit.
-
-I've been keeping the basic command line
-("-d maggie@twinpeaks:/projects/repository/eM2") in the Mac Note
-Pad, and just cut-n-pasting it into MacCVS, then adding the command
--specific ("checkout commonFiles") stuff manually.
-
-On "checkin" or "commit" operations, use the '-m <log message>'
-command line option.
-
-Due to the strange way it is implemented in CVS, the 'release'
-command does not work. Tell me if fixing this should be a priority.
-
-To change the file type and creator of files that MacCVS creates, you
-need ResEdit 2.1.3. Edit the MacCVS file, and open the GUZ(sp)I resource
-and make the changes you want.
-
-
-3. Building MacCVS
-
-I have included the the two MacCVS project files as a binhex stuffit
-archive ('maccvs.projects.sit.hqx'). You will also have to extract the
-MacCVS resource file (maccvs.rsrc.sit.hqx).
-
-**** Note for the intrim release (pre- cvs baseline integration): You must apply
-**** the maccvs-165.patch file to the base cvs 1.6.5 distribution with GNU patch.
-**** Hopefully this patch will be applied and part of the base distribution soon,
-**** it has not yet been accepted by the cvs maintainers.
-
-If you are building MacCVS for an Open Transport system, you will need to
-work around a problem between OT and GUSI:
-
-Open the project file for GUSI (GUSI.PPC.µ). In the file "GUSITCP.cp", find the ~TCPSocket (destructor) method. Change the line:
-
- pb->csCode = TCPClose;
-to:
- pb->csCode = TCPAbort;
-
-Recompile GUSI.
-
-You may also have to fiddle with the access paths. I have a "Projects" folder,
-where I have the cvs-x.y.z folder and the CWGUSI folder.
-
-
-4. Feedback
-
-Please tell me how this works for you (criticism, praise, flames, etc.).
-Any ideas for improvements, stuff for the 'README.MacOS' file, or
-anything else would be appreciated.
-
-
-5. Pre mainstream distribution MacCVS History
-
-Wed Jan 10 11:40:32 1995 Mike Ladwig <mike@twinpeaks.prc.com>
-
- * CVS Code base updated to cvs-1.6.5 1/8/95 snapshot
-
-Fri Dec 27 14:20:12 1995 Mike Ladwig <mike@twinpeaks.prc.com>
-
- * Cleanup of rcmd code, removing inappropriate tests
- * CVS Code base updated to cvs-1.6.3 12/27/95 snapshot
- * Again fixed(?) binary/text file handling.
- * OT problem traced to GUSI - OT bug. Corresponding with Matthias.
-
-Fri Dec 08 12:39:22 1995 Mike Ladwig <mike@twinpeaks.prc.com>
-
- * Fixed problem with 'stat' emulation
- * Used better GUSI resource template so file type/creator was available
-
-Thurs Dec 07 16:13:09 1995 Mike Ladwig <mike@twinpeaks.prc.com>
-
- * Port cleanup for inclusion into main cvs distribution
- * Fixed(?) binary file handling
- * Better SIOUX feedback
- * Updates only via whole files (no '-u' to update)
-
-Wed Nov 29 09:33:16 1995 Mike Ladwig <mike@twinpeaks.prc.com>
-
- * Initial port of CVS 1.6.1 snapshot 11/14/95
- * Requires CW GUSI 1.6.4 and CodeWarrier 7
- * 68k version is essentially untested, due to lack of a 68k machine
- * 'release' doesn't work, due to cvs implementation approach
- * Tons of obvious "TODOs", but at least the heavy stuff is done
-
diff --git a/gnu/usr.bin/cvs/macintosh/ae_if.c b/gnu/usr.bin/cvs/macintosh/ae_if.c
deleted file mode 100644
index b0a73d308f6..00000000000
--- a/gnu/usr.bin/cvs/macintosh/ae_if.c
+++ /dev/null
@@ -1,423 +0,0 @@
-/*
- * aeLink.c
- * UNIX environment handling stuff for macos
- *
- * These routines make MacCVS able to accept a standard UNIX command line,
- * environment, output redirection, and startup directory via AppleEvents
- * and redirect all output to AppleEvents, a file, or the SIOUX tty window.
- *
- * Michael Ladwig <mike@twinpeaks.prc.com> --- April 1996
- */
-#include "mac_config.h"
-#ifdef AE_IO_HANDLERS
-#ifdef __POWERPC__
-#include <MacHeadersPPC>
-#else
-#include <MacHeaders68K>
-#endif
-
-#include <AppleEvents.h>
-#include <AERegistry.h>
-#include <stdio.h>
-#include <string.h>
-#include <console.h>
-#include <sys/fcntl.h>
-
-extern char *xmalloc (size_t bytes);
-
-enum { outToAE, outToFile };
-
-static int outputMode = outToAE;
-static char tempOutputFileName[256], outputFileName[256];
-static int outputFile;
-static int noLineBuffer;
-
-AppleEvent gResponseEvent = {'null', nil};
-AppleEvent gResponseReplyEvent = {'null', nil};
-AEAddressDesc gResponseAddress;
-
-static char aeCmdIn = 0;
-static char aeLinkDone = 0;
-
-char **Args;
-char **EnvVars, **EnvVals;
-int ArgC = 1;
-int EnvC = 1;
-
-char * CopyInfo(Handle info)
-{
- if( info )
- {
- char * retarg = xmalloc(GetHandleSize(info) + 1);
-
- if (retarg)
- {
- memcpy(retarg, *info, GetHandleSize(info) );
- retarg[GetHandleSize(info)] = 0;
- }
-
- return retarg;
- }
- else
- return nil;
-}
-
-void MakeEnvironment(const AppleEvent *event)
-{
- AEDesc args;
- long i, argCount;
-
- if (AEGetParamDesc(event, 'ENVT', typeAEList, &args) || AECountItems(&args, &argCount) || !argCount)
- {
- EnvVars[EnvC] = nil;
- EnvVals[EnvC] = nil;
- return;
- }
-
- for (i = 0; i++<argCount;)
- {
- AEKeyword key;
- AEDesc arg;
-
- EnvC++;
-
- // Variable
-
- if (!AEGetNthDesc(&args, i, typeChar, &key, &arg))
- {
- HLock(arg.dataHandle);
- EnvVars[EnvC-1] = CopyInfo(arg.dataHandle);
- AEDisposeDesc(&arg);
- }
-
- // Value
-
- i++;
- if (!AEGetNthDesc(&args, i, typeChar, &key, &arg))
- {
- HLock(arg.dataHandle);
- EnvVals[EnvC-1] = CopyInfo(arg.dataHandle);
- AEDisposeDesc(&arg);
- }
- }
- AEDisposeDesc(&args);
-
- EnvVars[EnvC] = nil;
- EnvVals[EnvC] = nil;
-}
-
-pascal OSErr DoScript(const AppleEvent *event, AppleEvent *reply, long refCon)
-{
- OSType mode;
- DescType typeCode;
- Size size;
- AEDesc args;
- long i, argCount, addrSize;
- AEDesc env;
- char *argString, *anArg, startPWD[1024];
- TargetID requestAddr;
- DescType requestAddrType;
- Boolean flag;
-
- if (AEGetParamDesc(event, '----', typeAEList, &args) || AECountItems(&args, &argCount) || !argCount)
- return errAEEventFailed;
-
- // Get the address of the requesting app to we can send information back
-
- AEGetAttributePtr(event,
- keyAddressAttr,
- typeWildCard,
- &requestAddrType,
- (Ptr) &requestAddr,
- sizeof(requestAddr),
- &addrSize);
- AECreateDesc( typeTargetID, &requestAddr, sizeof(requestAddr), &gResponseAddress );
-
- // Pull the command line from the event
-
- for (i = 0; i++<argCount;)
- {
- AEKeyword key;
- AEDesc arg;
-
- if (!AEGetNthDesc(&args, i, typeChar, &key, &arg))
- {
- HLock(arg.dataHandle);
- argString = CopyInfo(arg.dataHandle);
- AEDisposeDesc(&arg);
- anArg = strtok( argString, " " );
- Args[ArgC] = anArg;
- ArgC++;
- while( (anArg = strtok(NULL, " ")) != NULL )
- {
- Args[ArgC] = anArg;
- ArgC++;
- }
- }
- }
- AEDisposeDesc(&args);
- Args[ArgC] = nil;
-
- // Pull the environment variables from the event
-
- MakeEnvironment( event );
-
- // Figure out what mode should be used to return results
-
- if (AEGetParamPtr(event, 'MODE', typeEnumerated, &typeCode, &mode, 4, &size))
- outputMode = outToAE;
- else
- {
- switch (mode) {
-
- // Batch (return results via Apple Events)
-
- case 'TOAE':
- outputMode = outToAE;
- break;
-
- // File (return results via a file)
- case 'FILE':
- outputMode = outToFile;
- if (AEGetParamPtr(event, 'FILE', typeChar, &typeCode, &outputFileName, sizeof(outputFileName)-1, &size))
- {
- outputMode = outToAE;
- fprintf(stderr, "MacCVS Error: No filename parameter\n" );
- }
- else
- {
- outputFileName[size] = 0;
- strcpy( tempOutputFileName, outputFileName );
- strcat( tempOutputFileName, ".TMP");
- if( (outputFile = open(tempOutputFileName, O_WRONLY | O_CREAT | O_TRUNC)) == 1 )
- {
- outputMode = outToAE;
- fprintf(stderr, "MacCVS Error: Unable to open '%s'\n", tempOutputFileName);
- }
- }
- break;
- }
- }
-
- // Check to see if there is a starting pathname for this invokation
-
- if ( ! AEGetParamPtr(event, 'SPWD', typeChar, &typeCode, &startPWD, sizeof(startPWD)-1, &size) )
- {
- startPWD[size] = 0;
- chdir(startPWD);
- }
-
- // Check to see if we should not line buffer results in AE return mode
-
- if (AEGetParamPtr(event, 'LBUF', typeBoolean, &typeCode, (Ptr) &flag, 1, &size))
- noLineBuffer = 0;
- else
- noLineBuffer = flag;
-
- // All Done
-
- aeLinkDone = 1;
-
- return noErr;
-}
-
-void GetUnixCommandEnvironment( char *name )
-{
- long timeOutTicks;
- EventRecord theEvent;
-
-#ifdef __POWERPC__
- AEInstallEventHandler( kAEMiscStandards, kAEDoScript, NewAEEventHandlerProc(DoScript), 0, false);
-#else
- AEInstallEventHandler( kAEMiscStandards, kAEDoScript, DoScript, 0, false);
-#endif
-
- // Allocate some storage for the command line and the environment
-
- Args = (char **) xmalloc(ArgMax * sizeof(char *));
- EnvVars = (char **) xmalloc(EnvMax * sizeof(char *));
- EnvVals = (char **) xmalloc(EnvMax * sizeof(char *));
-
- // Initialize the first arg to the process name
-
- Args[0] = xmalloc(strlen(name)+1);
- strcpy( Args[0], name );
-
- // Defaults
-
- ArgC = 1;
- EnvC = 0;
- outputMode = outToAE;
-
- // Wait for the command line and environment
-
- timeOutTicks = TickCount() + (60*AE_TIMEOUT_SECONDS); // Timeout seconds set in maccvs.pch
- while( (TickCount() < timeOutTicks) && (!aeLinkDone) )
- {
- if (WaitNextEvent(everyEvent, &theEvent, 60, nil))
- {
- if( ! (SIOUXHandleOneEvent(&theEvent)) )
- {
- switch (theEvent.what)
- {
- case kHighLevelEvent:
- AEProcessAppleEvent(&theEvent);
- break;
- }
- }
- }
- }
-}
-
-char *
-getenv( const char *var )
-{
- int i;
-
- // Look it up in the environment
-
- for( i=0; i<EnvC; i++ )
- {
- if( strcmp(EnvVars[i], var) == 0 ) return( EnvVals[i] );
- }
-
- return NULL;
-}
-
-/* Free the allocated memory */
-
-void CleanUpArgsAndEnv( void )
-{
- int i;
-
- // Clean up the args
-
- for( i=0; i<ArgC; i++ )
- free( Args[i] );
-
- free( Args );
-
- // Clean up the environment
-
- for( i=0; i<EnvC; i++ )
- { free( EnvVars[i] ); free( EnvVals[i] ); }
-
- free( EnvVars );
- free( EnvVals );
-}
-
-/*
- * The following blocks of code are related to the redirection of output to
- * AppleEvents.
- */
-
-static char outBuf[AE_OUTBUF_SIZE];
-static int outBufLen = -1;
-
-void InitOutBuffer( void )
-{
- outBufLen = 0;
-}
-
-void SendOutBuffer( char outputDone )
-{
- if( outBufLen )
- {
- AEPutParamPtr(
- &gResponseEvent,
- keyDirectObject,
- typeChar,
- outBuf,
- outBufLen);
- }
- if( outputDone )
- {
- AEPutParamPtr(
- &gResponseEvent,
- 'DONE',
- typeChar,
- "DONE",
- 4);
- }
- AESend(
- &gResponseEvent,
- &gResponseReplyEvent,
- kAEWaitReply+kAENeverInteract,
- kAENormalPriority,
- kNoTimeOut,
- nil, nil);
-}
-
-/*
- * The following three routines override the "real thing" from the CW
- * SIOUX library in order to divert output to AppleEvents.
- */
-
-short
-InstallConsole(short fd)
-{
- if (outputMode == outToFile)
- return 0;
-
- AECreateAppleEvent ('MCVS', 'DATA',
- &gResponseAddress,
- kAutoGenerateReturnID,
- kAnyTransactionID,
- &gResponseEvent);
-
- return 0;
-}
-
-long WriteCharsToConsole( char *buf, long length )
-{
- char *tCh;
-
- if( outputMode == outToFile )
- {
- write( outputFile, buf, length );
- return length;
- }
-
- if( outBufLen == -1 ) InitOutBuffer();
-
- if( (length + outBufLen) > AE_OUTBUF_SIZE )
- {
- SendOutBuffer( FALSE );
- InitOutBuffer();
- }
-
- for( tCh = buf; tCh < (char *) (buf+length); tCh++ )
- {
- if( *tCh == '\012' ) *tCh = '\015';
-
- outBuf[outBufLen] = *tCh;
- outBufLen++;
- }
-
- if( noLineBuffer && ( *(buf+length) == '\015') )
- {
- SendOutBuffer( FALSE );
- InitOutBuffer();
- }
-
- return length;
-}
-
-void RemoveConsole( void )
-{
- CleanUpArgsAndEnv();
-
- if( outputMode == outToFile )
- {
- close(outputFile);
- if( rename(tempOutputFileName, outputFileName) != 0 )
- SysBeep( 100 );
- return;
- }
-
- SendOutBuffer( TRUE );
-
- AEDisposeDesc( &gResponseEvent );
- AEDisposeDesc( &gResponseAddress );
-}
-#endif // AE_IO_HANDLERS
diff --git a/gnu/usr.bin/cvs/macintosh/config.h b/gnu/usr.bin/cvs/macintosh/config.h
deleted file mode 100644
index aaa6f5ed963..00000000000
--- a/gnu/usr.bin/cvs/macintosh/config.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * config.h --- configuration file for MacOS
- * Handbuilt for MetroWerks CodeWarrier 7 and GUSI 1.6.4
- *
- * MDLadwig <mike@twinpeaks.prc.com> --- Nov 1995
- */
-
-/* This file lives in the CVSHOME/macos directory */
-
-#include <GUSI.h>
-#include <compat.h>
-#include <sys/errno.h>
-
-/* MetroWerks provides alloca, but only for PPC Macs - try CVS 'alloca' */
-
-#if !__POWERPC__
-#undef REGEX_MALLOC
-#undef HAVE_ALLOCA
-#undef ALLOCA_IN_STDLIB
-#undef HAVE_ALLOCA_H
-#else
-#undef REGEX_MALLOC
-#define HAVE_ALLOCA 1
-#undef ALLOCA_IN_STDLIB
-#define HAVE_ALLOCA_H 1
-#endif
-
-/* Define if files are crlf terminated. */
-#define LINES_CRLF_TERMINATED 1
-
-/* Define if you support file names longer than 14 characters. */
-#define HAVE_LONG_FILE_NAMES 1
-
-/* Define if utime(file, NULL) sets file's timestamp to the present. */
-#define HAVE_UTIME_NULL 1
-
-/* Define as the return type of signal handlers (int or void). */
-#define RETSIGTYPE void
-
-/* Define if the `S_IS*' macros in <sys/stat.h> do not work properly. */
-#define STAT_MACROS_BROKEN 1
-
-/* Define if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define if you want CVS to be able to be a remote repository client. */
-#define CLIENT_SUPPORT 1
-
-/* 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. */
-#define HAVE_CONNECT
-
-/* Define if you have the ftime function. */
-#define HAVE_FTIME 1
-
-/* Define if you have the ftruncate function. */
-#undef HAVE_FTRUNCATE
-
-/* Define if you have the setvbuf function. */
-#define HAVE_SETVBUF 1
-
-/* Define if you have the vprintf function. */
-#define HAVE_VPRINTF 1
-
-/* Define if you have the <dirent.h> header file. */
-#define HAVE_DIRENT_H 1
-
-/* Define if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define if you have the <utime.h> header file. */
-#define HAVE_UTIME_H 1
-
-/* GUSI filesystem stuff doesn't take the last parameter (permissions). */
-#define CVS_MKDIR macos_mkdir
-#define CVS_OPEN macos_open
-#define CVS_CREAT macos_creat
-#define CVS_FOPEN macos_fopen
-#define CVS_CHDIR macos_chdir
-#define CVS_ACCESS macos_access
-#define CVS_OPENDIR macos_opendir
-#define CVS_STAT macos_stat
-#define CVS_RENAME macos_rename
-#define CVS_UNLINK macos_unlink
-#define CVS_CHMOD macos_chmod
-
-extern int macos_rename (const char *, const char *);
-extern int macos_stat (const char *, struct stat *);
-extern DIR * macos_opendir (const char *);
-extern int macos_access(const char *, int);
-extern int macos_chdir( const char *path );
-extern FILE * macos_fopen( const char *path, const char *mode );
-extern int macos_creat( const char *path, mode_t mode );
-extern int macos_open( const char *path, int oflag, ... );
-extern int macos_mkdir( const char *path, int oflag );
-extern int macos_unlink (const char *);
-extern int macos_chmod( const char *path, mode_t mode );
-
-/* Kludges from pwd.c */
-extern struct passwd *getpwnam (char *name);
-extern pid_t getpid (void);
-
-/* We have prototypes. */
-#define USE_PROTOTYPES 1
-
-/* Compare filenames */
-#define fncmp strcmp
-
-/* Don't use rsh */
-#define RSH_NOT_TRANSPARENT 1
-
-#define START_SERVER macos_start_server
-#define SHUTDOWN_SERVER macos_shutdown_server
-
-extern void macos_start_server (int *tofd, int *fromfd,
- char *client_user,
- char *server_user,
- char *server_host,
- char *server_cvsroot);
-extern void macos_shutdown_server (int to);
-
-
diff --git a/gnu/usr.bin/cvs/macintosh/filesubr.c b/gnu/usr.bin/cvs/macintosh/filesubr.c
deleted file mode 100644
index 5ec82998b69..00000000000
--- a/gnu/usr.bin/cvs/macintosh/filesubr.c
+++ /dev/null
@@ -1,707 +0,0 @@
-/* filesubr.c --- subroutines for dealing with files
- Jim Blandy <jimb@cyclic.com>
-
- This file is part of GNU CVS.
-
- GNU CVS is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 2, or (at your option) any
- later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-/* These functions were moved out of subr.c because they need different
- definitions under operating systems (like, say, Windows NT) with different
- file system semantics. */
-
-#include "mac_config.h"
-#include "cvs.h"
-
-/*
- * I don't know of a convenient way to test this at configure time, or else
- * I'd certainly do it there.
- */
-#if defined(NeXT)
-#define LOSING_TMPNAM_FUNCTION
-#endif
-
-static int deep_remove_dir PROTO((const char *path));
-
-/*
- * Copies "from" to "to".
- */
-void
-copy_file (from, to)
- const char *from;
- const char *to;
-{
- struct stat sb;
- struct utimbuf t;
- int fdin, fdout;
-
- if (trace)
-#ifdef SERVER_SUPPORT
- (void) fprintf (stderr, "%c-> copy(%s,%s)\n",
- (server_active) ? 'S' : ' ', from, to);
-#else
- (void) fprintf (stderr, "-> copy(%s,%s)\n", from, to);
-#endif
- if (noexec)
- return;
-
- if ((fdin = CVS_OPEN (from, O_RDONLY)) < 0)
- error (1, errno, "cannot open %s for copying", from);
- if (fstat (fdin, &sb) < 0)
- error (1, errno, "cannot fstat %s", from);
- if ((fdout = CVS_CREAT (to, (int) sb.st_mode & 07777)) < 0)
- error (1, errno, "cannot create %s for copying", to);
- if (sb.st_size > 0)
- {
- char buf[BUFSIZ];
- int n;
-
- for (;;)
- {
- n = read (fdin, buf, sizeof(buf));
- if (n == -1)
- {
-#ifdef EINTR
- if (errno == EINTR)
- continue;
-#endif
- error (1, errno, "cannot read file %s for copying", from);
- }
- else if (n == 0)
- break;
-
- if (write(fdout, buf, n) != n) {
- error (1, errno, "cannot write file %s for copying", to);
- }
- }
-
-#ifdef HAVE_FSYNC
- if (fsync (fdout))
- error (1, errno, "cannot fsync file %s after copying", to);
-#endif
- }
-
- if (close (fdin) < 0)
- error (0, errno, "cannot close %s", from);
- if (close (fdout) < 0)
- error (1, errno, "cannot close %s", to);
-
- /* now, set the times for the copied file to match those of the original */
- memset ((char *) &t, 0, sizeof (t));
- t.actime = sb.st_atime;
- t.modtime = sb.st_mtime;
- (void) utime (to, &t);
-}
-
-/* FIXME-krp: these functions would benefit from caching the char * &
- stat buf. */
-
-/*
- * Returns non-zero if the argument file is a directory, or is a symbolic
- * link which points to a directory.
- */
-int
-isdir (file)
- const char *file;
-{
- struct stat sb;
-
- if ( CVS_STAT (file, &sb) < 0)
- return (0);
- return (S_ISDIR (sb.st_mode));
-}
-
-/*
- * Returns non-zero if the argument file is a symbolic link.
- */
-int
-islink (file)
- const char *file;
-{
-#ifdef S_ISLNK
- struct stat sb;
-
- if (lstat (file, &sb) < 0)
- return (0);
- return (S_ISLNK (sb.st_mode));
-#else
- return (0);
-#endif
-}
-
-/*
- * Returns non-zero if the argument file exists.
- */
-int
-isfile (file)
- const char *file;
-{
- return isaccessible(file, F_OK);
-}
-
-/*
- * Returns non-zero if the argument file is readable.
- */
-int
-isreadable (file)
- const char *file;
-{
- return isaccessible(file, R_OK);
-}
-
-/*
- * Returns non-zero if the argument file is writable.
- */
-int
-iswritable (file)
- const char *file;
-{
- return isaccessible(file, W_OK);
-}
-
-/*
- * Returns non-zero if the argument file is accessable according to
- * mode. If compiled with SETXID_SUPPORT also works if cvs has setxid
- * bits set.
- */
-int
-isaccessible (file, mode)
- const char *file;
- const int mode;
-{
-#ifdef SETXID_SUPPORT
- struct stat sb;
- int umask = 0;
- int gmask = 0;
- int omask = 0;
- int uid;
-
- if ( CVS_STAT (file, &sb) == -1)
- return 0;
- if (mode == F_OK)
- return 1;
-
- uid = geteuid();
- if (uid == 0) /* superuser */
- {
- if (mode & X_OK)
- return sb.st_mode & (S_IXUSR|S_IXGRP|S_IXOTH);
- else
- return 1;
- }
-
- if (mode & R_OK)
- {
- umask |= S_IRUSR;
- gmask |= S_IRGRP;
- omask |= S_IROTH;
- }
- if (mode & W_OK)
- {
- umask |= S_IWUSR;
- gmask |= S_IWGRP;
- omask |= S_IWOTH;
- }
- if (mode & X_OK)
- {
- umask |= S_IXUSR;
- gmask |= S_IXGRP;
- omask |= S_IXOTH;
- }
-
- if (sb.st_uid == uid)
- return (sb.st_mode & umask) == umask;
- else if (sb.st_gid == getegid())
- return (sb.st_mode & gmask) == gmask;
- else
- return (sb.st_mode & omask) == omask;
-#else
- return CVS_ACCESS (file, mode) == 0;
-#endif
-}
-
-/*
- * Open a file and die if it fails
- */
-FILE *
-open_file (name, mode)
- const char *name;
- const char *mode;
-{
- FILE *fp;
-
- if ((fp = CVS_FOPEN (name, mode)) == NULL)
- error (1, errno, "cannot open %s", name);
- return (fp);
-}
-
-/*
- * Make a directory and die if it fails
- */
-void
-make_directory (name)
- const char *name;
-{
- struct stat sb;
-
- if ( CVS_STAT (name, &sb) == 0 && (!S_ISDIR (sb.st_mode)))
- error (0, 0, "%s already exists but is not a directory", name);
- if (!noexec && CVS_MKDIR (name, 0777) < 0)
- error (1, errno, "cannot make directory %s", name);
-}
-
-/*
- * Make a path to the argument directory, printing a message if something
- * goes wrong.
- */
-void
-make_directories (name)
- const char *name;
-{
- char *cp;
-
- if (noexec)
- return;
-
- if ( CVS_MKDIR (name, 0777) == 0 || errno == EEXIST)
- return;
- if (! existence_error (errno))
- {
- error (0, errno, "cannot make path to %s", name);
- return;
- }
- if ((cp = strrchr (name, '/')) == NULL)
- return;
- *cp = '\0';
- make_directories (name);
- *cp++ = '/';
- if (*cp == '\0')
- return;
- (void) CVS_MKDIR (name, 0777);
-}
-
-/* Create directory NAME if it does not already exist; fatal error for
- other errors. Returns 0 if directory was created; 1 if it already
- existed. */
-int
-mkdir_if_needed (name)
- char *name;
-{
- if (CVS_MKDIR (name, 0777) < 0)
- {
- if (errno != EEXIST
-#ifdef EACCESS
- /* This was copied over from the OS/2 code; I would guess it
- isn't needed here but that has not been verified. */
- && errno != EACCESS
-#endif
- )
- error (1, errno, "cannot make directory %s", name);
- return 1;
- }
- return 0;
-}
-
-/*
- * Change the mode of a file, either adding write permissions, or removing
- * all write permissions. Either change honors the current umask setting.
- */
-void
-xchmod (fname, writable)
- char *fname;
- int writable;
-{
- struct stat sb;
- mode_t mode, oumask;
-
- if ( CVS_STAT (fname, &sb) < 0)
- {
- if (!noexec)
- error (0, errno, "cannot stat %s", fname);
- return;
- }
- oumask = umask (0);
- (void) umask (oumask);
- if (writable)
- {
- mode = sb.st_mode | (~oumask
- & (((sb.st_mode & S_IRUSR) ? S_IWUSR : 0)
- | ((sb.st_mode & S_IRGRP) ? S_IWGRP : 0)
- | ((sb.st_mode & S_IROTH) ? S_IWOTH : 0)));
- }
- else
- {
- mode = sb.st_mode & ~(S_IWRITE | S_IWGRP | S_IWOTH) & ~oumask;
- }
-
- if (trace)
-#ifdef SERVER_SUPPORT
- (void) fprintf (stderr, "%c-> chmod(%s,%o)\n",
- (server_active) ? 'S' : ' ', fname,
- (unsigned int) mode);
-#else
- (void) fprintf (stderr, "-> chmod(%s,%o)\n", fname,
- (unsigned int) mode);
-#endif
- if (noexec)
- return;
-
- if (chmod (fname, mode) < 0)
- error (0, errno, "cannot change mode of file %s", fname);
-}
-
-/*
- * Rename a file and die if it fails
- */
-void
-rename_file (from, to)
- const char *from;
- const char *to;
-{
- if (trace)
-#ifdef SERVER_SUPPORT
- (void) fprintf (stderr, "%c-> rename(%s,%s)\n",
- (server_active) ? 'S' : ' ', from, to);
-#else
- (void) fprintf (stderr, "-> rename(%s,%s)\n", from, to);
-#endif
- if (noexec)
- return;
-
- if ( CVS_RENAME (from, to) < 0)
- error (1, errno, "cannot rename file %s to %s", from, to);
-}
-
-/*
- * link a file, if possible. Warning: the Windows NT version of this
- * function just copies the file, so only use this function in ways
- * that can deal with either a link or a copy.
- */
-int
-link_file (from, to)
- const char *from;
- const char *to;
-{
- if (trace)
-#ifdef SERVER_SUPPORT
- (void) fprintf (stderr, "%c-> link(%s,%s)\n",
- (server_active) ? 'S' : ' ', from, to);
-#else
- (void) fprintf (stderr, "-> link(%s,%s)\n", from, to);
-#endif
- if (noexec)
- return (0);
-
-#ifdef macintosh
- return (symlink ( (char *)macos_fixpath(from), (char *)macos_fixpath(to)));
-#else
- return (link (from, to));
-#endif
-}
-
-/*
- * unlink a file, if possible.
- */
-int
-unlink_file (f)
- const char *f;
-{
- if (trace)
-#ifdef SERVER_SUPPORT
- (void) fprintf (stderr, "%c-> unlink(%s)\n",
- (server_active) ? 'S' : ' ', f);
-#else
- (void) fprintf (stderr, "-> unlink(%s)\n", f);
-#endif
- if (noexec)
- return (0);
-
- return ( CVS_UNLINK (f));
-}
-
-/*
- * Unlink a file or dir, if possible. If it is a directory do a deep
- * removal of all of the files in the directory. Return -1 on error
- * (in which case errno is set).
- */
-int
-unlink_file_dir (f)
- const char *f;
-{
- if (trace)
-#ifdef SERVER_SUPPORT
- (void) fprintf (stderr, "%c-> unlink_file_dir(%s)\n",
- (server_active) ? 'S' : ' ', f);
-#else
- (void) fprintf (stderr, "-> unlink_file_dir(%s)\n", f);
-#endif
- if (noexec)
- return (0);
-
- /* For at least some unices, if root tries to unlink() a directory,
- instead of doing something rational like returning EISDIR,
- the system will gleefully go ahead and corrupt the filesystem.
- So we first call isdir() to see if it is OK to call unlink(). This
- doesn't quite work--if someone creates a directory between the
- call to isdir() and the call to unlink(), we'll still corrupt
- the filesystem. Where is the Unix Haters Handbook when you need
- it? */
- if (isdir(f))
- return deep_remove_dir(f);
- else
- {
- if ( CVS_UNLINK (f) != 0)
- return -1;
- }
- /* We were able to remove the file from the disk */
- return 0;
-}
-
-/* Remove a directory and everything it contains. Returns 0 for
- * success, -1 for failure (in which case errno is set).
- */
-
-static int
-deep_remove_dir (path)
- const char *path;
-{
- DIR *dirp;
- struct dirent *dp;
- char buf[PATH_MAX];
-
- if (CVS_RMDIR (path) != 0 && (errno == ENOTEMPTY || errno == EEXIST))
- {
- if ((dirp = CVS_OPENDIR (path)) == NULL)
- /* If unable to open the directory return
- * an error
- */
- return -1;
-
- while ((dp = readdir (dirp)) != NULL)
- {
- if (strcmp (dp->d_name, ".") == 0 ||
- strcmp (dp->d_name, "..") == 0)
- continue;
-
- sprintf (buf, "%s/%s", path, dp->d_name);
-
- /* See comment in unlink_file_dir explanation of why we use
- isdir instead of just calling unlink and checking the
- status. */
- if (isdir(buf))
- {
- if (deep_remove_dir(buf))
- {
- closedir(dirp);
- return -1;
- }
- }
- else
- {
- if (CVS_UNLINK (buf) != 0)
- {
- closedir(dirp);
- return -1;
- }
- }
- }
- closedir (dirp);
- return CVS_RMDIR (path);
- }
-
- /* Was able to remove the directory return 0 */
- return 0;
-}
-
-/* Read NCHARS bytes from descriptor FD into BUF.
- Return the number of characters successfully read.
- The number returned is always NCHARS unless end-of-file or error. */
-static size_t
-block_read (fd, buf, nchars)
- int fd;
- char *buf;
- size_t nchars;
-{
- char *bp = buf;
- size_t nread;
-
- do
- {
- nread = read (fd, bp, nchars);
- if (nread == (size_t)-1)
- {
-#ifdef EINTR
- if (errno == EINTR)
- continue;
-#endif
- return (size_t)-1;
- }
-
- if (nread == 0)
- break;
-
- bp += nread;
- nchars -= nread;
- } while (nchars != 0);
-
- return bp - buf;
-}
-
-
-/*
- * Compare "file1" to "file2". Return non-zero if they don't compare exactly.
- */
-int
-xcmp (file1, file2)
- const char *file1;
- const char *file2;
-{
- char *buf1, *buf2;
- struct stat sb1, sb2;
- int fd1, fd2;
- int ret;
-
- if ((fd1 = CVS_OPEN (file1, O_RDONLY)) < 0)
- error (1, errno, "cannot open file %s for comparing", file1);
- if ((fd2 = CVS_OPEN (file2, O_RDONLY)) < 0)
- error (1, errno, "cannot open file %s for comparing", file2);
- if (fstat (fd1, &sb1) < 0)
- error (1, errno, "cannot fstat %s", file1);
- if (fstat (fd2, &sb2) < 0)
- error (1, errno, "cannot fstat %s", file2);
-
- /* A generic file compare routine might compare st_dev & st_ino here
- to see if the two files being compared are actually the same file.
- But that won't happen in CVS, so we won't bother. */
-
- if (sb1.st_size != sb2.st_size)
- ret = 1;
- else if (sb1.st_size == 0)
- ret = 0;
- else
- {
- /* FIXME: compute the optimal buffer size by computing the least
- common multiple of the files st_blocks field */
- size_t buf_size = 8 * 1024;
- size_t read1;
- size_t read2;
-
- buf1 = xmalloc (buf_size);
- buf2 = xmalloc (buf_size);
-
- do
- {
- read1 = block_read (fd1, buf1, buf_size);
- if (read1 == (size_t)-1)
- error (1, errno, "cannot read file %s for comparing", file1);
-
- read2 = block_read (fd2, buf2, buf_size);
- if (read2 == (size_t)-1)
- error (1, errno, "cannot read file %s for comparing", file2);
-
- /* assert (read1 == read2); */
-
- ret = memcmp(buf1, buf2, read1);
- } while (ret == 0 && read1 == buf_size);
-
- free (buf1);
- free (buf2);
- }
-
- (void) close (fd1);
- (void) close (fd2);
- return (ret);
-}
-
-/* Just in case this implementation does not define this. */
-#ifndef L_tmpnam
-#define L_tmpnam 50
-#endif
-
-#ifdef LOSING_TMPNAM_FUNCTION
-char *
-cvs_temp_name ()
-{
- char value[L_tmpnam + 1];
-
- /* FIXME: Should be using TMPDIR. */
- strcpy (value, "/tmp/cvsXXXXXX");
- mktemp (value);
- return xstrdup (value);
-}
-#else
-/* Generate a unique temporary filename. Returns a pointer to a newly
- malloc'd string containing the name. Returns successfully or not at
- all. */
-char *
-cvs_temp_name ()
-{
- char value[L_tmpnam + 1];
- char *retval;
-
- /* FIXME: should be using TMPDIR, perhaps by using tempnam on systems
- which have it. */
- retval = tmpnam (value);
- if (retval == NULL)
- error (1, errno, "cannot generate temporary filename");
- return xstrdup (retval);
-}
-#endif
-
-/* Return non-zero iff FILENAME is absolute.
- Trivial under Unix, but more complicated under other systems. */
-int
-isabsolute (filename)
- const char *filename;
-{
- return filename[0] == '/';
-}
-
-
-/* Return a pointer into PATH's last component. */
-char *
-last_component (path)
- char *path;
-{
- char *last = strrchr (path, '/');
-
- if (last)
- return last + 1;
- else
- return path;
-}
-
-/* Return the home directory. Returns a pointer to storage
- managed by this function or its callees (currently getenv). */
-char *
-get_homedir ()
-{
- return getenv ("HOME");
-}
-
-/* See cvs.h for description. On unix this does nothing, because the
- shell expands the wildcards. */
-void
-expand_wild (argc, argv, pargc, pargv)
- int argc;
- char **argv;
- int *pargc;
- char ***pargv;
-{
- int i;
- *pargc = argc;
- *pargv = (char **) xmalloc (argc * sizeof (char *));
- for (i = 0; i < argc; ++i)
- (*pargv)[i] = xstrdup (argv[i]);
-}
diff --git a/gnu/usr.bin/cvs/macintosh/mac_config.h b/gnu/usr.bin/cvs/macintosh/mac_config.h
deleted file mode 100644
index 241a5dda64f..00000000000
--- a/gnu/usr.bin/cvs/macintosh/mac_config.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * mac_config.h - Macintosh-specific definitions and configuration settings
- *
- * MDLadwig <mike@twinpeaks.prc.com> --- July 1996
- */
-// MacCVS with AppleEvent IO and no console support. If this is not defined then IO will be
-// via the SIOUX console
-//#define AE_IO_HANDLERS
-// Setup includes to use MSL instead of Plum-Hall ANSI library
-//#define MSL_LIBRARY
-#define AE_OUTBUF_SIZE 32000 // Maximum size of output Apple Events
-#define AE_TIMEOUT_SECONDS 30 // Timeout for AppleEvents command recipt
-#define ArgMax 512 // Maximum number of Args passed via AE command
-#define EnvMax 512 // Maximum number of Env Vars passed via AE command
-#define STACK_SIZE_68K 98305 // Stack size for 68k version (PPC set in CW prefs)
diff --git a/gnu/usr.bin/cvs/macintosh/mac_init.c b/gnu/usr.bin/cvs/macintosh/mac_init.c
deleted file mode 100644
index 69f355b6e52..00000000000
--- a/gnu/usr.bin/cvs/macintosh/mac_init.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * mac_init.c --- routines to initialize and cleanup macintosh behavior
- *
- * MDLadwig <mike@twinpeaks.prc.com> --- June 1996
- */
-#include "mac_config.h"
-
-#ifdef __POWERPC__
-#include <MacHeadersPPC>
-#else
-#include <MacHeaders68K>
-#endif
-
-#include <sioux.h>
-#include <GUSI.h>
-
-extern char **Args;
-extern char **EnvVars, **EnvVals;
-extern int ArgC;
-extern int EnvC;
-
-extern int argc;
-extern char **argv;
-
-void
-macos_error_cleanup( void )
-{
- Lock_Cleanup();
- RemoveConsole(); // FIXME - Ugly, but necessary until MW fixes _exit
-}
-
-void
-InitializeMacToolbox( void )
-{
- #ifndef __POWERPC__
- SetApplLimit(GetApplLimit() - STACK_SIZE_68K);
- #endif
-
- MaxApplZone();
- MoreMasters();
-}
-
-void
-MacOS_Initialize( int *argc, char ***argv )
-{
- InitializeMacToolbox();
-
- GUSISetup(GUSIwithSIOUXSockets);
- GUSISetup(GUSIwithUnixSockets);
-
- SIOUXSettings.showstatusline = TRUE;
- SIOUXSettings.autocloseonquit = FALSE;
- SIOUXSettings.asktosaveonclose = TRUE;
-
- #ifdef AE_IO_HANDLERS
- GetUnixCommandEnvironment( "cvs" );
- *argc = ArgC;
- *argv = Args;
- #else
- *argc = ccommand(argv);
- #endif
-
- error_set_cleanup (macos_error_cleanup);
-}
-
-void
-MacOS_Cleanup ( void )
-{
- RemoveConsole(); // FIXME - Ugly, but necessary until MW fixes _exit
-}
-
diff --git a/gnu/usr.bin/cvs/macintosh/maccvs.pch b/gnu/usr.bin/cvs/macintosh/maccvs.pch
deleted file mode 100644
index fe5b5c06bb9..00000000000
--- a/gnu/usr.bin/cvs/macintosh/maccvs.pch
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifdef __POWERPC__
-#include <MacHeadersPPC>
-#else
-#include <MacHeaders68K>
-#endif
-
-#define HAVE_CONFIG_H \ No newline at end of file
diff --git a/gnu/usr.bin/cvs/macintosh/maccvs.r b/gnu/usr.bin/cvs/macintosh/maccvs.r
deleted file mode 100644
index 0e5c7e46f5f..00000000000
--- a/gnu/usr.bin/cvs/macintosh/maccvs.r
+++ /dev/null
@@ -1,52 +0,0 @@
-#define SystemSevenOrLater 1
-
-#include "Types.r"
-#include "SysTypes.r"
-#include "BalloonTypes.r"
-#include "AEUserTermTypes.r"
-#include "AERegistry.r"
-#include "AEObjects.r"
-
-#define __kPrefSize 512
-#define __kMinSize 512
-
-#define GUSI_PREF_VERSION '0150'
-
-#include "GUSI.r"
-
-resource 'GU·I' (GUSIRsrcID) {
- 'TEXT', 'CWIE', noAutoSpin, useChdir, approxStat,
- noTCPDaemon, noUDPDaemon,
- noConsole,
- {};
-};
-
-resource 'aete' (0, "MacCVS Suite") {
- 0x01, 0x00, english, roman,
- {
- "MacCVS Suite", "Custom events", 'MCVS', 1, 1,
- {
- "Do Command", "Execute a CVS command", 'misc', 'dosc',
- 'null', "", replyOptional, singleItem, notEnumerated, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved,
- 'TEXT', "Command to execute", directParamRequired, singleItem, notEnumerated,
- changesState, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved,
- {
- "Mode", 'MODE', 'MODE', "Mode (AE, File).", optional, singleItem, enumerated, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved,
- "Environment", 'ENVT', 'TEXT', "Environment variables.", optional, listOfItems, notEnumerated, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved,
- "Filename", 'FILE', 'TEXT', "Output file path.", optional, singleItem, notEnumerated, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved,
- "Pathway", 'SPWD', 'TEXT', "Starting pathway.", optional, singleItem, notEnumerated, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved,
- "NoLineBuffer", 'LBUF', 'bool', "if true, send each result line as separate AE.", optional, singleItem, notEnumerated, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved,
- }
- },
- {},
- {},
- {
- 'MODE',
- {
- "AE", 'TOAE', "Redirect standard output to apple events",
- "File", 'FILE', "Redirect standard output to a file",
- },
- },
- }
-};
-
diff --git a/gnu/usr.bin/cvs/macintosh/macos_filesys.c b/gnu/usr.bin/cvs/macintosh/macos_filesys.c
deleted file mode 100644
index 26a93847c81..00000000000
--- a/gnu/usr.bin/cvs/macintosh/macos_filesys.c
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * macos_filesys.c
- * Filesystem handling stuff for macos
- *
- * Some of this stuff is not "regular", but there are a number of weird
- * conditions that a plain filepath translation didn't seem to handle.
- * For now, this seems to work.
- *
- * Michael Ladwig <mike@twinpeaks.prc.com> --- November 1995
- */
-
-#include <cvs.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-static char *macos_fixpath (const char *path);
-static char scratchPath[1024];
-
-int
-macos_mkdir( const char *path, int oflag )
-{
- char macPath[1024], *sepCh;
-
- strcpy( macPath, ":" );
- strcat( macPath, path );
- while( (sepCh = strchr(macPath, '/')) != NULL )
- *sepCh = ':';
-
- return mkdir(macPath);
-}
-
-int
-macos_open( const char *path, int oflag, ... )
-{
- char macPath[1024], *sepCh;
-
- strcpy( macPath, ":" );
- strcat( macPath, path );
- while( (sepCh = strchr(macPath, '/')) != NULL )
- *sepCh = ':';
-
- return open(macPath, oflag);
-}
-
-int
-macos_chmod( const char *path, mode_t mode )
-{
- char macPath[1024], *sepCh;
-
- strcpy( macPath, ":" );
- strcat( macPath, path );
- while( (sepCh = strchr(macPath, '/')) != NULL )
- *sepCh = ':';
-
- return chmod(macPath, mode);
-}
-
-int
-macos_creat( const char *path, mode_t mode )
-{
- char macPath[1024], *sepCh;
-
- strcpy( macPath, ":" );
- strcat( macPath, path );
- while( (sepCh = strchr(macPath, '/')) != NULL )
- *sepCh = ':';
-
- return creat(macPath);
-}
-
-FILE *
-macos_fopen( const char *path, const char *mode )
-{
- FILE *fp;
- char macPath[1024], *sepCh;
-
- strcpy( macPath, ":" );
- strcat( macPath, path );
- while( (sepCh = strchr(macPath, '/')) != NULL )
- *sepCh = ':';
-
- fp = fopen(macPath, mode);
-
- /* Don't know why I'm getting ENOTDIR, but it should be ENOENT */
-
- if( (fp == NULL) && (errno == ENOTDIR) ) errno = ENOENT;
-
- return fp;
-}
-
-int
-macos_chdir( const char *path )
-{
- char macPath[1024], *sepCh;
- int r;
-
- strcpy( macPath, ":" );
- strcat( macPath, path );
- while( (sepCh = strchr(macPath, '/')) != NULL )
- *sepCh = ':';
-
- r = chdir(macPath+1);
- if( r < 0 )
- return chdir(macPath);
-
- return r;
-}
-
-int
-macos_access(const char *path, int amode)
-{
- return access( macos_fixpath(path), amode );
-}
-
-DIR *
-macos_opendir(const char *path)
-{
- FILE *fp;
- char macPath[1024], *sepCh;
-
- strcpy( macPath, ":" );
-
- if( strcmp(path, ".") != 0 )
- strcat( macPath, path );
- while( (sepCh = strchr(macPath, '/')) != NULL )
- *sepCh = ':';
-
- return opendir( macPath );
-}
-
-int
-macos_stat (const char *path, struct stat *ststr)
-{
- return stat( macos_fixpath(path), ststr );
-}
-
-int
-macos_rename (const char *path, const char *newpath)
-{
- char macPath_from[1024], macPath_to[1024];
-
- strcpy( macPath_from, macos_fixpath(path) );
- strcpy( macPath_to, macos_fixpath(newpath) );
-
- return rename( macPath_from, macPath_to );
-}
-
-int
-macos_unlink (const char *path)
-{
- return unlink( macos_fixpath(path) );
-}
-
-char *
-macos_fixpath (const char *path)
-{
- char *sepCh;
-
- strcpy( scratchPath, ":" );
-
- if( (*path == '.') && (*(path+1) == '/') )
- strcat( scratchPath, path+2 );
- else
- strcat( scratchPath, path );
- while( (sepCh = strchr(scratchPath, '/')) != NULL )
- *sepCh = ':';
-
- return scratchPath;
-}
-
-/* Shamelessly stolen from the OS2 port. Oddly, only the fopen calls
- seem to respect the binary-text distinction, so I have rewritten
- the code to use fopen, fread, fwrite, and fclose instead of open. */
-
-void
-convert_file (char *infile, int inflags,
- char *outfile, int outflags)
-{
- FILE *infd, *outfd;
- char buf[8192];
- int len;
- char iflags[10], oflags[10];
-
- if( inflags & OPEN_BINARY )
- strcpy( iflags, "rb" );
- else
- strcpy( iflags, "r" );
-
- if( outflags & OPEN_BINARY )
- strcpy( oflags, "wb" );
- else
- strcpy( oflags, "w" );
-
- if ((infd = CVS_FOPEN (infile, iflags)) == NULL)
- error (1, errno, "couldn't read %s", infile);
- if ((outfd = CVS_FOPEN (outfile, oflags)) == NULL)
- error (1, errno, "couldn't write %s", outfile);
-
- while ((len = fread (buf, sizeof (char), sizeof (buf), infd)) > 0)
- if (fwrite (buf, sizeof (char), len, outfd) < 0)
- error (1, errno, "error writing %s", outfile);
- if (len < 0)
- error (1, errno, "error reading %s", infile);
-
- if (fclose (outfd) < 0)
- error (0, errno, "warning: couldn't close %s", outfile);
- if (fclose (infd) < 0)
- error (0, errno, "warning: couldn't close %s", infile);
-} \ No newline at end of file
diff --git a/gnu/usr.bin/cvs/macintosh/options.h b/gnu/usr.bin/cvs/macintosh/options.h
deleted file mode 100644
index fe0820f5f31..00000000000
--- a/gnu/usr.bin/cvs/macintosh/options.h
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- * Copyright (c) 1992, Brian Berliner and Jeff Polk
- * Copyright (c) 1989-1992, Brian Berliner
- *
- * You may distribute under the terms of the GNU General Public License as
- * specified in the README file that comes with the CVS 1.4 kit.
- *
- * This file holds (most of) the configuration tweaks that can be made to
- * customize CVS for your site. CVS comes configured for a typical SunOS 4.x
- * environment. The comments for each configurable item are intended to be
- * self-explanatory. All #defines are tested first to see if an over-riding
- * option was specified on the "make" command line.
- *
- * If special libraries are needed, you will have to edit the Makefile.in file
- * or the configure script directly. Sorry.
- */
-
-/*
- * CVS provides the most features when used in conjunction with the Version-5
- * release of RCS. Thus, it is the default. This also assumes that GNU diff
- * Version-1.15 is being used as well -- you will have to configure your RCS
- * V5 release separately to make this the case. If you do not have RCS V5 and
- * GNU diff V1.15, comment out this define. You should not try mixing and
- * matching other combinations of these tools.
- */
-#ifndef HAVE_RCS5
-#define HAVE_RCS5
-#endif
-
-/*
- * If, before installing this version of CVS, you were running RCS V4 AND you
- * are installing this CVS and RCS V5 and GNU diff 1.15 all at the same time,
- * you should turn on the following define. It only exists to try to do
- * reasonable things with your existing checked out files when you upgrade to
- * RCS V5, since the keyword expansion formats have changed with RCS V5.
- *
- * If you already have been running with RCS5, or haven't been running with CVS
- * yet at all, or are sticking with RCS V4 for now, leave the commented out.
- */
-#ifndef HAD_RCS4
-/* #define HAD_RCS4 */
-#endif
-
-/*
- * For portability and heterogeneity reasons, CVS is shipped by default using
- * my own text-file version of the ndbm database library in the src/myndbm.c
- * file. If you want better performance and are not concerned about
- * heterogeneous hosts accessing your modules file, turn this option off.
- */
-#ifndef MY_NDBM
-#define MY_NDBM
-#endif
-
-/*
- * The "diff" program to execute when creating patch output. This "diff"
- * must support the "-c" option for context diffing. Specify a full
- * pathname if your site wants to use a particular diff. If you are
- * using the GNU version of diff (version 1.15 or later), this should
- * be "diff -a".
- *
- * NOTE: this program is only used for the ``patch'' sub-command (and
- * for ``update'' if you are using the server). The other commands
- * use rcsdiff which will use whatever version of diff was specified
- * when rcsdiff was built on your system.
- */
-
-#ifndef DIFF
-#define DIFF "@gdiff_path@"
-#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 "@ggrep_path@"
-#endif
-
-/*
- * The "rm" program to execute when pruning directories that are not part of
- * a release. This "rm" must support the "-fr" options. Specify a full
- * pathname if your site wants to use a particular rm.
- */
-#ifndef RM
-#define RM "rm"
-#endif
-
-/*
- * The "sort" program to execute when displaying the module database. Specify
- * a full pathname if your site wants to use a particular sort.
- */
-#ifndef SORT
-#define SORT "sort"
-#endif
-
-/*
- * The "patch" program to run when using the CVS server and accepting
- * patches across the network. Specify a full pathname if your site
- * wants to use a particular patch.
- */
-#ifndef PATCH_PROGRAM
-#define PATCH_PROGRAM "patch"
-#endif
-
-/*
- * By default, RCS programs are executed with the shell or through execlp(),
- * so the user's PATH environment variable is searched. If you'd like to
- * bind all RCS programs to a certain directory (perhaps one not in most
- * people's PATH) then set the default in RCSBIN_DFLT. Note that setting
- * this here will cause all RCS programs to be executed from this directory,
- * unless the user overrides the default with the RCSBIN environment variable
- * or the "-b" option to CVS.
- *
- * This define should be either the empty string ("") or a full pathname to the
- * directory containing all the installed programs from the RCS distribution.
- */
-#ifndef RCSBIN_DFLT
-#define RCSBIN_DFLT ""
-#endif
-
-/*
- * The default editor to use, if one does not specify the "-e" option to cvs,
- * or does not have an EDITOR environment variable. I set this to just "vi",
- * and use the shell to find where "vi" actually is. This allows sites with
- * /usr/bin/vi or /usr/ucb/vi to work equally well (assuming that your PATH
- * is reasonable).
- *
- * The notepad program seems to be Windows NT's bare-bones text editor.
- */
-#ifndef EDITOR_DFLT
-#define EDITOR_DFLT "notepad"
-#endif
-
-/*
- * The default umask to use when creating or otherwise setting file or
- * directory permissions in the repository. Must be a value in the
- * range of 0 through 0777. For example, a value of 002 allows group
- * rwx access and world rx access; a value of 007 allows group rwx
- * access but no world access. This value is overridden by the value
- * of the CVSUMASK environment variable, which is interpreted as an
- * octal number.
- */
-#ifndef UMASK_DFLT
-#define UMASK_DFLT 002
-#endif
-
-/*
- * The cvs admin command is restricted to the members of the group
- * CVS_ADMIN_GROUP. If this group does not exist, all users are
- * allowed to run cvs admin. To disable the cvs admin for all users,
- * create an empty group CVS_ADMIN_GROUP. To disable access control for
- * cvs admin, comment out the define below.
- *
- * Under Windows NT and OS/2, this must not be used because it tries
- * to include <grp.h>.
- */
-#ifdef CVS_ADMIN_GROUP
-/* #define CVS_ADMIN_GROUP "cvsadmin" */
-#endif
-
-/*
- * The Repository file holds the path to the directory within the source
- * repository that contains the RCS ,v files for each CVS working directory.
- * This path is either a full-path or a path relative to CVSROOT.
- *
- * The only advantage that I can see to having a relative path is that One can
- * change the physical location of the master source repository, change one's
- * CVSROOT environment variable, and CVS will work without problems. I
- * recommend using full-paths.
- */
-#ifndef RELATIVE_REPOS
-/* #define RELATIVE_REPOS */
-#endif
-
-/*
- * When committing or importing files, you must enter a log message.
- * Normally, you can do this either via the -m flag on the command line or an
- * editor will be started for you. If you like to use logging templates (the
- * rcsinfo file within the $CVSROOT/CVSROOT directory), you might want to
- * force people to use the editor even if they specify a message with -m.
- * Enabling FORCE_USE_EDITOR will cause the -m message to be appended to the
- * temp file when the editor is started.
- */
-#ifndef FORCE_USE_EDITOR
-/* #define FORCE_USE_EDITOR */
-#endif
-
-/*
- * When locking the repository, some sites like to remove locks and assume
- * the program that created them went away if the lock has existed for a long
- * time. This used to be the default for previous versions of CVS. CVS now
- * attempts to be much more robust, so lock files should not be left around
- * by mistake. The new behaviour will never remove old locks (they must now
- * be removed by hand). Enabling CVS_FUDGELOCKS will cause CVS to remove
- * locks that are older than CVSLCKAGE seconds.
- * Use of this option is NOT recommended.
- */
-#ifndef CVS_FUDGELOCKS
-/* #define CVS_FUDGELOCKS */
-#endif
-
-/*
- * When committing a permanent change, CVS and RCS make a log entry of
- * who committed the change. If you are committing the change logged in
- * as "root" (not under "su" or other root-priv giving program), CVS/RCS
- * cannot determine who is actually making the change.
- *
- * As such, by default, CVS disallows changes to be committed by users
- * logged in as "root". You can disable this option by commenting
- * out the lines below.
- *
- * Under Windows NT, privileges are associated with groups, not users,
- * so the case in which someone has logged in as root does not occur.
- * Thus, there is no need for this hack.
- *
- * todo: I don't know about OS/2 yet. -kff
- */
-#undef CVS_BADROOT
-
-/*
- * The "cvs admin" command allows people to get around most of the logging
- * and info procedures within CVS. For exmaple, "cvs tag tagname filename"
- * will perform some validity checks on the tag, while "cvs admin -Ntagname"
- * will not perform those checks. For this reason, some sites may wish to
- * disable the admin function completely.
- *
- * To disable the admin function, uncomment the lines below.
- */
-#ifndef CVS_NOADMIN
-/* #define CVS_NOADMIN */
-#endif
-
-/*
- * The "cvs diff" command accepts all the single-character options that GNU
- * diff (1.15) accepts. Except -D. GNU diff uses -D as a way to put
- * cpp-style #define's around the output differences. CVS, by default, uses
- * -D to specify a free-form date (like "cvs diff -D '1 week ago'"). If
- * you would prefer that the -D option of "cvs diff" work like the GNU diff
- * option, then comment out this define.
- */
-#ifndef CVS_DIFFDATE
-#define CVS_DIFFDATE
-#endif
-
-/*
- * define this to enable the SETXID support (see FAQ 4D.13)
- * [ We have no such thing under OS/2, so far as I know. ]
- */
-#undef SETXID_SUPPORT
-
-/*
- * "cvs login" is under construction. Don't define this unless you're
- * testing it, in which case you're me and you already know that.
- */
-/* #define CVS_LOGIN */
-
-/* End of CVS configuration section */
-
-/*
- * Externs that are included in libc, but are used frequently enough to
- * warrant defining here.
- */
-#ifndef STDC_HEADERS
-extern void exit ();
-#endif
-
-#ifndef getwd
-extern char *getwd ();
-#endif
-
diff --git a/gnu/usr.bin/cvs/macintosh/pwd.c b/gnu/usr.bin/cvs/macintosh/pwd.c
deleted file mode 100644
index 7bcc30fd995..00000000000
--- a/gnu/usr.bin/cvs/macintosh/pwd.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* pwd.c - Try to approximate UN*X's getuser...() functions under MS-DOS.
- Copyright (C) 1990 by Thorsten Ohl, td12@ddagsi3.bitnet
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 1, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- $Header: /cvs/OpenBSD/src/gnu/usr.bin/cvs/macintosh/Attic/pwd.c,v 1.1 1996/01/30 00:19:39 tholo Exp $
-*/
-
-/* This 'implementation' is conjectured from the use of this functions in
- the RCS and BASH distributions. Of course these functions don't do too
- much useful things under MS-DOS, but using them avoids many "#ifdef
- MSDOS" in ported UN*X code ... */
-
-/* Stripped out stuff - MDLadwig <mike@twinpeaks.prc.com> --- Nov 1995 */
-
-#include <cvs.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-static char *home_dir = "."; /* we feel (no|every)where at home */
-static struct passwd pw; /* should we return a malloc()'d structure */
-static struct group gr; /* instead of pointers to static structures? */
-
-#if !__POWERPC__
-pid_t getpid( void ) { return 0; } /* getpid */
-#endif
-
-pid_t waitpid(pid_t, int *, int) { return 0; } /* waitpid */
-
-mode_t umask(mode_t) { return 0; } /* Umask */
-
-/* return something like a username in a (butchered!) passwd structure. */
-
-struct passwd *
-getpwuid (int uid)
-{
- pw.pw_name = NULL; /* getlogin (); */
- pw.pw_dir = home_dir;
- pw.pw_shell = NULL;
- pw.pw_uid = 0;
-
- return &pw;
-}
-
-/* Misc uid stuff */
-
-struct passwd * getpwnam (char *name) { return (struct passwd *) 0; }
-int getuid () { return 0; }
-int geteuid () { return 0; }
-int getegid () { return 0; }
-
diff --git a/gnu/usr.bin/cvs/macintosh/pwd.h b/gnu/usr.bin/cvs/macintosh/pwd.h
deleted file mode 100644
index d451dbc0e4d..00000000000
--- a/gnu/usr.bin/cvs/macintosh/pwd.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*********************************************************************
-Project : GUSI - Grand Unified Socket Interface
-File : pwd.h - Provide mission header ioctl.h for CodeWarrior
-Author : Matthias Neeracher
-Language : MPW C/C++
-$Log: pwd.h,v $
-Revision 1.1 1996/10/18 03:36:59 tholo
-Initial revision
-
-Revision 1.1 1996/07/26 20:08:29 kingdon
-Check in new macintosh directory from Mike Ladwig. I believe that this
-checkin contains exactly the tarfile he sent to me, with the exception
-of the files SIOUX.c SIOUXGlobals.h SIOUXMenus.h SIOUXWindows.h which
-are copyright Metrowerks and which we therefore cannot distribute.
-
-*********************************************************************/
-
-#include <sys/types.h>
-
-struct group { /* see getgrent(3) */
- char *gr_name;
- char *gr_passwd;
- gid_t gr_gid;
- char **gr_mem;
-};
-
-struct passwd {
- char *pw_name;
- char *pw_passwd;
- uid_t pw_uid;
- gid_t pw_gid;
- char *pw_age;
- char *pw_comment;
- char *pw_gecos;
- char *pw_dir;
- char *pw_shell;
-}; \ No newline at end of file
diff --git a/gnu/usr.bin/cvs/macintosh/rcmd.c b/gnu/usr.bin/cvs/macintosh/rcmd.c
deleted file mode 100644
index 877be42a2bc..00000000000
--- a/gnu/usr.bin/cvs/macintosh/rcmd.c
+++ /dev/null
@@ -1,247 +0,0 @@
-/* $NetBSD: rcmd.c,v 1.12 1995/06/03 22:33:34 mycroft Exp $ */
-
-/*
- * Copyright (c) 1983, 1993, 1994
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-#if 0
-static char sccsid[] = "@(#)rcmd.c 8.3 (Berkeley) 3/26/94";
-#else
-static char *rcsid = "$NetBSD: rcmd.c,v 1.12 1995/06/03 22:33:34 mycroft Exp $";
-#endif
-#endif /* LIBC_SCCS and not lint */
-
-#define MAXPATHLEN 1024
-#ifndef MAXHOSTNAMELEN
-#define MAXHOSTNAMELEN 256
-#endif
-
-#include <GUSI.h>
-#include <sys/errno.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-
-#include <netinet/in.h>
-
-#include <signal.h>
-#include <fcntl.h>
-#include <netdb.h>
-#include <unistd.h>
-#include <pwd.h>
-#include <errno.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <string.h>
-
-int
-rcmd(ahost, rport, locuser, remuser, cmd, fd2p)
- char **ahost;
- u_short rport;
- const char *locuser, *remuser, *cmd;
- int *fd2p;
-{
- struct hostent *hp;
- struct sockaddr_in sin, from;
- fd_set reads;
- long oldmask;
- pid_t pid;
- int s, lport, timo;
- char c;
-
- pid = getpid();
- hp = gethostbyname(*ahost);
- if (hp == NULL) {
- /*herror(*ahost);*/
- (void)fprintf(stderr,
- "rcmd: socket: gethostbyname failed for %s\n", *ahost);
- return (-1);
- }
- *ahost = hp->h_name;
- /* oldmask = sigblock(sigmask(SIGURG)); */
- for (timo = 1, lport = IPPORT_RESERVED - 1;;) {
- s = rresvport(&lport);
- if (s < 0) {
- if (errno == EDEADLK) /* EDEADLK */
- (void)fprintf(stderr,
- "rcmd: socket: All ports in use\n");
- else
- (void)fprintf(stderr, "rcmd: socket: %s\n",
- strerror(errno));
- /* sigsetmask(oldmask); */
- return (-1);
- }
- fcntl(s, F_SETOWN, pid);
- sin.sin_len = sizeof(struct sockaddr_in);
- sin.sin_family = hp->h_addrtype;
- sin.sin_port = rport;
- bcopy(hp->h_addr_list[0], &sin.sin_addr, hp->h_length);
- if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) >= 0)
- break;
- (void)close(s);
- if (errno == EADDRINUSE) {
- lport--;
- continue;
- }
- if (errno == ECONNREFUSED && timo <= 16) {
- (void)sleep(timo);
- timo *= 2;
- continue;
- }
- if (hp->h_addr_list[1] != NULL) {
- int oerrno = errno;
-
- (void)fprintf(stderr, "connect to address %s: ",
- inet_ntoa(sin.sin_addr));
- errno = oerrno;
- perror(0);
- hp->h_addr_list++;
- bcopy(hp->h_addr_list[0], &sin.sin_addr, hp->h_length);
- (void)fprintf(stderr, "Trying %s...\n",
- inet_ntoa(sin.sin_addr));
- continue;
- }
- (void)fprintf(stderr, "%s: %s\n", hp->h_name, strerror(errno));
- /* sigsetmask(oldmask); */
- return (-1);
- }
- lport--;
- if (fd2p == 0) {
- write(s, "", 1);
- lport = 0;
- } else {
- char num[8];
- int s2 = rresvport(&lport), s3;
- int len = sizeof(from);
- if (s2 < 0)
- goto bad;
- listen(s2, 1);
- /*(void)snprintf(num, sizeof(num), "%d", lport);*/
- sprintf(num,"%d", lport);
- if (write(s, num, strlen(num)+1) != strlen(num)+1) {
- (void)fprintf(stderr,
- "rcmd: write (setting up stderr): %s\n",
- strerror(errno));
- (void)close(s2);
- goto bad;
- }
- FD_ZERO(&reads);
- FD_SET(s, &reads);
- FD_SET(s2, &reads);
- errno = 0;
- if (select(MAX(s, s2) + 1, &reads, 0, 0, 0) < 1 ||
- !FD_ISSET(s2, &reads)) {
- if (errno != 0)
- (void)fprintf(stderr,
- "rcmd: select (setting up stderr): %s\n",
- strerror(errno));
- else
- (void)fprintf(stderr,
- "select: protocol failure in circuit setup\n");
- (void)close(s2);
- goto bad;
- }
- s3 = accept(s2, (struct sockaddr *)&from, &len);
- (void)close(s2);
- if (s3 < 0) {
- (void)fprintf(stderr,
- "rcmd: accept: %s\n", strerror(errno));
- lport = 0;
- goto bad;
- }
- *fd2p = s3;
- from.sin_port = ntohs(from.sin_port);
- if (from.sin_family != AF_INET ||
- from.sin_port >= IPPORT_RESERVED ||
- from.sin_port < IPPORT_RESERVED / 2) {
- (void)fprintf(stderr,
- "socket: protocol failure in circuit setup.\n");
- goto bad2;
- }
- }
- (void)write(s, locuser, strlen(locuser)+1);
- (void)write(s, remuser, strlen(remuser)+1);
- (void)write(s, cmd, strlen(cmd)+1);
- if (read(s, &c, 1) != 1) {
- (void)fprintf(stderr,
- "rcmd: %s: %s\n", *ahost, strerror(errno));
- goto bad2;
- }
- if (c != 0) {
- while (read(s, &c, 1) == 1) {
- (void)write(STDERR_FILENO, &c, 1);
- if (c == '\n')
- break;
- }
- goto bad2;
- }
- /* sigsetmask(oldmask); */
- return (s);
-bad2:
- if (lport)
- (void)close(*fd2p);
-bad:
- (void)close(s);
- /* sigsetmask(oldmask); */
- return (-1);
-}
-
-int
-rresvport(alport)
- int *alport;
-{
- struct sockaddr_in sin;
- int s;
-
- sin.sin_len = sizeof(struct sockaddr_in);
- sin.sin_family = AF_INET;
- sin.sin_addr.s_addr = INADDR_ANY;
- s = socket(AF_INET, SOCK_STREAM, 0);
- if (s < 0)
- return (-1);
- for (;;) {
- sin.sin_port = htons((u_short)*alport);
- if (bind(s, (struct sockaddr *)&sin, sizeof(sin)) >= 0)
- return (s);
- if (errno != EADDRINUSE) {
- (void)close(s);
- return (-1);
- }
- (*alport)--;
- if (*alport == IPPORT_RESERVED/2) {
- (void)close(s);
- errno = EDEADLK; /* close */
- return (-1);
- }
- }
-}
-
diff --git a/gnu/usr.bin/cvs/macintosh/run.c b/gnu/usr.bin/cvs/macintosh/run.c
deleted file mode 100644
index bdc59160398..00000000000
--- a/gnu/usr.bin/cvs/macintosh/run.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * run.c --- stubs for unused cvs functions in 'src/run.c'
- *
- * MDLadwig <mike@twinpeaks.prc.com> --- Nov 1995
- */
-
-#include <cvs.h>
-#include <stdio.h>
-
-void run_arg (const char *s) { }
-void run_print (FILE * fp) { }
-void run_setup (const char *fmt,...) { }
-void run_args (const char *fmt,...) { }
-int run_exec (char *stin, char *stout, char *sterr, int flags) { return 0; }
-FILE * Popen (const char *, const char *) { return NULL; }
-int pclose(FILE *fp) { return 0; }
-int piped_child (char **, int *, int *) { return 0; }
-void close_on_exec (int) { }
-int filter_stream_through_program (int, int, char **, pid_t *) { return 0; }
diff --git a/gnu/usr.bin/cvs/macintosh/server_if.c b/gnu/usr.bin/cvs/macintosh/server_if.c
deleted file mode 100644
index 8b676d57e9b..00000000000
--- a/gnu/usr.bin/cvs/macintosh/server_if.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * server_if.c
- * Open connection to the CVS server under MacOS
- *
- * Michael Ladwig <mike@twinpeaks.prc.com> --- November 1995
- */
-
-#include "cvs.h"
-
-#include <GUSI.h>
-#include <sys/socket.h>
-
-static int read_fd, write_fd;
-
-void
-macos_start_server (int *tofd, int *fromfd,
- char *client_user,
- char *server_user,
- char *server_host,
- char *server_cvsroot)
-{
- char *cvs_server;
- char *command;
- struct servent *s;
- unsigned short port;
-
- if (! (cvs_server = getenv ("CVS_SERVER")))
- cvs_server = "cvs";
- command = alloca (strlen (cvs_server)
- + strlen (server_cvsroot)
- + 50);
- sprintf (command, "%s -d %s server", cvs_server, server_cvsroot);
-
- if ((s = getservbyname("shell", "tcp")) == NULL)
- error (1, errno, "cannot getservbyname for shell, tcp");
-
- else
- port = s->s_port;
-
- read_fd = rcmd (&server_host,
- port,
- client_user,
- (server_user ? server_user : client_user),
- command,
- 0);
- if (read_fd < 0)
- error (1, errno, "cannot start server via rcmd");
-
- /* Split the socket into a reading and a writing half. */
- if ((write_fd = dup (read_fd)) < 0)
- error (1, errno, "duplicating server connection");
-
- *tofd = write_fd;
- *fromfd = read_fd;
-}
-
-
-void
-macos_shutdown_server (int to_server)
-{
- if( close (read_fd) != 0 ) perror( "close on read_fd");
- if( close (write_fd) != 0 ) perror( "close on write_fd");
-}
diff --git a/gnu/usr.bin/cvs/macintosh/services b/gnu/usr.bin/cvs/macintosh/services
deleted file mode 100644
index 60013751f99..00000000000
--- a/gnu/usr.bin/cvs/macintosh/services
+++ /dev/null
@@ -1,91 +0,0 @@
-#
-# Network services, Internet style
-#
-# @(#)services 8.1 (Berkeley) 6/9/93
-#
-tcpmux 1/tcp # TCP port multiplexer (RFC1078)
-echo 7/tcp
-echo 7/udp
-discard 9/tcp sink null
-discard 9/udp sink null
-systat 11/tcp users
-daytime 13/tcp
-daytime 13/udp
-netstat 15/tcp
-qotd 17/tcp quote
-chargen 19/tcp ttytst source
-chargen 19/udp ttytst source
-ftp 21/tcp
-telnet 23/tcp
-smtp 25/tcp mail
-time 37/tcp timserver
-time 37/udp timserver
-rlp 39/udp resource # resource location
-nameserver 42/tcp name # IEN 116
-whois 43/tcp nicname
-domain 53/tcp nameserver # name-domain server
-domain 53/udp nameserver
-mtp 57/tcp # deprecated
-# Bootp experimental (sellgren@vangogh)
-bootp 67/udp # bootp server
-#bootpc 68/udp # bootp client
-#
-tftp 69/udp
-rje 77/tcp netrjs
-finger 79/tcp
-link 87/tcp ttylink
-supdup 95/tcp
-hostnames 101/tcp hostname # usually from sri-nic
-tsap 102/tcp # part of ISODE.
-#csnet-cs 105/?
-pop 110/tcp postoffice # POP3
-sunrpc 111/tcp
-sunrpc 111/udp
-auth 113/tcp authentication
-sftp 115/tcp
-uucp-path 117/tcp
-nntp 119/tcp readnews untp # USENET News Transfer Protocol
-ntp 123/udp
-snmp 161/udp
-snmp-trap 162/udp
-portmap 211/tcp # port mapper
-portmap 211/udp # port mapper
-#
-# UNIX specific services
-#
-exec 512/tcp
-biff 512/udp comsat
-login 513/tcp
-who 513/udp whod
-shell 514/tcp cmd # no passwords used
-syslog 514/udp
-printer 515/tcp spooler # line printer spooler
-talk 517/udp
-ntalk 518/udp
-route 520/udp router routed
-timed 525/udp timeserver
-tempo 526/tcp newdate
-courier 530/tcp rpc
-conference 531/tcp chat
-netnews 532/tcp readnews
-netwall 533/udp # -for emergency broadcasts
-uucp 540/tcp uucpd # uucp daemon
-rdist 541/tcp rdistd # rdist daemon
-remotefs 556/tcp rfs_server rfs # Brunhoff remote filesystem
-supfilesrv 871/tcp supserver # Software upgrade protocol
-
-ingreslock 1524/tcp
-#
-# Kerberos (Project Athena/MIT) services
-#
-kerberos 750/udp kdc # Kerberos (server) udp
-kerberos 750/tcp kdc # Kerberos (server) tcp
-krbupdate 760/tcp kreg # Kerberos registration
-kpasswd 761/tcp kpwd # Kerberos "passwd"
-klogin 543/tcp # Kerberos rlogin
-eklogin 2105/tcp # Kerberos encrypted rlogin
-kshell 544/tcp krcmd # Kerberos remote shell
-*
-* MachTen tcptraffic socket
-*
-tcptraffic 4002/tcp
diff --git a/gnu/usr.bin/cvs/src/commit.c b/gnu/usr.bin/cvs/src/commit.c
index 61e25de9e2e..c4cbd24f18e 100644
--- a/gnu/usr.bin/cvs/src/commit.c
+++ b/gnu/usr.bin/cvs/src/commit.c
@@ -676,9 +676,10 @@ commit (argc, argv)
{
time_t now;
- (void) time (&now);
- if (now == last_register_time)
+ for (;;)
{
+ (void) time (&now);
+ if (now != last_register_time) break;
sleep (1); /* to avoid time-stamp races */
}
}
diff --git a/gnu/usr.bin/cvs/src/cvs.h b/gnu/usr.bin/cvs/src/cvs.h
index 1c543ae0fd5..1ffa7d91ae6 100644
--- a/gnu/usr.bin/cvs/src/cvs.h
+++ b/gnu/usr.bin/cvs/src/cvs.h
@@ -465,7 +465,7 @@ extern void check_numeric PROTO ((const char *, int, char **));
char *getcaller PROTO((void));
char *time_stamp PROTO((char *file));
-char *xmalloc PROTO((size_t bytes));
+void *xmalloc PROTO((size_t bytes));
void *xrealloc PROTO((void *ptr, size_t bytes));
void expand_string PROTO ((char **, size_t *, size_t));
char *xstrdup PROTO((const char *str));
diff --git a/gnu/usr.bin/cvs/src/import.c b/gnu/usr.bin/cvs/src/import.c
index dcb35d4b818..911ef930d19 100644
--- a/gnu/usr.bin/cvs/src/import.c
+++ b/gnu/usr.bin/cvs/src/import.c
@@ -168,7 +168,8 @@ import (argc, argv)
}
/* XXX - this should be a module, not just a pathname */
- if (! isabsolute (argv[0]))
+ if (! isabsolute (argv[0])
+ && pathname_levels (argv[0]) == 0)
{
if (CVSroot_directory == NULL)
{
@@ -183,9 +184,11 @@ import (argc, argv)
}
else
{
- repository = xmalloc (strlen (argv[0]) + 5);
- (void) strcpy (repository, argv[0]);
- repos_len = 0;
+ /* It is somewhere between a security hole and "unexpected" to
+ let the client start mucking around outside the cvsroot
+ (wouldn't get the right CVSROOT configuration, &c). */
+ error (1, 0, "directory %s not relative within the repository",
+ argv[0]);
}
/*
diff --git a/gnu/usr.bin/cvs/src/main.c b/gnu/usr.bin/cvs/src/main.c
index beed6e4e4a2..4d75df46a80 100644
--- a/gnu/usr.bin/cvs/src/main.c
+++ b/gnu/usr.bin/cvs/src/main.c
@@ -222,6 +222,7 @@ static const char *const cmd_usage[] =
static const char *const opt_usage[] =
{
+ /* Omit -b because it is just for compatibility. */
"CVS global options (specified before the command name) are:\n",
" -H Displays usage information for command.\n",
" -Q Cause CVS to be really quiet.\n",
@@ -232,7 +233,6 @@ static const char *const opt_usage[] =
" -n Do not execute anything that will change the disk.\n",
" -t Show trace of program execution -- try with -n.\n",
" -v CVS version and copyright.\n",
- " -b bindir Find RCS programs in 'bindir'.\n",
" -T tmpdir Use 'tmpdir' for temporary files.\n",
" -e editor Use 'editor' for editing log information.\n",
" -d CVS_root Overrides $CVSROOT as the root of the CVS tree.\n",
diff --git a/gnu/usr.bin/cvs/src/mkmodules.c b/gnu/usr.bin/cvs/src/mkmodules.c
index a5a87cf7ab8..cf2ae7a0585 100644
--- a/gnu/usr.bin/cvs/src/mkmodules.c
+++ b/gnu/usr.bin/cvs/src/mkmodules.c
@@ -362,7 +362,7 @@ static const struct admin_file filelist[] = {
{CVSROOTADM_CONFIG,
"a %s file configures various behaviors",
config_contents},
- {NULL, NULL}
+ {NULL, NULL, NULL}
};
/* Rebuild the checked out administrative files in directory DIR. */
diff --git a/gnu/usr.bin/cvs/src/rcs.c b/gnu/usr.bin/cvs/src/rcs.c
index 571ae2a300e..e8c64749d0a 100644
--- a/gnu/usr.bin/cvs/src/rcs.c
+++ b/gnu/usr.bin/cvs/src/rcs.c
@@ -153,6 +153,8 @@ static const char spacetab[] = {
#define whitespace(c) (spacetab[(unsigned char)c] != 0)
+static char *rcs_lockfile;
+
/* A few generic thoughts on error handling, in particular the
printing of unexpected characters that we find in the RCS file
(that is, why we use '\x%x' rather than %c or some such).
@@ -2520,6 +2522,16 @@ RCS_tag2rev (rcs, tag)
}
}
+ /* Try for a real (that is, exists in the RCS deltas) branch
+ (RCS_exist_rev just checks for real revisions and revisions
+ which have tags pointing to them). */
+ pa = RCS_getbranch (rcs, rev, 1);
+ if (pa != NULL)
+ {
+ free (pa);
+ return rev;
+ }
+
/* Tag is branch, but does not exist, try corresponding
* magic branch tag.
*
@@ -2543,7 +2555,7 @@ RCS_tag2rev (rcs, tag)
RCS_check_tag (tag); /* exit if not a valid tag */
/* If tag is "HEAD", special case to get head RCS revision */
- if (tag && (strcmp (tag, TAG_HEAD) == 0))
+ if (tag && STREQ (tag, TAG_HEAD))
return (RCS_head (rcs));
/* If valid tag let translate_symtag say yea or nay. */
@@ -4591,9 +4603,9 @@ RCS_checkout (rcs, workfile, rev, nametag, options, sout, pfn, callerdat)
error (1, 0, "%s:%s has bad `special' newphrase %s",
workfile, vers->version, info->data);
devnum = devnum_long;
- if (strcmp (devtype, "character") == 0)
+ if (STREQ (devtype, "character"))
special_file = S_IFCHR;
- else if (strcmp (devtype, "block") == 0)
+ else if (STREQ (devtype, "block"))
special_file = S_IFBLK;
else
error (0, 0, "%s is a special file of unsupported type `%s'",
@@ -5154,6 +5166,9 @@ RCS_checkin (rcs, workfile, message, rev, flags)
struct tm *ftm;
time_t modtime;
int adding_branch = 0;
+#ifdef PRESERVE_PERMISSIONS_SUPPORT
+ struct stat sb;
+#endif
commitpt = NULL;
@@ -5227,7 +5242,6 @@ RCS_checkin (rcs, workfile, message, rev, flags)
if (preserve_perms)
{
Node *np;
- struct stat sb;
char buf[64]; /* static buffer should be safe: see usage. -twp */
delta->other_delta = getlist();
@@ -5326,6 +5340,12 @@ RCS_checkin (rcs, workfile, message, rev, flags)
dtext->version = xstrdup (newrev);
bufsize = 0;
+#ifdef PRESERVE_PERMISSIONS_SUPPORT
+ if (preserve_perms && !S_ISREG (sb.st_mode))
+ /* Pretend file is empty. */
+ bufsize = 0;
+ else
+#endif
get_file (workfile, workfile,
rcs->expand != NULL && STREQ (rcs->expand, "b") ? "rb" : "r",
&dtext->text, &bufsize, &dtext->len);
@@ -5563,6 +5583,12 @@ RCS_checkin (rcs, workfile, message, rev, flags)
/* If this revision is being inserted on the trunk, the change text
for the new delta should be the contents of the working file ... */
bufsize = 0;
+#ifdef PRESERVE_PERMISSIONS_SUPPORT
+ if (preserve_perms && !S_ISREG (sb.st_mode))
+ /* Pretend file is empty. */
+ ;
+ else
+#endif
get_file (workfile, workfile,
rcs->expand != NULL && STREQ (rcs->expand, "b") ? "rb" : "r",
&dtext->text, &bufsize, &dtext->len);
@@ -6637,8 +6663,23 @@ RCS_delete_revs (rcs, tag1, tag2, inclusive)
char *diffbuf;
size_t bufsize, len;
+#if defined (__CYGWIN32__) || defined (_WIN32)
+ /* FIXME: This is an awful kludge, but at least until I have
+ time to work on it a little more and test it, I'd rather
+ give a fatal error than corrupt the file. I think that we
+ need to use "-kb" and "--binary" and "rb" to get_file
+ (probably can do it always, not just for binary files, if
+ we are consistent between the RCS_checkout and the diff). */
+ {
+ char *expand = RCS_getexpand (rcs);
+ if (expand != NULL && STREQ (expand, "b"))
+ error (1, 0,
+ "admin -o not implemented yet for binary on this system");
+ }
+#endif
+
afterfile = cvs_temp_name();
- status = RCS_checkout (rcs, NULL, after, NULL, NULL, afterfile,
+ status = RCS_checkout (rcs, NULL, after, NULL, "-ko", afterfile,
(RCSCHECKOUTPROC)0, NULL);
if (status > 0)
goto delrev_done;
@@ -6666,7 +6707,7 @@ RCS_delete_revs (rcs, tag1, tag2, inclusive)
else
{
beforefile = cvs_temp_name();
- status = RCS_checkout (rcs, NULL, before, NULL, NULL, beforefile,
+ status = RCS_checkout (rcs, NULL, before, NULL, "-ko", beforefile,
(RCSCHECKOUTPROC)0, NULL);
if (status > 0)
goto delrev_done;
@@ -7122,7 +7163,7 @@ apply_rcs_changes (lines, diffbuf, difflen, name, addvers, delvers)
we define a deltafrag as an add or a delete) need to be applied
in reverse order. So we stick them into a linked list. */
struct deltafrag {
- enum {ADD, DELETE} type;
+ enum {FRAG_ADD, FRAG_DELETE} type;
unsigned long pos;
unsigned long nlines;
const char *new_lines;
@@ -7162,7 +7203,7 @@ apply_rcs_changes (lines, diffbuf, difflen, name, addvers, delvers)
{
unsigned int i;
- df->type = ADD;
+ df->type = FRAG_ADD;
i = df->nlines;
/* The text we want is the number of lines specified, or
until the end of the value, whichever comes first (it
@@ -7192,7 +7233,7 @@ apply_rcs_changes (lines, diffbuf, difflen, name, addvers, delvers)
--df->pos;
assert (op == 'd');
- df->type = DELETE;
+ df->type = FRAG_DELETE;
}
}
@@ -7202,12 +7243,12 @@ apply_rcs_changes (lines, diffbuf, difflen, name, addvers, delvers)
switch (df->type)
{
- case ADD:
+ case FRAG_ADD:
if (! linevector_add (lines, df->new_lines, df->len, addvers,
df->pos))
return 0;
break;
- case DELETE:
+ case FRAG_DELETE:
if (df->pos > lines->nlines
|| df->pos + df->nlines > lines->nlines)
return 0;
@@ -8436,6 +8477,30 @@ count_delta_actions (np, ignore)
return 0;
}
+/*
+ * Clean up temporary files
+ */
+static RETSIGTYPE
+rcs_cleanup ()
+{
+ /* Note that the checks for existence_error are because we are
+ called from a signal handler, so we don't know whether the
+ files got created. */
+
+ /* FIXME: Do not perform buffered I/O from an interrupt handler like
+ this (via error). However, I'm leaving the error-calling code there
+ in the hope that on the rare occasion the error call is actually made
+ (e.g., a fluky I/O error or permissions problem prevents the deletion
+ of a just-created file) reentrancy won't be an issue. */
+ if (rcs_lockfile != NULL)
+ {
+ if (unlink_file (rcs_lockfile) < 0
+ && !existence_error (errno))
+ error (0, errno, "cannot remove %s", rcs_lockfile);
+ }
+ rcs_lockfile = NULL;
+}
+
/* RCS_internal_lockfile and RCS_internal_unlockfile perform RCS-style
locking on the specified RCSFILE: for a file called `foo,v', open
for writing a file called `,foo,'.
@@ -8460,10 +8525,6 @@ count_delta_actions (np, ignore)
processes from stomping all over each other's laundry. Hence,
they are `internal' locking functions.
- Note that we don't clean up the ,foo, file on ^C. We probably should.
- I'm not completely sure whether RCS does or not (I looked at the code
- a little, and didn't find it).
-
If there is an error, give a fatal error; if we return we always
return a non-NULL value. */
@@ -8471,13 +8532,35 @@ static FILE *
rcs_internal_lockfile (rcsfile)
char *rcsfile;
{
- char *lockfile;
int fd;
struct stat rstat;
FILE *fp;
+ static int first_call = 1;
+
+ if (first_call)
+ {
+ first_call = 0;
+ /* clean up if we get a signal */
+#ifdef SIGHUP
+ (void) SIG_register (SIGHUP, rcs_cleanup);
+#endif
+#ifdef SIGINT
+ (void) SIG_register (SIGINT, rcs_cleanup);
+#endif
+#ifdef SIGQUIT
+ (void) SIG_register (SIGQUIT, rcs_cleanup);
+#endif
+#ifdef SIGPIPE
+ (void) SIG_register (SIGPIPE, rcs_cleanup);
+#endif
+#ifdef SIGTERM
+ (void) SIG_register (SIGTERM, rcs_cleanup);
+#endif
+ }
/* Get the lock file name: `,file,' for RCS file `file,v'. */
- lockfile = rcs_lockfilename (rcsfile);
+ assert (rcs_lockfile == NULL);
+ rcs_lockfile = rcs_lockfilename (rcsfile);
/* Use the existing RCS file mode, or read-only if this is a new
file. (Really, this is a lie -- if this is a new file,
@@ -8503,12 +8586,13 @@ rcs_internal_lockfile (rcsfile)
rely on O_EXCL these days. This might be true for unix (I
don't really know), but I am still pretty skeptical in the case
of the non-unix systems. */
- fd = open (lockfile, OPEN_BINARY | O_WRONLY | O_CREAT | O_EXCL | O_TRUNC,
+ fd = open (rcs_lockfile,
+ OPEN_BINARY | O_WRONLY | O_CREAT | O_EXCL | O_TRUNC,
S_IRUSR | S_IRGRP | S_IROTH);
if (fd < 0)
{
- error (1, errno, "could not open lock file `%s'", lockfile);
+ error (1, errno, "could not open lock file `%s'", rcs_lockfile);
}
/* Force the file permissions, and return a stream object. */
@@ -8516,13 +8600,11 @@ rcs_internal_lockfile (rcsfile)
this in the non-HAVE_FCHMOD case. */
#ifdef HAVE_FCHMOD
if (fchmod (fd, rstat.st_mode) < 0)
- error (1, errno, "cannot change mode for %s", lockfile);
+ error (1, errno, "cannot change mode for %s", rcs_lockfile);
#endif
fp = fdopen (fd, FOPEN_BINARY_WRITE);
if (fp == NULL)
- error (1, errno, "cannot fdopen %s", lockfile);
-
- free (lockfile);
+ error (1, errno, "cannot fdopen %s", rcs_lockfile);
return fp;
}
@@ -8532,10 +8614,7 @@ rcs_internal_unlockfile (fp, rcsfile)
FILE *fp;
char *rcsfile;
{
- char *lockfile;
-
- /* Get the lock file name: `,file,' for RCS file `file,v'. */
- lockfile = rcs_lockfilename (rcsfile);
+ assert (rcs_lockfile != NULL);
/* Abort if we could not write everything successfully to LOCKFILE.
This is not a great error-handling mechanism, but should prevent
@@ -8548,12 +8627,21 @@ rcs_internal_unlockfile (fp, rcsfile)
fragile even if it happens to sometimes be true. The real
solution is to check each call to fprintf rather than waiting
until the end like this. */
- error (1, 0, "error writing to lock file %s", lockfile);
+ error (1, 0, "error writing to lock file %s", rcs_lockfile);
if (fclose (fp) == EOF)
- error (1, errno, "error closing lock file %s", lockfile);
+ error (1, errno, "error closing lock file %s", rcs_lockfile);
+
+ rename_file (rcs_lockfile, rcsfile);
- rename_file (lockfile, rcsfile);
- free (lockfile);
+ {
+ /* Use a temporary to make sure there's no interval
+ (after rcs_lockfile has been freed but before it's set to NULL)
+ during which the signal handler's use of rcs_lockfile would
+ reference freed memory. */
+ char *tmp = rcs_lockfile;
+ rcs_lockfile = NULL;
+ free (tmp);
+ }
}
static char *
@@ -8677,8 +8765,8 @@ annotate_fileproc (callerdat, finfo)
cvs_outerr (finfo->fullname, 0);
cvs_outerr ("\n***************\n", 0);
- RCS_deltas (finfo->rcs, fp, rcsbufp, version, RCS_ANNOTATE, (char **) NULL,
- (size_t) NULL, (char **) NULL, (size_t *) NULL);
+ RCS_deltas (finfo->rcs, fp, rcsbufp, version, RCS_ANNOTATE, NULL,
+ NULL, NULL, NULL);
free (version);
return 0;
}
diff --git a/gnu/usr.bin/cvs/src/recurse.c b/gnu/usr.bin/cvs/src/recurse.c
index 6ac91bffb45..e93afbf39cd 100644
--- a/gnu/usr.bin/cvs/src/recurse.c
+++ b/gnu/usr.bin/cvs/src/recurse.c
@@ -160,7 +160,7 @@ start_recursion (fileproc, filesdoneproc, direntproc, dirleaveproc, callerdat,
&& client_active)
{
char *root = Name_Root (NULL, update_dir);
- if (root == NULL || strcmp (root, current_root) != 0)
+ if (root && strcmp (root, current_root) != 0)
/* We're skipping this directory because it is for
a different root. Therefore, we just want to
do the subdirectories only. Processing files would
@@ -565,9 +565,7 @@ do_recursion (frame)
directories, since we're guaranteed to have only one CVSROOT --
our own. */
-#ifdef SERVER_SUPPORT
- if (! server_active
-
+ if (
/* If -d was specified, it should override CVS/Root.
In the single-repository case, it is long-standing CVS behavior
@@ -577,8 +575,12 @@ do_recursion (frame)
In the multiple-repository case, -d overrides all CVS/Root
files. That is the only plausible generalization I can
think of. */
- && CVSroot_cmdline == NULL)
+ CVSroot_cmdline == NULL
+
+#ifdef SERVER_SUPPORT
+ && ! server_active
#endif
+ )
{
char *this_root = Name_Root ((char *) NULL, update_dir);
if (this_root != NULL)
@@ -988,9 +990,7 @@ but CVS uses %s for its own purposes; skipping %s directory",
/* Only process this directory if the root matches. This nearly
duplicates code in do_recursion. */
-#ifdef SERVER_SUPPORT
- if (! server_active
-
+ if (
/* If -d was specified, it should override CVS/Root.
In the single-repository case, it is long-standing CVS behavior
@@ -1000,8 +1000,12 @@ but CVS uses %s for its own purposes; skipping %s directory",
In the multiple-repository case, -d overrides all CVS/Root
files. That is the only plausible generalization I can
think of. */
- && CVSroot_cmdline == NULL)
+ CVSroot_cmdline == NULL
+
+#ifdef SERVER_SUPPORT
+ && ! server_active
#endif
+ )
{
char *this_root = Name_Root (dir, update_dir);
if (this_root != NULL)
diff --git a/gnu/usr.bin/cvs/src/server.c b/gnu/usr.bin/cvs/src/server.c
index 0aafa586e5d..da9ea2b5fd7 100644
--- a/gnu/usr.bin/cvs/src/server.c
+++ b/gnu/usr.bin/cvs/src/server.c
@@ -751,9 +751,7 @@ serve_root (arg)
return;
}
- /* Sending "Root" twice is illegal. It would also be nice to
- check for the other case, in which there is no Root request
- prior to a request which requires one.
+ /* Sending "Root" twice is illegal.
The other way to handle a duplicate Root requests would be as a
request to clear out all state and start over as if it was a
@@ -874,6 +872,73 @@ server_pathname_check (path)
}
}
+static int outside_root PROTO ((char *));
+
+/* Is file or directory REPOS an absolute pathname within the
+ CVSroot_directory? If yes, return 0. If no, set pending_error
+ and return 1. */
+static int
+outside_root (repos)
+ char *repos;
+{
+ size_t repos_len = strlen (repos);
+ size_t root_len = strlen (CVSroot_directory);
+
+ /* I think isabsolute (repos) should always be true, and that
+ any RELATIVE_REPOS stuff should only be in CVS/Repository
+ files, not the protocol (for compatibility), but I'm putting
+ in the isabsolute check just in case. */
+ if (!isabsolute (repos))
+ {
+ if (alloc_pending (repos_len + 80))
+ sprintf (pending_error_text, "\
+E protocol error: %s is not absolute", repos);
+ return 1;
+ }
+
+ if (repos_len < root_len
+ || strncmp (CVSroot_directory, repos, root_len) != 0)
+ {
+ not_within:
+ if (alloc_pending (strlen (CVSroot_directory)
+ + strlen (repos)
+ + 80))
+ sprintf (pending_error_text, "\
+E protocol error: directory '%s' not within root '%s'",
+ repos, CVSroot_directory);
+ return 1;
+ }
+ if (repos_len > root_len)
+ {
+ if (repos[root_len] != '/')
+ goto not_within;
+ if (pathname_levels (repos + root_len + 1) > 0)
+ goto not_within;
+ }
+ return 0;
+}
+
+static int outside_dir PROTO ((char *));
+
+/* Is file or directory FILE outside the current directory (that is, does
+ it contain '/')? If no, return 0. If yes, set pending_error
+ and return 1. */
+static int
+outside_dir (file)
+ char *file;
+{
+ if (strchr (file, '/') != NULL)
+ {
+ if (alloc_pending (strlen (file)
+ + 80))
+ sprintf (pending_error_text, "\
+E protocol error: directory '%s' not within current directory",
+ file);
+ return 1;
+ }
+ return 0;
+}
+
/*
* Add as many directories to the temp directory as the client tells us it
* will use "..", so we never try to access something outside the temp
@@ -919,6 +984,25 @@ dirswitch (dir, repos)
if (error_pending()) return;
+ /* Check for bad directory name.
+
+ FIXME: could/should unify these checks with server_pathname_check
+ except they need to report errors differently. */
+ if (isabsolute (dir))
+ {
+ if (alloc_pending (80 + strlen (dir)))
+ sprintf (pending_error_text,
+ "E absolute pathname `%s' illegal for server", dir);
+ return;
+ }
+ if (pathname_levels (dir) > max_dotdot_limit)
+ {
+ if (alloc_pending (80 + strlen (dir)))
+ sprintf (pending_error_text,
+ "E protocol error: `%s' has too many ..", dir);
+ return;
+ }
+
if (dir_name != NULL)
free (dir_name);
@@ -1074,24 +1158,8 @@ serve_directory (arg)
status = buf_read_line (buf_from_net, &repos, (int *) NULL);
if (status == 0)
{
- /* I think isabsolute (repos) should always be true, and that
- any RELATIVE_REPOS stuff should only be in CVS/Repository
- files, not the protocol (for compatibility), but I'm putting
- in the in isabsolute check just in case. */
- if (isabsolute (repos)
- && strncmp (CVSroot_directory,
- repos,
- strlen (CVSroot_directory)) != 0)
- {
- if (alloc_pending (strlen (CVSroot_directory)
- + strlen (repos)
- + 80))
- sprintf (pending_error_text, "\
-E protocol error: directory '%s' not within root '%s'",
- repos, CVSroot_directory);
+ if (outside_root (repos))
return;
- }
-
dirswitch (arg, repos);
free (repos);
}
@@ -1478,6 +1546,9 @@ serve_modified (arg)
return;
}
+ if (outside_dir (arg))
+ return;
+
if (size >= 0)
{
receive_file (size, arg, gzipped);
@@ -1550,6 +1621,9 @@ serve_unchanged (arg)
if (error_pending ())
return;
+ if (outside_dir (arg))
+ return;
+
/* Rewrite entries file to have `=' in timestamp field. */
for (p = entries; p != NULL; p = p->next)
{
@@ -1590,6 +1664,9 @@ serve_is_modified (arg)
if (error_pending ())
return;
+ if (outside_dir (arg))
+ return;
+
/* Rewrite entries file to have `M' in timestamp field. */
found = 0;
for (p = entries; p != NULL; p = p->next)
@@ -1840,6 +1917,9 @@ serve_notify (arg)
if (error_pending ()) return;
+ if (outside_dir (arg))
+ return;
+
new = (struct notify_note *) malloc (sizeof (struct notify_note));
if (new == NULL)
{
@@ -1891,6 +1971,9 @@ serve_notify (arg)
{
char *cp;
+ if (strchr (data, '+'))
+ goto error;
+
new->type = data;
if (data[1] != '\t')
goto error;
@@ -1930,7 +2013,7 @@ serve_notify (arg)
}
return;
error:
- pending_error_text = malloc (40);
+ pending_error_text = malloc (80);
if (pending_error_text)
strcpy (pending_error_text,
"E Protocol error; misformed Notify request");
@@ -1991,6 +2074,8 @@ server_notify ()
Lock_Cleanup ();
}
+ last_node = NULL;
+
/* The code used to call fflush (stdout) here, but that is no
longer necessary. The data is now buffered in buf_to_net,
which will be flushed by the caller, do_cvs_command. */
@@ -2236,6 +2321,9 @@ serve_questionable (arg)
return;
}
+ if (outside_dir (arg))
+ return;
+
if (!ign_name (arg))
{
char *update_dir;
@@ -4934,6 +5022,21 @@ error ENOMEM Virtual memory exhausted.\n");
if (!(rq->flags & RQ_ROOTLESS)
&& CVSroot_directory == NULL)
{
+ /* For commands which change the way in which data
+ is sent and received, for example Gzip-stream,
+ this does the wrong thing. Since the client
+ assumes that everything is being compressed,
+ unconditionally, there is no way to give this
+ error to the client without turning on
+ compression. The obvious fix would be to make
+ Gzip-stream RQ_ROOTLESS (with the corresponding
+ change to the spec), and that might be a good
+ idea but then again I can see some settings in
+ CVSROOT about what compression level to allow.
+ I suppose a more baroque answer would be to
+ turn on compression (say, at level 1), just
+ enough to give the "Root request missing"
+ error. For now we just lose. */
if (alloc_pending (80))
sprintf (pending_error_text,
"E Protocol error: Root request missing");
@@ -4971,48 +5074,74 @@ switch_to_user (username)
pw = getpwnam (username);
if (pw == NULL)
{
+ /* Normally this won't be reached; check_password contains
+ a similar check. */
+
printf ("E Fatal error, aborting.\n\
error 0 %s: no such user\n", username);
- /* I'm doing this manually rather than via error_exit ()
- because I'm not sure whether we want to call server_cleanup.
- Needs more investigation.... */
-
-#ifdef SYSTEM_CLEANUP
- /* Hook for OS-specific behavior, for example socket subsystems on
- NT and OS2 or dealing with windows and arguments on Mac. */
- SYSTEM_CLEANUP ();
-#endif
-
- exit (EXIT_FAILURE);
+ /* Don't worry about server_cleanup; server_active isn't set yet. */
+ error_exit ();
}
- /* FIXME? We don't check for errors from initgroups, setuid, &c.
- I think this mainly would come up if someone is trying to run
- the server as a non-root user. I think we should be checking for
- errors and aborting (as with the error above from getpwnam) if
- there is an error (presumably EPERM). That means that pserver
- should continue to work right if all of the "system usernames"
- in CVSROOT/passwd match the user which the server is being run
- as (in inetd.conf), but fail otherwise. */
-
#if HAVE_INITGROUPS
- initgroups (pw->pw_name, pw->pw_gid);
+ if (initgroups (pw->pw_name, pw->pw_gid) < 0
+# ifdef EPERM
+ /* At least on the system I tried, initgroups() only works as root.
+ But we do still want to report ENOMEM and whatever other
+ errors initgroups() might dish up. */
+ && errno != EPERM
+# endif
+ )
+ {
+ /* This could be a warning, but I'm not sure I see the point
+ in doing that instead of an error given that it would happen
+ on every connection. We could log it somewhere and not tell
+ the user. But at least for now make it an error. */
+ printf ("error 0 initgroups failed: %s\n", strerror (errno));
+ /* Don't worry about server_cleanup; server_active isn't set yet. */
+ error_exit ();
+ }
#endif /* HAVE_INITGROUPS */
#ifdef SETXID_SUPPORT
/* honor the setgid bit iff set*/
if (getgid() != getegid())
{
- setgid (getegid ());
+ if (setgid (getegid ()) < 0)
+ {
+ /* See comments at setuid call below for more discussion. */
+ printf ("error 0 setuid failed: %s\n", strerror (errno));
+ /* Don't worry about server_cleanup;
+ server_active isn't set yet. */
+ error_exit ();
+ }
}
else
-#else
+#endif
{
- setgid (pw->pw_gid);
+ if (setgid (pw->pw_gid) < 0)
+ {
+ /* See comments at setuid call below for more discussion. */
+ printf ("error 0 setuid failed: %s\n", strerror (errno));
+ /* Don't worry about server_cleanup;
+ server_active isn't set yet. */
+ error_exit ();
+ }
}
-#endif
- setuid (pw->pw_uid);
+ if (setuid (pw->pw_uid) < 0)
+ {
+ /* Note that this means that if run as a non-root user,
+ CVSROOT/passwd must contain the user we are running as
+ (e.g. "joe:FsEfVcu:cvs" if run as "cvs" user). This seems
+ cleaner than ignoring the error like CVS 1.10 and older but
+ it does mean that some people might need to update their
+ CVSROOT/passwd file. */
+ printf ("error 0 setuid failed: %s\n", strerror (errno));
+ /* Don't worry about server_cleanup; server_active isn't set yet. */
+ error_exit ();
+ }
+
/* We don't want our umask to change file modes. The modes should
be set by the modes used in the repository, and by the umask of
the client. */
@@ -5417,32 +5546,23 @@ pserver_authenticate_connection ()
host_user = check_password (username, descrambled_password, repository);
memset (descrambled_password, 0, strlen (descrambled_password));
free (descrambled_password);
- if (host_user)
- {
- printf ("I LOVE YOU\n");
- fflush (stdout);
- }
- else
+ if (host_user == NULL)
{
i_hate_you:
printf ("I HATE YOU\n");
fflush (stdout);
- /* I'm doing this manually rather than via error_exit ()
- because I'm not sure whether we want to call server_cleanup.
- Needs more investigation.... */
-
-#ifdef SYSTEM_CLEANUP
- /* Hook for OS-specific behavior, for example socket subsystems on
- NT and OS2 or dealing with windows and arguments on Mac. */
- SYSTEM_CLEANUP ();
-#endif
- exit (EXIT_FAILURE);
+ /* Don't worry about server_cleanup, server_active isn't set
+ yet. */
+ error_exit ();
}
/* Don't go any farther if we're just responding to "cvs login". */
if (verify_and_exit)
{
+ printf ("I LOVE YOU\n");
+ fflush (stdout);
+
#ifdef SYSTEM_CLEANUP
/* Hook for OS-specific behavior, for example socket subsystems on
NT and OS2 or dealing with windows and arguments on Mac. */
@@ -5464,6 +5584,8 @@ pserver_authenticate_connection ()
free (username);
free (password);
+ printf ("I LOVE YOU\n");
+ fflush (stdout);
#endif /* AUTH_SERVER_SUPPORT */
}
diff --git a/gnu/usr.bin/cvs/src/update.c b/gnu/usr.bin/cvs/src/update.c
index d661dc1dad1..62f54209bc6 100644
--- a/gnu/usr.bin/cvs/src/update.c
+++ b/gnu/usr.bin/cvs/src/update.c
@@ -489,9 +489,12 @@ do_update (argc, argv, xoptions, xtag, xdate, xforce, local, xbuild, xaflag,
{
time_t now;
- (void) time (&now);
- if (now == last_register_time)
+ for (;;)
+ {
+ (void) time (&now);
+ if (now != last_register_time) break;
sleep (1); /* to avoid time-stamp races */
+ }
}
return (err);
@@ -1645,7 +1648,7 @@ patch_file (finfo, vers_ts, docheckout, file_info, checksum)
cvs_MD5Init (&data.context);
retcode = RCS_checkout (vers_ts->srcfile, (char *) NULL,
- vers_ts->vn_rcs, (char *) NULL,
+ vers_ts->vn_rcs, vers_ts->vn_tag,
vers_ts->options, RUN_TTY,
patch_file_write, (void *) &data);