[31m-- aish is another attempt of A. i. written with Ada.[m
[31m-- Aish is Copyright (C) 2024 Manuel De Girardi ; [m
[31m--[m
[31m--   This program is free software; you can redistribute it and/or modify[m
[31m--   it under the terms of the GNU General Public License as published by[m
[31m--   the Free Software Foundation; either version 2 of the License, or[m
[31m--   (at your option) any later version.[m
[31m--[m
[31m--   This program is distributed in the hope that it will be useful,[m
[31m--   but WITHOUT ANY WARRANTY; without even the implied warranty of[m
[31m--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the[m
[31m--   GNU General Public License for more details.[m
[31m--[m
[31m--   You should have received a copy of the GNU General Public License[m
[31m--   along with this program; if not, write to the Free Software[m
[31m--   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA[m
[31m--[m
[31m-- Date := "2024-04-29 20:25:34"[m
[31m-- Version := "1.1.0r"[m

[01;34mwith[m Gnat[31m.[mOs_Lib[31m;[m
[01;34mwith[m Ada[31m.[mStrings[31m.[mWide_Unbounded[31m;[m
[01;34mwith[m Ada[31m.[mUnchecked_Deallocation[31m;[m

[01;34mpackage[m Ai[31m.[mShell [01;34mis[m
   
   [01;34muse[m Gnat[31m.[mOs_Lib[31m;[m   
   [01;34muse[m Ada[31m.[mStrings[31m;[m

   [01;34mfunction[m [01;30mInternal_Cmd_Value[m [31m([mLine [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mreturn[m Int_Cmd_Enum[31m;[m
   
   [01;34mfunction[m [01;30mCommand_Name[m [31m([mLine [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mreturn[m [32mString[m[31m;[m
   
   
   [01;34mtype[m Wide_String_Access [01;34mis[m [01;34maccess[m [01;34mall[m [32mWide_String[m[31m;[m
   [01;34mprocedure[m Wide_Free [01;34mis[m [01;34mnew[m Ada[31m.[m[01;30mUnchecked_Deallocation[m [31m([m[32mWide_String[m[31m,[m Wide_String_Access[31m);[m
   
   [01;34msubtype[m U_String [01;34mis[m Ada[31m.[mStrings[31m.[mWide_Unbounded[31m.[mUnbounded_Wide_String[31m;[m
   [01;34muse[m [01;34mtype[m U_String[31m;[m
   
   [01;34mfunction[m [31m"+"[m[31m([mS[31m:[m [32mWide_String[m[31m)[m [01;34mreturn[m U_String
     [01;34mrenames[m Ada[31m.[mStrings[31m.[mWide_Unbounded[31m.[mTo_Unbounded_Wide_String[31m;[m
 
   [01;34mfunction[m [31m"-"[m[31m([mU[31m:[m U_String[31m)[m [01;34mreturn[m [32mWide_String[m
     [01;34mrenames[m Ada[31m.[mStrings[31m.[mWide_Unbounded[31m.[mTo_Wide_String[31m;[m
 
   [01;34mtype[m U_Array [01;34mis[m [01;34marray[m[31m([mPositive [01;34mrange[m [31m<>)[m [01;34mof[m U_String[31m;[m
   
   [01;34mtype[m U_array_Access [01;34mis[m [01;34maccess[m U_Array[31m;[m
   
   [01;34mprocedure[m U_array_Free [01;34mis[m [01;34mnew[m Ada[31m.[mUnchecked_Deallocation 
     [31m([mU_Array[31m,[m U_Array_Access[31m);[m
   
   
   [01;34mtype[m Result_Enum [01;34mis[m [31m([mFile[31m,[m Search[31m,[m Spawn[31m);[m
   
   [01;34mtype[m [01;30mResult_Record[m [31m([mName [31m:[m Result_Enum[31m)[m [01;34mis[m [01;34mtagged[m
      [01;34mrecord[m
	 Wlines [31m:[m U_Array_Access[31m;[m
	 Count  [31m:[m Natural [31m:=[m [35m0[m[31m;[m
	 Initialized [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
	 [01;34mcase[m Name [01;34mis[m
	    [01;34mwhen[m File [31m=>[m
	       [01;34mnull[m[31m;[m
	    [01;34mwhen[m Search [31m=>[m
	       Pattern   [31m:[m Wide_String_Access [31m:=[m [01;34mnew[m [32mWide_String[m ' [31m([m[31m""[m[31m);[m
	       Address   [31m:[m String_Access[31m;[m
	       Doc_Name  [31m:[m Wide_String_Access[31m;[m
	    [01;34mwhen[m Spawn [31m=>[m
	       Process_Id     [31m:[m Gnat[31m.[mOs_Lib[31m.[mProcess_Id[31m;[m
	       Program_Name   [31m:[m U_String[31m;[m
	       Args           [31m:[m Argument_List_Access[31m;[m	 
	       Output_File    [31m:[m U_String[31m;[m
	       Success        [31m:[m [32mBoolean[m [31m:=[m False[31m;[m
	       Return_Code    [31m:[m [32mInteger[m [31m:=[m [35m0[m[31m;[m
	       Err_To_Out     [31m:[m [32mBoolean[m [31m:=[m False[31m;[m	 
	 [01;34mend[m [01;34mcase[m[31m;[m
	 
      [01;34mend[m [01;34mrecord[m[31m;[m   
            
   [01;34mtype[m Wide_Result_Access [01;34mis[m [01;34maccess[m [01;34mall[m Result_Record'Class[31m;[m
   
   [01;34mprocedure[m Wide_Result_Free [01;34mis[m [01;34mnew[m Ada[31m.[m[01;30mUnchecked_Deallocation[m[31m([mResult_Record'Class[31m,[m Wide_Result_Access[31m);[m
   
   [01;34mtype[m Spawn_Result_Record [01;34mis[m [01;34mnew[m [01;30mResult_Record[m[31m([mSpawn[31m)[m [01;34mwith[m [01;34mnull[m [01;34mrecord[m[31m;[m
   [01;34mtype[m File_Result_Record [01;34mis[m [01;34mnew[m [01;30mResult_Record[m[31m([mFile[31m)[m [01;34mwith[m [01;34mnull[m [01;34mrecord[m[31m;[m
   [01;34mtype[m Search_Result_Record [01;34mis[m [01;34mnew[m [01;30mResult_Record[m[31m([mSearch[31m)[m [01;34mwith[m [01;34mnull[m [01;34mrecord[m[31m;[m

   
   [01;34mfunction[m [01;30mDelete_Local_Prefix[m[31m([mFilename [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mreturn[m [32mString[m[31m;[m
   [01;34mfunction[m [01;30mNormalize_Quoted_Argument[m[31m([mArg [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mreturn[m [32mString[m[31m;[m
   [01;34mfunction[m [01;30mSearch_Regexp[m [31m([mPath [31m:[m [01;34min[m [32mString[m[31m;[m
                           Pattern [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mreturn[m [32mString[m[31m;[m
   [01;34mfunction[m [01;30mExpand_filename[m [31m([mLine [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mreturn[m [32mString[m[31m;[m
   [01;34mprocedure[m [01;30mChange_directory[m [31m([mLine [31m:[m [01;34min[m [32mString[m[31m;[mOld_Pwd [31m:[m [01;34min[m [01;34mout[m String_Access[31m);[m
   [01;34mprocedure[m [01;30mFind_At_Path[m [31m([mPath [31m:[m [01;34min[m [32mString[m[31m;[m
			   Pattern [31m:[m [01;34min[m [32mString[m[31m;[m
			   Result [31m:[m [01;34min[m Wide_Result_Access[31m);[m
   [01;34mprocedure[m [01;30mCompletion[m [31m([mLine [31m:[m [01;34min[m [32mString[m[31m;[m
			 Full_Command [31m:[m [01;34mout[m Wide_String_Access[31m;[m
			 Result [31m:[m [01;34mout[m Wide_Result_Access[31m);[m
   
   [01;34mtype[m All_Types [01;34mis[m [01;34mtagged[m
      [01;34mrecord[m
	 Boo  [31m:[m [32mBoolean[m[31m;[m
	 Int  [31m:[m [32mInteger[m[31m;[m
	 Flt  [31m:[m [32mFloat[m[31m;[m	    
	 Str  [31m:[m String_Access[31m;[m	    
      [01;34mend[m [01;34mrecord[m[31m;[m
   
   [01;34mtype[m attribut_Enum [01;34mis[m [31m([mNil[31m,[m Boo[31m,[m Int[31m,[m Flt[31m,[m Str[31m);[m
   
   [01;34mtype[m Attribut_Record [01;34mis[m [01;34mnew[m All_Types [01;34mwith[m
      [01;34mrecord[m
	 Tags  [31m:[m String_Access[31m;[m
	 Value [31m:[m String_Access[31m;[m
	 Enum  [31m:[m Attribut_Enum[31m;[m
      [01;34mend[m [01;34mrecord[m[31m;[m            
   
   
   
   [01;34mtype[m Attribut_Array [01;34mis[m [01;34marray[m [31m([mPositive [01;34mrange[m [31m<>)[m [01;34mof[m Attribut_Record[31m;[m
   
   [01;34mtype[m [01;30mAttributs[m [31m([mMax [31m:[m Positive[31m)[m [01;34mis[m
      [01;34mrecord[m
	 List [31m:[m [01;30mAttribut_Array[m[31m([m[35m1[m[31m..[mMax[31m);[m
	 Index [31m:[m Natural [31m:=[m [35m0[m[31m;[m
      [01;34mend[m [01;34mrecord[m[31m;[m

   [01;34mprocedure[m [01;30mParse[m [31m([mLine [31m:[m [01;34min[m [32mString[m[31m;[m Name [31m:[m [01;34mout[m String_Access[31m;[m Image [31m:[m [01;34mout[m String_Access[31m);[m
   
   [01;34mfunction[m [01;30mMake[m [31m([mNames [31m:[m [01;34min[m [32mString[m[31m;[m Value [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mreturn[m Attribut_Record[31m;[m
   [01;34mfunction[m [01;30mnames[m [31m([mAtt [31m:[m [01;34min[m Attribut_Record[31m)[m [01;34mreturn[m [32mString[m[31m;[m
   [01;34mfunction[m [01;30mimages[m [31m([mAtt [31m:[m [01;34min[m Attribut_Record[31m)[m [01;34mreturn[m [32mString[m[31m;[m
   
   
   [01;34mprocedure[m [01;30mAlias[m [31m([mLine [31m:[m [01;34min[m [32mString[m[31m;[m Alias_Set [31m:[m [01;34min[m [01;34mout[m Attributs[31m);[m
   [01;34mprocedure[m [01;30mUnalias[m [31m([mLine [31m:[m [01;34min[m [32mString[m[31m;[m Alias_Set [31m:[m [01;34min[m [01;34mout[m Attributs[31m);[m
   
   [01;34mprocedure[m [01;30mSet[m [31m([mLine [31m:[m [01;34min[m [32mString[m[31m;[m Var_Set [31m:[m [01;34min[m [01;34mout[m Attributs[31m);[m
   [01;34mprocedure[m [01;30mUnset[m [31m([mLine [31m:[m [01;34min[m [32mString[m[31m;[m Var_Set [31m:[m [01;34min[m [01;34mout[m Attributs[31m);[m
   
   [01;34mprocedure[m [01;30mPut[m[31m([mName [31m:[m [01;34min[m [32mString[m[31m;[m  Var_Set [31m:[m [01;34min[m [01;34mout[m Attributs[31m);[m
   
   [01;34mprocedure[m [01;30mPut_Line[m[31m([mName [31m:[m [01;34min[m [32mString[m[31m;[m  Var_Set [31m:[m [01;34min[m [01;34mout[m Attributs[31m);[m
   
   [01;34msubtype[m Line_Index_Range [01;34mis[m Natural [01;34mrange[m [35m0[m[31m..[m[35m132072[m[31m;[m
   [01;34mtype[m Wide_String_Array [01;34mis[m [01;34marray[m [31m([mLine_Index_Range [01;34mrange[m [31m<>)[m [01;34mof[m Wide_String_Access[31m;[m
   [01;34mtype[m [01;30mWide_String_Set[m [31m([mLines_Max [31m:[m Line_Index_Range[31m)[m [01;34mis[m [01;34mtagged[m
      [01;34mrecord[m
	 Lines [31m:[m [01;30mWide_String_Array[m[31m([m[35m1[m[31m..[mLines_Max[31m);[m
	 Line_Last [31m:[m Natural [31m:=[m [35m0[m[31m;[m	     
      [01;34mend[m [01;34mrecord[m[31m;[m   
   
   [01;34mprocedure[m [01;30mAdd_Line[m [31m([mSet [31m:[m [01;34min[m [01;34mout[m Wide_String_Set[31m;[m
		       Last [31m:[m [01;34min[m [01;34mout[m Line_Index_Range[31m;[m
		       Line [31m:[m [01;34min[m [32mWide_String[m[31m);[m
   [01;34mprocedure[m [01;30mSet_Free[m[31m([mSet [31m:[m [01;34min[m [01;34mout[m Wide_String_Set[31m);[m
   
   
   
[01;34mend[m Ai[31m.[mShell [31m;[m 
