* - Dianora
*/
+#include <rb_lib.h>
+
+#ifndef _WIN32
+
+#include <netdb.h>
+
+typedef struct addrinfo rb_addrinfo;
+
+#else
+#include "getaddrinfo.h"
+#include "getnameinfo.h"
+#define getaddrinfo rb_getaddrinfo
+#define getnameinfo rb_getnameinfo
+#define freeaddrinfo rb_freeaddrinfo
+
+extern const char * get_windows_nameservers(void);
+typedef struct rb_addrinfo rb_addrinfo;
+#endif
+
#include "stdinc.h"
#include "ircd_defs.h"
-#include "common.h"
#include "ircd.h"
#include "res.h"
#include "reslib.h"
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /*256*/
};
+#ifndef _WIN32
static int parse_resvconf(void);
+#else
+static void parse_windows_resolvers(void);
+#endif
+
static void add_nameserver(const char *);
static const char digits[] = "0123456789";
irc_res_init(void)
{
irc_nscount = 0;
+#ifndef _WIN32
parse_resvconf();
+#else
+ parse_windows_resolvers();
+#endif
if (irc_nscount == 0)
add_nameserver("127.0.0.1");
return 0;
}
+#ifdef _WIN32
+static void
+parse_windows_resolvers(void)
+{
+ const char *ns = get_windows_nameservers();
+ char *server;
+ char *p;
+ char *buf = rb_strdup(ns);
+ for(server = rb_strtok_r(buf, " ", &p); server != NULL;server = rb_strtok_r(NULL, " ", &p))
+ {
+ add_nameserver(server);
+ }
+ rb_free(buf);
+}
+#else
/* parse_resvconf()
*
* inputs - NONE
fclose(file);
return 0;
}
+#endif
/* add_nameserver()
*
static void
add_nameserver(const char *arg)
{
- struct addrinfo hints, *res;
+ rb_addrinfo hints, *res;
/* Done max number of nameservers? */
if (irc_nscount >= IRCD_MAXNS)