+From 83befcbcee0756af0c43f2a5f7dbed3bb5a4cd6e Mon Sep 17 00:00:00 2001
+From: Todd Lyons <tlyons@exim.org>
+Date: Sat, 12 Oct 2013 09:42:31 -0700
+Subject: [PATCH] Bug 1334: AutoDetect compression type in exigrep
+
+Does not use any extra perl modules.
+Attempts hard coded types first, so no extra code for the standard
+ case.
+Easy to add more compression types.
+---
+ src/src/exigrep.src | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 53 insertions(+)
+
diff --git a/src/src/exigrep.src b/src/src/exigrep.src
-index 0950b58..9e0ced3 100644
+index 0950b58..d22d362 100644
--- a/src/src/exigrep.src
+++ b/src/src/exigrep.src
-@@ -124,6 +124,60 @@ elsif ( ($invert && (($insensitive && !/$pattern/io) || !/$pattern/o)) ||
+@@ -124,6 +124,54 @@ elsif ( ($invert && (($insensitive && !/$pattern/io) || !/$pattern/o)) ||
{ print "$_\n"; }
}
+ {
+ if ($filename =~ /\.(?:$ext)$/)
+ {
-+ # Undecided:
-+ # 1) Better to just print the error and return...
-+ if ($compressors->{$ext}->{bin} eq '')
-+ {
-+ warn("Didn't find $ext decompressor for $filename\n");
-+ return undef;
-+ }
-+ # 2) ...or just return undef that will result in no output
-+ $cmdline = ($compressors->{$ext}->{bin} eq '') ?
-+ undef :
-+ $compressors->{$ext}->{bin} ." ".
++ # Just die if compressor not found; if this occurrs in the middle of
++ # two valid files with a lot of matches, error could easily be missed.
++ die("Didn't find $ext decompressor for $filename\n")
++ if ($compressors->{$ext}->{bin} eq '');
++ $cmdline = $compressors->{$ext}->{bin} ." ".
+ $compressors->{$ext}->{args};
+ last;
+ }
# The main program. Extract the pattern and make sure any relevant characters
# are quoted if the -l flag is given. The -t flag gives a time-on-queue value
-@@ -154,6 +208,11 @@ if (@ARGV)
+@@ -154,6 +202,11 @@ if (@ARGV)
open(LOG, "ZCAT_COMMAND $filename |") ||
die "Unable to zcat $filename: $!\n";
}
else
{
open(LOG, "<$filename") || die "Unable to open $filename: $!\n";
+--
+1.7.9.5
+