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

⟦004498e6d⟧ Ada Source

    Length: 7168 (0x1c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, seg_00b509

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;
PACKAGE BODY Socket_System_Interface IS

   No_Linger    : CONSTANT Linger_Structure_Ptr := NEW Linger_Structure'(1, 1);
   System_Error : CONSTANT Unix_Base_Types.Int  := -1;

   PACKAGE Resolve_Overloading IS

      FUNCTION Socket (Af          : IN Unix_Base_Types.Int;
                       Socket_Type : IN Unix_Base_Types.Int;
                       Protocol    : IN Unix_Base_Types.Int)
                      RETURN Unix_Base_Types.Int;
      PRAGMA Interface (C, Socket);
      PRAGMA Interface_Name (Socket, "_socket");

      FUNCTION Bind (S       : IN Unix_Base_Types.Int;
                     Addr    : IN Sockaddr_In_Ptr;
                     Addrlen : IN Unix_Base_Types.Int)
                    RETURN Unix_Base_Types.Int;
      PRAGMA Interface (C, Bind);
      PRAGMA Interface_Name (Bind, "_bind");


      FUNCTION Getsockopt (S       : IN Unix_Base_Types.Int;
                           Level   : IN Unix_Base_Types.Int;
                           Optname : IN Unix_Base_Types.Int;
                           Optval  : IN Unix_Base_Types.Char_Ptr;
                           Optlen  : IN Unix_Base_Types.Int_Ptr)
                          RETURN Unix_Base_Types.Int;
      PRAGMA Interface (C, Getsockopt);
      PRAGMA Interface_Name (Getsockopt, "_getsockopt");

   END Resolve_Overloading;




   FUNCTION Linger_Struct_To_Char_Ptr IS
      NEW Unchecked_Conversion (Source => Linger_Structure_Ptr,
                                Target => Unix_Base_Types.Char_Ptr);


   FUNCTION Int_Ptr_To_Char_Ptr IS NEW Unchecked_Conversion
                                          (Source => Unix_Base_Types.Int_Ptr,
                                           Target => Unix_Base_Types.Char_Ptr);




   FUNCTION Socket (Af          : IN Unix_Base_Types.Int;
                    Socket_Type : IN Unix_Base_Types.Int;
                    Protocol    : IN Unix_Base_Types.Int)
                   RETURN Unix_Base_Types.Int IS

      Return_Value : Unix_Base_Types.Int;

   BEGIN
      Return_Value := Resolve_Overloading.Socket (Af          => Af,
                                                  Socket_Type => Socket_Type,
                                                  Protocol    => Protocol);
      RETURN Return_Value;
   END Socket;


   FUNCTION Bind (S       : IN Unix_Base_Types.Int;
                  Addr    : IN Sockaddr_In_Ptr;
                  Addrlen : IN Unix_Base_Types.Int)
                 RETURN Unix_Base_Types.Int IS

      Return_Value : Unix_Base_Types.Int;

   BEGIN

      Return_Value :=  
         Resolve_Overloading.Bind (S => S, Addr => Addr, Addrlen => Addrlen);

      DECLARE

         Allow_Reuse : CONSTANT Unix_Base_Types.Int_Ptr :=
            NEW Unix_Base_Types.Int'(1);

      BEGIN

         IF Return_Value /= System_Error THEN

            Return_Value :=
               Setsockopt (S => S,
                           Level => Sol_Socket,
                           Optname => So_Linger,
                           Optval => Linger_Struct_To_Char_Ptr (No_Linger),
                           Optlen => No_Linger.ALL'Size / System.Storage_Unit);
         END IF;

         IF Return_Value /= System_Error THEN

            Return_Value :=  
               Setsockopt
                  (S       => S,
                   Level   => Sol_Socket,
                   Optname => So_Reuseaddr,
                   Optval  => Int_Ptr_To_Char_Ptr (Allow_Reuse),
                   Optlen  => Allow_Reuse.ALL'Size / System.Storage_Unit);
         END IF;

         -- IF Return_Value /= System_Error THEN
         --    Return_Value :=
         --       Resolve_Overloading.Getsockopt (S => S,
         --                                       Level => Sol_Socket,
         --                                       Optname => So_@,
         --                                       Optval => [CHAR_PTR-expression],
         --                                       Optlen => [INT_PTR-expression]);
         -- END IF;
         --
      END;

      RETURN Return_Value;

   END Bind;
END Socket_System_Interface;

E3 Meta Data

    nblk1=6
    nid=0
    hdr6=c
        [0x00] rec0=1b rec1=00 rec2=01 rec3=054
        [0x01] rec0=00 rec1=00 rec2=06 rec3=008
        [0x02] rec0=1b rec1=00 rec2=02 rec3=072
        [0x03] rec0=23 rec1=00 rec2=03 rec3=028
        [0x04] rec0=17 rec1=00 rec2=04 rec3=03a
        [0x05] rec0=0a rec1=00 rec2=05 rec3=000
    tail 0x21708355a81fa701224b7 0x489e0066482863c01