[31m--------------------------------------------------------------------------------------------------------------------------------------------------------------[m
[31m-- Gnostic is Ada Generic Neural Object System Engineering.                                                                                                --[m
[31m-- Gnostic (C) Copyright 2016 Manuel De Girardi.                                                                                                           --[m
[31m--------------------------------------------------------------------------------------------------------------------------------------------------------------[m
  
[31m--------------------------------------------------------------------------------------------------------------------------------------------------------------[m
[31m-- Date        := 2016-12-04 15:05:40 ; [m
[31m-- Description : Ada Generic Neural Object System Engineering.                                                                                              --[m
[31m-- Version     := 2016.34.3a ; [m
[31m-- Authors     : Manuel De Girardi.                                                                                                                         --[m
[31m--------------------------------------------------------------------------------------------------------------------------------------------------------------[m
[01;34mwith[m Ada[31m.[mWide_Text_Io[31m;[m
[01;34muse[m Ada[31m;[m
[01;34mwith[m Gnat[31m.[mOs_Lib[31m;[m
[01;34muse[m Gnat[31m;[m
[01;34mwith[m Gnat[31m.[mCommand_Line[31m;[m
[01;34muse[m Gnat[31m.[mCommand_Line[31m;[m
[01;34mwith[m Ada[31m.[mCharacters[31m.[mHandling[31m;[m
[01;34muse[m Ada[31m.[mCharacters[31m.[mHandling[31m;[m

[01;34mwith[m Gnos[31m.[mTools[31m;[m
[01;34muse[m Gnos[31m.[mTools[31m;[m
[01;34mpackage[m [01;34mbody[m Gnos[31m.[mResults [01;34mis[m
[01;34muse[m Os_Lib[31m;[m
[01;34muse[m [01;34mtype[m U_String[31m;[m
   
   [01;34mfunction[m [01;30mSpawn[m[31m([mLine [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mreturn[m Spawn_Result_Type [01;34mis[m
      
      Command [31m:[m Gnat[31m.[mCommand_Line[31m.[mCommand_Line[31m;[m
      
      Spawn_Result [31m:[m Spawn_Result_Type[31m;[m
	        
      Buffer_args[31m,[m Arguments_List [31m:[m Os_Lib[31m.[mArgument_List_Access[31m;[m                  
      
      File [31m:[m Wide_Text_Io[31m.[mFile_Type[31m;[m      
      Deleted [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
      
      Exec_Path [31m:[m Os_Lib[31m.[mString_Access[31m;[m
      Initialized [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
      
      
      Home [31m:[m [01;34mconstant[m Os_Lib[31m.[mString_Access [31m:=[m [01;30mGetenv[m[31m([m[31m"HOME"[m[31m);[m
      
      Out_Filename [31m:[m [01;34mconstant[m [32mString[m [31m:=[m Home[31m.[m[01;34mall[m [31m&[m [31m"/.Adamanborg-out_file.txt"[m[31m;[m
      
   [01;34mbegin[m
      
      [01;30mSet_Command_Line[m[31m([mCommand[31m,[m Line[31m);[m
      
      Gnat[31m.[mCommand_Line[31m.[m[01;30mBuild[m[31m([mCommand[31m,[m Arguments_List[31m,[m False[31m);[m
      
      [01;34mif[m [01;30mArguments_List[m[31m([m[35m1[m[31m)[m [31m/=[m [01;34mnull[m [01;34mand[m [01;34mthen[m [01;30mArguments_List[m[31m([m[35m1[m[31m).[m[01;34mall[m [31m/=[m [31m""[m [01;34mthen[m
         
         
         [01;34mif[m Arguments_List'length [31m>[m [35m1[m [01;34mthen[m
            
            Buffer_Args [31m:=[m [01;34mnew[m [01;30mArgument_List[m[31m([m[35m1[m[31m..[mArguments_List'length [31m-[m [35m1[m[31m);[m
            
            [01;34mfor[m I [01;34min[m [35m1[m[31m..[mArguments_List'length [31m-[m [35m1[m [01;34mloop[m
	       
               [01;30mBuffer_Args[m[31m([mI[31m)[m [31m:=[m [01;34mnew[m [32mString[m ' [31m([m[01;30mNormalize_Quoted_argument[m[31m([m[01;30mArguments_List[m[31m([mI[31m+[m[35m1[m[31m).[m[01;34mall[m[31m));[m
	       
            [01;34mend[m [01;34mloop[m[31m;[m            
            
            Spawn_Result [31m:=[m [31m([m
                             Process_Id   [31m=>[m Invalid_Pid[31m,[m			  
                             Program_Name [31m=>[m [31m+[m[01;30mTo_Wide_String[m[31m([m[01;30mArguments_List[m[31m([m[35m1[m[31m).[m[01;34mall[m[31m),[m
                             Args          [31m=>[m Buffer_Args[31m,[m
                             Output_File  [31m=>[m [31m+[m[01;30mTo_Wide_String[m[31m([mOut_Filename[31m),[m
                             Success      [31m=>[m False[31m,[m
                             Return_Code  [31m=>[m [35m0[m[31m,[m
                             Err_To_Out   [31m=>[m True[31m,[m
                             File_content [31m=>[m [01;34mnull[m			    
                            [31m);[m
            
            
            
            
         [01;34melse[m
            
            
            Spawn_Result [31m:=[m [31m([m
                             Process_Id   [31m=>[m Invalid_Pid[31m,[m                             
                             Program_Name [31m=>[m [31m+[m[01;30mTo_Wide_String[m[31m([m[01;30mArguments_List[m[31m([m[35m1[m[31m).[m[01;34mall[m[31m),[m
                             Args          [31m=>[m [01;34mnew[m Argument_List  [31m' (1..0 => new String '[m [31m([m[31m""[m [31m&[m [32mCharacter[m'[01;30mVal[m[31m([m[35m0[m[31m))),[m
                             Output_File  [31m=>[m [31m+[m[01;30mTo_Wide_String[m[31m([mOut_Filename[31m),[m
                             Success      [31m=>[m False[31m,[m
                             Return_Code  [31m=>[m [35m0[m[31m,[m
                             Err_To_Out   [31m=>[m True[31m,[m
                             File_content [31m=>[m [01;34mnull[m
                               
                            [31m);[m
         [01;34mend[m [01;34mif[m[31m;[m
         
         
         
         [01;34mif[m [01;30mLocate_Exec_On_Path[m[31m([m[01;30mArguments_List[m[31m([m[35m1[m[31m).[m[01;34mall[m[31m)[m [31m/=[m [01;34mnull[m [01;34mthen[m
            Exec_Path [31m:=[m [01;34mnew[m [32mString[m ' [31m([m[01;30mLocate_Exec_On_Path[m[31m([m[01;30mArguments_List[m[31m([m[35m1[m[31m).[m[01;34mall[m[31m).[m[01;34mall[m[31m);[m         
                              

            [01;34mif[m [01;30mIs_Executable_File[m[31m([mExec_Path[31m.[m[01;34mall[m[31m)[m [01;34mthen[m                                             
               
               Spawn_Result[31m.[mProcess_Id [31m:=[m 
                 [01;30mNon_Blocking_Spawn[m[31m([mProgram_Name [31m=>[m Exec_Path[31m.[m[01;34mall[m[31m,[m
                                    Args         [31m=>[m Spawn_Result[31m.[mArgs[31m.[m[01;34mall[m[31m,[m                           
                                    Output_File  [31m=>[m [01;30mTo_String[m[31m(-[mSpawn_Result[31m.[mOutput_File[31m),[m
                                    Err_To_Out   [31m=>[m Spawn_Result[31m.[mErr_To_out
                                   [31m);[m
               
               [01;34mif[m Spawn_Result[31m.[mProcess_Id [31m/=[m Gnat[31m.[mOs_Lib[31m.[mInvalid_Pid [01;34mthen[m
                  
                  Gnat[31m.[mOs_Lib[31m.[m[01;30mWait_Process[m[31m([mSpawn_Result[31m.[mProcess_Id[31m,[m Spawn_Result[31m.[mSuccess[31m);[m
                  
               [01;34mend[m [01;34mif[m[31m;[m               
               
               Spawn_Result[31m.[mFile_Content [31m:=[m [01;34mnew[m [01;30mVariadic_Array[m[31m([m[35m1[m[31m..[m[35m1[m[31m);[m
               
               Wide_Text_Io[31m.[m[01;30mOpen[m[31m([mFile[31m,[m Wide_Text_Io[31m.[mIn_File[31m,[m [01;30mTo_String[m[31m(-[mSpawn_Result[31m.[mOutput_File[31m),[m Form [31m=>[m [31m"WCEM=8"[m[31m);[m

               [01;34mwhile[m [01;34mnot[m Wide_Text_Io[31m.[m[01;30mEnd_Of_File[m[31m([mFile[31m)[m [01;34mloop[m
		  [01;34mbegin[m
		     [01;34mdeclare[m
			
			Line [31m:[m [01;34mconstant[m [32mWide_String[m [31m:=[m Wide_Text_Io[31m.[m[01;30mGet_Line[m[31m([mFile[31m);[m
			Buffer [31m:[m Variadic_Access[31m;[m
		     [01;34mbegin[m
			[01;34mif[m Spawn_Result[31m.[mFile_Content [31m/=[m [01;34mnull[m [01;34mthen[m
			   
			   [01;34mif[m Initialized [01;34mthen[m
			      Buffer [31m:=[m [01;34mnew[m [01;30mVariadic_Array[m[31m([m[35m1[m[31m..([mSpawn_Result[31m.[mFile_Content'Length[31m)+[m[35m1[m[31m);[m
			      [01;30mBuffer[m[31m([mBuffer[31m'First..Buffer'[mLast[31m-[m[35m1[m[31m)[m [31m:=[m Spawn_Result[31m.[mFile_Content[31m.[m[01;34mall[m[31m;[m
			      [01;30mBuffer[m[31m([mBuffer'Last[31m)[m [31m:=[m [31m(+([mLine[31m));[m
			   [01;34melse[m
			      Buffer [31m:=[m [01;34mnew[m [01;30mVariadic_Array[m[31m([m[35m1[m[31m..[m[35m1[m[31m);[m
			      [01;30mBuffer[m[31m([mBuffer'Last[31m)[m [31m:=[m [31m(+([mLine[31m));[m
			      Initialized [31m:=[m True[31m;[m
			   [01;34mend[m [01;34mif[m[31m;[m

			   

			[01;34mend[m [01;34mif[m[31m;[m
			[01;30mFree[m[31m([mSpawn_Result[31m.[mFile_Content[31m);[m
			Spawn_Result[31m.[mFile_Content [31m:=[m [01;34mnew[m Variadic_Array ' [31m([mBuffer[31m.[m[01;34mall[m[31m);[m
			[01;30mFree[m[31m([mBuffer[31m);[m
			
		     [01;34mend[m[31m;[m
[31m--		  exception[m
[31m--		     when Constraint_Error =>[m
[31m--			null;[m
		  [01;34mend[m[31m;[m
               [01;34mend[m [01;34mloop[m[31m;[m
               
               Wide_Text_Io[31m.[m[01;30mClose[m[31m([mFile[31m);[m	 
               [01;30mDelete_File[m [31m([mName [31m=>[m [01;30mTo_String[m[31m((-[mSpawn_Result[31m.[mOutput_File[31m)),[m Success [31m=>[m deleted[31m);[m
               
               [01;34mif[m [01;34mnot[m Spawn_Result[31m.[mSuccess [01;34mthen[m      
                  Spawn_Result[31m.[mReturn_Code [31m:=[m Gnat[31m.[mOs_Lib[31m.[mErrno[31m;[m
               [01;34mend[m [01;34mif[m[31m;[m
            [01;34melse[m
               Spawn_Result[31m.[mFile_Content [31m:=[m [01;34mnew[m Variadic_Array ' [31m([m[35m1[m [31m=>[m [31m(+([m[01;30mTo_Wide_String[m[31m([m[01;30mArguments_List[m[31m([m[35m1[m[31m).[m[01;34mall[m[31m)[m [31m&[m [31m" : command not found."[m[31m)));[m               
               Spawn_Result[31m.[mReturn_Code [31m:=[m [35m127[m[31m;[m
            [01;34mend[m [01;34mif[m[31m;[m
         [01;34melse[m            
            Spawn_Result[31m.[mFile_Content [31m:=[m [01;34mnew[m Variadic_Array ' [31m([m[35m1[m [31m=>[m [31m(+([m[01;30mTo_Wide_String[m[31m([m[01;30mArguments_List[m[31m([m[35m1[m[31m).[m[01;34mall[m[31m)[m [31m&[m [31m" : command not found."[m[31m)));[m               
            Spawn_Result[31m.[mReturn_Code [31m:=[m [35m127[m[31m;[m
         [01;34mend[m [01;34mif[m[31m;[m         
      [01;34melse[m         
         Spawn_Result[31m.[mFile_Content [31m:=[m [01;34mnew[m Variadic_Array ' [31m([m[35m1[m [31m=>[m [31m(+([m[01;30mTo_Wide_String[m[31m([m[01;30mArguments_List[m[31m([m[35m1[m[31m).[m[01;34mall[m[31m)[m [31m&[m [31m" : command not found."[m[31m)));[m                        
         Spawn_Result[31m.[mReturn_Code [31m:=[m [35m127[m[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
      
      [01;34mreturn[m Spawn_Result[31m;[m
   [01;34mend[m Spawn[31m;[m    
[01;34mend[m Gnos[31m.[mResults[31m;[m

