Subversion Repositories svn.Prod repos

Rev

Rev 31 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 31 Rev 37
1
program filefind;
1
program filefind;
2
Uses    sysutils;
2
Uses    sysutils;
3
var     directory : string;
3
var     directory : string;
-
 
4
var     progname : string;
4
 
5
 
5
// ============================================================================
6
// ============================================================================
6
// Functions
7
// Functions
7
// ============================================================================
8
// ============================================================================
8
 
9
 
-
 
10
procedure Usage(mesg : string);
-
 
11
begin
-
 
12
        Writeln('Usage: ' + progname + ' directory');
-
 
13
        Writeln(mesg);
-
 
14
end;
-
 
15
 
9
procedure traverse(directory : string);
16
procedure traverse(directory : string);
10
var     curdir1, curdir2 : string;
17
var     curdir1, curdir2 : string;
11
        Info : TSearchRec;
18
        Info : TSearchRec;
12
        pfile : string;
19
        pfile : string;
13
begin
20
begin
14
        curdir1 := GetCurrentDir;
21
        curdir1 := GetCurrentDir;
15
        chdir(directory);
22
        chdir(directory);
16
        curdir2 := GetCurrentDir;
23
        curdir2 := GetCurrentDir;
17
        FindFirst(directory + '/*', faAnyFile or faHidden, Info);
24
        FindFirst(directory + '/*', faAnyFile or faHidden, Info);
18
        repeat
25
        repeat
19
                if ((Info.name <> '..') and (Info.name <> '.'))
26
                if ((Info.name <> '..') and (Info.name <> '.'))
20
                then
27
                then
21
                        begin
28
                        begin
22
                        pfile := curdir2 + '/' + Info.name;
29
                        pfile := curdir2 + '/' + Info.name;
23
                        Writeln(pfile);
30
                        Writeln(pfile);
24
                        if (DirectoryExists(pfile))
31
                        if (DirectoryExists(pfile))
25
                        then
32
                        then
26
                                traverse(pfile)
33
                                traverse(pfile)
27
                        end
34
                        end
28
        until FindNext(Info) <> 0;
35
        until FindNext(Info) <> 0;
29
        chdir(curdir1);
36
        chdir(curdir1);
30
end;
37
end;
31
 
38
 
32
procedure start_traverse(directory : string);
39
procedure start_traverse(directory : string);
33
begin
40
begin
34
        Writeln(directory);
41
        Writeln(directory);
35
        traverse(directory);
42
        traverse(directory);
36
end;
43
end;
37
 
44
 
38
// ============================================================================
45
// ============================================================================
39
// Main
46
// Main
40
// ============================================================================
47
// ============================================================================
41
 
48
 
42
begin
49
begin
-
 
50
        progname := ParamStr(0);
43
        directory := ParamStr(1);
51
        directory := ParamStr(1);
44
        if (ParamCount = 1)
52
        if (ParamCount = 1)
45
        then
53
        then
46
                if DirectoryExists(directory)
54
                if DirectoryExists(directory)
47
                then
55
                then
48
                        start_traverse(directory)
56
                        start_traverse(directory)
49
                else
57
                else
50
                        Writeln ('ERROR: Not a directory : ', directory)
58
                        Usage('ERROR: Not a directory : ' + directory)
51
        else
59
        else
52
                Writeln('ERROR: Give directory as argument');
60
                Usage('ERROR: 1 argument expected');
53
end.
61
end.
54
 
62