DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ B T

⟦028181945⟧ TextFile

    Length: 4905 (0x1329)
    Types: TextFile
    Names: »B«

Derivation

└─⟦407de186f⟧ Bits:30000749 8mm tape, Rational 1000, RCFSUN
    └─ ⟦e5cd75ab4⟧ »DATA« 
        └─⟦this⟧ 

TextFile

separate (Library_Extensions)
procedure Link_Postprocess (Main_Unit : String;
                            Executable_Name : String;
                            Status : in out Simple_Status.Condition) is

    Main : Dt.Object.Handle := Dt.Naming.Resolution (Main_Unit);
    Main_Full_Name : constant String := Dt.Naming.Full_Name (Main);
    Main_Simple_Name : constant String :=
       Su.Lower_Case (Dt.Naming.Simple_Name (Main));
    Host_Exe_Name : constant String := Main_Full_Name & "'body" & ".<Exe>";
    Host_Bind_Name : constant String := Main_Full_Name & "'body" & ".<bnd>";
    Host_Cui_Name : constant String := Main_Full_Name & "'body" & ".<Cui>";
    Name_Length : Natural;
    Final_Name_Length : Natural;

    Enclosing_View : Dt.Object.Handle := Dt.Traversal.Enclosing_World (Main);
    Enclosing_View_Name : constant String :=
       Dt.Naming.Full_Name (Enclosing_View);
    Remote_Directory_Result : constant Library_Interface.String_Result :=
       Library_Interface.Remote_Directory (Enclosing_View_Name);
    Remote_Machine_Result : constant Library_Interface.String_Result :=
       Library_Interface.Remote_Machine (Enclosing_View_Name);
    Remote_Directory : constant String :=
       Remote_Directory_Result.Result (1 .. Remote_Directory_Result.Size);
    Remote_Machine : constant String :=
       Remote_Machine_Result.Result (1 .. Remote_Machine_Result.Size);

    function Is_True (For_Switch : Switches.Switch) return Boolean is
        package Pio renames Polymorphic_Io;
        package Si renames Switch_Implementation;
        Switch_Handle : Pio.Handle;
        Pio_Status : Pio.Error_Status;
        Value : Boolean := False;
    begin
        Pio.Open (The_Handle => Switch_Handle,
                  Mode => Pio.Read_Only,
                  File_Name => Enclosing_View_Name & ".state.compiler_switches",
                  Status => Pio_Status);
        Value := Si.Value (Switches => Switch_Handle,
                           Name => "RCF." & Target_Key_Id & "_" &
                                      Switches.Image (For_Switch));
        Pio.Close (File => Switch_Handle, Status => Pio_Status);
        return Value;
    end Is_True;

    function Linker_Generated_Name
                (Executable_Name : in String; Main_Unit_Name : in String)
                return String is
    begin
        if Executable_Name /= "" then
            return Executable_Name;
        else
            return Main_Unit_Name;
        end if;
    end Linker_Generated_Name;

begin
    Log.Put_Line (Message => "Executing Link_Postprocess",
                  Kind => Profile.Note_Msg);
    Log.Put_Line (Message => " The main unit name is " & Main_Unit,
                  Kind => Profile.Note_Msg);
    Log.Put_Line (Message => " The remote_directory is " & Remote_Directory,
                  Kind => Profile.Note_Msg);

    -- set context
    Simple_Status.Initialize (Status);

    declare
        Remote_File_Name : constant String :=
           Linker_Generated_Name (Executable_Name, Main_Simple_Name);
    begin

        --
        --  Retrieval of Executable File
        --
        if Is_True (Switches.Executable) then

            Log.Put_Line (Message =>
                             "Initiating Retrieval of Executable file " &
                                Executable_Name & ".",
                          Kind => Profile.Positive_Msg);
            Ftp.Get (From_Remote_File => Remote_File_Name,
                     To_Local_File => Host_Exe_Name,
                     Remote_Machine => Remote_Machine,
                     Remote_Directory => Remote_Directory,
                     Transfer_Type => Ftp_Defs.Local_Binary);
        end if;

        --  Retrieval of Map File
        --
        if Is_True (Switches.Binder_Listing) then
            Log.Put_Line (Message => "Initiating Retrieval of Map file " &
                                        Remote_File_Name & ".bnd",
                          Kind => Profile.Positive_Msg);
            Ftp.Get (From_Remote_File => Remote_File_Name & ".bnd",
                     To_Local_File => Host_Bind_Name,
                     Remote_Machine => Remote_Machine,
                     Remote_Directory => Remote_Directory);
        end if;

        --
        --  Retrieval of Cui File
        --
        if Is_True (Switches.Cui_File) then
            Log.Put_Line (Message => "Initiating Retrieval of cui file " &
                                        Remote_File_Name & ".cui",
                          Kind => Profile.Positive_Msg);
            Ftp.Get (From_Remote_File => Remote_File_Name & ".cui",
                     To_Local_File => Host_Cui_Name,
                     Remote_Machine => Remote_Machine,
                     Remote_Directory => Remote_Directory);
        end if;


    end;

exception
    when others =>
        Unhandled_Exception (Status, "Link_Postprocess");

end Link_Postprocess;