#define _GNU_SOURCE

#include <netdb.h>
#include <errno.h>
#include <stdlib.h>

struct hostent* gethostbyaddr(const void* a, socklen_t l, int af) {
  static struct hostent* h;
  size_t size = 63;
  struct hostent* res;
  int err;
  do {
    free(h);
    h = malloc(size += size + 1);
    if (!h) {
      h_errno = NO_RECOVERY;
      return 0;
    }
    err = gethostbyaddr_r(a, l, af, h, (void*)(h + 1), size - sizeof *h, &res,
                          &h_errno);
  } while (err == ERANGE);
  return err ? 0 : h;
}
