| Index: fusl/src/network/gethostbyname2_r.c
|
| diff --git a/fusl/src/network/gethostbyname2_r.c b/fusl/src/network/gethostbyname2_r.c
|
| index 81f71d2160fef695510d53063ba7b8d55716977f..d5eea2376a508ab71746786d503255754794489f 100644
|
| --- a/fusl/src/network/gethostbyname2_r.c
|
| +++ b/fusl/src/network/gethostbyname2_r.c
|
| @@ -8,75 +8,81 @@
|
| #include <stdint.h>
|
| #include "lookup.h"
|
|
|
| -int gethostbyname2_r(const char *name, int af,
|
| - struct hostent *h, char *buf, size_t buflen,
|
| - struct hostent **res, int *err)
|
| -{
|
| - struct address addrs[MAXADDRS];
|
| - char canon[256];
|
| - int i, cnt;
|
| - size_t align, need;
|
| +int gethostbyname2_r(const char* name,
|
| + int af,
|
| + struct hostent* h,
|
| + char* buf,
|
| + size_t buflen,
|
| + struct hostent** res,
|
| + int* err) {
|
| + struct address addrs[MAXADDRS];
|
| + char canon[256];
|
| + int i, cnt;
|
| + size_t align, need;
|
|
|
| - *res = 0;
|
| - cnt = __lookup_name(addrs, canon, name, af, AI_CANONNAME);
|
| - if (cnt<0) switch (cnt) {
|
| - case EAI_NONAME:
|
| - *err = HOST_NOT_FOUND;
|
| - return ENOENT;
|
| - case EAI_AGAIN:
|
| - *err = TRY_AGAIN;
|
| - return EAGAIN;
|
| - default:
|
| - case EAI_FAIL:
|
| - *err = NO_RECOVERY;
|
| - return EBADMSG;
|
| - case EAI_MEMORY:
|
| - case EAI_SYSTEM:
|
| - *err = NO_RECOVERY;
|
| - return errno;
|
| - case 0:
|
| - break;
|
| - }
|
| + *res = 0;
|
| + cnt = __lookup_name(addrs, canon, name, af, AI_CANONNAME);
|
| + if (cnt < 0)
|
| + switch (cnt) {
|
| + case EAI_NONAME:
|
| + *err = HOST_NOT_FOUND;
|
| + return ENOENT;
|
| + case EAI_AGAIN:
|
| + *err = TRY_AGAIN;
|
| + return EAGAIN;
|
| + default:
|
| + case EAI_FAIL:
|
| + *err = NO_RECOVERY;
|
| + return EBADMSG;
|
| + case EAI_MEMORY:
|
| + case EAI_SYSTEM:
|
| + *err = NO_RECOVERY;
|
| + return errno;
|
| + case 0:
|
| + break;
|
| + }
|
|
|
| - h->h_addrtype = af;
|
| - h->h_length = af==AF_INET6 ? 16 : 4;
|
| + h->h_addrtype = af;
|
| + h->h_length = af == AF_INET6 ? 16 : 4;
|
|
|
| - /* Align buffer */
|
| - align = -(uintptr_t)buf & sizeof(char *)-1;
|
| + /* Align buffer */
|
| + align = -(uintptr_t)buf & sizeof(char*) - 1;
|
|
|
| - need = 4*sizeof(char *);
|
| - need += (cnt + 1) * (sizeof(char *) + h->h_length);
|
| - need += strlen(name)+1;
|
| - need += strlen(canon)+1;
|
| - need += align;
|
| + need = 4 * sizeof(char*);
|
| + need += (cnt + 1) * (sizeof(char*) + h->h_length);
|
| + need += strlen(name) + 1;
|
| + need += strlen(canon) + 1;
|
| + need += align;
|
|
|
| - if (need > buflen) return ERANGE;
|
| + if (need > buflen)
|
| + return ERANGE;
|
|
|
| - buf += align;
|
| - h->h_aliases = (void *)buf;
|
| - buf += 3*sizeof(char *);
|
| - h->h_addr_list = (void *)buf;
|
| - buf += (cnt+1)*sizeof(char *);
|
| + buf += align;
|
| + h->h_aliases = (void*)buf;
|
| + buf += 3 * sizeof(char*);
|
| + h->h_addr_list = (void*)buf;
|
| + buf += (cnt + 1) * sizeof(char*);
|
|
|
| - h->h_name = h->h_aliases[0] = buf;
|
| - strcpy(h->h_name, canon);
|
| - buf += strlen(h->h_name)+1;
|
| + h->h_name = h->h_aliases[0] = buf;
|
| + strcpy(h->h_name, canon);
|
| + buf += strlen(h->h_name) + 1;
|
|
|
| - if (strcmp(h->h_name, name)) {
|
| - h->h_aliases[1] = buf;
|
| - strcpy(h->h_aliases[1], name);
|
| - buf += strlen(h->h_aliases[1])+1;
|
| - } else h->h_aliases[1] = 0;
|
| + if (strcmp(h->h_name, name)) {
|
| + h->h_aliases[1] = buf;
|
| + strcpy(h->h_aliases[1], name);
|
| + buf += strlen(h->h_aliases[1]) + 1;
|
| + } else
|
| + h->h_aliases[1] = 0;
|
|
|
| - h->h_aliases[2] = 0;
|
| + h->h_aliases[2] = 0;
|
|
|
| - for (i=0; i<cnt; i++) {
|
| - h->h_addr_list[i] = (void *)buf;
|
| - buf += h->h_length;
|
| - memcpy(h->h_addr_list[i], addrs[i].addr, h->h_length);
|
| - }
|
| - h->h_addr_list[i] = 0;
|
| + for (i = 0; i < cnt; i++) {
|
| + h->h_addr_list[i] = (void*)buf;
|
| + buf += h->h_length;
|
| + memcpy(h->h_addr_list[i], addrs[i].addr, h->h_length);
|
| + }
|
| + h->h_addr_list[i] = 0;
|
|
|
| - *res = h;
|
| - return 0;
|
| + *res = h;
|
| + return 0;
|
| }
|
|
|