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

⟦c392920cc⟧ Ada Source

    Length: 4096 (0x1000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Os_Variant, seg_04b95d

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 Os_Files;
use Os_Files;
with Io_Exceptions;
with A_Strings;
with C_Strings;
with Unix;
with Unix_Status_Buffer;
with Unchecked_Conversion;

package body Os_Variant is  -- variations in unix

    type Normal_File_Id_Type is
        record
            Device : Integer;
            Inode : Integer;
        end record;
    function To_File_Id_Type is new Unchecked_Conversion
                                       (Normal_File_Id_Type, File_Id_Type);

    function Isatty (Fd : File_Descriptor) return Boolean;
    pragma Interface (C, Isatty);

    function Cvt_Open_Flags
                (Ada_Flags : Os_Files.Open_Flags) return Open_Flags is
    begin
        return Ada_Flags;
    end Cvt_Open_Flags;

    function Get_File_Id (Fd : File_Descriptor; Name : String)
                         return File_Id_Type is
        Id : Normal_File_Id_Type;
        Statbuf : Unix_Status_Buffer.Status_Buffer;
        C_Buffer : String (Name'First .. Name'Last + 1);
        Retval : Unix.Status_Code;
    begin
        if Fd = File_Descriptor (-1) then
            Retval := Unix.Stat (C_Strings.To_C (Name, C_Buffer'Address),
                                 Unix_Status_Buffer.To_Stat (Statbuf'Address));
        else
            Retval := Unix.Fstat (Fd,
                                  Unix_Status_Buffer.To_Stat (Statbuf'Address));
        end if;
        if Retval /= Unix.Ok then
            raise Io_Exceptions.Device_Error;
        end if;
        Id := (Integer (Statbuf.Dev), Integer (Statbuf.Ino));
        return To_File_Id_Type (Id);
    end Get_File_Id;

    function Get_File_Size (Fd : File_Descriptor) return Integer is
        Statbuf : Unix_Status_Buffer.Status_Buffer;
    begin
        if Unix.Fstat (Fd, Unix_Status_Buffer.To_Stat (Statbuf'Address)) /=
           Unix.Ok then
            raise Io_Exceptions.Device_Error;
        end if;
        if Unix_Status_Buffer."/=" (Statbuf.Mode.S_Ifmt,
                                    Unix_Status_Buffer.S_Ifreg) and then
           Unix_Status_Buffer."/=" (Statbuf.Mode.S_Ifmt,
                                    Unix_Status_Buffer.S_Ifdir) then
            raise Io_Exceptions.Device_Error;
        end if;
        return Statbuf.Size;
    end Get_File_Size;

    function Is_A_Tty (Fd : File_Descriptor) return Boolean is
    begin
        return Isatty (Fd);
    end Is_A_Tty;

    procedure Try_Waiting (Fails : in out Integer; Fd : File_Descriptor) is
    begin
        Fails := Fails + 1;
        if Fails mod 10 = 0 then
            delay 1.0;
        end if;
    end Try_Waiting;

    procedure Sleep (Time : Duration) is
    begin
        delay Time;
    end Sleep;

    procedure Condition_Stdin (Stdin_Fd : File_Descriptor; Mode : Open_Flags) is
    begin
        null;
    end Condition_Stdin;
end Os_Variant;

E3 Meta Data

    nblk1=3
    nid=0
    hdr6=6
        [0x00] rec0=22 rec1=00 rec2=01 rec3=056
        [0x01] rec0=18 rec1=00 rec2=02 rec3=070
        [0x02] rec0=20 rec1=00 rec2=03 rec3=000
    tail 0x21750b9c2868435b76251 0x42a00088462060003