home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / sharew / exoten / icon / diffn.icn < prev    next >
Encoding:
Text File  |  1990-03-08  |  1.6 KB  |  66 lines

  1. ############################################################################
  2. #
  3. #    Name:    diffn.icn
  4. #
  5. #    Title:    Show differences files
  6. #
  7. #    Author:    Robert J. Alexander
  8. #
  9. #    Date:    May 15, 1989
  10. #
  11. ############################################################################
  12. #  
  13. #   This program shows the differences between n files. Is is invoked as
  14. #
  15. #        diffn file1 file2 ... filen
  16. #  
  17. ############################################################################
  18. #
  19. #  Links: dif
  20. #
  21. ############################################################################
  22.  
  23. link dif
  24. global f1,f2
  25. record dfile(file,linenbr)
  26.  
  27. procedure main(arg)
  28.   local f, i, files, drec, status
  29.  
  30.   if *arg < 2 then stop("usage: diffn file file ...")
  31.   f := list(*arg)
  32.   every i := 1 to *arg do
  33.         f[i] := dfile(open(arg[i]) | stop("Can't open ",arg[i]),0)
  34.   files := list(*arg)
  35.   every i := 1 to *arg do {
  36.     write("File ",i,": ",arg[i])
  37.     files[i] := diff_proc(myread,f[i])
  38.   }
  39.   every drec := dif(files) do {
  40.     status := "diffs"
  41.     write("==================================")
  42.     every i := 1 to *drec do {
  43.       write("---- File ",i,", ",
  44.                (drec[i].pos > f[i].linenbr & "end of file") |
  45.          "line " || drec[i].pos,
  46.          " ---- (",arg[i],")")
  47.       listrange(drec[i].diffs,drec[i].pos)
  48.     }
  49.   }
  50.   if /status then write("==== Files match ====")
  51.   return
  52. end
  53.  
  54. procedure listrange(dlist,linenbr)
  55.   local x
  56.  
  57.   every x := !dlist do {
  58.     write(x); linenbr +:= 1
  59.   }
  60.   return
  61. end
  62.  
  63. procedure myread(x)
  64.   return x.linenbr <- x.linenbr + 1 & read(x.file)
  65. end
  66.