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

⟦92e1074f4⟧ Ada Source

    Length: 8192 (0x2000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, generic, package Posix, seg_0213e7

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦this⟧ 

E3 Source Code



with System;
with Implem_Def;


package Posix is

-- Symbolic constants

    Job_Control : constant Boolean := Implem_Def.Id_Job_Control;
    Saved_Ids : constant Boolean := Implem_Def.Id_Saved_Ids;
    Change_Owner_Restricted : constant Boolean :=
       Implem_Def.Id_Change_Owner_Restricted;
    No_Truncation : constant Boolean := Implem_Def.Id_No_Truncation;

    Portable_Argument_Bytes : constant := 4096;
    Argument_Bytes : constant := Implem_Def.Id_Argument_Bytes;

    Portable_Child_Processes : constant := 6;
    Child_Processes : constant := Implem_Def.Id_Child_Processes;

    Portable_Groups : constant := 0;
    Groups : constant := Implem_Def.Id_Groups;

    Portable_Open_Files : constant := 16;
    Open_Files : constant := Implem_Def.Id_Open_Files;

    Portable_Link_Limit : constant := 8;
    subtype Link_Limit_Range is
       Natural range 0 .. Implem_Def.Id_Link_Limit_Range_Last;

    Portable_Input_Line_Limit : constant := 255;
    subtype Input_Line_Limit_Range is
       Natural range 0 .. Implem_Def.Id_Input_Line_Limit_Range_Last;

    Portable_Input_Queue_Limit : constant := 255;
    subtype Input_Queue_Limit_Range is
       Natural range 0 .. Implem_Def.Id_Input_Queue_Limit_Range_Last;

    Portable_Filename_Limit : constant := 14;
    subtype Filename_Limit_Range is
       Positive range 1 .. Implem_Def.Id_Filename_Limit_Range_Last;

    Portable_Pathname_Limit : constant := 255;
    subtype Pathname_Limit_Range is
       Positive range 1 .. Implem_Def.Id_Pathname_Limit_Range_Last;

    Portable_Pipe_Limit : constant := 512;
    subtype Pipe_Limit_Range is
       Natural          -- why NATURAL ??
          range 0 .. Implem_Def.Id_Pipe_Limit_Range_Last;

-- Characters and Strings

    type Posix_Character is new Character;
    --        (' ','0','1','2','3','4','5','6','7','8','9',
    --         'A','B','C','D','E','F','G','H','I','J','K','L','M',
    --         'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
    --         'a','b','c','d','e','f','g','h','i','j','k','l','m',
    --         'n','o','p','q','r','s','t','u','v','w','x','y','z',
    --         '.','_','-','/'
    --         @P<other characters are implementation defined>
    --        );

    type Posix_String is array (Positive range <>) of Posix_Character;

    function To_String (Str : Posix_String) return String;

    function To_Posix_String (Str : String) return Posix_String;

    function To_Posix_String (Addr : System.Address) return Posix_String;

    function "&" (L : String; R : Posix_String) return Posix_String;
    function "&" (L : Character; R : Posix_String) return Posix_String;
    function "&" (L : Posix_String; R : String) return Posix_String;
    function "&" (L : Posix_String; R : Character) return Posix_String;
    -- these should come for free
    --  function "&" (l : POSIX_String; r : POSIX_Character)
    --      return POSIX_STRING;
    --  function "&" (l :POSIX_Character; r : POSIX_Character)
    --      return POSIX_STRING;

    function Is_Filename (Str : String) return Boolean;
    function Is_Filename (Str : Posix_String) return Boolean;
    function Is_Pathname (Str : String) return Boolean;
    function Is_Pathname (Str : Posix_String) return Boolean;

    function Is_Portable_Filename (Str : String) return Boolean;
    function Is_Portable_Filename (Str : Posix_String) return Boolean;
    function Is_Portable_Pathname (Str : String) return Boolean;
    function Is_Portable_Pathname (Str : Posix_String) return Boolean;

-- String Lists

    type Posix_String_List is limited private;

    Empty_String_List : constant Posix_String_List;

    procedure Make_Empty (List : in out Posix_String_List);

    procedure Append (List : in out Posix_String_List;
                      String : in Posix_String);

    generic
        with procedure Action (S : in Posix_String);
    procedure For_Every_Member (List : in Posix_String_List);

    function Length (List : Posix_String_List) return Natural;

    function Value (List : Posix_String_List; Index : Natural)
                   return Posix_String;

-- Exceptions \x09\x09\x09C errno equivalent
    Arg_List_Too_Long,    -- E2BIG
    Bad_Address,     -- EFAULT
    Bad_File_Descriptor,    -- EBADF
    Broken_Pipe,     -- EPIPE
    Directory_Not_Empty,    -- ENOTEMPTY
    Domain_Error,    -- EDOM
    Exec_Format_Error,    -- ENOEXEC
    File_Exists,     -- EEXIST
    File_Too_Big,    -- EFBIG
    Filename_Too_Long,    -- ENAMETOOLONG
    Function_Not_Implemented,   -- ENOSYS
    Improper_Link,    -- EXDEV
    Inappropriate_Io_Control_Operation,  -- ENOTTY
    Input_Output_Error,    -- EIO
    Interrupted_Operation,   -- EINTR
    Invalid_Argument,    -- EINVAL
    Invalid_Seek,    -- ESPIPE
    Is_A_Directory,    -- EISDIR
    No_Child_Process,    -- ECHILD
    No_Locks_Available,    -- ENOLCK
    No_Space_Left_On_Device,   -- ENOSPC
    No_Such_Device,    -- ENODEV
    No_Such_Device_Or_Address,   -- ENXIO
    No_Such_File_Or_Directory,   -- ENOENT
    No_Such_Process,    -- ESRCH
    Not_A_Directory,    -- ENOTDIR
    Not_Enough_Space,    -- ENOMEM
    Operation_Not_Permitted,   -- EPERM
    Permission_Denied,    -- EACCES
    Read_Only_File_System,   -- EROFS
    Resource_Busy,    -- EBUSY
    Resource_Deadlock_Avoided,   -- EDEADLK
    Resource_Temporarily_Unavailable,  -- EAGAIN
    Result_Too_Large,    -- ERANGE
    Too_Many_Links,    -- EMLINK
    Too_Many_Open_Files,    -- EMFILE
    Too_Many_Open_Files_In_System  -- ENFILE
        : exception;

private

    type String_Ptr is access Posix_String;
    type List_Elem is
        record
            Current : String_Ptr;
            Next : Posix_String_List;
        end record;

    type Posix_String_List is access List_Elem;
    Empty_String_List : constant Posix_String_List := null;
    pragma Inline (To_String);
    pragma Inline (To_Posix_String);
    pragma Inline ("&");

end Posix;

E3 Meta Data

    nblk1=7
    nid=0
    hdr6=e
        [0x00] rec0=20 rec1=00 rec2=01 rec3=05a
        [0x01] rec0=1a rec1=00 rec2=02 rec3=020
        [0x02] rec0=15 rec1=00 rec2=03 rec3=032
        [0x03] rec0=1a rec1=00 rec2=04 rec3=068
        [0x04] rec0=1c rec1=00 rec2=05 rec3=02e
        [0x05] rec0=1e rec1=00 rec2=06 rec3=04e
        [0x06] rec0=06 rec1=00 rec2=07 rec3=000
    tail 0x2151cbca0838d739ba2bc 0x42a00088462060003