home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / progmisc / euphor10.zip / GREP.EX < prev    next >
Text File  |  1993-05-18  |  2KB  |  77 lines

  1. -- grep.e
  2. -- usage: grep string files...
  3. -- search through a bunch of files for a given string
  4. -- in DOS, string may be given between "...." with \ as an escape
  5. -- example:  grep constant *.e
  6.  
  7. constant SCREEN = 1
  8. constant TRUE = 1
  9. constant LINES_PER_CR = 22
  10.  
  11. integer line_count
  12. line_count = LINES_PER_CR
  13.  
  14. integer console
  15.  
  16. procedure scan(integer fileNum, 
  17.           sequence string, 
  18.           sequence file_name,
  19.           integer show_name)
  20. -- print all lines in current file containing the string
  21.     object line
  22.  
  23.     while TRUE do
  24.     line = gets(fileNum)
  25.     if atom(line) then
  26.         return -- end of file
  27.     else
  28.         if match(string, line) then
  29.         if show_name then
  30.             puts(SCREEN, file_name & ": ")
  31.         end if
  32.         puts(SCREEN, line)
  33.         line_count = line_count - 1
  34.         if line_count = 0 then
  35.             line = gets(console) -- pause
  36.             line_count = LINES_PER_CR
  37.         end if
  38.         end if
  39.     end if
  40.     end while
  41. end procedure
  42.  
  43. include getnames.e
  44.  
  45. procedure grep()
  46. -- process all files 
  47. -- usage: grep.bat string files...
  48.     sequence string, line
  49.     integer fileNum
  50.     sequence file_names
  51.  
  52.     file_names = get_names()
  53.  
  54.     -- process all the files    
  55.     line = command_line()
  56.     string = line[3]
  57.     if length(string) = 0 then
  58.     puts(SCREEN, "search string is empty\n")
  59.     return
  60.     end if
  61.     for i = 1 to length(file_names) do
  62.     fileNum = open(file_names[i], "r")   
  63.     if fileNum = -1 then
  64.         printf(SCREEN, "cannot open %s\n", {file_names[i]})
  65.     else
  66.         scan(fileNum, string, file_names[i], length(file_names) > 1)            
  67.         close(fileNum)
  68.     end if
  69.     end for
  70. end procedure
  71.  
  72. console = open("CON", "r")
  73. if console != -1 then
  74.     grep()
  75. end if
  76.  
  77.