|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 47104 (0xb800) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Library_Extensions, seg_02121b
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─⟦5a81ac88f⟧ »Space Info Vol 1« └─⟦this⟧
with Download_Times; with Extensions_Support; with Library; with Library_Interface; with Log; with Profile; with Remote_Command_Interface; with Remote_Links; with String_Utilities; with Utilities; package body Library_Extensions is package Du renames Utilities.Directory_Utilities; package Es renames Extensions_Support; package Li renames Library_Interface; package Naming renames Directory.Naming; package Rci renames Remote_Command_Interface; package Rsu renames Utilities.Rci_Switch_Utilities; package Ss renames Simple_Status; package Su renames String_Utilities; Debugging : Boolean := False; Target_Key : constant String := "I386_Unix_Als_Xt"; function "=" (L, R : Directory.Error_Status) return Boolean renames Directory."="; function "=" (L, R : Naming.Name_Status) return Boolean renames Naming."="; function Problem (Status : Ss.Condition; Trace_On : Boolean) return Boolean is begin if Ss.Error (Status => Status, Level => Ss.Problem) then if Debugging or else Trace_On then Log.Put_Line (Message => "~#" & Ss.Message (Status), Kind => Profile.Negative_Msg); end if; return True; end if; return False; end Problem; function Qt (Str : String) return String is begin return " => """ & Str & """"; end Qt; procedure Check (View_Object : Directory.Object; Caller : String; Remote_Machine : String; Remote_Directory : String; Host_Only : out Boolean; Status : in out Ss.Condition) is begin Host_Only := False; if Rsu.Is_Host_Only (View_Object) then Log.Put_Line (Message => "Not executing " & Caller & ". " & Naming.Get_Full_Name (View_Object) & " is a Host_Only view", Kind => Profile.Note_Msg); Host_Only := True; Ss.Initialize (Status); elsif Remote_Machine = "" then Log.Put_Line (Message => "Remote_Machine name for view " & Naming.Get_Full_Name (View_Object) & " is null", --[Kind => Profile.Warning_Msg);] Kind => Profile.Negative_Msg); Es.Set_Status (Message => "Insufficient remote machine information", Status => Status, --[Severity => Ss.Warning);] Severity => Ss.Fatal); elsif Remote_Directory = "" then Log.Put_Line (Message => "Remote_Directory name for view " & Naming.Get_Full_Name (View_Object) & " is null", --[Kind => Profile.Warning_Msg);] Kind => Profile.Negative_Msg); Es.Set_Status (Message => "Insufficient remote directory information", Status => Status, --[Severity => Ss.Warning);] Severity => Ss.Fatal); end if; end Check; procedure Delete_Links_Files (View_Obj : Directory.Object) is begin -- Delete the view's Remote_Links file. Library.Delete (Existing => Remote_Links.File_Name (View_Obj), Limit => "<DIRECTORIES>", Response => "<QUIET>"); -- Delete the view's Download_Times file. Library.Delete (Existing => Download_Times.Download_Times_File_Name (View_Obj), Limit => "<DIRECTORIES>", Response => "<QUIET>"); end Delete_Links_Files; procedure Set_Context (Old_Context : in out Naming.Context; View : String; Status : in out Ss.Condition) is Error_Status : Directory.Error_Status; New_Context : Naming.Context; Dir_Object : Directory.Object; Name_Status : Naming.Name_Status; begin Naming.Resolve (Name => View, The_Object => Dir_Object, Status => Name_Status); if Name_Status /= Naming.Successful then Es.Set_Status (Status => Status, Message => "Can't resolve " & View & ". Name Status = " & Naming.Name_Status'Image (Name_Status)); return; end if; -- Get the current naming context for Promote_Unit. Naming.Get_Context (The_Context => New_Context, The_Unit => Dir_Object, Status => Error_Status); if Error_Status /= Directory.Successful then Es.Set_Status (Status => Status, Message => "Can't get default context for " & View & ". Error Status = " & Directory.Error_Status'Image (Error_Status)); return; end if; -- Get the job's default naming context. Old_Context := Naming.Default_Context; -- We must restore this context (after any errors) before we return. -- Change the job's default context to the unit's current context. Naming.Set_Default_Context (The_Context => New_Context, Status => Error_Status); if Error_Status /= Directory.Successful then Es.Set_Status (Status => Status, Message => "Can't set default context to " & View & ". Error Status = " & Directory.Error_Status'Image (Error_Status)); return; end if; end Set_Context; procedure Reset_Context (Old_Context : Directory.Naming.Context) is Error_Status : Directory.Error_Status; begin -- Restore the job's original naming context. Naming.Set_Default_Context (The_Context => Old_Context, Status => Error_Status); if Error_Status /= Directory.Successful then Log.Put_Line ("Can't restore default context. Error Status = " & Directory.Error_Status'Image (Error_Status), Profile.Negative_Msg); end if; end Reset_Context; procedure Make_Path_Preprocess (Host_Path_Name : String; For_Release : Boolean; Remote_Machine : String; Remote_Directory : String; Remote_Program_Library : String; Status : in out Simple_Status.Condition) is Stripped_Machine : constant String := Su.Strip (From => Remote_Machine, Filler => ' '); Stripped_Directory : constant String := Su.Strip (From => Remote_Directory, Filler => ' '); begin Log.Put_Line (Message => "Make_Path_Preprocess (Host_Path_Name" & Qt (Host_Path_Name) & ", For_Release => " & Boolean'Image (For_Release) & ", Remote_Machine" & Qt (Remote_Machine) & ", Remote_Directory" & Qt (Remote_Directory) & ", Remote_Program_Library" & Qt (Remote_Program_Library) & ")", Kind => Profile.Sharp_Msg); if Stripped_Machine'Length = 0 then Log.Put_Line (Message => "Remote_Machine name for view " & Qt (Host_Path_Name) & " is null", Kind => Profile.Warning_Msg); Es.Set_Status (Message => "Insufficient remote machine information", Status => Status, Severity => Ss.Warning); elsif Stripped_Directory'Length = 0 then Log.Put_Line (Message => "Remote_Directory name for view " & Qt (Host_Path_Name) & " is null", Kind => Profile.Warning_Msg); Es.Set_Status (Message => "Insufficient remote directory information", Status => Status, Severity => Ss.Warning); end if; Log.Put_Line (Message => "Executing Make_Path_Preprocess", Kind => Profile.Note_Msg); -- Check whether we can obtain a valid family name from -- Remote_Directory. The view hasn't been created yet, so we can't -- look at its switches. Es.Check_Family (View_Obj => Directory.Nil, Remote_Machine => Remote_Machine, Remote_Directory => Remote_Directory, Status => Status); exception when others => Es.Unhandled_Exception (Status, "Make_Path_Preprocess"); end Make_Path_Preprocess; procedure Make_Path_Postprocess (Host_Path_Name : String; For_Release : Boolean; Remote_Machine : String; Remote_Directory : String; Remote_Program_Library : String; Status : in out Simple_Status.Condition) is View_Obj : Directory.Object := Du.Get_View (Host_Path_Name, Profile.Get); View_Name : constant String := Naming.Get_Full_Name (View_Obj); Stripped_Machine : constant String := Su.Strip (From => Remote_Machine, Filler => ' '); Stripped_Directory : constant String := Su.Strip (From => Remote_Directory, Filler => ' '); Old_Context : Directory.Naming.Context; Host_Only : Boolean; Trace_On : Boolean := Rsu.Trace_On (View_Obj); begin Log.Put_Line (Message => "Make_Path_Postprocess (Host_Path_Name" & Qt (Host_Path_Name) & ", For_Release => " & Boolean'Image (For_Release) & ", Remote_Machine" & Qt (Remote_Machine) & ", Remote_Directory" & Qt (Remote_Directory) & ", Remote_Program_Library" & Qt (Remote_Program_Library) & ")", Kind => Profile.Sharp_Msg); if Directory.Is_Nil (View_Obj) then return; end if; -- Delete any Remote_Links and Download_Times files that were copied -- during Cmvc.Make_Path. Delete_Links_Files (View_Obj); Check (View_Obj, "Make_Path_Postprocess", Stripped_Machine, Stripped_Directory, Host_Only, Status); if Host_Only or else Ss.Error (Status, Ss.Warning) then return; end if; Log.Put_Line (Message => "Executing Make_Path_Postprocess", Kind => Profile.Note_Msg); Set_Context (Old_Context => Old_Context, View => View_Name, Status => Status); if Problem (Status, Trace_On) then Es.Set_Status (Status => Status, Message => "Make_Path_Postprocess Failed"); return; end if; -- Check whether we can obtain a valid family name. Es.Check_Family (View_Obj => View_Obj, Remote_Machine => Remote_Machine, Remote_Directory => Remote_Directory, Status => Status); if Ss.Error (Status, Ss.Warning) then -- No sense continuing if the family name is bad. Reset_Context (Old_Context); return; end if; -- Any exceptions within Build_Libraries will be absorbed there. Es.Build_Libraries (View_Obj => View_Obj, Remote_Machine => Stripped_Machine, Remote_Directory => Stripped_Directory, Remote_Program_Library => Remote_Program_Library, Status => Status, Trace_Command => Trace_On); Reset_Context (Old_Context); exception when others => Es.Unhandled_Exception (Status, "Make_Path_PostProcess"); end Make_Path_Postprocess; procedure Destroy_View_Preprocess (Host_Path_Name : String; Status : in out Simple_Status.Condition) is View_Obj : Directory.Object := Du.Get_View (Host_Path_Name, Profile.Get); View_Name : constant String := Naming.Get_Full_Name (View_Obj); Machine_Result : constant Li.String_Result := Li.Remote_Machine (View => View_Name); Remote_Machine : constant String := Machine_Result.Result; Directory_Result : constant Li.String_Result := Li.Remote_Directory (View => View_Name); View_Directory : constant String := Directory_Result.Result; Remote_Connection : Rci.Context; Old_Context : Naming.Context; Local_Status : Ss.Condition; Host_Only : Boolean; Trace_On : Boolean := Rsu.Trace_On (View_Obj); begin Log.Put_Line (Message => "Destroy_View_Preprocess (Host_Path_Name" & Qt (Host_Path_Name) & ")", Kind => Profile.Sharp_Msg); if Directory.Is_Nil (View_Obj) then return; end if; if Problem (Machine_Result.Condition, Trace_On) then Es.Set_Status ("Can't get remote machine name for view " & View_Name, Status); return; elsif Problem (Directory_Result.Condition, Trace_On) then Es.Set_Status ("Can't get remote directory name for view " & View_Name, Status); return; end if; Check (View_Obj, "Destroy_View_Preprocess", Remote_Machine, View_Directory, Host_Only, Status); if Host_Only or else Ss.Error (Status, Ss.Warning) then return; end if; Log.Put_Line (Message => "Executing Destroy_View_Preprocess", Kind => Profile.Note_Msg); Set_Context (Old_Context => Old_Context, View => View_Name, Status => Status); if Problem (Status, Trace_On) then Es.Set_Status ("Destroy_View_Preprocess failed", Status); return; end if; -- Acquire a remote connection to the target. Rci.Acquire (Remote_Connection => Remote_Connection, Status => Status, Target_Key => Target_Key, -- Set_Directory => "cd " & View_Directory, Remote_Machine => Remote_Machine, Trace_Command => Trace_On); if Problem (Status, Trace_On) then Es.Set_Status (Status => Status, Message => "Can't acquire connection to " & Remote_Machine); Reset_Context (Old_Context); return; end if; -- Any exceptions within Destroy_Library will be absorbed there. Es.Destroy_Library (Host_View => View_Obj, Remote_Directory => View_Directory, Remote_Connection => Remote_Connection, Status => Status, Trace_Command => Trace_On); if Problem (Status, Trace_On) then Es.Set_Status (Status => Status, Message => "Can't destroy the remote library for " & View_Name); else if Debugging or else Trace_On then Log.Put_Line (Message => "~#Setting the Rci.Remote_Directory switch " & "for view " & View_Name & " to null", Kind => Profile.Note_Msg); end if; -- ***** This should really be in Destroy_View_Postprocess, but -- ***** the RCI doesn't call that extension. -- Delete the remote directory name from the switch file. Li.Set_Remote_Directory (View => View_Name, Value => "", Condition => Status); end if; -- Delete the view's Remote_Links and Download_Times files. Delete_Links_Files (View_Obj); Reset_Context (Old_Context); exception when others => Es.Unhandled_Exception (Status, "Destroy_View_Preprocess"); begin Reset_Context (Old_Context); exception when others => null; end; end Destroy_View_Preprocess; procedure Destroy_View_Postprocess (Host_Path_Name : String; Remote_Machine : String; -- new Remote_Directory : String; -- new Status : in out Simple_Status.Condition) is begin Log.Put_Line (Message => "Destroy_View_Postprocess (Host_Path_Name" & Qt (Host_Path_Name) & ")", Kind => Profile.Sharp_Msg); Log.Put_Line (Message => "Executing Destroy_View_Postprocess", Kind => Profile.Note_Msg); exception when others => Es.Unhandled_Exception (Status, "Destroy_View_Postprocess"); end Destroy_View_Postprocess; procedure Import_Preprocess (Views_To_Import : Directory.Naming.Iterator; Into_View : String; Status : in out Simple_Status.Condition) is begin Log.Put_Line (Message => "Import_Preprocess (Into_View" & Qt (Into_View) & ")", Kind => Profile.Sharp_Msg); Log.Put_Line (Message => "Executing Import_Preprocess", Kind => Profile.Note_Msg); Ss.Initialize (Status); exception when others => Es.Unhandled_Exception (Status, "Import_Preprocess"); end Import_Preprocess; procedure Import_Postprocess (Views_To_Import : Directory.Naming.Iterator; Into_View : String; Status : in out Simple_Status.Condition) is View_Obj : Directory.Object := Du.Get_View (Into_View, Profile.Get); View_Name : constant String := Naming.Get_Full_Name (View_Obj); Imported_Views : Naming.Iterator := Views_To_Import; Machine_Result : constant Li.String_Result := Li.Remote_Machine (View => View_Name); Directory_Result : constant Li.String_Result := Li.Remote_Directory (View => View_Name); Remote_Machine : constant String := Machine_Result.Result; Remote_Directory : constant String := Directory_Result.Result; Old_Context : Directory.Naming.Context; Host_Only : Boolean; Count : Natural := 0; E_Status : Directory.Error_Status; Import_Obj : Directory.Object; Trace_On : Boolean := Rsu.Trace_On (View_Obj); begin if Directory.Is_Nil (View_Obj) or else Naming.Done (Views_To_Import) then Log.Put_Line (Message => "Import_Postprocess (First_Imported_View" & " => null, Into_View" & Qt (Into_View) & ")", Kind => Profile.Sharp_Msg); return; else Log.Put_Line (Message => "Import_Postprocess (First_Imported_View" & Qt (Naming.Source_Name (Imported_Views)) & ", Into_View" & Qt (Into_View) & ")", Kind => Profile.Sharp_Msg); end if; if Problem (Machine_Result.Condition, Trace_On) then Es.Set_Status ("Can't get remote machine name for view " & View_Name, Status); return; elsif Problem (Directory_Result.Condition, Trace_On) then Es.Set_Status ("Can't get remote directory name for view " & View_Name, Status); return; end if; Check (View_Obj, "Import_Postprocess", Remote_Machine, Remote_Directory, Host_Only, Status); if Host_Only or else Ss.Error (Status, Ss.Warning) then return; end if; Naming.Get_Object (Imported_Views, Import_Obj, E_Status); if E_Status /= Directory.Successful then Log.Put_Line ("Can't get first imported view. Error Status = " & Directory.Error_Status'Image (E_Status), Profile.Warning_Msg); Log.Put_Line ("Executing Import_Postprocess", Profile.Note_Msg); else Log.Put_Line ("Executing Import_Postprocess. First imported view" & Qt (Naming.Get_Full_Name (Import_Obj)), Profile.Note_Msg); end if; Set_Context (Old_Context => Old_Context, View => View_Name, Status => Status); if Problem (Status, Trace_On) then Es.Set_Status ("Import_Postprocess failed", Status); return; end if; if Debugging or else Trace_On then -- Display all of the imported views. while not Naming.Done (Imported_Views) loop Count := Count + 1; Naming.Get_Object (Imported_Views, Import_Obj, E_Status); if E_Status /= Directory.Successful then Log.Put_Line ("Can't get imported view" & Integer'Image (Count) & " from iterator. Error Status = " & Directory.Error_Status'Image (E_Status), Profile.Warning_Msg); exit; end if; Log.Put_Line ("~#Imported_view" & Integer'Image (Count) & Qt (Naming.Get_Full_Name (Import_Obj)), Profile.Note_Msg); Naming.Next (Imported_Views); end loop; Naming.Reset (Imported_Views); end if; -- Any exceptions within Perform_Remote_Import will be absorbed there. Es.Perform_Remote_Import (Host_View => View_Name, Views_To_Import => Views_To_Import, Remote_Machine => Remote_Machine, Status => Status, Trace_Command => Trace_On); Reset_Context (Old_Context); exception when others => Es.Unhandled_Exception (Status, "Import_Postprocess"); end Import_Postprocess; procedure Remove_Import_Preprocess (View_To_Remove : Directory.Object; From_View : String; Status : in out Simple_Status.Condition) is begin Log.Put_Line (Message => "Remove_Import_Preprocess (View_To_Remove => " & Naming.Get_Full_Name (View_To_Remove) & ", From_View" & Qt (From_View) & ")", Kind => Profile.Sharp_Msg); Log.Put_Line (Message => "Executing Remove_Import_Preprocess", Kind => Profile.Note_Msg); Ss.Initialize (Status); exception when others => Es.Unhandled_Exception (Status, "Remove_Import_Preprocess"); end Remove_Import_Preprocess; procedure Remove_Import_Postprocess (View_To_Remove : Directory.Object; From_View : String; Status : in out Simple_Status.Condition) is View_Obj : Directory.Object := Du.Get_View (From_View, Profile.Get); View_Name : constant String := Naming.Get_Full_Name (View_Obj); Remote_Machine_Result : constant Li.String_Result := Li.Remote_Machine (View => View_Name); Remote_Directory_Result : constant Li.String_Result := Li.Remote_Directory (View => View_Name); Remote_Machine : constant String := Remote_Machine_Result.Result; Remote_Directory : constant String := Remote_Directory_Result.Result; Old_Context : Naming.Context; Host_Only : Boolean; Remote_Connection : Rci.Context; Trace_On : Boolean := Rsu.Trace_On (View_Obj); begin Log.Put_Line (Message => "Remove_Import_Postprocess (View_To_Remove => " & Naming.Get_Full_Name (View_To_Remove) & ", From_View" & Qt (From_View) & ")", Kind => Profile.Sharp_Msg); if Problem (Remote_Machine_Result.Condition, Trace_On) then Es.Set_Status ("Can't get remote machine name for view " & View_Name, Status); return; elsif Problem (Remote_Directory_Result.Condition, Trace_On) then Es.Set_Status ("Can't get remote directory name for view " & View_Name, Status); return; end if; Check (View_Obj, "Remove_Import_Postprocess", Remote_Machine, Remote_Directory, Host_Only, Status); if Host_Only or else Ss.Error (Status, Ss.Warning) then return; end if; Log.Put_Line (Message => "Executing Remove_Import_Postprocess", Kind => Profile.Note_Msg); Set_Context (Old_Context => Old_Context, View => View_Name, Status => Status); if Problem (Status, Trace_On) then Es.Set_Status ("Remove_Import_Postprocess failed", Status); return; end if; -- Remove View_To_Remove as a remote import of From_View on the -- Remote_Machine. Note that Remote_Connection is undefined, but it -- won't be used, no matter what it is. Es.Remove_Remote_Import (View_To_Remove => View_To_Remove, From_View => From_View, Remote_Machine => Remote_Machine, Remote_Directory => Remote_Directory, Remote_Connection => Remote_Connection, Destroying_Library => False, Status => Status, Trace_Command => Trace_On); Reset_Context (Old_Context); exception when others => Es.Unhandled_Exception (Status, "Remove_Import_Postprocess"); end Remove_Import_Postprocess; procedure Release_Preprocess (From_Working_View : String; Released_View : String; Remote_Machine : String; Remote_Directory : String; Remote_Program_Library : String; Status : in out Simple_Status.Condition) is begin Log.Put_Line (Message => "Release_Preprocess (From_Working_View" & Qt (From_Working_View) & ", Released_View" & Qt (Released_View) & ", Remote_Machine" & Qt (Remote_Machine) & ", Remote_Directory" & Qt (Remote_Directory) & ", Remote_Program_Library" & Qt (Remote_Program_Library) & ")", Kind => Profile.Sharp_Msg); Log.Put_Line (Message => "Executing Release_Preprocess", Kind => Profile.Note_Msg); Ss.Initialize (Status); exception when others => Es.Unhandled_Exception (Status, "Release_Preprocess"); end Release_Preprocess; procedure Release_Postprocess (View_To_Remove : String; Released_View : String; Remote_Machine : String; Remote_Directory : String; Remote_Program_Library : String; Status : in out Simple_Status.Condition) is begin Log.Put_Line (Message => "Release_Postprocess (View_To_Remove" & Qt (View_To_Remove) & ", Released_View" & Qt (Released_View) & ", Remote_Machine" & Qt (Remote_Machine) & ", Remote_Directory" & Qt (Remote_Directory) & ", Remote_Program_Library" & Qt (Remote_Program_Library) & ")", Kind => Profile.Sharp_Msg); Log.Put_Line (Message => "Executing Release_Postprocess", Kind => Profile.Note_Msg); Ss.Initialize (Status); exception when others => Es.Unhandled_Exception (Status, "Release_Postprocess"); end Release_Postprocess; procedure Link_Preprocess (Main_Unit : String; Executable_Name : String; Status : in out Simple_Status.Condition) is Simple_Name : constant String := Naming.Get_Simple_Name (Main_Unit); begin Log.Put_Line (Message => "Link_Preprocess (Main_Unit" & Qt (Main_Unit) & ", Executable_Name" & Qt (Executable_Name) & ")", Kind => Profile.Sharp_Msg); Log.Put_Line (Message => "Executing Link_Preprocess", Kind => Profile.Note_Msg); Ss.Initialize (Status); if Executable_Name'Length > 14 then Log.Put_Line (Message => "The Alsys linker won't allow " & "the executable name """ & Executable_Name & """, which exceeds 14 characters, " & "so this attempt to Link """ & Main_Unit & """ will probably fail. " & "Verify that the 'bind' operation " & "has failed on the remote machine, and then " & "re-run Rci.Link with a shorter Executable_Name", Kind => Profile.Warning_Msg); elsif Executable_Name'Length = 0 and then Simple_Name'Length > 10 then Log.Put_Line (Message => "The Alsys linker will truncate the unit name """ & Simple_Name & """ to 10 characters (""" & Simple_Name (Simple_Name'First .. Simple_Name'First + 9) & """) for naming its remote files. " & "The RCI will then rename the generated " & "files to the unit name", Kind => Profile.Warning_Msg); end if; exception when others => Es.Unhandled_Exception (Status, "Link_Preprocess"); end Link_Preprocess; procedure Link_Postprocess (Main_Unit : String; Executable_Name : String; Status : in out Simple_Status.Condition) is View_Obj : Directory.Object := Du.Get_View (Main_Unit, Profile.Get); View_Name : constant String := Naming.Get_Full_Name (View_Obj); Remote_Directory_Result : constant Li.String_Result := Li.Remote_Directory (View_Name); Remote_Machine_Result : constant Li.String_Result := Li.Remote_Machine (View_Name); Remote_Directory : constant String := Remote_Directory_Result.Result; Remote_Machine : constant String := Remote_Machine_Result.Result; Old_Context : Naming.Context; Host_Only : Boolean; Trace_On : Boolean := Rsu.Trace_On (View_Obj); begin Log.Put_Line (Message => "Link_Postprocess (Main_Unit" & Qt (Main_Unit) & ", Executable_Name" & Qt (Executable_Name) & ")", Kind => Profile.Sharp_Msg); if Directory.Is_Nil (View_Obj) then return; end if; if Problem (Remote_Machine_Result.Condition, Trace_On) then Es.Set_Status ("Can't get remote machine name for view " & View_Name, Status); return; elsif Problem (Remote_Directory_Result.Condition, Trace_On) then Es.Set_Status ("Can't get remote directory name for view " & View_Name, Status); return; end if; Check (View_Obj, "Link_Postprocess", Remote_Machine, Remote_Directory, Host_Only, Status); if Host_Only or else Ss.Error (Status, Ss.Warning) then return; end if; Log.Put_Line (Message => "Executing Link_Postprocess", Kind => Profile.Note_Msg); Set_Context (Old_Context => Old_Context, View => View_Name, Status => Status); if Problem (Status, Trace_On) then Es.Set_Status (Status => Status, Message => "Link_Postprocess Failed"); return; end if; -- Any exceptions within Retrieve_Files will be absorbed there. Es.Retrieve_Files (Main_Unit => Main_Unit, Executable_Name => Executable_Name, Enclosing_View_Name => View_Name, Remote_Machine => Remote_Machine, Remote_Directory => Remote_Directory, Status => Status, Trace_Command => Trace_On); Reset_Context (Old_Context); exception when others => Es.Unhandled_Exception (Status, "Link_Postprocess"); end Link_Postprocess; end Library_Extensions;
nblk1=2d nid=0 hdr6=5a [0x00] rec0=22 rec1=00 rec2=01 rec3=004 [0x01] rec0=00 rec1=00 rec2=2d rec3=034 [0x02] rec0=20 rec1=00 rec2=02 rec3=04c [0x03] rec0=16 rec1=00 rec2=03 rec3=008 [0x04] rec0=16 rec1=00 rec2=04 rec3=02a [0x05] rec0=19 rec1=00 rec2=05 rec3=002 [0x06] rec0=00 rec1=00 rec2=2c rec3=008 [0x07] rec0=15 rec1=00 rec2=06 rec3=098 [0x08] rec0=19 rec1=00 rec2=07 rec3=014 [0x09] rec0=16 rec1=00 rec2=08 rec3=042 [0x0a] rec0=00 rec1=00 rec2=2b rec3=004 [0x0b] rec0=11 rec1=00 rec2=09 rec3=06c [0x0c] rec0=16 rec1=00 rec2=0a rec3=02c [0x0d] rec0=17 rec1=00 rec2=0b rec3=02e [0x0e] rec0=00 rec1=00 rec2=29 rec3=00c [0x0f] rec0=17 rec1=00 rec2=0c rec3=070 [0x10] rec0=1a rec1=00 rec2=0d rec3=022 [0x11] rec0=19 rec1=00 rec2=0e rec3=032 [0x12] rec0=1b rec1=00 rec2=2a rec3=064 [0x13] rec0=01 rec1=00 rec2=0f rec3=01e [0x14] rec0=1d rec1=00 rec2=10 rec3=026 [0x15] rec0=19 rec1=00 rec2=11 rec3=070 [0x16] rec0=15 rec1=00 rec2=12 rec3=06e [0x17] rec0=1f rec1=00 rec2=13 rec3=058 [0x18] rec0=1c rec1=00 rec2=14 rec3=05a [0x19] rec0=1a rec1=00 rec2=15 rec3=026 [0x1a] rec0=00 rec1=00 rec2=28 rec3=01a [0x1b] rec0=17 rec1=00 rec2=16 rec3=082 [0x1c] rec0=1c rec1=00 rec2=17 rec3=09c [0x1d] rec0=19 rec1=00 rec2=18 rec3=050 [0x1e] rec0=1a rec1=00 rec2=19 rec3=022 [0x1f] rec0=1b rec1=00 rec2=1a rec3=054 [0x20] rec0=19 rec1=00 rec2=1b rec3=024 [0x21] rec0=00 rec1=00 rec2=27 rec3=010 [0x22] rec0=1c rec1=00 rec2=1c rec3=040 [0x23] rec0=13 rec1=00 rec2=1d rec3=050 [0x24] rec0=16 rec1=00 rec2=1e rec3=086 [0x25] rec0=19 rec1=00 rec2=1f rec3=01a [0x26] rec0=1a rec1=00 rec2=20 rec3=002 [0x27] rec0=14 rec1=00 rec2=21 rec3=03a [0x28] rec0=14 rec1=00 rec2=22 rec3=096 [0x29] rec0=1c rec1=00 rec2=23 rec3=014 [0x2a] rec0=00 rec1=00 rec2=26 rec3=010 [0x2b] rec0=1d rec1=00 rec2=24 rec3=03a [0x2c] rec0=16 rec1=00 rec2=25 rec3=000 tail 0x2151cb132838d6b97cf31 0x42a00088462065003