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

⟦eff2429d1⟧ Ada Source

    Length: 18432 (0x4800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, procedure Dir, seg_027c54, seg_027cef

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 Directory;
with Text_Io;
with Calendar;
with Time_Utilities;
procedure Dir is
    Obj, Obj1, Obj2, The_Copy : Directory.Object;
    Parent : Directory.Object;  
    Path : constant String := "/home/aconit/projects/umps/directory/test";
    Item : Character;
begin
    begin
        Directory.Any_Object.Open (The_Object => Obj, Object_Name => Path);
    exception
        when Directory.Non_Existent_Object_Error =>
            begin
                Text_Io.Put_Line ("Le repertoire " & Path &
                                  " va etre cree ...");
                Directory.Any_Object.Create
                   (The_Object => Obj,
                    Object_Name => Path,
                    Object_Class => Directory.Directory_Class,
                    Object_Owner_Permissions =>
                       Directory.Statistics.R_W_X_Permission,
                    Object_Group_Permissions =>
                       Directory.Statistics.R_W_Permission,
                    Object_Other_Permissions =>
                       Directory.Statistics.R_W_Permission);
            exception
                when others =>
                    Text_Io.Put_Line ("Le repertoire " & Path &
                                      "n'a pas pu etre cree...");
                    return;
            end;
    end;
    declare
        I : Directory.Iterator;
        T : Calendar.Time;
    begin
        I := Directory.Traversal.Children (The_Object => Obj,
                                           Pattern => "*",
                                           Class => Directory.Unknown_Class);

        Text_Io.New_Line;
        Text_Io.Put_Line ("Le repertoire " & Directory.Naming.Full_Name (Obj) &
                          " est constitue des fichiers suivant :");

        while not Directory.Done (Iter => I) loop
            Obj1 := Directory.Value (Iter => I);
            T := Directory.Statistics.Time_Of_Last_Update (The_Object => Obj1);
            Text_Io.Put_Line
               (Directory.Naming.Simple_Name (The_Object => Obj1) & "   " &
                Directory.Image (The_Class =>
                                    Directory.Class (The_Object => Obj1)) &
                Directory.Statistics.Image
                   (The_Permissions => Directory.Statistics.Owner_Permissions
                                          (The_Object => Obj1)) &
                Directory.Statistics.Image
                   (The_Permissions => Directory.Statistics.Group_Permissions
                                          (The_Object => Obj1)) &
                Directory.Statistics.Image
                   (The_Permissions => Directory.Statistics.Other_Permissions
                                          (The_Object => Obj1)) &
                " " & Time_Utilities.Image
                         (Date => Time_Utilities.Convert_Time (T),
                          Date_Style => Time_Utilities.Day_Month_Year,
                          Time_Style => Time_Utilities.Short,
                          Contents => Time_Utilities.Both) &
                " " & Integer'Image (Directory.Statistics.Object_Size
                                        (The_Object => Obj1)));
            Directory.Next (Iter => I);
        end loop;


        Directory.Naming.Set_Default_Context
           ("/home/aconit/projects/umps/directory");

        Text_Io.New_Line;
        Text_Io.Put_Line
           ("Le context courant va etre le repertoire suivant : " &
            Directory.Naming.Full_Name (Directory.Naming.Default_Context));

        Text_Io.Put ("Appuyer une touche pour continuer...");
        Text_Io.Get (Item);

        Text_Io.New_Line;
        Text_Io.Put_Line ("Copy du repertoire " &
                          Directory.Naming.Full_Name (Obj) &
                          " dans le repertoire 'test_bis'");

        begin
            Directory.Any_Object.Copy (Source => Obj,
                                       Destination_Name => "test_bis",
                                       Destination => The_Copy);
            Text_Io.Put_Line ("La copy a reussie dans le repertoire " &
                              Directory.Naming.Full_Name
                                 (The_Object => The_Copy));
        exception
            when Directory.System_Error =>
                Text_Io.Put_Line ("Erreur system : " &
                                  Directory.Get_Error_Message);
            when others =>
                Text_Io.Put_Line ("Erreur rencontree lors de la copie ...");
        end;

        Text_Io.New_Line;
        Text_Io.Put_Line
           ("Le repertoire " & Directory.Naming.Full_Name (The_Copy) &
            " a ete cree et contient le(s) fichier(s) suivant(s) :");


        I := Directory.Traversal.Children (The_Object => The_Copy,
                                           Pattern => "*",
                                           Class => Directory.Unknown_Class);

        while not Directory.Done (Iter => I) loop
            Obj1 := Directory.Value (Iter => I);
            T := Directory.Statistics.Time_Of_Last_Update (The_Object => Obj1);
            Text_Io.Put_Line
               (Directory.Naming.Simple_Name (The_Object => Obj1) & "   " &
                Directory.Image (The_Class =>
                                    Directory.Class (The_Object => Obj1)) &
                Directory.Statistics.Image
                   (The_Permissions => Directory.Statistics.Owner_Permissions
                                          (The_Object => Obj1)) &
                Directory.Statistics.Image
                   (The_Permissions => Directory.Statistics.Group_Permissions
                                          (The_Object => Obj1)) &
                Directory.Statistics.Image
                   (The_Permissions => Directory.Statistics.Other_Permissions
                                          (The_Object => Obj1)) &
                " " & Time_Utilities.Image
                         (Date => Time_Utilities.Convert_Time (T),
                          Date_Style => Time_Utilities.Day_Month_Year,
                          Time_Style => Time_Utilities.Short,
                          Contents => Time_Utilities.Both) &
                " " & Integer'Image (Directory.Statistics.Object_Size
                                        (The_Object => Obj1)));
            Directory.Next (Iter => I);
        end loop;

        Text_Io.New_Line;
        Text_Io.Put ("Appuyer une touche pour continuer...");
        Text_Io.Get (Item);
        Text_Io.New_Line;


        Directory.Any_Object.Open (The_Object => Obj2,
                                   Object_Name => "test_bis/test2/test_file");
        Parent := Directory.Traversal.Parent (The_Object => Obj2);

        Text_Io.Put_Line ("Le repertoire " &
                          Directory.Naming.Full_Name (Parent) &
                          " contient le(s) fichier(s) suivant(s)");

        I := Directory.Traversal.Children (The_Object => Parent,
                                           Pattern => "*",
                                           Class => Directory.Unknown_Class);

        while not Directory.Done (Iter => I) loop
            Obj1 := Directory.Value (Iter => I);
            T := Directory.Statistics.Time_Of_Last_Update (The_Object => Obj1);
            Text_Io.Put_Line
               (Directory.Naming.Simple_Name (The_Object => Obj1) & "   " &
                Directory.Image (The_Class =>
                                    Directory.Class (The_Object => Obj1)) &
                Directory.Statistics.Image
                   (The_Permissions => Directory.Statistics.Owner_Permissions
                                          (The_Object => Obj1)) &
                Directory.Statistics.Image
                   (The_Permissions => Directory.Statistics.Group_Permissions
                                          (The_Object => Obj1)) &
                Directory.Statistics.Image
                   (The_Permissions => Directory.Statistics.Other_Permissions
                                          (The_Object => Obj1)) &
                " " & Time_Utilities.Image
                         (Date => Time_Utilities.Convert_Time (T),
                          Date_Style => Time_Utilities.Day_Month_Year,
                          Time_Style => Time_Utilities.Short,
                          Contents => Time_Utilities.Both) &
                " " & Integer'Image (Directory.Statistics.Object_Size
                                        (The_Object => Obj1)));
            Directory.Next (Iter => I);
        end loop;

        Text_Io.New_Line;
        Text_Io.Put ("Appuyer une touche pour continuer...");
        Text_Io.Get (Item);
        Text_Io.New_Line;



        Text_Io.Put_Line ("Le fichier " & Directory.Naming.Full_Name (Obj2) &
                          " vient d'etre efface");

        Directory.Any_Object.Delete (The_Object => Obj2);

        Text_Io.Put_Line ("Le repertoire " &
                          Directory.Naming.Full_Name (Parent) &
                          " vient d'etre efface");

        Directory.Any_Object.Delete (The_Object => Parent);

        Text_Io.New_Line;
        Text_Io.Put_Line ("Le contenu du repertoire " &
                          Directory.Naming.Full_Name (The_Copy) &
                          " est donc maintenant le suivant :");


        I := Directory.Traversal.Children (The_Object => The_Copy,
                                           Pattern => "*",
                                           Class => Directory.Unknown_Class);
        while not Directory.Done (Iter => I) loop
            Obj1 := Directory.Value (Iter => I);
            T := Directory.Statistics.Time_Of_Last_Update (The_Object => Obj1);
            Text_Io.Put_Line
               (Directory.Naming.Simple_Name (The_Object => Obj1) & "   " &
                Directory.Image (The_Class =>
                                    Directory.Class (The_Object => Obj1)) &
                Directory.Statistics.Image
                   (The_Permissions => Directory.Statistics.Owner_Permissions
                                          (The_Object => Obj1)) &
                Directory.Statistics.Image
                   (The_Permissions => Directory.Statistics.Group_Permissions
                                          (The_Object => Obj1)) &
                Directory.Statistics.Image
                   (The_Permissions => Directory.Statistics.Other_Permissions
                                          (The_Object => Obj1)) &
                " " & Time_Utilities.Image
                         (Date => Time_Utilities.Convert_Time (T),
                          Date_Style => Time_Utilities.Day_Month_Year,
                          Time_Style => Time_Utilities.Short,
                          Contents => Time_Utilities.Both) &
                " " & Integer'Image (Directory.Statistics.Object_Size
                                        (The_Object => Obj1)));
            Directory.Next (Iter => I);
        end loop;

    exception
        when Directory.Non_Existent_Object_Error =>
            Text_Io.Put_Line
               ("Vous essayer d'ouvrir un fichier non exitant...");
        when Directory.Already_Existent_Object_Error =>
            Text_Io.Put_Line
               ("Vous essayer de creer un fichier deja existent...");
        when Directory.System_Error =>
            Text_Io.Put_Line ("Erreur system : " & Directory.Get_Error_Message);
    end;
end Dir;

pragma Main;

E3 Meta Data

    nblk1=11
    nid=2
    hdr6=18
        [0x00] rec0=1b rec1=00 rec2=01 rec3=008
        [0x01] rec0=17 rec1=00 rec2=0d rec3=094
        [0x02] rec0=11 rec1=00 rec2=0c rec3=010
        [0x03] rec0=15 rec1=00 rec2=05 rec3=05e
        [0x04] rec0=18 rec1=00 rec2=06 rec3=010
        [0x05] rec0=11 rec1=00 rec2=0a rec3=00c
        [0x06] rec0=15 rec1=00 rec2=09 rec3=026
        [0x07] rec0=13 rec1=00 rec2=10 rec3=02c
        [0x08] rec0=12 rec1=00 rec2=0b rec3=02a
        [0x09] rec0=1a rec1=00 rec2=11 rec3=04c
        [0x0a] rec0=11 rec1=00 rec2=0f rec3=016
        [0x0b] rec0=16 rec1=00 rec2=03 rec3=000
        [0x0c] rec0=18 rec1=00 rec2=0b rec3=000
        [0x0d] rec0=0d rec1=00 rec2=08 rec3=000
        [0x0e] rec0=00 rec1=00 rec2=00 rec3=019
        [0x0f] rec0=00 rec1=00 rec2=00 rec3=000
        [0x10] rec0=00 rec1=00 rec2=00 rec3=000
    tail 0x21721911e83ac3a86ff10 0x42a00088462060003
Free Block Chain:
  0x2: 0000  00 0e 00 05 80 02 61 72 02 03 04 05 06 07 20 20  ┆      ar        ┆
  0xe: 0000  00 07 00 c1 00 49 20 20 20 20 20 20 20 20 20 20  ┆     I          ┆
  0x7: 0000  00 08 00 11 80 02 29 3b 02 00 09 20 20 20 20 20  ┆      );        ┆
  0x8: 0000  00 04 00 f0 80 2a 20 20 20 20 20 20 20 20 20 20  ┆     *          ┆
  0x4: 0000  00 00 00 04 80 01 26 01 02 03 70 6c 65 5f 4e 61  ┆      &   ple_Na┆