OSDN Git Service

PR bootstrap/11932
[pf3gnuchains/gcc-fork.git] / gcc / ada / mlib-fil.adb
1 ------------------------------------------------------------------------------
2 --                                                                          --
3 --                         GNAT COMPILER COMPONENTS                         --
4 --                                                                          --
5 --                            M L I B . F I L                               --
6 --                                                                          --
7 --                                 B o d y                                  --
8 --                                                                          --
9 --              Copyright (C) 2001, Ada Core Technologies, Inc.             --
10 --                                                                          --
11 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
12 -- terms of the  GNU General Public License as published  by the Free Soft- --
13 -- ware  Foundation;  either version 2,  or (at your option) any later ver- --
14 -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
15 -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
16 -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
17 -- for  more details.  You should have  received  a copy of the GNU General --
18 -- Public License  distributed with GNAT;  see file COPYING.  If not, write --
19 -- to  the Free Software Foundation,  59 Temple Place - Suite 330,  Boston, --
20 -- MA 02111-1307, USA.                                                      --
21 --                                                                          --
22 -- GNAT was originally developed  by the GNAT team at  New York University. --
23 -- Extensive contributions were provided by Ada Core Technologies Inc.      --
24 --                                                                          --
25 ------------------------------------------------------------------------------
26
27 --  This package provides a set of routines to deal with file extensions
28
29 with Ada.Strings.Fixed;
30 with MLib.Tgt;
31
32 package body MLib.Fil is
33
34    use Ada;
35
36    package Target renames MLib.Tgt;
37
38    ------------
39    -- Ext_To --
40    ------------
41
42    function Ext_To
43      (Filename : String;
44       New_Ext  : String := "")
45       return     String
46    is
47       use Strings.Fixed;
48       J : constant Natural :=
49             Index (Source  =>  Filename,
50                    Pattern => ".",
51                    Going   => Strings.Backward);
52
53    begin
54       if J = 0 then
55          if New_Ext = "" then
56             return Filename;
57          else
58             return Filename & "." & New_Ext;
59          end if;
60
61       else
62          if New_Ext = "" then
63             return Head (Filename, J - 1);
64          else
65             return Head (Filename, J - 1) & '.' & New_Ext;
66          end if;
67       end if;
68    end Ext_To;
69
70    -------------
71    -- Get_Ext --
72    -------------
73
74    function Get_Ext (Filename : in String) return String is
75       use Strings.Fixed;
76
77       J : constant Natural :=
78             Index (Source  =>  Filename,
79                    Pattern => ".",
80                    Going   => Strings.Backward);
81
82    begin
83       if J = 0 then
84          return "";
85       else
86          return Filename (J .. Filename'Last);
87       end if;
88    end Get_Ext;
89
90    ----------------
91    -- Is_Archive --
92    ----------------
93
94    function Is_Archive (Filename : String) return Boolean is
95       Ext : constant String := Get_Ext (Filename);
96
97    begin
98       return Target.Is_Archive_Ext (Ext);
99    end Is_Archive;
100
101    ----------
102    -- Is_C --
103    ----------
104
105    function Is_C (Filename : in String) return Boolean is
106       Ext : constant String := Get_Ext (Filename);
107
108    begin
109       return Target.Is_C_Ext (Ext);
110    end Is_C;
111
112    ------------
113    -- Is_Obj --
114    ------------
115
116    function Is_Obj (Filename : in String) return Boolean is
117       Ext : constant String := Get_Ext (Filename);
118
119    begin
120       return Target.Is_Object_Ext (Ext);
121    end Is_Obj;
122
123 end MLib.Fil;