$OpenBSD$
--- rollout.c.orig	Sat Aug 26 19:58:11 1995
+++ rollout.c	Mon Feb 14 19:46:54 2011
@@ -48,6 +48,8 @@ void   init_rollout       (void);
 void   rollout_roll_dice  ();
 void   exec_rollout       ();
 
+#define LINESIZ 512
+
 void RollOut (void)
 {
 	Widget toplevel = Player[0].X11Set.toplevel;
@@ -75,7 +77,7 @@ void RollOut (void)
 
 	tournament.winning_point = gammon_resource.num_rollouts;
 	AppendDialogText (LOWER, "xgammon rollout: ");
-	sprintf (add_text, "rollout: %d games\n", gammon_resource.num_rollouts);
+	snprintf (add_text, LINESIZ, "rollout: %d games\n", gammon_resource.num_rollouts);
 	AppendDialogText (LOWER, add_text);
 	AppendDialogText (LOWER, "points: white 0, black 0\n");
 
@@ -114,33 +116,33 @@ void RolloutLoop (void)
 		RolloutGame  ();
 		Player[turn-1].points += doubler.value;
 		won_games[turn] ++;
-		sprintf (add_text, "done.. won games: black %d, white %d points: black %d, white %d\n",won_games[BLACK], won_games[WHITE], Player[0].points, Player[1].points);
+		snprintf (add_text, LINESIZ, "done.. won games: black %d, white %d points: black %d, white %d\n",won_games[BLACK], won_games[WHITE], Player[0].points, Player[1].points);
 		AppendDialogText (LOWER, add_text);
 	}
 	result_file = fopen (gammon_resource.position_file, "a");
 	AppendDialogText(LOWER, "\nrollout complete. result:\n");
 
 	fprintf (result_file, "\nrollout result of %d games:\n", tournament.winning_point);
-	sprintf (add_text, "of %d games\n", tournament.winning_point);
+	snprintf (add_text, LINESIZ, "of %d games\n", tournament.winning_point);
 	AppendDialogText (LOWER, add_text);
 
-	sprintf (add_text, "   black won %d games and got %d points.\n", won_games[BLACK], Player[0].points);
+	snprintf (add_text, LINESIZ, "   black won %d games and got %d points.\n", won_games[BLACK], Player[0].points);
 	fprintf (result_file, add_text);
 	AppendDialogText (LOWER, add_text);
 
-	sprintf (add_text, "   white won %d games and got %d points.\n", won_games[WHITE], Player[1].points);
+	snprintf (add_text, LINESIZ, "   white won %d games and got %d points.\n", won_games[WHITE], Player[1].points);
 	fprintf (result_file, add_text);
 	AppendDialogText (LOWER, add_text);
 
-	sprintf (add_text, "   backgammons: black: %d white %d\n", Player[BLACK].backgammons, Player[WHITE].backgammons);
+	snprintf (add_text, LINESIZ, "   backgammons: black: %d white %d\n", Player[BLACK].backgammons, Player[WHITE].backgammons);
 	fprintf (result_file, add_text);
 	AppendDialogText (LOWER, add_text);
 
-	sprintf (add_text, "   gammons: black: %d white %d\n", Player[BLACK].gammons, Player[WHITE].gammons);
+	snprintf (add_text, LINESIZ, "   gammons: black: %d white %d\n", Player[BLACK].gammons, Player[WHITE].gammons);
 	fprintf (result_file, add_text);
 	AppendDialogText (LOWER, add_text);
 
-	sprintf (add_text, "   in percent: black won %2.2f%%, white won %2.2f%%\n\n\n",  ((float) won_games[BLACK] * 100 / (float) tournament.winning_point), ((float) won_games[WHITE] * 100 / (float) tournament.winning_point));
+	snprintf (add_text, LINESIZ, "   in percent: black won %2.2f%%, white won %2.2f%%\n\n\n",  ((float) won_games[BLACK] * 100 / (float) tournament.winning_point), ((float) won_games[WHITE] * 100 / (float) tournament.winning_point));
 	fprintf (result_file, add_text);
 	AppendDialogText (LOWER, add_text);
 
@@ -232,7 +234,7 @@ void init_rollout (void)
 	switch_turn(); switch_turn();	/* set vars */
 
 	tournament.game_number++;
-	sprintf(add_text,"rollout game number %d\n", tournament.game_number);
+	snprintf(add_text, LINESIZ, "rollout game number %d\n", tournament.game_number);
 	AppendDialogText(LOWER, add_text);
 }
 
@@ -281,9 +283,9 @@ void exec_rollout (void)
 	char rollout_save_file[50];
 	char nr[7];
 
-	sprintf (nr, "%d", gammon_resource.num_rollouts);
+	snprintf (nr, 7, "%d", gammon_resource.num_rollouts);
 
-	sprintf (rollout_save_file, "xgammon.rollout.%d.save", (ppid + called_rollout++));
+	snprintf (rollout_save_file, 50, "xgammon.rollout.%d.save", (ppid + called_rollout++));
 
 	v[0] = "r";
 	v[1] = rollout_save_file;
