]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
add alternat file option to hashfinder util
authorAnthony Minessale <anthm@freeswitch.org>
Fri, 2 Oct 2015 16:13:52 +0000 (11:13 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Fri, 2 Oct 2015 17:50:49 +0000 (12:50 -0500)
support-d/utils/hashfinder

index 88df4ce5cc1b1c4cfe97b5d99eca9064ee994c07..b402f6552b9cba99ef2b5adaa1215a747554ca0b 100755 (executable)
@@ -35,9 +35,9 @@
 # hashfinder - Find origin of a particular line of code
 #
 
-
 my $file = shift;
 my $regex = shift;
+my $alt_file = shift;
 my $delim = "  ";
 
 $file and $regex or die "missing params.  Syntax: <file> <regex>";
@@ -58,7 +58,9 @@ sub doit($$) {
     $linematch = 1;
   }
 
-  open GIT, "git blame -n $file $rev|";
+ retry:
+
+  open GIT, "git blame -n $file $rev 2>&1|";
 
   my $mc = 0;
   my @matches = ();
@@ -66,6 +68,14 @@ sub doit($$) {
   while (<GIT>) {
     my $matched = 0;
 
+       if (/fatal:/) {
+               if ($alt_file) {
+                       $file = $alt_file;
+                       $alt_file = undef;
+                       goto retry;
+               }
+       }
+
     if ($linematch) {
       $matched = (/^\S+\s+$pattern\s+/);
     } else {
@@ -81,7 +91,6 @@ sub doit($$) {
 
   close(GIT);
 
-
   if ($mc > 5) {
     print $delim x $loops;
     print "$mc matches; Maybe more specific?\n";
@@ -100,10 +109,11 @@ sub doit($$) {
     my ($hash, $lno, $author, $line);
     my $done = 0;
 
-    if (/$file/) {
+    if (/\//) {
       ($hash, $lno, $author, $line) = /(\S+)\s+\S+\s+(\S+)\s+(\([^\)]+\))\s*(.*)/;
       $done = 1;
     } else {
+               die $_;
       ($hash, $lno, $author, $line) = /(\S+)\s+(\S+)\s+(\([^\)]+\))\s*(.*)/;
     }