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

⟦9f72093c1⟧ Ada Source

    Length: 31744 (0x7c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Socket_System_Interface, seg_013d80

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 Unix_Base_Types;
package Socket_System_Interface is

    Sock_Stream : constant Unix_Base_Types.Int := 1;
    Af_Inet : constant Unix_Base_Types.Short := 2;
    Inaddr_Any : constant Unix_Base_Types.U_Long := 0;


    Sol_Socket : constant := 16#FFFF#;
    So_Linger : constant := 16#80#;
    So_Dontlinger : constant := 16#EF#;
    So_Reuseaddr : constant := 16#04#;


    -- A pointer to an object of this type will be used with setsockopt
    -- during the socket command.  The initialized values tell the socket to
    -- NOT linger after a close.  All socket objects will be set to No_Linger
    -- during the Socket operation by default.
    type Linger_Structure is
        record
            L_Onoff : Unix_Base_Types.Int := 0;
            L_Linger : Unix_Base_Types.Int := 0;
        end record;

    for Linger_Structure use
        record  
            L_Onoff at 0 range 0 .. 31;
            L_Linger at 4 range 0 .. 31;
        end record;

    pragma Pack (Linger_Structure);


    type Linger_Structure_Ptr is access Linger_Structure;


    type Char_Array is array (Natural range <>) of Character;


    type Sockaddr_In is
        record
            Sin_Family : Unix_Base_Types.Short;
            Sin_Port : Unix_Base_Types.Ushort;
            Sin_Addr : Unix_Base_Types.U_Long;
            Sin_Zero : Char_Array (1 .. 8) := (others => Ascii.Nul);
        end record;

    for Sockaddr_In use
        record
            Sin_Family at 0 range 0 .. 15;
            Sin_Port at 2 range 0 .. 15;
            Sin_Addr at 4 range 0 .. 31;
            Sin_Zero at 8 range 0 .. 63;
        end record;

    type Sockaddr_In_Ptr is access Sockaddr_In;



    type Sockaddr is
        record
            Sa_Family : Unix_Base_Types.Short;
            Sa_Data : Char_Array (1 .. 14);
        end record;

    for Sockaddr use
        record
            Sa_Family at 0 range 0 .. 15;
            Sa_Data at 2 range 0 .. 111;
        end record;

    type Sockaddr_Ptr is access Sockaddr;


    type Int_Ptr is access Unix_Base_Types.Int;


    type Char_Ptr_Ptr is access Unix_Base_Types.Char_Ptrs;
    for Char_Ptr_Ptr'Storage_Size use 0;


    type Hostent is
        record
            H_Name : Unix_Base_Types.Char_Ptr;
            H_Aliases : Char_Ptr_Ptr;
            H_Addrtype : Unix_Base_Types.Int;
            H_Length : Unix_Base_Types.Int;
            H_Addr_List : Char_Ptr_Ptr;
        end record;

    for Hostent use
        record
            H_Name at 0 range 0 .. 31;
            H_Aliases at 4 range 0 .. 31;
            H_Addrtype at 8 range 0 .. 31;
            H_Length at 12 range 0 .. 31;
            H_Addr_List at 16 range 0 .. 31;
        end record;

    type Hostent_Ptr is access Hostent;
    for Hostent_Ptr'Storage_Size use 0;


    -- NAME
    --     accept - accept a connection on a socket
    --
    -- SYNOPSIS
    --     #include <sys/types.h>
    --     #include <sys/socket.h>
    --
    --     int accept(s, addr, addrlen)
    --     int s;
    --     struct sockaddr *addr;
    --     int *addrlen;
    --
    -- DESCRIPTION
    --     The argument s is  a  socket  that  has  been  created  with
    --     socket(2),  bound to an address with bind(2), and is listen-
    --     ing for connections after a  listen(2).   accept()  extracts
    --     the  first  connection  on the queue of pending connections,
    --     creates a new socket with the same properties of s and allo-
    --     cates  a  new file descriptor for the socket.  If no pending
    --     connections are present on the queue, and the socket is  not
    --     marked  as  non-blocking, accept() blocks the caller until a
    --     connection is present.  If the socket is marked non-blocking
    --     and  no  pending  connections  are  present  on  the  queue,
    --     accept() returns an error as described below.  The  accepted
    --     socket is used to read and write data to and from the socket
    --     which connected to this one; it is not used to  accept  more
    --     connections.  The original socket s remains open for accept-
    --     ing further connections.
    --
    --     The argument addr is a result parameter that  is  filled  in
    --     with  the  address of the connecting entity, as known to the
    --     communications layer.  The exact format of the addr  parame-
    --     ter  is  determined by the domain in which the communication
    --     is occurring.  The addrlen is a value-result  parameter;  it
    --     should  initially  contain the amount of space pointed to by
    --     addr; on return it will contain the actual length (in bytes)
    --     of   the   address   returned.    This  call  is  used  with
    --     connection-based socket types, currently with SOCK_STREAM.
    --
    --     It is possible to select(2) a socket  for  the  purposes  of
    --     doing an accept() by selecting it for read.
    --
    -- RETURN VALUES
    --     accept() returns a non-negative descriptor for the  accepted
    --     socket on success.  On failure, it returns -1 and sets errno
    --     to indicate the error.
    --
    function Saccept (S : in Unix_Base_Types.Int;
                      Addr : in Sockaddr_Ptr;
                      Addrlen : in Int_Ptr) return Unix_Base_Types.Int;
    pragma Interface (C, Saccept);
    pragma Linkname (Saccept, "accept");





    -- NAME
    --      bind - bind a name to a socket
    --
    -- SYNOPSIS
    --      #include <sys/types.h>
    --      #include <sys/socket.h>
    --
    --      int bind(s, name, namelen)
    --      int s;
    --      struct sockaddr *name;
    --      int namelen;
    --
    -- DESCRIPTION
    --     bind() assigns a name to an unnamed socket.  When  a  socket
    --     is created with socket(2) it exists in a name space (address
    --     family) but has no name assigned.  bind() requests that  the
    --     name pointed to by name be assigned to the socket.
    --
    -- NOTES
    --     Binding a name in the UNIX domain creates a  socket  in  the
    --     file system that must be deleted by the caller when it is no
    --     longer needed (using unlink(2V),
    --
    --     The rules used in name binding  vary  between  communication
    --     domains.   Consult  the  manual  entries  in  section  4 for
    --     detailed information.
    --
    function Bind (S : in Unix_Base_Types.Int;
                   Addr : in Sockaddr_In_Ptr;
                   Addrlen : in Unix_Base_Types.Int) return Unix_Base_Types.Int;




    -- NAME
    --     listen - listen for connections on a socket
    --
    -- SYNOPSIS
    --     int listen(s, backlog)
    --     int s, backlog;
    --
    -- DESCRIPTION
    --     To accept  connections,  a  socket  is  first  created  with
    --     socket(2),  a  backlog for incoming connections is specified
    --     with listen() and then the  connections  are  accepted  with
    --     accept(2).   The  listen()  call  applies only to sockets of
    --     type SOCK_STREAM or SOCK_SEQPACKET.
    --
    --     The backlog parameter defines the maximum length  the  queue
    --     of pending connections may grow to.  If a connection request
    --     arrives with the queue full the client will receive an error
    --     with an indication of ECONNREFUSED.
    --
    -- RETURN VALUES
    --     listen() returns:
    --
    --     0    on success.
    --
    --     -1   on failure and sets errno to indicate the error.
    --
    function Listen (S : in Unix_Base_Types.Int;  
                     Backlog : in Unix_Base_Types.Int)
                    return Unix_Base_Types.Int;
    pragma Interface (C, Listen);
    pragma Linkname (Listen, "listen");



    -- NAME
    --     socket - create an endpoint for communication
    --
    -- SYNOPSIS
    --     #include <sys/types.h>
    --     #include <sys/socket.h>
    --
    --     int socket(domain, type, protocol)
    --     int domain, type, protocol;
    --
    -- DESCRIPTION
    --     socket() creates an endpoint for communication and returns a
    --     descriptor.
    --
    --     The  domain  parameter  specifies  a  communications  domain
    --     within which communication will take place; this selects the
    --     protocol family which should be used.  The  protocol  family
    --     generally  is  the  same  as  the  address  family  for  the
    --     addresses supplied in later operations on the socket.  These
    --     families  are  defined  in  the include file <sys/socket.h>.
    --     The currently understood formats are
    --
    --          PF_UNIX             (UNIX system internal protocols),
    --
    --          PF_INET             (ARPA Internet protocols), and
    --
    --          PF_IMPLINK          (IMP "host at IMP" link layer).
    --
    --     The socket has  the  indicated  type,  which  specifies  the
    --     semantics of communication.  Currently defined types are:
    --
    --          SOCK_STREAM
    --          SOCK_DGRAM
    --          SOCK_RAW
    --          SOCK_SEQPACKET
    --          SOCK_RDM
    --
    --     A SOCK_STREAM type  provides  sequenced,  reliable,  two-way
    --     connection   based   byte   streams.   An  out-of-band  data
    --     transmission  mechanism  may  be  supported.   A  SOCK_DGRAM
    --     socket  supports  datagrams (connectionless, unreliable mes-
    --     sages of  a  fixed  (typically  small)  maximum  length).  A
    --     SOCK_SEQPACKET  socket  may  provide  a sequenced, reliable,
    --     two-way  connection-based   data   transmission   path   for
    --     datagrams  of  fixed  maximum  length;  a  consumer  may  be
    --     required to read an entire  packet  with  each  read  system
    --     call.  This facility is protocol specific, and presently not
    --     implemented for any protocol family.  SOCK_RAW sockets  pro-
    --     vide  access  to  internal  network  interfaces.   The types
    --     SOCK_RAW, which is available only  to  the  super-user,  and
    --     SOCK_RDM,  for which no implementation currently exists, are
    --     not described here.
    --
    --     The protocol specifies a particular protocol to be used with
    --     the  socket.  Normally only a single protocol exists to sup-
    --     port a particular socket type within a given  protocol  fam-
    --     ily.  However, it is possible that many protocols may exist,
    --     in which case a particular protocol  must  be  specified  in
    --     this  manner.   The  protocol number to use is particular to
    --     the "communication domain" in which communication is to take
    --     place; see protocols(5).
    --
    --     Sockets of type SOCK_STREAM are  full-duplex  byte  streams,
    --     similar  to  pipes.   A stream socket must be in a connected
    --     state before any data may be sent or received on it.  A con-
    --     nection to another socket is created with a connect(2) call.
    --     Once connected, data may be transferred using  read(2V)  and
    --     write(2V)  calls  or some variant of the send(2) and recv(2)
    --     calls.  When a session has been completed a  close(2V),  may
    --     be  performed.   Out-of-band data may also be transmitted as
    --     described in send(2) and received as described in recv(2).
    --
    --     The communications protocols used to implement a SOCK_STREAM
    --     insure  that  data is not lost or duplicated.  If a piece of
    --     data for which the peer protocol has buffer space cannot  be
    --     successfully transmitted within a reasonable length of time,
    --     then the connection is  considered  broken  and  calls  will
    --     indicate  an error with -1 returns and with ETIMEDOUT as the
    --     specific code in the global variable errno.   The  protocols
    --     optionally  keep  sockets  "warm"  by  forcing transmissions
    --     roughly every minute in the absence of other  activity.   An
    --     error is then indicated if no response can be elicited on an
    --     otherwise  idle  connection  for  a  extended  period   (for
    --     instance  5  minutes).  A SIGPIPE signal is raised if a pro-
    --     cess sends on a broken stream; this causes naive  processes,
    --     which do not handle the signal, to exit.
    --
    --     SOCK_SEQPACKET sockets  employ  the  same  system  calls  as
    --     SOCK_STREAM  sockets.   The only difference is that read(2V)
    --     calls will return only the amount of data requested, and any
    --     remaining in the arriving packet will be discarded.
    --
    --     SOCK_DGRAM and SOCK_RAW sockets allow sending  of  datagrams
    --     to  correspondents  named  in  send(2) calls.  Datagrams are
    --     generally received with  recv(2),  which  returns  the  next
    --     datagram with its return address.
    --
    --     An fcntl(2V) call can be used to specify a process group  to
    --     receive  a  SIGURG signal when the out-of-band data arrives.
    --     It may also enable non-blocking I/O and asynchronous notifi-
    --     cation of I/O events with SIGIO signals.
    --
    --     The operation of  sockets  is  controlled  by  socket  level
    --     options.   These  options  are defined in the file socket.h.
    --     getsockopt(2) and setsockopt()  are  used  to  get  and  set
    --     options, respectively.
    --
    -- RETURN VALUES
    --     socket() returns a non-negative descriptor on  success.   On
    --     failure, it returns -1 and sets errno to indicate the error.

    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;



    -- NAME
    --     connect - initiate a connection on a socket
    --
    -- SYNOPSIS
    --     #include <sys/types.h>
    --     #include <sys/socket.h>
    --
    --
    --     int connect(s, name, namelen)
    --     int s;
    --     struct sockaddr *name;
    --     int namelen;
    --
    -- DESCRIPTION
    --     The parameter s is a socket.  If it is of  type  SOCK_DGRAM,
    --     then  this  call specifies the peer with which the socket is
    --     to be associated; this address is that  to  which  datagrams
    --     are  to  be  sent, and the only address from which datagrams
    --     are to be received.  If it is of type SOCK_STREAM, then this
    --     call  attempts  to make a connection to another socket.  The
    --     other socket is specified by name which is an address in the
    --     communications  space  of  the  socket.  Each communications
    --     space interprets the name parameter in its  own  way.   Gen-
    --     erally, stream sockets may successfully connect() only once;
    --     datagram sockets may use connect() multiple times to  change
    --     their  association.  Datagram sockets may dissolve the asso-
    --     ciation by connecting to an invalid address, such as a  null
    --     address.
    --
    -- RETURN VALUES
    --     connect() returns:
    --
    --     0    on success.
    --
    --     -1   on failure and sets errno to indicate the error.
    --
    function Connect (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, Connect);
    pragma Linkname (Connect, "connect");




    -- NAME
    --     gethostent,   gethostbyaddr,   gethostbyname,    sethostent,
    --     endhostent - get network host entry
    --
    -- SYNOPSIS
    --     #include <sys/types.h>
    --     #include <sys/socket.h>
    --     #include <netdb.h>
    --
    --     struct hostent *gethostent()
    --
    --     struct hostent *gethostbyname(name)
    --     char *name;
    --
    --     struct hostent *gethostbyaddr(addr, len, type)
    --     char *addr;
    --     int len, type;
    --
    --     sethostent(stayopen)
    --     int stayopen
    --     endhostent()
    --
    -- DESCRIPTION
    --     gethostent, gethostbyname, and gethostbyaddr() each return a
    --     pointer to an object with the following structure containing
    --     the broken-out fields of a line in  the  network  host  data
    --     base, /etc/hosts.  In the case of gethostbyaddr(), addr is a
    --     pointer to the binary format address of length  len  (not  a
    --     character string).
    --
    --          struct    hostent {
    --               char *h_name;  /* official name of host */
    --               char **h_aliases;   /* alias list */
    --               int  h_addrtype;    /* address type */
    --               int  h_length; /* length of address */
    --               char **h_addr_list; /* list of addresses from name server */
    --          };
    --
    --     The members of this structure are:
    --
    --     h_name              Official name of the host.
    --
    --     h_aliases           A zero  terminated  array  of  alternate
    --                         names for the host.
    --
    --     h_addrtype          The  type  of  address  being  returned;
    --                         currently always AF_INET.
    --
    --     h_length            The length, in bytes, of the address.
    --
    --     h_addr_list         A pointer to a list of network addresses
    --                         for  the named host.  Host addresses are
    --                         returned in network byte order.
    --
    --     gethostent() reads the next line of the  file,  opening  the
    --     file if necessary.
    --
    --     sethostent() opens and rewinds the file.   If  the  stayopen
    --     flag  is  non-zero,  the  host  data base will not be closed
    --     after  each  call  to  gethostent()  (either  directly,   or
    --     indirectly through one of the other "gethost" calls).
    --
    --     endhostent() closes the file.
    --
    --     gethostbyname() and gethostbyaddr() sequentially search from
    --     the beginning of the file until a matching host name or host
    --     address is found, or until end-of-file is encountered.  Host
    --     addresses are supplied in network order.
    function Gethostbyname (Host : in Unix_Base_Types.Char_Ptr)  
                           return Hostent_Ptr;
    pragma Interface (C, Gethostbyname);
    pragma Linkname (Gethostbyname, "gethostbyname");



    -- NAME
    --     shutdown - shut down part of a full-duplex connection
    --
    -- SYNOPSIS
    --     int shutdown(s, how)
    --     int s, how;
    --
    -- DESCRIPTION
    --     The shutdown() call causes all or part of a full-duplex con-
    --     nection on the socket associated with s to be shut down.  If
    --     how is 0, then further receives will be disallowed.  If  how
    --     is  1,  then further sends will be disallowed.  If how is 2,
    --     then further sends and receives will be disallowed.
    --
    -- RETURN VALUES
    --     shutdown() returns:
    --
    --     0    on success.
    --
    --     -1   on failure and sets errno to indicate the error.
    --
    function Shutdown (S : in Unix_Base_Types.Int;  
                       How : in Unix_Base_Types.Int)  
                      return Unix_Base_Types.Int;
    pragma Interface (C, Shutdown);
    pragma Linkname (Shutdown, "shutdown");




    -- NAME
    --     getsockopt, setsockopt - get and set options on sockets
    --
    -- SYNOPSIS
    --     #include <sys/types.h>
    --     #include <sys/socket.h>
    --
    --     int getsockopt(s, level, optname, optval, optlen)
    --     int s, level, optname;
    --     char *optval;
    --     int *optlen;
    --
    --     int setsockopt(s, level, optname, optval, optlen)
    --     int s, level, optname;
    --     char *optval;
    --     int optlen;
    --
    -- DESCRIPTION
    --     getsockopt() and setsockopt() manipulate options  associated
    --     with  a socket.  Options may exist at multiple protocol lev-
    --     els; they are always present  at  the  uppermost  ``socket''
    --     level.
    --
    --     When manipulating socket options  the  level  at  which  the
    --     option resides and the name of the option must be specified.
    --     To manipulate options at  the  ``socket''  level,  level  is
    --     specified as SOL_SOCKET.  To manipulate options at any other
    --     level the protocol number of the appropriate  protocol  con-
    --     trolling  the  option is supplied.  For example, to indicate
    --     that an option is to be interpreted  by  the  TCP  protocol,
    --     level  should  be  set  to  the  protocol number of TCP; see
    --     getprotoent(3N).
    --
    --     The parameters optval and optlen are used to  access  option
    --     values  for  setsockopt().  For getsockopt() they identify a
    --     buffer in which the value for the requested option(s) are to
    --     be  returned.   For  getsockopt(),  optlen is a value-result
    --     parameter, initially  containing  the  size  of  the  buffer
    --     pointed to by optval, and modified on return to indicate the
    --     actual size of the value returned.  If no option value is to
    --     be supplied or returned, optval may be supplied as 0.
    --
    --     optname and any specified options are  passed  uninterpreted
    --     to  the appropriate protocol module for interpretation.  The
    --     include  file  <sys/socket.h>   contains   definitions   for
    --     ``socket'' level options, described below.  Options at other
    --     protocol  levels  vary  in  format  and  name;  consult  the
    --     appropriate entries in section (4P).
    --
    --     Most socket-level options take an int parameter for  optval.
    --     For setsockopt(), the parameter should be non-zero to enable
    --     a boolean option, or zero if the option is to  be  disabled.
    --
    --     SO_LINGER   uses  a  struct  linger  parameter,  defined  in
    --     <sys/socket.h>, which specifies the  desired  state  of  the
    --     option and the linger interval (see below).
    --
    --     The following options are recognized at  the  socket  level.
    --     Except  as noted, each may be examined with getsockopt() and
    --     set with setsockopt().
    --
    --          SO_DEBUG            toggle   recording   of   debugging
    --                              information
    --          SO_REUSEADDR        toggle local address reuse
    --          SO_KEEPALIVE        toggle keep connections alive
    --          SO_DONTROUTE        toggle routing bypass for  outgoing
    --                              messages
    --          SO_LINGER           linger on close if data present
    --          SO_BROADCAST        toggle   permission   to   transmit
    --                              broadcast messages
    --          SO_OOBINLINE        toggle  reception  of   out-of-band
    --                              data in band
    --          SO_SNDBUF           set buffer size for output
    --          SO_RCVBUF           set buffer size for input
    --          SO_TYPE             get the type  of  the  socket  (get
    --                              only)
    --          SO_ERROR            get and clear error on  the  socket
    --                              (get only)
    --
    --     SO_DEBUG  enables  debugging  in  the  underlying   protocol
    --     modules.   SO_REUSEADDR  indicates  that  the  rules used in
    --     validating addresses supplied in a bind(2) call should allow
    --     reuse of local addresses.  SO_KEEPALIVE enables the periodic
    --     transmission of messages on a connected socket.  Should  the
    --     connected  party fail to respond to these messages, the con-
    --     nection is considered broken.  A process attempting to write
    --     to the socket receives a SIGPIPE signal and the write opera-
    --     tion returns an error.  By default, a process exits when  it
    --     receives SIGPIPE.  A read operation on the socket returns an
    --     error but does not generate  SIGPIPE.   If  the  process  is
    --     waiting in select(2) when the connection is broken, select()
    --     returns true for any read or write events selected  for  the
    --     socket.    SO_DONTROUTE  indicates  that  outgoing  messages
    --     should bypass the  standard  routing  facilities.   Instead,
    --     messages  are  directed to the appropriate network interface
    --     according to the network portion of the destination address.
    --
    --     SO_LINGER controls the action taken when unsent messags  are
    --     queued  on  socket  and  a  close(2V)  is performed.  If the
    --     socket promises reliable delivery of data and  SO_LINGER  is
    --     set,  the  system  will  block  the  process  on the close()
    --     attempt until it is able to transmit the data  or  until  it
    --     decides  it  is unable to deliver the information (a timeout
    --     period, termed the linger interval, is specified in the set-
    --     sockopt()  call  when SO_LINGER is requested).  If SO_LINGER
    --     is disabled and a close() is issued, the system will process
    --     the close in a manner that allows the process to continue as
    --     quickly as possible.
    --
    --     The option SO_BROADCAST requests permission to  send  broad-
    --     cast  datagrams  on  the socket.  Broadcast was a privileged
    --     operation in earlier versions of the system.  With protocols
    --     that  support  out-of-band  data,  the  SO_OOBINLINE  option
    --     requests that out-of-band data be placed in the normal  data
    --     input  queue  as  received;  it will then be accessible with
    --     recv() or read() calls without the MSG_OOB flag.   SO_SNDBUF
    --     and  SO_RCVBUF are options to adjust the normal buffer sizes
    --     allocated for output and input buffers,  respectively.   The
    --     buffer size may be increased for high-volume connections, or
    --     may be decreased to limit the possible backlog  of  incoming
    --     data.   The system places an absolute limit on these values.
    --     Finally, SO_TYPE and SO_ERROR are  options  used  only  with
    --     getsockopt().   SO_TYPE returns the type of the socket, such
    --     as SOCK_STREAM; it is useful for servers that inherit  sock-
    --     ets  on  startup.  SO_ERROR returns any pending error on the
    --     socket and clears the error status.  It may be used to check
    --     for asynchronous errors on connected datagram sockets or for
    --     other asynchronous errors.
    --
    -- RETURN VALUES
    --     getsockopt() and setsockopt() return:
    --
    --     0    on success.
    --
    --     -1   on failure and set errno to indicate the error.
    function Setsockopt (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)
                        return Unix_Base_Types.Int;
    pragma Interface (C, Setsockopt);
    pragma Linkname (Setsockopt, "setsockopt");



    -- NAME
    --     unlink - remove directory entry
    --
    -- SYNOPSIS
    --     int unlink(path)
    --     char *path;
    --
    -- DESCRIPTION
    --     unlink() removes the directory entry named by  the  pathname
    --     pointed to by path and decrements the link count of the file
    --     referred to by that entry.  If this entry was the last  link
    --     to  the  file,  and  no  process has the file open, then all
    --     resources associated with the file are reclaimed.  If,  how-
    --     ever,  the file was open in any process, the actual resource
    --     reclamation is delayed until it is closed, even  though  the
    --     directory entry has disappeared.
    --
    --     If path refers to a directory, the effective user-ID of  the
    --     calling process must be super-user.
    --
    --     Upon successful completion, unlink() marks  for  update  the
    --     st_ctime and st_mtime fields of the parent directory.  Also,
    --     if the file's link count is not zero, the st_ctime field  of
    --     the file is marked for update.
    --
    -- RETURN VALUES
    --     unlink() returns:
    --
    --     0    on success.
    --
    --     -1   on failure and sets errno to indicate the error.
    --
    function Unlink (Path : Unix_Base_Types.Char_Ptr)
                    return Unix_Base_Types.Int;
    pragma Interface (C, Unlink);
    pragma Linkname (Unlink, "unlink");


end Socket_System_Interface;

E3 Meta Data

    nblk1=1e
    nid=0
    hdr6=3c
        [0x00] rec0=1e rec1=00 rec2=01 rec3=026
        [0x01] rec0=28 rec1=00 rec2=02 rec3=004
        [0x02] rec0=25 rec1=00 rec2=03 rec3=006
        [0x03] rec0=15 rec1=00 rec2=04 rec3=020
        [0x04] rec0=10 rec1=00 rec2=05 rec3=022
        [0x05] rec0=20 rec1=00 rec2=06 rec3=012
        [0x06] rec0=1c rec1=00 rec2=07 rec3=012
        [0x07] rec0=16 rec1=00 rec2=08 rec3=024
        [0x08] rec0=1a rec1=00 rec2=09 rec3=08a
        [0x09] rec0=16 rec1=00 rec2=0a rec3=030
        [0x0a] rec0=0f rec1=00 rec2=0b rec3=04a
        [0x0b] rec0=10 rec1=00 rec2=0c rec3=04c
        [0x0c] rec0=0f rec1=00 rec2=0d rec3=03c
        [0x0d] rec0=13 rec1=00 rec2=0e rec3=05c
        [0x0e] rec0=1c rec1=00 rec2=0f rec3=054
        [0x0f] rec0=16 rec1=00 rec2=10 rec3=010
        [0x10] rec0=20 rec1=00 rec2=11 rec3=02e
        [0x11] rec0=17 rec1=00 rec2=12 rec3=04e
        [0x12] rec0=13 rec1=00 rec2=13 rec3=030
        [0x13] rec0=1d rec1=00 rec2=14 rec3=030
        [0x14] rec0=1f rec1=00 rec2=15 rec3=044
        [0x15] rec0=0f rec1=00 rec2=16 rec3=064
        [0x16] rec0=12 rec1=00 rec2=17 rec3=056
        [0x17] rec0=11 rec1=00 rec2=18 rec3=044
        [0x18] rec0=0f rec1=00 rec2=19 rec3=07a
        [0x19] rec0=0f rec1=00 rec2=1a rec3=042
        [0x1a] rec0=0f rec1=00 rec2=1b rec3=05a
        [0x1b] rec0=13 rec1=00 rec2=1c rec3=072
        [0x1c] rec0=19 rec1=00 rec2=1d rec3=068
        [0x1d] rec0=16 rec1=00 rec2=1e rec3=000
    tail 0x2150ea7ce830c6c938840 0x42a00088462060003