$NetBSD: patch-ae,v 1.3 2013/03/25 01:59:03 dholland Exp $

- fd_set is not (necessarily) a struct
- change around handling of signal masks (XXX: it is still wrong)
- don't crash on remote machines that aren't in DNS
- use socklen_t witih accept()

--- netserv.c.orig	1994-04-10 10:07:23.000000000 +0000
+++ netserv.c
@@ -106,7 +106,11 @@ struct pqueue *find_player(char*);
 
 
 #ifdef HAVE_FDSET
+#  ifdef Linux
+  fd_set readmask;
+#  else
   struct fd_set readmask;
+#  endif
 #else
   struct fd_mask readmask;
 #endif
@@ -629,7 +633,7 @@ void start_signal(void)
  #ifdef RS6000 /* ibm rs/6000 */
    sigemptyset(&vec1.sa_mask);
  #else
-  vec1.sa_mask = 0;
+   (void)sigprocmask (SIG_SETMASK, 0, NULL);
  #endif
   vec1.sa_flags = 0;
   if ( sigaction(SIGALRM, &vec1, (struct sigaction *) 0) == -1) perror("SIGALRM\n");
@@ -652,7 +656,7 @@ void setup_sigchild(void) /* for externa
  #ifdef RS6000 /* ibm rs/6000 */
    sigemptyset(&svec1.sa_mask);
  #else
-  svec1.sa_mask = 0;
+   (void)sigprocmask (SIG_SETMASK, 0, NULL);
  #endif
   svec1.sa_flags = 0;
   if(sigaction(SIGCHLD,&svec1,(struct sigaction *)0) == -1) perror("SIGCHLD\n");
@@ -779,7 +783,11 @@ void do_timer(int nowaitgroup)
 void io_cntl(void)
 {
 #ifdef HAVE_FDSET
+#  ifdef Linux
+  fd_set readmask1;
+#  else
   struct fd_set readmask1;
+#  endif
 #else
   struct fd_mask readmask1;
 #endif
@@ -881,7 +889,7 @@ void io_cntl(void)
 
 void accept_socket(void)
 {
-  int addrlen = sizeof(struct sockaddr);
+  socklen_t addrlen = sizeof(struct sockaddr);
   struct cqueue *q;
 
   q = calloc(1,sizeof(struct cqueue)); /* alloc a new node */
@@ -914,7 +922,7 @@ char *get_hostname(struct cqueue *q,char
   char *saddr = (char *) &(((struct sockaddr_in *) &(q->remoteaddr))->sin_addr.s_addr);
   hp = gethostbyaddr(saddr,4,AF_INET);
 
-  if(strlen(hp->h_name) > 0)
+  if(hp && strlen(hp->h_name) > 0)
     strcpy(name,hp->h_name);
   else
     sprintf(name,"%d.%d.%d.%d",(int) saddr[0],(int) saddr[1],(int) saddr[2],(int) saddr[3]);
