Subject: Collected Debian patches for GnuBG
Author: Russ Allbery <rra@debian.org>

The packaging for GnuBG is maintained in Git.  This makes it complex to
separate the changes into individual patches.  They are therefore all
included in a single Debian patch.

For full commit history and separated commits, see the packaging Git
repository.
--- gnubg-0.90+20120429.orig/eval.c
+++ gnubg-0.90+20120429/eval.c
@@ -652,7 +652,9 @@ extern void EvalInitialise(char *szWeigh
 			pbc1 = BearoffInit ( NULL, BO_HEURISTIC, pfProgress );
 
 		/* read two-sided db from gnubg.bd */
-		gnubg_bearoff = BuildFilename("gnubg_ts0.bd");
+		/* For Debian, load dynamic databases from /var/lib/gnubg
+		   instead.  -- rra, 2008-02-16 */
+		gnubg_bearoff = BuildVarFilename ( "gnubg_ts0.bd" );
 		pbc2 = BearoffInit ( gnubg_bearoff, BO_IN_MEMORY | BO_MUST_BE_TWO_SIDED, NULL );
 			g_free(gnubg_bearoff);
 
@@ -667,12 +669,12 @@ extern void EvalInitialise(char *szWeigh
 					"You can also generate other bearoff databases; see\n"
 					"README for more details\n\n" );
 
-		gnubg_bearoff_os = BuildFilename("gnubg_os.bd");
+		gnubg_bearoff_os = BuildVarFilename ( "gnubg_os.bd" );
 		/* init one-sided db */
 		pbcOS = BearoffInit ( gnubg_bearoff_os, BO_IN_MEMORY, NULL );
 		g_free(gnubg_bearoff_os);
 
-		gnubg_bearoff = BuildFilename("gnubg_ts.bd");
+		gnubg_bearoff = BuildVarFilename("gnubg_ts.bd");
 		/* init two-sided db */
 		pbcTS = BearoffInit ( gnubg_bearoff, BO_IN_MEMORY, NULL );
 		g_free(gnubg_bearoff);
@@ -683,7 +685,7 @@ extern void EvalInitialise(char *szWeigh
 				char *fn;
 				char sz[10];
 				sprintf(sz, "hyper%1d.bd", i + 1);
-				fn = BuildFilename(sz);
+				fn = BuildVarFilename(sz);
 				apbcHyper[i] = BearoffInit(fn, BO_NONE, NULL);
 				g_free(fn);
 			}
--- gnubg-0.90+20120429.orig/gtkwindows.c
+++ gnubg-0.90+20120429/gtkwindows.c
@@ -391,7 +391,7 @@ WarningOK ( GtkWidget *pw, warningType w
 
 extern int GTKShowWarning(warningType warning, GtkWidget *pwParent)
 {
-	if (warnings[warning].warningEnabled)
+	if (fX && warnings[warning].warningEnabled)
 	{
 		char *buf;
 		GtkWidget *pwDialog, *pwMsg, *pwv, *label;
--- gnubg-0.90+20120429.orig/mkinstalldirs
+++ gnubg-0.90+20120429/mkinstalldirs
@@ -1,21 +1,36 @@
 #! /bin/sh
 # mkinstalldirs --- make directory hierarchy
-# Author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1993-05-16
-# Public domain
 
+scriptversion=2009-04-28.21; # UTC
+
+# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain.
+#
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+nl='
+'
+IFS=" ""	$nl"
 errstatus=0
-dirmode=""
+dirmode=
 
 usage="\
-Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
+Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
+
+Create each directory DIR (with mode MODE, if specified), including all
+leading file name components.
+
+Report bugs to <bug-automake@gnu.org>."
 
 # process command line arguments
 while test $# -gt 0 ; do
   case $1 in
     -h | --help | --h*)         # -h for help
-      echo "$usage" 1>&2
-      exit 0
+      echo "$usage"
+      exit $?
       ;;
     -m)                         # -m PERM arg
       shift
@@ -23,6 +38,10 @@ while test $# -gt 0 ; do
       dirmode=$1
       shift
       ;;
+    --version)
+      echo "$0 $scriptversion"
+      exit $?
+      ;;
     --)                         # stop option processing
       shift
       break
@@ -50,30 +69,58 @@ case $# in
   0) exit 0 ;;
 esac
 
+# Solaris 8's mkdir -p isn't thread-safe.  If you mkdir -p a/b and
+# mkdir -p a/c at the same time, both will detect that a is missing,
+# one will create a, then the other will try to create a and die with
+# a "File exists" error.  This is a problem when calling mkinstalldirs
+# from a parallel make.  We use --version in the probe to restrict
+# ourselves to GNU mkdir, which is thread-safe.
 case $dirmode in
   '')
-    if mkdir -p -- . 2>/dev/null; then
+    if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
       echo "mkdir -p -- $*"
       exec mkdir -p -- "$@"
+    else
+      # On NextStep and OpenStep, the `mkdir' command does not
+      # recognize any option.  It will interpret all options as
+      # directories to create, and then abort because `.' already
+      # exists.
+      test -d ./-p && rmdir ./-p
+      test -d ./--version && rmdir ./--version
     fi
     ;;
   *)
-    if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
+    if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
+       test ! -d ./--version; then
       echo "mkdir -m $dirmode -p -- $*"
       exec mkdir -m "$dirmode" -p -- "$@"
+    else
+      # Clean up after NextStep and OpenStep mkdir.
+      for d in ./-m ./-p ./--version "./$dirmode";
+      do
+        test -d $d && rmdir $d
+      done
     fi
     ;;
 esac
 
 for file
 do
-  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
+  case $file in
+    /*) pathcomp=/ ;;
+    *)  pathcomp= ;;
+  esac
+  oIFS=$IFS
+  IFS=/
+  set fnord $file
   shift
+  IFS=$oIFS
 
-  pathcomp=
   for d
   do
-    pathcomp="$pathcomp$d"
+    test "x$d" = x && continue
+
+    pathcomp=$pathcomp$d
     case $pathcomp in
       -*) pathcomp=./$pathcomp ;;
     esac
@@ -84,21 +131,21 @@ do
       mkdir "$pathcomp" || lasterr=$?
 
       if test ! -d "$pathcomp"; then
-  	errstatus=$lasterr
+	errstatus=$lasterr
       else
-  	if test ! -z "$dirmode"; then
+	if test ! -z "$dirmode"; then
 	  echo "chmod $dirmode $pathcomp"
-    	  lasterr=""
-  	  chmod "$dirmode" "$pathcomp" || lasterr=$?
+	  lasterr=
+	  chmod "$dirmode" "$pathcomp" || lasterr=$?
 
-  	  if test ! -z "$lasterr"; then
-  	    errstatus=$lasterr
-  	  fi
-  	fi
+	  if test ! -z "$lasterr"; then
+	    errstatus=$lasterr
+	  fi
+	fi
       fi
     fi
 
-    pathcomp="$pathcomp/"
+    pathcomp=$pathcomp/
   done
 done
 
@@ -107,5 +154,9 @@ exit $errstatus
 # Local Variables:
 # mode: shell-script
 # sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
 # End:
-# mkinstalldirs ends here
--- gnubg-0.90+20120429.orig/openurl.c
+++ gnubg-0.90+20120429/openurl.c
@@ -41,14 +41,8 @@ extern const gchar * get_web_browser (vo
 #endif
 	if (web_browser && *web_browser)
 		return web_browser;
-	if ((pch = g_getenv ("BROWSER")) == NULL)
-	{
-#ifdef __APPLE__
-		pch = "open";
-#else
-		pch = "firefox";
-#endif
-	}
+	/* Modified to always use sensible-browser -- rra, 2008-02-16 */
+	pch = "sensible-browser";
 	return pch;
 }
 
--- gnubg-0.90+20120429.orig/play.c
+++ gnubg-0.90+20120429/play.c
@@ -3287,7 +3287,9 @@ extern void CommandEndGame(char *UNUSED(
 	int fDisplay_store = fDisplay;
 	int fQuiet_store = fQuiet;
 #if USE_BOARD3D
-	BoardData *bd = BOARD(pwBoard)->board_data;
+	BoardData *bd;
+	if (fX && pwBoard)
+		bd = BOARD(pwBoard)->board_data;
 #endif
 	const evalcontext ec_quick = { FALSE, 0, FALSE, TRUE, 0.0 };
 	int manual_dice = (rngCurrent == RNG_MANUAL); 
@@ -3326,7 +3328,8 @@ extern void CommandEndGame(char *UNUSED(
 	}
 
 #if USE_BOARD3D
-	SuspendDiceRolling(bd->rd);
+	if (fX)
+		SuspendDiceRolling(bd->rd);
 #endif
 
 	fAutoGame = FALSE;
@@ -3373,7 +3376,8 @@ extern void CommandEndGame(char *UNUSED(
 	}
 
 #if USE_BOARD3D
-	ResumeDiceRolling(bd->rd);
+	if (fX)
+		ResumeDiceRolling(bd->rd);
 #endif
 
 	if (!automaticTask)
--- gnubg-0.90+20120429.orig/set.c
+++ gnubg-0.90+20120429/set.c
@@ -1548,7 +1548,7 @@ extern void CommandSetRNGFile( char *sz
     SetRNG( rngSet, rngctxSet, RNG_FILE, sz );
 }
 
-extern void CommandSetRNGBBS( char *UNUSED(sz) ) {
+extern void CommandSetRNGBBS( char *sz ) {
 #if HAVE_LIBGMP
     SetRNG( rngSet, rngctxSet, RNG_BBS, sz );
 #else
--- gnubg-0.90+20120429.orig/util.h
+++ gnubg-0.90+20120429/util.h
@@ -34,6 +34,9 @@ extern char *getDocDir( void );
 #define BuildFilename(file) g_build_filename(getPkgDataDir(), file, NULL)
 #define BuildFilename2(file1, file2) g_build_filename(getPkgDataDir(), file1, file2, NULL)
 
+/* Added for Debian -- rra, 2008-02-16 */
+#define BuildVarFilename(file) g_build_filename("/var/lib/gnubg", file, NULL)
+
 extern void PrintSystemError(const char* message);
 extern void PrintError(const char* message);
 extern FILE *GetTemporaryFile(const char *nameTemplate, char **retName);
