Fossil SCM

Enhance the "fossil whatis" command so that it can accept multiple arguments.

drh 2014-06-14 13:59 trunk
Commit a73da231d864b6b263e47bc4a7eac3c47d2714d3
1 file changed +26 -20
+26 -20
--- src/name.c
+++ src/name.c
@@ -656,32 +656,38 @@
656656
*/
657657
void whatis_cmd(void){
658658
int rid;
659659
const char *zName;
660660
int verboseFlag;
661
+ int i;
661662
db_find_and_open_repository(0,0);
662663
verboseFlag = find_option("verbose","v",0)!=0;
663
- if( g.argc!=3 ) usage("whatis NAME");
664
- zName = g.argv[2];
665
- rid = symbolic_name_to_rid(zName, 0);
666
- if( rid<0 ){
667
- Stmt q;
668
- int cnt = 0;
669
- fossil_print("Ambiguous artifact name prefix: %s\n", zName);
670
- db_prepare(&q,
671
- "SELECT rid FROM blob WHERE uuid>=lower(%Q) AND uuid<(lower(%Q)||'z')",
672
- zName, zName
673
- );
674
- while( db_step(&q)==SQLITE_ROW ){
675
- if( cnt++ ) fossil_print("%.79c\n", '-');
676
- whatis_rid(db_column_int(&q, 0), verboseFlag);
677
- }
678
- db_finalize(&q);
679
- }else if( rid==0 ){
680
- fossil_print("Unknown artifact: %s\n", zName);
681
- }else{
682
- whatis_rid(rid, verboseFlag);
664
+ if( g.argc<3 ) usage("whatis NAME ...");
665
+ for(i=2; i<g.argc; i++){
666
+ zName = g.argv[i];
667
+ if( i>2 ) fossil_print("%.79c\n",'-');
668
+ rid = symbolic_name_to_rid(zName, 0);
669
+ if( rid<0 ){
670
+ Stmt q;
671
+ int cnt = 0;
672
+ fossil_print("name: %s (ambiguous)\n", zName);
673
+ db_prepare(&q,
674
+ "SELECT rid FROM blob WHERE uuid>=lower(%Q) AND uuid<(lower(%Q)||'z')",
675
+ zName, zName
676
+ );
677
+ while( db_step(&q)==SQLITE_ROW ){
678
+ if( cnt++ ) fossil_print("%12s---- meaning #%d ----\n", " ", cnt);
679
+ whatis_rid(db_column_int(&q, 0), verboseFlag);
680
+ }
681
+ db_finalize(&q);
682
+ }else if( rid==0 ){
683
+ /* 0123456789 12 */
684
+ fossil_print("unknown: %s\n", zName);
685
+ }else{
686
+ fossil_print("name: %s\n", zName);
687
+ whatis_rid(rid, verboseFlag);
688
+ }
683689
}
684690
}
685691
686692
/*
687693
** COMMAND: test-whatis-all
688694
--- src/name.c
+++ src/name.c
@@ -656,32 +656,38 @@
656 */
657 void whatis_cmd(void){
658 int rid;
659 const char *zName;
660 int verboseFlag;
 
661 db_find_and_open_repository(0,0);
662 verboseFlag = find_option("verbose","v",0)!=0;
663 if( g.argc!=3 ) usage("whatis NAME");
664 zName = g.argv[2];
665 rid = symbolic_name_to_rid(zName, 0);
666 if( rid<0 ){
667 Stmt q;
668 int cnt = 0;
669 fossil_print("Ambiguous artifact name prefix: %s\n", zName);
670 db_prepare(&q,
671 "SELECT rid FROM blob WHERE uuid>=lower(%Q) AND uuid<(lower(%Q)||'z')",
672 zName, zName
673 );
674 while( db_step(&q)==SQLITE_ROW ){
675 if( cnt++ ) fossil_print("%.79c\n", '-');
676 whatis_rid(db_column_int(&q, 0), verboseFlag);
677 }
678 db_finalize(&q);
679 }else if( rid==0 ){
680 fossil_print("Unknown artifact: %s\n", zName);
681 }else{
682 whatis_rid(rid, verboseFlag);
 
 
 
 
 
683 }
684 }
685
686 /*
687 ** COMMAND: test-whatis-all
688
--- src/name.c
+++ src/name.c
@@ -656,32 +656,38 @@
656 */
657 void whatis_cmd(void){
658 int rid;
659 const char *zName;
660 int verboseFlag;
661 int i;
662 db_find_and_open_repository(0,0);
663 verboseFlag = find_option("verbose","v",0)!=0;
664 if( g.argc<3 ) usage("whatis NAME ...");
665 for(i=2; i<g.argc; i++){
666 zName = g.argv[i];
667 if( i>2 ) fossil_print("%.79c\n",'-');
668 rid = symbolic_name_to_rid(zName, 0);
669 if( rid<0 ){
670 Stmt q;
671 int cnt = 0;
672 fossil_print("name: %s (ambiguous)\n", zName);
673 db_prepare(&q,
674 "SELECT rid FROM blob WHERE uuid>=lower(%Q) AND uuid<(lower(%Q)||'z')",
675 zName, zName
676 );
677 while( db_step(&q)==SQLITE_ROW ){
678 if( cnt++ ) fossil_print("%12s---- meaning #%d ----\n", " ", cnt);
679 whatis_rid(db_column_int(&q, 0), verboseFlag);
680 }
681 db_finalize(&q);
682 }else if( rid==0 ){
683 /* 0123456789 12 */
684 fossil_print("unknown: %s\n", zName);
685 }else{
686 fossil_print("name: %s\n", zName);
687 whatis_rid(rid, verboseFlag);
688 }
689 }
690 }
691
692 /*
693 ** COMMAND: test-whatis-all
694

Keyboard Shortcuts

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