integer currTempFileNr = 1 string TempFileDir[30] = "" integer proc grepWord() integer ok string FileWildCard[20] = "*.c" string TheWord[40] = "" string TheOptions[7] = "I" string TempFileName[50] if TempFileDir == "" TempFileDir = GetEnvStr("TMP") if TempFileDir == "" TempFileDir = GetEnvSTR("TEMP") endif if TempFileDir == "" TempFileDir = ".\" endif if TempFileDir[Length(TempFileDir)] <> ":" and TempFileDir[Length(TempFileDir)] <> "\" TempFileDir = TempFileDir + "\" endif endif if isWord() while isWord() if not Left() break endif endwhile if not isWord() Right() endif while isWord() and Length(TheWord) < SizeOf(TheWord) TheWord = TheWord + Chr(CurrChar()) if not Right() break endif endwhile TheOptions = "W" endif if not Ask("Search for:", TheWord, _FIND_HISTORY_) return(FALSE) endif if TheWord == "" return(FALSE) endif if not Ask("Options [IWR] (Ignore Words Reg-expr):", TheOptions) return(FALSE) endif if TheOptions <> "" TheOptions = "-" + TheOptions + " " endif ok = Ask("Search files:", FileWildCard) if not ok or Length(FileWildCard) == 0 return(FALSE) endif TempFileName = TempFileDir + "_temp_" + Str(CurrTempFileNr) + "_.$$$" CurrTempFileNr = (CurrTempFileNr mod 9) + 1 Dos("ffstr " + TheOptions + TheWord + " " + FileWildCard + ">" + TempFileName, _DONT_CLEAR_) GotoWindow(1) EditFile(TempFileName) EmptyBuffer() InsertFile(TempFileName) EraseDiskFile(TempFileName) UnMarkBlock() InsertLine("Occurences of '" + TheWord + "' in the files " + FileWildCard) ForceChanged(FALSE) return(TRUE) end integer proc isDigit() case Chr(CurrChar()) when "0".."9" return (TRUE) endcase return (FALSE) end integer proc gotoLineInFile() string fileName[40] = "" string filePos[6] = "" GotoPos(PosFirstNonWhite()) while Chr(CurrChar()) <> "(" and Chr(CurrChar()) <> " " and Length(fileName) < SizeOf(fileName) fileName = fileName + Chr(CurrChar()) if not Right() break endif endwhile WordRight() while isDigit() and Length(filePos) < SizeOf(filePos) filePos = filePos + Chr(CurrChar()) if not Right() break endif endwhile if fileName == "" or filePos == "" return(FALSE) endif Down() BegLine() NextWindow() if not EditFile(fileName) return(FALSE) endif BegLine() return(GotoLine(Val(filePos))) end integer ErrorFileRead = 0 integer proc SearchError() if ErrorFileRead == 0 if not EditFile("error") Warn("No error file found") return(FALSE) endif ErrorFileRead = 1 return(TRUE) else OneWindow() EditFile("error") if not find("error","w") return(FALSE) endif Hwindow() PrevWindow() return(gotoLineInFile()) endif return(FALSE) end gotoLineInFile() grepWord() NextFile() PrevFile() SearchError()