@@ -719,10 +719,11 @@
719 719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
720 720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
721 721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Flags for grep_buffer()
722 722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
723 723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define GREP_EXISTS 0x001 /* If any match, print only the name and stop */
724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define GREP_QUIET 0x002 /* Return code only */
724 725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
725 726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
726 727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Run a "grep" over a text file
727 728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
728 729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int grep_buffer(
@@ -737,14 +738,19 @@
737 738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n = j - i;
738 739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ln++;
739 740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( re_match(pRe, (const unsigned char*)(z+i), j-i) ){
740 741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cnt++;
741 742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( flags & GREP_EXISTS ){
742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("%S\n", zName);
743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (flags & GREP_QUIET)==0 && zName ) fossil_print("%s\n", zName);
743 744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
744 745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("%S:%d:%.*s\n", zName, ln, n, z+i);
746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (flags & GREP_QUIET)==0 ){
747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( cnt==1 && zName ){
748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("== %s\n", zName);
749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("%d:%.*s\n", ln, n, z+i);
751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
746 752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
747 753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
748 754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return cnt;
749 755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
750 756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -787,61 +793,142 @@
787 793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
788 794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
789 795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
790 796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** COMMAND: grep
791 797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Usage: %fossil grep [OPTIONS] PATTERN FILENAME
798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Usage: %fossil grep [OPTIONS] PATTERN FILENAME ...
793 799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
794 800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Attempt to match the given POSIX extended regular expression PATTERN
795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** over all historic versions of FILENAME. For details of the supported
796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** RE dialect, see https://fossil-scm.org/fossil/doc/trunk/www/grep.md
801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** historic versions of FILENAME. The search begins with the most recent
802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** version of the file and moves backwards in time. Multiple FILENAMEs can
803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** be specified, in which case all named files are searched in reverse
804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** chronological order.
805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** For details of the supported regular expression dialect, see
807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** https://fossil-scm.org/fossil/doc/trunk/www/grep.md
797 808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
798 809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Options:
799 810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** -i|--ignore-case Ignore case
801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** -l|--files-with-matches List only checkin ID for versions that match
802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** -v|--verbose Show each file as it is analyzed
811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** -c|--count Suppress normal output; instead print a count
812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** of the number of matching files
813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** -i|--ignore-case Ignore case
814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** -l|--files-with-matches List only hash for each match
815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** --once Stop searching after the first match
816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** -s|--no-messages Suppress error messages about nonexistant
817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** or unreadable files
818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** -v|--invert-match Invert the sense of matching. Show only
819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** files that have no matches. Implies -l
820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** --verbose Show each file as it is analyzed
803 821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
804 822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void re_grep_cmd(void){
805 823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
u32 flags = 0;
806 824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int bVerbose = 0;
807 825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ReCompiled *pRe;
808 826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zErr;
809 827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int ignoreCase = 0;
810 828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob fullName;
829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int ii;
830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nMatch = 0;
831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int bNoMsg;
832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int cntFlag;
833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int bOnce;
834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int bInvert;
835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nSearch = 0;
836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Stmt q;
837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
811 838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
812 839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( find_option("ignore-case","i",0)!=0 ) ignoreCase = 1;
813 840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( find_option("files-with-matches","l",0)!=0 ) flags |= GREP_EXISTS;
814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( find_option("verbose","v",0)!=0 ) bVerbose = 1;
841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( find_option("verbose",0,0)!=0 ) bVerbose = 1;
842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( find_option("quiet","q",0) ) flags |= GREP_QUIET|GREP_EXISTS;
843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bNoMsg = find_option("no-messages","s",0)!=0;
844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bOnce = find_option("once",0,0)!=0;
845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bInvert = find_option("invert-match","v",0)!=0;
846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bInvert ){
847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ flags |= GREP_QUIET|GREP_EXISTS;
848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cntFlag = find_option("count","c",0)!=0;
850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( cntFlag ){
851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ flags |= GREP_QUIET|GREP_EXISTS;
852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
815 853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_find_and_open_repository(0, 0);
816 854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
verify_all_options();
817 855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.argc<4 ){
818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- usage("REGEXP FILENAME");
856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ usage("REGEXP FILENAME ...");
819 857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
820 858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zErr = re_compile(&pRe, g.argv[2], ignoreCase);
821 859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zErr ) fossil_fatal("%s", zErr);
822 860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( file_tree_name(g.argv[3], &fullName, 0, 0) ){
824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int fnid = db_int(0, "SELECT fnid FROM filename WHERE name=%Q",
825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_str(&fullName));
826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( fnid ){
827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Stmt q;
828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- add_content_sql_commands(g.db);
829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_prepare(&q,
830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "SELECT content(ux), ux FROM ("
831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " SELECT blob.uuid AS ux, min(event.mtime) AS mx"
832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " FROM mlink, blob, event"
833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " WHERE mlink.mid=event.objid"
834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " AND mlink.fid=blob.rid"
835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " AND mlink.fnid=%d"
836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " GROUP BY blob.uuid"
837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ") ORDER BY mx DESC;",
838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fnid
839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- while( db_step(&q)==SQLITE_ROW ){
841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( bVerbose ) fossil_print("%S:\n", db_column_text(&q,1));
842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- grep_buffer(pRe, db_column_text(&q,1), db_column_text(&q,0), flags);
843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_finalize(&q);
861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ add_content_sql_commands(g.db);
862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec("CREATE TEMP TABLE arglist(iname,fname,fnid);");
863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(ii=3; ii<g.argc; ii++){
864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zTarget = g.argv[ii];
865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( file_tree_name(zTarget, &fullName, 0, 1) ){
866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int fnid = db_int(0, "SELECT fnid FROM filename WHERE name=%Q",
867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_str(&fullName));
868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !fnid ){
869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bNoMsg ) continue;
870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( file_size(zTarget, ExtFILE)<0 ){
871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_fatal("no such file: %s", zTarget);
872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_fatal("not a managed file: %s", zTarget);
874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec(
876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "INSERT INTO arglist(iname,fname,fnid) VALUES(%Q,%Q,%d)",
877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zTarget, blob_str(&fullName), fnid);
878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&fullName);
881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_prepare(&q,
883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " SELECT"
884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " A.uuid," /* file hash */
885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " A.rid," /* file rid */
886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " B.uuid," /* check-in hash */
887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " datetime(min(event.mtime))," /* check-in time */
888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " arglist.iname" /* file name */
889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " FROM arglist, mlink, blob A, blob B, event"
890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " WHERE mlink.mid=event.objid"
891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND mlink.fid=A.rid"
892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND mlink.mid=B.rid"
893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND mlink.fnid=arglist.fnid"
894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " GROUP BY A.uuid"
895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " ORDER BY min(event.mtime) DESC;"
896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( db_step(&q)==SQLITE_ROW ){
898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zFileHash = db_column_text(&q,0);
899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rid = db_column_int(&q,1);
900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zCkinHash = db_column_text(&q,2);
901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zDate = db_column_text(&q,3);
902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zFN = db_column_text(&q,4);
903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zLabel;
904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob cx;
905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ content_get(rid, &cx);
906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zLabel = mprintf("%.16s %s %S checkin %S", zDate, zFN,zFileHash,zCkinHash);
907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bVerbose ) fossil_print("Scanning: %s\n", zLabel);
908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nSearch++;
909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nMatch += grep_buffer(pRe, zLabel, blob_str(&cx), flags);
910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&cx);
911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bInvert && cntFlag==0 ){
912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nMatch==0 ){
913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("== %s\n", zLabel);
914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bOnce ) nMatch = 1;
915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nMatch = 0;
917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_free(zLabel);
920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nMatch ){
921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (flags & GREP_QUIET)!=0 ) break;
922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bOnce ) break;
923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_finalize(&q);
926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ re_free(pRe);
927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( cntFlag ){
928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bInvert ){
929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("%d\n", nSearch-nMatch);
930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("%d\n", nMatch);
845 932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
846 933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
847 934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
848 935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!