diff options
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/cvs/README.VMS | 159 | ||||
-rw-r--r-- | contrib/cvs/contrib/ccvs-rsh.pl | 97 | ||||
-rw-r--r-- | contrib/cvs/contrib/pvcs_to_rcs | 439 | ||||
-rw-r--r-- | contrib/cvs/diff/diagmeet.note | 71 | ||||
-rw-r--r-- | contrib/cvs/doc/DIFFUTILS-2.7-BUG | 263 | ||||
-rw-r--r-- | contrib/cvs/lib/getwd.c | 33 | ||||
-rw-r--r-- | contrib/cvs/lib/strdup.c | 39 | ||||
-rw-r--r-- | contrib/cvs/lib/strippath.c | 80 | ||||
-rw-r--r-- | contrib/cvs/src/NOTES | 60 | ||||
-rw-r--r-- | contrib/cvs/src/README-rm-add | 31 | ||||
-rw-r--r-- | contrib/cvs/tools/pcl-cvs/ChangeLog.woods | 383 | ||||
-rw-r--r-- | contrib/cvs/tools/pcl-cvs/ToDo | 44 |
12 files changed, 0 insertions, 1699 deletions
diff --git a/contrib/cvs/README.VMS b/contrib/cvs/README.VMS deleted file mode 100644 index b32ed8f995b66..0000000000000 --- a/contrib/cvs/README.VMS +++ /dev/null @@ -1,159 +0,0 @@ - CVS port to VMS - -DISCLAIMER: This port must be considered experimental. Although -previous versions have been in use at one large site since about -October, 1995, and the port is believed to be quite usable, various -VMS-specific quirks are known and the port cannot be considered as -mature as the ports to, say, Windows NT or unix. As always, future -progress of this port will depend on volunteer and customer interest. - -This port is of the CVS client only. Or in other words, the port -implements the full set of CVS commands, but cannot access -repositories located on the local machine. The repository must live -on another machine (a Unix box) which runs a complete port of CVS. - -Most (all?) work to date has been done on OpenVMS/AXP 6.2. Other VMS -variants might work too. - -You will also need GNU patch installed on your system. Here's a list -of ftp servers which have VMS GNU resources, taken from - - ftp://prep.ai.mit.edu/pub/gnu/vms.README - - mvb.saic.com - wuarchive.wustl.edu - ftp.wku.edu - ftp.spc.edu - ftp.stacken.kth.se - -Please send bug reports to bug-cvs@prep.ai.mit.edu. - -As of CVS 1.5.something, this port passed most of the tests in -[.src]sanity.sh. I say "most" because some tests to not apply to the -CVS client. The tests were run by hand because the VMS POSIX shell -was incapable of running the script. The tests that sanity.sh -provides are not conclusive but at least provides some assurance that -the client is usable. - -To compile, you will need DEC C (CC), DEC UCX, and of course DCL -installed on your machine. Just type "@build" in the top level -directory. This will build the sources in each subdirectory, and link -the executable [.src]cvs.exe - -Copy the executable to an appropriate directory, and define the symbol "CVS" -in a .COM file which everyone running CVS will need to run. Here's an example -of what needs to be done. - -$ CVS :== $YOUR_DEVICE:[YOUR.DIRECTORY.CVS]CVS.EXE - -Accessing a remote repository can happen in several ways. - -1. pserver -2. rsh - privileged (default) -3. rsh - unprivileged (on VMS side) - -Here's how to do each of the above: - -------------------------------------------------------------------------------- -1. pserver. This is the preferred way. It works just as it is -documented in the CVS manual (see the README file in the CVS -distribution for more information on the manual). - -------------------------------------------------------------------------------- -2. Using CVS internal rsh support (privileged) - -VMS's RSH is unusable for CVS's purposes (that is, the one in UCX. -Don't know about Multinet). However, there is code within CVS to -emulate RSH for purposes of contacting a CVS server "in the usual way" -via rshd. Unfortunately, this requires the VMS CVS client to be -installed with OPER privilege, by your system administrator. - -RSH uses privileged ports and trusted software/hosts to determine -which user on the client side is trying to connect. Part of this -security is due to the fact that on VMS or UNIX, a non privileged -process is not permitted to bind a socket to a privileged port. - -If rshd receives a connection on a non-privileged port, the connection is -immediately aborted. Only connections arriving from a privileged port will -be authenticated and served. The CVS client will therefore need privileges -under VMS to produce such a connection. - -*** Please note that no careful examination has been done of the security - implications of installing CVS with the OPER privilege. If some hole - exists, then by doing so, you will enable users who are already on - your system to gain unauthorized privileges *** - -------------------------------------------------------------------------------- -3. Using CVS internal rsh support (non-privileged) - -There is a workaround, but this is one case where I think the cure is worse -than the disease. If you patch an rshd to not care that the RSH originating -port is "non-privileged", the CVS VMS client will allow you to define the -logical CVS_RCMD_PORT to the port number where this patched rshd will be -listening. I leave the talk of patching rshd to the gentle reader and his/her -friendly system administrator. - -If I put an entry in my /etc/services file: - -cvs_rcmd 4381/tcp cvs_rcmd - -And add a line to /etc/inetd.conf, then restart inetd via "kill -1" - -cvs_rcmd stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/cvs_rcmd - -On the VMS side, you will have to do this: - -$ define CVS_RCMD_PORT 4381 - -Then run CVS in the "usual way". - -Note that the patched rshd will need to be invoked via inetd as root, so it can -authenticate and _become_ the intended user, the same as the regular rshd. - -***Please note that you will be installing a security hole by doing this.*** - -Please also note that this security hole is no larger than allowing a -Macintosh, PC (OS/2, NT, etc.) to have it's hostname in any .rhosts file, -as any user can create a privileged socket without authentication, under these -environments. In fact, existing ports of CVS to these environment use this -to their advantage. - -------------------------------------------------------------------------------- -Wildcard expansion is not yet implemented (i.e. CVS COMMIT *.c won't -work.) I think that expand_wild should be calling lib$findfile -(util.c in gzip is said to provide an example), but noone has gotten -around to implementing this. - -Log messages must be entered on the command line using -m or -F. You -can use -e or define the logical EDITOR to cause CVS to try other -editors (TPU.EXE or any other editor which wants DCL command parsing -will not work) if you want to test what's available on your system. I -haven't tested this, but if you install vi or emacs, chances are it -will probably work. Just make sure the .EXE files are in a directory -listed in VAXC$PATH (is this a typo for DCL$PATH? Also, will a -logical name work?). If someone gets around to implementing it, we -should probably be using the callable editors (e.g. TPU$TPU), although -of course we also need interface(s) which are not locked into any -particular editors. - ----------------------------------------- - -Notes regarding compiling on VAX/VMS 6.2 (not Alpha) (These are items -which hopefully will have cleaner solutions in the future, but here is -how to get around them for now): - -* Need to compile lib/getdate.c with vaxc instead of decc to avoid a -compiler bugcheck. Therefore one must add SYS$LIBRARY:VAXCRTL/LIBRARY -to the link. - -* In src/ignore.c, change lstat to stat. In vms/filesubr.c, change -"#ifdef S_ISLNK" to "#if 0". - -* Ignore the warnings in vms/vmsmunch.c; the system include file -declares something as an int when it should be void *. Not *our* -fault! - -Credits: - -Initial VMS port by Benjamin J. Lee <benjamin@cyclic.com>, Cyclic -Software, October 1, 1995 (Update March 1, 1996). diff --git a/contrib/cvs/contrib/ccvs-rsh.pl b/contrib/cvs/contrib/ccvs-rsh.pl deleted file mode 100644 index 8cfc6743ba3bf..0000000000000 --- a/contrib/cvs/contrib/ccvs-rsh.pl +++ /dev/null @@ -1,97 +0,0 @@ -#!/usr/bin/perl - -# The version of the remote shell program on some Linuxes, at least, -# misuses GNU getopt in such a way that it plucks arguments to rsh -# that look like command-line switches from anywhere in rsh's -# arguments. This is the Wrong Thing to do, and causes older versions -# of CCVS to break. - -# In addition, if we live behind a firewall and have to construct a -# "pipeline" of rshes through different machines in order to get to -# the outside world, each rshd along the way undoes the hard work CCVS -# does to put the command to be executed at the far end into a single -# argument. Sigh. - -# This script is a very minimal wrapper to rsh which makes sure that -# the commands to be executed remotely are packed into a single -# argument before we call exec(). It works on the idea of a "proxy -# chain", which is a set of machines you go through to get to the CCVS -# server machine. - -# Each host you go through before you reach the CCVS server machine -# should have a copy of this script somewhere (preferably accessible -# directly from your PATH envariable). In addition, each host you go -# through before you reach the firewall should have the CVS_PROXY_HOST -# envariable set to the next machine in the chain, and CVS_PROXY_USER -# set if necessary. - -# This really isn't as complex as it sounds. Honest. - -# Bryan O'Sullivan <bos@serpentine.com> April 1995 - -$usage = "usage: ccvs-rsh hostname [-l username] command [...]\n"; - -if ($#ARGV < 1) { - print STDERR $usage; - exit 1; -} - -# Try to pick a sane version of the remote shell command to run. This -# only understands BSD and Linux machines; if your remote shell is -# called "remsh" under some System V (e.g. HP-SUX), you should edit -# the line manually to suit yourself. - -$rsh = (-x "/usr/ucb/rsh") ? "/usr/ucb/rsh" : "/usr/bin/rsh"; - -# If you are not rshing directly to the CCVS server machine, make the -# following variable point at ccvs-rsh on the next machine in the -# proxy chain. If it's accessible through the PATH envariable, you -# can just set this to "ccvs-rsh". - -$ccvs_rsh = "ccvs-rsh"; - -# There shouldn't be any user-serviceable parts beyond this point. - -$host = $ARGV[0]; - -if ($ARGV[1] eq "-l") { - if ($#ARGV < 3) { - print STDERR $usage; - exit 1; - } - $user = $ARGV[2]; - $cbase = 3; -} else { - $cbase = 1; -} - -# You might think you shoul be able to do something like -# $command = join(' ', $ARGV[$cbase..$#ARGV]); -# to achieve the effect of the following block of code, but it doesn't -# work under Perl 4 on Linux, at least. Sigh. - -$command = $ARGV[$cbase]; -for ($cbase++; $cbase <= $#ARGV; $cbase++) { - $command .= " " . $ARGV[$cbase]; -} - -if (defined $ENV{"CVS_PROXY_HOST"}) { - $command = (defined $user) - ? "$ccvs_rsh $host -l $user $command" - : "$ccvs_rsh $host $command"; - - if (defined $ENV{"CVS_PROXY_USER"}) { - exec ($rsh, $ENV{"CVS_PROXY_HOST"}, "-l", $ENV{"CVS_PROXY_USER"}, - $command); - } else { - exec ($rsh, $ENV{"CVS_PROXY_HOST"}, $command); - } -} elsif (defined $user) { - exec ($rsh, $host, "-l", $user, $command); -} else { - if (defined $ENV{"CVS_PROXY_USER"}) { - exec ($rsh, $host, "-l", $ENV{"CVS_PROXY_USER"}, $command); - } else { - exec ($rsh, $host, $command); - } -} diff --git a/contrib/cvs/contrib/pvcs_to_rcs b/contrib/cvs/contrib/pvcs_to_rcs deleted file mode 100644 index 7d526d81ad21f..0000000000000 --- a/contrib/cvs/contrib/pvcs_to_rcs +++ /dev/null @@ -1,439 +0,0 @@ -#! /opt/bin/perl5 -# -# Beware of the fact that this script was not written to handle -# branches in the PVCS archives, but it might work nontheless. I have -# a specific addition in this latest version that would not be -# globally useful: automatically making Framemaker files binary with -# -kb (regardless of the file extension). -# --------------------------------- -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -########################################################################### -# FUNCTION: -# To recursively walk through a PVCS archive directory tree (archives -# located in VCS/ or vcs/ subdirectories) and convert them to RCS archives. -# The RCS archive name is the PVCS workfile name with ",v" appended. -# -# SYNTAX: -# The calling syntax is: -# pvcs_to_rcs [-l] -# -# where -l indicates the operation is to be performed only in the current -# directory (no recursion) -# -# EXAMPLE: -# pvcs_to_rcs -# -# Would walk through every VCS or vcs subdir starting at the current directory, -# and produce corresponding RCS archives one level above the VCS or vcs subdir. -# -# NOTES: -# * This script does not perform any error checking or logging of any kind -# (i.e. USE AT YOUR OWN RISK) -# * This script was developed using perl-5.003 on a Sun Solaris 2.5 machine -# and executed from a csh -# * PVCS archives in VCS/ or vcs/ subdirectories are left intact -# * RCS archives are processed in the VCS/ or vcs/ subdirectories and -# are moved (forcibly) up one level upon completion of the conversion -# * This script has *not* been tested with PVCS archives with branches, -# although the only thing I believe that might need to be changed -# is the ORDER of revision processing (e.g. you can't checkin 1.2.4.1 if -# you haven't yet checked in 1.2). -# * All revisions are saved with correct "metadata" (i.e. check-in date, -# author, and log message). Any blank log message is replaced with -# "no comment". This is because RCS does not allow non-interactive -# checkin of a new revision without a comment string. -# * Revision numbers are incremented by 1 during the conversion (since -# RCS does not allow revision 1.0). -# * Version labels are assigned to the appropriate (incremented) revision -# numbers. PVCS allows spaces and periods in version labels while RCS -# does not. A global search and replace converts " " and "." to "_" -# There may be other cases that ought to be added. -# * Any workfile within the VCS/ or vcs/ will be deleted (or overwritten) -# since it is used in the checkout of each revision -# * Locks on PVCS archives should be removed (or the workfiles should be -# checked-in) prior to conversion, although the script will blaze through -# the archive nonetheless (But you would lose any checked out revision(s)) -# * The -kb option is added to the RCS archive for workfiles with the following -# extensions: .bin .out .btl .rom .a07 .lib .exe .tco .obj .t8u .c8u .o .lku -######################################################################### - -require("getcwd.pl"); - -#NOTE: Each possible binary extension is delimited by '.' -$bin_ext = -".bin.out.btl.rom.a07.lib.exe.tco.obj.t8u.c8u.o.lku.BIN.OUT.BTL.ROM.A07.LIB.EXE.TCO.OBJ -.T8U.C8U.O.LKU."; - -# the main procedure that is run once in each directory -sub execdir -{ - $curlevel= $curlevel +1; - -#local sets the variables directory and prev directory local to the procedure - - local($dir,$prevdir)=@_; - -#change into the directory to be processed - - chdir($dir); - -#open the current directory for listing - - opendir(CURDIR,"."); - -#initialize the list of filenames - - local(@filenames); - -#set filenames equal to directory listing - - @filenames = readdir(CURDIR); - -#clean up by closing the directory - - closedir(CURDIR); - -#initialize a list for any subdirectories - local(@subdirs); - -#begin a for loop to execute on each filename in the list @filename - for (@filenames) - - { -#if the file is a directory... - if (-d $_) - { -#include it in @subdir - push(@subdirs,$_); - } - } - -#for loop of subdirs - for (@subdirs) -#if not a parent directory, run execdir on each sub dir - { - if (($_ ne '.') and ($_ ne '..') and ($maxlevel > $curlevel)) - { - &execdir($_,$dir); - } - } - -#save the current directory - $cd = &getcwd; - -#Print output header for each directory - print("Directory: $cd\n"); - -#determine the last directory in this path (to only process vcs or VCS) - $_ = $cd; - $num_dirs = split /\//; - @dirs = @_; - $last_dir = $dirs[$num_dirs-1]; -# print"Last directory is $last_dir\n"; - -#shell redirection: output from command in @ARGV is put in $output -# $output = `@ARGV`; -#begin a for loop to execute on each filename in the list @filename - for (@filenames) - { - if ( (-f $_) and ($_ ne '.') and ($_ ne '..') and ($maxlevel > $curlevel) - and ( ( $last_dir eq 'vcs' ) or ( $last_dir eq 'VCS' ) ) ) - { - $got_archivefile = 0; - $got_workfile = 0; - $got_version_labels = 0; - $got_description = 0; - $got_rev_count = 0; - - $file = $_; - $abs_file = $cd . "/" . $file; - print("Converting $abs_file...\n"); - $vlog_output = `vlog $_`; - $_ = $vlog_output; -# Split the cvs status output into individual lines - @vlog_strings = split /\n/; - $num_vlog_strings = @vlog_strings; - $_ = $vlog_string[0]; - if ( /^vlog: warning/ ) - { - print("$abs_file is NOT a valid PVCS archive!!!\n"); - } - elsif( $vlog_output ) - { - -# Collect all vlog output into appropriate variables - - $num = 0; - while( $num < $num_vlog_strings ) - { -# print("$vlog_strings[$num]\n"); - - $_ = $vlog_strings[$num]; - - if( ( /^Workfile:\s*/ ) && (!$got_workfile ) ) - { - $got_workfile = 1; -# get the string to the right of the above search (with any path stripped) - $workfile = $'; - $_=$workfile; - $num_fields = split /\//; - if ( $num_fields > 1 ) - { - $workfile = $_[$num_fields - 1 ]; - } -# print"Workfile is $workfile\n"; - } - - elsif( ( /^Archive:\s*/ ) && (!$got_archivefile ) ) - { - $got_archivefile = 1; -# get the string to the right of the above search (with any path stripped) - $archivefile = $'; - $_=$archivefile; - $num_fields = split /\//; - if ( $num_fields > 1 ) - { - $archivefile = $_[$num_fields - 1 ]; - } -# print"Archive is $archivefile\n"; - } - - elsif ( ( /^Rev count:\s*/ ) && (!$got_rev_count ) ) - { - $got_rev_count = 1; -# get the string to the right of the above search - $rev_count = $'; - print"Revision count is $rev_count\n"; - } - - elsif ( ( /^Version labels:\s*/ ) && (!$got_version_labels ) ) - { - $got_version_labels = 1; - $first_vl = $num+1; - } - - elsif ( ( /^Description:\s*/ ) && (!$got_description ) ) - { - $got_description = 1; - $description = "\"" . $vlog_strings[$num+1] . "\""; -# print"Description is $description\n"; - $last_vl = $num - 1; - } - - elsif ( /^Rev\s*/ ) # get all the revision information at once - { - $rev_index = 0; - while ( $rev_index < $rev_count ) - { - $_=$vlog_strings[$num]; - /^Rev\s*/; - $rev_num[$rev_index] = $'; - $_=$vlog_strings[$num+1]; - if ( /^Locked\s*/ ) - { - $num += 1; - } - $_=$vlog_strings[$num+1]; - /^Checked in:\s*/; - $checked_in[$rev_index] = "\"" . $' . "\""; - $_=$vlog_strings[$num+3]; - /^Author id:\s*/; - split; - $author[$rev_index] = "\"" . $_[2] . "\""; - $relative_comment_index = 0; - $comment_string = ""; - while( ( $vlog_strings[$num+4+$relative_comment_index] ne - "-----------------------------------" ) && - ( $vlog_strings[$num+4+$relative_comment_index] ne - "===================================" ) ) - { -# We need the \n added for multi-line comments. There is no effect for -# single-line comments since RCS inserts the \n if it doesn't exist already - $comment_string = $comment_string . -$vlog_strings[$num+4+$relative_comment_index] . "\n"; - $relative_comment_index += 1; - } -# Convert any double quotes to an escaped double quote - $comment_string =~ s/\"/\\\"/g; - $comment[$rev_index] = "\"" . $comment_string . "\""; - $num += ( 5 + $relative_comment_index ); - $rev_index += 1; - } - $num -= 1; #although there should be nothing left for this to matter - } - - $num += 1; - - } - -# Loop through each version label, checking for need to relabel ' ' with '_'. - $num_version_labels = $last_vl - $first_vl + 1; - print"Version label count is $num_version_labels\n"; - for( $i = $first_vl; $i <= $last_vl; $i += 1 ) - { -# print("$vlog_strings[$i]\n"); - $label_index = $i - $first_vl; - $_=$vlog_strings[$i]; - split /\"/; - $label = @_[1]; - $_=@_[2]; - split; - $label_revision[$label_index] = @_[1]; - -# Create RCS revision numbers corresponding to PVCS version numbers by -# adding 1 to the revision number (# after last .) - $rcs_rev = &pvcs_to_rcs_rev_number( $label_revision[$label_index]); - $label_revision[ $label_index ] = $rcs_rev; -# replace ' ' with '_', if needed - $_=$label; - $new_label[$label_index] = $label; - $new_label[$label_index] =~ s/ /_/g; - $new_label[$label_index] =~ s/\./_/g; - $new_label[$label_index] = "\"" . $new_label[$label_index] . "\""; -# print"Label $new_label[$label_index] is for revision -$label_revision[$label_index]\n"; - } - -# Create RCS revision numbers corresponding to PVCS version numbers by -# adding 1 to the revision number (# after last .) - - for( $i = 0; $i < $rev_count; $i += 1 ) - { - $rcs_rev_num[ $i ] = &pvcs_to_rcs_rev_number( $rev_num[ $i ] ); -# print"PVCS is $rev_num[ $i ]; RCS is $rcs_rev_num[ $i ]\n" - } - -# Create RCS archive and check in all revisions, then label. -# PVCS vlog lists revisions last-revision-first; reverse that ordering - $first_time = 1; - - for( $i = $rev_count - 1; $i >= 0; $i -= 1 ) - { - print "get -r$rev_num[$i] $archivefile\\($workfile\\)\n"; -# $vcs_output = `vcs -u -r$rev_num[$i] $file`; - $get_output = `get -r$rev_num[$i] $archivefile\\($workfile\\)`; - if( $first_time ) - { - $first_time = 0; - $file_output = `file $workfile`; -# If an empty comment is specified, RCS will not check in the file; -# check for this case. (but an empty -t- description is fine - go figure!) -# Since RCS will pause and ask for a comment if one is not given, -# substitute a dummy comment "no comment". - if ( $comment[$i] eq "\"\"" ) - { - $ci_command = "ci -f -r$rcs_rev_num[$i] -d$checked_in[$i] -w$author[$i] --t-$description -m\"no comment\" $workfile"; - } - else - { - $ci_command = "ci -f -r$rcs_rev_num[$i] -d$checked_in[$i] -w$author[$i] --t-$description -m$comment[$i] $workfile"; - } - print "$ci_command\n"; - $ci_output = `$ci_command`; - -# Also check here whether this file ought to be "binary" - $_=$file_output; - split; - if( $_[1] eq "Frame" ) - { - print"Binary attribute -kb added (file type is Frame)\n"; - $rcs_output = `rcs -kb $workfile,v`; - } - else - { - $_=$workfile; - $num_fields = split /\./; - if ( $num_fields > 1 ) - { - $ext = "." . $_[$num_fields - 1] . "."; - if ( ( index $bin_ext, $ext ) > - 1 ) - { - print"Binary attribute -kb added (file type is $ext)\n"; - $rcs_output = `rcs -kb $workfile,v`; - } - } - } - } - else - { - $rcs_output = `rcs -l $workfile`; -# If an empty comment is specified, RCS will not check in the file; -# check for this case. (but an empty -t- description is fine - go figure!) - if ( $comment[$i] eq "\"\"" ) - { - $ci_command = "ci -f -r$rcs_rev_num[$i] -d$checked_in[$i] -w$author[$i] --m\"no comment\" $workfile"; - } - else - { - $ci_command = "ci -f -r$rcs_rev_num[$i] -d$checked_in[$i] -w$author[$i] --m$comment[$i] $workfile"; - } - print "$ci_command\n"; - $ci_output = `$ci_command`; - } - } -# Attach version labels - for( $i = $num_version_labels - 1; $i >= 0; $i -= 1 ) - { -# print "rcs -n$new_label[$i]:$label_revision[$i] $workfile\n"; - $rcs_output = `rcs -n$new_label[$i]:$label_revision[$i] $workfile`; - print "Version label $new_label[$i] added to revision $label_revision[$i]\n"; - } - -# Move archive file up one directory level (above vcs/ or VCS/) - $mv_output = `mv -f $workfile",v" ..`; - } - } - } - -#print the output to STDOUT -# print("$output"); - - $curlevel=$curlevel - 1; - if ($dir ne $prevdir) - { - chdir('..'); - } -} - -sub pvcs_to_rcs_rev_number -{ - local($input, $num_fields, @rev_string, $return_rev_num, $i); - - $input = @_[0]; - $_ = $input; - $num_fields = split /\./; - @rev_string = @_; - @rev_string[$num_fields-1] += 1; - $return_rev_num = @rev_string[ 0 ]; - for( $i = 1; $i < $num_fields; $i += 1 ) - { - $return_rev_num = $return_rev_num . "." . @rev_string[ $i ]; - } - return $return_rev_num; -} - -##MAIN program: checks to see if there are command line parameters -if ($#ARGV > 2) { - -#if not then end and print help message -die "Usage: pvcsns [-l]\n"}; -$curlevel=0-1;$maxlevel=10000; - -if (@ARGV[0] eq "-l") {$maxlevel=1;shift @ARGV;} - -#start the whole thing -&execdir(".","."); - diff --git a/contrib/cvs/diff/diagmeet.note b/contrib/cvs/diff/diagmeet.note deleted file mode 100644 index 8f7242c7356a7..0000000000000 --- a/contrib/cvs/diff/diagmeet.note +++ /dev/null @@ -1,71 +0,0 @@ -Here is a comparison matrix which shows a case in which -it is possible for the forward and backward scan in `diag' -to meet along a nonzero length of diagonal simultaneous -(so that bdiag[d] and fdiag[d] are not equal) -even though there is no snake on that diagonal at the meeting point. - - - 85 1 1 1 159 1 1 17 - 1 2 3 4 -60 - 1 2 -1 - 2 2 3 4 -71 - 3 3 4 5 -85 - 4 3 4 5 -17 - 5 4 5 -1 - 6 4 5 6 -183 - 7 5 6 7 -10 - 8 6 7 -1 - 9 6 7 8 -12 - 7 8 9 10 -13 - 10 8 9 10 -14 - 10 9 10 -17 - 10 10 -1 - 10 9 10 -1 - 8 10 10 10 -183 - 8 7 9 9 9 -10 - 7 6 8 9 8 8 -1 - 6 5 7 7 -1 - 5 6 6 -1 - 5 5 5 -50 - 5 4 4 4 -1 - 4 3 3 -85 - 5 4 3 2 2 -1 - 2 1 -17 - 5 4 3 2 1 1 -1 - 1 0 - 85 1 1 1 159 1 1 17 - - - - - - - - - diff --git a/contrib/cvs/doc/DIFFUTILS-2.7-BUG b/contrib/cvs/doc/DIFFUTILS-2.7-BUG deleted file mode 100644 index f258ee7f6aae2..0000000000000 --- a/contrib/cvs/doc/DIFFUTILS-2.7-BUG +++ /dev/null @@ -1,263 +0,0 @@ -The enclosed two messages describe a bug in GNU diff 2.6 and 2.7 which -may cause CVS to perform an erroneous merge. You may wish to use GNU -diff 2.5 or apply the patch supplied by Loren James Rittle below. It -would be nice to add this to the CVS testsuite, but I haven't done so -because probably a lot of people who would like to run the testsuite -are using the buggy diff. - -From: friedman@splode.com (Noah Friedman) -To: bug-gnu-utils@prep.ai.mit.edu -Cc: info-cvs@prep.ai.mit.edu -Subject: diffutils 2.7 -- diff3 merge bug -Date: Tue, 29 Oct 96 17:02:54 CST - -I believe a change first introduced in GNU diff 2.6 causes diff3 sometimes -to produce incorrect merges. - -Since this is a not a bug in CVS itself but can cause commits to CVS -repositories to be incorrect, am warning info-cvs@prep.ai.mit.edu as -well as reporting the bug to bug-gnu-utils@prep.ai.mit.edu. - -I am including a simple test case as well as some sample outputs from -different versions of `diff' and `diff3' in the enclosed shar archive. -In addition, the file DESCRIPTION in that archive describes the problem -more fully. - -If anyone has any advice for how to fix or to work around this bug, I would -appreciate it. Using diff 2.5 seems like the most immediately obvious -solution, but I don't know if it will introduce other problems. -I do not understand the algorithms used by GNU diff well enough to suggest -any patches. - -Unshar and enjoy. ;-) - -begin 666 merge-testcase.shar.gz -M'XL(",&,=C("`VUE<F=E+71E<W1C87-E+G-H87(`[5Q[;]M&$O_[^"FF;E#9 -M@41)?C!GYX&V;MPS<$F+V+FZP.&:%;F26)-<E;NTHC[NL]_,+%^29;USUP-L -M&)9$[CQW]C?#W;$^_ZS="Y.V'CJ?P_4PU("_`O101A&(U!^&=Q+V1ZD*,E\& -MT)O`MV_?XVV19B:,-!R[W0.72!7(CR85O@$SE-`/(ZFAGZH8/Q)'RZD)6B"_ -M$`<IT"J6<''Y]]=-2&6L[B2RD7<RG2!%,H">[*M4,K</A8X-B,)$@N@IXH6W -M$C"3$0[00^;40%60RQL12%`)=$]/O5:WTSH\A:YW=G(,YU?79,*+?AK*(!;) -MEWH4J4"ZOHI?D157*DM]"4&82M^H=`)CH>%#.]-I.U*^B-HZ]=N#)&L'8;_/ -M#FC',AW(EI':^$++7('7'T-MR`CKAW&(SGR:*/,4K0+4/1VGH3&H?9;@?131 -M\AOD>#V2?MA'W2P;G@_R-?@J,2),]!E>C60R,$.(47&P/XF(R7DM_LE?9MXN -M^T%R_#DZ]:"5CO-?F+:M7;QI3=!-VE(\ZQRM0A'CM%D"[_1X%0(5!3*U%,<G -MAPLHWHA;25[FL8?=PV<+QG[S^NK\W>7WUY??O<U9=Q;92Y-\Z)Y87>I&>R>K -MD)'-=:I5A'ESA!T_6X'LOK"3%52LYH?N!ZM,:2%P'FFW>[1HJJ[>OWGSU;L? -M,;2-ROPAM$0,W<,C_#TY/3V%)T]<>_U5.Y!W[23#17/XZHNN$_:!>,!GT.K7 -M";[XPE['JP7M<P8%!WC5_,277O)?1T9:3E\_PX_2'ZK\!1H_?/7N[>7;;\\` -M5RI"DD8$H#5LPAC?BWBD78!SE>@09P@&TO`*%TG0*#CLX0HU(HKH.L'D/S^P -MI$83$46;-.QE!C$T3/CF!08MO$<,"4THM>NZ>X4^_=!)XQE;"P,9%U[6?Q:O -MTNFQ+^N^#*`Q`UZE]ZP_/D(+_%0*MK/"Q!DB'![?XMU[W,B.0AP:TUBH9Z.< -MS9N])]T]^.PEOFGY>W-4TK?A:$0J+39\GU`!1(0&!!-,3C@#^J!1Q$'%+D]; -M*S`T./2`[-4XBPW=_M=-N]V`%R^@<?6WK][]]/J[BP:\6L%.I]V&KS-C5.+^ -M+.Z$<^.,A'\K!A)2C"85NV(TBD(?_:Z2YW@WC$<J-<5-2CON4[H^RGHX#/Q( -M8`JQ#)W?G!N`]E.XI$A,3"A0/.9S>Q<3$28.C.H!QN!^IPF=`XI?^%6F"N\% -M>),^#F4X&!J7.,%3^%%E$&<X,9C_L"1(,'XQ8D44(A5ZS`Q50-D<2X213*-) -M[3;G[MQ0RZQ-+[G:N4K[!W2-U4;'9L@#+Y%U?.$G$YI(GJM(I?`2^-7M1>BM -MY_E]7%BB%\G@^OZX02HFS^ML+C")XEUZ<0/9%UED^!++`_C#^<,I)A(G^4D% -M%1:I.H>GW9-##U/D"E,,X`\Q0T/'\Y:/__WW,B(M[&"1T%\2C7V!X<W0PWKZ -M*DO,R[T/8Q]:/KQ8)O(#@0TO-T[Y\A?8>U+QV;,:%:BVD-59'D\B`DUSCOR: -MX&=I*M&S?*7.F#!A5?RBE/80?"W"$Z+;)9RP'CM$$\MO2S`IC'S$DI6Q!#VU -M#$YHR&J(4C);"BHWN1>Q<KB322@3?,#`<A[K@8SR*>!3#H2EA[FDJ+LX]UP/ -MET^@X6,3)DWKWF;=OP"O?\G".Q'1JC,J)Z*?OE*H7B+'E9.>3]]VR<NP/\7: -MLBU&SG-UB(*0A%XF]B4GI;<Y>6TV^"FP$`U+)*Z&Q,\6(7&Y/E8#8CM\/1SF -M=;PI#+/`"H6YYMX,A8G3+`@CNQV!,#^.;(+"3+A+&+::[!"'<X9;`G%IYR,2 -M_TFKND<`_D0`O+`4KM;%:@B<CU\/@NT2WA2#K<@*A'EK:C,09E:S*(S\MD/A -M8F]K#?PM2':`O*7T[3&W8K49VM:M<KZYO+@XPB5%.U%'_"G_@"N=Z<Z<F[^T -MGNSSN`-HO>:8G4[;,Q$TL[-YPWNO:'(ZR&*</,T8@8[32#E68/"&Q*MCB>$9 -M2"-38LJ[X[CX9.K+$7D!N;".#6U1%@.9/C-L(.",I/65F9*$ZW*$R,];P*3$ -MQ.X>WXET@J)&,@F(!@&`R,)DE!G>9'8=8EW?/20O6">@#P2T6D.,SE]5TJ(M -M=/VRV\%+B_V`L9)F$KW!K*L=QII_Y[/N3K&>=GB=\S*(\;K=.1`S%0P+P:4: -MN1*LE%&Z)J"48BHHX3WKM:"D8#(+(LAI.Q"I;7JO@2,UJAU`25V'[=%DBMMF -M@#)CGF-/6J2AJ+!G-KCHL#Q*\TJ+S2=*&`]YT=.Z9KU(O_QX3#MAXJN4]DEI -M^Q@+$4W#$\ATL2-<GAO!H>OA3%-=(%.L'E@!7V0:N?@JCD.DQ?KK_!]7R&JD -M=$B;T9*O]6C=YW*:H!5<`BZ81)FP/R$YYQ,?ZP3G2O7-6-A`)ZQ`);&DBD$0 -M;E'-IZ&7#5J#)&NQ1E^.4)`K0A=ENS+(L+ASD+/)]ZVG>*`6?,JGHDB-<06* -M9$">"7'Q8I4K42IO<S/:H:%-A[`-ZU["2#2CSP4ELWC[^H<KL(N.(5:8:J\< -M"<Z*DG'/==WO16J04M"$6/\V2Z<BQJK,$!JB'VG_7G[$X,'1)$2+&"-.6T[V -M7-&%]SI#4)X0X/*19P_?Z!@OR;2)GC%\/LE[_U-#(L+^U-TCQ9PWDUIDU".F -M\@[-B/9E(M)0Y=9\90W.S_1X`!V%^G2@1U$PE/XM>@KMH8Q""6<DU8@P_@8X -M+_7#%(5B4:TQ#P0RDC9(^UGBD],XP11!Q'%E)\C.&C$I0VI2\M02]0D*ID3- -MZ8B4&*'?*8H$^G5(]59=#@:(C$<<K<3*BJU)I4.3K\D2R=%MHQ'O<FQ@`/(Q -MKEWA$"C)DV=5I"/A/.KD7:@R'4U:UMB@4B$_8I[1OU%))UY7J@BW/@.KKT9E -M`%:NL)K<DS"DA2(1Z%@ISAVT-*[+4^ZI1-><2:G-F<Q'9]UHC^;'!)R,6;6) -MI56D3`/V$OG:S,Q],=Y!AEQ-W,EH4E<.'CCHXW!.\J<>GR=%0`%==B[L0V7? -M(9EFF$H)=R@3'8(FE.T`/*B.:2=N$:'H&>?^22B;,>=<==HK/`)#-TMNZ8X( -M$%AI*5C4I<=2F>(BCLO0P34TQVQOKMEV]G-0K`";1U2F.?=,\W+3[!HH)#S- -M@X"`5N!LJ0$&:K[2PK3P`'"VEBFM)`I)AQZ_N:XCV/9MF-]*:R'F%YJ3/#ZM -M$V1,_0)<81;^H6'&R2>EK"T)12LF%+EF+*E-8JH:XV":BDM&>RN1P:S@A\H_ -ML"Z$G2HL2`MGLNNI@R1Q"'G4.&'M65H!Q[$PB&^ZOF1Y3"ZO5-A94>$RQ5C5 -M[:(GSJ1C/BWH9G2F`,K"D?5H,\]6ER@O"N6==&*LORS2QP@(.NSE*:F,.4-) -MTU+Q-#)O*S!@_?B>4]W#B,+E6#C.75[M'I[.J79G*Y6%!>_4X)5JWGHMM6;9 -M6Q=65;ZV!6.MTK?&:+;Z)6[;E;_SP&;U,G@.]0[*X7DZ;5\6S^6Z67G\@-G. -MC>M6K4\M',&?-GR\=`X[S:-.T#UU7@#^;K5'1^3K;]+E5`_NTDW?7[A-9X>V -M^763C3JB^\URJ;;J[,=E8I=OU7F=><CRT"0O1)BY1"LAS;SP7!-QY@FO/7-W -MUCW)GL/OWN-WQ]L-_M1JH/7AIR+>(?K4--H=^-29;H<]TS:O`SU+MY^<KM?L -M_M7GO_DB6WPX7(U9>C(QPV[1Z02U7;Z")0<B^8"E<NN,%@E]!-T_!>C.1/=* -MF%NG60MR:XMR0\2MB:Z=EYQL"KBUO>39,Y.3G>"MMU6]YWV2>L_[)/6>M[MZ -MSUM:[WF/]=[_!?1T.P]"C[=)O>=M7.]YV]=[WH[K/>^_4.]YV]1[WJ>H][Q/ -M4>]Y.ZOWO&7UGK=EO7=X^C^O]^SB?02_3<'O?U(O;X>UZY=YWJ9EGK=UF><] -M4.8=/]L09Q>4><<[VM:;W>%?_]EZAL,.'[!G==O=4_8]SML]:L]QP6,WXY^] -MKWR5,O!PP1/HO$E?Z3'T'N%:SZ*SH;OA`^FL$O6R\&3#I](9GO=+PY/=E(;; -M8I;WR3#+^V28Y>T6L[Q'S'K\7YC'5NP5@-[;%.B]K8#>VPW0>PN`?OW_F7F` -MY\[_>R;_1_<U@#VGV`&0%[*W!^Z2TV9`73/)N;E(57P&<[YV`_;?*C&$B_S. -M@7.MSA;W)3KG_ADNFKYJ^7?W;UYEO9^E;\ZF6G>>T09!U;(I28#S3HZB28O$ -MS5'+^08!_@RN,]F$PU/XSC?\92+\-2)'9]UC:'6\3@?VSZ^N#YP+'S7Z=UL: -MOQUCD+>1NZ[V+O"QE1R8MP-JN_IIYP*?9LOV$VI+LDUZMK\+@:/HL<J_+J!H -M=,F;1'-SRAY%QZ8*(IEM:N)6F:LPX3:CX@M>J$52D!^(/W69AD;+J,^-CSXF -M(]NL-]V)ZBSN1$4T&HN4^QD?FAYJPBR:3XE96C;`DR;$<86.U)B$1EE@TX/& -M+![)6AMFK;^5VRJUX`&V.]1^)XU3]D^536T$9!^XD913R0?;N%\T86&BBA1% -M/W\92_YE-B[U'XD@"*F>:%8=4/66&J87IOPFG4!J/PU[>0-4WD[KQ(2D_2RR -MS7N7U&DY48GDUD-\BT+NJ$F,LN-0C<E/_?`C=0_CN[%*;Y$]I40[O=Q3>8G7 -MLRAPL.+!R:%J!2<8,^-[;;_+P79VX8*6,07CK:TI8D6A%\<R(`JL.52/&R\= -MK:+,6DGQ<0F!2AH&;A-4!D$M-+:7K0S:O$<N-P_CCR@XY%!+=+@IFAE%-,!@ -M,D-4(M/5UPNQ?CR),E'98,C?%I0-,)2-0_X8V28R<M;[Q$X)M9@E/ZL)VOB\ -M=;`\8YX<S<F8=<A:F"'+@2MEQ`)(U\R`A9`JX]GO5UDKY>5,9E,<<5J2XS!E --&.@X_P&I*Y$W($H``"'+ -` -end - -Date: Wed, 30 Oct 96 14:54:13 CST -From: Loren James Rittle <rittle@comm.mot.com> -To: friedman@splode.com -Cc: bug-gnu-utils@prep.ai.mit.edu, info-cvs@prep.ai.mit.edu -Subject: Re: diffutils 2.7 -- diff3 merge bug - -Noah, - -I have seen the problem you discuss in your e-mail, however I fail to -see how this situation is as critical as might be implied since it can -never arise without at least some user involvement (an update that -caused a merge is never automatically followed by a commit --- the -user has a chance to inspect the merged file). However, I will agree -that I don't always look very closely at non-conflicted merges before -checking them back in. - -You didn't give the exact CVS commands used to create a lossage, -but I added the following to your Makefile, to help me see the problem -in a CVS usage context: - -t-older: testcase-older - cp testcase-older t-older - -t-yours: testcase-yours - cp testcase-yours t-yours - -t-mine: testcase-mine - cp testcase-mine t-mine - -# Assume cvs-1.9 -cvs-test: t-older t-yours t-mine - rm -rf /tmp/cvs-test-root x x2 - cvs -d /tmp/cvs-test-root init - mkdir x - cp t-older x/testcase - cd x; cvs -d /tmp/cvs-test-root import -m '' x X X1 - rm -rf x - cvs -d /tmp/cvs-test-root co x - cvs -d /tmp/cvs-test-root co -d x2 x - cp t-yours x/testcase - cp t-mine x2/testcase - cd x; cvs ci -m '' - -cd x2; cvs ci -m '' - cd x2; cvs update - cat x2/testcase # at this point, user may commit blindly - -It looks like whomever added shift_boundaries() in analyze.c, which -seems to be the source of the diff3 induced mischief, already provided -a means to disable the boundary shifting optimization (at least with -a recompile). - -Here is the patch I applied to diff to disable this (currently) -overaggressive optimization: - -[ rittle@supra ]; diff -c analyze.c-old analyze.c -*** analyze.c-old Wed Oct 30 14:10:27 1996 ---- analyze.c Wed Oct 30 13:48:57 1996 -*************** -*** 616,622 **** - but usually it is cleaner to consider the following identical line - to be the "change". */ - -! int inhibit; - - static void - shift_boundaries (filevec) ---- 616,622 ---- - but usually it is cleaner to consider the following identical line - to be the "change". */ - -! int inhibit = 1; - - static void - shift_boundaries (filevec) - -Now, diff-2.7 with the above patch produces: - -[ rittle@supra ]; make diff-mine-yours 'DIFF=/usr/src/diffutils-2.7/diff' -/usr/src/diffutils-2.7/diff -a --horizon-lines=11 -- testcase-mine testcase-yours; true -16,18c16,18 -< // _titleColor = Color.black; -< // _disabledTitleColor = Color.gray; -< // _titleFont = Font.defaultFont (); ---- -> _titleColor = Color.black; -> _disabledTitleColor = Color.gray; -> _titleFont = Font.defaultFont (); -20,30d19 -< -< /* Convenience constructor for instantiating a Button with -< * bounds x, y, width, and height. Equivalent to -< * foo = new Button (); -< * foo.init (x, y, width, height); -< */ -< public Button (int x, int y, int width, int height) -< { -< this (); -< init (x, y, width, height); -< } - -Whereas, stock diff-2.7 produces: - -[ rittle@supra ]; make diff-mine-yours -diff -a --horizon-lines=11 -- testcase-mine testcase-yours; true -16,29c16,18 -< // _titleColor = Color.black; -< // _disabledTitleColor = Color.gray; -< // _titleFont = Font.defaultFont (); -< } -< -< /* Convenience constructor for instantiating a Button with -< * bounds x, y, width, and height. Equivalent to -< * foo = new Button (); -< * foo.init (x, y, width, height); -< */ -< public Button (int x, int y, int width, int height) -< { -< this (); -< init (x, y, width, height); ---- -> _titleColor = Color.black; -> _disabledTitleColor = Color.gray; -> _titleFont = Font.defaultFont (); - -A better solution might be to disable the boundary shifting code -unless explicitly turned on via command line argument. That way -programs, like diff3, expecting unoptimized diff regions will work -correctly, yet users can get smaller diffs, if desired. The problem -is that diff3 doesn't properly track changes once they have been -optimized. - -BTW, I never did like the look of the `optimized diff regions', so I -consider this a good change for other reasons... :-) - -Enjoy! - -Regards, -Loren --- -Loren J. Rittle (rittle@comm.mot.com) PGP KeyIDs: 1024/B98B3249 2048/ADCE34A5 -Systems Technology Research (IL02/2240) FP1024:6810D8AB3029874DD7065BC52067EAFD -Motorola, Inc. FP2048:FDC0292446937F2A240BC07D42763672 -(847) 576-7794 Call for verification of fingerprints. diff --git a/contrib/cvs/lib/getwd.c b/contrib/cvs/lib/getwd.c deleted file mode 100644 index 5707dcbf4a5ef..0000000000000 --- a/contrib/cvs/lib/getwd.c +++ /dev/null @@ -1,33 +0,0 @@ -/* getwd.c -- get current working directory pathname - Copyright (C) 1992 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. */ - -/* Some systems which include both getwd() and getcwd() have an implementation - of getwd() which is much faster than getcwd(). As a result, we use the - system's getwd() if it is available */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "system.h" - -/* Get the current working directory into PATHNAME */ - -char * -getwd (pathname) - char *pathname; -{ - char *getcwd(); - - return (getcwd(pathname, PATH_MAX)); -} diff --git a/contrib/cvs/lib/strdup.c b/contrib/cvs/lib/strdup.c deleted file mode 100644 index c81969da00d7e..0000000000000 --- a/contrib/cvs/lib/strdup.c +++ /dev/null @@ -1,39 +0,0 @@ -/* strdup.c -- return a newly allocated copy of a string - Copyright (C) 1990 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifdef STDC_HEADERS -#include <string.h> -#include <stdlib.h> -#else -char *malloc (); -char *strcpy (); -#endif - -/* Return a newly allocated copy of STR, - or 0 if out of memory. */ - -char * -strdup (str) - char *str; -{ - char *newstr; - - newstr = (char *) malloc (strlen (str) + 1); - if (newstr) - strcpy (newstr, str); - return newstr; -} diff --git a/contrib/cvs/lib/strippath.c b/contrib/cvs/lib/strippath.c deleted file mode 100644 index 39687f92b8047..0000000000000 --- a/contrib/cvs/lib/strippath.c +++ /dev/null @@ -1,80 +0,0 @@ -/* strippath.c -- remove unnecessary components from a path specifier - Copyright (C) 1992 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#if STDC_HEADERS || HAVE_STRING_H -#include <string.h> -/* An ANSI string.h and pre-ANSI memory.h might conflict. */ -#if !STDC_HEADERS && HAVE_MEMORY_H -#include <memory.h> -#endif /* not STDC_HEADERS and HAVE_MEMORY_H */ -#else /* not STDC_HJEADERS and not HAVE_STRING_H */ -#include <strings.h> -/* memory.h and strings.h conflict on some systems. */ -#endif /* not STDC_HEADERS and not HAVE_STRING_H */ - -#include <stdio.h> - -#if __STDC__ -static void remove_component(char *beginc, char *endc); -void strip_trailing_slashes(char *path); -#else -static void remove_component(); -void strip_trailing_slashes(); -#endif /* __STDC__ */ - -/* Remove unnecessary components from PATH. */ - -void -strip_path (path) - char *path; -{ - int stripped = 0; - char *cp, *slash; - - for (cp = path; (slash = strchr(cp, '/')) != NULL; cp = slash) - { - *slash = '\0'; - if ((!*cp && (cp != path || stripped)) || - strcmp(cp, ".") == 0 || strcmp(cp, "/") == 0) - { - stripped = 1; - remove_component(cp, slash); - slash = cp; - } - else - { - *slash++ = '/'; - } - } - strip_trailing_slashes(path); -} - -/* Remove the component delimited by BEGINC and ENDC from the path */ - -static void -remove_component (beginc, endc) - char *beginc; - char *endc; -{ - for (endc++; *endc; endc++) - *beginc++ = *endc; - *beginc = '\0'; -} diff --git a/contrib/cvs/src/NOTES b/contrib/cvs/src/NOTES deleted file mode 100644 index 646ebdf85207d..0000000000000 --- a/contrib/cvs/src/NOTES +++ /dev/null @@ -1,60 +0,0 @@ -wishlist - Tue Nov 2 15:22:58 PST 1993 - -* bcopy -> memcpy & friends. - ** done 12/18/93 - -* remove static buffers. -* replace list & node cache with recursive obstacks, (xmalloc, - getnode, getlist) -* check all io functions for error return codes. also check all - system calls. -* error check mkdir. - ---- -Old notes... - -* All sizing limits are gone. The rest of these items were incidental - in that effort. - -* login name from history was duplicated. taught existing routine to - cache and use that instead. Also add routines to cache uid, pid, - etc. - -* ign strings were never freed. Now they are. - -* there was a printf("... %s ...", cp) vs *cp bug in history.c. Now - fixed. - -* The environment variables TMPDIR, HOME, and LOGNAME were not - honored. Now they are. - -* extra line inserted by do_editor() is gone. Then obviated. Editor - is now called exactly once per checkin. - -* revised editor behaviour. Never use /dev/tty. If the editor - session fails, we haven't yet done anything. Therefor the user can - safely rerun cvs and we should just fail. Also use the editor for - initial log messages on added files. Also omit the confirmation - when adding directories. Adding directories will require an - explicit "commit" step soon. Make it possible to prevent null login - messages using #define REQUIRE_LOG_MESSAGES - -* prototypes for all callbacks. - -* all callbacks get ref pointers. - -* do_recursion/start_recursion now use recusion_frame's rather than a - list of a lot of pointers and global variables. - -* corrected types on status_dirproc(). - -* CONFIRM_DIRECTORY_ADDS - -* re_comp was innappropriate in a few places. I've eliminated it. - -* FORCE_MESSAGE_ON_ADD - -* So I built a regression test. Let's call it a sanity check to be - less ambitious. It exposed that cvs is difficult to call from - scripts. - diff --git a/contrib/cvs/src/README-rm-add b/contrib/cvs/src/README-rm-add deleted file mode 100644 index 87fd7c6d27741..0000000000000 --- a/contrib/cvs/src/README-rm-add +++ /dev/null @@ -1,31 +0,0 @@ -WHAT THE "DEATH SUPPORT" FEATURES DO: - -(Some of the death support stuff is documented in the main manual, but -this file is for stuff which noone has gotten around to adding to the -main manual yet). - -CVS with death support can record when a file is active, or alive, and -when it is removed, or dead. With this facility you can record the -history of a file, including the fact that at some point in its life -the file was removed and then later added. - -Files can now be added or removed in a branch and later merged -into the trunk. - - cvs update -A - touch a b c - cvs add a b c ; cvs ci -m "added" a b c - cvs tag -b branchtag - cvs update -r branchtag - touch d ; cvs add d - rm a ; cvs rm a - cvs ci -m "added d, removed a" - cvs update -A - cvs update -jbranchtag - -Added and removed files may also be merged between branches. - -Files removed in the trunk may be merged into branches. - -Files added on the trunk are a special case. They cannot be merged -into a branch. Instead, simply branch the file by hand. diff --git a/contrib/cvs/tools/pcl-cvs/ChangeLog.woods b/contrib/cvs/tools/pcl-cvs/ChangeLog.woods deleted file mode 100644 index 827c3f2e3fd75..0000000000000 --- a/contrib/cvs/tools/pcl-cvs/ChangeLog.woods +++ /dev/null @@ -1,383 +0,0 @@ -Thu Jan 4 13:19:20 1996 Greg A. Woods <woods@most.weird.com> - - * pcl-cvs.el: - - from Cyclic CVS version: - - Sat Dec 30 15:01:45 1995 Karl Fogel <kfogel@floss.cyclic.com> - - * pcl-cvs.el (cvs-changelog-ours-p): check that - `add-log-full-name' and `add-log-mailing-address' are non-nil, in - addition to checking that they are boundp. - -Fri Dec 22 17:52:17 1995 Greg A. Woods <woods@most.weird.com> - - * pcl-cvs.el: - - (cvs-parse-stdout): make the "connection timed out" an error - - - from Cyclic CVS version: - - Thu Dec 21 16:45:48 1995 Karl Fogel <kfogel@occs.cs.oberlin.edu> - - * pcl-cvs.el (cvs-parse-stderr): ignore kerberos connection - failure, since CVS will automatically try rsh next. I think this - is okay because if a person needs to know that kerberos failed, - then chances are the rsh failed too, and *that* error message will - clue them in that something's afoot. - -Thu Dec 21 21:13:10 1995 Greg A. Woods <woods@most.weird.com> - - * pcl-cvs.el: - - (cvs-parse-stdout): handle "Permission denied" (which will - often precede the "premature EOF from server" message....) - - - from Cyclic CVS version: - - Wed Nov 22 11:01:50 1995 Joshua Cowan <jcowan@hermit.reslife.okstate.edu> - - * pcl-cvs.el (cvs-changelog-ours-p): use `user-full-name' if - `add-log-full-name' unbound, as not every uses the stuff in - add-log.el. Same with `add-log-mailing-address'. - (cvs-changelog-entries): change to `change-log-mode' unless - already in it. - - * ToDo: - - more new ideas.... - -Mon Nov 27 23:19:50 1995 Greg A. Woods <woods@most.weird.com> - - * pcl-cvs.el: - - add more support for recognizing unknown directories - - add initial support for properly supporting directories with cvs-mode-add - -Tue Nov 21 16:51:45 1995 Greg A. Woods <woods@most.weird.com> - - * pcl-cvs.el: - - fix up the debug mail message buffer formatting - - include bugs@most.weird.com on debug message list (i.e. my gnats) - (cvs-parse-stderr): fix up handling of some transient errors, such as - network server errors - -Mon Nov 20 19:13:34 1995 Greg A. Woods <woods@most.weird.com> - - * Makefile: - - minor tweaks on version numbers, etc. - - added '-n -q' to emacs arguments... - - * pcl-cvs.texinfo: - - mention new pcl-cvs release properly - - mention new CVS release - - fix grammar & layout style here and there... - - move GPL to the bottom and into an included file (should ref another - info document) - - add Ediff documentation, fix up Emerge docs. - - updated Contributors section - - add note about 'Patched' state (FIXME: more remote docs needed!!!!) - - added some documentation for cvs-mode-changelog-commit - - added a few more index entries, etc. - - * pcl-cvs.el: - - update comments and documentation, fix grammar, etc. - - mention new CVS release - - re-sort cvs-mode-map setup, document key-map convention - - re-write (cvs-mode-ediff), adding (cvs-old-ediff-interface) - - fix (cvs-retrieve-revision-to-tmpfile) to handle empty revision arg. - - * ToDo: - - lots of new ideas - - give up on 'C-u' for cvs-mode-* - - minor prioritisation - -Thu Nov 16 20:38:58 1995 Greg A. Woods <woods@most.weird.com> - - * pcl-cvs.el (cvs-mode-emerge): - fix the quit-hook setup for ediff-* - (cvs-mode-ediff): new, based on cvs-mode-emerge - - * pcl-cvs.el (cvs-mode-emerge): - cleanups and use emerge-hooks, and protect from - multiple invocations (idea from Loren James Rittle <rittle@comm.mot.com>) - - * pcl-cvs.el (cvs-diff-program): - document problems with vendor versions - - * pcl-cvs.el, ToDo: - - add minimal "cvs tag" and "cvs rtag" support - (cvs-mod): clean up the documentation - (cvs-mode-map): clean up a bit too - (cvs-mode-log), (cvs-mode-status): clean up implementation - -Wed Nov 15 18:39:22 1995 Greg A. Woods <woods@most.weird.com> - - * pcl-cvs.el, ToDo: - (cvs-parse-stderr) - handle some more error messages from CVS - - * pcl-cvs.el: - Various tweaks and fixes after diffing with CVS-1.6.1 version: - - spelling/typos - - minor re-indentation - - missed one check for PATCHED - - more documentation and comment fixups - - * pcl-cvs.el: - From: Loren James Rittle <rittle@comm.mot.com> - To: info-cvs@prep.ai.mit.edu - Subject: Change to allow pcl-cvs to use ediff instead of emerge - Date: Mon, 6 Nov 95 17:17:31 CST - - 2) ensures the user wants to `update' in cases where a possible conflict - currectly exists; - - * pcl-cvs.el: - Message-Id: <9511062119.AA29213@supra.comm.mot.com> - From: Loren James Rittle <rittle@comm.mot.com> - To: info-cvs@prep.ai.mit.edu - Subject: Change to allow pcl-cvs to use more hidden buffer names - Date: Mon, 6 Nov 95 15:19:57 CST - - - PCL-CVS uses hidden buffers in some places. This patch makes more - PCL-CVS buffers hidden. - - Loren - -Tue Nov 14 20:56:41 1995 Greg A. Woods <woods@most.weird.com> - - * pcl-cvs.el (cvs-do-removal): - don't fail if the file is missing or a directory - (cvs-mode-add-change-log-entry-other-window): get the - change-log-filename and entry name right - - * pcl-cvs.el, ChangeLog: - * pcl-cvs.el (local-path, local-gnu-path): added documentation - string - (cvs-rmdir-program): use the proper default and leave it alone - - * pcl-cvs.el: - - from ccvs official sources: - revision 1.12 - pcl-cvs.el 1995/05/19 01:59:26 jimb - Automatically guess CVS log entries from ChangeLog contents. - * pcl-cvs.el (cvs-mode-changelog-commit): New command. - (cvs-changelog-full-paragraphs): New variable. - (cvs-changelog-name, cvs-narrow-changelog, - cvs-changelog-paragraph, cvs-changelog-subparagraph, - cvs-changelog-entry, cvs-changelog-ours-p, cvs-relative-path, - cvs-changelog-entries, cvs-changelog-insert-entries, cvs-union, - cvs-insert-changelog-entries, cvs-edit-delete-common-indentation): New functions. - (cvs-mode-map): Bind 'C' to cvs-mode-changelog-commit. - (cvs-mode): Mention cvs-mode-changelog-commit in docstring. - - * ChangeLog: - - from ccvs official sources: - revision 1.12 - ChangeLog 1995/05/19 01:59:26 jimb - Automatically guess CVS log entries from ChangeLog contents. - * pcl-cvs.el (cvs-mode-changelog-commit): New command. - (cvs-changelog-full-paragraphs): New variable. - (cvs-changelog-name, cvs-narrow-changelog, - cvs-changelog-paragraph, cvs-changelog-subparagraph, - cvs-changelog-entry, cvs-changelog-ours-p, cvs-relative-path, - cvs-changelog-entries, cvs-changelog-insert-entries, cvs-union, - cvs-insert-changelog-entries, cvs-edit-delete-common-indentation): New functions. - (cvs-mode-map): Bind 'C' to cvs-mode-changelog-commit. - (cvs-mode): Mention cvs-mode-changelog-commit in docstring. - - * pcl-cvs.el: - - slight variant of this change ccvs official sources - revision 1.10 - pcl-cvs.el 1995/05/03 18:56:20 jimb - (cvs-parse-stderr): Handle colons after both "rcsmerge" and "warning". - - * pcl-cvs.el: - - from ccvs official sources - revision 1.9 - pcl-cvs.el 1995/04/26 02:36:15 jimb - (cvs-parse-stderr): Recognize "conflicts" as well as "overlaps" before - "during merge." - - also fixed a few other minor inconsitencies in that region... - - * pcl-cvs.el: - - from ccvs official sources - revision 1.5 - pcl-cvs.el 1995/01/31 23:31:39 jimb - (cvs-cvsroot-required): New variable. - (cvs-do-update): If cvs-cvsroot-required is not set, don't complain if - CVSROOT and cvs-cvsroot are both unset. - - * pcl-cvs.el: - - use 'identity instead of '(lambda (foo) foo) - - fix a botch in cvs-make-list - - check cvs-status-flags and cvs-log-flags are lists before using them - -Mon Nov 13 23:49:25 1995 Greg A. Woods <woods@most.weird.com> - - * pcl-cvs.el: - - fixed up version strings - - minor changes to cvs-*-flags defaults - - added functions parse-string and cvs-make-list - - modified various parsers to handle "cvs server:" messages - - added support for "P" flag (PATCHED) - - fixed use of "-Q" for "cvs status" - - use cvs-make-list when reading new values for cvs-*-flags - - * Makefile: - - fix the info install rules... - - * ToDo: - - more things to look into... - -Sun Mar 12 20:40:05 1995 Greg A. Woods <woods@most.weird.com> - - * pcl-cvs.el: - - minor twiggle to old RCS Id's to match format - - * Makefile: - - fix up RCS Id's - - add clobber to "clean" targets - - separate installation of *.el's and default off - - fix INSTALL_DATA - - * pcl-cvs.el: - - minor twiggles to automatically localise and to note this is a local version - - * ToDo: - - first cut - - * .cvsignore: - - first time in -- default generated targets - -Tue Nov 22 20:49:39 1994 Greg A. Woods <woods@most.weird.com> - - * pcl-cvs.el: - - adjust RCS keywords - - reset shell to just /bin/sh - -Fri Nov 4 21:14:55 1994 Greg A. Woods <woods@most.weird.com> - - * pcl-cvs.el: - - fix directory for new CVS-1.4 - - add '-v' to cvs-status-flags - -Mon Dec 6 19:06:18 1993 Greg A. Woods <woods@most.weird.com> - - * pcl-cvs.el: - - I don't quite know how that happened, but we had a variable and - function with the same name, and an un-defined variable.... - - * pcl-cvs.el: - - re-format a few things.... - - replace numerous duplicate lambda expressions with a new common - function: cvs-quote-multiword-string - -Fri Nov 26 20:54:25 1993 Greg A. Woods <woods@most.weird.com> - - * pcl-cvs.el: - - oops! was changing the directory string we were comparing against! - - * pcl-cvs.el: - - oops -- missing an end-sexp.... - - * pcl-cvs.el: - - in theory this fixes up all the local directory vs. - default-directory problems - - * pcl-cvs.el: - - ensure multi-word args are quoted in messages - - enhance naming of diff buffers - -Fri Nov 12 18:43:09 1993 Greg A. Woods <woods@most.weird.com> - - * pcl-cvs.el: - - update comment about "Conflict"... - - fiddle with rcs-ident stuff - -Thu Nov 4 01:15:53 1993 Greg A. Woods <woods@most.weird.com> - - * pcl-cvs.el: - - set default cvs-status-flags to '("-Q) - - use cvs-bakprefix where intended - - add functions and keymaps for setting cvs-*-flags. - - re-pretty-print some stuff - -Wed Nov 3 23:11:15 1993 Greg A. Woods <woods@most.weird.com> - - * pcl-cvs.el: - - use cvs-kill-buffer-visiting in cvs-mode-diff-vendor for cleanup. - - fix last minibuffer message in cvs-mode-diff-vendor. - - * pcl-cvs.el: - - OOPS! put (list ...) back where we need evaluation. - - default to use of CVS/Root always for cvs-update, if it exits. - - * pcl-cvs.el: - - oops -- minor bug with usage of mapconcat - - changed (list ...) to '(...) - - * pcl-cvs.texinfo: - - minor updates of filenames and versions. - - added myself as a contributor - - * pcl-cvs.el: - - re-justified multitueds of comments, and fixed minor bits too. - - added support for CVS/Root file to supplement use of $CVSROOT and/or - cvs-cvsroot. - - added cvs-mode-map binding for cvs-change-cvsroot - - added optional message-fmt argument to cvs-execute-list (prints - message showing progress in minibuffer). - - modified cvs-mode-diff-cvs to put results in - cvs-fileinfo->cvs-diff-buffer. - - modified cvs-mode-diff-backup to put results in - cvs-fileinfo->backup-diff-buffer. - - modified cvs-mode-diff-vendor to put results in - cvs-fileinfo->vendor-diff-buffer. - - modified cvs-mode-diff-* to use cvs-diff-flags. - - added cvs-*-diffable. - - fixed various minibuffer progress messages. - -Thu Oct 28 23:10:38 1993 Greg A. Woods <woods@most.weird.com> - - * pcl-cvs.el: - - many minor improvements, - - several bug fixes, - - added some support for vendor branch merging, - -Tue Oct 26 18:26:33 1993 Greg A. Woods <woods@most.weird.com> - - * Makefile: - - fixes, localisations, etc. - -Fri Oct 22 21:19:15 1993 Greg A. Woods <woods@most.weird.com> - - * pcl-cvs.el, Makefile: - - localisations.... - - * pcl-cvs.el: - pick the 1.05 version over local edits.... - -Thu Oct 21 21:40:26 1993 Greg A. Woods <woods@most.weird.com> - - * texinfo.tex, pcl-cvs.texinfo, pcl-cvs.el, pcl-cvs-startup.el, pcl-cvs-lucid.el, compile-all.el, README, NEWS, Makefile, INSTALL, ChangeLog: - pcl-cvs version 1.05 distribution - -Tue Jun 1 16:25:35 1993 Greg A. Woods <woods@most.weird.com> - - * pcl-cvs.el: - add a newline to the cvs-mode-add description - -Fri May 28 14:13:41 1993 Greg A. Woods <woods@most.weird.com> - - * pcl-cvs.el: - add cvs-commit-buffer-require-final-newline to allow forcing a newline - onto the commit buffer - -Fri May 14 22:35:01 1993 Greg A. Woods <woods@most.weird.com> - - * pcl-cvs.el: - localizations.... - - * ChangeLog, INSTALL, Makefile, NEWS, README, compile-all.el, pcl-cvs.el, pcl-cvs-lucid.el, pcl-cvs-startup.el, pcl-cvs.texinfo, texinfo.tex: - pcl-cvs version 1.04 distribution - - * ChangeLog, INSTALL, Makefile, NEWS, README, compile-all.el, pcl-cvs.el, pcl-cvs-lucid.el, pcl-cvs-startup.el, pcl-cvs.texinfo, texinfo.tex: - Initial revision - diff --git a/contrib/cvs/tools/pcl-cvs/ToDo b/contrib/cvs/tools/pcl-cvs/ToDo deleted file mode 100644 index 8e317f897cca6..0000000000000 --- a/contrib/cvs/tools/pcl-cvs/ToDo +++ /dev/null @@ -1,44 +0,0 @@ -- documentation.... (esp. ChangeLog support) - -- IMPORTANT: make cvs-mode-tag run in the background - -- fix 'cvs-mode-add' to "cvs update" in the added directory - -- write 'cvs-mode-import' - -- write 'cvs-mode-handle-new-vendor-version' - - - checks out module - - does "cvs -n tag LAST_VENDOR" to find old files into *cvs* - -- add 'cvs-set-cvs-flags' for top level cvs command flags - -- add '\M-a' to do arbitrary 'cvs admin' commands - -- add 'cvs patch' support (with completion on tag names and hooks to -help generate ChangeLog files with rcs2log, etc.) - -- add 'cvs export' support (with completion on tag names and hooks to -help generate full releases) - -- add 'cvs-mode-version' to call 'cvs -v' [on ^C-cv ?] (really???) - -- re-write rcs2log in e-lisp. - -- add support for parsing 'modules' file ("cvs co -c") - -- enhance 'cvs-mode-rtag' - -- fix 'cvs-examine' - -- write 'cvs-mode-checkout' and 'cvs-mode-checkout-other-window' - -- write 'cvs-mode-release' - -- add an update mode that keeps all files - - - this will require all commands to work only on non-up-to-date - files - --- -#ident "@(#)cvs/contrib/pcl-cvs:$Name: $Id: ToDo,v 1.1 1996/04/14 15:17:57 kfogel Exp $" |