Dummies for Solaris build
[exim.git] / src / src / exiqgrep.src
index da63c99809aae4af2d3e6a5745f0b911902fcabd..c8762df479da01279db8d73d9a4a1ad3a57ecd93 100644 (file)
 # Routine for extracting the UTC timestamp from message ID
 # lifted from eximstat utility
 
-# Version 1.1
+# Version 1.2
 
 use strict;
+BEGIN { pop @INC if $INC[-1] eq '.' };
+
 use Getopt::Std;
+use File::Basename;
 
 # Have this variable point to your exim binary.
 my $exim = 'BIN_DIRECTORY/exim';
@@ -43,8 +46,19 @@ if ($^O eq 'darwin') { # aka MacOS X
   $base = 62;
 };
 
-getopts('hf:r:y:o:s:zxlibRc',\%opt);
+if ($ARGV[0] eq '--version') {
+    print basename($0) . ": $0\n",
+        "build: EXIM_RELEASE_VERSIONEXIM_VARIANT_VERSION\n",
+        "perl(runtime): $]\n";
+        exit 0;
+}
+
+getopts('hf:r:y:o:s:C:zxlibRcaG:',\%opt);
+if ($ARGV[0]) { &help; exit;}
 if ($opt{h}) { &help; exit;}
+if ($opt{a}) { $eargs = '-bp'; }
+if ($opt{C} && -e $opt{C} && -f $opt{C} && -R $opt{C}) { $eargs .= ' -C '.$opt{C}; }
+if ($opt{G}) { $eargs .= ' -qG'.$opt{G}; }
 
 # Read message queue output into hash
 &collect();
@@ -60,6 +74,7 @@ sub help() {
 Exim message queue display utility.
 
        -h              This help message.
+       -C              Specify which exim.conf to use.
 
 Selection criteria:
        -f <regexp>     Match sender address sender (field is "< >" wrapped)
@@ -69,6 +84,7 @@ Selection criteria:
        -o <seconds>    Message older than
        -z              Frozen messages only (exclude non-frozen)
        -x              Non-frozen messages only (exclude frozen)
+       -G <queuename>  Match in given queue only
 
 [ NB: for regexps, provided string sits in /<string>/ ]
 
@@ -78,16 +94,17 @@ Display options:
        -i              Message IDs only
        -b              Brief Format
        -R              Reverse order
+       -a              All recipients (including delivered)
 EOF
 }
 
 sub collect() {
-       open(QUEUE,"$exim $eargs |") or die("Error openning pipe: $!\n");
+       open(QUEUE,"$exim $eargs |") or die("Error opening pipe: $!\n");
        while(<QUEUE>) {
                chomp();
                my $line = $_;
                #Should be 1st line of record, if not error.
-               if ($line =~ /^\s*(\w+)\s+((?:\d+(?:\.\d+)?[A-Z])?)\s*(\w{6}-\w{6}-\w{2})\s+(<.*?>)/) {
+               if ($line =~ /^\s*(\w+)\s+((?:\d+(?:\.\d+)?[A-Z]?)?)\s*(\w{6}-\w{6}-\w{2})\s+(<.*?>)/) {
                        my $msg = $3;
                        $id{$msg}{age} = $1;
                        $id{$msg}{size} = $2;
@@ -115,13 +132,13 @@ sub selection() {
        foreach my $msg (keys(%id)) {
                if ($opt{f}) {
                        # Match sender address
-                       next unless ($id{$msg}{from} =~ /$opt{f}/);
+                       next unless ($id{$msg}{from} =~ /$opt{f}/i);
                }
                if ($opt{r}) {
                        # Match any recipient address
                        my $match = 0;
                        foreach my $rcpt (@{$id{$msg}{rcpt}}) {
-                               $match++ if ($rcpt =~ /$opt{r}/);
+                               $match++ if ($rcpt =~ /$opt{r}/i);
                        }
                        next unless ($match);
                }