From 876d3c9c05563993438c6c58ddeff1ad97c3106b Mon Sep 17 00:00:00 2001 From: Jedidiah Barber Date: Sun, 7 Nov 2021 16:22:28 +1300 Subject: Improved error message handling --- src/deck_convert.adb | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'src/deck_convert.adb') diff --git a/src/deck_convert.adb b/src/deck_convert.adb index 7037944..70c7abf 100644 --- a/src/deck_convert.adb +++ b/src/deck_convert.adb @@ -4,6 +4,7 @@ with Ada.Characters.Latin_1, Ada.Characters.Handling, + Ada.Exceptions, GNAT.Command_Line, GNAT.Strings, Ada.Command_Line, @@ -177,7 +178,8 @@ begin Deck_Format := +(Charhand.To_Lower (Format_Arg.all)); end if; if Deck_Format /= "csv" and Deck_Format /= "fmd" then - Put_Line (Standard_Error, "Output deck format required. Valid options are CSV or FMD." & + Put_Line (Standard_Error, + "ERROR: Output deck format required. Valid options are CSV or FMD." & Latin.LF & Further_Help); ACom.Set_Exit_Status (ACom.Failure); return; @@ -185,14 +187,14 @@ begin if Input_Arg.all = "" then - Put_Line (Standard_Error, "File name of input deck was not provided." & + Put_Line (Standard_Error, "ERROR: File name of input deck was not provided." & Latin.LF & Further_Help); ACom.Set_Exit_Status (ACom.Failure); return; end if; Input_Name := +(Input_Arg.all); if not FD.Exists (-Input_Name) then - Put_Line (Standard_Error, "Input deck does not exist." & + Put_Line (Standard_Error, "ERROR: Input deck does not exist." & Latin.LF & Further_Help); ACom.Set_Exit_Status (ACom.Failure); return; @@ -200,14 +202,14 @@ begin if Output_Arg.all = "" then - Put_Line (Standard_Error, "Base file name for output deck was not provided." & + Put_Line (Standard_Error, "ERROR: Base file name for output deck was not provided." & Latin.LF & Further_Help); ACom.Set_Exit_Status (ACom.Failure); return; end if; Output_Name := +(Output_Arg.all); if FD.Exists ((-Output_Name) & "." & (-Deck_Format)) and not Overwrite then - Put_Line (Standard_Error, "Output deck file name already exists." & + Put_Line (Standard_Error, "ERROR: Output deck file name already exists." & Latin.LF & Further_Help); ACom.Set_Exit_Status (ACom.Failure); return; @@ -285,6 +287,15 @@ begin end; +exception + + + when Fail : FD.Name_Error => + Put_Line (Standard_Error, Latin.LF & "ERROR: " & Ada.Exceptions.Exception_Message (Fail) & + Latin.LF & Further_Help); + ACom.Set_Exit_Status (ACom.Failure); + + end Deck_Convert; -- cgit