+ my $cmd = [ qw(git rev-parse --git-dir) ];
+ my $fh = popen_rd($cmd, undef, {-C => $cd});
+ my $dir = do { local $/; <$fh> };
+ close $fh or die "error in ".join(' ', @$cmd)." (cwd:$cd): $!\n";
+ chomp $dir;
+ $$ver = 1 if $ver;
+ return abs_path($cd) if ($dir eq '.' && defined $cd);
+ abs_path($dir);
+}
+
+# for unconfigured inboxes
+sub detect_indexlevel ($) {
+ my ($ibx) = @_;
+
+ # brand new or never before indexed inboxes default to full
+ return 'full' unless $ibx->over;
+ delete $ibx->{over}; # don't leave open FD lying around
+
+ my $l = 'basic';
+ my $srch = $ibx->search or return $l;
+ delete $ibx->{search}; # don't leave open FD lying around
+ if (my $xdb = $srch->xdb) {
+ $l = 'full';
+ my $m = $xdb->get_metadata('indexlevel');
+ if ($m eq 'medium') {
+ $l = $m;
+ } elsif ($m ne '') {
+ warn <<"";
+$ibx->{inboxdir} has unexpected indexlevel in Xapian: $m