diff options
-rw-r--r-- | lib/App/BorgRestore.pm | 3 | ||||
-rw-r--r-- | lib/App/BorgRestore/Borg.pm | 9 |
2 files changed, 9 insertions, 3 deletions
diff --git a/lib/App/BorgRestore.pm b/lib/App/BorgRestore.pm index 1fb5124..4ca2716 100644 --- a/lib/App/BorgRestore.pm +++ b/lib/App/BorgRestore.pm @@ -314,7 +314,7 @@ sub handle_added_archives { $self->debug(sprintf("Adding archive %s", $archive)); - my $proc = $self->{borg}->list_archive($archive, sub { + $self->{borg}->list_archive($archive, sub { my $line = shift; # roll our own parsing of timestamps for speed since we will be parsing # a huge number of lines here @@ -325,7 +325,6 @@ sub handle_added_archives { $self->add_path_to_hash($lookuptable, $+{path}, $time); } }); - $proc->finish() or die "borg list returned $?"; $self->debug(sprintf("Finished parsing borg output after %.5fs. Adding to db", Time::HiRes::gettimeofday - $start)); diff --git a/lib/App/BorgRestore/Borg.pm b/lib/App/BorgRestore/Borg.pm index 412269f..8b4e953 100644 --- a/lib/App/BorgRestore/Borg.pm +++ b/lib/App/BorgRestore/Borg.pm @@ -43,7 +43,14 @@ sub list_archive { my $archive = shift; my $cb = shift; - return start [qw(borg list --list-format), '{isomtime} {path}{NEWLINE}', "::".$archive], ">", new_chunker, $cb; + open (my $fh, '-|', 'borg', qw/list --list-format/, '{isomtime} {path}{NEWLINE}', "::".$archive); + while (<$fh>) { + $cb->($_); + } + + # this is slow + #return start [qw(borg list --list-format), '{isomtime} {path}{NEWLINE}', "::".$archive], ">", new_chunker, $cb; + #$proc->finish() or die "borg list returned $?"; } 1; |