Changeset 240


Ignore:
Timestamp:
04/24/06 17:49:17 (18 years ago)
Author:
nanardon
Message:
  • add partial lha/lzh support
Location:
trunk/soft/ObsData
Files:
1 added
1 edited
2 copied

Legend:

Unmodified
Added
Removed
  • trunk/soft/ObsData/ObsData/Archive.pm

    r191 r240  
    1010require ObsData::Archive::Zip; 
    1111require ObsData::Archive::Rar; 
     12require ObsData::Archive::Lha; 
    1213 
    1314our $CVSID = q$Id$; 
  • trunk/soft/ObsData/ObsData/Archive/Lha.pm

    r235 r240  
    11# $Id$ 
    22 
    3 package ObsData::Archive::Rar; 
     3package ObsData::Archive::Lha; 
    44 
    55use strict; 
     
    2222sub ls { 
    2323    my ($self) = @_; 
    24     open(my $hrar, '-|', "unrar lb '$self->{archive}'") or do { 
    25         $self->seterror("Can't read zip file: $!"); 
     24    open(my $hlha, '-|', "lha '$self->{archive}'") or do { 
     25        $self->seterror("Can't read lha/lzh file: $!"); 
    2626        return undef; 
    2727    }; 
    2828    my @list; 
    29     while(<$hrar>) { 
     29    <$hlha>; 
     30    <$hlha> =~ /^-{9}/ or return; 
     31    while(<$hlha>) { 
    3032        chomp; 
    31         push(@list, $_); 
     33        /^.{51}(.*)$/; 
     34        push(@list, $1); 
    3235    } 
    33     close($hrar); 
     36    close($hlha); 
    3437    return @list; 
    3538} 
     
    7477} 
    7578 
    76 ObsData::Archive::register(sub { $_[0] =~ /\.rar$/i }, 'Rar', 0); 
     79ObsData::Archive::register(sub { $_[0] =~ /\.(lzh|lha)$/i }, 'Lha', 0); 
  • trunk/soft/ObsData/t/OA-07.t

    r235 r240  
    1111print $tempdir . "\n"; 
    1212 
    13 my $oa = ObsData::Archive->new('testdata/coin.rar'); 
     13my $oa = ObsData::Archive->new('testdata/coin.lzh'); 
    1414 
    15 isa_ok($oa, 'ObsData::Archive::Rar'); 
     15isa_ok($oa, 'ObsData::Archive::Lha'); 
    1616my ($list) = $oa->ls(); 
    1717ok($list eq 'coin', "Can list its contents"); 
Note: See TracChangeset for help on using the changeset viewer.