Fossil SCM
Added -i/--invert option to /json/wiki/list --glob/--like flags.
Commit
757cf364a99a066f864239a53bc4a9aeeab7f548
Parent
c0ad5f6bc415860…
1 file changed
+8
-4
+8
-4
| --- src/json_wiki.c | ||
| +++ src/json_wiki.c | ||
| @@ -423,30 +423,34 @@ | ||
| 423 | 423 | cson_array * list = NULL; |
| 424 | 424 | char const * zGlob = NULL; |
| 425 | 425 | Stmt q = empty_Stmt; |
| 426 | 426 | Blob sql = empty_blob; |
| 427 | 427 | char const verbose = json_find_option_bool("verbose",NULL,"v",0); |
| 428 | + char fInvert = json_find_option_bool("invert",NULL,"i",0);; | |
| 428 | 429 | |
| 429 | 430 | if( !g.perm.RdWiki && !g.perm.Read ){ |
| 430 | 431 | json_set_err(FSL_JSON_E_DENIED, |
| 431 | 432 | "Requires 'j' or 'o' permissions."); |
| 432 | 433 | return NULL; |
| 433 | 434 | } |
| 434 | 435 | blob_append(&sql,"SELECT" |
| 435 | 436 | " substr(tagname,6) as name" |
| 436 | - " FROM tag WHERE tagname GLOB 'wiki-*' ", | |
| 437 | + " FROM tag WHERE tagname GLOB 'wiki-*'", | |
| 437 | 438 | -1); |
| 438 | 439 | zGlob = json_find_option_cstr("glob",NULL,"g"); |
| 439 | 440 | if(zGlob && *zGlob){ |
| 440 | - blob_appendf(&sql," AND name GLOB %Q ", zGlob); | |
| 441 | + blob_appendf(&sql," AND name %s GLOB %Q", | |
| 442 | + fInvert ? "NOT" : "", zGlob); | |
| 441 | 443 | }else{ |
| 442 | 444 | zGlob = json_find_option_cstr("like",NULL,"l"); |
| 443 | 445 | if(zGlob && *zGlob){ |
| 444 | - blob_appendf(&sql," AND name LIKE %Q ", zGlob); | |
| 446 | + blob_appendf(&sql," AND name %s LIKE %Q", | |
| 447 | + fInvert ? "NOT" : "", | |
| 448 | + zGlob); | |
| 445 | 449 | } |
| 446 | 450 | } |
| 447 | - blob_append(&sql,"ORDER BY lower(name)", -1); | |
| 451 | + blob_append(&sql," ORDER BY lower(name)", -1); | |
| 448 | 452 | db_prepare(&q,"%s", blob_str(&sql)); |
| 449 | 453 | blob_reset(&sql); |
| 450 | 454 | listV = cson_value_new_array(); |
| 451 | 455 | list = cson_value_get_array(listV); |
| 452 | 456 | while( SQLITE_ROW == db_step(&q) ){ |
| 453 | 457 |
| --- src/json_wiki.c | |
| +++ src/json_wiki.c | |
| @@ -423,30 +423,34 @@ | |
| 423 | cson_array * list = NULL; |
| 424 | char const * zGlob = NULL; |
| 425 | Stmt q = empty_Stmt; |
| 426 | Blob sql = empty_blob; |
| 427 | char const verbose = json_find_option_bool("verbose",NULL,"v",0); |
| 428 | |
| 429 | if( !g.perm.RdWiki && !g.perm.Read ){ |
| 430 | json_set_err(FSL_JSON_E_DENIED, |
| 431 | "Requires 'j' or 'o' permissions."); |
| 432 | return NULL; |
| 433 | } |
| 434 | blob_append(&sql,"SELECT" |
| 435 | " substr(tagname,6) as name" |
| 436 | " FROM tag WHERE tagname GLOB 'wiki-*' ", |
| 437 | -1); |
| 438 | zGlob = json_find_option_cstr("glob",NULL,"g"); |
| 439 | if(zGlob && *zGlob){ |
| 440 | blob_appendf(&sql," AND name GLOB %Q ", zGlob); |
| 441 | }else{ |
| 442 | zGlob = json_find_option_cstr("like",NULL,"l"); |
| 443 | if(zGlob && *zGlob){ |
| 444 | blob_appendf(&sql," AND name LIKE %Q ", zGlob); |
| 445 | } |
| 446 | } |
| 447 | blob_append(&sql,"ORDER BY lower(name)", -1); |
| 448 | db_prepare(&q,"%s", blob_str(&sql)); |
| 449 | blob_reset(&sql); |
| 450 | listV = cson_value_new_array(); |
| 451 | list = cson_value_get_array(listV); |
| 452 | while( SQLITE_ROW == db_step(&q) ){ |
| 453 |
| --- src/json_wiki.c | |
| +++ src/json_wiki.c | |
| @@ -423,30 +423,34 @@ | |
| 423 | cson_array * list = NULL; |
| 424 | char const * zGlob = NULL; |
| 425 | Stmt q = empty_Stmt; |
| 426 | Blob sql = empty_blob; |
| 427 | char const verbose = json_find_option_bool("verbose",NULL,"v",0); |
| 428 | char fInvert = json_find_option_bool("invert",NULL,"i",0);; |
| 429 | |
| 430 | if( !g.perm.RdWiki && !g.perm.Read ){ |
| 431 | json_set_err(FSL_JSON_E_DENIED, |
| 432 | "Requires 'j' or 'o' permissions."); |
| 433 | return NULL; |
| 434 | } |
| 435 | blob_append(&sql,"SELECT" |
| 436 | " substr(tagname,6) as name" |
| 437 | " FROM tag WHERE tagname GLOB 'wiki-*'", |
| 438 | -1); |
| 439 | zGlob = json_find_option_cstr("glob",NULL,"g"); |
| 440 | if(zGlob && *zGlob){ |
| 441 | blob_appendf(&sql," AND name %s GLOB %Q", |
| 442 | fInvert ? "NOT" : "", zGlob); |
| 443 | }else{ |
| 444 | zGlob = json_find_option_cstr("like",NULL,"l"); |
| 445 | if(zGlob && *zGlob){ |
| 446 | blob_appendf(&sql," AND name %s LIKE %Q", |
| 447 | fInvert ? "NOT" : "", |
| 448 | zGlob); |
| 449 | } |
| 450 | } |
| 451 | blob_append(&sql," ORDER BY lower(name)", -1); |
| 452 | db_prepare(&q,"%s", blob_str(&sql)); |
| 453 | blob_reset(&sql); |
| 454 | listV = cson_value_new_array(); |
| 455 | list = cson_value_get_array(listV); |
| 456 | while( SQLITE_ROW == db_step(&q) ){ |
| 457 |