|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 4096 (0x1000)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Os_Variant, seg_04b95d
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
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;
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