summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/automatic.c
diff options
context:
space:
mode:
authorThierry Vignaud <tv@mageia.org>2012-03-12 20:35:39 +0000
committerThierry Vignaud <tv@mageia.org>2012-03-12 20:35:39 +0000
commit12ecb825c23e2465adbb488211e62f160f09c037 (patch)
treeb6fe2989d8a2074910a6d47a65e8be2b9190d91d /mdk-stage1/automatic.c
parent95e031578306cf1ef7656404d3e2b49db80497f4 (diff)
downloaddrakx-13.93.tar
drakx-13.93.tar.gz
drakx-13.93.tar.bz2
drakx-13.93.tar.xz
drakx-13.93.zip
13.9313.93
Diffstat (limited to 'mdk-stage1/automatic.c')
0 files changed, 0 insertions, 0 deletions
n>sa, socklen_t salen, char *host, size_t hostlen, char *serv, size_t servlen, int flags) { sa_family_t f=((struct sockaddr_storage *)sa)->ss_family; (void)salen; /* shut gcc up about unused salen */ if (host && hostlen>0) { /* user wants me to resolve the host name */ register const char*addr=(f==AF_INET6)?(char*)&((struct sockaddr_in6*)sa)->sin6_addr: (char*)&((struct sockaddr_in*)sa)->sin_addr; if (flags&NI_NUMERICHOST) { if (!inet_ntop(f,addr,host,hostlen)) return EAI_NONAME; } else { char buf[4096]; struct hostent h; struct hostent *H; int herrno; if (gethostbyaddr_r(addr,f==AF_INET6?16:4,f,&h,buf,4096,&H,&herrno)) { switch (herrno) { case TRY_AGAIN: return EAI_AGAIN; case NO_DATA: case HOST_NOT_FOUND: return EAI_NONAME; } } strncpy(host,h.h_name,hostlen-1); host[hostlen-1]=0; } } if (serv && servlen>0) { register short int port=(f==AF_INET6)?((struct sockaddr_in6*)sa)->sin6_port:((struct sockaddr_in*)sa)->sin_port; if (flags&NI_NUMERICSERV) { __ltostr(serv,servlen,ntohs(port),10,0); } else { struct servent *s; if (!(s=getservbyport(port,flags&NI_DGRAM?"udp":"tcp"))) return EAI_SERVICE; } } return 0; }