+2019-12-12 Dmitriy Anisimkov <anisimko@adacore.com>
+
+ * libgnat/g-comlin.ads (Get_Argument): New routine similar to
+ original Get_Argument but with one more out parameter
+ End_Of_Arguments.
+ (Get_Arguments): Comment improved.
+ * libgnat/g-comlin.adb (Get_Argument): Implementation taken from
+ original Get_Argument and improved.
+ (Get_Argument): Calls new routine Get_Argument with additional
+ parameter.
+
2019-12-03 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/utils.c (potential_alignment_gap): Delete.
------------------
function Get_Argument
- (Do_Expansion : Boolean := False;
+ (Do_Expansion : Boolean := False;
Parser : Opt_Parser := Command_Line_Parser) return String
is
+ End_Of_Args : Boolean;
begin
+ return Get_Argument (Do_Expansion, Parser, End_Of_Args);
+ end Get_Argument;
+
+ ------------------
+ -- Get_Argument --
+ ------------------
+
+ function Get_Argument
+ (Do_Expansion : Boolean := False;
+ Parser : Opt_Parser := Command_Line_Parser;
+ End_Of_Arguments : out Boolean) return String is
+ begin
+ End_Of_Arguments := False;
+
if Parser.In_Expansion then
declare
S : constant String := Expansion (Parser.Expansion_It);
end loop;
else
+ End_Of_Arguments := True;
return String'(1 .. 0 => ' ');
end if;
end loop;
if Parser.Current_Argument > Parser.Arg_Count then
+ End_Of_Arguments := True;
return String'(1 .. 0 => ' ');
+
elsif Parser.Section (Parser.Current_Argument) = 0 then
- return Get_Argument (Do_Expansion);
+ return Get_Argument (Do_Expansion, Parser, End_Of_Arguments);
end if;
Parser.Current_Argument := Parser.Current_Argument + 1;
Argument (Parser, Parser.Current_Argument - 1);
begin
for Index in Arg'Range loop
- if Arg (Index) = '*'
- or else Arg (Index) = '?'
- or else Arg (Index) = '['
- then
+ if Arg (Index) in '*' | '?' | '[' then
Parser.In_Expansion := True;
Start_Expansion (Parser.Expansion_It, Arg);
- return Get_Argument (Do_Expansion, Parser);
+ return Get_Argument (Do_Expansion, Parser, End_Of_Arguments);
end if;
end loop;
end;
function Get_Argument
(Do_Expansion : Boolean := False;
Parser : Opt_Parser := Command_Line_Parser) return String;
- -- Returns the next element on the command line that is not a switch. This
- -- function should not be called before Getopt has returned ASCII.NUL.
+ -- Returns the next element on the command line that is not a switch. This
+ -- function should be called either after Getopt has returned ASCII.NUL or
+ -- after Getopt procedure call.
--
-- If Do_Expansion is True, then the parameter on the command line will
-- be considered as a filename with wildcards, and will be expanded. The
-- When there are no more arguments on the command line, this function
-- returns an empty string.
+ function Get_Argument
+ (Do_Expansion : Boolean := False;
+ Parser : Opt_Parser := Command_Line_Parser;
+ End_Of_Arguments : out Boolean) return String;
+ -- The same as above but able to distinguish empty element in argument list
+ -- from end of arguments.
+ -- End_Of_Arguments is True if the end of the command line has been reached
+ -- (i.e. all available arguments have been returned by previous calls to
+ -- Get_Argument).
+
function Parameter
(Parser : Opt_Parser := Command_Line_Parser) return String;
-- Returns parameter associated with the last switch returned by Getopt.