------------------------------------------------------------------------------ -- -- -- GNAT COMPILER COMPONENTS -- -- -- -- V M S _ C O N V -- -- -- -- S p e c -- -- -- -- Copyright (C) 2003-2013, Free Software Foundation, Inc. -- -- -- -- GNAT 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. GNAT is distributed in the hope that it will be useful, but WITH- -- -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- -- 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 GNAT; see file COPYING3. If not, go to -- -- http://www.gnu.org/licenses for a complete copy of the license. -- -- -- -- GNAT was originally developed by the GNAT team at New York University. -- -- Extensive contributions were provided by Ada Core Technologies Inc. -- -- -- ------------------------------------------------------------------------------ -- This package is part of the GNAT driver. It contains the procedure -- VMS_Conversion to convert a VMS command line to the equivalent command -- line with switches for the GNAT tools that the GNAT driver will invoke. -- The qualifier declarations are contained in package VMS_Data. with Table; with VMS_Data; use VMS_Data; with VMS_Cmds; use VMS_Cmds; with GNAT.OS_Lib; use GNAT.OS_Lib; package VMS_Conv is -- A table to keep the switches on the command line package Last_Switches is new Table.Table (Table_Component_Type => String_Access, Table_Index_Type => Integer, Table_Low_Bound => 1, Table_Initial => 20, Table_Increment => 100, Table_Name => "Gnatcmd.Last_Switches"); Normal_Exit : exception; -- Raise this exception for normal program termination Error_Exit : exception; -- Raise this exception if error detected Errors : Natural := 0; -- Count errors detected Display_Command : Boolean := False; -- Set true if /? switch causes display of generated command (on VMS) ------------------- -- Command Table -- ------------------- -- The command table contains an entry for each command recognized by -- GNATCmd. The entries are represented by an array of records. type Parameter_Type is -- A parameter is defined as a whitespace bounded string, not beginning -- with a slash. (But see note under FILES_OR_WILDCARD). (File, -- A required file or directory parameter Optional_File, -- An optional file or directory parameter Other_As_Is, -- A parameter that's passed through as is (not canonicalized) Unlimited_Files, -- An unlimited number of whitespace separate file or directory -- parameters including wildcard specifications. Unlimited_As_Is, -- An unlimited number of whitespace separated parameters that are -- passed through as is (not canonicalized). Files_Or_Wildcard); -- A comma separated list of files and/or wildcard file specifications. -- A comma preceded by or followed by whitespace is considered as a -- single comma character w/o whitespace. type Parameter_Array is array (Natural range <>) of Parameter_Type; type Parameter_Ref is access all Parameter_Array; type Alternate_Command is (Comp, Ls, Kr, Pp, Prep); -- Alternate command label for non VMS system use Corresponding_To : constant array (Alternate_Command) of Command_Type := (Comp => Compile, Ls => List, Kr => Krunch, Prep => Preprocess, Pp => Pretty); -- Mapping of alternate commands to commands type Command_Entry is record Cname : String_Ptr; -- Command name for GNAT xxx command Usage : String_Ptr; -- A usage string, used for error messages Unixcmd : String_Ptr; -- Corresponding Unix command Unixsws : Argument_List_Access; -- Switches for the Unix command VMS_Only : Boolean; -- When True, the command can only be used on VMS Switches : Switches_Ptr; -- Pointer to array of switch strings Params : Parameter_Ref; -- Describes the allowable types of parameters. -- Params (1) is the type of the first parameter, etc. -- An empty parameter array means this command takes no parameters. Defext : String (1 .. 3); -- Default extension. If non-blank, then this extension is supplied by -- default as the extension for any file parameter which does not have -- an extension already. end record; ------------------- -- Switch Tables -- ------------------- -- The switch tables contain an entry for each switch recognized by the -- command processor. It is initialized by procedure Initialize. Command_List : array (Real_Command_Type) of Command_Entry; ---------------- -- Procedures -- ---------------- procedure Initialize; -- Initialized the switch table Command_List procedure Output_Version; -- Output the version of this program procedure VMS_Conversion (The_Command : out Command_Type); -- Converts VMS command line to equivalent Unix command line end VMS_Conv;