Re: Linux 2.6.19-rc4

Al Viro
2006-10-31T22:39:14Z

On Tue, Oct 31, 2006 at 04:26:55PM -0500, Valdis.Kletnieks@vt.edu wrote:
> On Tue, 31 Oct 2006 11:51:33 EST, Dave Jones said:
> > On Tue, Oct 31, 2006 at 08:34:23AM -0800, Ray Lee wrote:
> > > On 10/31/06, Martin J. Bligh <mbligh@google.com> wrote:
> > > > > At some point we should get rid of all the "politeness" warnings, just
> > > > > because they can end up hiding the _real_ ones.
> > > >
> > > > Yay! Couldn't agree more. Does this mean you'll take patches for all the
> > > > uninitialized variable crap from gcc 4.x ?
> > >
> > > What would be useful in the short term is a tool that shows only the
> > > new warnings that didn't exist in the last point release.
> >
> > git clone git://git.kernel.org/pub/scm/linux/kernel/git/viro/remapper.git
>
> As somebody proves me wrong on the fact it's not easy. Of course, it's
> Al's git tree, which is probably saying something. :)

It is easy, actually. Key observation: unidiff with 0 context lines contains
everything you need to find out which lines survive and where do they move;
just ignore the actual changes in the diff and look at @@... and diff headers.
There are two parts - one takes such diff and generates a fate map for lines
(basically, "this range gets shifted to this place, this range doesn't make it
at all" + file removals + file renames if diff has been generated by git-diff
and contains that information). Another is a very simple filter; it takes
map file as argument, reads it and uses the map to massage lines it reads
from stdin. When we see <affected pathname>:<number> in the beginning of the
line or after a space, see if that line is in surviving range; if it is,
replace pathname and shift line number, otherwise add a prefix ("O:" by
default). That's it. About 10K of sparse C - both filter and map generator.

Two-clause BSD license, so feel free to use it in any way you want.
I don't think there will be serious changes down the road; I'll need to
sit down and turn a description of that puppy into a proper manpage, but
that's about it.