home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD v1.2 / amidev_cd_12.iso / devcon / milan_1991 / devcon91.2 / network / socket / socket.doc < prev   
Text File  |  1992-09-01  |  73KB  |  2,888 lines

  1. TABLE OF CONTENTS
  2.  
  3. background
  4. socket.library/accept
  5. socket.library/bind
  6. socket.library/cleanup_sockets
  7. socket.library/connect
  8. socket.library/endhostent
  9. socket.library/endnetent
  10. socket.library/endprotoent
  11. socket.library/endpwent
  12. socket.library/endservent
  13. socket.library/FD_SET
  14. socket.library/get_tz
  15. socket.library/getdomainname
  16. socket.library/getgid
  17. socket.library/getgroups
  18. socket.library/gethostbyaddr
  19. socket.library/gethostbyname
  20. socket.library/gethostent
  21. socket.library/gethostname
  22. socket.library/getlogin
  23. socket.library/getnetbyaddr
  24. socket.library/getnetbyname
  25. socket.library/getnetent
  26. socket.library/getpeername
  27. socket.library/getprotobyname
  28. socket.library/getprotobynumber
  29. socket.library/getprotoent
  30. socket.library/getpwent
  31. socket.library/getpwnam
  32. socket.library/getpwuid
  33. socket.library/getservbyname
  34. socket.library/getservbyport
  35. socket.library/getservent
  36. socket.library/getsockname
  37. socket.library/getsockopt
  38. socket.library/getuid
  39. socket.library/getumask
  40. socket.library/inet_addr
  41. socket.library/inet_lnaof
  42. socket.library/inet_makeaddr
  43. socket.library/inet_netof
  44. socket.library/inet_network
  45. socket.library/inet_ntoa
  46. socket.library/listen
  47. socket.library/rcmd
  48. socket.library/reconfig
  49. socket.library/recv
  50. socket.library/s_close
  51. socket.library/s_getsignal
  52. socket.library/s_ioctl
  53. socket.library/select
  54. socket.library/selectwait
  55. socket.library/send
  56. socket.library/sethostent
  57. socket.library/setnetent
  58. socket.library/setprotoent
  59. socket.library/setpwent
  60. socket.library/setservent
  61. socket.library/setsockopt
  62. socket.library/setup_sockets
  63. socket.library/shutdown
  64. socket.library/socket
  65. socket.library/strerror
  66. socket.library/syslog
  67. socket.library/umask
  68. background                                                         background
  69.  
  70.     What is a socket library?
  71.  
  72.  The standard programmer's interface to network protocols on most
  73.  Un*x machines is the Berkley socket abstraction.  It is usually
  74.  provided as a link library. You should have as documentation the
  75.  books "Unix Network Programming" by W. Richard Stephens
  76.  (Prentice-Hall, 1990) and "Internetworking with TCP/IP, Volume II"
  77.  by Douglas Comer and David Stephens (Prentice-Hall, 1991).  We
  78.  don't get a kick-back from Prentice-Hall, but we do use these books
  79.  every day and we do know that writing programs using TCP/IP and
  80.  sockets can be difficult.
  81.  
  82.     Why a shared socket library?
  83.  
  84.  A shared library provides many benefits.  First, it greatly reduces
  85.  code size.  Second, it is compiler-independent.  However, the most
  86.  important benefit is that it is easily upgradable.  New libraries
  87.  with bug fixes, speed improvements, or additional functions can be
  88.  utilized by existing code without recompilation.  In the case of
  89.  the socket library, this means we can later add support for name
  90.  resolution, better configuration, DES, etc.
  91.  
  92.     Who should use this?
  93.  
  94.  Everyone.  The link socket library that received very limited alpha
  95.  distribution is obsolete.  Our primary goal in writing this socket
  96.  library is compatibility. BSD, SVR4, X/Open, POSIX and OSF sources
  97.  have been consulted when necessary.  All standard Unix socket
  98.  functions, with all their peculiarities have been faithfully ported
  99.  :^)  Unfortunately, due to the fact that these functions were not
  100.  designed with shared libraries or the Amiga in mind, some
  101.  compromises were made.
  102.  
  103.     How to use this?
  104.  
  105.  See "What is a socket library?" above.  To port existing socket code
  106.  (from Un*x or from our obsolete link library), you must:
  107.  
  108.     OpenLibrary the socket.library and call setup_sockets()
  109.     not call read() or write() on sockets (use send() and recv())
  110.     call s_close() rather than close() for sockets
  111.     call s_ioctl() rather than ioctl() for sockets
  112.  
  113.  In case you're wondering, our old link library was
  114.  compiler-specific and included the compiler's library code for
  115.  read(), write(), close() and ioctl(). On Un*x machines, these
  116.  functions are just calls to the kernel which can deal with sockets
  117.  and other files.  Obviously, this is not possible with a shared
  118.  library on a machine where these functions come from link
  119.  libraries, hence the s_*() functions.
  120.  
  121.     About errno:
  122.  
  123.  'C' programmers should be familiar with the global variable
  124.  'errno.'  It is used extensively in standard socket implementations
  125.  to provide details about error conditions.  We take care of this in
  126.  the shared library by passing a pointer to 'errno' into the shared
  127.  library with setup_sockets().  You can, of course, pass a pointer
  128.  to any longword-aligned, four-byte chunk of memory you own, so this
  129.  will work for non-'C'-language programmers.
  130.  
  131.     About integers:
  132.  
  133.  All integers are assumed to be 32-bit.  None are specified as long
  134.  in order to maintain Un*x compatibility.  If you are using a
  135.  compiler which doesn't use 32-bit ints, you must make sure that all
  136.  ints are converted to longs by your code.
  137.  
  138.     About assembly langauge:
  139.  
  140.  To be complete, we probably should include assembly header files.
  141.  We don't.
  142.  
  143.     About the get*() functions:
  144.  
  145.  This is standard with the Un*x functions, too, but is worth noting:
  146.  These function return a pointer to a static buffer.  The buffer returned
  147.  by a call to getX*() is cleared on the next invocation of getX*().  For
  148.  example, the buffer pointed to by the return of gethostent() is cleared
  149.  by a call to gethostent(), gethostbyaddr() or gethostbyname(), but not
  150.  by a call to getprotoent(), etc.
  151.  
  152.  As noted in the autodocs, none of the get*ent(), set*ent() or end*ent()
  153.  functions should normally be used except for in porting existing programs
  154.  (and internally).
  155.  
  156.     About library bases:
  157.  
  158.  The shared socket library returns a different library base for each
  159.  OpenLib() and uses these different library bases to keep track of some
  160.  global data for each opener.  If you start a new process with a new
  161.  context, the new process must open and initialize socket.library.  Mere
  162.  tasks should not access the socket.library, only processes should.
  163.  
  164.     Example:
  165.  
  166.  /* your includes */
  167.  #include <exec/types.h>
  168.  #include <exec/libraries.h>
  169.  #include <exec/execbase.h>
  170.  #include <dos/dos.h>
  171.  #include <proto/all.h>
  172.  #include <sys/types.h>
  173.  #include <sys/socket.h>
  174.  #include <stdio.h>
  175.  #include <errno.h>
  176.  
  177.  /* the next two lines must always be here */
  178.  #include <ss/socket.h>
  179.  struct Library *SockBase ;
  180.  
  181.  /* this is the maximum number of sockets that you want */
  182.  #define MAXSOCKS 10
  183.  
  184.  main()
  185.  {
  186.     if((SockBase = OpenLibrary( "inet:libs/socket.library", 1L )) == NULL) {
  187.         printf("Error opening socket.library\n");
  188.         Exit(10);
  189.     }
  190.     setup_sockets( MAXSOCKS, &errno );
  191.  
  192.     /* normal socket code... (see AS225 dev disk for complete examples) */
  193.  
  194.     cleanup_sockets();
  195.     CloseLibrary( SockBase ) ;
  196.  }
  197.  
  198.     Legalese:
  199.  
  200.  This shared socket library (and it's documentation) are Copyright © 1991
  201.  Commodore-Amiga, Inc.  All Rights Reserved.  The shared socket library
  202.  was written by Martin Hunt.  Dale Larson helped with the documentation and
  203.  testing.
  204.  
  205.  Parts of this shared socket library and the associated header files are
  206.  derived from code which is:
  207.  
  208.  Copyright (c) 1983 Regents of the University of California.
  209.  All rights reserved.
  210.  
  211.  Redistribution and use in source and binary forms are permitted
  212.  provided that the above copyright notice and this paragraph are
  213.  duplicated in all such forms and that any documentation,
  214.  advertising materials, and other materials related to such
  215.  distribution and use acknowledge that the software was developed
  216.  by the University of California, Berkeley.  The name of the
  217.  University may not be used to endorse or promote products derived
  218.  from this software without specific prior written permission.
  219.  THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  220.  IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  221.  WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  222.  
  223. socket.library/accept                                   socket.library/accept
  224.  
  225.    NAME
  226.     accept -- Accept new connection from socket.
  227.  
  228.    SYNOPSIS
  229.     ns = accept( s, name, len )
  230.     D0           D0 A0    A1
  231.  
  232.     int accept(int, struct sockaddr *, int *);
  233.  
  234.    FUNCTION
  235.     Servers using TCP (or another connection-oriented protocol) accept()
  236.     connections initiated by a client program.  The connections are
  237.     generally accept()ed on a socket which on which bind() and listen()
  238.     have been executed.  Unless there is an error, accept() will return
  239.     a new socket which is connected to the client.  The server can then
  240.     use the new socket ('ns') to communicate with the client (via send()
  241.     and recv()) and still accept() new connections on the old socket
  242.     ('s').
  243.  
  244.     'Len' should be initialized to the amount of space pointed
  245.     to by 'name.'  The actual size of 'name' will be returned in
  246.     'namelen' and 'name' will contain the name of the socket initiating
  247.     the connect().  This saves the server from needing to do a
  248.     getpeername() for new connections.
  249.  
  250.     Accept() generally blocks until a client attempts a connect().
  251.     You may use select() to determine whether a connection is pending,
  252.     or use a non-blocking socket (see setsockopts()).
  253.  
  254.    INPUTS
  255.     s        - socket descriptor.
  256.     name        - name of the peer socket.
  257.     len        - pointer to the length of the sockaddr struct.
  258.               The value returned will be the actual size of the
  259.               sockaddr struct that was returned.
  260.  
  261.    RESULT
  262.     ns        - new socket descriptor or -1 (errno will be set to
  263.               reflect exact error condition).
  264.  
  265.    EXAMPLE
  266.  
  267.    NOTES
  268.  
  269.    BUGS
  270.  
  271.    SEE ALSO
  272.     socket(), bind(), listen()
  273.  
  274. socket.library/bind                                       socket.library/bind
  275.  
  276.    NAME
  277.     bind -- Bind a name to a socket.
  278.  
  279.    SYNOPSIS
  280.     return = bind( s, name, namelen )
  281.     D0             D0 A1    D1
  282.  
  283.     int bind(int, struct sockaddr *, int);
  284.  
  285.    FUNCTION
  286.     Assigns a name to an unnamed socket.
  287.  
  288.     Connection-oriented servers generally bind() a socket to a well-
  289.     known address and listen() at that socket, accept()ing connections
  290.     from clients who know the address.
  291.  
  292.     Connectionless servers generally bind() a socket to a well-known
  293.     address and recvfrom() that socket.
  294.  
  295.     Most servers should build 'name' from a well-known port obtained
  296.     from getservbyname().  Hard-coded ports are often used in prototype
  297.     servers, but should never be used in production code.  For more
  298.     information on port numbering, see your favorite TCP/IP refrence.
  299.  
  300.    INPUTS
  301.     s        - socket descriptor.
  302.     name        - address to bind to socket 's.'
  303.     namelen        - length (in bytes) of 'name.'
  304.  
  305.    RESULT
  306.     return        - 0 if successful else -1 (errno will contain the
  307.               specific error).
  308.  
  309.    EXAMPLE
  310.  
  311.    NOTES
  312.  
  313.    BUGS
  314.  
  315.    SEE ALSO
  316.     socket(), listen(), accept()
  317.  
  318. socket.library/cleanup_sockets                 socket.library/cleanup_sockets
  319.  
  320.    NAME
  321.     cleanup_sockets -- Free global data for sockets.
  322.  
  323.    SYNOPSIS
  324.     cleanup_sockets( );
  325.  
  326.     void cleanup_sockets( void );
  327.  
  328.    FUNCTION
  329.     This function frees all signals and allocated memory.
  330.     It closes all open sockets.  This function should be
  331.     called after all socket functions are completed and before
  332.     CloseLibrary().
  333.  
  334.    INPUTS
  335.     None.
  336.  
  337.    RESULT
  338.     None.
  339.  
  340.    BUGS
  341.  
  342.    SEE ALSO
  343.     setup_sockets()
  344.  
  345. socket.library/connect                                 socket.library/connect
  346.  
  347.    NAME
  348.     connect -- Connect to socket.
  349.  
  350.    SYNOPSIS
  351.     return = connect( s, name, namelen )
  352.     D0                D0  A1     D1
  353.  
  354.     int connect(int, struct sockaddr *, int);
  355.  
  356.    FUNCTION
  357.     To communicate with a server using a connection-oriented protocol
  358.     (i.e. TCP), the client must connect() a socket obtained by the
  359.     client (from socket()) to the server's well-known address.  (The
  360.     server will receive (from accept()) a new socket which is connected
  361.     to the socket which the client is connect()ing to the server.)
  362.  
  363.     Clients of a connectionless server (i.e. one using UDP) can use
  364.     connect() and send() rather than always using sendto().  In this
  365.     case, no actual connection is created, the address to send to is
  366.     just stored with the socket.
  367.  
  368.     Most clients should build 'name' from a well-known port obtained from
  369.     getservbyname().  Hard-coded ports are often used in prototype
  370.     clients, but should never be used in production code.  For more
  371.     information on port numbering, see your favorite TCP/IP refrence.
  372.  
  373.    INPUTS
  374.     s        - socket descriptor.
  375.     name        - address of socket to connect 's' to.
  376.     namelen        - length of 'name.'
  377.  
  378.    RESULT
  379.     return        - 0 if successful else -1 (errno will contain the
  380.               specific error).
  381.  
  382.    EXAMPLE
  383.  
  384.    NOTES
  385.  
  386.    BUGS
  387.  
  388.    SEE ALSO
  389.     socket(), bind(), listen(), accept()
  390.  
  391. socket.library/endhostent                           socket.library/endhostent
  392.  
  393.    NAME
  394.     endhostent -- Closes the hosts file ("inet:s/hosts").
  395.  
  396.    SYNOPSIS
  397.     endhostent()
  398.  
  399.     void endhostent( void );
  400.  
  401.    FUNCTION
  402.     Closes the host file if it is open.  Only needed if sethostent()
  403.     or gethostent() have been called.
  404.  
  405.    INPUTS
  406.     None.
  407.  
  408.    RESULT
  409.     None.
  410.  
  411.    EXAMPLE
  412.  
  413.    NOTES
  414.  
  415.    BUGS
  416.  
  417.    SEE ALSO
  418.     gethostent(), gethostbyname(), gethostbyaddr(), sethostent()
  419.  
  420. socket.library/endnetent                             socket.library/endnetent
  421.  
  422.    NAME
  423.     endnetent -- Closes the networks file.
  424.  
  425.    SYNOPSIS
  426.     endnetent( )
  427.  
  428.     void endnetent( void );
  429.  
  430.    FUNCTION
  431.     Closes the host file if it is open.  This is only needed if
  432.     setnetent() or getnetent() has been called.
  433.  
  434.    INPUTS
  435.     None.
  436.  
  437.    RESULT
  438.     None.
  439.  
  440.    EXAMPLE
  441.  
  442.    NOTES
  443.  
  444.    BUGS
  445.  
  446.    SEE ALSO
  447.     getnetent(), getnetbyname(), getnetbyaddr(), setnetent()
  448.  
  449. socket.library/endprotoent                         socket.library/endprotoent
  450.  
  451.    NAME
  452.     endprotoent -- Closes the protocols file.
  453.  
  454.    SYNOPSIS
  455.     endprotoent( )
  456.  
  457.     void endprotoent( void );
  458.  
  459.    FUNCTION
  460.     Closes the protocols file if it is open.  This function is needed
  461.     only if getprotoent() or setprotoent() have been called.
  462.  
  463.    INPUTS
  464.     None.
  465.  
  466.    RESULT
  467.     None.
  468.  
  469.    EXAMPLE
  470.  
  471.    NOTES
  472.  
  473.    BUGS
  474.  
  475.    SEE ALSO
  476.     getprotoent(), setprotoent(), getprotobyname(), getprotobynumber()
  477.  
  478. socket.library/endpwent                               socket.library/endpwent
  479.  
  480.    NAME
  481.     endpwent - Closes the password file.
  482.  
  483.    SYNOPSIS
  484.     endpwent()
  485.  
  486.     void endpwent( void );
  487.  
  488.    FUNCTION
  489.     Closes the password file if it was open.
  490.  
  491.    INPUTS
  492.     None.
  493.  
  494.    RESULT
  495.     None.
  496.  
  497.    SEE ALSO
  498.     getpwent(), setpwent()
  499.  
  500. socket.library/endservent                           socket.library/endservent
  501.  
  502.    NAME
  503.     endservent -- Closes the services file.
  504.  
  505.    SYNOPSIS
  506.     endservent()
  507.  
  508.     void endservent( void );
  509.  
  510.    FUNCTION
  511.     Closes the services file if it is open.  This function is needed
  512.     only if setservent() or getservent() have been called.
  513.  
  514.    INPUTS
  515.     None.
  516.  
  517.    RESULT
  518.     None.
  519.  
  520.    EXAMPLE
  521.  
  522.    NOTES
  523.  
  524.    BUGS
  525.  
  526.    SEE ALSO
  527.     setservent(), getservent()
  528.  
  529. socket.library/FD_SET                                   socket.library/FD_SET
  530.  
  531.    NAME
  532.     FD_SET -- Macros to manipulate socket masks.
  533.  
  534.    SYNOPSIS
  535.     #include <sys/types.h>
  536.  
  537.     FD_SET(socket, mask)
  538.     FD_CLR(socket, mask)
  539.     result = FD_ISSET(socket, mask)
  540.     FD_ZERO(mask)
  541.  
  542.    FUNCTION
  543.     Type fd_set contains masks for use with sockets and select() just
  544.     like longs can contain masks for use with signals and Wait().
  545.     Unlike signal masks, you can't manipulate socket masks with boolean
  546.     operators, instead you must use the FD_*() macros.
  547.  
  548.     FD_SET() sets the "bit" for 'socket' in 'mask.'
  549.  
  550.     FD_CLR() clears the "bit" for 'socket' in 'mask.'
  551.  
  552.     FD_ISSET() returns non-zero if the "bit" for 'socket' in 'mask' is
  553.     set, else zero.
  554.  
  555.     FD_ZERO() clears all "bits" in 'mask.'  FD_ZERO should be used
  556.     to initialize an fd_set variable before it is used.
  557.  
  558.    EXAMPLE
  559.  
  560.    SEE ALSO
  561.     select(), selectwait()
  562.  
  563. socket.library/get_tz                                   socket.library/get_tz
  564.  
  565.    NAME
  566.     get_tz -- Get timezone offset.
  567.  
  568.    SYNOPSIS
  569.     offset = get_tz()
  570.     D0
  571.  
  572.     short get_tz(void);
  573.  
  574.    FUNCTION
  575.     Returns the number offset from UTC (Universal Time Coordinated,
  576.     formerly Greenwich Mean Time) in minutes west of UTC.
  577.  
  578.    RESULT
  579.     offset        - offset in minutes or -1.  An error requester
  580.               is displayed on error.
  581.  
  582.    NOTES
  583.     THIS IS AN AMIGA-ONLY FUNCTION.
  584.  
  585.     Currently the configuration information is stored in memory
  586.     in a configuration structure.  If this structure cannot be
  587.     found, it will be initialized by reading in inet:s/inet.config.
  588.     This may change in the future.
  589.  
  590.    BUGS
  591.     Does not account for daylight savings time.  If the time is really
  592.     important to you (or hosts you communicate with) you must currently
  593.     change your inet:s/inet.config for daylight savings/standard time.
  594.  
  595. socket.library/getdomainname                     socket.library/getdomainname
  596.  
  597.    NAME
  598.     getdomainname -- Get domain name.
  599.  
  600.    SYNOPSIS
  601.     return = getdomainname( name, namelen)
  602.     D0            A1    D1
  603.  
  604.     int getdomainname (char *, int);
  605.  
  606.    FUNCTION
  607.     Returns the name of the domain into the pointer specified.
  608.     Name will be null-terminated if sufficient space is available.
  609.     To find out what a domain name is, check your favorite TCP/IP
  610.     reference.
  611.  
  612.    INPUTS
  613.     name        - pointer to character buffer.
  614.     namelen        - space available in 'name.'
  615.  
  616.    RESULT
  617.     0 is returned if successful.  -1 is returned on error.
  618.  
  619.    EXAMPLE
  620.  
  621.    NOTES
  622.     There is currently no corresponding setdomainname() function.
  623.  
  624.     Currently the configuration information is stored in memory
  625.     in a configuration structure.  If this structure cannot be
  626.     found, it will be initialized by reading in inet:s/inet.config.
  627.     This may change in the future.
  628.  
  629.    BUGS
  630.  
  631.    SEE ALSO
  632.  
  633. socket.library/getgid                                   socket.library/getgid
  634.  
  635.    NAME
  636.     getgid -- Get group id.
  637.  
  638.    SYNOPSIS
  639.     #include <sys/types.h>
  640.  
  641.     gid = getgid()
  642.  
  643.     gid_t getgid (void);
  644.  
  645.    FUNCTION
  646.     returns the user's group id
  647.  
  648.    INPUTS
  649.     None.
  650.  
  651.    RESULT
  652.     gid        - group ID or -1 (on error). An error requester
  653.               will be displayed if there is a problem reading
  654.               the current configuration.
  655.  
  656.    EXAMPLE
  657.  
  658.    NOTES
  659.     This is an emulation of the Unix getgid() function.
  660.     getegid() is equivalent to getgid() on the Amiga.  Note that the
  661.     user has one primary group ID, but may have several additional
  662.     secondary group IDs which can only be obtained with getgroups().
  663.  
  664.     Currently, the configuration information is stored in memory
  665.     in a configuration structure.  If this structure cannot be
  666.     found, it will be initialized by reading in inet:s/inet.config.
  667.     This may change in the future.
  668.  
  669.    BUGS
  670.  
  671.    SEE ALSO
  672.     getgroups(), getuid()
  673.  
  674. socket.library/getgroups                             socket.library/getgroups
  675.  
  676.    NAME
  677.     getgroups -- Get group access list.
  678.  
  679.    SYNOPSIS
  680.     #include <sys/types.h>
  681.     #include <sys/param.h>
  682.  
  683.     num = getgroups(max_gids, gids)
  684.     D0        D0      A0
  685.  
  686.     int getgroups (int, gid_t *);
  687.  
  688.    FUNCTION
  689.     The array "gids" is filled with the group ids that the current user
  690.     belongs to (including the primary gid).  The list may be up to
  691.     "max_gids" long.  The actual number of gids is returned in 'num.'
  692.  
  693.    INPUTS
  694.     max_gids    - length of gids array.
  695.     gids        - gid_t array.
  696.  
  697.    RESULT
  698.     num        - the number of gids is returned if successful.
  699.               No errors are currently defined.
  700.  
  701.    EXAMPLE
  702.     gid_t gids[10];
  703.     int number_of_gids;
  704.  
  705.     number_of_gids = getgroups(10,gids);
  706.  
  707.    NOTES
  708.     Currently, the configuration information is stored in memory
  709.     in a configuration structure.  If this structure cannot be
  710.     found, it will be initialized by reading in inet:s/inet.config.
  711.     This may change in the future.
  712.  
  713.     The upper limit of groups that can be returned by getgroups() is
  714.     NGROUP (in <sys/param.h>).
  715.  
  716.    BUGS
  717.     This routine has had problems including the primary gid.
  718.     These problems should be fixed, so please report if you
  719.     see this bug.
  720.  
  721.    SEE ALSO
  722.     getgid(), getuid()
  723.  
  724. socket.library/gethostbyaddr                     socket.library/gethostbyaddr
  725.  
  726.    NAME
  727.     gethostbyaddr -- Get host entry from the hosts file.
  728.  
  729.    SYNOPSIS
  730.     #include <sys/socket.h>
  731.     #include <netdb.h>
  732.  
  733.     host = gethostbyaddr( addr, len, type )
  734.     D0                    A0    D0   D1
  735.  
  736.     struct hostent *gethostbyaddr( char *, int, int );
  737.  
  738.    FUNCTION
  739.     Opens the host file if necessary.  Finds the entry for 'addr'
  740.     and returns it in a hostent structure.  In the future, this
  741.     function will look beyond just the hosts file.
  742.  
  743.     struct    hostent {
  744.     char    *h_name;    /* official name of host */
  745.     char    **h_aliases;    /* alias list */
  746.     int    h_addrtype;    /* host address type */
  747.     int    h_length;    /* length of address */
  748.     char    **h_addr_list;    /* list of addresses from name server */
  749.     #define    h_addr    h_addr_list[0]    /* messed up for historical reasons */
  750.     };
  751.  
  752.    INPUTS
  753.     addr        - internet address, in network byte order.
  754.               (This is really a long.)
  755.     len        - sizeof(addr), usually 4
  756.     type        - usually AF_INET
  757.  
  758.    RESULT
  759.     host        - pointer to struct hostent for protocol 'addr.'
  760.               NULL on EOF or failure to open protocols file.
  761.  
  762.    EXAMPLE
  763.  
  764.    NOTES
  765.     The only type currently in use is AF_INET.
  766.  
  767.     The buffer pointed to by 'host' will be overwritten by the next
  768.     call to gethost*().
  769.  
  770.    BUGS
  771.  
  772.    SEE ALSO
  773.     gethostbyname()
  774.  
  775. socket.library/gethostbyname                     socket.library/gethostbyname
  776.  
  777.    NAME
  778.     gethostbyname -- Get host entry from the hosts file.
  779.  
  780.    SYNOPSIS
  781.     #include <sys/socket.h>
  782.     #include <netdb.h>
  783.  
  784.     host = gethostbyname( name )
  785.     D0                    A0
  786.  
  787.     struct hostent *gethostbyname( char * );
  788.  
  789.    FUNCTION
  790.     Opens the host file if necessary.  Finds the entry for "name"
  791.     and returns it in a hostent structure.  In the future, this function
  792.     will look beyond just the hosts file.
  793.  
  794.     struct    hostent {
  795.     char    *h_name;    /* official name of host */
  796.     char    **h_aliases;    /* alias list */
  797.     int    h_addrtype;    /* host address type */
  798.     int    h_length;    /* length of address */
  799.     char    **h_addr_list;    /* list of addresses from name server */
  800.     #define    h_addr    h_addr_list[0] /* messed up for historical reasons */
  801.     };
  802.  
  803.    INPUTS
  804.  
  805.    RESULT
  806.     host        - pointer to struct hostent for protocol 'name.'
  807.               NULL on EOF or failure to open protocols file.
  808.  
  809.    EXAMPLE
  810.  
  811.    NOTES
  812.     The buffer pointed to by 'host' will be overwritten by the next
  813.     call to gethost*().
  814.  
  815.    BUGS
  816.  
  817.    SEE ALSO
  818.     gethostbyaddr()
  819.  
  820. socket.library/gethostent                           socket.library/gethostent
  821.  
  822.    NAME
  823.     gethostent -- Get host entry from the hosts file ("inet:s/hosts").
  824.  
  825.    SYNOPSIS
  826.     #include <sys/types.h>
  827.     #include <sys/socket.h>
  828.     #include <netdb.h>
  829.  
  830.     host = gethostent()
  831.     D0
  832.  
  833.     struct hostent *gethostent( void );
  834.  
  835.    FUNCTION
  836.     There is normally no reason to use this function.  It is used
  837.     internally by gethostbyname() and gethostbyaddr().  It is provided
  838.     only for Un*x compatibility and even Un*x is phasing it out in
  839.     favor of other methods of name resolution.
  840.  
  841.     Opens the host file if necessary.  Returns the next entry
  842.     in the file in a hostent structure.
  843.  
  844.     struct    hostent {
  845.     char    *h_name;    /* official name of host */
  846.     char    **h_aliases;    /* alias list */
  847.     int    h_addrtype;    /* host address type */
  848.     int    h_length;    /* length of address */
  849.     char    **h_addr_list;    /* list of addresses from name server */
  850.     #define    h_addr    h_addr_list[0] /* messed up for historical reasons */
  851.     };
  852.  
  853.    INPUTS
  854.     None.
  855.  
  856.    RESULT
  857.     host        - pointer to struct hostent for next protocol.
  858.               NULL on EOF or failure to open protocols file.
  859.    EXAMPLE
  860.  
  861.    NOTES
  862.     The buffer pointed to by 'host' will be overwritten by the next
  863.     call to gethost*().
  864.  
  865.    BUGS
  866.  
  867.    SEE ALSO
  868.     sethostent(), gethostbyname(), gethostbyaddr(), endhostent()
  869.  
  870. socket.library/gethostname                         socket.library/gethostname
  871.  
  872.    NAME
  873.     gethostname -- Get the name of your Amiga.
  874.  
  875.    SYNOPSIS
  876.     return = gethostname( name, length )
  877.     D0                    A0    D0
  878.  
  879.     int gethostname (char *, int);
  880.  
  881.    FUNCTION
  882.     Copies the  null-terminated hostname to 'name'.  The hostname will
  883.     be truncated if insufficient space is available in 'name'.
  884.  
  885.    INPUTS
  886.     name        - pointer to character array.
  887.     length      - size of character array.
  888.  
  889.    RESULT
  890.     return        - 0 if successful, else -1.  The only reason for
  891.               failure will be if the configuration file is
  892.               unavailable, in which case an error requester will
  893.               be displayed.
  894.  
  895.    NOTES
  896.     Currently, the configuration information is stored in memory
  897.     in a configuration structure.  If this structure cannot be
  898.     found, it will be initialized by reading in inet:s/inet.config.
  899.     This may change in the future.
  900.  
  901.    BUGS
  902.  
  903.    SEE ALSO
  904.  
  905. socket.library/getlogin                               socket.library/getlogin
  906.  
  907.    NAME
  908.     getlogin -- Get login name.
  909.  
  910.    SYNOPSIS
  911.     name = getlogin()
  912.     D0
  913.  
  914.     char *getlogin (void);
  915.  
  916.    FUNCTION
  917.     Returns a pointer to the current user name.
  918.  
  919.    INPUTS
  920.     None.
  921.  
  922.    RESULT
  923.     name        - a pointer to the current user name or NULL to
  924.               indicate an error.  You can use this pointer for
  925.               as long as necessary, but do not write to it.
  926.  
  927.    NOTES
  928.     Currently, the configuration information is stored in memory
  929.     in a configuration structure.  If this structure cannot be
  930.     found, it will be initialized by reading in inet:s/inet.config.
  931.     This may change in the future.  There is no support for multiple
  932.     user names on a single Amiga because the Amiga OS has no concept
  933.     of multiple users.
  934.  
  935.  
  936. socket.library/getnetbyaddr                       socket.library/getnetbyaddr
  937.  
  938.    NAME
  939.     getnetbyaddr -- Get net entry from the networks file.
  940.  
  941.    SYNOPSIS
  942.     #include <netdb.h>
  943.  
  944.     net = getnetbyaddr( net, type )
  945.     D0                  D0   D1
  946.  
  947.     struct netent *getnetbyaddr( long, int );
  948.  
  949.    FUNCTION
  950.     Opens the networks file if necessary.  Returns the entry
  951.     with a matching address in a nettent structure.
  952.  
  953.     struct    netent {
  954.         char        *n_name;    /* official name of net */
  955.         char        **n_aliases;    /* alias list */
  956.         int        n_addrtype;    /* net address type */
  957.         unsigned long    n_net;        /* network # */
  958.     };
  959.  
  960.    INPUTS
  961.     net        - network number.
  962.     type        - network number type, currently AF_INET.
  963.  
  964.    RESULT
  965.     net        - netent structure if succesful, NULL on EOF on
  966.               failure to open networks file.
  967.  
  968.    EXAMPLE
  969.  
  970.    NOTES
  971.     The netent structure is returned in a buffer that will be
  972.     overwritten on the next call to getnet*().
  973.  
  974.    BUGS
  975.  
  976.    SEE ALSO
  977.     getnetbyname()
  978.  
  979. socket.library/getnetbyname                       socket.library/getnetbyname
  980.  
  981.    NAME
  982.     getnetbyname -- Get net entry from the networks file.
  983.  
  984.    SYNOPSIS
  985.     #include <netdb.h>
  986.  
  987.     net = getnetbyname( name )
  988.     D0                  A0
  989.  
  990.     struct netent *getnetbyname ( char * );
  991.  
  992.    FUNCTION
  993.     Opens the networks file if necessary.  Returns the entry
  994.     with a matching name in a nettent structure.
  995.  
  996.     struct    netent {
  997.         char        *n_name;    /* official name of net */
  998.         char        **n_aliases;    /* alias list */
  999.         int        n_addrtype;    /* net address type */
  1000.         unsigned long    n_net;        /* network # */
  1001.     };
  1002.  
  1003.    INPUTS
  1004.     name        - network name.
  1005.  
  1006.    RESULT
  1007.     net        - netent structure if succesful, NULL on EOF on
  1008.               failure to open networks file.
  1009.  
  1010.    EXAMPLE
  1011.  
  1012.    NOTES
  1013.     The netent structure is returned in a buffer that will be
  1014.     overwritten on the next call to getnet*().
  1015.  
  1016.    BUGS
  1017.  
  1018.    SEE ALSO
  1019.     getnetbyaddr()
  1020.  
  1021. socket.library/getnetent                             socket.library/getnetent
  1022.  
  1023.    NAME
  1024.     getnetent -- Get net entry from the networks file.
  1025.  
  1026.    SYNOPSIS
  1027.     #include <netdb.h>
  1028.  
  1029.     net = getnetent( )
  1030.     D0
  1031.  
  1032.     struct netent *getnetent( void );
  1033.  
  1034.    FUNCTION
  1035.     This function should not normally be used.  It is called internally
  1036.     by getnetbyname() and getnetbyaddr().
  1037.  
  1038.     Opens the networks file if necessary.  Returns the next entry
  1039.     in the file in a nettent structure.
  1040.  
  1041.     struct    netent {
  1042.         char        *n_name;    /* official name of net */
  1043.         char        **n_aliases;    /* alias list */
  1044.         int        n_addrtype;    /* net address type */
  1045.         unsigned long    n_net;        /* network # */
  1046.     };
  1047.  
  1048.    INPUTS
  1049.     None.
  1050.  
  1051.    RESULT
  1052.     net        - netent structure if succesful, NULL on EOF on
  1053.               failure to open networks file.
  1054.  
  1055.    EXAMPLE
  1056.  
  1057.    NOTES
  1058.     The netent structure is returned in a buffer that will be
  1059.     overwritten on the next call to getnet*().
  1060.  
  1061.    BUGS
  1062.  
  1063.    SEE ALSO
  1064.     setnetent(), getnetbyname(), getnetbyaddr(), endnetent()
  1065.  
  1066. socket.library/getpeername                         socket.library/getpeername
  1067.  
  1068.    NAME
  1069.     getpeername -- Get name of connected peer.
  1070.  
  1071.    SYNOPSIS
  1072.     return = getpeername( s, name, namelen )
  1073.     D0                    D0 A0    A1
  1074.  
  1075.     int getpeername( int, struct sockaddr *, int * );
  1076.  
  1077.    FUNCTION
  1078.     For every connected socket, there is a socket at the other end
  1079.     of the connection.  To determine the address of the socket at the
  1080.     other end of a connection, pass getpeername() the socket on your
  1081.     end.  'Namelen' should be initialized to the amount of space pointed
  1082.     to by 'name.'  The actual size of 'name' will be returned in
  1083.     'namelen.'
  1084.  
  1085.    INPUTS
  1086.     s        - socket descriptor.
  1087.     name        - pointer to a struct sockaddr.
  1088.     namelen        - initialized to size of 'name.' On return this
  1089.               contains the actual sizeof(name)
  1090.  
  1091.    RESULT
  1092.     return        - 0 if successful else -1 (errno will contain the
  1093.               specific error).
  1094.  
  1095.    EXAMPLE
  1096.  
  1097.    NOTES
  1098.  
  1099.    BUGS
  1100.  
  1101.    SEE ALSO
  1102.     bind(), accept(), getsockname()
  1103.  
  1104. socket.library/getprotobyname                   socket.library/getprotobyname
  1105.  
  1106.    NAME
  1107.     getprotobyname -- find a protocol entry by name
  1108.  
  1109.    SYNOPSIS
  1110.     #include <netdb.h>
  1111.  
  1112.     proto = getprotobyname( name )
  1113.     D0                      A0
  1114.  
  1115.     struct protoent *getprotobyname( char * );
  1116.  
  1117.    FUNCTION
  1118.     Opens the protocols file if necessary.  Returns the entry
  1119.     with a matching name in a protoent structure.
  1120.  
  1121.     struct    protoent {
  1122.         char    *p_name;        /* official protocol name */
  1123.         char    **p_aliases;    /* alias list */
  1124.         int     p_proto;        /* protocol # */
  1125.     };
  1126.  
  1127.  
  1128.    INPUTS
  1129.     name        - name of prototype to return.
  1130.  
  1131.    RESULT
  1132.     proto        - pointer to struct protoent for protocol 'name.'
  1133.               NULL on EOF or failure to open protocols file.
  1134.  
  1135.    EXAMPLE
  1136.  
  1137.    NOTES
  1138.     The protoent structure is returned in a buffer that will be
  1139.     overwritten on the next call to getproto*()
  1140.  
  1141.    BUGS
  1142.  
  1143.    SEE ALSO
  1144.     getprotobynumber()
  1145.  
  1146. socket.library/getprotobynumber               socket.library/getprotobynumber
  1147.  
  1148.    NAME
  1149.     getprotobynumber -- find a protocol entry by number
  1150.  
  1151.    SYNOPSIS
  1152.     #include <netdb.h>
  1153.  
  1154.     proto = getprotobynumber( proto )
  1155.     D0                        D0
  1156.  
  1157.     struct protoent *getprotobynumber( int );
  1158.  
  1159.    FUNCTION
  1160.     Opens the protocols file if necessary.  Returns the entry
  1161.     with a matching protocol number in a protoent structure.
  1162.  
  1163.     struct    protoent {
  1164.         char    *p_name;        /* official protocol name */
  1165.         char    **p_aliases;    /* alias list */
  1166.         int     p_proto;        /* protocol # */
  1167.     };
  1168.  
  1169.  
  1170.    INPUTS
  1171.     proto        - number of prototype to return.
  1172.  
  1173.    RESULT
  1174.     proto        - pointer to struct protoent for protocol 'number.'
  1175.               NULL on EOF or failure to open protocols file.
  1176.  
  1177.    EXAMPLE
  1178.  
  1179.    NOTES
  1180.     The protoent structure is returned in a buffer that will be
  1181.     overwritten on the next call to getproto*()
  1182.  
  1183.    BUGS
  1184.  
  1185.    SEE ALSO
  1186.     getprotobyname()
  1187.  
  1188. socket.library/getprotoent                         socket.library/getprotoent
  1189.  
  1190.    NAME
  1191.     getprotoent -- Get a protocol entry from the protocols file.
  1192.  
  1193.    SYNOPSIS
  1194.     #include <netdb.h>
  1195.  
  1196.     proto = getprotoent ( )
  1197.  
  1198.     struct protoent *getprotoent ( void );
  1199.  
  1200.    FUNCTION
  1201.     There is normally no reason to use this function.  It is used
  1202.     internally by getprotobyname() and getprotobynumber().  It is
  1203.     provided only for Un*x compatibility.
  1204.  
  1205.     Opens the protocols file if necessary.  Returns the next entry
  1206.     in the file in a protoent structure.
  1207.  
  1208.     struct    protoent {
  1209.         char    *p_name;        /* official protocol name */
  1210.         char    **p_aliases;    /* alias list */
  1211.         int     p_proto;        /* protocol # */
  1212.     };
  1213.  
  1214.  
  1215.    INPUTS
  1216.     None.
  1217.  
  1218.    RESULT
  1219.     proto        - NULL on EOF or failure to open protocols file.
  1220.  
  1221.    EXAMPLE
  1222.  
  1223.    NOTES
  1224.     The protoent structure is returned in a buffer that will be
  1225.     overwritten on the next call to getproto*()
  1226.  
  1227.    BUGS
  1228.  
  1229.    SEE ALSO
  1230.     getprotobyname(), getprotobynumber(), setprotoent(), endprotoent()
  1231.  
  1232. socket.library/getpwent                               socket.library/getpwent
  1233.  
  1234.    NAME
  1235.     getpwent -- Read the next line in the password file.
  1236.  
  1237.    SYNOPSIS
  1238.     passwd = getpwent()
  1239.     D0
  1240.  
  1241.     struct passwd *getpwent( void ) ;
  1242.  
  1243.    FUNCTION
  1244.     There is usually no reason to call this function directly.  It
  1245.     is called internally by getpwuid() and getpwnam().  It is provided
  1246.     only for Un*x compatibility.
  1247.  
  1248.     Opens the password file if necessary.  Returns the next entry
  1249.     in the file in a passwd structure.
  1250.  
  1251.     struct passwd {
  1252.         char    *pw_name;
  1253.         char    *pw_dir;
  1254.         char    *pw_passwd;
  1255.         char    *pw_gecos;
  1256.         uid_t    pw_uid;
  1257.         gid_t    pw_gid;
  1258.         char    *pw_shell;        /* currently unused */
  1259.         char    *pw_comment;
  1260.     };
  1261.  
  1262.    INPUTS
  1263.     None.
  1264.  
  1265.    RESULT
  1266.     passwd         - a pointer to a filled in passwd structure
  1267.               if successful, else NULL.
  1268.  
  1269.    SEE ALSO
  1270.     getpwuid(), getpwnam(), setpwent(), endpwent()
  1271.  
  1272. socket.library/getpwnam                               socket.library/getpwnam
  1273.  
  1274.    NAME
  1275.     getpwnam -- Search user database for a particular name.
  1276.  
  1277.    SYNOPSIS
  1278.     #include <pwd.h>
  1279.  
  1280.     passwd = getpwnam( name )
  1281.     D0                  A0
  1282.  
  1283.     struct passwd *getpwnam( char * );
  1284.  
  1285.    FUNCTION
  1286.     getpwnam() returns a pointer to a passwd structure. The passwd
  1287.     structure fields are filled in from the fields contained in
  1288.     one line of the password file.
  1289.  
  1290.    INPUTS
  1291.     name         - user name of passwd entry to look up.
  1292.  
  1293.    RESULT
  1294.     passwd         - a pointer to a passwd struct with its elements
  1295.               filled in from the passwd file.
  1296.  
  1297.         struct passwd {
  1298.             char    *pw_name;
  1299.             char    *pw_dir;
  1300.             char    *pw_passwd;
  1301.             char    *pw_gecos;
  1302.             uid_t    pw_uid;
  1303.             gid_t    pw_gid;
  1304.             char    *pw_shell;    /* currently unused  */
  1305.             char    *pw_comment;
  1306.         };
  1307.  
  1308.    NOTES
  1309.     The passwd structure is returned in a buffer that will be
  1310.     overwritten on the next call to getpw*().
  1311.  
  1312.    SEE ALSO
  1313.     getpwuid()
  1314. socket.library/getpwuid                               socket.library/getpwuid
  1315.  
  1316.    NAME
  1317.     getpwuid -- Search user database for a particular uid.
  1318.  
  1319.    SYNOPSIS
  1320.     #include <pwd.h>
  1321.  
  1322.     passwd = getpwuid( uid )
  1323.     D0                 D1
  1324.  
  1325.     struct passwd *getpwuid( uid_t );
  1326.  
  1327.    FUNCTION
  1328.     getpwuid() returns a pointer to a passwd structure.  The passwd
  1329.     structure fields are filled in from the fields contained in
  1330.     one line of the password file.
  1331.  
  1332.    INPUTS
  1333.     uid        - uid of passwd entry to look up.
  1334.  
  1335.    RESULT
  1336.     passwd         - a pointer to a passwd struct with its elements
  1337.               filled in from the passwd file.
  1338.  
  1339.         struct passwd {
  1340.             char    *pw_name;
  1341.             char    *pw_dir;
  1342.             char    *pw_passwd;
  1343.             char    *pw_gecos;
  1344.             uid_t    pw_uid;
  1345.             gid_t    pw_gid;
  1346.             char    *pw_shell;    /* currently unused */
  1347.             char    *pw_comment;
  1348.         };
  1349.  
  1350.    NOTES
  1351.     The passwd structure is returned in a buffer that will be
  1352.     overwritten on the next call to getpw*().
  1353.  
  1354.    SEE ALSO
  1355.     getpwnam()
  1356.  
  1357. socket.library/getservbyname                     socket.library/getservbyname
  1358.  
  1359.    NAME
  1360.     getservbyname -- Find a service entry by name.
  1361.  
  1362.    SYNOPSIS
  1363.     #include <netdb.h>
  1364.  
  1365.     serv = getservbyname( name, proto )
  1366.     D0                    A0    A1
  1367.  
  1368.     struct servent *getservbyname( char *, char * );
  1369.  
  1370.    FUNCTION
  1371.     Opens the services file and finds the service with the matching
  1372.     name and protocol.
  1373.  
  1374.     struct    servent {
  1375.         char    *s_name;    /* official service name */
  1376.         char    **s_aliases;    /* alias list */
  1377.         int    s_port;        /* port # */
  1378.         char    *s_proto;    /* protocol to use */
  1379.     };
  1380.  
  1381.  
  1382.    INPUTS
  1383.     name        - name of service to look up.
  1384.     proto        - protocol of service to look up.
  1385.  
  1386.    RESULT
  1387.     serv        - pointer to struct servent for service 'name.'
  1388.               NULL on EOF or failure to open protocols file.
  1389.  
  1390.    EXAMPLE
  1391.  
  1392.    NOTES
  1393.     The servent structure is returned in a buffer that will be
  1394.     overwritten on the next call to getserv*().
  1395.  
  1396.    BUGS
  1397.  
  1398.    SEE ALSO
  1399.     getservent(), getservbyport()
  1400.  
  1401. socket.library/getservbyport                     socket.library/getservbyport
  1402.  
  1403.    NAME
  1404.     getservbyport -- Find a service entry by port.
  1405.  
  1406.    SYNOPSIS
  1407.     #include <netdb.h>
  1408.  
  1409.     serv = getservbyport( port, proto )
  1410.     D0                    D0    A0
  1411.  
  1412.     struct servent *getservbyport( u_short, char * );
  1413.  
  1414.    FUNCTION
  1415.     Opens the services file and finds the service with the matching
  1416.     port and protocol.
  1417.  
  1418.     struct    servent {
  1419.         char    *s_name;    /* official service name */
  1420.         char    **s_aliases;    /* alias list */
  1421.         int    s_port;        /* port # */
  1422.         char    *s_proto;    /* protocol to use */
  1423.     };
  1424.  
  1425.    INPUTS
  1426.  
  1427.    RESULT
  1428.     serv        - pointer to struct servent for service 'name.'
  1429.               NULL on EOF or failure to open protocols file.
  1430.  
  1431.    EXAMPLE
  1432.  
  1433.    NOTES
  1434.     The servent structure is returned in a buffer that will be
  1435.     overwritten on the next call to getserv*().
  1436.  
  1437.    BUGS
  1438.  
  1439.    SEE ALSO
  1440.     getservent(), getservbyname()
  1441.  
  1442. socket.library/getservent                           socket.library/getservent
  1443.  
  1444.    NAME
  1445.     getservent -- Get a service entry from the services file.
  1446.  
  1447.    SYNOPSIS
  1448.     #include <netdb.h>
  1449.  
  1450.     serv = getservent( void )
  1451.     D0
  1452.  
  1453.     struct servent *getservent( void );
  1454.  
  1455.    FUNCTION
  1456.     There is normally no reason to use this function.  It is used
  1457.     internally by getservbyname() and getservbyport().  It is
  1458.     provided only for Un*x compatibility.
  1459.  
  1460.     Opens the services file if necessary.  Returns the next entry
  1461.     in the file in a servent structure.
  1462.  
  1463.     struct    servent {
  1464.         char    *s_name;    /* official service name */
  1465.         char    **s_aliases;    /* alias list */
  1466.         int    s_port;        /* port # */
  1467.         char    *s_proto;    /* protocol to use */
  1468.     };
  1469.  
  1470.    INPUTS
  1471.     None.
  1472.  
  1473.    RESULT
  1474.     serv        - pointer to struct servent for next service.
  1475.               NULL on EOF or failure to open protocols file.
  1476.  
  1477.    EXAMPLE
  1478.  
  1479.    NOTES
  1480.     The servent structure is returned in a buffer that will be
  1481.     overwritten on the next call to getserv*()
  1482.  
  1483.    BUGS
  1484.  
  1485.    SEE ALSO
  1486.     setservent(), getservbyname(), getservbyport(), endservent()
  1487.  
  1488. socket.library/getsockname                         socket.library/getsockname
  1489.  
  1490.    NAME
  1491.     getsockname -- Get the name of a socket.
  1492.  
  1493.    SYNOPSIS
  1494.     return = getsockname( s, name, namelen )
  1495.     D0                    D0 A0    A1
  1496.  
  1497.     int getsockname( int, struct sockaddr *, int * );
  1498.  
  1499.    FUNCTION
  1500.     Returns the name (address) of the specified socket.  'Namelen'
  1501.     should be initialized to the amount of space pointed to by 'name.'
  1502.     The actual size of 'name' will be returned in 'namelen.'
  1503.  
  1504.    INPUTS
  1505.     s        - socket descriptor.
  1506.     name        - socket name.
  1507.     namelen        - size of 'name' (in bytes).
  1508.  
  1509.    RESULT
  1510.     return        - 0 if successful else -1 (errno will be set to
  1511.               one of the following error codes:
  1512.                EBADF        invalid socket
  1513.  
  1514.    EXAMPLE
  1515.  
  1516.    NOTES
  1517.  
  1518.    BUGS
  1519.  
  1520.    SEE ALSO
  1521.     bind(), getpeername()
  1522.  
  1523. socket.library/getsockopt                           socket.library/getsockopt
  1524.  
  1525.    NAME
  1526.     getsockopt -- Get socket options.
  1527.  
  1528.    SYNOPSIS
  1529.     return = getsockopt( s, level, optname, optval, optlenp )
  1530.     D0                   D0 D1     D2       A0      A1
  1531.  
  1532.     int getsockopt( int, int, int, char *, int * );
  1533.  
  1534.    FUNCTION
  1535.     Gets the option specified by 'optname' for socket 's.'
  1536.     This is an advanced function.  See the "sys/socket.h" header and
  1537.     your favorite TCP/IP reference for more information on options.
  1538.  
  1539.    INPUTS
  1540.     s        - socket descriptor.
  1541.     level        - protocol level.  Valid levels are:
  1542.               IPPROTO_IP               IP options
  1543.               IPPROTO_TCP              TCP options
  1544.               SOL_SOCKET               socket options
  1545.     optname        - option name.
  1546.     optval        - pointer to the buffer which will contain the
  1547.               answer.
  1548.     optlen        - initially sizeof(optval). reset to new value
  1549.               on return
  1550.  
  1551.    RESULT
  1552.     return        - 0 if successful else -1 (errno will contain the
  1553.               specific error).
  1554.  
  1555.    EXAMPLE
  1556.  
  1557.    NOTES
  1558.  
  1559.    BUGS
  1560.  
  1561.    SEE ALSO
  1562.     setsockopt()
  1563.  
  1564. socket.library/getuid                                   socket.library/getuid
  1565.  
  1566.    NAME
  1567.     getuid  -- Get user id.
  1568.  
  1569.    SYNOPSIS
  1570.     #include <sys/types.h>
  1571.  
  1572.     uid = getuid()
  1573.     D0
  1574.  
  1575.     uid_t getuid (void);
  1576.  
  1577.    FUNCTION
  1578.     Returns the user id.
  1579.  
  1580.    INPUTS
  1581.     None.
  1582.  
  1583.    RESULT
  1584.     uid        - user ID or -1 (on error).  An error requester will
  1585.               be displayed if there is a problem reading the
  1586.               current configuration.
  1587.  
  1588.    EXAMPLE
  1589.  
  1590.    NOTES
  1591.     This is an emulation of the Unix getuid() function.
  1592.     geteuid() is equivalent to getuid() on the Amiga.
  1593.  
  1594.     Currently, the configuration information is stored in memory
  1595.     in a configuration structure.  If this structure cannot be
  1596.     found, it will be initialized by reading in inet:s/inet.config.
  1597.     This may change in the future.  There is no support for multiple
  1598.     user IDs on a single Amiga because the Amiga OS has no concept
  1599.     of multiple users.
  1600.  
  1601.    BUGS
  1602.  
  1603.    SEE ALSO
  1604.     getgid(), getgroups()
  1605.  
  1606. socket.library/getumask                               socket.library/getumask
  1607.  
  1608.    NAME
  1609.     getumask -- Get user file creation mask.
  1610.  
  1611.    SYNOPSIS
  1612.     #include <sys/types.h>
  1613.  
  1614.     umask = getumask()
  1615.     D0
  1616.  
  1617.     mode_t getumask (void);
  1618.  
  1619.    FUNCTION
  1620.     Returns the umask.
  1621.  
  1622.    RESULT
  1623.     -1 will be returned and an error message will be displayed
  1624.     if there is a problem reading the current configuration.
  1625.  
  1626.    EXAMPLE
  1627.  
  1628.    NOTES
  1629.     THIS IS AN AMIGA-SPECIFIC FUNCTION.  It is not a standard Unix
  1630.     function.  See umask().
  1631.  
  1632.     Currently, the configuration information is stored in memory
  1633.     in a configuration structure.  If this structure cannot be
  1634.     found, it will be initialized by reading in inet:s/inet.config.
  1635.     This may change in the future.
  1636.  
  1637.    BUGS
  1638.  
  1639.    SEE ALSO
  1640.     umask()
  1641.  
  1642. socket.library/inet_addr                             socket.library/inet_addr
  1643.  
  1644.    NAME
  1645.     inet_addr -- make internet address from string
  1646.  
  1647.    SYNOPSIS
  1648.     #include <sys/types.h>
  1649.     #include <sys/socket.h>
  1650.     #include <netinet/in.h>
  1651.  
  1652.     addr = inet_addr( string )
  1653.     D0                A1
  1654.  
  1655.     u_long inet_addr ( char * );
  1656.  
  1657.    FUNCTION
  1658.     Converts a string to an internet address.  All internet addresses
  1659.     are in network order.
  1660.  
  1661.    INPUTS
  1662.     string        address string. "123.45.67.89" for example
  1663.  
  1664.    RESULT
  1665.     A long representing the network address in network byte order.
  1666.  
  1667.     INADDR_NONE is returned if input is invalid.
  1668.  
  1669.    EXAMPLE
  1670.  
  1671.    NOTES
  1672.  
  1673.    BUGS
  1674.  
  1675.    SEE ALSO
  1676.  
  1677. socket.library/inet_lnaof                           socket.library/inet_lnaof
  1678.  
  1679.    NAME
  1680.     inet_lnaof -- give the local network address
  1681.  
  1682.    SYNOPSIS
  1683.     #include <sys/types.h>
  1684.     #include <sys/socket.h>
  1685.     #include <netinet/in.h>
  1686.  
  1687.     addr = inet_lnaof( in )
  1688.     D0                 D1
  1689.  
  1690.     int inet_lnaof ( struct in_addr );
  1691.  
  1692.    FUNCTION
  1693.     Returns the local network address.
  1694.  
  1695.    INPUTS
  1696.        in        - struct in_addr to find local network part of.
  1697.  
  1698.     struct in_addr {
  1699.         u_long s_addr; /* a long containing the internet address */
  1700.     };
  1701.  
  1702.    RESULT
  1703.     addr        -  the local network address portion of 'in.'
  1704.  
  1705.    EXAMPLE
  1706.  
  1707.    NOTES
  1708.     'in' is *NOT* a pointer to a struct in_addr, it IS a structure.
  1709.     It is a 4-byte structure and is a passed as a structure (rather
  1710.     than a long or pointer to a structure) for historical reasons.
  1711.  
  1712.    RESULT
  1713.  
  1714.    EXAMPLE
  1715.  
  1716.    NOTES
  1717.  
  1718.    BUGS
  1719.  
  1720.    SEE ALSO
  1721.     inet_addr(), inet_makeaddr(), inet_netof()
  1722.  
  1723. socket.library/inet_makeaddr                     socket.library/inet_makeaddr
  1724.  
  1725.    NAME
  1726.     inet_makeaddr -- make internet address from network and host
  1727.  
  1728.    SYNOPSIS
  1729.     #include <sys/types.h>
  1730.     #include <sys/socket.h>
  1731.     #include <netinet/in.h>
  1732.  
  1733.     addr = inet_makeaddr( net, lna )
  1734.     D0                    D0   D1
  1735.  
  1736.     struct in_addr inet_makeaddr( int, int );
  1737.  
  1738.    FUNCTION
  1739.      Formulate an Internet address from network + host.  Used in
  1740.     building addresses stored in the ifnet structure.
  1741.  
  1742.     'in' is *NOT* a pointer to a struct in_addr, it IS a structure.
  1743.     It is a 4-byte structure and is a passed as a structure (rather
  1744.     than a long or pointer to a structure) for historical reasons.
  1745.     See NOTES.
  1746.  
  1747.  
  1748.    INPUTS
  1749.     net        - network number in local integer format.
  1750.     lna        - local node address in local integer format.
  1751.  
  1752.    RESULT
  1753.        in        - struct in_addr.
  1754.  
  1755.     struct in_addr {
  1756.         u_long s_addr; /* a long containing the internet address */
  1757.     };
  1758.  
  1759.    EXAMPLE
  1760.  
  1761.    NOTES
  1762.     'in' is *NOT* a pointer to a struct in_addr, it IS a structure.
  1763.     It is a 4-byte structure and is a passed as a structure (rather
  1764.     than a long or pointer to a structure) for historical reasons.
  1765.  
  1766.    BUGS
  1767.  
  1768.    SEE ALSO
  1769.     inet_addr(), inet_lnaof(), inet_netof()
  1770.  
  1771. socket.library/inet_netof                           socket.library/inet_netof
  1772.  
  1773.    NAME
  1774.     inet_netof -- give the network number of an address
  1775.  
  1776.    SYNOPSIS
  1777.     #include <sys/types.h>
  1778.     #include <sys/socket.h>
  1779.     #include <netinet/in.h>
  1780.  
  1781.     net = inet_netof( in )
  1782.     D0          D1
  1783.  
  1784.     int inet_netof( struct in_addr );
  1785.  
  1786.    FUNCTION
  1787.     Returns the network number.
  1788.  
  1789.    INPUTS
  1790.        in        - struct in_addr to find network part of.
  1791.  
  1792.     struct in_addr {
  1793.         u_long s_addr; /* a long containing the internet address */
  1794.     };
  1795.  
  1796.    RESULT
  1797.     net        - network part of 'in.'
  1798.    EXAMPLE
  1799.  
  1800.    NOTES
  1801.     'in' is *NOT* a pointer to a struct in_addr, it IS a structure.
  1802.     It is a 4-byte structure and is a passed as a structure (rather
  1803.     than a long or pointer to a structure) for historical reasons.
  1804.  
  1805.    BUGS
  1806.  
  1807.    SEE ALSO
  1808.     inet_addr(), inet_makeaddr(), inet_lnaof()
  1809.  
  1810. socket.library/inet_network                       socket.library/inet_network
  1811.  
  1812.    NAME
  1813.     inet_network -- make network number from string
  1814.  
  1815.    SYNOPSIS
  1816.     #include <sys/types.h>
  1817.     #include <sys/socket.h>
  1818.     #include <netinet/in.h>
  1819.  
  1820.     net = inet_network( string )
  1821.     D0            A1
  1822.  
  1823.     int inet_network( char * );
  1824.  
  1825.    FUNCTION
  1826.     Converts a string to an network number if the string contains the
  1827.     dotted-decimal representation of a network number. All network
  1828.     numbers are in network order.
  1829.  
  1830.    INPUTS
  1831.     string        - network string. "123.45.67.89" for example.
  1832.  
  1833.    RESULT
  1834.     net        - INADDR_NONE is returned if input is invalid, else
  1835.               the network number corresponding to 'string.'
  1836.  
  1837.    EXAMPLE
  1838.  
  1839.    NOTES
  1840.  
  1841.    BUGS
  1842.  
  1843.    SEE ALSO
  1844.  
  1845. socket.library/inet_ntoa                             socket.library/inet_ntoa
  1846.  
  1847.    NAME
  1848.     inet_ntoa -- turn internet address into string
  1849.  
  1850.    SYNOPSIS
  1851.     #include <sys/types.h>
  1852.     #include <sys/socket.h>
  1853.     #include <netinet/in.h>
  1854.  
  1855.     string = inet_ntoa( in )
  1856.     D0                  D1
  1857.  
  1858.     char *inet_ntoa ( struct in_addr );
  1859.  
  1860.    FUNCTION
  1861.     Converts an internet address to an ASCII string in the format
  1862.     "a.b.c.d" (dotted-decimal notation).
  1863.  
  1864.    INPUTS
  1865.        in        - struct in_addr.
  1866.  
  1867.     struct in_addr {
  1868.         u_long s_addr; /* a long containing the internet address */
  1869.     };
  1870.  
  1871.    RESULT
  1872.     Pointer to a string containing the ASCII ethernet address.
  1873.     For example, if in.s_addr = 0xc009d203 then a pointer
  1874.     to the string "192.9.210.3" is returned.
  1875.  
  1876.    NOTES
  1877.     The result points to a static buffer that is overwritten
  1878.     with each call.
  1879.  
  1880.     'in' is *NOT* a pointer to a struct in_addr, it IS a structure.
  1881.     It is a 4-byte structure and is a passed as a structure (rather
  1882.     than a long or pointer to a structure) for historical reasons.
  1883.  
  1884.    BUGS
  1885.  
  1886.    SEE ALSO
  1887.  
  1888. socket.library/listen                                   socket.library/listen
  1889.  
  1890.    NAME
  1891.     listen -- Indicate willingness to accept() connections.
  1892.  
  1893.    SYNOPSIS
  1894.     return = listen( s, backlog )
  1895.     D0         D0 D1
  1896.  
  1897.     int listen(int, int);
  1898.  
  1899.    FUNCTION
  1900.     This function is used for a connection-oriented server (i.e. one
  1901.     using the TCP protocol)    to indicate that it is waiting to receive
  1902.     connections.  It is usually executed after socket() and bind(), and
  1903.     before accept().
  1904.  
  1905.    INPUTS
  1906.     s        - socket descriptor.
  1907.     backlog        - max number of connection requests to queue
  1908.               (usually 5).
  1909.  
  1910.    RESULT
  1911.     return        - 0 is returned if successful, else  -1. On error,
  1912.               errno will be set to one of the following:
  1913.  
  1914.     EBADF        - s is not a valid descriptor
  1915.     ENOTSOCK    - s is not a socket
  1916.     ECONNREFUSED    - connection refused, normally because the queue
  1917.               is full
  1918.     EOPNOTSUPP    - s is a socket type which does not support this
  1919.               operation.  s must be type SOCK_STREAM.
  1920.  
  1921.    BUGS
  1922.     'backlog' is currently limited to 5.
  1923.  
  1924.    SEE ALSO
  1925.     accept(), bind(), connect(), socket()
  1926.  
  1927. socket.library/rcmd                                       socket.library/rcmd
  1928.  
  1929.    NAME
  1930.     rcmd - Allow superuser to execute commands on remote machines
  1931.  
  1932.    SYNOPSIS
  1933.     rem = rcmd( ahost, inport, luser, ruser, cmd, fd2p )
  1934.     D0          D0       D1       A0     A1     A2   D2
  1935.  
  1936.     int rcmd( char **, u_short, char *, char *, char *, int *);
  1937.  
  1938.    FUNCTION
  1939.     This function is used by rsh and rcp to communicate with rshd.
  1940.  
  1941.     The rcmd subroutine looks up the host *ahost using gethostbyname,
  1942.     returning (-1) if the host does not exist. Otherwise *ahost is
  1943.     set to the standard name of the host and a connection is
  1944.     established to a server residing at the well-known Internet port
  1945.     inport.
  1946.  
  1947.     If the call succeeds, a socket of type SOCK_STREAM is returned to
  1948.     the caller and given to the remote command as stdin and stdout.
  1949.     If fd2p is nonzero, then an auxiliary channel to a control
  1950.     process will be set up, and a descriptor for it will be placed in
  1951.     *fd2p. The control process will return diagnostic output from the
  1952.     command (unit 2) on this channel, and will also accept bytes on
  1953.     this channel as being UNIX signal numbers, to be forwarded to the
  1954.     process group of the command. If fd2p is 0, then the stderr (unit
  1955.     2 of the remote command) will be made the same as the stdout and
  1956.     no provision is made for sending arbitrary signals to the remote
  1957.     process, although you may be able to get its attention by using
  1958.     out-of-band data.
  1959.  
  1960.    INPUTS
  1961.     ahost          - pointer to a pointer to a host name.
  1962.     inport         - an Internet port.
  1963.     luser          - the local user's name.
  1964.     ruser          - the remote user's name.
  1965.     cmd            - the command string to be executed.
  1966.     fd2p           - a flag telling whether to use an auxillary channel.
  1967.  
  1968.    RESULT
  1969.     rem         - socket of type SOCK_STREAM if successful, else -1.
  1970.  
  1971.  
  1972. socket.library/reconfig                               socket.library/reconfig
  1973.  
  1974.    NAME
  1975.     reconfig - re-initialize the internal configuration structure
  1976.  
  1977.    SYNOPSIS
  1978.     return = reconfig()
  1979.     D0
  1980.  
  1981.     BOOL reconfig( VOID ) ;
  1982.  
  1983.    FUNCTION
  1984.     Causes the socket library to read the inet:s/inet.config file.
  1985.     This is useful for when you have changed an entry in the file
  1986.     and need the system to recognize the change without a system
  1987.     reboot.
  1988.  
  1989.    INPUTS
  1990.     None
  1991.  
  1992.    RESULT
  1993.     Boolean return - TRUE upon success, FALSE upon error
  1994.  
  1995.    NOTES
  1996.     Make -no- assumptions about how this works internally. The current
  1997.     mechanism is in transition and is guaranteed to change.
  1998.  
  1999.    BUGS
  2000.  
  2001.    SEE ALSO
  2002.  
  2003. socket.library/recv                                       socket.library/recv
  2004.  
  2005.    NAME
  2006.     recv, recvfrom, recvmsg -- Receive a message from a socket.
  2007.  
  2008.    SYNOPSIS
  2009.     #include <sys/types.h>
  2010.     #include <sys/socket.h>
  2011.  
  2012.     numbytes = recv( s, buf, len, flags )
  2013.     D0               D0 A0   D1   D2
  2014.  
  2015.     numbytes = recvfrom( s, buf, len, flags, from, fromlen )
  2016.     D0                   D0 A0    D1  D2     A1    A2
  2017.  
  2018.     numbytes = recvmsg( s, msg, flags )
  2019.     D0                  D0 A0   D1
  2020.  
  2021.     int recv(int, char *, int, int )
  2022.     int recvfrom( int, char *, int, int, struct sockaddr *, int *)
  2023.     int recvmsg(int, struct msghdr *, int )
  2024.  
  2025.    FUNCTION
  2026.     recv() is used to receive messages on an already connect()ed
  2027.     socket.
  2028.  
  2029.     recvfrom() receives data from a socket whether it is in a connected
  2030.     state or not.
  2031.  
  2032.     recvmsg() is the most general of the recv calls and is for advanced
  2033.     use.
  2034.  
  2035.     If no data is available, these calls block unless the socket is
  2036.     set to nonblocking in which case (-1) is returned with errno set
  2037.     to EWOULDBLOCK.
  2038.  
  2039.    INPUTS
  2040.     s           - a socket descriptor.
  2041.     buf         - the buffer into which the incoming data will be
  2042.               placed.
  2043.     len         - the size of the buffer.
  2044.     flags       - select options (MSG_OOB, MSG_PEEK).
  2045.     from        - a pointer to a sockaddr structure.
  2046.     fromlen     - Length of the 'from' buffer.
  2047.     msg         - pointer to a struct msghdr, defined in
  2048.               "sys/socket.h."
  2049.  
  2050.    RESULT
  2051.     numbytes     - number of bytes read if successful else -1.
  2052.  
  2053.    NOTES
  2054.     'fromlen' is passed with the length of the 'from' buffer.  If 'from'
  2055.     is non-zero, the structure will be filled with the source address
  2056.     and fromlen will be filled in to represent the size of the actual
  2057.     address stored in 'from'.
  2058.  
  2059.    SEE ALSO
  2060.     send(), socket(), connect(), bind(), listen(), accept()
  2061.  
  2062. socket.library/s_close                                 socket.library/s_close
  2063.  
  2064.    NAME
  2065.     s_close -- Close a socket.
  2066.  
  2067.    SYNOPSIS
  2068.     status = s_close( socket ) ;
  2069.     D0                D0
  2070.  
  2071.     int s_close( int ) ;
  2072.  
  2073.    FUNCTION
  2074.        This function closes a socket.
  2075.  
  2076.    INPUTS
  2077.        unit        - socket number.
  2078.  
  2079.    RESULT
  2080.     status          - 0 if successful, else -1.
  2081.  
  2082.    EXAMPLE
  2083.  
  2084.    NOTES
  2085.     s_close() must always be used to close a socket.  This shared
  2086.     library does not know about filehandles or file descriptors.
  2087.  
  2088.    BUGS
  2089.  
  2090.    SEE ALSO
  2091.     socket()
  2092.  
  2093. socket.library/s_getsignal                         socket.library/s_getsignal
  2094.  
  2095.    NAME
  2096.     s_getsignal -- Get a network signal bit.
  2097.  
  2098.    SYNOPSIS
  2099.     signal = s_getsignal( type );
  2100.     D0                    D1
  2101.  
  2102.     BYTE s_getsignal( UWORD );
  2103.  
  2104.    FUNCTION
  2105.     This function returns a socket signal.  The socket signal can be
  2106.     used to Wait() on an event for the shared socket library.  The
  2107.     following signal types are supported:
  2108.  
  2109.     SIGIO   This signal indicates a socket is ready for
  2110.         asynchronous I/O.  This signal will be sent only if
  2111.         the socket has been set to async by calling ioctl()
  2112.         with a command of FIOASYNC.
  2113.  
  2114.     SIGURG  This signal indicates the presence of urgent or
  2115.         out-of-band data on a TCP socket.
  2116.    INPUTS
  2117.     type        - SIGIO or SIGURG.
  2118.  
  2119.    RESULT
  2120.     signal        - signal bit (0..31) or -1 if 'type' was invalid.
  2121.  
  2122.    EXAMPLE
  2123.  
  2124.    NOTES
  2125.     The SIGIO signal will only be set for sockets on which FIOASYNC has
  2126.     been set (with s_ioctl or s_setsockopts.)
  2127.  
  2128.    BUGS
  2129.  
  2130.    SEE ALSO
  2131.     s_ioctl(), select(), selectwait()
  2132.  
  2133. socket.library/s_ioctl                                 socket.library/s_ioctl
  2134.  
  2135.    NAME
  2136.        s_ioctl -- Control socket options.
  2137.  
  2138.    SYNOPSIS
  2139.        return = s_ioctl( s, cmd, data )
  2140.        D0              D0 D1   A0
  2141.  
  2142.        int s_ioctl ( int, int, char * );
  2143.  
  2144.    FUNCTION
  2145.     Manipulates device options for a socket.
  2146.  
  2147.    INPUTS
  2148.        s        - socket descriptor.
  2149.        cmd        - command.
  2150.        data        - data.
  2151.  
  2152.        The following commands are supported:
  2153.  
  2154.        command         description                     data points to
  2155.        -------         -----------                     --------------
  2156.        FIONBIO         set/clear nonblocking I/O       int
  2157.        FIOASYNC        set/clear async I/O             int
  2158.        FIONREAD        get number of bytes to read     int
  2159.        SIOCATMARK      at out-of-band mark?            int
  2160.        SIOCSPGRP       set process group               int
  2161.        SIOCGPGRP       get process group               int
  2162.        SIOCADDRT       add route                       struct rtentry
  2163.        SIOCDELRT       delete route                    struct rtentry
  2164.        SIOCGIFCONF     get ifnet list                  struct ifconf
  2165.        SIOCGIFFLAGS    get ifnet flags                 struct ifreq
  2166.        SIOCSIFFLAGS    set ifnet flags                 struct ifreq
  2167.        SIOCGIFMETRIC   get IF metric                   struct ifreq
  2168.        SIOCSIFMETRIC   set IF metric                   struct ifreq
  2169.        SIOCGARP        get ARP entry                   struct arpreq
  2170.        SIOCSARP        get ARP entry                   struct arpreq
  2171.        SIOCDARP        delete ARP entry                struct arpreq
  2172.  
  2173.        For more information, see a Unix reference manual.
  2174.  
  2175.    RESULT
  2176.        return        - 0 on success, else -1 (errno will be set to the
  2177.               specific error code).
  2178.  
  2179.    EXAMPLE
  2180.        int one = 1;
  2181.        ioctl ( s, FIOASYNC, (char *)&one);
  2182.  
  2183.    NOTES
  2184.        The standard Unix ioctl() function operates on both files and
  2185.        sockets.  Some compiler vendors may supply an ioctl() function.
  2186.        Because of this, and because this function works only with
  2187.        sockets, it has been renamed to s_ioctl().
  2188.  
  2189.    BUGS
  2190.  
  2191.    SEE ALSO
  2192.     setsockopts()
  2193.  
  2194. socket.library/select                                   socket.library/select
  2195.  
  2196.    NAME
  2197.     select -- Examines specified sockets' read, write or exception status.
  2198.  
  2199.    SYNOPSIS
  2200.     num = select( numfds, readfds, writefds, exceptfds, timeout )
  2201.     D0            D0      A0       A1        A2         D1
  2202.  
  2203.     int select( int, fd_set *, fd_set *, fd_set *, struct timeval *);
  2204.  
  2205.    FUNCTION
  2206.     select() examines the socket masks specified 'readfds,' 'writefds,'
  2207.     and 'execptfds' (see FD_SET) to see if they are ready for reading,
  2208.     for writing, or have an exceptional condition pending.
  2209.  
  2210.     When select() returns, the masks will have been modified so that
  2211.     only the "bits" for those sockets on which an event has occured are
  2212.     set.  The total number of ready sockets is returned in 'num.'
  2213.  
  2214.     If 'timeout' is a non-NULL pointer, it specifies a maximum
  2215.     interval to wait for the selection to complete. If timeout is
  2216.     a NULL pointer, the select blocks indefinitely. To affect a
  2217.     poll, the timeout argument should be nonzero, pointing to a
  2218.     zero valued timeval structure.  As you know, busy-loop polling
  2219.     is a no-no on the Amiga.
  2220.  
  2221.     Any of readfds, writefds, and execptfds may be given as NULL if
  2222.     any of those categories are not of interest.
  2223.  
  2224.     select() should not be used with a single socket (use s_getsignal()
  2225.     and Wait() instead).
  2226.  
  2227.    INPUTS
  2228.     numfds    - Maximum number of bits in the masks that
  2229.                 represent valid file descriptors.
  2230.     readfds   - 32 bit mask representing read file descriptors
  2231.     writefds  - 32 bit mask representing write file descriptors
  2232.     exceptfds - 32 bit mask representing except file descriptors
  2233.     timeout   - Pointer to a timeval structure which holds the
  2234.                 maximum amount of time to wait for the selection
  2235.                 to complete.
  2236.  
  2237.    RESULT
  2238.     num       - The number of ready sockets, zero if a timeout occurred,
  2239.                 -1 on error.
  2240.     readfds   - A mask of the ready socket descriptors
  2241.     writefds  -      "      "     "     "      "
  2242.     exceptfds -      "      "     "     "      "
  2243.  
  2244.    NOTES
  2245.     If a process is blocked on a select() waiting for input from a
  2246.     socket and the sending process closes the socket, the select
  2247.     notes this as an exception rather than as data.  Hence, if
  2248.     the select is not currently looking for exceptions, it will
  2249.     wait forever.
  2250.  
  2251.     The descriptor masks are always modified on return, even if
  2252.     the call returns as the result of the timeout.
  2253.  
  2254.     The current version of this function calls selectwait()
  2255.     with a control-C option in the umask field.
  2256.  
  2257.     A common error is to use the socket number in which you are
  2258.     interested as the first argument. Use socket+1.
  2259.  
  2260.    BUGS
  2261.  
  2262.    SEE ALSO
  2263.     FD_SET(), selectwait(), s_getsignal()
  2264.  
  2265. socket.library/selectwait                           socket.library/selectwait
  2266.  
  2267.    NAME
  2268.     selectwait -- select() with optional, task specific Wait() mask.
  2269.  
  2270.    SYNOPSIS
  2271.     num = selectwait( numfds, rfds, wfds, exfds, time, umask )
  2272.     D0                D0      A0    A1    A2     D1    D2
  2273.  
  2274.     int selectwait (int, int *, int *, int *, struct timeval *, long *);
  2275.  
  2276.    FUNCTION
  2277.     selectwait() is the same as select() except that it processes
  2278.     one additional argument, 'umask'
  2279.  
  2280.     The umask argument should contain either a NULL or a mask
  2281.     of the desired task-specific signal bits that will be tested
  2282.     along with the socket descriptors.  selectwait() does a standard
  2283.     Exec Wait() call and adds the supplied mask value to Wait()
  2284.     argument.
  2285.  
  2286.    INPUTS
  2287.     numfds    - The maximum number of bits in the masks that
  2288.                 represent valid file descriptors.
  2289.     readfds   - 32 bit mask representing read file descriptors
  2290.     writefds  - 32 bit mask representing write file descriptors
  2291.     exceptfds - 32 bit mask representing except file descriptors
  2292.     timeout   - A pointer to a timeval structure which holds the
  2293.                 maximum amount of time to wait for the selection
  2294.                 to complete.
  2295.     umask     - A mask of the task's signal bits that will be
  2296.                 used (in addition to the standard select() call
  2297.                 return options) to have the call return. This can
  2298.                 be SIGBREAKF signals, Intuition userport signals,
  2299.                 console port signals, etc. Any mask that you would
  2300.                 pass to the the Exec Wait() call is ok here.
  2301.  
  2302.    RESULT
  2303.     num       - The number of ready file descriptors if
  2304.                 successful.  Zero (0) if a timeout occurred.
  2305.                 (-1) upon error.
  2306.     readfds   - A mask of the ready file descriptors
  2307.     writefds  -      "      "     "     "      "
  2308.     exceptfds -      "      "     "     "      "
  2309.     umask     - A mask of the bits in the originally passed 'umask'
  2310.                 variable that have actually occured.
  2311.  
  2312.    EXAMPLE
  2313.     long umask = SIGBREAKF_CTRL_D | 1L << myport->mp_SigBit ;
  2314.  
  2315.     numfds = selectwait(n, r, w, e, time, &umask) ;
  2316.     if( event & SIGBREAKF_CTRL_D ) {
  2317.         printf("user hit CTRL-D\n") ;
  2318.     }
  2319.     if( event & 1L << myport->mp_SigBit ) {
  2320.         printf( "myport got a message\n" ) ;
  2321.     }
  2322.    NOTES
  2323.     A common error is to use the socket number in which you are
  2324.     interested as the first argument. Use socket+1.
  2325.  
  2326.    BUGS
  2327.  
  2328.    SEE ALSO
  2329.     FD_SET(), select(), s_getsignal()
  2330.  
  2331. socket.library/send                                       socket.library/send
  2332.  
  2333.    NAME
  2334.     send, sendto, sendmsg -- Send data from a socket.
  2335.  
  2336.    SYNOPSIS
  2337.     #include <sys/types.h>
  2338.     #include <sys/socket.h>
  2339.  
  2340.     cc = send( s, buf, len, flags )
  2341.     D0         D0 A0   D1   A1
  2342.  
  2343.     cc = sendto ( s, buf, len, flags, to, to_len )
  2344.     D0            D0 A0   D1   D2     A1  D3
  2345.  
  2346.     cc = sendmsg( s, msg, flags )
  2347.     D0            D0 A0   D1
  2348.  
  2349.     int send (int, char *, int, int );
  2350.     int sendto (int, char *, int, int, struct sockaddr *, int );
  2351.     int sendmsg (int, struct msghdr *, int );
  2352.  
  2353.    FUNCTION
  2354.     send(), sendto(), and sendmsg() transmit data from a socket.
  2355.     send() must be used with a connect()ed socket.  sendto() can
  2356.     only be used with non-connect()ed DGRAM-type sockets.  sendmsg()
  2357.     is an advanced function.
  2358.  
  2359.    INPUTS
  2360.     s           - socket descriptor.
  2361.     buf         - pointer to message buffer.
  2362.     len         - length of message to transmit.
  2363.     flags       - 0 or MSG_OOB to send out-of-band data.
  2364.     to          - pointer to a sockaddr containing the destination.
  2365.     to_len      - sizeof(struct sockaddr).
  2366.     msg         - pointer to a struct msghdr, defined in
  2367.               "sys/socket.h."
  2368.  
  2369.    RESULT
  2370.     cc        - the number of bytes sent. This does not imply that
  2371.               the bytes were recieved.  -1 is returned on a local
  2372.               error (errno will be set to the specific error
  2373.               code).  Possible errors are:
  2374.  
  2375.         EBADF        an invalid descriptor was used
  2376.         ENOTSOCK    's' is not a socket
  2377.         EMSGSIZE    the socket requires that the message be
  2378.                 sent atomically and the size of the message
  2379.                 prevents that.
  2380.         EWOULDBLOCK    requested operation would block
  2381.  
  2382.    EXAMPLE
  2383.  
  2384.    NOTES
  2385.  
  2386.    BUGS
  2387.  
  2388.    SEE ALSO
  2389.     recv(), socket()
  2390.  
  2391. socket.library/sethostent                           socket.library/sethostent
  2392.  
  2393.    NAME
  2394.     sethostent -- Rewind the hosts file ("inet:s/hosts").
  2395.  
  2396.    SYNOPSIS
  2397.     sethostent( flag )
  2398.  
  2399.     void sethostent( int );
  2400.                      D1
  2401.  
  2402.    FUNCTION
  2403.     This function is rarely useful.
  2404.  
  2405.     Opens the host file if necessary.  Rewinds the host file if it
  2406.     is open.
  2407.  
  2408.    INPUTS
  2409.     flag        - If 'flag' is 1, calls to gethostbyname() and
  2410.               gethostbyaddr() will not close the file between
  2411.               calls.  You must close the file with an
  2412.               endhostent().  Once set, 'flag' cannot be reset
  2413.               except by calling endhostent().
  2414.  
  2415.    RESULT
  2416.     None.
  2417.  
  2418.    EXAMPLE
  2419.  
  2420.    NOTES
  2421.  
  2422.    BUGS
  2423.  
  2424.    SEE ALSO
  2425.     gethostent(), gethostbyname(), gethostbyaddr(), endhostent()
  2426.  
  2427. socket.library/setnetent                             socket.library/setnetent
  2428.  
  2429.    NAME
  2430.     setnetent -- Open or rewind the networks file.
  2431.  
  2432.    SYNOPSIS
  2433.     setnetent( flag )
  2434.                   D1
  2435.  
  2436.     void setnetent( int );
  2437.  
  2438.    FUNCTION
  2439.     Rewinds the network file if it is open.
  2440.     Opens the network file if it was not open.
  2441.  
  2442.    INPUTS
  2443.     flag        - if 'flag' is 1, calls to getnetbyname() and
  2444.               getnetbyaddr() will not close the file between
  2445.               calls.  You must close the file with an endnetent().
  2446.               Once set, 'flag' cannot be reset except by calling
  2447.               endnetent().
  2448.  
  2449.    RESULT
  2450.     None.
  2451.  
  2452.    EXAMPLE
  2453.  
  2454.    NOTES
  2455.  
  2456.    BUGS
  2457.  
  2458.    SEE ALSO
  2459.     getnetent(), getnetbyname(), getnetbyaddr(), endnetent()
  2460.  
  2461. socket.library/setprotoent                         socket.library/setprotoent
  2462.  
  2463.    NAME
  2464.     setprotoent -- Open or rewind the protocols file.
  2465.  
  2466.    SYNOPSIS
  2467.     setprotoent( flag )
  2468.  
  2469.     void setprotoent( int );
  2470.                       D1
  2471.  
  2472.    FUNCTION
  2473.     This function is rarely useful.
  2474.  
  2475.     Opens the protocols file if necessary.
  2476.     Rewinds the protocols file if it is open.
  2477.  
  2478.    INPUTS
  2479.     flag        - if 'flag' is 1, calls to getprotobyname() and
  2480.               getprotobynumber() will not close the file
  2481.               between calls.  You must close the file with an
  2482.               endprotoent().  Once set, 'flag' cannot be reset
  2483.               except by calling endprotoent().
  2484.    RESULT
  2485.     None.
  2486.  
  2487.    EXAMPLE
  2488.  
  2489.    NOTES
  2490.  
  2491.    BUGS
  2492.  
  2493.    SEE ALSO
  2494.     getprotoent(), endprotoent(), getprotobyname(), getprotobynumber()
  2495.  
  2496. socket.library/setpwent                               socket.library/setpwent
  2497.  
  2498.    NAME
  2499.     setpwent - Opens or rewinds the password file.
  2500.  
  2501.    SYNOPSIS
  2502.     setpwent( flag )
  2503.               D1
  2504.  
  2505.     void setpwent( int );
  2506.  
  2507.    FUNCTION
  2508.     If the file is already open the file is rewound. Otherwise the
  2509.     file is opened.
  2510.  
  2511.    INPUTS
  2512.     flag        - if 'flag' is 1, calls to getpwuid() and getpwnam()
  2513.               will not close the file between calls.  You must
  2514.               close the file with an endpwent().  Once set,
  2515.               'flag' cannot be reset except by calling endpwent().
  2516.  
  2517.    RESULT
  2518.     None.
  2519.  
  2520.    SEE ALSO
  2521.     endpwent(), getpwent()
  2522.  
  2523. socket.library/setservent                           socket.library/setservent
  2524.  
  2525.    NAME
  2526.     setservent -- Open or rewind the services file.
  2527.  
  2528.    SYNOPSIS
  2529.     setservent( flag )
  2530.                 D1
  2531.  
  2532.     void setservent( int );
  2533.  
  2534.    FUNCTION
  2535.     This function is rarely useful.
  2536.  
  2537.     Opens the services file if necessary.
  2538.     Rewinds the services file if it is open.
  2539.  
  2540.    INPUTS
  2541.     flag        - if 'flag' is 1, calls to getservbyport() and
  2542.               getservbyname() will not close the file between
  2543.               calls.  You must close the file with an
  2544.               endservent().  Once set, 'flag' cannot be reset
  2545.               except by calling endservent().
  2546.  
  2547.    EXAMPLE
  2548.  
  2549.    NOTES
  2550.  
  2551.    BUGS
  2552.  
  2553.    SEE ALSO
  2554.     getservent(), endservent()
  2555.  
  2556. socket.library/setsockopt                           socket.library/setsockopt
  2557.  
  2558.    NAME
  2559.     setsockopt -- Set socket options.
  2560.  
  2561.    SYNOPSIS
  2562.     return = setsockopt( s, level, optname, optval, optlen )
  2563.     D0                   D0 D1     D2       A0      D3
  2564.  
  2565.     int setsockopt( int, int, int, char *, int );
  2566.  
  2567.    FUNCTION
  2568.     Sets the option specified by 'optname' for socket 's.'
  2569.     This is an advanced function.  See the "sys/socket.h" header and
  2570.     your favorite TCP/IP reference for more information on options.
  2571.  
  2572.    INPUTS
  2573.     s        - socket descriptor.
  2574.     level        - protocol level.  Valid levels are:
  2575.                IPPROTO_IP    IP options
  2576.                IPPROTO_TCP    TCP options
  2577.                SOL_SOCKET    socket options
  2578.     optname        - option name.
  2579.     optval        - pointer to the buffer with the new value.
  2580.     optlen        - size of 'optval' (in bytes).
  2581.  
  2582.    RESULT
  2583.     return        - 0 if successful else -1 (errno will contain the
  2584.               specific error).
  2585.  
  2586.    EXAMPLE
  2587.         int on = 1;
  2588.         setsockopt( s, SOL_SOCKET, SO_DEBUG, &on, (int)sizeof(on));
  2589.  
  2590.    NOTES
  2591.  
  2592.    BUGS
  2593.  
  2594.    SEE ALSO
  2595.     getsockopt()
  2596.  
  2597. socket.library/setup_sockets                     socket.library/setup_sockets
  2598.  
  2599.    NAME
  2600.     setup_sockets -- Initialize global data for sockets.
  2601.  
  2602.    SYNOPSIS
  2603.     retval = setup_sockets( max_sockets, errnop );
  2604.     D0                      D1           A0
  2605.  
  2606.     ULONG setup_sockets( UWORD, int * );
  2607.  
  2608.    FUNCTION
  2609.     This function initializes global variables, sets the library errno
  2610.     to point to the application's errno, and allocates signals.
  2611.     This should always be called immediately after an OpenLibrary().
  2612.     The only reason this initialization is not done automatically
  2613.     is because a pointer to errno must be passed in.
  2614.  
  2615.     'max_sockets' must be less than FD_SETSIZE.
  2616.  
  2617.    INPUTS
  2618.     max_sockets    - maximum number of sockets that can be open at once.
  2619.               (4 bytes are allocated for each socket.)
  2620.     errno        - pointer to the global int 'errno.'
  2621.  
  2622.    RESULT
  2623.     retval        - TRUE on success, FALSE on failure.  If 'max_sockets'
  2624.               is greater than FD_SETSIZE, setup_sockets() will
  2625.               fail.  FD_SETSIZE is currently 128 (see
  2626.               <sys/types.h>)
  2627.  
  2628.    NOTES
  2629.     If you are using a language other than C, you must pass in a pointer
  2630.     to a variable that will hold the error numbers.
  2631.  
  2632.     In SAS C, errno is a global in lc.lib.  If you don't link with lc.lib
  2633.     you will have to declare errno locally.
  2634.  
  2635.    BUGS
  2636.  
  2637.    SEE ALSO
  2638.     cleanup_sockets()
  2639.  
  2640. socket.library/shutdown                               socket.library/shutdown
  2641.  
  2642.    NAME
  2643.     shutdown -- Shut down part of a full-duplex connection.
  2644.  
  2645.    SYNOPSIS
  2646.     return = shutdown( s, how )
  2647.     D0                 D0 D1
  2648.  
  2649.     int shutdown(int, int);
  2650.  
  2651.    FUNCTION
  2652.     Sockets are normally terminated by using just s_close().  However,
  2653.     s_close() will attempt to deliver any data that is still pending.
  2654.     Further, shutdown() provides more control over how a connection is
  2655.     terminated.  You should eventually use s_close() on all sockets you
  2656.     own, regardless of what shutdown() is done on those sockets.
  2657.  
  2658.    INPUTS
  2659.     s        - socket descriptor.
  2660.     how        - 'how' can be one of the following:
  2661.               0    disallow further receives
  2662.               1    disallow further sends
  2663.               2    disallow further sends and receives
  2664.  
  2665.    RESULT
  2666.     return        - 0 if successful else -1 (errno will contain the
  2667.               specific error).
  2668.  
  2669.    EXAMPLE
  2670.  
  2671.    NOTES
  2672.  
  2673.    BUGS
  2674.  
  2675.    SEE ALSO
  2676.        s_close()
  2677.  
  2678. socket.library/socket                                   socket.library/socket
  2679.  
  2680.    NAME
  2681.     socket -- Create an endpoint for communication.
  2682.  
  2683.    SYNOPSIS
  2684.     s = socket( family, type, protocol )
  2685.     D0          D0      D1    D2
  2686.  
  2687.     int socket( int, int, int );
  2688.  
  2689.    FUNCTION
  2690.     socket() returns a socket descriptor for a socket with .
  2691.  
  2692.    INPUTS
  2693.     family   - This specifies an address format with which
  2694.                addresses specified in later operations using
  2695.                socket should be interpreted.
  2696.     type     - Specifies the semantice of communication.
  2697.     protocol - Specifies a particular protocol to be used with the
  2698.                socket.
  2699.  
  2700.    RESULT
  2701.     s        - Returns a (-1) upon failure  ; a socket descriptor
  2702.                upon success.
  2703.  
  2704.    NOTES
  2705.     Unlike the linkable socket library, this function assumes that
  2706.     you have already made a succesful call to 'setup_sockets()'.
  2707.  
  2708.    SEE ALSO
  2709.  
  2710. socket.library/strerror                               socket.library/strerror
  2711.  
  2712.    NAME
  2713.     strerror - Returns a pointer to an error message.
  2714.  
  2715.    SYNOPSIS
  2716.     #include <string.h>
  2717.  
  2718.     error = strerror( error_number )
  2719.     D0                D1
  2720.  
  2721.     char *strerror( int );
  2722.  
  2723.    FUNCTION
  2724.     The strerror() function maps the error number to a language-
  2725.     dependent Unix error message.
  2726.  
  2727.    INPUTS
  2728.     error_number     - usually the value of errno.
  2729.  
  2730.    RESULT
  2731.     error        - pointer to the error message.
  2732.  
  2733.    NOTES
  2734.     This function should eventually be localized.
  2735.  
  2736.    SEE ALSO
  2737.     <errno.h>,  perror()
  2738.  
  2739. socket.library/syslog                                   socket.library/syslog
  2740.  
  2741.    NAME
  2742.     syslog - log system messages
  2743.  
  2744.    SYNOPSIS
  2745.     error = syslog( priority, message )
  2746.     D0              A0        D0
  2747.  
  2748.     int syslog( int, char * ) ;
  2749.  
  2750.    FUNCTION
  2751.     syslog() writes the 'message' argument to a console window and/or
  2752.     a specified file. The priority field is used to determine which,
  2753.     if any, of the above options is used.
  2754.  
  2755.     The file "inet:s/inet.config" contains the optional fields:
  2756.  
  2757.       filepri        - msgs w/pri >= filepri are sent to file.
  2758.       windowpri      - msgs w/pri >= windowpri are sent to window.
  2759.       syslogfilename - the path/name of the file for filepri messages.
  2760.  
  2761.     Example:  (Note: this is the exact format to use in the
  2762.                      'inet:s/inet.config' file.)
  2763.  
  2764.       filepri=5
  2765.       windowpri=3
  2766.       syslogfilename="t:foobar"
  2767.  
  2768.       These entries tell syslog how to deal with the messages it is
  2769.       sent.  Note that the smaller the priority number, the greater
  2770.       it's priority. Therefore, a message of priority 3 is of greater
  2771.       importance than a message of priority 4. If you do not add these
  2772.       fields to you 'inet:s/inet.config' file, the default values will
  2773.       be used. The default values are:
  2774.  
  2775.         windowpri = 4
  2776.         filepri   = 3
  2777.         syslogfilename = "ram:syslog.dat"
  2778.  
  2779.       The above values mean:
  2780.  
  2781.         1. A message sent with a priority >= 4 (4,3,2,1,0) will
  2782.            be sent to BOTH the console window and the file
  2783.            'ram:syslog.dat'.
  2784.  
  2785.         2. A message sent with a priority >= 3 (3,2,1,0) will
  2786.            be sent to ONLY the console window.
  2787.  
  2788.         3. A message sent with a priority < 4 (5,6,7,8) will
  2789.            be ignored.
  2790.  
  2791.    INPUTS
  2792.     pri       - an integer value between 0-7
  2793.     message   - a string to be written to the console window and/or
  2794.                 the syslog file.
  2795.  
  2796.    RESULT
  2797.     error     - 0 (zero) is returned if everything went well.
  2798.                 -1 is returned if anything went wrong.
  2799.  
  2800.       If an error has occurred, you need to examine your errno value
  2801.       to determine just what went wrong. It is possible, for example,
  2802.       to have a write to the console window succeed while a write of
  2803.       the same message to the file failed.  The various error values
  2804.       that occur during the syslog operation are OR'd together and
  2805.       returned in 'errno'. See the file "sys/syslog.h" for the values.
  2806.  
  2807.       Example:
  2808.  
  2809.       #include<sys/syslog.h>
  2810.          ...
  2811.        extern int errno ;
  2812.        int error ;
  2813.  
  2814.        error = syslog( 5, "This is a test\n") ;
  2815.        if( error == -1 )
  2816.        {
  2817.           if( errno & SYSLOGF_WINDOWOPEN )
  2818.           {
  2819.              printf("Could not open syslog window\n") ;
  2820.           }
  2821.           if( errno & SYSLOGF_FILEWRITE )
  2822.           {
  2823.              printf("Could not write to syslog file\n") ;
  2824.           }
  2825.        }
  2826.  
  2827.    NOTES
  2828.     1. syslog() will clear the global errno value with each call.
  2829.  
  2830.     2. Unlike the Unix syslog() function, the Amiga version does not
  2831.        handle printf-style arguments. This will need to be handled in
  2832.        the application.
  2833.  
  2834.     3. The maximum length of a syslogfilename line in inet.config is
  2835.        127 characters. This includes the 'syslogfilename=' portion
  2836.        of the line.
  2837.  
  2838.        maxlen(path/filename) = 127 - len( "syslogfilename=" )
  2839.  
  2840.    BUGS
  2841.     none known
  2842.  
  2843.    SEE ALSO
  2844.     inet.config (in the AS225 manual)
  2845.  
  2846. socket.library/umask                                     socket.library/umask
  2847.  
  2848.    NAME
  2849.     umask  -- get and set user file creation mask
  2850.  
  2851.    SYNOPSIS
  2852.     #include <sys/types.h>
  2853.  
  2854.     umask = umask( cmask )
  2855.     D0             D0
  2856.  
  2857.     mode_t umask ( mode_t );
  2858.  
  2859.    FUNCTION
  2860.     The umask() function sets the file creation mask to 'cmask'
  2861.     and returns the old value of the mask.
  2862.  
  2863.    RESULT
  2864.     -1 will be returned and an error message will be displayed
  2865.     if there is a problem reading the current configuration.
  2866.  
  2867.    EXAMPLE
  2868.  
  2869.    NOTES
  2870.     Amiga filesystems, of course, will not use this file creation
  2871.     mask.  We use it for NFS, and provide it in case you can think
  2872.     of something to use it for.
  2873.  
  2874.     The new mask value is not saved to the configuration file. It
  2875.     will be reset when the machine is rebooted.
  2876.  
  2877.     Currently, the configuration information is stored in memory
  2878.     in a configuration structure.  If this structure cannot be
  2879.     found, it will be initialized by reading in inet:s/inet.config.
  2880.     This may change in the future.
  2881.  
  2882.  
  2883.    BUGS
  2884.  
  2885.    SEE ALSO
  2886.     getumask()
  2887.  
  2888.