[Lxr-commits] CVS: lxr/lib/LXR/Files CVS.pm,1.25,1.26
Brought to you by:
ajlittoz
From: Dave B. <bro...@us...> - 2004-07-20 17:31:09
|
Update of /cvsroot/lxr/lxr/lib/LXR/Files In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15115/lib/LXR/Files Modified Files: CVS.pm Log Message: non-GNU 'diff' doesn't work for getting annotations; handle this nicely by checking and then showing none Index: CVS.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Files/CVS.pm,v retrieving revision 1.25 retrieving revision 1.26 diff -u -d -r1.25 -r1.26 --- CVS.pm 19 Jul 2004 19:50:20 -0000 1.25 +++ CVS.pm 20 Jul 2004 17:30:54 -0000 1.26 @@ -25,7 +25,7 @@ use Time::Local; use LXR::Common; -use vars qw(%cvs $cache_filename); +use vars qw(%cvs $cache_filename $gnu_diff); sub new { my ( $self, $rootpath ) = @_; @@ -34,6 +34,14 @@ $self->{'rootpath'} = $rootpath; $self->{'rootpath'} =~ s@/*$@/@; + # the rcsdiff command (used in getdiff) uses parameters only supported by GNU diff + $ENV{'PATH'} = '/bin:/usr/local/bin:/usr/bin:/usr/sbin'; + if ( `diff --version` =~ /GNU/ ) { + $gnu_diff = 1; + } else { + $gnu_diff = 0; + } + return $self; } @@ -89,7 +97,7 @@ $self->parsecvs($filename); my $rev = $self->filerev( $filename, $release ); - return undef unless defined($rev); + return () unless defined($rev); my $hrev = $cvs{'header'}{'head'}; my $lrev; @@ -106,6 +114,7 @@ $hrev = $cvs{'branch'}{$hrev}{'next'} || last; my @diff = $self->getdiff( $filename, $lrev, $hrev ); + return () unless scalar @diff; my $off = 0; while (@diff) { @@ -166,14 +175,16 @@ sub getdiff { my ( $self, $filename, $release1, $release2 ) = @_; my ($fileh); + + return () if $gnu_diff == 0; $self->parsecvs($filename); my $rev1 = $self->filerev( $filename, $release1 ); - return undef unless defined($rev1); + return () unless defined($rev1); my $rev2 = $self->filerev( $filename, $release2 ); - return undef unless defined($rev2); + return () unless defined($rev2); $rev1 =~ /([\d\.]*)/; $rev1 = $1; # untaint |