Changeset 18


Ignore:
Timestamp:
09/27/05 17:24:53 (19 years ago)
Author:
thauvin
Message:
  • add functions to store/get error
Location:
trunk/soft/ObsData
Files:
2 edited

Legend:

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

    • Property cvs2svn:cvs-rev changed from 1.5 to 1.6
    r9 r18  
    1010use ObsData::Archive::Tar; 
    1111 
     12my $error = {}; 
     13 
    1214sub new { 
    1315    my ($class, $archive, %options) = @_; 
    1416    my $beclass; 
    1517 
     18    if (!$archive) { 
     19        seterror("No archive to read"); 
     20        return undef; 
     21    } 
     22    if (!-r $archive) { 
     23        seterror("No such file or directory"); 
     24        return undef; 
     25    } 
    1626    my $o; 
    1727     
     
    6171    if ($dest) { 
    6272        $fname = $dest; 
    63         open($fh, '>', $dest) or return undef; 
     73        if(!open($fh, '>', $dest)) { 
     74            $error = $!; 
     75            return undef; 
     76        } 
    6477    } else { 
    6578        ($fh, $fname) = tempfile( 
     
    7689    close($fh); 
    7790    $fname 
     91} 
     92 
     93sub error { 
     94    return $error->{error}; 
     95} 
     96 
     97sub seterror { 
     98    my ($package, $filename, $line) = caller; 
     99    $error = { 
     100        'package' => $package, 
     101        'filename' => $filename, 
     102        'line' => $line, 
     103        'error' => $_[1] || $_[0], 
     104    }; 
    78105} 
    79106 
  • trunk/soft/ObsData/t/OA-01.t

    • Property cvs2svn:cvs-rev changed from 1.2 to 1.3
    r13 r18  
    11# $Id$ 
    22 
    3 use Test::More tests => 6; 
     3use Test::More tests => 8; 
    44 
    55foreach (qw(ObsData::Archive ObsData::Archive::Compressed ObsData::Archive::Tar)) { 
    66    use_ok($_); 
    7     can_ok($_, qw(ls extract)); 
     7    can_ok($_, qw(ls extract seterror error)); 
    88} 
     9 
     10my $oa = ObsData::Archive->new(); 
     11ok(!$oa, "return an error on wrong call"); 
     12ok(ObsData::Archive->error(), "Can get error"); 
Note: See TracChangeset for help on using the changeset viewer.