Add support for zstd compressed .zst files (Bug 2515)
[users/jgh/exim.git] / src / src / exigrep.src
index 118cd91b91d41c00fd21c76e99fb53b6458415b3..835766fb465d83c0c3c10e532b99b137538fba01 100644 (file)
@@ -5,7 +5,7 @@ use strict;
 BEGIN { pop @INC if $INC[-1] eq '.' };
 
 use Pod::Usage;
 BEGIN { pop @INC if $INC[-1] eq '.' };
 
 use Pod::Usage;
-use Getopt::Long;
+use Getopt::Long qw(:config no_ignore_case);
 use File::Basename;
 
 # Copyright (c) 2007-2017 University of Cambridge.
 use File::Basename;
 
 # Copyright (c) 2007-2017 University of Cambridge.
@@ -159,7 +159,8 @@ my $compressors = {
   gz   => { cmd => 'zcat',  args => '' },
   bz2  => { cmd => 'bzcat', args => '' },
   xz   => { cmd => 'xzcat', args => '' },
   gz   => { cmd => 'zcat',  args => '' },
   bz2  => { cmd => 'bzcat', args => '' },
   xz   => { cmd => 'xzcat', args => '' },
-  lzma => { cmd => 'lzma',  args => '-dc' }
+  lzma => { cmd => 'lzma',  args => '-dc' },
+  zst  => { cmd => 'zstdcat', args => '' },
 };
 my $csearch = 0;
 
 };
 my $csearch = 0;
 
@@ -233,7 +234,7 @@ GetOptions(
       'version'        => sub {
             print basename($0) . ": $0\n",
                 "build: EXIM_RELEASE_VERSIONEXIM_VARIANT_VERSION\n",
       'version'        => sub {
             print basename($0) . ": $0\n",
                 "build: EXIM_RELEASE_VERSIONEXIM_VARIANT_VERSION\n",
-                "perl(runtime): $^V\n";
+                "perl(runtime): $]\n";
             exit 0;
       },
 ) and @ARGV or pod2usage;
             exit 0;
       },
 ) and @ARGV or pod2usage;
@@ -244,7 +245,8 @@ $pattern = quotemeta $pattern if $literal;
 # Start a pager if output goes to a terminal
 if (-t 1 and $use_pager)
   {
 # Start a pager if output goes to a terminal
 if (-t 1 and $use_pager)
   {
-  foreach ($ENV{PAGER}//(), 'less', 'more')
+  # for perl >= v5.10.x: foreach ($ENV{PAGER}//(), 'less', 'more')
+  foreach (defined $ENV{PAGER} ? $ENV{PAGER} : (), 'less', 'more')
     {
     local $ENV{LESS} .= ' --no-init --quit-if-one-screen';
     open(my $pager, '|-', $_) or next;
     {
     local $ENV{LESS} .= ' --no-init --quit-if-one-screen';
     open(my $pager, '|-', $_) or next;
@@ -312,8 +314,8 @@ given host, for example.
 
 If no file names are given on the command line, the standard input is read.
 
 
 If no file names are given on the command line, the standard input is read.
 
-For known file extensions indicating compression (F<.gz>, F<.bz2>, F<.xz>, and F<.lzma>)
-a suitable de-compressor is used, if available.
+For known file extensions indicating compression (F<.gz>, F<.bz2>, F<.xz>,
+F<.lzma>, and F<.zst>) a suitable de-compressor is used, if available.
 
 The output is sent through a pager if a terminal is connected to STDOUT. As
 pager are considered: C<$ENV{PAGER}>, C<less>, C<more>.
 
 The output is sent through a pager if a terminal is connected to STDOUT. As
 pager are considered: C<$ENV{PAGER}>, C<less>, C<more>.
@@ -353,7 +355,7 @@ Do not use a pager, even if STDOUT is connected to a terminal.
 =item B<-h>|B<--help>
 
 Print a short reference help. For more detailed help try L<exigrep(8)>,
 =item B<-h>|B<--help>
 
 Print a short reference help. For more detailed help try L<exigrep(8)>,
-or C<exigrep -m>.
+or C<exigrep --man>.
 
 =item B<-m>|B<--man>
 
 
 =item B<-m>|B<--man>