+sub global_search() {
+ my ($w) = @_;
+ my @full = ( "<back>" );
+ my @fn = ( $w->{"dir"} );
+ $w->{"dir"} = "./";
+ $w->{"xdir"} = "./";
+
+ my $query = $w->{"search"};
+ $query =~ tr/"'\\\`//d;
+ my @resp = `../search/songsearch -C ../search/config -i ../search/index -n 20 $query`;
+ chomp @resp;
+ while (@resp) {
+ my $r = shift @resp;
+ $r =~ /^\d+\. \[\d+\] (.*)/ or next;
+ my $file = $1;
+ my $name = shift @resp;
+ $name =~ s/^\t// or $name = $file;
+ while (@resp && $resp[0] =~ /^\t/) {
+ $r = shift @resp;
+ $r =~ s/^\t//;
+ $name .= " ($r)";
+ }
+ push @fn, $file;
+ push @full, $name;
+ }
+
+ $w->{"flist"} = \@fn;
+ $w->{"list"} = \@full;
+ $w->{"n"} = scalar @fn;
+ $w->{"i"} = 0;
+ $w->{"1st"} = 0;
+ $w->{"search"} = undef;
+ $w->{"search-results"} = 1;
+ $w->redraw;
+}
+