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: ┃ B T ┃
Length: 13177 (0x3379) Types: TextFile Names: »B«
└─⟦149519bd4⟧ Bits:30000546 8mm tape, Rational 1000, !projects 93-07-13 └─ ⟦124ff5788⟧ »DATA« └─⟦this⟧ └─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11 └─ ⟦129cab021⟧ »DATA« └─⟦this⟧ └─⟦f64eaa120⟧ Bits:30000752 8mm tape, Rational 1000, !projects 93 02 16 └─ ⟦6f12a12be⟧ »DATA« └─⟦this⟧ └─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04 └─ ⟦d65440be7⟧ »DATA« └─⟦this⟧
with Directory; with Calendar; separate (Object_Management_System) package body Library is function Kind (The_Library : Library_Object) return Library_Kind is begin if The_Library.Subclass = Library_Subclass then return The_Library.Kind; else return Not_A_Library; end if; end Kind; function Image (The_Kind : Library_Kind) return String is begin case The_Kind is when A_Directory => return "Directory"; when Subsystem_Spec => return "Sub_Spec "; when Subsystem_Body => return "Sub_Body "; when Not_A_Library => return " "; end case; end Image; function Is_Directory (The_Library : Library_Object) return Boolean is begin return Kind (The_Library) = A_Directory; end Is_Directory; function Is_Subsystem_Spec (The_Library : Library_Object) return Boolean is begin return Kind (The_Library) = Subsystem_Spec; end Is_Subsystem_Spec; function Is_Subsystem_Body (The_Library : Library_Object) return Boolean is begin return Kind (The_Library) = Subsystem_Body; end Is_Subsystem_Body; function Root return Library_Object is begin return Library_Object'(Subclass => Library_Subclass, Name => Gs.Value ("/"), Unix_Library => Directory.Traversal.Root, Kind => A_Directory); end Root; function Home return Library_Object is Obj : Directory.Object; begin Obj := Directory.Traversal.Home; return Library_Object' (Subclass => Library_Subclass, Name => Gs.Value (Directory.Naming.Full_Name (Obj)), Unix_Library => Obj, Kind => A_Directory); end Home; function Enclosing_Library return Library_Object is Obj : Directory.Object; begin Obj := Directory.Traversal.Parent (Set_Of_Object.Parent.Unix_Library); return Library_Object' (Subclass => Library_Subclass, Name => Gs.Value (Directory.Naming.Simple_Name (Obj)), Unix_Library => Obj, Kind => Library.A_Directory); exception when Directory.Non_Existent_Object_Error => return Nil; end Enclosing_Library; procedure Create (The_Library : in out Library_Object; Name : String; Kind : Library_Kind) is Obj : Directory.Object; begin Directory.Any_Object.Create (The_Object => Obj, Object_Name => Name, Object_Class => Directory.Directory_Class, Object_Owner_Permissions => Directory.Statistics.R_W_X_Permission); The_Library := Library_Object'(Subclass => Library_Subclass, Name => Gs.Value (Name), Unix_Library => Obj, Kind => Kind); exception when Directory.Already_Existent_Object_Error => The_Library := Nil; when Directory.System_Error => The_Library := Nil; end Create; function Child (The_Library : Library_Object; Child_Name : String) return Library_Object is Obj : Directory.Object := Directory.Traversal.Child (The_Object => The_Library.Unix_Library, Child_Name => Child_Name); begin case Directory.Class (Obj) is when Directory.Directory_Class => return Library_Object' (Subclass => Library_Subclass, Name => Gs.Value (Child_Name), Unix_Library => Directory.Traversal.Child (The_Object => The_Library.Unix_Library, Child_Name => Child_Name), Kind => Library.A_Directory); when others => return Library_Object' (Subclass => Unix_File_Subclass, Name => Gs.Value (Child_Name), Unix_File => Directory.Traversal.Child (The_Object => The_Library.Unix_Library, Child_Name => Child_Name)); end case; end Child; function Children (The_Library : Library_Object; Subclass : Subclass_Enumeration := Object_Management_System.Unknown_Subclass) return Iterator is It : Iterator; Iter : Directory.Iterator; Obj : Directory.Object; Lo : Library_Object; Add : Boolean; begin Set_Of_Object.Length := 0; Directory.Naming.Set_Default_Context (The_Context => The_Library.Unix_Library); Iter := Directory.Traversal.Children (The_Object => The_Library.Unix_Library); while not Directory.Done (Iter) loop Obj := Directory.Value (Iter); Add := False; case Directory.Class (Obj) is when Directory.Directory_Class => Lo := Library_Object' (Subclass => Library_Subclass, Name => Gs.Value (Directory.Naming.Simple_Name (Obj)), Kind => A_Directory, Unix_Library => Obj); Add := True; when Directory.File_Class => declare Ext : constant String := Directory.Naming.Extension (Directory.Naming.Simple_Name (Obj)); Name : constant String := Directory.Naming.Simple_Name_Without_Extension (Obj); begin if Ext = "c" then Lo := Library_Object'(Subclass => C_Unit_Subclass, Name => Gs.Value (Name), C_Kind => C_Unit.C_Body, C_State => C_Unit.Source, Source_File => Obj, Object_File => Directory.Nil, Exec_File => Directory.Nil); Add := True; elsif Ext = "h" then Lo := Library_Object'(Subclass => C_Unit_Subclass, Name => Gs.Value (Name), C_Kind => C_Unit.C_Spec, C_State => C_Unit.Source, Source_File => Obj, Object_File => Directory.Nil, Exec_File => Directory.Nil); Add := True; elsif Ext = "o" then Reset (It); while not Done (It) loop Lo := Value (It); if Gs.Image (Lo.Name) = Name and then not C_Unit.Is_Spec (Lo) then Set_Of_Object.Element (It).Object_File := Obj; if C_Unit.Is_Main (Lo) and then C_Unit.Is_Linked (Lo) and then Calendar.">" (Directory.Statistics. Time_Of_Last_Update (Obj), Directory.Statistics. Time_Of_Last_Update (Set_Of_Object.Element (It). Exec_File)) then Set_Of_Object.Element (It).C_State := C_Unit.Compiled; else if C_Unit.Is_Body (Lo) and then Calendar.">" (Directory.Statistics. Time_Of_Last_Update (Obj), Directory.Statistics. Time_Of_Last_Update (Set_Of_Object.Element (It). Source_File)) then Set_Of_Object.Element (It). C_State := C_Unit.Compiled; end if; end if; exit; end if; Next (It); end loop; if Done (It) then Lo := Library_Object' (Subclass => Unix_File_Subclass, Name => Gs.Value (Directory.Naming. Simple_Name (Obj)), Unix_File => Obj); Add := True; end if; elsif Ext = "exe" then Reset (It); while not Done (It) loop Lo := Value (It); if Gs.Image (Lo.Name) = Name and then not C_Unit.Is_Spec (Lo) then Set_Of_Object.Element (It).Exec_File := Obj; Set_Of_Object.Element (It).C_Kind := C_Unit.C_Main; if Calendar.">" (Directory.Statistics. Time_Of_Last_Update (Obj), Directory.Statistics. Time_Of_Last_Update (Set_Of_Object.Element (It). Source_File)) then Set_Of_Object.Element (It).C_State := C_Unit.Linked; end if; exit; end if; Next (It); end loop; if Done (It) then Lo := Library_Object' (Subclass => Unix_File_Subclass, Name => Gs.Value (Directory.Naming. Simple_Name (Obj)), Unix_File => Obj); Add := True; end if; else Lo := Library_Object' (Subclass => Unix_File_Subclass, Name => Gs.Value (Directory.Naming.Simple_Name (Obj)), Unix_File => Obj); Add := True; end if; end; when others => Lo := Library_Object' (Subclass => Unix_File_Subclass, Name => Gs.Value (Directory.Naming.Simple_Name (Obj)), Unix_File => Obj); Add := True; end case; if Add then Set_Of_Object.Length := Set_Of_Object.Length + 1; Set_Of_Object.Element (Set_Of_Object.Length) := Lo; end if; Directory.Next (Iter); end loop; Set_Of_Object.Parent := The_Library; Reset (It); return It; end Children; end Library;