Rev 37 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line | 
|---|---|---|---|
| 33 | - | 1 | #!/usr/bin/env ruby | 
        
| 2 | ls | 2 | # ============================================================================= | 
        
| 3 | # Create | 
        ||
| 43 | - | 4 | # name  : Andre Rikkert de Koe          date:   Apr 2011 | 
        
| 2 | ls | 5 | # descr : filefind | 
        
| 6 | #         This is a demo of programming in the ruby language. | 
        ||
| 7 | #         Its part of a project to implement a program to create a directory | 
        ||
| 8 | #         tree similar to the output of the Unix find program. | 
        ||
| 9 | # EUID  : Any user who has read access to all the files being searched for. | 
        ||
| 10 | # run   : interactive | 
        ||
| 11 | # | 
        ||
| 12 | # Changes | 
        ||
| 13 | # name  :                               date: | 
        ||
| 14 | # descr : short description | 
        ||
| 15 | # | 
        ||
| 16 | # ============================================================================= | 
        ||
| 17 | |||
| 18 | # ============================================================================= | 
        ||
| 19 | # Functions | 
        ||
| 20 | # ============================================================================= | 
        ||
| 21 | |||
| 22 | def Usage(progname, mesg)  | 
        ||
| 37 | - | 23 | puts "Usage: #{progname} directory"  | 
        
| 2 | ls | 24 |         puts mesg | 
        
| 25 | end | 
        ||
| 26 | |||
| 27 | # | 
        ||
| 28 | # dir is directory to traverse | 
        ||
| 29 | # | 
        ||
| 30 | def traverse(dir)  | 
        ||
| 31 | curdir = Dir.getwd  | 
        ||
| 32 | Dir.chdir(dir)  | 
        ||
| 33 | curdir2 = Dir.getwd  | 
        ||
| 34 | Dir.foreach(Dir.getwd) { | file |  | 
        ||
| 35 | pfile = curdir2 + "/" +file  | 
        ||
| 36 | if File.directory?(file) && !File.symlink?(file)  | 
        ||
| 37 | if (file != "..") && (file != ".")  | 
        ||
| 38 |                                 puts pfile | 
        ||
| 39 | traverse(file)  | 
        ||
| 40 |                         end | 
        ||
| 41 |                 else | 
        ||
| 42 | if File.file?(file) || File.symlink?(file)  | 
        ||
| 43 | puts "#{pfile}"  | 
        ||
| 44 |                         else | 
        ||
| 45 | puts "WARNING: Could not process file $pfile"  | 
        ||
| 46 |                         end | 
        ||
| 47 |                 end | 
        ||
| 48 |         } | 
        ||
| 49 | Dir.chdir(curdir)  | 
        ||
| 50 | end | 
        ||
| 51 | |||
| 52 | def start_traverse(directory)  | 
        ||
| 53 |         puts directory | 
        ||
| 54 | traverse(directory)  | 
        ||
| 55 | end | 
        ||
| 56 | |||
| 57 | # ============================================================================= | 
        ||
| 58 | # MAIN | 
        ||
| 59 | # ============================================================================= | 
        ||
| 60 | |||
| 61 | progname = File.basename($0)  | 
        ||
| 62 | if (ARGV.length == 1)  | 
        ||
| 63 | directory = ARGV[0]  | 
        ||
| 64 | if File.directory?(directory)  | 
        ||
| 65 | start_traverse(directory)  | 
        ||
| 66 |         else | 
        ||
| 37 | - | 67 |                 Usage progname, "ERROR: Not a directory #{directory}" | 
        
| 2 | ls | 68 |         end | 
        
| 69 | else | 
        ||
| 70 |         Usage progname, "ERROR: 1 argument expected" | 
        ||
| 71 | end |