From e01673a2efa421edb4c3b539afa54868a4f29c1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= Date: Fri, 7 Feb 2014 02:51:30 +0100 Subject: Add cmake rule to find htsearch binary --- khelpcenter/searchhandlers/CMakeLists.txt | 22 ++++- khelpcenter/searchhandlers/khc_htsearch.pl | 117 -------------------------- khelpcenter/searchhandlers/khc_htsearch.pl.in | 117 ++++++++++++++++++++++++++ 3 files changed, 136 insertions(+), 120 deletions(-) delete mode 100755 khelpcenter/searchhandlers/khc_htsearch.pl create mode 100644 khelpcenter/searchhandlers/khc_htsearch.pl.in diff --git a/khelpcenter/searchhandlers/CMakeLists.txt b/khelpcenter/searchhandlers/CMakeLists.txt index eeb76104b..9c2f7b527 100644 --- a/khelpcenter/searchhandlers/CMakeLists.txt +++ b/khelpcenter/searchhandlers/CMakeLists.txt @@ -10,17 +10,33 @@ ################################################# set( prefix ${CMAKE_INSTALL_PREFIX} ) +if( NOT DEFINED HTDIG_SEARCH_BINARY ) + message( STATUS "Looking for htsearch" ) + find_program( HTDIG_SEARCH_BINARY htsearch + HINTS + /srv/www/cgi-bin + /usr/lib/cgi-bin + ) + if( HTDIG_SEARCH_BINARY ) + message( STATUS "Looking for htsearch - ${HTDIG_SEARCH_BINARY}" ) + else( HTDIG_SEARCH_BINARY ) + tde_message_fatal( "htsearch not found!\n Please, install htdig or set HTDIG_SEARCH_BINARY." ) + endif( HTDIG_SEARCH_BINARY ) +endif( NOT DEFINED HTDIG_SEARCH_BINARY ) + configure_file( khc_docbookdig.pl.in khc_docbookdig.pl @ONLY ) configure_file( khc_htdig.pl.in khc_htdig.pl @ONLY ) +configure_file( khc_htsearch.pl.in khc_htsearch.pl @ONLY ) install( FILES htdig.desktop man.desktop docbook.desktop DESTINATION ${DATA_INSTALL_DIR}/khelpcenter/searchhandlers ) install( PROGRAMS - ${CMAKE_CURRENT_BINARY_DIR}/khc_htdig.pl khc_htsearch.pl - ${CMAKE_CURRENT_BINARY_DIR}/khc_docbookdig.pl khc_beagle_search.pl - khc_mansearch.pl khc_beagle_index.pl + ${CMAKE_CURRENT_BINARY_DIR}/khc_htdig.pl + ${CMAKE_CURRENT_BINARY_DIR}/khc_htsearch.pl + ${CMAKE_CURRENT_BINARY_DIR}/khc_docbookdig.pl + khc_beagle_search.pl khc_mansearch.pl khc_beagle_index.pl DESTINATION ${BIN_INSTALL_DIR} ) install( FILES diff --git a/khelpcenter/searchhandlers/khc_htsearch.pl b/khelpcenter/searchhandlers/khc_htsearch.pl deleted file mode 100755 index 5dc3f5f71..000000000 --- a/khelpcenter/searchhandlers/khc_htsearch.pl +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/perl - -use strict; - -use Encode; -use Getopt::Long; - -use open IO => ':utf8'; -use open ':std'; - -my $htsearchpath="/srv/www/cgi-bin/htsearch"; -my $config; -my $format; -my $method; -my $words; -my $lang; -my $docbook; -my $indexdir; -my $maxnum; - -GetOptions ( - 'binary=s' => \$htsearchpath, - 'config=s' => \$config, - 'format=s' => \$format, - 'method=s' => \$method, - 'words=s' => \$words, - 'lang=s' => \$lang, - 'docbook' => \$docbook, - 'indexdir=s' => \$indexdir, - 'maxnum=s' => \$maxnum -); - -if ( !$indexdir ) { - print STDERR "No index dir given.\n"; - exit 1; -} - -if ( !$lang ) { $lang = "en"; } - -my $charset = langCharset( $lang ); - -$words = encode( $charset, $words ); - -if ( !open( HTSEARCH, "-|", "$htsearchpath", "-c", "$indexdir/$config.conf", - "format=$format&method=$method&words=$words&matchesperpage=$maxnum&exclude=[index.html]" ) ) -{ - print "Can't execute htsearch at '$htsearchpath'.\n"; - exit 1; -} - -my ($body,$liststart,$ref,$link,$error,$errorOut); - -while( ) { - if ( !$body ) { - print; - if ( /^/ ) { - print; - print "\n"; } - -print "\n"; - -if ( $? != 0 ) { exit $?; } - -1; - -# Return charset used for given language -sub langCharset( $ ) -{ - my $lang = shift; - if ( $lang eq "cz" || $lang eq "hu" ) { - return "latin2"; - } elsif ( $lang eq "kr" ) { - return "utf8"; - } else { - return "latin1"; - } -} diff --git a/khelpcenter/searchhandlers/khc_htsearch.pl.in b/khelpcenter/searchhandlers/khc_htsearch.pl.in new file mode 100644 index 000000000..28113bec2 --- /dev/null +++ b/khelpcenter/searchhandlers/khc_htsearch.pl.in @@ -0,0 +1,117 @@ +#!/usr/bin/perl + +use strict; + +use Encode; +use Getopt::Long; + +use open IO => ':utf8'; +use open ':std'; + +my $htsearchpath="@HTDIG_SEARCH_BINARY@"; +my $config; +my $format; +my $method; +my $words; +my $lang; +my $docbook; +my $indexdir; +my $maxnum; + +GetOptions ( + 'binary=s' => \$htsearchpath, + 'config=s' => \$config, + 'format=s' => \$format, + 'method=s' => \$method, + 'words=s' => \$words, + 'lang=s' => \$lang, + 'docbook' => \$docbook, + 'indexdir=s' => \$indexdir, + 'maxnum=s' => \$maxnum +); + +if ( !$indexdir ) { + print STDERR "No index dir given.\n"; + exit 1; +} + +if ( !$lang ) { $lang = "en"; } + +my $charset = langCharset( $lang ); + +$words = encode( $charset, $words ); + +if ( !open( HTSEARCH, "-|", "$htsearchpath", "-c", "$indexdir/$config.conf", + "format=$format&method=$method&words=$words&matchesperpage=$maxnum&exclude=[index.html]" ) ) +{ + print "Can't execute htsearch at '$htsearchpath'.\n"; + exit 1; +} + +my ($body,$liststart,$ref,$link,$error,$errorOut); + +while( ) { + if ( !$body ) { + print; + if ( /^/ ) { + print; + print "
    \n"; + $liststart = 1; + } + if ( /^(.*)<\/a>/ ) { + $ref = $1; + $link = $2; + + print STDERR "REF: $ref LINK: $link\n"; + + $ref =~ s/file:\/\/localhost//; + + $ref =~ s/http:\/\/localhost\//file:\//; + + if ( $docbook ) { + $ref =~ /help:\/\/(.*)\/index.docbook/; + my $app = $1; + $ref = "help:$app"; + + $link =~ s/apptitle/$app/; + } + + print "
  • $link
  • \n"; + } + if ( /^

    ht:\/\/Dig error/ ) { + $error = 1; + print "Htdig error:\n"; + } + if ( $error && /^
    / ) {
    +    $errorOut = 1;
    +  }
    +  if ( $errorOut ) {
    +    print;
    +    if ( /^<\/pre>/ ) { $errorOut = 0; }
    +  }
    +}
    +
    +close HTSEARCH;
    +
    +if ( $liststart ) { print "

\n"; } + +print "\n"; + +if ( $? != 0 ) { exit $?; } + +1; + +# Return charset used for given language +sub langCharset( $ ) +{ + my $lang = shift; + if ( $lang eq "cz" || $lang eq "hu" ) { + return "latin2"; + } elsif ( $lang eq "kr" ) { + return "utf8"; + } else { + return "latin1"; + } +} -- cgit v1.2.1