32 lines
841 B
Ada
32 lines
841 B
Ada
with Opt28_Pkg; use Opt28_Pkg;
|
|
|
|
package body Opt28 is
|
|
|
|
function Full_Filename (Filename : String) return String is
|
|
Path : constant String := "PATH";
|
|
Posix_Path : constant Posix_String := To_Posix (Path);
|
|
begin
|
|
|
|
declare
|
|
M : constant Posix_String := Value_Of (Posix_Path);
|
|
N : constant Posix_String (1 .. M'Length) := M;
|
|
Var : constant String := To_String (Str => N);
|
|
Start_Pos : Natural := 1;
|
|
End_Pos : Natural := 1;
|
|
begin
|
|
while Start_Pos <= Var'Length loop
|
|
End_Pos := Position (Var (Start_Pos .. Var'Length));
|
|
|
|
if Is_File (To_Posix (Var (Start_Pos .. End_Pos - 1) & Filename)) then
|
|
return Var (Start_Pos .. End_Pos - 1) & Filename;
|
|
else
|
|
Start_Pos := End_Pos + 1;
|
|
end if;
|
|
end loop;
|
|
end;
|
|
|
|
return "";
|
|
end;
|
|
|
|
end Opt28;
|