DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: ┃ T V ┃
Length: 7216 (0x1c30) Types: TextFile Names: »V«
└─⟦d10a02448⟧ Bits:30000409 8mm tape, Rational 1000, ENVIRONMENT, D_12_7_3 └─ ⟦fc9b38f02⟧ »DATA« └─⟦9b46a407a⟧ └─⟦12c68c704⟧ └─⟦this⟧ └─⟦5f3412b64⟧ Bits:30000745 8mm tape, Rational 1000, ENVIRONMENT 12_6_5 TOOLS └─ ⟦91c658230⟧ »DATA« └─⟦458657fb6⟧ └─⟦220843204⟧ └─⟦this⟧
with Action; with Simple_Status; with Bounded_String; with Directory; with Machine; package Access_List_Tools is subtype Name is String; -- an object name subtype Access_Class is String; -- of only the following characters: Read : constant Character := 'R'; -- objects and worlds Write : constant Character := 'W'; -- objects only Delete : constant Character := 'D'; -- worlds only; same bit as W Create : constant Character := 'C'; -- worlds only Owner : constant Character := 'O'; -- worlds only -- An object string name is as defined by the directory -- package. No wilcards are accepted; each operation in this -- package operates on one object. subtype Acl is String; Max_Acl_Length : constant := 512; -- max length for access list string -- The max size will not be exceeded when an Acl is returned. -- String representations of access lists have the following syntax: -- Acl ::= Acl_Entry [',' Acl_Entry]* -- Acl_Entry ::= Group '=>' Access -- Group ::= Identifier -- Access ::= Acc_Type+ -- Acc_Type ::= 'R' | 'W' | 'D' | 'C' | 'O' | -- 'r' | 'w' | 'd' | 'c' | 'o' -- Examples: "Phil => R , TRW => rw", "Public=>RCOD" Access_Tools_Error : exception; -- Raised by functions function Get (For_Object : Name) return Acl; function Get (For_Object : Directory.Version) return Acl; procedure Get (For_Object : Name; List : out Bounded_String.Variable_String; Status : in out Simple_Status.Condition); procedure Get (For_Object : Directory.Version; List : out Bounded_String.Variable_String; Status : in out Simple_Status.Condition); procedure Set (For_Object : Name; To_List : Acl; Status : in out Simple_Status.Condition); procedure Set (For_Object : Directory.Version; To_List : Acl; Status : in out Simple_Status.Condition); -- Get or Set the access list for the specified object. -- Setting the access list requires "Owner" access. -- function Get raises Access_Tools_Error if an error occurs. -- The procedure version should be called in that case to get the -- actual error information. -- ACL for world must be contain only R, C, O, or D access. Others -- must be only R or W access. function Check (User_Name : String := ""; Object_Id : Directory.Version; Desired : Access_Class) return Boolean; function Check (User_Name : String := ""; Object_Name : String; Desired : Access_Class) return Boolean; function Check (User_Id : Directory.Version; Object_Id : Directory.Version; Desired : Access_Class) return Boolean; function Check (Job : Machine.Job_Id; Object_Id : Directory.Version; Desired : Access_Class) return Boolean; -- Check if the specified user has the indicated access to the -- specified object. Only meaningful for Ada objects, Files, and Worlds. -- The null string for the User_Name parameter means the identity of -- the calling job. If a user name is specified, the access control -- identity of that user (its member groups) is used for the test. -- If an error is detected during the test, the value false is returned. -- The most common errors are illegal values for Desired and references -- to objects that do not exist. If an object that does not have an -- access list is referenced, the value true is returned. function Get_Default (For_World : Name) return Acl; procedure Get_Default (For_World : Name; List : out Bounded_String.Variable_String; Status : in out Simple_Status.Condition); procedure Set_Default (For_World : Name; To_List : Acl; Status : in out Simple_Status.Condition); -- Get or set the default ACL for new objects created in the specified -- world. The function raises the exception Access_Tools_Error if -- an error is detected. The procedure version returns a status -- that indicates the cause of the error. procedure Check_Validity (For_List : Acl; Status : in out Simple_Status.Condition); -- Check the validity of the specified access list. Return status -- indicating that it is okay, or the error, if any. function Has_Operator_Capability return Boolean; -- Return true if the calling job has operator capability. This is -- true if the job has an identity that includes the group -- "operator", is on the access list for "!machine.operator_capability", -- or is priviledged. function Normalize (Initial_Acl : Acl) return Acl; -- Scan the acl and eliminate any entries for groups that do -- not currently exist. Return the revised acl. If the -- acl is otherwise illegal, raise Access_Tools_Error. function Amend (Initial_Acl : Acl; New_Group : Name; Desired : Access_Class) return Acl; -- Amend Initial_Acl so that New_Group is granted Desired access. If -- necessary, the right-most acl entry is removed to do this. -- Raise Access_Tools_Error if any parameter is illegal. function Grants (For_List : Acl; Desired : Access_Class; User_Name : String := "") return Boolean; -- Raise Access_Tools_Error if For_List, Desired, or User_Name are -- illegal. Return true or false depending on whether For_List grants -- User_Name Desired access. User_Name ="" (the default) performs the -- check for the identity of the calling job. procedure Set (For_Object : Directory.Version; To_List : Acl; Status : in out Simple_Status.Condition; Action_Id : Action.Id); procedure Set_Default (For_World : Name; To_List : Acl; Status : in out Simple_Status.Condition; Action_Id : Action.Id); -- same as above with an action_id parameter. procedure Remove (Group : String; Initial_Acl : Bounded_String.Variable_String; New_Acl : out Bounded_String.Variable_String; Group_Found : out Boolean); -- -- Removes the groups's entry from the specified access list function Is_Valid_Group (Name : String) return Boolean; function Is_In_Group (User_Name : String; Group_Name : String) return Boolean; -- Return true if the User_Name is a member of Group_Name pragma Subsystem (Os_Commands); pragma Module_Name (4, 3508); end Access_List_Tools;