-
Notifications
You must be signed in to change notification settings - Fork 13
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
7e2f39b
commit 4694b95
Showing
18 changed files
with
11,254 additions
and
0 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
package Archive::Tar::Constant; | ||
|
||
BEGIN { | ||
require Exporter; | ||
|
||
$VERSION = '1.90'; | ||
@ISA = qw[Exporter]; | ||
|
||
require Time::Local if $^O eq "MacOS"; | ||
} | ||
|
||
use Package::Constants; | ||
@EXPORT = Package::Constants->list( __PACKAGE__ ); | ||
|
||
use constant FILE => 0; | ||
use constant HARDLINK => 1; | ||
use constant SYMLINK => 2; | ||
use constant CHARDEV => 3; | ||
use constant BLOCKDEV => 4; | ||
use constant DIR => 5; | ||
use constant FIFO => 6; | ||
use constant SOCKET => 8; | ||
use constant UNKNOWN => 9; | ||
use constant LONGLINK => 'L'; | ||
use constant LABEL => 'V'; | ||
|
||
use constant BUFFER => 4096; | ||
use constant HEAD => 512; | ||
use constant BLOCK => 512; | ||
|
||
use constant COMPRESS_GZIP => 9; | ||
use constant COMPRESS_BZIP => 'bzip2'; | ||
|
||
use constant BLOCK_SIZE => sub { my $n = int($_[0]/BLOCK); $n++ if $_[0] % BLOCK; $n * BLOCK }; | ||
use constant TAR_PAD => sub { my $x = shift || return; return "\0" x (BLOCK - ($x % BLOCK) ) }; | ||
use constant TAR_END => "\0" x BLOCK; | ||
|
||
use constant READ_ONLY => sub { shift() ? 'rb' : 'r' }; | ||
use constant WRITE_ONLY => sub { $_[0] ? 'wb' . shift : 'w' }; | ||
use constant MODE_READ => sub { $_[0] =~ /^r/ ? 1 : 0 }; | ||
|
||
# Pointless assignment to make -w shut up | ||
my $getpwuid; $getpwuid = 'unknown' unless eval { my $f = getpwuid (0); }; | ||
my $getgrgid; $getgrgid = 'unknown' unless eval { my $f = getgrgid (0); }; | ||
use constant UNAME => sub { $getpwuid || scalar getpwuid( shift() ) || '' }; | ||
use constant GNAME => sub { $getgrgid || scalar getgrgid( shift() ) || '' }; | ||
use constant UID => $>; | ||
use constant GID => (split ' ', $) )[0]; | ||
|
||
use constant MODE => do { 0666 & (0777 & ~umask) }; | ||
use constant STRIP_MODE => sub { shift() & 0777 }; | ||
use constant CHECK_SUM => " "; | ||
|
||
use constant UNPACK => 'A100 A8 A8 A8 a12 A12 A8 A1 A100 A6 A2 A32 A32 A8 A8 A155 x12'; # cdrake - size must be a12 - not A12 - or else screws up huge file sizes (>8gb) | ||
use constant PACK => 'a100 a8 a8 a8 a12 a12 A8 a1 a100 a6 a2 a32 a32 a8 a8 a155 x12'; | ||
use constant NAME_LENGTH => 100; | ||
use constant PREFIX_LENGTH => 155; | ||
|
||
use constant TIME_OFFSET => ($^O eq "MacOS") ? Time::Local::timelocal(0,0,0,1,0,70) : 0; | ||
use constant MAGIC => "ustar"; | ||
use constant TAR_VERSION => "00"; | ||
use constant LONGLINK_NAME => '././@LongLink'; | ||
use constant PAX_HEADER => 'pax_global_header'; | ||
|
||
### allow ZLIB to be turned off using ENV: DEBUG only | ||
use constant ZLIB => do { !$ENV{'PERL5_AT_NO_ZLIB'} and | ||
eval { require IO::Zlib }; | ||
$ENV{'PERL5_AT_NO_ZLIB'} || $@ ? 0 : 1 | ||
}; | ||
|
||
### allow BZIP to be turned off using ENV: DEBUG only | ||
use constant BZIP => do { !$ENV{'PERL5_AT_NO_BZIP'} and | ||
eval { require IO::Uncompress::Bunzip2; | ||
require IO::Compress::Bzip2; }; | ||
$ENV{'PERL5_AT_NO_BZIP'} || $@ ? 0 : 1 | ||
}; | ||
|
||
use constant GZIP_MAGIC_NUM => qr/^(?:\037\213|\037\235)/; | ||
use constant BZIP_MAGIC_NUM => qr/^BZh\d/; | ||
|
||
use constant CAN_CHOWN => sub { ($> == 0 and $^O ne "MacOS" and $^O ne "MSWin32") }; | ||
use constant CAN_READLINK => ($^O ne 'MSWin32' and $^O !~ /RISC(?:[ _])?OS/i and $^O ne 'VMS'); | ||
use constant ON_UNIX => ($^O ne 'MSWin32' and $^O ne 'MacOS' and $^O ne 'VMS'); | ||
use constant ON_VMS => $^O eq 'VMS'; | ||
|
||
1; |
Oops, something went wrong.