diff options
Diffstat (limited to 'gcc/ada/a-comlin.adb')
-rw-r--r-- | gcc/ada/a-comlin.adb | 46 |
1 files changed, 40 insertions, 6 deletions
diff --git a/gcc/ada/a-comlin.adb b/gcc/ada/a-comlin.adb index b3a31ce3747..fe96ff9d852 100644 --- a/gcc/ada/a-comlin.adb +++ b/gcc/ada/a-comlin.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2001 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2003 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- -- @@ -31,7 +31,8 @@ -- -- ------------------------------------------------------------------------------ -with System; +with System; use System; + package body Ada.Command_Line is function Arg_Count return Natural; @@ -43,6 +44,15 @@ package body Ada.Command_Line is function Len_Arg (Arg_Num : Integer) return Integer; pragma Import (C, Len_Arg, "__gnat_len_arg"); + ----------------------- + -- Local Subprograms -- + ----------------------- + + function Initialized return Boolean; + -- Checks to ensure that gnat_argc and gnat_argv have been properly + -- initialized. Returns false if not, or if argv / argc are + -- unsupported on the target (e.g. VxWorks). + -------------- -- Argument -- -------------- @@ -76,6 +86,11 @@ package body Ada.Command_Line is function Argument_Count return Natural is begin + if not Initialized then + -- RM A.15 (11) + return 0; + end if; + if Remove_Args = null then return Arg_Count - 1; else @@ -83,16 +98,35 @@ package body Ada.Command_Line is end if; end Argument_Count; + ----------------- + -- Initialized -- + ----------------- + + function Initialized return Boolean is + gnat_argv : System.Address; + pragma Import (C, gnat_argv, "gnat_argv"); + + begin + return gnat_argv /= System.Null_Address; + end Initialized; + ------------------ -- Command_Name -- ------------------ function Command_Name return String is - Arg : aliased String (1 .. Len_Arg (0)); - begin - Fill_Arg (Arg'Address, 0); - return Arg; + if not Initialized then + return ""; + end if; + + declare + Arg : aliased String (1 .. Len_Arg (0)); + + begin + Fill_Arg (Arg'Address, 0); + return Arg; + end; end Command_Name; end Ada.Command_Line; |