mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-03-06 08:56:22 +00:00
For every call of getservbyname/getservbyport the lookup of /etc/services is done by opening the file and parsing each line one-by-one. This is slow, but the implementation is simple. This change also adds fixes for the gethostbyname function.
40 lines
1.1 KiB
C
40 lines
1.1 KiB
C
#ifndef COSMOPOLITAN_LIBC_DNS_ENT_H_
|
|
#define COSMOPOLITAN_LIBC_DNS_ENT_H_
|
|
#include "libc/dns/dns.h"
|
|
|
|
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
|
COSMOPOLITAN_C_START_
|
|
|
|
extern int h_errno;
|
|
|
|
struct hostent {
|
|
char *h_name; /* official name of host */
|
|
char **h_aliases; /* alias list */
|
|
int h_addrtype; /* host address type */
|
|
int h_length; /* length of address */
|
|
char **h_addr_list; /* list of addresses */
|
|
};
|
|
#define h_addr h_addr_list[0]
|
|
|
|
struct servent {
|
|
char *s_name; /* official service name */
|
|
char **s_aliases; /* alias list */
|
|
int s_port; /* port number (in network byte order) */
|
|
char *s_proto; /* protocol to use */
|
|
};
|
|
|
|
struct hostent *gethostent(void);
|
|
struct hostent *gethostbyname(const char *);
|
|
struct hostent *gethostbyaddr(const void *, socklen_t, int);
|
|
void sethostent(int);
|
|
void endhostent(void);
|
|
|
|
struct servent *getservent(void);
|
|
struct servent *getservbyname(const char *, const char *);
|
|
struct servent *getservbyport(int, const char *);
|
|
void setservent(int);
|
|
void endservent(void);
|
|
|
|
COSMOPOLITAN_C_END_
|
|
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
|
#endif /* COSMOPOLITAN_LIBC_DNS_ENT_H_ */
|