Fossil SCM
Enhance the "fossil whatis" command so that it can accept multiple arguments.
Commit
a73da231d864b6b263e47bc4a7eac3c47d2714d3
Parent
f99ef287dc09c35…
1 file changed
+26
-20
+26
-20
| --- src/name.c | ||
| +++ src/name.c | ||
| @@ -656,32 +656,38 @@ | ||
| 656 | 656 | */ |
| 657 | 657 | void whatis_cmd(void){ |
| 658 | 658 | int rid; |
| 659 | 659 | const char *zName; |
| 660 | 660 | int verboseFlag; |
| 661 | + int i; | |
| 661 | 662 | db_find_and_open_repository(0,0); |
| 662 | 663 | 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 | + } | |
| 683 | 689 | } |
| 684 | 690 | } |
| 685 | 691 | |
| 686 | 692 | /* |
| 687 | 693 | ** COMMAND: test-whatis-all |
| 688 | 694 |
| --- 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 |