/***************************************************************************
search_cmds . c - search related commands for xsldbg
- - - - - - - - - - - - - - - - - - -
begin : Wed Nov 21 2001
copyright : ( C ) 2001 by Keith Isdale
email : k_isdale @ tpg . com . au
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/***************************************************************************
* *
* This program is free software ; you can redistribute it and / or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation ; either version 2 of the License , or *
* ( at your option ) any later version . *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# include "xsldbg.h"
# include "debugXSL.h"
# include "options.h"
# include "search.h"
/* -----------------------------------------
Seach related commands
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/**
* xslDbgShellSearch :
* @ styleCtxt : Is valid
* @ style : Is valid
* @ arg : The xpath query to use for searching dataBase and in UTF - 8
*
* Displays the result of performing a query on the search dataBase
*
* Returns 1 if able to run query with @ arg ,
* 0 otherwise
*/
int
xslDbgShellSearch ( xsltTransformContextPtr styleCtxt ,
xsltStylesheetPtr style , xmlChar * arg )
{
int result = 0 ;
xmlChar buff [ DEBUG_BUFFER_SIZE ] ;
const xmlChar * sortOption = ( xmlChar * ) " -sort " ;
int sortOptionLen = xmlStrLen ( sortOption ) ;
if ( optionsGetStringOption ( OPTIONS_DOCS_PATH ) = = NULL ) {
xsldbgGenericErrorFunc ( i18n ( " Error: No path to documentation; aborting searching. \n " ) ) ;
# ifdef USE_DOCS_MACRO
xsldbgGenericErrorFunc ( i18n ( " Error: Error in value of USE_DOCS_MACRO; look at Makefile.am. \n " ) ) ;
# else
xsldbgGenericErrorFunc ( i18n ( " Error: Required environment variable %1 not set to the directory of xsldbg documentation. \n " ) . arg ( ( const char * ) XSLDBG_DOCS_DIR_VARIABLE ) ) ;
# endif
return result ; /* failed */
}
if ( ! styleCtxt | | ! style ) {
xsldbgGenericErrorFunc ( i18n ( " Error: Stylesheet not valid, files not loaded yet? \n " ) ) ;
return result ;
}
result = updateSearchData ( styleCtxt , style , NULL , DEBUG_ANY_VAR ) ;
trimString ( arg ) ;
if ( xmlStrLen ( arg ) = = 0 ) {
arg = ( xmlChar * ) " //search/* " ;
}
strncpy ( ( char * ) buff , ( char * ) arg , sortOptionLen ) ;
if ( xmlStrEqual ( buff , sortOption ) ) {
/* yep do sorting as well */
if ( snprintf
( ( char * ) buff , DEBUG_BUFFER_SIZE ,
" --param dosort 1 --param query \" %s \" " ,
& arg [ sortOptionLen ] ) ) {
result = result & & searchQuery ( NULL , NULL , buff ) ;
}
} else {
if ( snprintf
( ( char * ) buff , DEBUG_BUFFER_SIZE ,
" --param dosort 0 --param query \" %s \" " , arg ) ) {
result = result & & searchQuery ( NULL , NULL , buff ) ;
}
}
return result ;
}