Fossil SCM

Added -i/--invert option to /json/wiki/list --glob/--like flags.

stephan 2012-03-29 18:24 trunk
Commit 757cf364a99a066f864239a53bc4a9aeeab7f548
1 file changed +8 -4
+8 -4
--- src/json_wiki.c
+++ src/json_wiki.c
@@ -423,30 +423,34 @@
423423
cson_array * list = NULL;
424424
char const * zGlob = NULL;
425425
Stmt q = empty_Stmt;
426426
Blob sql = empty_blob;
427427
char const verbose = json_find_option_bool("verbose",NULL,"v",0);
428
+ char fInvert = json_find_option_bool("invert",NULL,"i",0);;
428429
429430
if( !g.perm.RdWiki && !g.perm.Read ){
430431
json_set_err(FSL_JSON_E_DENIED,
431432
"Requires 'j' or 'o' permissions.");
432433
return NULL;
433434
}
434435
blob_append(&sql,"SELECT"
435436
" substr(tagname,6) as name"
436
- " FROM tag WHERE tagname GLOB 'wiki-*' ",
437
+ " FROM tag WHERE tagname GLOB 'wiki-*'",
437438
-1);
438439
zGlob = json_find_option_cstr("glob",NULL,"g");
439440
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);
441443
}else{
442444
zGlob = json_find_option_cstr("like",NULL,"l");
443445
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);
445449
}
446450
}
447
- blob_append(&sql,"ORDER BY lower(name)", -1);
451
+ blob_append(&sql," ORDER BY lower(name)", -1);
448452
db_prepare(&q,"%s", blob_str(&sql));
449453
blob_reset(&sql);
450454
listV = cson_value_new_array();
451455
list = cson_value_get_array(listV);
452456
while( SQLITE_ROW == db_step(&q) ){
453457
--- 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

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button