mirror of
https://github.com/AdaCore/PolyORB.git
synced 2026-02-12 13:01:15 -08:00
(Starts_With): New subprogram * compilers/gnatdist/xe_utils.adb (Scan_Dist_Arg): Pass --unchecked-shared-lib-imports down to gnat ls Fixes P120-017 Subversion-branch: /trunk/polyorb Subversion-revision: 246124
174 lines
5.5 KiB
Ada
174 lines
5.5 KiB
Ada
------------------------------------------------------------------------------
|
|
-- --
|
|
-- POLYORB COMPONENTS --
|
|
-- --
|
|
-- U T I L S --
|
|
-- --
|
|
-- B o d y --
|
|
-- --
|
|
-- Copyright (C) 2004-2016, Free Software Foundation, Inc. --
|
|
-- --
|
|
-- 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 and --
|
|
-- a copy of the GCC Runtime Library Exception along with this program; --
|
|
-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
|
|
-- <http://www.gnu.org/licenses/>. --
|
|
-- --
|
|
-- PolyORB is maintained by AdaCore --
|
|
-- (email: sales@adacore.com) --
|
|
-- --
|
|
------------------------------------------------------------------------------
|
|
|
|
with Ada.Characters.Handling; use Ada.Characters.Handling;
|
|
|
|
with Ada.Command_Line;
|
|
with Ada.Directories;
|
|
with GNAT.Directory_Operations; use GNAT;
|
|
with Namet; use Namet;
|
|
with Platform;
|
|
|
|
package body Utils is
|
|
|
|
Up_To_Low : constant := Character'Pos ('A') - Character'Pos ('a');
|
|
|
|
----------------
|
|
-- Capitalize --
|
|
----------------
|
|
|
|
procedure Capitalize (S : in out String) is
|
|
Up : Boolean := True;
|
|
begin
|
|
for I in S'Range loop
|
|
if Up then
|
|
Up := False;
|
|
if S (I) in 'a' .. 'z' then
|
|
S (I) := Character'Val (Character'Pos (S (I)) + Up_To_Low);
|
|
end if;
|
|
end if;
|
|
if S (I) = '_' then
|
|
Up := True;
|
|
end if;
|
|
end loop;
|
|
end Capitalize;
|
|
|
|
-----------
|
|
-- Image --
|
|
-----------
|
|
|
|
function Image (N : Int) return String is
|
|
S : constant String := Int'Image (N);
|
|
begin
|
|
case S (S'First) is
|
|
when ' ' => return S (S'First + 1 .. S'Last);
|
|
when '-' => return S;
|
|
when others => raise Program_Error;
|
|
end case;
|
|
end Image;
|
|
|
|
----------------------
|
|
-- Is_Dir_Separator --
|
|
----------------------
|
|
|
|
function Is_Dir_Separator (C : Character) return Boolean is
|
|
begin
|
|
return C = Directory_Operations.Dir_Separator or else C = '/';
|
|
end Is_Dir_Separator;
|
|
|
|
------------
|
|
-- Quoted --
|
|
------------
|
|
|
|
function Quoted (S : String; D : Character := '"') return String is -- "
|
|
begin
|
|
return (1 => D) & S & (1 => D);
|
|
end Quoted;
|
|
|
|
------------
|
|
-- Quoted --
|
|
------------
|
|
|
|
function Quoted (S : String; D : Character := '"') return Name_Id is -- "
|
|
begin
|
|
Set_Char_To_Name_Buffer (D);
|
|
Add_Str_To_Name_Buffer (S);
|
|
Add_Char_To_Name_Buffer (D);
|
|
return Name_Find;
|
|
end Quoted;
|
|
|
|
------------
|
|
-- Quoted --
|
|
------------
|
|
|
|
function Quoted (N : Name_Id; D : Character := '"') return String is -- "
|
|
begin
|
|
return Quoted (Get_Name_String (N), D);
|
|
end Quoted;
|
|
|
|
------------
|
|
-- Quoted --
|
|
------------
|
|
|
|
function Quoted (N : Name_Id; D : Character := '"') return Name_Id is -- "
|
|
begin
|
|
return Quoted (Get_Name_String (N), D);
|
|
end Quoted;
|
|
|
|
-------------------------
|
|
-- Simple_Command_Name --
|
|
-------------------------
|
|
|
|
function Simple_Command_Name return String is
|
|
use Ada, Ada.Directories;
|
|
Name : constant String := Simple_Name (Command_Line.Command_Name);
|
|
Exe : constant String := "exe";
|
|
begin
|
|
if Platform.Windows_On_Host then
|
|
if To_Lower (Extension (Name)) = Exe then
|
|
return Base_Name (Name);
|
|
end if;
|
|
end if;
|
|
return Name;
|
|
end Simple_Command_Name;
|
|
|
|
-----------------
|
|
-- Starts_With --
|
|
-----------------
|
|
|
|
function Starts_With (S, Prefix : String) return Boolean is
|
|
begin
|
|
return S'Length >= Prefix'Length
|
|
and then S (S'First .. S'First + Prefix'Length - 1) = Prefix;
|
|
end Starts_With;
|
|
|
|
--------------
|
|
-- To_Lower --
|
|
--------------
|
|
|
|
procedure To_Lower (S : in out String) is
|
|
begin
|
|
S := Ada.Characters.Handling.To_Lower (S);
|
|
end To_Lower;
|
|
|
|
--------------
|
|
-- To_Lower --
|
|
--------------
|
|
|
|
function To_Lower (N : Name_Id) return Name_Id is
|
|
begin
|
|
if N = No_Name then
|
|
return No_Name;
|
|
end if;
|
|
Get_Name_String (N);
|
|
To_Lower (Name_Buffer (1 .. Name_Len));
|
|
return Name_Find;
|
|
end To_Lower;
|
|
|
|
end Utils;
|