Replaced Compress::Zlib with IO::Compress::Gzip and IO::Uncompress::Gunzip. Replaced Compress::Bzip2 with IO::Compress::Bzip2 and IO::Uncompress::Bunzip2.
This commit is contained in:
		
							
								
								
									
										4
									
								
								Build.PL
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								Build.PL
									
									
									
									
									
								
							| @@ -62,8 +62,8 @@ my $build = Module::Build->new( | |||||||
|     }, |     }, | ||||||
|     recommends		=> { |     recommends		=> { | ||||||
|         "File::MMagic"		=> 0, |         "File::MMagic"		=> 0, | ||||||
|         "Compress::Zlib"	=> 0, |         "IO::Compress::Gzip"	=> 0, | ||||||
|         "Compress::Bzip2"	=> 2, |         "IO::Compress::Bzip2"	=> 2, | ||||||
|         "IO::Compress::Xz"	=> 0, |         "IO::Compress::Xz"	=> 0, | ||||||
|         "Term::ReadKey"		=> 0, |         "Term::ReadKey"		=> 0, | ||||||
|     }, |     }, | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								Changes
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								Changes
									
									
									
									
									
								
							| @@ -1,7 +1,11 @@ | |||||||
| arclog change log | arclog change log | ||||||
|  |  | ||||||
| 2022-03-19 | 2022-03-19 | ||||||
| 	 Added support for the xz compression. | 	 1. Added support for the xz compression. | ||||||
|  | 	 2. Replaced Compress::Zlib with IO::Compress::Gzip and | ||||||
|  | 	    IO::Uncompress::Gunzip. | ||||||
|  | 	 2. Replaced Compress::Bzip2 with IO::Compress::Bzip2 and | ||||||
|  | 	    IO::Uncompress::Bunzip2. | ||||||
|  |  | ||||||
| 2020-02-06	version 3.05 | 2020-02-06	version 3.05 | ||||||
| 	 1. Replaced the messy GNU-styled, multi-lingual documents with a | 	 1. Replaced the messy GNU-styled, multi-lingual documents with a | ||||||
|   | |||||||
| @@ -52,8 +52,8 @@ EOT | |||||||
| our (%OPT_PREREQ); | our (%OPT_PREREQ); | ||||||
| %OPT_PREREQ = ( | %OPT_PREREQ = ( | ||||||
|     "File::MMagic"	=> 0, |     "File::MMagic"	=> 0, | ||||||
|     "Compress::Zlib"	=> 0, |     "IO::Compress::Gzip"	=> 0, | ||||||
|     "Compress::Bzip2"	=> 2, |     "IO::Compress::Bzip2"	=> 2, | ||||||
|     "IO::Compress::Xz"	=> 0, |     "IO::Compress::Xz"	=> 0, | ||||||
|     "Term::ReadKey"	=> 0, |     "Term::ReadKey"	=> 0, | ||||||
| ); | ); | ||||||
|   | |||||||
							
								
								
									
										76
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										76
									
								
								README.md
									
									
									
									
									
								
							| @@ -174,22 +174,23 @@ System Requirement | |||||||
|      the [GnuWin32] home page.  Be sure to save it as `file.exe` |      the [GnuWin32] home page.  Be sure to save it as `file.exe` | ||||||
|      somewhere in your `PATH`. |      somewhere in your `PATH`. | ||||||
|  |  | ||||||
|    * [Compress::Zlib] |    * [IO::Compress::Gzip] and [IO::Uncompress::Gunzip] | ||||||
|  |  | ||||||
|      This is used to support reading/writing the gzip compressed |      They are used to support reading/writing the gzip compressed | ||||||
|      files.  It is only needed when gzip compressed files are |      files.  It is only needed when gzip compressed files are | ||||||
|      encountered.  If it is not available, `arclog` tries the `gzip` |      encountered.  If they are not available, `arclog` tries the | ||||||
|      executable instead.  If that is not available, too, `arclog` |      `gzip` executable instead.  If that is not available, too, | ||||||
|      fails.  You should not worry about Compress::Zlib since it comes |      `arclog` fails.  You should not worry about IO::Compress::Gzip | ||||||
|      with Perl since version 5.9.3.  If not, it is contained in the |      since it comes with Perl since version 5.9.3.  If not, it is | ||||||
|      [IO-Compress] distribution.  You can download and install it from |      contained in the [IO-Compress] distribution.  You can download | ||||||
|      the CPAN archive, or install it with the CPAN shell: |      and install it from the CPAN archive, or install it with the | ||||||
|  |      CPAN shell: | ||||||
|  |  | ||||||
|          cpan Compress::Zlib |          cpan IO::Compress::Gzip | ||||||
|  |  | ||||||
|      or with the CPANPLUS shell: |      or with the CPANPLUS shell: | ||||||
|  |  | ||||||
|          cpanp i Compress::Zlib |          cpanp i IO::Compress::Gzip | ||||||
|  |  | ||||||
|      For Debian/Ubuntu: |      For Debian/Ubuntu: | ||||||
|  |  | ||||||
| @@ -211,38 +212,39 @@ System Requirement | |||||||
|      [the gzip website].  Be sure to save it as `gzip.exe` somewhere |      [the gzip website].  Be sure to save it as `gzip.exe` somewhere | ||||||
|      in your `PATH`. |      in your `PATH`. | ||||||
|  |  | ||||||
|    * [Compress::Bzip2] version 2 or above. |    * [IO::Compress::Bzip2] and [IO::Uncompress::Bunzip2] | ||||||
|  |  | ||||||
|      This is used to support reading/writing the bzip2 compressed |      They are used to support reading/writing the bzip2 compressed | ||||||
|      files.  It is only needed when bzip2 compressed files are |      files.  They are only needed when bzip2 compressed files are | ||||||
|      encountered.  If it is not available, `arclog` tries the `bzip2` |      encountered.  If they are not available, `arclog` tries the | ||||||
|      executable instead.  If that is not available, too, `arclog` |      `bzip2` executable instead.  If that is not available, too, | ||||||
|      fails.  Notice that older versions before 2 does not work, since |      `arclog` fails.  You should not worry about IO::Compress::Bzip2 | ||||||
|      the file I/O compression was not implemented yet.  You can |      since it comes with Perl since version 5.10.1.  If not, it is | ||||||
|      download and install Compress::Bzip2 from the CPAN archive, or |      contained in the [IO-Compress] distribution.  You can download | ||||||
|      install it with the CPAN shell: |      and install it from the CPAN archive, or install it with the | ||||||
|  |      CPAN shell: | ||||||
|  |  | ||||||
|          cpan Compress::Bzip2 |          cpan IO::Compress::Bzip2 | ||||||
|  |  | ||||||
|      or with the CPANPLUS shell: |      or with the CPANPLUS shell: | ||||||
|  |  | ||||||
|          cpanp i Compress::Bzip2 |          cpanp i IO::Compress::Bzip2 | ||||||
|  |  | ||||||
|      For Debian/Ubuntu: |      For Debian/Ubuntu: | ||||||
|  |  | ||||||
|          sudo apt install libcompress-bzip2-perl |          sudo apt install libio-compress-perl | ||||||
|  |  | ||||||
|      For Red Hat/Fedora/CentOS: |      For Red Hat/Fedora/CentOS: | ||||||
|  |  | ||||||
|          sudo yum install perl-Compress-Bzip2 |          sudo yum install perl-IO-Compress | ||||||
|  |  | ||||||
|      For FreeBSD: |      For FreeBSD: | ||||||
|  |  | ||||||
|          ports install p5-Compress-Bzip2 |          ports install p5-IO-Compress | ||||||
|  |  | ||||||
|      For ActivePerl: |      For ActivePerl: | ||||||
|  |  | ||||||
|          ppm install Compress-Bzip2 |          ppm install IO-Compress | ||||||
|  |  | ||||||
|      The alternative `bzip2.exe` for MS-Windows can be obtained from |      The alternative `bzip2.exe` for MS-Windows can be obtained from | ||||||
|      [the bzip2 website].  Be sure to save it as `bzip2.exe` somewhere |      [the bzip2 website].  Be sure to save it as `bzip2.exe` somewhere | ||||||
| @@ -320,10 +322,12 @@ System Requirement | |||||||
| [Date::Parse]: https://metacpan.org/pod/Date::Parse | [Date::Parse]: https://metacpan.org/pod/Date::Parse | ||||||
| [File::MMagic]: https://metacpan.org/pod/File::MMagic | [File::MMagic]: https://metacpan.org/pod/File::MMagic | ||||||
| [GnuWin32]: http://gnuwin32.sourceforge.net | [GnuWin32]: http://gnuwin32.sourceforge.net | ||||||
| [Compress::Zlib]: https://metacpan.org/pod/Compress::Zlib | [IO::Compress::Gzip]: https://metacpan.org/pod/IO::Compress::Gzip | ||||||
|  | [IO::Uncompress::Gunzip]: https://metacpan.org/pod/IO::Uncompress::Gunzip | ||||||
| [the gzip website]: https://www.gzip.org | [the gzip website]: https://www.gzip.org | ||||||
| [IO-Compress]: https://metacpan.org/dist/IO-Compress | [IO-Compress]: https://metacpan.org/dist/IO-Compress | ||||||
| [Compress::Bzip2]: https://metacpan.org/pod/Compress::Bzip2 | [IO::Compress::Bzip2]: https://metacpan.org/pod/IO::Compress::Bzip2 | ||||||
|  | [IO::Uncompress::Bunzip2]: https://metacpan.org/pod/IO::Uncompress::Bunzip2 | ||||||
| [the bzip2 website]: http://www.bzip.org | [the bzip2 website]: http://www.bzip.org | ||||||
| [IO::Compress::Xz]: https://metacpan.org/pod/IO::Compress::Xz | [IO::Compress::Xz]: https://metacpan.org/pod/IO::Compress::Xz | ||||||
| [IO::Uncompress::UnXz]: https://metacpan.org/pod/IO::Uncompress::UnXz | [IO::Uncompress::UnXz]: https://metacpan.org/pod/IO::Uncompress::UnXz | ||||||
| @@ -492,18 +496,18 @@ Options | |||||||
|   * `g`, `gzip` |   * `g`, `gzip` | ||||||
|  |  | ||||||
|     Compress with `gzip`.  This is the default.  `arclog` can use |     Compress with `gzip`.  This is the default.  `arclog` can use | ||||||
|     `Compress::Zlib` to compress instead of calling `gzip`.  This can |     `IO::Compress::Gzip` to compress instead of calling `gzip`. | ||||||
|     be safer and faster for not calling foreign binaries.  If |     This can be safer and faster for not calling foreign binaries. | ||||||
|     `Compress::Zlib` is not installed, it tries `gzip` instead.  If |     If `IO::Compress::Gzip` is not installed, it tries `gzip` | ||||||
|     `gzip` is not available, either, it fails. |     instead.  If `gzip` is not available, either, it fails. | ||||||
|  |  | ||||||
|   * `b`, `bzip2` |   * `b`, `bzip2` | ||||||
|  |  | ||||||
|     Compress with `bzip2`.  `arclog` can use `Compress::Bzip2` to |     Compress with `bzip2`.  `arclog` can use `IO::Compress::Bzip2` | ||||||
|     compress instead of calling `bzip2`.  This can be safer and faster |     to compress instead of calling `bzip2`.  This can be safer and | ||||||
|     for not calling foreign binaries.  If `Compress::Bzip2` is not |     faster for not calling foreign binaries.  If | ||||||
|     installed, it tries `bzip2` instead.  If `bzip2` is not available, |     `IO::Compress::Bzip2` is not installed, it tries `bzip2` | ||||||
|     either, it fails. |     instead.  If `bzip2` is not available, either, it fails. | ||||||
|  |  | ||||||
|   * `x`, `xz` |   * `x`, `xz` | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										162
									
								
								arclog
									
									
									
									
									
								
							
							
						
						
									
										162
									
								
								arclog
									
									
									
									
									
								
							| @@ -824,7 +824,6 @@ sub check_type : method { | |||||||
|  |  | ||||||
|     # Check by file name suffix |     # Check by file name suffix | ||||||
|     # Check by file name suffix on empty files, too. |     # Check by file name suffix on empty files, too. | ||||||
|     # Compress::Bzip2 2 creates empty files that confuses further processing. |  | ||||||
|     if (-z $FH || $MAGIC_METHOD eq MAGIC_SUFFIX) { |     if (-z $FH || $MAGIC_METHOD eq MAGIC_SUFFIX) { | ||||||
|         return TYPE_GZIP if $file =~ /\.gz$/; |         return TYPE_GZIP if $file =~ /\.gz$/; | ||||||
|         return TYPE_BZIP2 if $file =~ /\.bz2$/; |         return TYPE_BZIP2 if $file =~ /\.bz2$/; | ||||||
| @@ -1265,13 +1264,13 @@ sub check_gzip : method { | |||||||
|     # Checked before |     # Checked before | ||||||
|     return ref($GZIP_IO)->new if defined $GZIP_IO; |     return ref($GZIP_IO)->new if defined $GZIP_IO; | ||||||
|  |  | ||||||
|     # See whether Compress::Zlib or gzip |     # See whether IO::Compress::Gzip or gzip | ||||||
|     print STDERR "Checking gzip I/O handler to use ... " if $VERBOSE > 1; |     print STDERR "Checking gzip I/O handler to use ... " if $VERBOSE > 1; | ||||||
|     print STDERR "\n  Checking Compress::Zlib ... " if $VERBOSE > 2; |     print STDERR "\n  Checking IO::Compress::Gzip ... " if $VERBOSE > 2; | ||||||
|     # Check if we have Compress::Zlib |     # Check if we have IO::Compress::Gzip | ||||||
|     if (eval { require Compress::Zlib; 1; }) { |     if (eval { require IO::Compress::Gzip; require IO::Uncompress::Gunzip; 1; }) { | ||||||
|         print STDERR "OK\nfound " if $VERBOSE > 2; |         print STDERR "OK\nfound " if $VERBOSE > 2; | ||||||
|         print STDERR "Compress::Zlib\n" if $VERBOSE > 1; |         print STDERR "IO::Compress::Gzip\n" if $VERBOSE > 1; | ||||||
|         return ($GZIP_IO = _private::IO::Gzip::PM->new); |         return ($GZIP_IO = _private::IO::Gzip::PM->new); | ||||||
|     } |     } | ||||||
|     # Not found |     # Not found | ||||||
| @@ -1290,7 +1289,7 @@ sub check_gzip : method { | |||||||
|     print STDERR "no\n" if $VERBOSE > 2; |     print STDERR "no\n" if $VERBOSE > 2; | ||||||
|  |  | ||||||
|     print STDERR "not found\n" if $VERBOSE > 1; |     print STDERR "not found\n" if $VERBOSE > 1; | ||||||
|     die "$THIS_FILE: Necessary Compress::Zlib or gzip not available.\n$SHORT_HELP\n"; |     die "$THIS_FILE: Necessary IO::Compress::Gzip or gzip not available.\n$SHORT_HELP\n"; | ||||||
| } | } | ||||||
|  |  | ||||||
| # Check for compression method of bzip2 | # Check for compression method of bzip2 | ||||||
| @@ -1300,13 +1299,13 @@ sub check_bzip2 : method { | |||||||
|     # Checked before |     # Checked before | ||||||
|     return ref($BZIP2_IO)->new if defined $BZIP2_IO; |     return ref($BZIP2_IO)->new if defined $BZIP2_IO; | ||||||
|  |  | ||||||
|     # See whether Compress::Bzip2 or bzip2 |     # See whether IO::Compress::Bzip2 or bzip2 | ||||||
|     print STDERR "Checking bzip2 I/O handler to use ... " if $VERBOSE > 1; |     print STDERR "Checking bzip2 I/O handler to use ... " if $VERBOSE > 1; | ||||||
|     print STDERR "\n  Checking Compress::Bzip2 ... " if $VERBOSE > 2; |     print STDERR "\n  Checking IO::Compress::Bzip2 ... " if $VERBOSE > 2; | ||||||
|     # Check if we have Compress::Bzip2 |     # Check if we have IO::Compress::Bzip2 | ||||||
|     if (eval { require Compress::Bzip2; import Compress::Bzip2 2.00; 1; }) { |     if (eval { require IO::Compress::Bzip2; require IO::Uncompress::Bunzip2; 1; }) { | ||||||
|         print STDERR "OK\nfound " if $VERBOSE > 2; |         print STDERR "OK\nfound " if $VERBOSE > 2; | ||||||
|         print STDERR "Compress::Bzip2\n" if $VERBOSE > 1; |         print STDERR "IO::Compress::Bzip2\n" if $VERBOSE > 1; | ||||||
|         return ($BZIP2_IO = _private::IO::Bzip2::PM->new); |         return ($BZIP2_IO = _private::IO::Bzip2::PM->new); | ||||||
|     } |     } | ||||||
|     # Not found |     # Not found | ||||||
| @@ -1325,7 +1324,7 @@ sub check_bzip2 : method { | |||||||
|     print STDERR "no\n" if $VERBOSE > 2; |     print STDERR "no\n" if $VERBOSE > 2; | ||||||
|  |  | ||||||
|     print STDERR "not found\n" if $VERBOSE > 1; |     print STDERR "not found\n" if $VERBOSE > 1; | ||||||
|     die "$THIS_FILE: Necessary Compress::Bzip2 or bzip2 not available.\n$SHORT_HELP\n"; |     die "$THIS_FILE: Necessary IO::Compress::Bzip2 or bzip2 not available.\n$SHORT_HELP\n"; | ||||||
| } | } | ||||||
|  |  | ||||||
| # Check for compression method of xz | # Check for compression method of xz | ||||||
| @@ -1599,9 +1598,9 @@ sub open_read : method { | |||||||
|         print STDERR "done\n" if $VERBOSE > 2; |         print STDERR "done\n" if $VERBOSE > 2; | ||||||
|     } |     } | ||||||
|     ($self->{"file"}, $self->{"FH"}) = ($file, $FH); |     ($self->{"file"}, $self->{"FH"}) = ($file, $FH); | ||||||
|     import Compress::Zlib qw(gzopen); |     print STDERR "  Attaching file with IO::Uncompress::Gunzip ... " if $VERBOSE > 2; | ||||||
|     print STDERR "  Attaching file with gzopen(..., \"rb\") ... " if $VERBOSE > 2; |     $self->{"gz"} = IO::Uncompress::Gunzip->new($FH) | ||||||
|     $self->{"gz"} = gzopen($FH, "rb")   or die "$THIS_FILE: $file: $!"; |                                         or die "$THIS_FILE: $file: $IO::Uncompress::Gunzip::GunzipError"; | ||||||
|     print STDERR "done\n" if $VERBOSE > 2; |     print STDERR "done\n" if $VERBOSE > 2; | ||||||
|     return; |     return; | ||||||
| } | } | ||||||
| @@ -1620,9 +1619,9 @@ sub open_write : method { | |||||||
|         print STDERR "done\n" if $VERBOSE > 2; |         print STDERR "done\n" if $VERBOSE > 2; | ||||||
|     } |     } | ||||||
|     ($self->{"file"}, $self->{"FH"}) = ($file, $FH); |     ($self->{"file"}, $self->{"FH"}) = ($file, $FH); | ||||||
|     import Compress::Zlib qw(gzopen); |     print STDERR "  Attaching file with IO::Compress::Gzip ... " if $VERBOSE > 2; | ||||||
|     print STDERR "  Attaching file with gzopen(..., \"wb9\") ... " if $VERBOSE > 2; |     $self->{"gz"} = IO::Compress::Gzip->new($FH) | ||||||
|     $self->{"gz"} = gzopen($FH, "wb9")  or die "$THIS_FILE: $file: $!"; |                                         or die "$THIS_FILE: $file: $IO::Compress::Gzip::GzipError"; | ||||||
|     print STDERR "done\n" if $VERBOSE > 2; |     print STDERR "done\n" if $VERBOSE > 2; | ||||||
|     return; |     return; | ||||||
| } | } | ||||||
| @@ -1641,7 +1640,6 @@ sub open_append : method { | |||||||
|         print STDERR "done\n" if $VERBOSE > 2; |         print STDERR "done\n" if $VERBOSE > 2; | ||||||
|     } |     } | ||||||
|     ($self->{"file"}, $self->{"FH"}) = ($file, $FH); |     ($self->{"file"}, $self->{"FH"}) = ($file, $FH); | ||||||
|     import Compress::Zlib qw(gzopen); |  | ||||||
|  |  | ||||||
|     # Save the original data if file has content so that file size is |     # Save the original data if file has content so that file size is | ||||||
|     # greater than 0.  STDOUT is always of size 0. |     # greater than 0.  STDOUT is always of size 0. | ||||||
| @@ -1662,18 +1660,20 @@ sub open_append : method { | |||||||
|         print STDERR "done\n" if $VERBOSE > 2; |         print STDERR "done\n" if $VERBOSE > 2; | ||||||
|  |  | ||||||
|         # Decompress the buffer and save to our file |         # Decompress the buffer and save to our file | ||||||
|         print STDERR "  Attaching buffer with gzopen(..., \"rb\") ... " if $VERBOSE > 2; |         print STDERR "  Attaching buffer with IO::Uncompress::Gunzip ... " if $VERBOSE > 2; | ||||||
|         $gzt = gzopen($FHT, "rb")       or die "$THIS_FILE: tempfile: $!"; |         $gzt = IO::Uncompress::Gunzip->new($FHT) | ||||||
|  |                                         or die "$THIS_FILE: tempfile: $IO::Uncompress::Gunzip::GunzipError"; | ||||||
|         print STDERR "done\n" if $VERBOSE > 2; |         print STDERR "done\n" if $VERBOSE > 2; | ||||||
|         print STDERR "  Attaching file with gzopen(..., \"wb9\") ... " if $VERBOSE > 2; |         print STDERR "  Attaching file with IO::Compress::Gzip ... " if $VERBOSE > 2; | ||||||
|         $gz = gzopen($FH, "wb9")        or die "$THIS_FILE: $file: $!"; |         $gz = IO::Compress::Gzip->new($FH) | ||||||
|  |                                         or die "$THIS_FILE: $file: $IO::Compress::Gzip::GzipError"; | ||||||
|         print STDERR "done\n" if $VERBOSE > 2; |         print STDERR "done\n" if $VERBOSE > 2; | ||||||
|  |  | ||||||
|         print STDERR "  Reading old records back from the buffer ... " if $VERBOSE > 2; |         print STDERR "  Reading old records back from the buffer ... " if $VERBOSE > 2; | ||||||
|         $count = 0; |         $count = 0; | ||||||
|         while (($n = $gzt->gzreadline($_)) != 0) { |         while (defined($_ = $gzt->getline)) { | ||||||
|             die "$THIS_FILE: tempfile: " . $gz->gzerror if $n == -1; |             ($gz->write($_) == length $_) | ||||||
|             ($gz->gzwrite($_) == $n)    or die "$THIS_FILE: $file: " . $gz->gzerror; |                                         or die "$THIS_FILE: $file: $IO::Compress::Gzip::GzipError"; | ||||||
|             $count++; |             $count++; | ||||||
|         } |         } | ||||||
|         close $FHT                      or die "$THIS_FILE: tempfile: $!"; |         close $FHT                      or die "$THIS_FILE: tempfile: $!"; | ||||||
| @@ -1681,8 +1681,9 @@ sub open_append : method { | |||||||
|  |  | ||||||
|     # A whole new file |     # A whole new file | ||||||
|     } else { |     } else { | ||||||
|         print STDERR "  Attaching file with gzopen(..., \"wb9\") ... " if $VERBOSE > 2; |         print STDERR "  Attaching file with IO::Compress::Gzip ... " if $VERBOSE > 2; | ||||||
|         $gz = gzopen($FH, "wb9")        or die "$THIS_FILE: $file: $!"; |         $gz = IO::Compress::Gzip->new($FH) | ||||||
|  |                                         or die "$THIS_FILE: $file: $IO::Compress::Gzip::GzipError"; | ||||||
|         print STDERR "done\n" if $VERBOSE > 2; |         print STDERR "done\n" if $VERBOSE > 2; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -1692,13 +1693,7 @@ sub open_append : method { | |||||||
|  |  | ||||||
| # Read a line from the I/O stream | # Read a line from the I/O stream | ||||||
| sub readline : method { | sub readline : method { | ||||||
|     local ($_, %_); |     return $_[0]->{"gz"}->getline(); | ||||||
|     my ($self, $file, $gz, $n); |  | ||||||
|     $self = $_[0]; |  | ||||||
|     ($file, $gz) = ($self->{"file"}, $self->{"gz"}); |  | ||||||
|     (($n = $gz->gzreadline($_)) != -1)  or die "$THIS_FILE: $file: " . $gz->gzerror; |  | ||||||
|     return undef if $n == 0; |  | ||||||
|     return $_; |  | ||||||
| } | } | ||||||
|  |  | ||||||
| # Output data to the I/O stream | # Output data to the I/O stream | ||||||
| @@ -1707,7 +1702,7 @@ sub write : method { | |||||||
|     my ($self, $file, $gz); |     my ($self, $file, $gz); | ||||||
|     ($self, $_) = @_; |     ($self, $_) = @_; | ||||||
|     ($file, $gz) = ($self->{"file"}, $self->{"gz"}); |     ($file, $gz) = ($self->{"file"}, $self->{"gz"}); | ||||||
|     ($gz->gzwrite($_) == length $_)     or die "$THIS_FILE: $file: " . $gz->gzerror; |     ($gz->write($_) == length $_)       or die "$THIS_FILE: $file: $IO::Compress::Gzip::GzipError"; | ||||||
|     return; |     return; | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -1729,15 +1724,16 @@ sub close : method { | |||||||
|  |  | ||||||
|         # Create empty compressed content |         # Create empty compressed content | ||||||
|         print STDERR "  Applying empty compressed content ... " if $VERBOSE > 2; |         print STDERR "  Applying empty compressed content ... " if $VERBOSE > 2; | ||||||
|         $_ = gzopen($FH, "wb9")         or die "$THIS_FILE: $file: $!"; |         $_ = IO::Compress::Gzip->new($FH, Append => 0) | ||||||
|         $_->gzclose                     and die "$THIS_FILE: $file: " . $_->gzerror; |                                         or die "$THIS_FILE: $file: $IO::Compress::Gzip::GzipError"; | ||||||
|  |         $_->close                       or die "$THIS_FILE: $file: $IO::Compress::Gzip::GzipError"; | ||||||
|         undef $_; |         undef $_; | ||||||
|         undef $gz; |         undef $gz; | ||||||
|         print STDERR "done\n" if $VERBOSE > 2; |         print STDERR "done\n" if $VERBOSE > 2; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     if (defined $gz) { |     if (defined $gz) { | ||||||
|         $gz->gzclose                    and die "$THIS_FILE: $file: " . $gz->gzerror; |         $gz->close                      or die "$THIS_FILE: $file: $IO::Compress::Gzip::GzipError"; | ||||||
|     } |     } | ||||||
|     CORE::close $self->{"FH"} if $self->{"FH"}->opened; |     CORE::close $self->{"FH"} if $self->{"FH"}->opened; | ||||||
|     delete $self->{"gz"}; |     delete $self->{"gz"}; | ||||||
| @@ -2059,9 +2055,9 @@ sub open_read : method { | |||||||
|         print STDERR "done\n" if $VERBOSE > 2; |         print STDERR "done\n" if $VERBOSE > 2; | ||||||
|     } |     } | ||||||
|     ($self->{"file"}, $self->{"FH"}) = ($file, $FH); |     ($self->{"file"}, $self->{"FH"}) = ($file, $FH); | ||||||
|     import Compress::Bzip2 qw(bzopen); |     print STDERR "  Attaching file with IO::Uncompress::Bunzip2 ... " if $VERBOSE > 2; | ||||||
|     print STDERR "  Attaching file with bzopen(..., \"rb\") ... " if $VERBOSE > 2; |     $self->{"bz"} = IO::Uncompress::Bunzip2->new($FH) | ||||||
|     $self->{"bz"} = bzopen($FH, "rb")   or die "$THIS_FILE: $file: $!"; |                                         or die "$THIS_FILE: $file: $IO::Uncompress::Bunzip2::Bunzip2Error"; | ||||||
|     print STDERR "done\n" if $VERBOSE > 2; |     print STDERR "done\n" if $VERBOSE > 2; | ||||||
|     return; |     return; | ||||||
| } | } | ||||||
| @@ -2080,9 +2076,9 @@ sub open_write : method { | |||||||
|         print STDERR "done\n" if $VERBOSE > 2; |         print STDERR "done\n" if $VERBOSE > 2; | ||||||
|     } |     } | ||||||
|     ($self->{"file"}, $self->{"FH"}) = ($file, $FH); |     ($self->{"file"}, $self->{"FH"}) = ($file, $FH); | ||||||
|     import Compress::Bzip2 qw(bzopen); |     print STDERR "  Attaching file with IO::Compress::Bzip2 ... " if $VERBOSE > 2; | ||||||
|     print STDERR "  Attaching file with bzopen(..., \"wb9\") ... " if $VERBOSE > 2; |     $self->{"bz"} = IO::Compress::Bzip2->new($FH) | ||||||
|     $self->{"bz"} = bzopen($FH, "wb9")  or die "$THIS_FILE: $file: $!"; |                                         or die "$THIS_FILE: $file: $IO::Compress::Bzip2::Bzip2Error"; | ||||||
|     print STDERR "done\n" if $VERBOSE > 2; |     print STDERR "done\n" if $VERBOSE > 2; | ||||||
|     return; |     return; | ||||||
| } | } | ||||||
| @@ -2101,7 +2097,6 @@ sub open_append : method { | |||||||
|         print STDERR "done\n" if $VERBOSE > 2; |         print STDERR "done\n" if $VERBOSE > 2; | ||||||
|     } |     } | ||||||
|     ($self->{"file"}, $self->{"FH"}) = ($file, $FH); |     ($self->{"file"}, $self->{"FH"}) = ($file, $FH); | ||||||
|     import Compress::Bzip2 qw(bzopen); |  | ||||||
|  |  | ||||||
|     # Save the original data if file has content so that file size is |     # Save the original data if file has content so that file size is | ||||||
|     # greater than 0.  STDOUT is always of size 0. |     # greater than 0.  STDOUT is always of size 0. | ||||||
| @@ -2122,19 +2117,20 @@ sub open_append : method { | |||||||
|         print STDERR "done\n" if $VERBOSE > 2; |         print STDERR "done\n" if $VERBOSE > 2; | ||||||
|  |  | ||||||
|         # Decompress the buffer and save to our file |         # Decompress the buffer and save to our file | ||||||
|         print STDERR "  Attaching buffer with bzopen(..., \"rb\") ... " if $VERBOSE > 2; |         print STDERR "  Attaching buffer with IO::Uncompress::Bunzip2 ... " if $VERBOSE > 2; | ||||||
|         $bzt = bzopen($FHT, "rb")       or die "$THIS_FILE: tempfile: $!"; |         $bzt = IO::Uncompress::Bunzip2->new($FHT) | ||||||
|  |                                         or die "$THIS_FILE: $file: $IO::Uncompress::Bunzip2::Bunzip2Error"; | ||||||
|         print STDERR "done\n" if $VERBOSE > 2; |         print STDERR "done\n" if $VERBOSE > 2; | ||||||
|         print STDERR "  Attaching file with bzopen(..., \"wb9\") ... " if $VERBOSE > 2; |         print STDERR "  Attaching file with IO::Compress::Bzip2 ... " if $VERBOSE > 2; | ||||||
|         $bz = bzopen($FH, "wb9")        or die "$THIS_FILE: $file: $!"; |         $bz = IO::Compress::Bzip2->new($FH) | ||||||
|  |                                         or die "$THIS_FILE: $file: $IO::Compress::Bzip2::Bzip2Error"; | ||||||
|         print STDERR "done\n" if $VERBOSE > 2; |         print STDERR "done\n" if $VERBOSE > 2; | ||||||
|  |  | ||||||
|         print STDERR "  Reading old records back from the buffer ... " if $VERBOSE > 2; |         print STDERR "  Reading old records back from the buffer ... " if $VERBOSE > 2; | ||||||
|         $count = 0; |         $count = 0; | ||||||
|         while (($n = $bzt->bzreadline($_)) != 0) { |         while (defined($_ = $bzt->getline)) { | ||||||
|             die "$THIS_FILE: tempfile: " . $bz->bzerror if $n == -1; |             ($bz->write($_) == length $_) | ||||||
|             ($bz->bzwrite($_, length $_) == length $_) |                                         or die "$THIS_FILE: $file: $IO::Compress::Bzip2::Bzip2Error"; | ||||||
|                                         or die "$THIS_FILE: $file: " . $bz->bzerror; |  | ||||||
|             $count++; |             $count++; | ||||||
|         } |         } | ||||||
|         close $FHT                      or die "$THIS_FILE: tempfile: $!"; |         close $FHT                      or die "$THIS_FILE: tempfile: $!"; | ||||||
| @@ -2142,8 +2138,9 @@ sub open_append : method { | |||||||
|  |  | ||||||
|     # A whole new file |     # A whole new file | ||||||
|     } else { |     } else { | ||||||
|         print STDERR "  Attaching file with bzopen(..., \"wb9\") ... " if $VERBOSE > 2; |         print STDERR "  Attaching file with IO::Compress::Bzip2 ... " if $VERBOSE > 2; | ||||||
|         $bz = bzopen($FH, "wb9")        or die "$THIS_FILE: $file: $!"; |         $bz = IO::Compress::Bzip2->new($FH) | ||||||
|  |                                         or die "$THIS_FILE: $file: $IO::Compress::Bzip2::Bzip2Error"; | ||||||
|         print STDERR "done\n" if $VERBOSE > 2; |         print STDERR "done\n" if $VERBOSE > 2; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -2153,13 +2150,7 @@ sub open_append : method { | |||||||
|  |  | ||||||
| # Read a line from the I/O stream | # Read a line from the I/O stream | ||||||
| sub readline : method { | sub readline : method { | ||||||
|     local ($_, %_); |     return $_[0]->{"bz"}->getline(); | ||||||
|     my ($self, $file, $bz, $n); |  | ||||||
|     $self = $_[0]; |  | ||||||
|     ($file, $bz) = ($self->{"file"}, $self->{"bz"}); |  | ||||||
|     (($n = $bz->bzreadline($_)) != -1)  or die "$THIS_FILE: $file: " . $bz->bzerror; |  | ||||||
|     return undef if $n == 0; |  | ||||||
|     return $_; |  | ||||||
| } | } | ||||||
|  |  | ||||||
| # Output data to the I/O stream | # Output data to the I/O stream | ||||||
| @@ -2168,8 +2159,7 @@ sub write : method { | |||||||
|     my ($self, $file, $bz); |     my ($self, $file, $bz); | ||||||
|     ($self, $_) = @_; |     ($self, $_) = @_; | ||||||
|     ($file, $bz) = ($self->{"file"}, $self->{"bz"}); |     ($file, $bz) = ($self->{"file"}, $self->{"bz"}); | ||||||
|     ($bz->bzwrite($_, length $_) == length $_) |     ($bz->write($_) == length $_)       or die "$THIS_FILE: $file: $IO::Compress::Xz::XzError"; | ||||||
|                                         or die "$THIS_FILE: $file: " . $bz->bzerror; |  | ||||||
|     return; |     return; | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -2191,15 +2181,16 @@ sub close : method { | |||||||
|  |  | ||||||
|         # Create empty compressed content |         # Create empty compressed content | ||||||
|         print STDERR "  Applying empty compressed content ... " if $VERBOSE > 2; |         print STDERR "  Applying empty compressed content ... " if $VERBOSE > 2; | ||||||
|         $_ = bzopen($FH, "wb9")         or die "$THIS_FILE: $file: $!"; |         $_ = IO::Compress::Bzip2->new($FH) | ||||||
|         $_->bzclose                     and die "$THIS_FILE: $file: " . $_->bzerror; |                                         or die "$THIS_FILE: $file: $IO::Compress::Bzip2::Bzip2Error"; | ||||||
|  |         $_->close                       or die "$THIS_FILE: $file: $IO::Compress::Bzip2::Bzip2Error"; | ||||||
|         undef $_; |         undef $_; | ||||||
|         undef $bz; |         undef $bz; | ||||||
|         print STDERR "done\n" if $VERBOSE > 2; |         print STDERR "done\n" if $VERBOSE > 2; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     if (defined $bz) { |     if (defined $bz) { | ||||||
|         $bz->bzclose                    and die "$THIS_FILE: $file: " . $bz->bzerror; |         $bz->close                      or die "$THIS_FILE: $file: $IO::Compress::Bzip2::Bzip2Error"; | ||||||
|     } |     } | ||||||
|     CORE::close $self->{"FH"} if $self->{"FH"}->opened; |     CORE::close $self->{"FH"} if $self->{"FH"}->opened; | ||||||
|     delete $self->{"bz"}; |     delete $self->{"bz"}; | ||||||
| @@ -3201,20 +3192,22 @@ them.)  The following compression methods are supported: | |||||||
| =item g, gzip | =item g, gzip | ||||||
|  |  | ||||||
| Compress with L<gzip(1)|gzip/1>.  This is the default.  F<arclog> | Compress with L<gzip(1)|gzip/1>.  This is the default.  F<arclog> | ||||||
| can use L<Compress::Zlib(3)|Compress::Zlib/3> to compress instead of | can use L<IO::Compress::Gzip(3)|IO::Compress::Gzip/3> to compress | ||||||
| calling L<gzip(1)|gzip/1>.  This can be safer and faster for not | instead of calling L<gzip(1)|gzip/1>.  This can be safer and faster | ||||||
| calling foreign binaries.  if L<Compress::Zlib(3)|Compress::Zlib/3> | for not calling foreign binaries.  if | ||||||
| is not installed, it tries L<gzip(1)|gzip/1> instead.  If | L<IO::Compress::Gzip(3)|IO::Compress::Gzip/3> is not installed, it | ||||||
| L<gzip(1)|gzip/1> is not available, either, it fails. | tries L<gzip(1)|gzip/1> instead.  If L<gzip(1)|gzip/1> is not | ||||||
|  | available, either, it fails. | ||||||
|  |  | ||||||
| =item b, bzip2 | =item b, bzip2 | ||||||
|  |  | ||||||
| Compress with L<bzip2(1)|bzip2/1>.  F<arclog> can use | Compress with L<bzip2(1)|bzip2/1>.  F<arclog> can use | ||||||
| L<Compress::Bzip2(3)|Compress::Bzip2/3> to compress instead of | L<IO::Compress::Bzip2(3)|IO::Compress::Bzip2/3> to compress | ||||||
| calling L<bzip2(1)|bzip2/1>.  This can be safer and faster for not | instead of calling L<bzip2(1)|bzip2/1>.  This can be safer and faster | ||||||
| calling foreign binaries.  If L<Compress::Bzip2(3)|Compress::Bzip2/3> | for not calling foreign binaries.  If | ||||||
| is not installed, it will try to use L<bzip2(1)|bzip2/1> instead.  If | L<IO::Compress::Bzip2(3)|IO::Compress::Bzip2/3> is not installed, it | ||||||
| L<bzip2(1)|bzip2/1> is not available, either, it fails. | will try to use L<bzip2(1)|bzip2/1> instead.  If L<bzip2(1)|bzip2/1> | ||||||
|  | is not available, either, it fails. | ||||||
|  |  | ||||||
| =item x, xz | =item x, xz | ||||||
|  |  | ||||||
| @@ -3377,11 +3370,12 @@ messages. | |||||||
|  |  | ||||||
| =head1 SEE ALSO | =head1 SEE ALSO | ||||||
|  |  | ||||||
| L<gzip(1)|gzip/1>, L<bzip2(1)|bzip2/1>, L<xz(1)|xz/1>, | L<gzip(1)|gzip/1>, L<IO::Compress::Gzip(3)|IO::Compress::Gzip/3>, | ||||||
| L<Compress::Zlib(3)|Compress::Zlib/3>, L<syslog(1)|syslog/1>, | L<IO::Uncompress::Gunzip(3)|IO::Uncompress::Gunzip/3>, | ||||||
| L<Compress::Bzip2(3)|Compress::Bzip2/3>, | L<bzip2(1)|bzip2/1>, L<IO::Compress::Bzip2(3)|IO::Compress::Bzip2/3>, | ||||||
| L<IO::Compress::Xz(3)|IO::Compress::Xz/3>, | L<IO::Uncompress::Bunzip2(3)|IO::Uncompress::Bunzip2/3>, | ||||||
|  | L<xz(1)|xz/1>, L<IO::Compress::Xz(3)|IO::Compress::Xz/3>, | ||||||
| L<IO::Uncompress::UnXz(3)|IO::Uncompress::UnXz/3>, | L<IO::Uncompress::UnXz(3)|IO::Uncompress::UnXz/3>, | ||||||
| L<syslog(2)|syslog/2> | L<syslog(1)|syslog/1>, L<syslog(2)|syslog/2> | ||||||
|  |  | ||||||
| =cut | =cut | ||||||
|   | |||||||
							
								
								
									
										71
									
								
								t/_helper.pm
									
									
									
									
									
								
							
							
						
						
									
										71
									
								
								t/_helper.pm
									
									
									
									
									
								
							| @@ -227,22 +227,20 @@ sub read_file($) { | |||||||
|  |  | ||||||
|     # a gzip compressed file |     # a gzip compressed file | ||||||
|     if ($file =~ /\.gz$/) { |     if ($file =~ /\.gz$/) { | ||||||
|         # Compress::Zlib |         # IO::Uncompress::Gunzip | ||||||
|         if (eval {  require Compress::Zlib; |         if (eval { require IO::Uncompress::Gunzip; 1; }) { | ||||||
|                     Compress::Zlib->import(qw(gzopen)); |  | ||||||
|                     1; }) { |  | ||||||
|             use Compress::Zlib qw(gzopen); |  | ||||||
|             my ($FH, $gz); |             my ($FH, $gz); | ||||||
|             $content = ""; |             $content = ""; | ||||||
|             open $FH, $file             or die this_file . ": $file: $!"; |             open $FH, $file             or die this_file . ": $file: $!"; | ||||||
|             $gz = gzopen($FH, "rb")     or die this_file . ": $file: $!"; |             $gz = IO::Uncompress::Gunzip->new($FH) | ||||||
|  |                                         or die this_file . ": $file: $IO::Uncompress::Gunzip::GunzipError"; | ||||||
|             while (1) { |             while (1) { | ||||||
|                 ($gz->gzread($_, 10240) != -1) |                 ($gz->read($_, 10240) != -1) | ||||||
|                                         or die this_file . ": $file: " . $gz->gzerror; |                                         or die this_file . ": $file: $IO::Uncompress::Gunzip::GunzipError"; | ||||||
|                 $content .= $_; |                 $content .= $_; | ||||||
|                 last if length $_ < 10240; |                 last if length $_ < 10240; | ||||||
|             } |             } | ||||||
|             $gz->gzclose                and die this_file . ": $file: " . $gz->gzerror; |             $gz->close                  or die this_file . ": $file: $IO::Uncompress::Gunzip::GunzipError"; | ||||||
|             return $content; |             return $content; | ||||||
|  |  | ||||||
|         # gzip executable |         # gzip executable | ||||||
| @@ -258,22 +256,20 @@ sub read_file($) { | |||||||
|  |  | ||||||
|     # a bzip compressed file |     # a bzip compressed file | ||||||
|     } elsif ($file =~ /\.bz2$/) { |     } elsif ($file =~ /\.bz2$/) { | ||||||
|         # Compress::Bzip2 |         # IO::Uncompress::Bunzip2 | ||||||
|         if (eval {  require Compress::Bzip2; |         if (eval { require IO::Uncompress::Bunzip2; 1; }) { | ||||||
|                     Compress::Bzip2->import(2.00); |  | ||||||
|                     Compress::Bzip2->import(qw(bzopen)); |  | ||||||
|                     1; }) { |  | ||||||
|             my ($FH, $bz); |             my ($FH, $bz); | ||||||
|             $content = ""; |             $content = ""; | ||||||
|             open $FH, $file             or die this_file . ": $file: $!"; |             open $FH, $file             or die this_file . ": $file: $!"; | ||||||
|             $bz = bzopen($FH, "rb")     or die this_file . ": $file: $!"; |             $bz = IO::Uncompress::Bunzip2->new($FH) | ||||||
|  |                                         or die this_file . ": $file: $IO::Uncompress::Bunzip2::Bunzip2Error"; | ||||||
|             while (1) { |             while (1) { | ||||||
|                 ($bz->bzread($_, 10240) != -1) |                 ($bz->read($_, 10240) != -1) | ||||||
|                                         or die this_file . ": $file: " . $bz->bzerror; |                                         or die this_file . ": $file: $IO::Uncompress::Bunzip2::Bunzip2Error"; | ||||||
|                 $content .= $_; |                 $content .= $_; | ||||||
|                 last if length $_ < 10240; |                 last if length $_ < 10240; | ||||||
|             } |             } | ||||||
|             $bz->bzclose                and die this_file . ": $file: " . $bz->bzerror; |             $bz->close                  or die this_file . ": $file: $IO::Uncompress::Bunzip2::Bunzip2Error"; | ||||||
|             return $content; |             return $content; | ||||||
|  |  | ||||||
|         # bzip2 executable |         # bzip2 executable | ||||||
| @@ -353,16 +349,15 @@ sub write_file($$) { | |||||||
|  |  | ||||||
|     # a gzip compressed file |     # a gzip compressed file | ||||||
|     if ($file =~ /\.gz$/) { |     if ($file =~ /\.gz$/) { | ||||||
|         # Compress::Zlib |         # IO::Compress::Gzip | ||||||
|         if (eval {  require Compress::Zlib; |         if (eval { require IO::Compress::Gzip; 1; }) { | ||||||
|                     Compress::Zlib->import(qw(gzopen)); |  | ||||||
|                     1; }) { |  | ||||||
|             my ($FH, $gz); |             my ($FH, $gz); | ||||||
|             open $FH, ">$file"          or die this_file . ": $file: $!"; |             open $FH, ">$file"          or die this_file . ": $file: $!"; | ||||||
|             $gz = gzopen($FH, "wb9")    or die this_file . ": $file: $!"; |             $gz = IO::Compress::Gzip->new($FH) | ||||||
|             ($gz->gzwrite($content) == length $content) |                                         or die this_file . ": $file: $IO::Compress::Gzip::GzipError"; | ||||||
|                                         or die this_file . ": $file: " . $gz->gzerror; |             ($gz->write($content, length $content) == length $content) | ||||||
|             $gz->gzclose                and die this_file . ": $file: " . $gz->gzerror; |                                         or die this_file . ": $file: $IO::Compress::Gzip::GzipError"; | ||||||
|  |             $gz->close                  or die this_file . ": $file: $IO::Compress::Gzip::GzipError"; | ||||||
|             return; |             return; | ||||||
|  |  | ||||||
|         # gzip executable |         # gzip executable | ||||||
| @@ -378,17 +373,15 @@ sub write_file($$) { | |||||||
|  |  | ||||||
|     # a bzip compressed file |     # a bzip compressed file | ||||||
|     } elsif ($file =~ /\.bz2$/) { |     } elsif ($file =~ /\.bz2$/) { | ||||||
|         # Compress::Bzip2 |         # IO::Compress::Bzip2 | ||||||
|         if (eval {  require Compress::Bzip2; |         if (eval { require IO::Compress::Bzip2; 1; }) { | ||||||
|                     Compress::Bzip2->import(2.00); |  | ||||||
|                     Compress::Bzip2->import(qw(bzopen)); |  | ||||||
|                     1; }) { |  | ||||||
|             my ($FH, $bz); |             my ($FH, $bz); | ||||||
|             open $FH, ">$file"          or die this_file . ": $file: $!"; |             open $FH, ">$file"          or die this_file . ": $file: $!"; | ||||||
|             $bz = bzopen($FH, "wb9")    or die this_file . ": $file: $!"; |             $bz = IO::Compress::Bzip2->new($FH) | ||||||
|             ($bz->bzwrite($content, length $content) == length $content) |                                         or die this_file . ": $file: $IO::Compress::Bzip2::Bzip2Error"; | ||||||
|                                         or die this_file . ": $file: " . $bz->bzerror; |             ($bz->write($content, length $content) == length $content) | ||||||
|             $bz->bzclose                and die this_file . ": $file: " . $bz->bzerror; |                                         or die this_file . ": $file: $IO::Compress::Bzip2::Bzip2Error"; | ||||||
|  |             $bz->close                  or die this_file . ": $file: $IO::Compress::Bzip2::Bzip2Error"; | ||||||
|             return; |             return; | ||||||
|  |  | ||||||
|         # bzip2 executable |         # bzip2 executable | ||||||
| @@ -601,18 +594,18 @@ sub has_no_file() { | |||||||
|  |  | ||||||
| # If we have gzip support somewhere | # If we have gzip support somewhere | ||||||
| sub has_no_gzip() { | sub has_no_gzip() { | ||||||
|     $HAS_NO_GZIP = eval { require Compress::Zlib; 1; } |     $HAS_NO_GZIP = eval { require IO::Compress::Gzip; require IO::Uncompress::Gunzip; 1; } | ||||||
|                 || defined where_is "gzip"? |                 || defined where_is "gzip"? | ||||||
|             0: "Compress::Zlib or gzip executable not available" |             0: "IO::Compress::Gzip or gzip executable not available" | ||||||
|         if !defined $HAS_NO_GZIP; |         if !defined $HAS_NO_GZIP; | ||||||
|     return $HAS_NO_GZIP; |     return $HAS_NO_GZIP; | ||||||
| } | } | ||||||
|  |  | ||||||
| # If we have bzip2 support somewhere | # If we have bzip2 support somewhere | ||||||
| sub has_no_bzip2() { | sub has_no_bzip2() { | ||||||
|     $HAS_NO_BZIP2 = eval { require Compress::Bzip2; Compress::Bzip2->import(2.00); 1; } |     $HAS_NO_BZIP2 = eval { require IO::Compress::Bzip2; require IO::Uncompress::Bunzip2; 1; } | ||||||
|                 || defined where_is "bzip2"? |                 || defined where_is "bzip2"? | ||||||
|             0: "Compress::Bzip2 v2 or bzip2 executable not available" |             0: "IO::Compress::Bzip2 v2 or bzip2 executable not available" | ||||||
|         if !defined $HAS_NO_BZIP2; |         if !defined $HAS_NO_BZIP2; | ||||||
|     return $HAS_NO_BZIP2; |     return $HAS_NO_BZIP2; | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user