Commit e4b631a5 by Simon Wright Committed by Eric Botcazou

re PR ada/71358 (GNAT.Command_Line.Getopt fails if there are no switches)

	PR ada/71358
	* g-comlin.adb (Display_Section_Help): Do not dereference
	Config.Switches if it's null.
	(Getopt): Likewise.

From-SVN: r236975
parent 827cf695
2016-06-01 Simon Wright <simon@pushface.org>
PR ada/71358
* g-comlin.adb (Display_Section_Help): Do not dereference
Config.Switches if it's null.
(Getopt): Likewise.
2016-05-31 Eric Botcazou <ebotcazou@adacore.com> 2016-05-31 Eric Botcazou <ebotcazou@adacore.com>
* s-osinte-kfreebsd-gnu.ads (clock_getres): Define. * s-osinte-kfreebsd-gnu.ads (clock_getres): Define.
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- B o d y -- -- B o d y --
-- -- -- --
-- Copyright (C) 1999-2015, Free Software Foundation, Inc. -- -- Copyright (C) 1999-2016, Free Software Foundation, Inc. --
-- -- -- --
-- GNAT is free software; you can redistribute it and/or modify it under -- -- 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- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -3151,16 +3151,18 @@ package body GNAT.Command_Line is ...@@ -3151,16 +3151,18 @@ package body GNAT.Command_Line is
New_Line; New_Line;
if Section /= "" then if Section /= "" and then Config.Switches /= null then
Put_Line ("Switches after " & Section); Put_Line ("Switches after " & Section);
end if; end if;
-- Compute size of the switches column -- Compute size of the switches column
for S in Config.Switches'Range loop if Config.Switches /= null then
Max_Len := Natural'Max for S in Config.Switches'Range loop
(Max_Len, Switch_Name (Config.Switches (S), Section)'Length); Max_Len := Natural'Max
end loop; (Max_Len, Switch_Name (Config.Switches (S), Section)'Length);
end loop;
end if;
if Config.Aliases /= null then if Config.Aliases /= null then
for A in Config.Aliases'Range loop for A in Config.Aliases'Range loop
...@@ -3173,25 +3175,27 @@ package body GNAT.Command_Line is ...@@ -3173,25 +3175,27 @@ package body GNAT.Command_Line is
-- Display the switches -- Display the switches
for S in Config.Switches'Range loop if Config.Switches /= null then
declare for S in Config.Switches'Range loop
N : constant String := declare
Switch_Name (Config.Switches (S), Section); N : constant String :=
Switch_Name (Config.Switches (S), Section);
begin begin
if N /= "" then if N /= "" then
Put (" "); Put (" ");
Put (N); Put (N);
Put ((1 .. Max_Len - N'Length + 1 => ' ')); Put ((1 .. Max_Len - N'Length + 1 => ' '));
if Config.Switches (S).Help /= null then if Config.Switches (S).Help /= null then
Put (Config.Switches (S).Help.all); Put (Config.Switches (S).Help.all);
end if; end if;
New_Line; New_Line;
end if; end if;
end; end;
end loop; end loop;
end if;
-- Display the aliases -- Display the aliases
...@@ -3454,25 +3458,27 @@ package body GNAT.Command_Line is ...@@ -3454,25 +3458,27 @@ package body GNAT.Command_Line is
-- Initialize output values for automatically handled switches -- Initialize output values for automatically handled switches
for S in Config.Switches'Range loop if Config.Switches /= null then
case Config.Switches (S).Typ is for S in Config.Switches'Range loop
when Switch_Untyped => case Config.Switches (S).Typ is
null; -- Nothing to do when Switch_Untyped =>
null; -- Nothing to do
when Switch_Boolean => when Switch_Boolean =>
Config.Switches (S).Boolean_Output.all := Config.Switches (S).Boolean_Output.all :=
not Config.Switches (S).Boolean_Value; not Config.Switches (S).Boolean_Value;
when Switch_Integer => when Switch_Integer =>
Config.Switches (S).Integer_Output.all := Config.Switches (S).Integer_Output.all :=
Config.Switches (S).Integer_Initial; Config.Switches (S).Integer_Initial;
when Switch_String => when Switch_String =>
if Config.Switches (S).String_Output.all = null then if Config.Switches (S).String_Output.all = null then
Config.Switches (S).String_Output.all := new String'(""); Config.Switches (S).String_Output.all := new String'("");
end if; end if;
end case; end case;
end loop; end loop;
end if;
-- For all sections, and all switches within those sections -- For all sections, and all switches within those sections
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment