Artifact 6e7f054b4bc4b41700e2b22cf5412e2621d5b2d4:
- File
search/searchc.c
— part of check-in
[9d49a78f9b]
at
2016-08-20 17:22:57
on branch experimental
— Add "jump to" links to relevant sections of large documents in search results.
(user:
dan
size: 1058)
#include <sqlite3.h>
/*
*/
/*
** Return a pointer to the fts5_api pointer for database connection db.
** If an error occurs, return NULL and leave an error in the database
** handle (accessible using sqlite3_errcode()/errmsg()).
*/
fts5_api *fts5_api_from_db(sqlite3 *db){
fts5_api *pRet = 0;
sqlite3_stmt *pStmt = 0;
if( SQLITE_OK==sqlite3_prepare(db, "SELECT fts5()", -1, &pStmt, 0)
&& SQLITE_ROW==sqlite3_step(pStmt)
&& sizeof(pRet)==sqlite3_column_bytes(pStmt, 0)
){
memcpy(&pRet, sqlite3_column_blob(pStmt, 0), sizeof(pRet));
}
sqlite3_finalize(pStmt);
return pRet;
}
int Sqlite3_Init(Tcl_Interp *interp);
static int register_search_extensions(sqlite3 *db, char **pzErr, void *p){
fts5_api *pApi = fts5_api_from_db(db);
return SQLITE_OK;
}
static int AppInit(Tcl_Interp *interp) {
int rc;
rc = Sqlite3_Init(interp);
if( rc!=TCL_OK ) return rc;
sqlite3_auto_extension(register_search_extensions);
return TCL_OK;
}
int main(int argc, char *argv[]) {
Tcl_Main(argc, argv, AppInit);
return 0;
}