------------------------------------------------------------------------------
-- Language Server Protocol --
-- --
-- Copyright (C) 2018-2019, AdaCore --
-- --
-- This is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
-- ware Foundation; either version 3, or (at your option) any later ver- --
-- sion. This software is distributed in the hope that it will be useful, --
-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
-- License for more details. You should have received a copy of the GNU --
-- General Public License distributed with this software; see file --
-- COPYING3. If not, go to http://www.gnu.org/licenses for a complete copy --
-- of the license. --
------------------------------------------------------------------------------
with Ada.Strings.Fixed;
with Ada.Directories;
separate (Spawn.Environments)
function Search_In_Path
(File : UTF_8_String;
Path : UTF_8_String) return UTF_8_String
is
From : Natural := Path'First;
begin
loop
declare
use all type Ada.Directories.File_Kind;
To : constant Natural := Ada.Strings.Fixed.Index (Path, ":", From);
Directory : constant UTF_8_String :=
(if To = 0 then
Path (From .. Path'Last)
else
Path (From .. To - 1));
Candidate : constant UTF_8_String :=
Ada.Directories.Compose (Directory, File);
begin
if Ada.Directories.Exists (Candidate)
and then Ada.Directories.Kind (Candidate) = Ordinary_File
then
return Ada.Directories.Full_Name (Candidate);
end if;
exit when To = 0;
From := To + 1;
end;
end loop;
return "";
end Search_In_Path;