Vanilla List Maling List Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[VANILLA-L:1505] Re: [VANILLA-L:1495] Sever problem with INLrobot (2.9pl1)



Mikael Sandstr|m wrote:
> For now I think the INL robot crashed since it stopped taking commands
> and nothing was recorded to the INL_log after this happened.

This was experienced during Tom Holub's test games but we couldn't get
the data required to finish diagnosis.  Your back trace of the core dump
helped greatly.  There was a fault in inl.c and inlcomm.c in their use
of addr_mess() in ntserv.  Wrong number of arguments.  I've fixed it in
CVS, unified patch attached.  Caused by lack of header file prototypes.

-- 
James Cameron                                      (cameron@stl.dec.com)

OpenVMS, Linux, Firewalls, Software Engineering, CGI, HTTP, X, C, FORTH,
COBOL, BASIC, DCL, csh, bash, ksh, sh, Electronics, Microcontrollers,
Disability Engineering, Netrek, Bicycles, Pedant, Farming, Home Control,
Remote Area Power, Greek Scholar, Tenor Vocalist, Church Sound, Husband.

"Specialisation is for insects." -- Robert Heinlein.
? puck
? mars
? robotII
? basep
? inl
? addr_mess.patch
Index: inl.c
===================================================================
RCS file: /home/netrek/cvsroot/Vanilla/robots/inl.c,v
retrieving revision 1.12
diff -u -r1.12 inl.c
--- inl.c	1999/02/13 11:12:21	1.12
+++ inl.c	1999/02/18 01:50:23
@@ -106,7 +106,7 @@
 int start_tourney();
 void reset_stats();
 
-extern char *addr_mess();
+extern char *addr_mess(int who, int type);
 
 
 int
@@ -341,7 +341,7 @@
 	me = &players[messages[oldmctl].m_from];
 	if (!check_command(&messages[oldmctl]))
 	  pmessage(messages[oldmctl].m_from, MINDIV,
-		   addr_mess(messages[oldmctl].m_from),
+		   addr_mess(messages[oldmctl].m_from, MINDIV),
 		   "Not an INL command.  Send yourself 'help' for help.");
       }
     }
@@ -349,7 +349,7 @@
     else if (messages[oldmctl].m_flags & MALL) {
       if (strstr(messages[oldmctl].m_data, "help") != NULL)
 	pmessage(messages[oldmctl].m_from, MINDIV,
-		 addr_mess(messages[oldmctl].m_from),
+		 addr_mess(messages[oldmctl].m_from, MINDIV),
 		 "If you want help, send the message 'help' to yourself.");
     }
 #endif
@@ -554,7 +554,7 @@
     if (official == 2) {
       for (c=0; c < INLTEAM; c++) {
 	int who = inl_teams[c].captain;
-	pmessage(who, MINDIV, addr_mess(who),
+	pmessage(who, MINDIV, addr_mess(who, MINDIV),
 		 "Official registration script starting.");
       }
       sprintf(pipe, "./end_tourney.pl -register %d", tv.tv_sec);
@@ -579,7 +579,7 @@
       if (official == 2) {
 	for (c=0; c < INLTEAM; c++) {
 	  int who = inl_teams[c].captain;
-	  pmessage(who, MINDIV, addr_mess(who),
+	  pmessage(who, MINDIV, addr_mess(who, MINDIV),
 		   "Official registration script finished.");
 	}
       }
Index: inlcomm.c
===================================================================
RCS file: /home/netrek/cvsroot/Vanilla/robots/inlcomm.c,v
retrieving revision 1.6
diff -u -r1.6 inlcomm.c
--- inlcomm.c	1999/02/11 00:37:36	1.6
+++ inlcomm.c	1999/02/18 01:50:25
@@ -35,7 +35,7 @@
 extern char	*inl_from;
 extern Inl_countdown inl_countdown;
 
-extern char	*addr_mess();
+extern char	*addr_mess(int who, int type);
 extern int	doResources();
 extern void	inl_freeze();
 
@@ -51,7 +51,7 @@
 
   if ((players[who].w_queue != QU_HOME) && (players[who].w_queue != QU_AWAY))
     {
-      pmessage(who, MINDIV, addr_mess(who),
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
 	       "You are not on a team. Send yourself 'HOME' or 'AWAY'");
       return NONE;
     }
@@ -66,7 +66,8 @@
     }
   if (num == -1)
     {
-      pmessage(who, MINDIV, addr_mess(who),"You need to pick a team first.");
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
+	       "You need to pick a team first.");
       return NONE;
     }
 
@@ -74,7 +75,7 @@
     {
       if (inl_teams[num].captain != who) 
 	{
-	  pmessage(who, MINDIV, addr_mess(who),
+	  pmessage(who, MINDIV, addr_mess(who, MINDIV),
 		   "You are not the captain of your team.");
 	  return NONE;
 	}
@@ -116,7 +117,7 @@
 
   if (inl_teams[check_player(who, 0)].captain == who)
     {
-      pmessage(who, MINDIV, addr_mess(who),
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
 	       "You can't switch while you are captain!");
       return 0;
     }
@@ -139,7 +140,8 @@
 
   if (players[who].w_queue == queue)
     {
-      pmessage(who, MINDIV, addr_mess(who),"You are already on the %s team.",
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
+	       "You are already on the %s team.",
 	       inl_teams[side].name);
       return 0;
     }
@@ -152,8 +154,8 @@
       j->p_team = inl_teams[side].side;
       sprintf(j->p_mapchars,"%c%c",
 	      teamlet[j->p_team], shipnos[j->p_no]);
-      pmessage(who, MINDIV, addr_mess(who),"You are now on the %s team.",
-	       inl_teams[side].name);
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
+	       "You are now on the %s team.", inl_teams[side].name);
       j->p_status = PEXPLODE;
       j->p_whydead = KPROVIDENCE;
       if (j->p_ship.s_type == STARBASE)
@@ -167,7 +169,7 @@
       return 1;
     }
   else
-    pmessage(who, MINDIV, addr_mess(who),
+    pmessage(who, MINDIV, addr_mess(who, MINDIV),
 	     "You can't switch teams now, no free slots on the other team.");
 #endif /* ! nodef */
 }
@@ -191,7 +193,7 @@
 
   if (!inl_stat.change)
     {			/* can't change it anymore */
-      pmessage(who, MINDIV, addr_mess(who),
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
 	       "You can no longer start. The game has started.");
       return 0;
     }
@@ -202,15 +204,15 @@
   if ((inl_teams[num].side_index == NOT_CHOOSEN)
       || (inl_teams[num].side_index == RELINQUISH))
     {
-      pmessage(who, MINDIV, addr_mess(who),
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
 	       "You have to pick a side first");
       return 0;
     }
 
   inl_teams[num].flags |= T_START;
 
-  pmessage(0, MALL, inl_from, "%s (%s) requests the game to start.", inl_teams[num].t_name,
-	   players[who].p_mapchars);
+  pmessage(0, MALL, inl_from, "%s (%s) requests the game to start.", 
+	   inl_teams[num].t_name, players[who].p_mapchars);
 
   for (c=0; c < INLTEAM; c++)
     {
@@ -295,13 +297,13 @@
       if (inl_stat.flags & S_OVERTIME)
 	time += inl_stat.overtime;
 #ifdef nodef
-      pmessage(who, MINDIV, addr_mess(who),
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
 	       "Minutes remaining: %i	Planet tally: %i - %i - %i",
 	       ((time - inl_stat.game_ticks) / PERMIN ),
 	       inl_teams[HOME].planets, inl_teams[AWAY].planets,
 	       (20 - inl_teams[HOME].planets - inl_teams[AWAY].planets));
 #else
-      pmessage(who, MINDIV, addr_mess(who),
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
 	       "Minutes remaining: %i",
 	       ((time - inl_stat.game_ticks) / PERMIN ));
 #endif
@@ -313,13 +315,13 @@
 
   if (!(comm = strchr(comm, ' ')))
     {
-      pmessage(who, MINDIV, addr_mess(who),
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
 	       "Current game set to %d min with %d min overtime",
 	       inl_stat.time/PERMIN, inl_stat.overtime/PERMIN);
       if ((inl_teams[HOME].time != inl_teams[AWAY].time ) ||
 	  (inl_teams[HOME].overtime != inl_teams[AWAY].overtime))
 	for (i=0; i<INLTEAM; i++)
-	  pmessage(who, MINDIV, addr_mess(who),
+	  pmessage(who, MINDIV, addr_mess(who, MINDIV),
 		   "%s (%s) requests %d mins regulation and %d overtime",
 		   inl_teams[i].t_name, inl_teams[i].name,
 		   inl_teams[i].time, inl_teams[i].overtime);
@@ -328,14 +330,14 @@
 
   if (!inl_stat.change)
     {			/* can't change it anymore */
-      pmessage(who, MINDIV, addr_mess(who),
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
 	       "You can no longer change the gametime. The game has started.");
       return 0;
     }
 
   if ((sscanf(comm,"%d %d",&time,&overtime))!=2)
     {
-      pmessage(who, MINDIV, addr_mess(who),
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
 	       "Two times are needed (regulation & overtime)");
       return 0;
     }
@@ -381,12 +383,12 @@
 
   if (!(comm = strchr(comm, ' ')))
     {
-      pmessage(who, MINDIV, addr_mess(who),
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
 	       "The starting army count is set to %d.",
 	       inl_stat.start_armies);
       if (inl_teams[HOME].start_armies != inl_teams[AWAY].start_armies)
 	for (i=0; i<INLTEAM; i++)
-	  pmessage(who, MINDIV, addr_mess(who),
+	  pmessage(who, MINDIV, addr_mess(who, MINDIV),
 		   "%s (%s) requests %d starting armies.",
 		   inl_teams[i].t_name, inl_teams[i].name,
 		   inl_teams[i].start_armies);
@@ -395,14 +397,14 @@
 
   if (!inl_stat.change)
     {			/* can't change it anymore */
-      pmessage(who, MINDIV, addr_mess(who),
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
 	       "You can no longer change the starting armies. The game has started.");
       return 0;
     }
 
   if ((sscanf(comm,"%d",&army))!=1)
     {
-      pmessage(who, MINDIV, addr_mess(who),
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
 	       "Army takes exactly one argument");
       return 0;
     }
@@ -444,7 +446,7 @@
 
   if (!inl_stat.change)
     {			/* can't change it anymore */
-      pmessage(who, MINDIV, addr_mess(who),
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
 	       "You can no longer reset the galaxy. The game has started.");
       return 0;
     }
@@ -511,7 +513,7 @@
     }
   else
     {
-      pmessage(who, MINDIV, addr_mess(who),
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
 	       "%s (%s) is captain of your team already.",
 	       players[inl_teams[num].captain].p_name,
 	       players[inl_teams[num].captain].p_mapchars);
@@ -566,7 +568,7 @@
 
   if (!inl_stat.change)
     {			/* can't change it anymore */
-      pmessage(who, MINDIV, addr_mess(who),
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
 	       "You can no longer pick a side. The game has started.");
       return 0;
     }
@@ -582,14 +584,14 @@
 
   if (inl_teams[num].flags & T_SIDELOCKED)
     {
-      pmessage(who, MINDIV, addr_mess(who),
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
 	       "Choice of sides is no longer available.");
       return 0;
     }
 
   if ((num == HOME) && (inl_teams[other_side].side_index == NOT_CHOOSEN))
     {
-      pmessage(who, MINDIV, addr_mess(who),
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
 	       "The away team needs to pick a side first");
       return 0;
     }
@@ -597,7 +599,7 @@
   if (strcmp(comm, "PASS") == 0)
     if (num == HOME)
       {
-	pmessage(who, MINDIV, addr_mess(who),
+	pmessage(who, MINDIV, addr_mess(who, MINDIV),
 		 " Hey!! Only the Away team captain uses this!");
 	return 0;
       }
@@ -618,7 +620,7 @@
 	      {
 		if (inl_teams[other_side].side_index == c)
 		  {
-		    pmessage(who, MINDIV, addr_mess(who),
+		    pmessage(who, MINDIV, addr_mess(who, MINDIV),
 			     "The %s team already choose %s",
 			     inl_teams[other_side].name,
 			     sides[inl_teams[other_side].side_index].name);
@@ -626,7 +628,7 @@
 		  }
 		if (sides[inl_teams[other_side].side_index].diagonal == c)
 		  {
-		    pmessage(who, MINDIV, addr_mess(who),
+		    pmessage(who, MINDIV, addr_mess(who, MINDIV),
 			     "Cannot choose diagonal race to %s",
 			     sides[inl_teams[other_side].side_index].name);
 		    return 0;
@@ -659,7 +661,7 @@
 
   if (!inl_stat.change)
     {		/* can't change it anymore */
-      pmessage(who, MINDIV, addr_mess(who),
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
 	       "You can no longer change the team name. The game has started.");
       return 0;
     }
@@ -669,13 +671,13 @@
 
   if (!(comm = strchr(comm, ' ')))
     {
-      pmessage(who, MINDIV, addr_mess(who), "No team name was given.");
+      pmessage(who, MINDIV, addr_mess(who, MINDIV), "No team name was given.");
       return 0;
     }
 
   if (strlen(comm)+1 < 2)
     {
-      pmessage(who, MINDIV, addr_mess(who), "No team name was given.");
+      pmessage(who, MINDIV, addr_mess(who, MINDIV), "No team name was given.");
       return 0;
     }
 
@@ -683,7 +685,8 @@
 
   /*    free (inl_teams[num].t_name); */
   inl_teams[num].t_name = strdup (comm);
-  pmessage(who, MINDIV, addr_mess(who), "Team name set to %s", inl_teams[num].t_name);
+  pmessage(who, MINDIV, addr_mess(who, MINDIV),
+	   "Team name set to %s", inl_teams[num].t_name);
 
   return 1;
 }
@@ -716,7 +719,8 @@
 
   if (inl_stat.flags & S_PREGAME)
     {
-      pmessage(who, MINDIV, addr_mess(who), "You aren't even PLAYING!");
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
+	       "You aren't even PLAYING!");
       return 0;
     }
 
@@ -739,7 +743,8 @@
     {
       if (!(inl_teams[num].flags & T_PAUSE))
 	{
-	  pmessage(who, MINDIV, addr_mess(who), "Game is not paused.");
+	  pmessage(who, MINDIV, addr_mess(who, MINDIV),
+		   "Game is not paused.");
 	  return 0;
 	}
       inl_teams[num].flags &= ~T_PAUSE;
@@ -794,7 +799,8 @@
 
   if (inl_stat.flags & S_PREGAME)
     {
-      pmessage(who, MINDIV, addr_mess(who), "You aren't even PLAYING!");
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
+	       "You aren't even PLAYING!");
       return 0;
     }
 
@@ -831,7 +837,8 @@
 
   if (inl_stat.flags & S_PREGAME)
     {
-      pmessage(who, MINDIV, addr_mess(who), "You aren't even PLAYING!");
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
+	       "You aren't even PLAYING!");
       return 0;
     }
 
@@ -859,7 +866,7 @@
     }
   else if (inl_teams[num].tmout <= 0)
     {
-      pmessage(who, MINDIV, addr_mess(who),
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
 	       "You have exhausted your timeout allowance for this game.");
     }
   else
@@ -892,7 +899,7 @@
 
   if (!(inl_stat.flags & S_PREGAME))
     {
-      pmessage(who, MINDIV, addr_mess(who),
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
 	       "Weenie. You can't do a confine in tmode!!");
       return 0;
     }
@@ -949,7 +956,7 @@
 	  players[victim].w_queue != QU_AWAY_OBS )
      )
     {
-      pmessage(who, MINDIV, addr_mess(who),
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
                "That slot is on the other team.");
       return 1;
     }
@@ -957,7 +964,7 @@
   j = &players[victim];
   if (j->p_status==PFREE)
     {
-      pmessage(who, MINDIV, addr_mess(who),
+      pmessage(who, MINDIV, addr_mess(who, MINDIV),
 	       "Slot is already free.");
       return 1;
     }