Update of /cvsroot/netrek/server/Vanilla/ntserv
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3547/ntserv

Modified Files:
	data.c daemonII.c commands.c enter.c gencmds.c ntscmds.c 
	slotmaint.c sysdefaults.c main.c 
Log Message:
voting site policy

Index: sysdefaults.c
===================================================================
RCS file: /cvsroot/netrek/server/Vanilla/ntserv/sysdefaults.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- sysdefaults.c	21 Mar 2005 05:23:44 -0000	1.1
+++ sysdefaults.c	26 Apr 2006 09:52:43 -0000	1.2
@@ -2,12 +2,8 @@
  */
 
 #include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <sys/types.h>
 #include <sys/stat.h>
 #include "defs.h"
-#include INC_STRINGS
 #include "struct.h"
 #include "data.h"
 #include "copyright2.h"

Index: ntscmds.c
===================================================================
RCS file: /cvsroot/netrek/server/Vanilla/ntserv/ntscmds.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- ntscmds.c	24 Apr 2006 12:35:17 -0000	1.8
+++ ntscmds.c	26 Apr 2006 09:52:43 -0000	1.9
@@ -26,13 +26,8 @@
 
 #define C_PR_INPICKUP    C_PR_1
 
-#if defined (ALLOW_EJECT)
 void do_player_eject(int who, int player, int mflags, int sendto);
-#endif
-
-#if defined (ALLOW_BAN)
 void do_player_ban(int who, int player, int mflags, int sendto);
-#endif
 
 #if defined (AUTO_INL)
 void do_start_inl(void);
@@ -72,12 +67,8 @@
 #ifdef GENO_COUNT
 void do_genos_query(char *comm, struct message *mess, int who);
 #endif
-#if defined (ALLOW_EJECT)
 void eject_player(int who);
-#endif
-#if defined (ALLOW_BAN)
 void ban_player(int who);
-#endif
 void do_client_query(char *comm, struct message *mess, int who);
 void do_ping_query(char *comm, struct message *mess, int who);
 void do_stats_query(char *comm, struct message *mess, int who);
@@ -183,26 +174,18 @@
 		"Show player's genocides      e.g. 'GENOS 0'",
 		do_genos_query },                       /* GENOS */
 #endif
-#ifdef VOTING
-
     { "The following votes can be used:  (M=Majority, T=Team vote)",
       C_DESC  | C_PR_INPICKUP},
-    { "Ejection Votes are recorded for the god to review.",
-      C_DESC  | C_PR_INPICKUP},
-#if defined(ALLOW_EJECT)
     { "EJECT",
 	C_VC_TEAM | C_GLOG | C_PLAYER | C_PR_INPICKUP,
 	"Eject a player               e.g. 'EJECT 0 IDLE'", 
 	do_player_eject,				/* EJECT */
 	2, PV_EJECT, 120, 600},
-#endif
-#if defined(ALLOW_BAN)
     { "BAN",
 	C_VC_TEAM | C_GLOG | C_PLAYER | C_PR_INPICKUP,
 	"Eject and ban a player       e.g. 'BAN 0'", 
 	do_player_ban,					/* BAN */
 	2, PV_BAN, 120, 600},
-#endif
 #if defined(TRIPLE_PLANET_MAYHEM)
     { "TRIPLE",
         C_VC_ALL | C_GLOG | C_PR_INPICKUP,
@@ -243,7 +226,6 @@
 	do_start_mars,
 	1, PV_OTHER+5, 0 },
 #endif
-#endif /* VOTING */
 
     /* crosscheck, last voting array element used (PV_OTHER+n) must
        not exceed PV_TOTAL, see include/defs.h */
@@ -257,7 +239,6 @@
 			 (status->gameup & GU_INROBOT) ? 0 : C_PR_INPICKUP);
 }
 
-#if defined (ALLOW_EJECT)
 void do_player_eject(int who, int player, int mflags, int sendto)
 {
     register struct player *j;
@@ -265,17 +246,18 @@
 
     j = &players[player];
 
-    if (j->p_status == PFREE) {
+    if (!eject_vote_enable) {
+      reason = "Eject voting disabled in server configuration.";
+    } else if (j->p_status == PFREE) {
       reason = "You may not eject a free slot.";
     } else if (j->p_flags & PFROBOT) {
       reason = "You may not eject a robot.";
     } else if (j->p_team != players[who].p_team) {
       reason = "You may not eject players of the other team.";
-#ifdef EJECT_ONLY_IF_QUEUE
-    } else if ((queues[QU_PICKUP].q_flags & QU_OPEN) &&
-	      (queues[QU_PICKUP].count == 0)){
+    } else if (eject_vote_only_if_queue && 
+	       (queues[QU_PICKUP].q_flags & QU_OPEN) &&
+	       (queues[QU_PICKUP].count == 0)){
       reason = "You may not eject if there is no queue.";
-#endif
     }
 
     if (reason != NULL) {
@@ -299,12 +281,12 @@
   j->p_ship.s_type = STARBASE;
   j->p_whydead=KQUIT;
   j->p_explode=10;
-  /* note VICIOUS_EJECT prevents animation of ship explosion */
+  /* note vicious eject prevents animation of ship explosion */
   j->p_status=PEXPLODE;
   j->p_whodead=me->p_no;
   bay_release(j);
 
-#if defined(VICIOUS_EJECT)
+  if (eject_vote_vicious) {
                                       /* Eject AND free the slot. I am sick
                                          of the idiots who login and just
                                          make the game less playable. And
@@ -316,12 +298,9 @@
     } else {
       freeslot(j);
     }
-#endif
-
+  }
 }
-#endif /* ALLOW_EJECT */
 
-#if defined (ALLOW_BAN)
 void do_player_ban(int who, int player, int mflags, int sendto)
 {
     struct player *j;
@@ -329,7 +308,9 @@
 
     j = &players[player];
 
-    if (j->p_status == PFREE) {
+    if (!ban_vote_enable) {
+      reason = "Ban voting disabled in server configuration.";
+    } else if (j->p_status == PFREE) {
       reason = "You may not ban a free slot.";
     } else if (j->p_flags & PFROBOT) {
       reason = "You may not ban a robot.";
@@ -359,7 +340,7 @@
     struct ban *b = &bans[i];
     if (b->b_expire == 0) {
       strcpy(b->b_ip, j->p_ip);
-      b->b_expire = 100;
+      b->b_expire = ban_vote_length;
       ERROR(2,( "ban of %s was voted\n", b->b_ip));
       return;
     }
@@ -367,7 +348,6 @@
   pmessage(0, MALL, addr_mess(who,MALL), 
 	   " temporary ban list is full, ban ineffective");
 }
-#endif /* ALLOW_BAN */
 
 #if defined(AUTO_PRACTICE)
 void do_start_basep(void)

Index: slotmaint.c
===================================================================
RCS file: /cvsroot/netrek/server/Vanilla/ntserv/slotmaint.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- slotmaint.c	21 Mar 2005 10:17:17 -0000	1.2
+++ slotmaint.c	26 Apr 2006 09:52:43 -0000	1.3
@@ -40,11 +40,7 @@
     who->p_stats.st_tticks=1;
 */
     queues[who->w_queue].free_slots++;
-
-#ifdef VOTING
     MZERO(who->voting, sizeof(time_t) * PV_TOTAL);
-#endif
-
     who->p_process     = 0;
     
     return retvalue;
@@ -105,13 +101,8 @@
 	    }
 	    players[i].p_stats.st_keymap[95]=0;
 	    players[i].p_stats.st_flags=ST_INITIAL;
-
 	    players[i].p_process     = 0;
-
-#ifdef VOTING
 	    MZERO(players[i].voting, sizeof(time_t) * PV_TOTAL);
-#endif
-
 #ifdef OBSERVERS
 	    if (queues[w_queue].q_flags & QU_OBSERVER) Observer++;
 #endif

Index: enter.c
===================================================================
RCS file: /cvsroot/netrek/server/Vanilla/ntserv/enter.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- enter.c	10 Apr 2006 10:56:32 -0000	1.3
+++ enter.c	26 Apr 2006 09:52:43 -0000	1.4
@@ -190,13 +190,11 @@
       me->p_war = me->p_hostile;
     }
 
-#ifdef VOTING
     /* reset eject voting to avoid inheriting this slot's last occupant's */
     /* escaped fate just in case the last vote comes through after the    */
     /* old guy quit and the new guy joined  -Villalpando req. by Cameron  */
     for (i = 0, j = &players[i]; i < MAXPLAYER; i++, j++) 
       j->voting[me->p_no] = -1;
-#endif
 
     /* join message stuff */
     sprintf(me->p_mapchars,"%c%c",teamlet[me->p_team], shipnos[me->p_no]);

Index: daemonII.c
===================================================================
RCS file: /cvsroot/netrek/server/Vanilla/ntserv/daemonII.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- daemonII.c	24 Apr 2006 10:12:17 -0000	1.11
+++ daemonII.c	26 Apr 2006 09:52:43 -0000	1.12
@@ -188,9 +188,7 @@
 #endif
         players[i].p_no=i;
 	players[i].p_timerdelay = defskip;
-#ifdef VOTING
         MZERO(players[i].voting, sizeof(time_t) * PV_TOTAL);
-#endif
     }
 
 #ifdef NEUTRAL

Index: data.c
===================================================================
RCS file: /cvsroot/netrek/server/Vanilla/ntserv/data.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- data.c	24 Apr 2006 12:35:17 -0000	1.5
+++ data.c	26 Apr 2006 09:52:43 -0000	1.6
@@ -407,3 +407,11 @@
 int whitelisted = 0;
 int blacklisted = 0;
 int ignored[MAXPLAYER];
+
+int voting=0;
+int ban_vote_enable=0;
+int ban_vote_length=10;
+int ban_vote_offset=0;
+int eject_vote_enable=0;
+int eject_vote_only_if_queue=0;
+int eject_vote_vicious=0;

Index: commands.c
===================================================================
RCS file: /cvsroot/netrek/server/Vanilla/ntserv/commands.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- commands.c	23 Apr 2006 10:39:10 -0000	1.4
+++ commands.c	26 Apr 2006 09:52:43 -0000	1.5
@@ -50,13 +50,10 @@
 int do_help();
 char *check_possible(char *line, char *command);
 int getplayer(int from, char *line);
-
-#ifdef VOTING
 int do_generic_vote(char *comm, int who);
 int do_start_robot();
-#endif
 
-#if defined (ALLOW_EJECT) && !defined(INL)
+#if !defined(INL)
 int do_player_eject();
 #endif
 
@@ -378,8 +375,6 @@
 
 
 
-#ifdef VOTING
-
 /*********** VOTING LIST ***********
       Note: The vote list *must* must be in upper case.
 
@@ -399,7 +394,7 @@
 
 struct vote_handler votes[] = {
     { NULL, 0, 0, 0, NULL, 0, NULL},         			/* record 0 */
-#if defined(ALLOW_EJECT) && !defined(INL)
+#if !defined(INL)
     { "EJECT",  
 	VC_TEAM | VC_GLOG | VC_PLAYER,
 	2,
@@ -492,8 +487,6 @@
 
 #define NUM_VOTES (sizeof(votes) / sizeof(votes[0]) )
 
-#endif /* VOTING */
-
 
 /*	Using just strstr is not enough to ensure uniqueness. There are 
 	commands such as STATS and SBSTATS that could be matched in two
@@ -564,9 +557,8 @@
         }
     }
     i = 0;
-#ifdef VOTING
-    i = do_generic_vote(upper,mess->m_from);	/* maybe it's a vote? */
-#endif
+    if (voting)
+      i = do_generic_vote(upper,mess->m_from);	/* maybe it's a vote? */
     free (upper);
     return (i);
 }
@@ -1003,7 +995,7 @@
 #endif /* TRIPLE_PLANET_MAYHEM */
 
 
-#if defined (ALLOW_EJECT)
+#if !defined(INL)
 int do_player_eject(int who, int player, int mflags, int sendto)
 {
     register struct player *j;
@@ -1052,9 +1044,7 @@
   j->p_status=PEXPLODE;
   j->p_whodead=me->p_no;
 }
-#endif /* ALLOW_EJECT */
-
-#ifdef VOTING
+#endif
 
 check_listing(comm)
 char *comm;
@@ -1206,7 +1196,6 @@
     }
     return 1;
 }
-#endif /* VOTING */
 
 #if defined(AUTO_PRACTICE) && !defined(BASEP)
 int do_start_basep(who, mflags, sendto)
@@ -1332,8 +1321,7 @@
 	}
     }
     
-#ifdef VOTING
-    if (NUM_VOTES > 1) {
+    if (voting && (NUM_VOTES > 1)) {
 	char ch;
         pmessage(who,MINDIV,addr,
 		"The following votes can be used:  (M=Majority, T=Team vote)");
@@ -1347,7 +1335,6 @@
 		votes[i].type, ch, votes[i].desc);
 	}
     }
-#endif
 }
 
 #ifndef INL

Index: main.c
===================================================================
RCS file: /cvsroot/netrek/server/Vanilla/ntserv/main.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- main.c	24 Apr 2006 12:35:17 -0000	1.7
+++ main.c	26 Apr 2006 09:52:43 -0000	1.8
@@ -832,7 +832,7 @@
     if (b->b_expire) {
       if (!strcmp(b->b_ip, ip)) {
 	ERROR(2,( "ban of %s has been probed\n", b->b_ip));
-	b->b_expire += 10;
+	b->b_expire += ban_vote_offset;
 	return TRUE;
       }
       b->b_expire--;

Index: gencmds.c
===================================================================
RCS file: /cvsroot/netrek/server/Vanilla/ntserv/gencmds.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- gencmds.c	22 Apr 2006 11:31:53 -0000	1.2
+++ gencmds.c	26 Apr 2006 09:52:43 -0000	1.3
@@ -105,24 +105,16 @@
 	}
       } /* !C_GLOG */
 
-#ifdef VOTING
-      if (cmds[i].tag & (C_VC_ALL | C_VC_TEAM))
-      {
-	if (do_vote(comm, mess, cmds, i))
-	{
+      if ((voting) && (cmds[i].tag & (C_VC_ALL | C_VC_TEAM))) {
+	if (do_vote(comm, mess, cmds, i)) {
 	  if ( cmds[i].tag & C_GLOG ) {
-
 	    if (glog_open() == 0) {	/* Log pass for God to see */
 	      glog_printf("VOTE: The motion %s passes\n", comm);
 	    }
           }
 	}
-      }
-      else
-#endif
-      {
-	if (cmds[i].tag & C_PLAYER)
-	{
+      } else {
+	if (cmds[i].tag & C_PLAYER) {
 	  int who;
 
 	  /* This is really not that useful - If the calling
@@ -131,13 +123,11 @@
 	  who = getplayer(mess->m_from, comm);
 	  if (who >= 0)
 	    (*cmds[i].handler)(comm, mess, who, cmds, i, prereqs);
-	  else
-	  {
+	  else {
 	    free(comm);
 	    return 0;
 	  }
-	}
-	else
+	} else
 	  (*cmds[i].handler)(comm, mess, cmds, i, prereqs);
       }
       free(comm);
@@ -179,7 +169,6 @@
   return what;
 }
 
-#ifdef VOTING
 int do_vote(char *comm, struct message *mess, struct command_handler_2 *votes,
             int num)
 {
@@ -316,7 +305,6 @@
     return 0;
   }
 }
-#endif /* VOTING */
 
 /* ARGSUSED */
 int do_help(char *comm, struct message *mess, struct command_handler_2 *cmds,
@@ -344,8 +332,7 @@
 	   (its description has a value of NULL, not "")
 	   Use this hack to make a command hidden */
 	continue;
-#ifdef VOTING
-      else if (cmds[i].tag & (C_VC_TEAM | C_VC_ALL))
+      else if ((voting)&&(cmds[i].tag & (C_VC_TEAM | C_VC_ALL)))
       {
 	char ch;
 
@@ -358,7 +345,6 @@
 	pmessage(who,MINDIV,addr, "|%10s - %c: %s",
 		 cmds[i].command, ch, cmds[i].desc);
       }
-#endif /* VOTING */
       else
 	pmessage(who,MINDIV,addr, "|%10s - %s",
 		 cmds[i].command, cmds[i].desc);