When a gnat tool (gnatbind, gnatclean, gnatchop, gnatfind, gnatls,
gnatname, gnatprep or gnatmake) is incorrectly invoked, the usage is
no longer displayed. Instead, this line is displayed:

  type "gnatxxx --help" for help

Tested on x86_64-pc-linux-gnu, committed on trunk

2014-07-17  Vincent Celier  <cel...@adacore.com>

        * gnatchop.adb, make.adb, gnatbind.adb, clean.adb, gprep.adb,
        gnatxref.adb, gnatls.adb, gnatfind.adb, gnatname.adb: Do not output
        the usage for an erroneous invocation of a gnat tool.

Index: gnatchop.adb
===================================================================
--- gnatchop.adb        (revision 212640)
+++ gnatchop.adb        (working copy)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1998-2012, Free Software Foundation, Inc.         --
+--          Copyright (C) 1998-2014, 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- --
@@ -1248,7 +1248,12 @@
       --  At least one filename must be given
 
       elsif File.Last = 0 then
-         Usage;
+         if Argument_Count = 0 then
+            Usage;
+         else
+            Put_Line ("type ""gnatchop --help"" for help");
+         end if;
+
          return False;
 
       --  No directory given, set directory to null, so that we can just
Index: make.adb
===================================================================
--- make.adb    (revision 212659)
+++ make.adb    (working copy)
@@ -5856,9 +5856,14 @@
 
             Targparm.Get_Target_Parameters;
 
-            --  Output usage information if no files to compile
+            --  Output usage information if no argument on the command line
 
-            Usage;
+            if Argument_Count = 0 then
+               Usage;
+            else
+               Write_Line ("type ""gnatmake --help"" for help");
+            end if;
+
             Finish_Program (Project_Tree, E_Success);
          end if;
       end if;
Index: gnatbind.adb
===================================================================
--- gnatbind.adb        (revision 212654)
+++ gnatbind.adb        (working copy)
@@ -666,10 +666,15 @@
       Display_Version ("GNATBIND", "1995");
    end if;
 
-   --  Output usage information if no files
+   --  Output usage information if no arguments
 
    if not More_Lib_Files then
-      Bindusg.Display;
+      if Argument_Count = 0 then
+         Bindusg.Display;
+      else
+         Write_Line ("type ""gnatbind --help"" for help");
+      end if;
+
       Exit_Program (E_Fatal);
    end if;
 
Index: clean.adb
===================================================================
--- clean.adb   (revision 212640)
+++ clean.adb   (working copy)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 2003-2013, Free Software Foundation, Inc.         --
+--          Copyright (C) 2003-2014, 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- --
@@ -1460,11 +1460,16 @@
          end;
       end if;
 
-      --  If neither a project file nor an executable were specified, output
-      --  the usage and exit.
+      --  If neither a project file nor an executable were specified, exit
+      --  displaying the usage if there were no arguments on the command line.
 
       if Main_Project = No_Project and then Osint.Number_Of_Files = 0 then
-         Usage;
+         if Argument_Count = 0 then
+            Usage;
+         else
+            Put_Line ("type ""gnatclean --help"" for help");
+         end if;
+
          return;
       end if;
 
Index: gprep.adb
===================================================================
--- gprep.adb   (revision 212640)
+++ gprep.adb   (working copy)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 2002-2013, Free Software Foundation, Inc.         --
+--          Copyright (C) 2002-2014, 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- --
@@ -38,7 +38,8 @@
 with Switch;   use Switch;
 with Types;    use Types;
 
-with Ada.Text_IO;     use Ada.Text_IO;
+with Ada.Command_Line; use Ada.Command_Line;
+with Ada.Text_IO;      use Ada.Text_IO;
 
 with GNAT.Case_Util;            use GNAT.Case_Util;
 with GNAT.Command_Line;
@@ -205,14 +206,19 @@
 
          --  No input file specified, just output the usage and exit
 
-         Usage;
+         if Argument_Count = 0 then
+            Usage;
+         else
+            Put_Line ("type ""gnatprep --help"" for help");
+         end if;
+
          return;
 
       elsif Outfile_Name = No_Name then
 
-         --  No output file specified, just output the usage and exit
+         --  No output file specified, exit
 
-         Usage;
+         Put_Line ("type ""gnatprep --help"" for help");
          return;
       end if;
 
@@ -767,7 +773,7 @@
             when GNAT.Command_Line.Invalid_Switch =>
                Write_Str ("Invalid Switch: -");
                Write_Line (GNAT.Command_Line.Full_Switch);
-               Usage;
+               Put_Line ("type ""gnatprep --help"" for help");
                OS_Exit (1);
          end;
       end loop;
Index: gnatxref.adb
===================================================================
--- gnatxref.adb        (revision 212640)
+++ gnatxref.adb        (working copy)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1998-2011, Free Software Foundation, Inc.         --
+--          Copyright (C) 1998-2014, 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- --
@@ -30,6 +30,7 @@
 with Xr_Tabls; use Xr_Tabls;
 with Xref_Lib; use Xref_Lib;
 
+with Ada.Command_Line;  use Ada.Command_Line;
 with Ada.Strings.Fixed; use Ada.Strings.Fixed;
 with Ada.Text_IO;       use Ada.Text_IO;
 
@@ -209,7 +210,8 @@
                end if;
 
             when others =>
-               Write_Usage;
+               Put_Line ("type ""gnatxref --help"" for help");
+               raise Usage_Error;
          end case;
       end loop;
 
@@ -225,7 +227,8 @@
             if Ada.Strings.Fixed.Index (S, ":") /= 0 then
                Ada.Text_IO.Put_Line
                  ("Only file names are allowed on the command line");
-               Write_Usage;
+               Put_Line ("type ""gnatxref --help"" for help");
+               raise Usage_Error;
             end if;
 
             Add_Xref_File (S);
@@ -237,12 +240,14 @@
       when GNAT.Command_Line.Invalid_Switch =>
          Ada.Text_IO.Put_Line ("Invalid switch : "
                                & GNAT.Command_Line.Full_Switch);
-         Write_Usage;
+         Put_Line ("type ""gnatxref --help"" for help");
+         raise Usage_Error;
 
       when GNAT.Command_Line.Invalid_Parameter =>
          Ada.Text_IO.Put_Line ("Parameter missing for : "
                                & GNAT.Command_Line.Full_Switch);
-         Write_Usage;
+         Put_Line ("type ""gnatxref --help"" for help");
+         raise Usage_Error;
    end Parse_Cmd_Line;
 
    -----------
@@ -296,7 +301,12 @@
    Parse_Cmd_Line;
 
    if not Have_File then
-      Write_Usage;
+      if Argument_Count = 0 then
+         Write_Usage;
+      else
+         Put_Line ("type ""gnatxref --help"" for help");
+         raise Usage_Error;
+      end if;
    end if;
 
    Xr_Tabls.Set_Default_Match (True);
Index: gnatls.adb
===================================================================
--- gnatls.adb  (revision 212663)
+++ gnatls.adb  (working copy)
@@ -45,6 +45,8 @@
 with Targparm;    use Targparm;
 with Types;       use Types;
 
+with Ada.Command_Line; use Ada.Command_Line;
+
 with GNAT.Case_Util; use GNAT.Case_Util;
 
 procedure Gnatls is
@@ -1599,7 +1601,7 @@
       Set_Standard_Error;
       Write_Str ("Can't use -l with another switch");
       Write_Eol;
-      Usage;
+      Write_Line ("type ""gnatls --help"" for help");
       Exit_Program (E_Fatal);
    end if;
 
@@ -1748,7 +1750,11 @@
 
    if not More_Lib_Files then
       if not Print_Usage and then not Verbose_Mode then
-         Usage;
+         if Argument_Count = 0 then
+            Usage;
+         else
+            Write_Line ("type ""gnatls --help"" for help");
+         end if;
       end if;
 
       Exit_Program (E_Fatal);
Index: gnatfind.adb
===================================================================
--- gnatfind.adb        (revision 212640)
+++ gnatfind.adb        (working copy)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1998-2011, Free Software Foundation, Inc.         --
+--          Copyright (C) 1998-2014, 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- --
@@ -30,6 +30,7 @@
 with Xr_Tabls; use Xr_Tabls;
 with Xref_Lib; use Xref_Lib;
 
+with Ada.Command_Line;  use Ada.Command_Line;
 with Ada.Strings.Fixed; use Ada.Strings.Fixed;
 with Ada.Text_IO;       use Ada.Text_IO;
 
@@ -227,7 +228,8 @@
                end if;
 
             when others =>
-               Write_Usage;
+               Put_Line ("type ""gnatfind --help"" for help");
+               raise Usage_Error;
          end case;
       end loop;
 
@@ -266,16 +268,19 @@
       when GNAT.Command_Line.Invalid_Switch =>
          Ada.Text_IO.Put_Line ("Invalid switch : "
                                & GNAT.Command_Line.Full_Switch);
-         Write_Usage;
+         Put_Line ("type ""gnatfind --help"" for help");
+         raise Usage_Error;
 
       when GNAT.Command_Line.Invalid_Parameter =>
          Ada.Text_IO.Put_Line ("Parameter missing for : "
                                & GNAT.Command_Line.Full_Switch);
-         Write_Usage;
+         Put_Line ("type ""gnatfind --help"" for help");
+         raise Usage_Error;
 
       when Xref_Lib.Invalid_Argument =>
          Ada.Text_IO.Put_Line ("Invalid line or column in the pattern");
-         Write_Usage;
+         Put_Line ("type ""gnatfind --help"" for help");
+         raise Usage_Error;
    end Parse_Cmd_Line;
 
    -----------
@@ -344,7 +349,12 @@
    Parse_Cmd_Line;
 
    if not Have_Entity then
-      Write_Usage;
+      if Argument_Count = 0 then
+         Write_Usage;
+      else
+         Put_Line ("type ""gnatfind --help"" for help");
+         raise Usage_Error;
+      end if;
    end if;
 
    --  Special case to speed things up: if the user has a command line of the
@@ -372,7 +382,8 @@
       Ada.Text_IO.Put_Line ("Error: for type hierarchy output you must "
                             & "specify only one file.");
       Ada.Text_IO.New_Line;
-      Write_Usage;
+      Put_Line ("type ""gnatfind --help"" for help");
+      raise Usage_Error;
    end if;
 
    Search (Pattern, Local_Symbols, Wide_Search, Read_Only,
Index: gnatname.adb
===================================================================
--- gnatname.adb        (revision 212640)
+++ gnatname.adb        (working copy)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 2001-2013, Free Software Foundation, Inc.         --
+--          Copyright (C) 2001-2014, 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- --
@@ -289,7 +289,7 @@
                       Patterns.Last
                         (Arguments.Table (Arguments.Last).Foreign_Patterns) = 0
                   then
-                     Usage;
+                     Put_Line ("type ""gnatname --help"" for help");
                      return;
                   end if;
 
@@ -619,7 +619,12 @@
       and then
       Patterns.Last (Arguments.Table (Arguments.Last).Foreign_Patterns) = 0
    then
-      Usage;
+      if Argument_Count = 0 then
+         Usage;
+      else
+         Put_Line ("type ""gnatname --help"" for help");
+      end if;
+
       return;
    end if;
 

Reply via email to