X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.main.git;a=blobdiff_plain;f=yarrg%2Fweb%2Fqtextstringcheck;h=b2c101390589b01daf00d858c60f9d205d05ce83;hp=337ed31f2deb156e831b491f1d6883abda40900a;hb=98610392fde2add293bee6199f2de1d6f88559d8;hpb=b6d8c4a781c0bedf79a4b13af5afe9ad47de97ed diff --git a/yarrg/web/qtextstringcheck b/yarrg/web/qtextstringcheck index 337ed31..b2c1013 100755 --- a/yarrg/web/qtextstringcheck +++ b/yarrg/web/qtextstringcheck @@ -43,6 +43,7 @@ $format $ctype => undef $string $what +$dbh => undef <%flags> @@ -56,11 +57,12 @@ use HTML::Entities; use CommodsWeb; die if $what =~ m/[^a-z]/; -my $specifics= "check_${what}"; -my $specific= $m->fetch_comp($specifics); +my $chk= $m->fetch_comp("check_${what}"); -my $dbh= dbw_connect($ocean); -my $sqlstmt= $specific->scall_method("sqlstmt"); +my $mydbh; +$dbh ||= ($mydbh= dbw_connect($ocean)); + +my $sqlstmt= $chk->scall_method("sqlstmt"); my $sth= $dbh->prepare($sqlstmt); my @sqlstmt_qs= $sqlstmt =~ m/\?/g; @@ -69,7 +71,9 @@ my @sqlstmt_qs= $sqlstmt =~ m/\?/g; my $emsg= ''; my @results; -my @specs= $specific->attr('multiple') ? (split m#[/|,]#, $string) : ($string); +my @specs= $chk->attr('multiple') ? (split m#[/|,]#, $string) : ($string); + +no warnings qw(exiting); foreach my $each (@specs) { $each =~ s/^\s*//; $each =~ s/\s*$//; $each =~ s/\s+/ /g; @@ -86,12 +90,12 @@ foreach my $each (@specs) { } if (!$results) { if (!%m) { - $err->($specific->scall_method("nomatch", + $err->($chk->scall_method("nomatch", spec => $each)); - } elsif (keys(%m) > 5) { - $err->(' '); + } elsif (keys(%m) > $chk->attr('maxambig')) { + $err->($chk->scall_method("manyambig")); } else { - $err->($specific->scall_method("ambiguous", + $err->($chk->scall_method("ambiguous", spec => $each, couldbe => join(', ', sort keys %m))); } @@ -117,7 +121,7 @@ if ($format =~ /dump/) { print Dumper($emsg, $canontext, \@results); } -$dbh->rollback(); +$mydbh->rollback() if $mydbh; return $emsg, $canontext,