mirror of
https://git.hardenedbsd.org/hardenedbsd/HardenedBSD.git
synced 2025-01-01 00:18:15 +01:00
Remove stray files
This commit is contained in:
parent
7ee3907f2a
commit
3d0e86bdb6
@ -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
|
||||
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
|
||||
-&.@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.
|
@ -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));
|
||||
}
|
@ -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;
|
||||
}
|
@ -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';
|
||||
}
|
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user