* On newer distros (like FC5) the linker was called without --export-dynamic, making EtherApe unusable. * Fixed bug 1488215, "cancel" button on preferences dialog doesn't work. * Updated .desktop and .spec files * Updated debian files
95 lines
3.2 KiB
Text
95 lines
3.2 KiB
Text
$NetBSD: patch-ab,v 1.3 2006/08/05 12:20:34 adam Exp $
|
|
|
|
--- src/direct_resolve.c.orig 2006-04-29 09:58:35.000000000 +0200
|
|
+++ src/direct_resolve.c
|
|
@@ -42,7 +42,6 @@
|
|
#include <sys/time.h>
|
|
#include <sys/select.h>
|
|
#include <sys/stat.h>
|
|
-#include <sys/errno.h>
|
|
#include <sys/socket.h>
|
|
#include <netinet/in.h>
|
|
#include <arpa/inet.h>
|
|
@@ -72,8 +71,17 @@ extern char *sys_errlist[];
|
|
#define strerror(errno) (((errno) >= 0 && (errno) < sys_nerr) ? sys_errlist[errno] : "unlisted error")
|
|
#endif
|
|
|
|
-/* Hmm, it seems Irix requires this */
|
|
-extern int errno;
|
|
+#ifdef res_ninit
|
|
+#define RES_INIT() res_ninit(&myres);
|
|
+#define RES_MKQUERY(a, b, c, d, e, f, g, h, i) \
|
|
+ res_nmkquery(&myres, a, b, c, d, e, f, g, h, i)
|
|
+struct __res_state myres;
|
|
+#else
|
|
+#define myres _res
|
|
+#define RES_INIT() res_init();
|
|
+#define RES_MKQUERY(a, b, c, d, e, f, g, h, i) \
|
|
+ res_mkquery(a, b, c, d, e, f, g, h, i)
|
|
+#endif
|
|
|
|
/* Defines */
|
|
#define HostnameLength 255 /* From RFC */
|
|
@@ -254,15 +262,15 @@ void
|
|
direct_open (void)
|
|
{
|
|
int option, i;
|
|
- res_init ();
|
|
- if (!_res.nscount)
|
|
+ RES_INIT();
|
|
+ if (!myres.nscount)
|
|
{
|
|
fprintf (stderr, "No nameservers defined.\n");
|
|
exit (-1);
|
|
}
|
|
- _res.options |= RES_RECURSE | RES_DEFNAMES | RES_DNSRCH;
|
|
- for (i = 0; i < _res.nscount; i++)
|
|
- _res.nsaddr_list[i].sin_family = AF_INET;
|
|
+ myres.options |= RES_RECURSE | RES_DEFNAMES | RES_DNSRCH;
|
|
+ for (i = 0; i < myres.nscount; i++)
|
|
+ myres.nsaddr_list[i].sin_family = AF_INET;
|
|
resfd = socket (AF_INET, SOCK_DGRAM, 0);
|
|
if (resfd == -1)
|
|
{
|
|
@@ -320,7 +328,7 @@ dorequest (char *s, int type, word id)
|
|
int buf[(MaxPacketsize / sizeof (int)) + 1];
|
|
|
|
restell ("dorequest().");
|
|
- r = res_mkquery (QUERY, s, C_IN, type, NULL, 0, NULL, (u_char *) buf,
|
|
+ r = RES_MKQUERY (QUERY, s, C_IN, type, NULL, 0, NULL, (u_char *) buf,
|
|
MaxPacketsize);
|
|
if (r == -1)
|
|
{
|
|
@@ -329,9 +337,9 @@ dorequest (char *s, int type, word id)
|
|
}
|
|
hp = (packetheader *) buf;
|
|
hp->id = id; /* htons() deliberately left out (redundant) */
|
|
- for (i = 0; i < _res.nscount; i++)
|
|
+ for (i = 0; i < myres.nscount; i++)
|
|
(void) sendto (resfd, buf, r, 0,
|
|
- (struct sockaddr *) &_res.nsaddr_list[i],
|
|
+ (struct sockaddr *) &myres.nsaddr_list[i],
|
|
sizeof (struct sockaddr));
|
|
}
|
|
|
|
@@ -735,15 +743,15 @@ direct_ack ()
|
|
/* Check to see if this server is actually one we sent to */
|
|
if (from.sin_addr.s_addr == localhost)
|
|
{
|
|
- for (i = 0; i < _res.nscount; i++)
|
|
- if ((_res.nsaddr_list[i].sin_addr.s_addr == from.sin_addr.s_addr) || (!_res.nsaddr_list[i].sin_addr.s_addr)) /* 0.0.0.0 replies as 127.0.0.1 */
|
|
+ for (i = 0; i < myres.nscount; i++)
|
|
+ if ((myres.nsaddr_list[i].sin_addr.s_addr == from.sin_addr.s_addr) || (!myres.nsaddr_list[i].sin_addr.s_addr)) /* 0.0.0.0 replies as 127.0.0.1 */
|
|
break;
|
|
}
|
|
else
|
|
- for (i = 0; i < _res.nscount; i++)
|
|
- if (_res.nsaddr_list[i].sin_addr.s_addr == from.sin_addr.s_addr)
|
|
+ for (i = 0; i < myres.nscount; i++)
|
|
+ if (myres.nsaddr_list[i].sin_addr.s_addr == from.sin_addr.s_addr)
|
|
break;
|
|
- if (i == _res.nscount)
|
|
+ if (i == myres.nscount)
|
|
{
|
|
snprintf (tempstring, sizeof (tempstring),
|
|
"Resolver error: Received reply from unknown source: %s",
|