@@ -739,11 +739,11 @@
739 739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
740 740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_find_and_open_repository(0, 0);
741 741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
verify_all_options();
742 742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.argc<3 ) return;
743 743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
login_set_capabilities("s", 0);
744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( search_restrict(srchFlags)==0 ){
744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( search_restrict(srchFlags, 1)==0 ){
745 745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_print(
746 746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"Search is disabled on this repository.\n"
747 747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"Use the \"fossil fts-config\" command to enable.\n"
748 748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
749 749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
@@ -849,12 +849,15 @@
849 849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
850 850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
851 851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Remove bits from srchFlags which are disallowed by either the
852 852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** current server configuration or by user permissions. Return
853 853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the revised search flags mask.
854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If bFlex is true, that means allow through the SRCH_HELP option
856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** even if it is not explicitly enabled.
854 857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- unsigned int search_restrict(unsigned int srchFlags){
858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unsigned int search_restrict(unsigned int srchFlags, int bFlex){
856 859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static unsigned int knownGood = 0;
857 860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static unsigned int knownBad = 0;
858 861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static const struct { unsigned m; const char *zKey; } aSetng[] = {
859 862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ SRCH_CKIN, "search-ci" },
860 863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ SRCH_DOC, "search-doc" },
@@ -877,10 +880,11 @@
877 880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
knownGood |= m;
878 881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
879 882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
knownBad |= m;
880 883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
881 884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bFlex ) knownBad &= ~SRCH_HELP;
882 886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return srchFlags & ~knownBad;
883 887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
884 888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
885 889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
886 890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** When this routine is called, there already exists a table
@@ -1283,11 +1287,11 @@
1283 1287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nLimit = db_get_int("search-limit", 100);
1284 1288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1285 1289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( P("searchlimit")!=0 ){
1286 1290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nLimit = atoi(P("searchlimit"));
1287 1291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- srchFlags = search_restrict(srchFlags);
1292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ srchFlags = search_restrict(srchFlags, 1);
1289 1293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( srchFlags==0 ) return 0;
1290 1294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
search_sql_setup(g.db);
1291 1295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
add_content_sql_commands(g.db);
1292 1296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec(
1293 1297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"CREATE TEMP TABLE x(label,url,score,id,date,snip);"
@@ -1360,11 +1364,11 @@
1360 1364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zDisable1;
1361 1365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zDisable2;
1362 1366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zPattern;
1363 1367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int fDebug = PB("debug");
1364 1368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int haveResult = 0;
1365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- srchFlags = search_restrict(srchFlags);
1369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ srchFlags = search_restrict(srchFlags, 0);
1366 1370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch( srchFlags ){
1367 1371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case SRCH_CKIN: zType = " Check-ins"; zClass = "Ckin"; break;
1368 1372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case SRCH_DOC: zType = " Docs"; zClass = "Doc"; break;
1369 1373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case SRCH_TKT: zType = " Tickets"; zClass = "Tkt"; break;
1370 1374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case SRCH_WIKI: zType = " Wiki"; zClass = "Wiki"; break;
@@ -2232,11 +2236,11 @@
2232 2236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void search_rebuild_index(void){
2233 2237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_print("rebuilding the search index...");
2234 2238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fflush(stdout);
2235 2239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
search_create_index();
2236 2240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
search_fill_index();
2237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- search_update_index(search_restrict(SRCH_ALL));
2241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ search_update_index(search_restrict(SRCH_ALL, 0));
2238 2242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db_table_exists("repository","chat") ){
2239 2243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
chat_rebuild_index(1);
2240 2244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2241 2245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_print(" done\n");
2242 2246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -2252,15 +2256,15 @@
2252 2256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** reindex Rebuild the search index. This is a no-op if
2253 2257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** index search is disabled
2254 2258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2255 2259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** index (on|off) Turn the search index on or off
2256 2260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** enable cdtwefh Enable various kinds of search. c=Check-ins,
2258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** d=Documents, t=Tickets, w=Wiki, e=Tech Notes,
2259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** f=Forum, h=built-in-help.
2261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** enable TYPE .. Enable search for TYPE. TYPE is one of:
2262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** check-in, document, ticket, wiki, technote,
2263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** forum, help, or all
2260 2264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** disable cdtwefh Disable various kinds of search
2265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** disable TYPE ... Disable search for TYPE
2262 2266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2263 2267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** tokenizer VALUE Select a tokenizer for indexed search. VALUE
2264 2268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** may be one of (porter, on, off, trigram, unicode61),
2265 2269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** and "on" is equivalent to "porter". Unindexed
2266 2270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** search never uses tokenization or stemming.
@@ -2286,11 +2290,11 @@
2286 2290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} aSetng[] = {
2287 2291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ "search-ci", "check-in search:", "c" },
2288 2292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ "search-doc", "document search:", "d" },
2289 2293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ "search-tkt", "ticket search:", "t" },
2290 2294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ "search-wiki", "wiki search:", "w" },
2291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- { "search-technote", "tech note search:", "e" },
2295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ { "search-technote", "technote search:", "e" },
2292 2296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ "search-forum", "forum search:", "f" },
2293 2297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{ "search-help", "built-in help search:", "h" },
2294 2298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
};
2295 2299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zSubCmd = 0;
2296 2300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i, j, n;
@@ -2325,16 +2329,46 @@
2325 2329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2326 2330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_begin_transaction();
2327 2331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2328 2332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Adjust search settings */
2329 2333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( iCmd==3 || iCmd==4 ){
2334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int k;
2330 2335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zCtrl;
2331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( g.argc<4 ) usage(mprintf("%s STRING",zSubCmd));
2332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zCtrl = g.argv[3];
2333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- for(j=0; j<count(aSetng); j++){
2334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( strchr(zCtrl, aSetng[j].zSw[0])!=0 ){
2335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_set_int(aSetng[j].zSetting/*works-like:"x"*/, iCmd-3, 0);
2336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(k=2; k<g.argc; k++){
2337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( k==2 ){
2338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( g.argc<4 ){
2339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zCtrl = "all";
2340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
2341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zCtrl = g.argv[3];
2342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ k++;
2343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
2345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zCtrl = g.argv[k];
2346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( fossil_strcmp(zCtrl,"all")==0 ){
2348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zCtrl = "cdtwefh";
2349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( strlen(zCtrl)>=4 ){
2351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* If the argument to "enable" or "disable" is a string of at least
2352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** 4 characters which matches part of any aSetng.zName, then use that
2353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** one aSetng value only. */
2354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zGlob = mprintf("*%s*", zCtrl);
2355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(j=0; j<count(aSetng); j++){
2356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( sqlite3_strglob(zGlob, aSetng[j].zName)==0 ){
2357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_set_int(aSetng[j].zSetting/*works-like:"x"*/, iCmd-3, 0);
2358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zCtrl = 0;
2359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
2360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_free(zGlob);
2363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zCtrl ){
2365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(j=0; j<count(aSetng); j++){
2366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( strchr(zCtrl, aSetng[j].zSw[0])!=0 ){
2367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_set_int(aSetng[j].zSetting/*works-like:"x"*/, iCmd-3, 0);
2368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2336 2370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2337 2371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2338 2372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( iCmd==5 ){
2339 2373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iOldTokenizer, iNewTokenizer;
2340 2374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.argc<4 ) usage("tokenizer porter|on|off|trigram|unicode61");
2341 2375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!