diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-08-20 15:30:04 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-08-20 15:30:04 +0000 |
commit | d7fcadec91ada1deed01ad6e4356a5aaff44357a (patch) | |
tree | 7cd84483c9de707e504b57f3b06cfea1f6a94481 /gcc/ada/g-comlin.adb | |
parent | d84fae143c9f3d4703d681ba8d4fa7d2fa70f76a (diff) | |
download | gcc-d7fcadec91ada1deed01ad6e4356a5aaff44357a.tar.gz |
2008-08-20 Jerome Lambourg <lambourg@adacore.com>
* g-comlin.adb (For_Each_Simple_Switch): Take care of switches not part
of any alias or prefix but having attached parameters (as \"-O2\").
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@139314 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/g-comlin.adb')
-rw-r--r-- | gcc/ada/g-comlin.adb | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/gcc/ada/g-comlin.adb b/gcc/ada/g-comlin.adb index d37d06b68a3..e3070414dc3 100644 --- a/gcc/ada/g-comlin.adb +++ b/gcc/ada/g-comlin.adb @@ -1566,6 +1566,50 @@ package body GNAT.Command_Line is end loop; end if; + -- Determine if the added switch is a known switch with parameter + -- attached. + if Parameter = "" + and then Cmd.Config /= null + and then Cmd.Config.Switches /= null + then + for S in Cmd.Config.Switches'Range loop + declare + Sw : constant String := + Actual_Switch (Cmd.Config.Switches (S).all); + Last : Natural; + Param : Natural; + + begin + if Switch'Length >= Sw'Length + -- Verify that switch starts with Sw + and then Looking_At (Switch, Switch'First, Sw) + then + Param := Switch'First + Sw'Length - 1; + Last := Param; + + if Can_Have_Parameter (Cmd.Config.Switches (S).all) then + while Last < Switch'Last + and then Switch (Last + 1) in '0' .. '9' + loop + Last := Last + 1; + end loop; + end if; + + -- If the full Switch is a known switch with attached + -- parameter, then we use this parameter in the callback. + if Last = Switch'Last then + Callback + (Switch (Switch'First .. Param), + Switch (Param + 1 .. Last)); + + return; + + end if; + end if; + end; + end loop; + end if; + Callback (Switch, Parameter); end For_Each_Simple_Switch; |