Subversion Repositories svn.Prod repos

Rev

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

// ============================================================================
// Create
// name  : Andre Rikkert de Koe          date:   Mar 2018
// descr : filefind
//         This is a demo of programming in the Pascal language.
//         Its part of a project to implement a program to create a directory
//         tree similar to the output of the Unix find program.
// EUID  : Any user who has read access to all the files being searched for.
// run   : interactive
//
// Changes
// name  :                               date:
// descr : short description
//
// ============================================================================

program filefind;
Uses    sysutils;
var     directory : string;
var     progname : string;

// ============================================================================
// Functions
// ============================================================================

procedure Usage(mesg : string);
begin
        Writeln('Usage: ' + progname + ' directory');
        Writeln(mesg);
end;

procedure traverse(directory : string);
var     curdir1, curdir2 : string;
        Info : TSearchRec;
        pfile : string;
begin
        curdir1 := GetCurrentDir;
        chdir(directory);
        curdir2 := GetCurrentDir;
        FindFirst(directory + '/*', faAnyFile or faHidden, Info);
        repeat
                if ((Info.name <> '..') and (Info.name <> '.'))
                then
                        begin
                        pfile := curdir2 + '/' + Info.name;
                        Writeln(pfile);
                        if (DirectoryExists(pfile))
                        then
                                traverse(pfile)
                        end
        until FindNext(Info) <> 0;
        chdir(curdir1);
end;

procedure start_traverse(directory : string);
begin
        Writeln(directory);
        traverse(directory);
end;

// ============================================================================
// Main
// ============================================================================

begin
        progname := ParamStr(0);
        directory := ParamStr(1);
        if (ParamCount = 1)
        then
                if DirectoryExists(directory)
                then
                        start_traverse(directory)
                else
                        Usage('ERROR: Not a directory : ' + directory)
        else
                Usage('ERROR: 1 argument expected');
end.