DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

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

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦df85d4075⟧ Ada Source

    Length: 8192 (0x2000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Admin, seg_014b48

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦this⟧ 

E3 Source Code



with Compilation, Library, Links, Operator, Text_Io;
with Destroy_Library;
package body Admin is

    function User_World (For_User : String) return String is
    begin
        return "!users." & For_User;
    end User_World;


    procedure Add_Link_To_User_World (For_User : String; The_Link : String) is
    begin
        Text_Io.Put_Line ("adding link: " & The_Link &
                          " for user: " & For_User);
        Links.Add (Source => The_Link,
                   Link => "#",
                   World => User_World (For_User));
    end Add_Link_To_User_World;


    procedure Add_Links_From_File  
                 (The_File : String := "links"; For_User : String) is
        Link_List : Text_Io.File_Type;
        The_Link : String (1 .. 80);
        The_Length : Natural;
    begin
        Text_Io.Open (Link_List, Text_Io.In_File, The_File);
        while not Text_Io.End_Of_File (Link_List) loop
            Text_Io.Get_Line (Link_List, The_Link, The_Length);  
            if The_Length /= 0 then
                Add_Link_To_User_World (For_User, The_Link (1 .. The_Length));
            end if;
        end loop;
        Text_Io.Close (Link_List);
    end Add_Links_From_File;


    procedure Create_User (With_Name : String;
                           Using_Links : String := "links") is
    begin
        Text_Io.Put_Line ("creating user: " & With_Name);
        Operator.Create_User (User => With_Name,
                              Password => "aModifier",
                              Volume => 0,
                              Response => "<PROFILE>");  
        Add_Links_From_File (Using_Links, With_Name);
        Install_Login (For_User => With_Name);
        Install_S1_Switches (For_User => With_Name);
        Install_Xr6us (For_User => With_Name);
    end Create_User;


    function User_Unit_Name (For_User : String; Unit : String) return String is
    begin
        return "!users." & For_User & "." & Unit;
    end User_Unit_Name;


    procedure Promote_User_Unit (For_User : String;
                                 Unit : String;
                                 To_State : Compilation.Unit_State) is
    begin
        Compilation.Promote (Unit => User_Unit_Name (For_User, Unit),
                             Scope => Compilation.All_Parts,
                             Goal => To_State,
                             Limit => "<WORLDS>",
                             Effort_Only => False,
                             Response => "<PROFILE>");
    end Promote_User_Unit;


    procedure Install_User_Unit
                 (For_User : String;
                  Unit_Name : String;
                  To_State : Compilation.Unit_State := Compilation.Coded) is
    begin
        Library.Copy (From => Unit_Name,
                      To => User_World (For_User),
                      Recursive => True,
                      Response => "<PROFILE>",
                      Copy_Links => True,
                      Options => "");
        Promote_User_Unit (For_User, Unit_Name, To_State);
    end Install_User_Unit;


    procedure Install_Login (For_User : String) is
    begin
        Install_User_Unit (For_User, "login", To_State => Compilation.Coded);
    end Install_Login;


    procedure Install_Xr6us (For_User : String) is
    begin
        Install_User_Unit (For_User, "Xr6us_Commands",
                           To_State => Compilation.Installed);
    end Install_Xr6us;

    procedure Install_S1_Switches (For_User : String) is
    begin
        Library.Copy (From => "S_1_Switches", To => User_World (For_User));
    end Install_S1_Switches;

    procedure Delete_User (With_Name : String) is
    begin
        Text_Io.Put_Line ("deleting user: " & With_Name);
        Operator.Delete_User (With_Name);
    end Delete_User;


    procedure For_All_Users (Contained_In_File : String := "users";
                             Do_Command : Operation := Admin.Nothing;
                             Using_Links : String := "links") is  
        User_List : Text_Io.File_Type;
        User_Name : String (1 .. 80);
        Name_Length : Natural;
    begin
        Text_Io.Open (User_List, Text_Io.In_File, Contained_In_File);
        while not Text_Io.End_Of_File (User_List) loop
            Text_Io.Get_Line (User_List, User_Name, Name_Length);  
            if Name_Length /= 0 then
                case Do_Command is
                    when Create =>
                        Create_User (User_Name (1 .. Name_Length), Using_Links);
                    when Delete =>
                        Delete_User (User_Name (1 .. Name_Length));
                    when Remove_World =>
                        Destroy_Library ("!users." &
                                         User_Name (1 .. Name_Length),
                                         Effort_Only => False);
                    when Nothing =>
                        null;
                end case;
            end if;
        end loop;
        Text_Io.Close (User_List);

    end For_All_Users;

    procedure Associate_Library_Switches (For_User : String) is
    begin
        [statement]
    end Associate_Library_Switches;
end Admin;

E3 Meta Data

    nblk1=7
    nid=0
    hdr6=e
        [0x00] rec0=1e rec1=00 rec2=01 rec3=04c
        [0x01] rec0=00 rec1=00 rec2=06 rec3=030
        [0x02] rec0=1a rec1=00 rec2=03 rec3=05a
        [0x03] rec0=1a rec1=00 rec2=02 rec3=020
        [0x04] rec0=1f rec1=00 rec2=04 rec3=018
        [0x05] rec0=13 rec1=00 rec2=07 rec3=02e
        [0x06] rec0=0e rec1=00 rec2=05 rec3=001
    tail 0x21710644e83177e7332ac 0x42a00088462060003