+ return \%vars;
+}
+
+sub queryfiles {
+ my ($handle) = @_;
+ if (ref($handle)) {
+ die("arch pkg query not implemented for file handles\n");
+ }
+ if ($handle =~ /\.xz$/ || islzma($handle)) {
+ $handle = lzmadec($handle);
+ }
+ my @files;
+ my $tar = Archive::Tar->new;
+ # we use filter_cb here so that Archive::Tar skips the file contents
+ $tar->read($handle, 1, {'filter_cb' => sub {
+ my ($entry) = @_;
+ push @files, $entry->name unless $entry->is_longlink || (@files && $files[-1] eq $entry->name);
+ return 0;
+ }});
+ shift @files if @files && $files[0] eq '.PKGINFO';
+ return \@files;
+}
+
+sub query {
+ my ($handle, %opts) = @_;
+ my $vars = queryvars($handle);