Subversion Repositories svn.Prod repos

Rev

Rev 37 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. // ============================================================================
  2. // Create
  3. // name  : Andre Rikkert de Koe          date:   Mar 2018
  4. // descr : filefind
  5. //         This is a demo of programming in the Pascal language.
  6. //         Its part of a project to implement a program to create a directory
  7. //         tree similar to the output of the Unix find program.
  8. // EUID  : Any user who has read access to all the files being searched for.
  9. // run   : interactive
  10. //
  11. // Changes
  12. // name  :                               date:
  13. // descr : short description
  14. //
  15. // ============================================================================
  16.  
  17. program filefind;
  18. Uses    sysutils;
  19. var     directory : string;
  20. var     progname : string;
  21.  
  22. // ============================================================================
  23. // Functions
  24. // ============================================================================
  25.  
  26. procedure Usage(mesg : string);
  27. begin
  28.         Writeln('Usage: ' + progname + ' directory');
  29.         Writeln(mesg);
  30. end;
  31.  
  32. procedure traverse(directory : string);
  33. var     curdir1, curdir2 : string;
  34.         Info : TSearchRec;
  35.         pfile : string;
  36. begin
  37.         curdir1 := GetCurrentDir;
  38.         chdir(directory);
  39.         curdir2 := GetCurrentDir;
  40.         FindFirst(directory + '/*', faAnyFile or faHidden, Info);
  41.         repeat
  42.                 if ((Info.name <> '..') and (Info.name <> '.'))
  43.                 then
  44.                         begin
  45.                         pfile := curdir2 + '/' + Info.name;
  46.                         Writeln(pfile);
  47.                         if (DirectoryExists(pfile))
  48.                         then
  49.                                 traverse(pfile)
  50.                         end
  51.         until FindNext(Info) <> 0;
  52.         chdir(curdir1);
  53. end;
  54.  
  55. procedure start_traverse(directory : string);
  56. begin
  57.         Writeln(directory);
  58.         traverse(directory);
  59. end;
  60.  
  61. // ============================================================================
  62. // Main
  63. // ============================================================================
  64.  
  65. begin
  66.         progname := ParamStr(0);
  67.         directory := ParamStr(1);
  68.         if (ParamCount = 1)
  69.         then
  70.                 if DirectoryExists(directory)
  71.                 then
  72.                         start_traverse(directory)
  73.                 else
  74.                         Usage('ERROR: Not a directory : ' + directory)
  75.         else
  76.                 Usage('ERROR: 1 argument expected');
  77. end.
  78.