Unit Common;
interface
const
Max_Arguments = 1024;
var
num_arguments : integer;
arguments : array[0..Max_Arguments-1] of ^string;
procedure Expand_WildCards( first_argument : integer;
default_extension : string );
implementation
uses Dos;
procedure Split( Original : String;
var Base : String;
var Name : String );
var
n : integer;
begin
n := length(Original);
while ( n > 0 ) do
if ( Original[n] = '\' ) or
( Original[n] = '/' ) then
begin
Base := Copy( Original, 1, n-1 );
Name := Copy( Original, n+1, length(Original) );
exit;
end
else
dec(n);
Base := '';
Name := Original;
end;
procedure Expand_WildCards( first_argument : integer;
default_extension : string );
var
i, n : integer;
base, name : string;
SRec : SearchRec;
begin
num_arguments := 0;
i := first_argument;
while ( i <= ParamCount ) do
begin
Split( ParamStr(i), base, name );
if base <> '' then
base := base + '\';
FindFirst( base+name, Archive+ReadOnly+Hidden, SRec );
if DosError <> 0 then
FindFirst( base+name+default_extension, AnyFile, SRec );
while (DosError = 0) and (num_arguments < Max_Arguments) do
begin
GetMem( arguments[num_arguments], length(base)+length(SRec.Name)+1 );
arguments[num_arguments]^ := base + SRec.Name;
inc( num_arguments );
FindNext( SRec );
end;
FindClose( SRec );
inc( i );
end;
end;
end.