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

⟦a7c35c388⟧ Ada Source

    Length: 6144 (0x1800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Unix_Status_Buffer, seg_04b97c

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 System;
with Unchecked_Conversion;
with File_Names;

package Unix_Status_Buffer is

    type Formats is (S_Ififo, -- fifo
                     S_Ifchr, -- character special
                     S_Ifdir, -- directory
                     S_Ifblk, -- block special
                     S_Ifreg, -- regular
                     S_Iflnk, -- symbolic link
                     S_Ifsock); -- socket

    for Formats use (1, 2, 4, 6, 8, 10, 12);

    type Mode_Rec is
        record
            S_Inmod : Boolean; -- normal mode
            S_Ixmod : Boolean; -- extended mode
            S_Ijrnl : Boolean; -- journalled
            S_Ixacl : Boolean; -- extended ACL
            S_Itcb : Boolean; -- Trusted Computing Base
            S_Itp : Boolean; -- Trusted Process
            S_Ifmt : Formats; -- type of file
            S_Isuid : Boolean; -- set user id on execution
            S_Isgid : Boolean; -- set group id on execution
            S_Isvtx : Boolean; -- save text even after use
            S_Iread : Boolean; -- read permission, owner
            S_Iwrite : Boolean; -- write permission, owner
            S_Iexec : Boolean; -- execute/search permission, owner
            S_Irgrp : Boolean; -- read permission, group
            S_Iwrgrp : Boolean; -- write permission, group
            S_Ixgrp : Boolean; -- execute/search permission, group
            S_Iroth : Boolean; -- read permission, other
            S_Iwroth : Boolean; -- write permission, other
            S_Ixoth : Boolean; -- execute/search permission, other
        end record;

    for Mode_Rec use
        record
            S_Inmod at 0 range 0 .. 0;
            S_Ixmod at 0 range 1 .. 1;
            S_Ijrnl at 0 range 5 .. 5;
            S_Ixacl at 0 range 6 .. 6;
            S_Itcb at 0 range 7 .. 7;
            S_Itp at 0 range 8 .. 8;
            S_Ifmt at 0 range 16 .. 19;
            S_Isuid at 0 range 20 .. 20;
            S_Isgid at 0 range 21 .. 21;
            S_Isvtx at 0 range 22 .. 22;
            S_Iread at 0 range 23 .. 23;
            S_Iwrite at 0 range 24 .. 24;
            S_Iexec at 0 range 25 .. 25;
            S_Irgrp at 0 range 26 .. 26;
            S_Iwrgrp at 0 range 27 .. 27;
            S_Ixgrp at 0 range 28 .. 28;
            S_Iroth at 0 range 29 .. 29;
            S_Iwroth at 0 range 30 .. 30;
            S_Ixoth at 0 range 31 .. 31;
        end record;

    for Mode_Rec'Size use 4 * System.Storage_Unit;

    type A_Mode_Rec is access Mode_Rec;

    type Status_Buffer is
        record
            Dev : Integer;   -- ID of device containing a directory
            Ino : Integer;   -- File serial number
            Mode : Mode_Rec;   -- File mode
            Nlink : Short_Integer; -- Number of links
            Uid : Integer;   -- User ID of the file's owner
            Gid : Integer;   -- Group ID of the file's group
            Rdev : Integer;   -- ID of device
            Size : Integer;   -- File size in bytes
            Atime : Integer;   -- Time of last access
            Spare1 : Integer;
            Mtime : Integer;   -- Time of last data modification
            Spare2 : Integer;
            Ctime : Integer;   -- Time of last file status change
            Spare3 : Integer;
            Blksize : Integer;   -- Size of block in file
            Blocks : Integer;   -- Actual number of blocks allocated
            Vfstype : Integer;   -- Type of fs
            Vfs : Integer;   -- Vfs number
            Typ : Integer;   -- Vnode type
            Gen : Integer;   -- Inode generation number
            Flag : Integer;   -- Flag word
            Rsrvd1 : Integer;   -- Reserved
            Rsrvd2 : Integer;   -- Reserved
            Acces : Short_Integer; -- Process' access to file
            Spare4_1, Spare4_2, Spare4_3, Spare4_4, Spare4_5 :
               Integer;   -- Reserved
        end record;

    type A_Status_Buffer is access Status_Buffer;

    function To_Stat is new Unchecked_Conversion
                               (System.Address, A_Status_Buffer);

    subtype Permission_Integer is Integer;
    -- Unix systems represent protection bits differently, but type
    -- supplied to system calls is always C's 'int'
    Allow_Read_Write : constant Permission_Integer := 8#666#; -- -rw-rw-rw-
    function To_Permission (M : Mode_Rec) return File_Names.Permission;
    function To_Permission_Int
                (P : File_Names.Permission) return Permission_Integer;

    function Is_Directory (Stat_Buf : Status_Buffer) return Boolean;

end Unix_Status_Buffer;

E3 Meta Data

    nblk1=5
    nid=0
    hdr6=a
        [0x00] rec0=1d rec1=00 rec2=01 rec3=030
        [0x01] rec0=16 rec1=00 rec2=02 rec3=028
        [0x02] rec0=19 rec1=00 rec2=03 rec3=050
        [0x03] rec0=16 rec1=00 rec2=04 rec3=012
        [0x04] rec0=10 rec1=00 rec2=05 rec3=000
    tail 0x21750bba28684367b66cb 0x42a00088462060003