Subversion Repositories svn.Prod repos

Rev

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

Rev Author Line No. Line
43 - 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
 
29 - 17
program filefind;
31 - 18
Uses    sysutils;
29 - 19
var     directory : string;
37 - 20
var     progname : string;
29 - 21
 
31 - 22
// ============================================================================
23
// Functions
24
// ============================================================================
25
 
37 - 26
procedure Usage(mesg : string);
27
begin
28
        Writeln('Usage: ' + progname + ' directory');
29
        Writeln(mesg);
30
end;
31
 
29 - 32
procedure traverse(directory : string);
33
var     curdir1, curdir2 : string;
30 - 34
        Info : TSearchRec;
29 - 35
        pfile : string;
36
begin
37
        curdir1 := GetCurrentDir;
38
        chdir(directory);
39
        curdir2 := GetCurrentDir;
30 - 40
        FindFirst(directory + '/*', faAnyFile or faHidden, Info);
29 - 41
        repeat
30 - 42
                if ((Info.name <> '..') and (Info.name <> '.'))
29 - 43
                then
44
                        begin
30 - 45
                        pfile := curdir2 + '/' + Info.name;
29 - 46
                        Writeln(pfile);
47
                        if (DirectoryExists(pfile))
48
                        then
49
                                traverse(pfile)
50
                        end
30 - 51
        until FindNext(Info) <> 0;
29 - 52
        chdir(curdir1);
53
end;
54
 
55
procedure start_traverse(directory : string);
56
begin
57
        Writeln(directory);
58
        traverse(directory);
59
end;
60
 
31 - 61
// ============================================================================
62
// Main
63
// ============================================================================
64
 
29 - 65
begin
37 - 66
        progname := ParamStr(0);
29 - 67
        directory := ParamStr(1);
30 - 68
        if (ParamCount = 1)
29 - 69
        then
30 - 70
                if DirectoryExists(directory)
71
                then
72
                        start_traverse(directory)
73
                else
37 - 74
                        Usage('ERROR: Not a directory : ' + directory)
29 - 75
        else
37 - 76
                Usage('ERROR: 1 argument expected');
29 - 77
end.