[Back to DIRS SWAG index] [Back to Main SWAG index] [Original]
program XFind(input,output);
uses Dos,
FileSpec;
var
FS: TWildCard;
procedure WriteSpec(Name: string);
begin
Name := FExpand(Name);
WriteLn(Name);
end;
procedure FindFiles(Dir: String);
var
Search: SearchRec;
CurDir: String;
DirList: array [1..128] of string[12];
i,
DirNum: Byte;
begin
CurDir := FExpand('.');
if (Dir<>'.') and (Dir<>'..') then begin
ChDir(FExpand(Dir));
DirNum := 0;
FindFirst('*.*',AnyFile,Search);
if DosError<>18 then begin
if Search.Attr=Directory
then begin
inc(DirNum);
DirList[ DirNum ] := Search.Name;
end
else if FS.FitSpec(Search.Name)
then WriteSpec(Search.Name);
repeat
FindNext(Search);
if DosError<>18
then if Search.Attr=Directory
then begin
inc(DirNum);
DirList[ DirNum ] := Search.Name;
end
else if FS.FitSpec(Search.Name)
then WriteSpec(Search.Name);
until DosError = 18;
end;
if DirNum<>0
then for i := 1 to DirNum do FindFiles(DirList[i]);
ChDir(CurDir);
end;
end;
var
i: Byte;
begin
if ParamCount = 0
then WriteLn('Usage: XFIND file1 [file2 file3 ... ]')
else begin
FS.Init;
for i := 1 to ParamCount do FS.AddSpec(ParamStr(i));
FindFiles('\');
FS.Done;
end;
end.
[Back to DIRS SWAG index] [Back to Main SWAG index] [Original]