X-Git-Url: http://ecere.com/cgi-bin/gitweb.cgi?p=ede;a=blobdiff_plain;f=libede%2Fsrc%2FFileSystemSearch.ec;h=d198f1bcf83b8f311c5d26ec5be69b9984a3acd4;hp=690cd71f3e06d04e4a9a5a637a5574a08132ebeb;hb=bc25e0084823e36a8403b14a96985459328cbe3c;hpb=0a9a2099baaa56c453eb0903258f329c9d4bc25d diff --git a/libede/src/FileSystemSearch.ec b/libede/src/FileSystemSearch.ec index 690cd71..d198f1b 100644 --- a/libede/src/FileSystemSearch.ec +++ b/libede/src/FileSystemSearch.ec @@ -12,7 +12,7 @@ struct SearchStackFrame int tag; char path[MAX_LOCATION]; FileListing listing; - + bool branched; //DataRow result; //DataRow browse; @@ -47,7 +47,7 @@ public: terminate = false; } - virtual bool Window::NotifyUpdateSearchLocation(FileSystemSearch search, char * location); + virtual bool Window::NotifyUpdateSearchLocation(FileSystemSearch search, const char * location); virtual bool Window::NotifySearchSortResults(FileSystemSearch search); virtual bool Window::NotifySearchSortBrowser(FileSystemSearch search); virtual bool Window::NotifySearchTerminated(FileSystemSearch search); @@ -61,7 +61,7 @@ public: - bool SearchFileContent(String path) + bool SearchFileContent(const String path) { bool match = false; File file = FileOpen(path, read); @@ -96,8 +96,8 @@ public: find = SearchString(buffer, start, contentSearch, optionContentMatchCase, optionContentMatchWord); // todo add a maximum line length possibility as param - for(bstart = start; - bstart < readCount && newLine && (!find || newLine < find); + for(bstart = start; + bstart < readCount && newLine && (!find || newLine < find); bstart += (newLine - &buffer[bstart]) / sizeof(char)) { newLine = strstr(&buffer[bstart], "\n"); @@ -131,14 +131,14 @@ public: find = SearchString(buffer, start, contentSearch, optionContentMatchCase, optionContentMatchWord); file.Seek(seekBack, current); } - match = (bool)find; + match = find != null; } delete file; } return match; } - - // I wonder if this is optimized at the c level to be compiled inline + + // I wonder if this is optimized at the c level to be compiled inline // and to use in-place in-stack memory for both the return value and the parameters // if not, c should be more optimized... // would the const have any impact on optimization? @@ -155,24 +155,24 @@ public: // \\Nateus\data\ is not remote, etc... // How to? FileStats stats; - + terminate = false; count = 0; matchCount = 0; - + hasNameSearch = (strlen(nameSearch) != 0); hasSizeSearch = false; // this is temporary hasContentSearch = (strlen(contentSearch) != 0); listLines = true; lines = OldList { }; - + //SearchDir(location); FileGetStats(location, stats); strcpy(stack[0].path, location); - stack[0].listing = FileListing { stack[0].path }; // there should be a sorted = true/false + stack[0].listing = FileListing { stack[0].path }; // there should be a sorted = true/false //fsb.list.Clear(); // Binary Search sorting... @@ -198,7 +198,7 @@ public: } guiApp.Unlock(); } - + for(frame = 0; frame >= 0 && !terminate; ) { guiApp.Lock(); @@ -222,13 +222,13 @@ public: if(stack[frame].listing.Find()) { count++; - + //match = (strcmp(stack[frame].listing.name, nameSearch) == 0); //match = (stack[frame].listing.name[0] == nameSearch[0]); //match = (bool)strstr(stack[frame].listing.name, nameSearch); - + if(hasNameSearch) - match = (bool)SearchString(stack[frame].listing.name, 0, nameSearch, optionNameMatchCase, optionNameMatchWord); + match = SearchString(stack[frame].listing.name, 0, nameSearch, optionNameMatchCase, optionNameMatchWord) != null; else match = true;