GETSERVENT(3) | Library Functions Manual | GETSERVENT(3) |
getservent
, getservent_r
,
getservbyport
,
getservbyport_r
,
getservbyname
,
getservbyname_r
, setservent
,
setservent_r
, endservent
,
endservent_r
—
#include <netdb.h>
struct servent *
getservent
(void);
int
getservent_r
(struct
servent *servent, struct
servent_data *servent_data);
struct servent *
getservbyname
(const
char *name, const char
*proto);
int
getservbyname_r
(const
char *name, const char
*proto, struct servent
*servent, struct
servent_data *servent_data);
struct servent *
getservbyport
(int
port, const char
*proto);
int
getservbyport_r
(int
port, const char
*proto, struct servent
*servent, struct
servent_data *servent_data);
void
setservent
(int
stayopen);
void
setservent_r
(int
stayopen, struct
servent_data *servent_data);
void
endservent
(void);
void
endservent_r
(struct
servent_data *servent_data);
getservent
(),
getservbyname
(), and
getservbyport
() functions each return a pointer to an
object with the following structure containing the broken-out fields of a line
in the network services database, /etc/services.
struct servent { char *s_name; /* official name of service */ char **s_aliases; /* alias list */ int s_port; /* port service resides at */ char *s_proto; /* protocol to use */ };
The members of this structure are:
The getservent
() function reads the next
line of the file, opening the file if necessary.
The setservent
() function opens and
rewinds the file. If the stayopen flag is non-zero,
the services database will not be closed after each call to
getservbyname
() or
getservbyport
().
The endservent
() function closes the
file.
The getservbyname
() and
getservbyport
() functions sequentially search from
the beginning of the file until a matching protocol name or port number
(specified in network byte order) is found, or until
EOF
is encountered. If a protocol name is also
supplied (non-null), searches must also match the protocol.
The getservent_r
(),
getservbyport_r
(),
getservbyname_r
(),
setservent_r
(), and
endservent_r
() functions are reentrant versions of
the above functions that take a pointer to a
servent_data structure which is used to store state
information. The structure must be zero-filled before it is used and should
be considered opaque for the sake of portability.
The getservent_r
(),
getservbyport_r
(), and
getservbyname_r
() functions also take a pointer to a
servent structure which is used to store the results
of the database lookup.
getservent
(),
getservbyport
(), and
getservbyname
() functions return a pointer to a
servent structure on success or a null pointer if
end-of-file is reached or an error occurs.
The getservent_r
(),
getservbyport_r
(), and
getservbyname_r
() functions return 0 on success or
-1 if end-of-file is reached or an error occurs.
getservent
(),
getservbynumber
(),
getservbyname
(), setservent
(),
and endservent
() functions conform to
IEEE Std 1003.1-2004 (“POSIX.1”).
The getservent_r
(),
getservbyport_r
(),
getservbyname_r
(),
setservent_r
(), and
endservent_r
() functions are not currently
standardized. This implementation follows the API used by HP, IBM, and
Digital.
getservent
(),
getservbyport
(),
getservbyname
(), setservent
(),
and endservent
() functions appeared in
4.2BSD.
The getservent_r
(),
getservbyport_r
(),
getservbyname_r
(),
setservent_r
(), and
endservent_r
() functions appeared in
OpenBSD 3.7.
June 5, 2013 | OpenBSD-current |