summaryrefslogtreecommitdiffstats
path: root/lib/App/BorgRestore
diff options
context:
space:
mode:
authorFlorian Pritz <bluewind@xinu.at>2017-03-04 00:15:30 +0100
committerFlorian Pritz <bluewind@xinu.at>2017-03-04 00:18:04 +0100
commit12a21ee5bbde99ae5273f777aaf5e3c606b69729 (patch)
tree7138bc09e1b36d4147e975136828000bac472093 /lib/App/BorgRestore
parente400b5e8672c1eea428e14ca82c0ce0ed223db8d (diff)
downloadApp-BorgRestore-12a21ee5bbde99ae5273f777aaf5e3c606b69729.tar.gz
App-BorgRestore-12a21ee5bbde99ae5273f777aaf5e3c606b69729.tar.xz
Borg::list_archive: Use open() instead of IPC::Run for performance
Surprisingly the callback isn't actually that bad, but IPC::Run (probably new_chunker) adds quite some overhead. Since open supports everything we need, use that instead. Signed-off-by: Florian Pritz <bluewind@xinu.at>
Diffstat (limited to 'lib/App/BorgRestore')
-rw-r--r--lib/App/BorgRestore/Borg.pm9
1 files changed, 8 insertions, 1 deletions
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;