r16031 - in packages/tags/biniax2: . 1.30-4/debian 1.30-4/debian/patches

Markus Koschany apo at moszumanska.debian.org
Sat Oct 21 15:07:23 UTC 2017


Author: apo
Date: 2017-10-21 15:07:22 +0000 (Sat, 21 Oct 2017)
New Revision: 16031

Added:
   packages/tags/biniax2/1.30-4/
   packages/tags/biniax2/1.30-4/debian/changelog
   packages/tags/biniax2/1.30-4/debian/patches/compiler-warnings.patch
   packages/tags/biniax2/1.30-4/debian/patches/series
   packages/tags/biniax2/1.30-4/debian/patches/userdir.patch
Removed:
   packages/tags/biniax2/1.30-4/debian/changelog
   packages/tags/biniax2/1.30-4/debian/patches/series
   packages/tags/biniax2/1.30-4/debian/patches/userdir.patch
Log:
[svn-buildpackage] Tagging biniax2 1.30-4

Deleted: packages/tags/biniax2/1.30-4/debian/changelog
===================================================================
--- packages/trunk/biniax2/debian/changelog	2017-10-18 15:43:29 UTC (rev 16029)
+++ packages/tags/biniax2/1.30-4/debian/changelog	2017-10-21 15:07:22 UTC (rev 16031)
@@ -1,85 +0,0 @@
-biniax2 (1.30-3) unstable; urgency=medium
-
-  * Team upload.
-  * Switch to compat level 10.
-  * Improve the find command and use the -delete option.
-  * Drop deprecated menu file and xpm icon.
-  * Use https for Format field, update copyright years.
-  * Use https for Vcs-Browser field.
-  * Change priority from extra to optional.
-  * Add keywords to desktop file.
-  * Declare compliance with Debian Policy 4.1.1.
-
- -- Markus Koschany <apo at debian.org>  Wed, 18 Oct 2017 17:30:11 +0200
-
-biniax2 (1.30-2) unstable; urgency=low
-
-  * Team upload.
-  [ Miriam Ruiz ]
-  * Fix biniax2.6 man page and specify the correct config file location.
-    (Closes: #616047)
-  [ Markus Koschany ]
-  * Switch to package format 3.0 (quilt).
-  * Bump compat level to 9 and require debhelper >=9 for automatic hardening
-    build flags.
-  * debian/control:
-    - Remove quilt dependency because package format 3.0 uses quilt by default.
-    - Bump Standards-Version to 3.9.4, no changes required.
-    - Use canonical Vcs-URI.
-    - Fix spelling in biniax2 package description. (Closes: #659609). Thanks
-      Maarten Bezemer for the report and patch.
-    - binax2-data:
-      + Lower recommendation for biniax2 to Suggests. Most people who install
-        biniax2-data directly are only interested in the data files.
-      + Update package description and be more verbose.
-  * biniax2.desktop: remove unnecessary equals sign from short description.
-    (Closes: #611029) Thanks Robert Roth for the report and patch.
-  * biniax2.menu: Add longtitle.
-  * Remove empty docs file.
-  * Fix spelling in README.Debian.
-  * Delete README.source. Quilt is the default patch system used by package
-    format 3.0.
-  * Update debian/copyright to copyright format 1.0. Remove CC-BY-3.0 license
-    because all the game data files are licensed under the ZLib license, too.
-    See License.txt for more information.
-  * Add hardening-support.patch which provides Debian's hardening build flags
-    via dpkg-buildflags.
-  * Simplify debian/rules by using dh sequencer.
-  * Build with hardening=+all.
-  * Use high resolution icon logo.png for biniax2.desktop file instead of
-    biniax2.xpm.
-  * Improve userdir.patch. Create an initial config file if necessary. Remove
-    all PATH_MAX declarations and replace them with a fixed value of 1024
-    bytes. This ensures that biniax2 can be built on GNU/Hurd too.
-  * Drop fixes.patch. It was not applied anyway.
-  * Install biniax2.6 with manpages file.
-
- -- Markus Koschany <apo at gambaru.de>  Fri, 12 Apr 2013 20:33:40 +0200
-
-biniax2 (1.30-1) unstable; urgency=low
-
-  [ Miriam Ruiz ]
-  * Fixed patch fixes.patch to save hall of fame in biniax2/hof instead of
-    biniax2/config
-
-  [ Paul Wise ]
-  * New upstream release
-  * Add a watch file
-    - PLEASE NOTE UPSTREAM 1.20 == 0.0.20080409
-
-  [ Barry deFreese ]
-  * Add myself to uploaders.
-  * Add README.source for quilt patch system.
-  * Fix spelling error in README.Debian.
-  * Fix syntax in debian/copyright to make lintian happy.
-  * Bump Standards Version to 3.8.3. (No changes needed).
-
- -- Barry deFreese <bdefreese at debian.org>  Sun, 27 Sep 2009 10:45:47 -0400
-
-biniax2 (0.0.20080409-1) unstable; urgency=low
-
-  [ Miriam Ruiz ]
-  * Initial release (Closes: #476247)
-
- -- Miriam Ruiz <little_miry at yahoo.es>  Thu, 10 Apr 2008 11:12:15 +0000
-

Copied: packages/tags/biniax2/1.30-4/debian/changelog (from rev 16030, packages/trunk/biniax2/debian/changelog)
===================================================================
--- packages/tags/biniax2/1.30-4/debian/changelog	                        (rev 0)
+++ packages/tags/biniax2/1.30-4/debian/changelog	2017-10-21 15:07:22 UTC (rev 16031)
@@ -0,0 +1,93 @@
+biniax2 (1.30-4) unstable; urgency=medium
+
+  * Team upload.
+  * Add compiler-warnings.patch, fix various compiler warnings and a crash
+    because of undefined behavior.
+
+ -- Markus Koschany <apo at debian.org>  Sat, 21 Oct 2017 16:53:26 +0200
+
+biniax2 (1.30-3) unstable; urgency=medium
+
+  * Team upload.
+  * Switch to compat level 10.
+  * Improve the find command and use the -delete option.
+  * Drop deprecated menu file and xpm icon.
+  * Use https for Format field, update copyright years.
+  * Use https for Vcs-Browser field.
+  * Change priority from extra to optional.
+  * Add keywords to desktop file.
+  * Declare compliance with Debian Policy 4.1.1.
+
+ -- Markus Koschany <apo at debian.org>  Wed, 18 Oct 2017 17:30:11 +0200
+
+biniax2 (1.30-2) unstable; urgency=low
+
+  * Team upload.
+  [ Miriam Ruiz ]
+  * Fix biniax2.6 man page and specify the correct config file location.
+    (Closes: #616047)
+  [ Markus Koschany ]
+  * Switch to package format 3.0 (quilt).
+  * Bump compat level to 9 and require debhelper >=9 for automatic hardening
+    build flags.
+  * debian/control:
+    - Remove quilt dependency because package format 3.0 uses quilt by default.
+    - Bump Standards-Version to 3.9.4, no changes required.
+    - Use canonical Vcs-URI.
+    - Fix spelling in biniax2 package description. (Closes: #659609). Thanks
+      Maarten Bezemer for the report and patch.
+    - binax2-data:
+      + Lower recommendation for biniax2 to Suggests. Most people who install
+        biniax2-data directly are only interested in the data files.
+      + Update package description and be more verbose.
+  * biniax2.desktop: remove unnecessary equals sign from short description.
+    (Closes: #611029) Thanks Robert Roth for the report and patch.
+  * biniax2.menu: Add longtitle.
+  * Remove empty docs file.
+  * Fix spelling in README.Debian.
+  * Delete README.source. Quilt is the default patch system used by package
+    format 3.0.
+  * Update debian/copyright to copyright format 1.0. Remove CC-BY-3.0 license
+    because all the game data files are licensed under the ZLib license, too.
+    See License.txt for more information.
+  * Add hardening-support.patch which provides Debian's hardening build flags
+    via dpkg-buildflags.
+  * Simplify debian/rules by using dh sequencer.
+  * Build with hardening=+all.
+  * Use high resolution icon logo.png for biniax2.desktop file instead of
+    biniax2.xpm.
+  * Improve userdir.patch. Create an initial config file if necessary. Remove
+    all PATH_MAX declarations and replace them with a fixed value of 1024
+    bytes. This ensures that biniax2 can be built on GNU/Hurd too.
+  * Drop fixes.patch. It was not applied anyway.
+  * Install biniax2.6 with manpages file.
+
+ -- Markus Koschany <apo at gambaru.de>  Fri, 12 Apr 2013 20:33:40 +0200
+
+biniax2 (1.30-1) unstable; urgency=low
+
+  [ Miriam Ruiz ]
+  * Fixed patch fixes.patch to save hall of fame in biniax2/hof instead of
+    biniax2/config
+
+  [ Paul Wise ]
+  * New upstream release
+  * Add a watch file
+    - PLEASE NOTE UPSTREAM 1.20 == 0.0.20080409
+
+  [ Barry deFreese ]
+  * Add myself to uploaders.
+  * Add README.source for quilt patch system.
+  * Fix spelling error in README.Debian.
+  * Fix syntax in debian/copyright to make lintian happy.
+  * Bump Standards Version to 3.8.3. (No changes needed).
+
+ -- Barry deFreese <bdefreese at debian.org>  Sun, 27 Sep 2009 10:45:47 -0400
+
+biniax2 (0.0.20080409-1) unstable; urgency=low
+
+  [ Miriam Ruiz ]
+  * Initial release (Closes: #476247)
+
+ -- Miriam Ruiz <little_miry at yahoo.es>  Thu, 10 Apr 2008 11:12:15 +0000
+

Copied: packages/tags/biniax2/1.30-4/debian/patches/compiler-warnings.patch (from rev 16030, packages/trunk/biniax2/debian/patches/compiler-warnings.patch)
===================================================================
--- packages/tags/biniax2/1.30-4/debian/patches/compiler-warnings.patch	                        (rev 0)
+++ packages/tags/biniax2/1.30-4/debian/patches/compiler-warnings.patch	2017-10-21 15:07:22 UTC (rev 16031)
@@ -0,0 +1,88 @@
+From: Markus Koschany <apo at debian.org>
+Date: Sat, 21 Oct 2017 16:47:03 +0200
+Subject: compiler warnings
+
+Fix various compiler warnings. The most serious are
+warning: function returns address of local variable in hof.c and biniax.c.
+This is undefined behavior and crashes the game.
+
+Forwarded: no
+---
+ biniax.c      | 5 +++--
+ desktop/sys.c | 2 +-
+ desktop/sys.h | 2 +-
+ hof.c         | 5 +++--
+ 4 files changed, 8 insertions(+), 6 deletions(-)
+
+diff --git a/biniax.c b/biniax.c
+index 06f2500..e12cc0f 100755
+--- a/biniax.c
++++ b/biniax.c
+@@ -1218,6 +1218,7 @@ static const char *saveFileName()
+ {
+ #ifndef _WIN32
+ 	char filename[1024];
++	static char* autosave_path;
+ 	char *home;
+ 	struct passwd *passwd;
+ 	if (!getuid())
+@@ -1262,8 +1263,8 @@ static const char *saveFileName()
+ 			return BNX_FALSE;
+ 		}
+ 	}
+-	strncat(filename, "/autosave", sizeof(filename)-1);
+-	return filename;
++	autosave_path = strncat(filename, "/autosave", sizeof(filename)-1);
++	return autosave_path;
+ #else
+ 	return "./autosave.bnx2";
+ #endif
+diff --git a/desktop/sys.c b/desktop/sys.c
+index 20528c0..1af436b 100755
+--- a/desktop/sys.c
++++ b/desktop/sys.c
+@@ -73,7 +73,7 @@ void sysUpdate()
+ FILE FUNCTIONS
+ ******************************************************************************/
+ 
+-BNX_UINT32 sysGetFileLen( char *file )
++BNX_UINT32 sysGetFileLen( const char *file )
+ {
+ 	BNX_UINT32 len = 0;
+ 	FILE *f;
+diff --git a/desktop/sys.h b/desktop/sys.h
+index 5a266c7..2dfe7c3 100755
+--- a/desktop/sys.h
++++ b/desktop/sys.h
+@@ -65,7 +65,7 @@ void sysUpdate();
+ FILE FUNCIONS
+ ******************************************************************************/
+ 
+-BNX_UINT32 sysGetFileLen( char *file );
++BNX_UINT32 sysGetFileLen( const char *file );
+ 
+ void sysFPut8( BNX_UINT8 n, FILE *f );
+ void sysFPut16( BNX_UINT16 n, FILE *f );
+diff --git a/hof.c b/hof.c
+index d0c6efb..34c5d49 100755
+--- a/hof.c
++++ b/hof.c
+@@ -106,6 +106,7 @@ static const char *hofFileName()
+ {
+ #ifndef _WIN32
+ 	char filename[1024];
++	static char* hof_path;
+ 	char *home;
+ 	struct passwd *passwd;
+ 	if (!getuid())
+@@ -150,8 +151,8 @@ static const char *hofFileName()
+ 			return BNX_FALSE;
+ 		}
+ 	}
+-	strncat(filename, "/hof", sizeof(filename)-1);
+-	return filename;
++	hof_path = strncat(filename, "/hof", sizeof(filename)-1);
++	return hof_path;
+ #else
+ 	return "./hof.bnx2";
+ #endif

Deleted: packages/tags/biniax2/1.30-4/debian/patches/series
===================================================================
--- packages/trunk/biniax2/debian/patches/series	2017-10-18 15:43:29 UTC (rev 16029)
+++ packages/tags/biniax2/1.30-4/debian/patches/series	2017-10-21 15:07:22 UTC (rev 16031)
@@ -1,4 +0,0 @@
-datadir.patch
-userdir.patch
-warnings.patch
-hardening-support.patch

Copied: packages/tags/biniax2/1.30-4/debian/patches/series (from rev 16030, packages/trunk/biniax2/debian/patches/series)
===================================================================
--- packages/tags/biniax2/1.30-4/debian/patches/series	                        (rev 0)
+++ packages/tags/biniax2/1.30-4/debian/patches/series	2017-10-21 15:07:22 UTC (rev 16031)
@@ -0,0 +1,5 @@
+datadir.patch
+userdir.patch
+warnings.patch
+hardening-support.patch
+compiler-warnings.patch

Deleted: packages/tags/biniax2/1.30-4/debian/patches/userdir.patch
===================================================================
--- packages/trunk/biniax2/debian/patches/userdir.patch	2017-10-18 15:43:29 UTC (rev 16029)
+++ packages/tags/biniax2/1.30-4/debian/patches/userdir.patch	2017-10-21 15:07:22 UTC (rev 16031)
@@ -1,716 +0,0 @@
-From: Miriam Ruiz <little_miry at yahoo.es>
-Date: Fri, 5 Apr 2013 00:08:18 +0200
-Subject: userdir
-
----
- biniax.c      |  228 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
- desktop/cfg.c |  122 +++++++++++++++++++++++-------
- hof.c         |  202 ++++++++++++++++++++++++++++++++++++++++++++++++--
- inc.h         |    4 +
- 4 files changed, 520 insertions(+), 36 deletions(-)
-
-diff --git a/biniax.c b/biniax.c
-index 886b692..5cc5765 100755
---- a/biniax.c
-+++ b/biniax.c
-@@ -51,6 +51,22 @@ INCLUDES
- #include "lev.h"
- #include "inc.h"
- 
-+#ifndef _WIN32
-+#include <stdlib.h>
-+#include <stdio.h>
-+#include <string.h>
-+#include <unistd.h>
-+#include <limits.h>
-+#include <pwd.h>
-+#include <fcntl.h>
-+#include <sys/stat.h>
-+#include <sys/types.h>
-+#include <stdint.h>
-+#endif
-+
-+#include <errno.h>
-+#include <string.h>
-+
- /* Global instance of GAME structure */
- BNX_GAME Game;
- 
-@@ -82,6 +98,9 @@ BNX_BOOL saveGame( BNX_GAME *game );
- BNX_BOOL loadGame( BNX_GAME *game );
- BNX_BOOL loadHiScore( BNX_GAME *game );
- 
-+BNX_BOOL saveOldDebianGame( BNX_GAME *game );
-+BNX_BOOL loadOldDebianGame( BNX_GAME *game );
-+
- #define UNREF( A ) (A) = (A)
- /******************************************************************************
- PROGRAM START
-@@ -100,13 +119,27 @@ int main( int argc, char *argv[] )
- 	cfgInit();
- 	hofInit();
- 	if ( gfxInit() == BNX_FALSE )
-+	{
-+		fprintf(stderr, "Error in Graphics Initialization\n");
- 		return -1;
-+	}
- 	if ( sysInit() == BNX_FALSE )
-+	{
-+		fprintf(stderr, "Error in System Initialization\n");
- 		return -2;
-+	}
- 	if ( inpInit() == BNX_FALSE )
-+	{
-+		fprintf(stderr, "Error in Input Initialization\n");
- 		return -3;
-+	}
- 	if ( sndInit() == BNX_FALSE )
--		return -4;
-+	{
-+		fprintf(stderr, "Error in Sound Initialization\n");
-+		cfgSetSound(BNX_FALSE);
-+		cfgSetMusic(BNX_FALSE);
-+		/* return -4; */
-+	}
- 
- 	/******************************************************************
- 	SHOW INITIAL WELCOME SCREEN
-@@ -131,6 +164,10 @@ int main( int argc, char *argv[] )
- 				case cOptionContinue:
- 					if ( loadGame( &Game ) == BNX_FALSE )
- 					{
-+						if (errno)
-+							fprintf(stderr, "Error loading game data: %s\n", strerror(errno));
-+						else
-+							fprintf(stderr, "Error loading game data\n");
- 						enterState = cStateMainMenu;
- 					}
- 					else
-@@ -1178,13 +1215,70 @@ void showHelp( BNX_GAME *game )
- GAME AND HISCORE SAVE / RESTORE
- ******************************************************************************/
- 
-+static const char *saveFileName()
-+{
-+#ifndef _WIN32
-+	char filename[1024];
-+	char *home;
-+	struct passwd *passwd;
-+	if (!getuid())
-+	{
-+				fprintf(stderr, "No access to data files for root.\n");
-+				return BNX_FALSE;
-+	} else {
-+		if ((home = getenv("XDG_DATA_HOME")))
-+		{ /* See http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html */
-+			if (strlen(home) > 1024 - sizeof("/biniax2/hof"))
-+			{
-+				fprintf(stderr, "$XDG_DATA_HOME is excessively long.n");
-+				return BNX_FALSE;
-+			}
-+			snprintf(filename, sizeof(filename), "%s/biniax2", home);
-+			mkdir(filename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-+		}
-+		else if ((home = getenv("HOME")))
-+		{
-+			passwd = getpwuid (getuid());
-+			home=passwd->pw_dir;
-+			if (!home)
-+			{
-+				fprintf(stderr, "$HOME is not defined.\n");
-+				return BNX_FALSE;
-+			}
-+			if (strlen(home) > 1024 - sizeof("/.local/share/biniax2/autosave"))
-+			{
-+				fprintf(stderr, "$HOME is excessively long.n");
-+				return BNX_FALSE;
-+			}
-+			snprintf(filename, sizeof(filename), "%s/.local", home);
-+			mkdir(filename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-+			strncat(filename, "/share", sizeof(filename)-1);
-+			mkdir(filename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-+			strncat(filename, "/biniax2", sizeof(filename)-1);
-+			mkdir(filename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-+		}
-+		else
-+		{
-+			fprintf(stderr, "Neither $XDG_DATA_HOME nor $HOME are defined.\n");
-+			return BNX_FALSE;
-+		}
-+	}
-+	strncat(filename, "/autosave", sizeof(filename)-1);
-+	return filename;
-+#else
-+	return "./autosave.bnx2";
-+#endif
-+}
-+
- BNX_BOOL saveGame( BNX_GAME *game )
- {
- 	FILE		*file;
- 	BNX_INT32	i;
- 	BNX_INT32	j;
- 
--	file = fopen( sysGetFullFileName( csSaveGameName ), "wb" );
-+	fprintf(stderr, "Saving game data in \"%s\"\n", saveFileName());
-+
-+	file = fopen( saveFileName(), "wb" );
- 
- 	if ( file == (FILE *) NULL )
- 		return BNX_FALSE;
-@@ -1242,9 +1336,14 @@ BNX_BOOL loadGame( BNX_GAME *game )
- 	BNX_INT32	i;
- 	BNX_INT32	j;
- 
--	if ( sysGetFileLen( sysGetFullFileName( csSaveGameName ) ) != cSaveFileSize )
-+	if (loadOldDebianGame(game) == BNX_TRUE)
-+		return BNX_TRUE;
-+
-+	fprintf(stderr, "Loading game data from \"%s\"\n", saveFileName());
-+
-+	if ( sysGetFileLen( saveFileName() ) != cSaveFileSize )
- 		return BNX_FALSE;
--	file = fopen( sysGetFullFileName( csSaveGameName ), "rb" );
-+	file = fopen( saveFileName(), "rb" );
- 	if ( file == (FILE *) NULL )
- 		return BNX_FALSE;
- 
-@@ -1302,3 +1401,124 @@ BNX_BOOL loadHiScore( BNX_GAME *game )
- 	return BNX_TRUE;
- }
- 
-+// DEBIAN SPECIFIC STUFF
-+
-+BNX_BOOL saveOldDebianGame( BNX_GAME *game )
-+{
-+	FILE		*file;
-+	int		i, j;
-+
-+	fprintf(stderr, "Saving game data with old format in \"%s\"\n", saveFileName());
-+	file = fopen( saveFileName(), "wb" );
-+	if ( file == (FILE *) NULL )
-+		return BNX_FALSE;
-+
-+	sysFPut16( 0xB2D1 , file );
-+
-+	sysFPut32( game->moment      , file );
-+	sysFPut16( game->mode        , file );
-+	sysFPut16( game->scroll      , file );
-+	sysFPut16( game->speed       , file );
-+	sysFPut16( game->moves       , file );
-+	sysFPut16( game->clears      , file );
-+	fputc(    game->ingame      , file );
-+	sysFPut32( game->sounds      , file );
-+	fputc(    game->message     , file );
-+	sysFPut32( game->lines       , file );
-+	sysFPut16( game->level       , file );
-+	sysFPut16( game->level_count , file );
-+
-+	sysFPut16( cMaxPlayers , file );
-+
-+	for (i = 0; i < cMaxPlayers; i++)
-+	{
-+		fputc( game->player[i].x , file );
-+		fputc( game->player[i].y , file );
-+		fputc( game->player[i].e , file );
-+		sysFPut32( game->score[i] , file );
-+		sysFPut32( game->wins[i]  , file );
-+		sysFPut32( game->best[i]  , file );
-+	}
-+
-+	sysFPut32( cGridX , file );
-+	sysFPut32( cGridY , file );
-+
-+	for (j = 0; j < cGridY; j++)
-+		for (i = 0; i < cGridX; i++)
-+			fputc( game->grid[i][j] , file );
-+
-+	sysFPut16( 0xB2D0 , file );
-+
-+	fclose( file );
-+	return BNX_TRUE;
-+}
-+
-+BNX_BOOL loadOldDebianGame( BNX_GAME *game )
-+{
-+	FILE		*file = NULL;
-+	int		i, j;
-+	uint16_t	id, mp;
-+	uint32_t	mx, my;
-+
-+	file = fopen( saveFileName(), "rb" );
-+	if ( file == (FILE *) NULL )
-+		return BNX_FALSE;
-+
-+	errno = 0;
-+
-+	id = sysFGet16(file);
-+	if (id != 0xB2D1)
-+		goto error;
-+
-+	fprintf(stderr, "Loading game data with old format from \"%s\"\n", saveFileName());
-+
-+	game->moment = sysFGet32(file);
-+	game->mode = sysFGet16(file);
-+	game->scroll = sysFGet16(file);
-+	game->speed = sysFGet16(file);
-+	game->moves = sysFGet16(file);
-+	game->clears = sysFGet16(file);
-+	game->ingame = fgetc(file);
-+	game->sounds = sysFGet32(file);
-+	game->message = fgetc(file);
-+	game->lines = sysFGet32(file);
-+	game->level = sysFGet16(file);
-+	game->level_count = sysFGet16(file);
-+
-+	mp = sysFGet16(file);
-+	if (mp != cMaxPlayers)
-+		goto error;
-+
-+	for (i = 0; i < cMaxPlayers; i++)
-+	{
-+		game->player[i].x = fgetc(file);
-+		game->player[i].y = fgetc(file);
-+		game->player[i].e = fgetc(file);
-+		game->score[i] = sysFGet32(file);
-+		game->wins[i] = sysFGet32(file);
-+		game->best[i] = sysFGet32(file);
-+	}
-+
-+	mx = sysFGet32(file);
-+	if (mx != cGridX)
-+		goto error;
-+	my = sysFGet32(file);
-+	if (my != cGridY)
-+		goto error;
-+
-+	for (j = 0; j < cGridY; j++)
-+		for (i = 0; i < cGridX; i++)
-+			game->grid[i][j] = fgetc(file);
-+
-+	id = sysFGet16(file);
-+	if (id != 0xB2D0)
-+		goto error;
-+
-+	fclose( file );
-+	return BNX_TRUE;
-+
-+error:
-+	if (file)
-+		fclose( file );
-+	return BNX_FALSE;
-+}
-diff --git a/desktop/cfg.c b/desktop/cfg.c
-index 5c2773a..b735566 100755
---- a/desktop/cfg.c
-+++ b/desktop/cfg.c
-@@ -30,6 +30,17 @@ INCLUDES
- 
- #include "inc.h"
- 
-+#ifndef _WIN32
-+#include <stdlib.h>
-+#include <stdio.h>
-+#include <string.h>
-+#include <unistd.h>
-+#include <limits.h>
-+#include <pwd.h>
-+#include <fcntl.h>
-+#include <sys/stat.h>
-+#include <sys/types.h>
-+#endif
- 
- /******************************************************************************
- FUNCTIONS
-@@ -54,38 +65,99 @@ BNX_BOOL cfgInit()
- 	char	buffer[ _Cfg_Buffer ];
- 	int		nTemp;
- 
-+#ifndef _WIN32
-+	char filename[1024];
-+	char *home;
-+	struct passwd *passwd;
-+	if (!getuid())
-+	{
-+				fprintf(stderr, "No access to config files for root.\n");
-+				return BNX_FALSE;
-+	} else {
-+		if ((home = getenv("XDG_CONFIG_HOME")))
-+		{ /* See http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html */
-+			if (strlen(home) > 1024 - sizeof("/biniax2/config"))
-+			{
-+				fprintf(stderr, "$XDG_CONFIG_HOME is excessively long.n");
-+				return BNX_FALSE;
-+			}
-+			snprintf(filename, sizeof(filename), "%s/biniax2", home);
-+			mkdir(filename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-+		}
-+		else if ((home = getenv("HOME")))
-+		{
-+			passwd = getpwuid (getuid());
-+			home=passwd->pw_dir;
-+			if (!home)
-+			{
-+				fprintf(stderr, "$HOME is not defined.\n");
-+				return BNX_FALSE;
-+			}
-+			if (strlen(home) > 1024 - sizeof("/.config/biniax2/config"))
-+			{
-+				fprintf(stderr, "$HOME is excessively long.n");
-+				return BNX_FALSE;
-+			}
-+			snprintf(filename, sizeof(filename), "%s/.config", home);
-+			mkdir(filename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-+			strncat(filename, "/biniax2", sizeof(filename)-1);
-+			mkdir(filename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-+		}
-+		else
-+		{
-+			fprintf(stderr, "Neither $XDG_CONFIG_HOME nor $HOME are defined.\n");
-+			return BNX_FALSE;
-+		}
-+	}
-+	strncat(filename, "/config", sizeof(filename)-1);
-+#else
-+	char filename[] = "./config.bnx2";
-+#endif
-+
- 	_Cfg.sound = BNX_TRUE;
- 	_Cfg.music = BNX_TRUE;
- 	_Cfg.fullscreen = BNX_FALSE;
- 	_Cfg.touch = BNX_FALSE;
- 
--	f = fopen( sysGetFullFileName( csConfigName ), "rt" );
--	if ( f == 0 )
--	{
--		return BNX_FALSE;
--	}
--
--	fgets( buffer, _Cfg_Buffer, f );
--	sscanf( buffer, "SOUND=%d", &nTemp );
--	_Cfg.sound = (BNX_BOOL) nTemp;
--
--	fgets( buffer, _Cfg_Buffer, f );
--	sscanf( buffer, "MUSIC=%d", &nTemp );
--	_Cfg.music = (BNX_BOOL) nTemp;
--
--	fgets( buffer, _Cfg_Buffer, f );
--	sscanf( buffer, "FULLSCREEN=%d", &nTemp );
--	_Cfg.fullscreen = (BNX_BOOL) nTemp;
--
--	fgets( buffer, _Cfg_Buffer, f );
--	sscanf( buffer, "TOUCH=%d", &nTemp );
--	_Cfg.touch = (BNX_BOOL) nTemp;
--
--	fclose( f );
--
-+if( access( filename, F_OK ) != -1 ) {
-+	f = fopen( filename, "r" );
-+		if ( f == NULL )
-+		{
-+			fprintf( stderr,"Configuration file \"%s\" not found\n", filename );
-+			return BNX_FALSE;
-+		}
-+		else {
-+			fgets( buffer, _Cfg_Buffer, f );
-+			sscanf( buffer, "SOUND=%d", &nTemp );
-+			_Cfg.sound = (BNX_BOOL) nTemp;
-+
-+			fgets( buffer, _Cfg_Buffer, f );
-+			sscanf( buffer, "MUSIC=%d", &nTemp );
-+			_Cfg.music = (BNX_BOOL) nTemp;
-+
-+			fgets( buffer, _Cfg_Buffer, f );
-+			sscanf( buffer, "FULLSCREEN=%d", &nTemp );
-+			_Cfg.fullscreen = (BNX_BOOL) nTemp;
-+
-+			fgets( buffer, _Cfg_Buffer, f );
-+			sscanf( buffer, "TOUCH=%d", &nTemp );
-+			_Cfg.touch = (BNX_BOOL) nTemp;
-+			fclose( f );
-+
-+			fprintf( stderr, _Cfg.sound ? "Sound On\n" : "Sound Off\n" );
-+			fprintf( stderr, _Cfg.music ? "Music On\n" : "Music Off\n" );
-+			fprintf( stderr, _Cfg.fullscreen ? "Fullscreen On\n" : "Fullscreen Off\n" );
-+			return BNX_TRUE;
-+		}
-+} else {
-+	f = fopen( filename, "w" );
-+	fputs("SOUND=1\n", f);
-+	fputs("MUSIC=1\n", f);
-+	fputs("FULLSCREEN=0", f);
-+	fclose(f);
- 	return BNX_TRUE;
- }
--
-+}
- BNX_BOOL cfgGetSound()
- {
- 	return _Cfg.sound;
-diff --git a/hof.c b/hof.c
-index 6472e68..d0c6efb 100755
---- a/hof.c
-+++ b/hof.c
-@@ -31,6 +31,21 @@ INCLUDES
- 
- #include "inc.h"
- 
-+#ifndef _WIN32
-+#include <stdlib.h>
-+#include <stdio.h>
-+#include <string.h>
-+#include <unistd.h>
-+#include <limits.h>
-+#include <pwd.h>
-+#include <fcntl.h>
-+#include <sys/stat.h>
-+#include <sys/types.h>
-+#endif
-+
-+#include <errno.h>
-+#include <string.h>
-+
- #define chCursor		'_'			/* Cursor ON */
- #define chSpace			' '			/* Cursor OFF*/
- 
-@@ -46,6 +61,8 @@ void hofAddLetter( BNX_INT16 pos, char a, char *name );
- void hofBlinkCursor( BNX_INT16 pos, char *name );
- void hofResetCursor( BNX_INT16 pos, char *name );
- 
-+BNX_BOOL hofOldDebianInit();
-+BNX_BOOL hofOldDebianSave();
- 
- void hofAddLetter( BNX_INT16 pos, char a, char *name )
- {
-@@ -85,25 +102,81 @@ void hofResetCursor( BNX_INT16 pos, char *name )
- 	}
- }
- 
-+static const char *hofFileName()
-+{
-+#ifndef _WIN32
-+	char filename[1024];
-+	char *home;
-+	struct passwd *passwd;
-+	if (!getuid())
-+	{
-+				fprintf(stderr, "No access to data files for root.\n");
-+				return BNX_FALSE;
-+	} else {
-+		if ((home = getenv("XDG_DATA_HOME")))
-+		{ /* See http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html */
-+			if (strlen(home) > 1024 - sizeof("/biniax2/hof"))
-+			{
-+				fprintf(stderr, "$XDG_DATA_HOME is excessively long.n");
-+				return BNX_FALSE;
-+			}
-+			snprintf(filename, sizeof(filename), "%s/biniax2", home);
-+			mkdir(filename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-+		}
-+		else if ((home = getenv("HOME")))
-+		{
-+			passwd = getpwuid (getuid());
-+			home=passwd->pw_dir;
-+			if (!home)
-+			{
-+				fprintf(stderr, "$HOME is not defined.\n");
-+				return BNX_FALSE;
-+			}
-+			if (strlen(home) > 1024 - sizeof("/.local/share/biniax2/hof"))
-+			{
-+				fprintf(stderr, "$HOME is excessively long.n");
-+				return BNX_FALSE;
-+			}
-+			snprintf(filename, sizeof(filename), "%s/.local", home);
-+			mkdir(filename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-+			strncat(filename, "/share", sizeof(filename)-1);
-+			mkdir(filename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-+			strncat(filename, "/biniax2", sizeof(filename)-1);
-+			mkdir(filename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-+		}
-+		else
-+		{
-+			fprintf(stderr, "Neither $XDG_DATA_HOME nor $HOME are defined.\n");
-+			return BNX_FALSE;
-+		}
-+	}
-+	strncat(filename, "/hof", sizeof(filename)-1);
-+	return filename;
-+#else
-+	return "./hof.bnx2";
-+#endif
-+}
- 
- BNX_BOOL hofInit()
- {
- 	FILE		*file;
- 	BNX_INT16	i, j;
--	
-+
-+	if (hofOldDebianInit() == BNX_TRUE)
-+		return BNX_TRUE;
- 
- 	for ( i = 0; i < cHofEntries; ++i )
- 	{
--		strcpy( Hof.arcade[ i ].name, "JORDAN                       " );
-+		strcpy( Hof.arcade[ i ].name, "DEBIAN                       " );
- 		Hof.arcade[ i ].score = (cHofEntries - i) * cHofInitScore;
- 
--		strcpy( Hof.tactic[ i ].name, "JORDAN                       " );
-+		strcpy( Hof.tactic[ i ].name, "DEBIAN                       " );
- 		Hof.tactic[ i ].score = (cHofEntries - i) * cHofInitScore;
- 	}
- 
--	if ( sysGetFileLen( sysGetFullFileName( csHOFName ) ) != cHOFFileSize )
-+	if ( sysGetFileLen( hofFileName() ) != cHOFFileSize )
- 		return BNX_FALSE;
--	file = fopen( sysGetFullFileName( csHOFName ), "rb" );
-+	file = fopen( hofFileName(), "rb" );
- 	if ( file == (FILE *) NULL )
- 		return BNX_FALSE;
- 
-@@ -137,7 +210,7 @@ BNX_BOOL hofSave()
- 	FILE		*file;
- 	int			i, j;
- 
--	file = fopen( sysGetFullFileName( csHOFName ), "wb" );
-+	file = fopen( hofFileName(), "wb" );
- 
- 	if ( file == (FILE *) NULL )
- 		return BNX_FALSE;
-@@ -292,4 +365,119 @@ void hofView()
- BNX_HALL *hofGet()
- {
- 	return (BNX_HALL *) &Hof;
--}
-\ No newline at end of file
-+}
-+
-+// DEBIAN SPECIFIC
-+
-+BNX_BOOL hofOldDebianInit()
-+{
-+	FILE		*file = NULL;
-+	int		i;
-+	uint16_t	id, me, ml;
-+	const char *filename = NULL;
-+	char alt_filename[1024+3];
-+
-+	file = fopen( (filename = hofFileName()), "rb" );
-+
-+	if ( file == (FILE *) NULL ) // Bug in previous version, see if data can be reached
-+	{
-+		char *ptr;
-+		strncpy(alt_filename, filename, 1024);
-+		ptr = strrchr(alt_filename, '/');
-+		if (ptr != NULL)
-+		{
-+			ptr++;
-+			filename = alt_filename;
-+			strcpy(ptr, "config");
-+			file = fopen( filename, "rb" );
-+		}
-+	}
-+
-+	if ( file == (FILE *) NULL )
-+	{
-+		goto error;
-+	}
-+
-+	errno = 0;
-+
-+	id = sysFGet16(file);
-+	if (id != 0xB2F1)
-+		goto error;
-+
-+	fprintf(stderr, "Loading Hall of Fame data with old format from \"%s\"\n", filename);
-+
-+	ml = sysFGet16(file);
-+	if (ml != cHofNameLen)
-+		goto error;
-+
-+	me = sysFGet16(file);
-+	if (me != cHofEntries)
-+		goto error;
-+
-+	for ( i = 0; i < cHofEntries; ++i )
-+	{	
-+		fread( Hof.arcade[i].name, 1, cHofNameLen, file );
-+		Hof.arcade[i].score = sysFGet32(file);
-+	}
-+
-+	for ( i = 0; i < cHofEntries; ++i )
-+	{	
-+		fread( Hof.tactic[i].name, 1, cHofNameLen, file );
-+		Hof.tactic[i].score = sysFGet32(file);
-+	}
-+
-+	id = sysFGet16(file);
-+	if (id != 0xB2F0)
-+		goto error;
-+
-+	fclose( file );
-+
-+	return BNX_TRUE;
-+
-+error:
-+	if (file)
-+		fclose( file );
-+	return BNX_FALSE;
-+}
-+
-+BNX_BOOL hofOldDebianSave()
-+{
-+	FILE		*file;
-+	int 		i;
-+	const char *filename = NULL;
-+
-+	file = fopen( (filename=hofFileName()), "wb" );
-+
-+	if ( file == (FILE *) NULL )
-+	{
-+		if (errno)
-+			fprintf(stderr, "Could not save Hall of Fame data with old format in \"%s\": %s\n", filename, strerror(errno));
-+		else
-+			fprintf(stderr, "Could not save Hall of Fame data with old format in \"%s\"\n", filename);
-+		return BNX_FALSE;
-+	}
-+
-+	fprintf(stderr, "Saving Hall of Fame data with old format in \"%s\"\n", filename);
-+
-+	sysFPut16( 0xB2F1 , file );
-+	sysFPut16( cHofNameLen , file );
-+	sysFPut16( cHofEntries , file );
-+
-+	for ( i = 0; i < cHofEntries; ++i )
-+	{
-+		fwrite( Hof.arcade[i].name, 1, cHofNameLen, file );
-+		sysFPut32(Hof.arcade[i].score, file);
-+	}
-+
-+	for ( i = 0; i < cHofEntries; ++i )
-+	{
-+		fwrite( Hof.tactic[i].name, 1, cHofNameLen, file );
-+		sysFPut32(Hof.tactic[i].score, file);
-+	}
-+
-+	sysFPut16( 0xB2F0 , file );
-+
-+	fclose( file );
-+
-+	return BNX_TRUE;
-+}
-diff --git a/inc.h b/inc.h
-index ee3459a..e9c8379 100755
---- a/inc.h
-+++ b/inc.h
-@@ -68,5 +68,9 @@ INCLUDES
- #include "symbian/sys.h"
- #endif
- 
-+#ifndef _WIN32
-+#include <stdint.h>
-+#include <stdio.h>
-+#endif
- 
- #endif

Copied: packages/tags/biniax2/1.30-4/debian/patches/userdir.patch (from rev 16030, packages/trunk/biniax2/debian/patches/userdir.patch)
===================================================================
--- packages/tags/biniax2/1.30-4/debian/patches/userdir.patch	                        (rev 0)
+++ packages/tags/biniax2/1.30-4/debian/patches/userdir.patch	2017-10-21 15:07:22 UTC (rev 16031)
@@ -0,0 +1,716 @@
+From: Miriam Ruiz <little_miry at yahoo.es>
+Date: Fri, 5 Apr 2013 00:08:18 +0200
+Subject: userdir
+
+---
+ biniax.c      | 228 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
+ desktop/cfg.c | 122 ++++++++++++++++++++++++-------
+ hof.c         | 202 +++++++++++++++++++++++++++++++++++++++++++++++++--
+ inc.h         |   4 ++
+ 4 files changed, 520 insertions(+), 36 deletions(-)
+
+diff --git a/biniax.c b/biniax.c
+index 886b692..5cc5765 100755
+--- a/biniax.c
++++ b/biniax.c
+@@ -51,6 +51,22 @@ INCLUDES
+ #include "lev.h"
+ #include "inc.h"
+ 
++#ifndef _WIN32
++#include <stdlib.h>
++#include <stdio.h>
++#include <string.h>
++#include <unistd.h>
++#include <limits.h>
++#include <pwd.h>
++#include <fcntl.h>
++#include <sys/stat.h>
++#include <sys/types.h>
++#include <stdint.h>
++#endif
++
++#include <errno.h>
++#include <string.h>
++
+ /* Global instance of GAME structure */
+ BNX_GAME Game;
+ 
+@@ -82,6 +98,9 @@ BNX_BOOL saveGame( BNX_GAME *game );
+ BNX_BOOL loadGame( BNX_GAME *game );
+ BNX_BOOL loadHiScore( BNX_GAME *game );
+ 
++BNX_BOOL saveOldDebianGame( BNX_GAME *game );
++BNX_BOOL loadOldDebianGame( BNX_GAME *game );
++
+ #define UNREF( A ) (A) = (A)
+ /******************************************************************************
+ PROGRAM START
+@@ -100,13 +119,27 @@ int main( int argc, char *argv[] )
+ 	cfgInit();
+ 	hofInit();
+ 	if ( gfxInit() == BNX_FALSE )
++	{
++		fprintf(stderr, "Error in Graphics Initialization\n");
+ 		return -1;
++	}
+ 	if ( sysInit() == BNX_FALSE )
++	{
++		fprintf(stderr, "Error in System Initialization\n");
+ 		return -2;
++	}
+ 	if ( inpInit() == BNX_FALSE )
++	{
++		fprintf(stderr, "Error in Input Initialization\n");
+ 		return -3;
++	}
+ 	if ( sndInit() == BNX_FALSE )
+-		return -4;
++	{
++		fprintf(stderr, "Error in Sound Initialization\n");
++		cfgSetSound(BNX_FALSE);
++		cfgSetMusic(BNX_FALSE);
++		/* return -4; */
++	}
+ 
+ 	/******************************************************************
+ 	SHOW INITIAL WELCOME SCREEN
+@@ -131,6 +164,10 @@ int main( int argc, char *argv[] )
+ 				case cOptionContinue:
+ 					if ( loadGame( &Game ) == BNX_FALSE )
+ 					{
++						if (errno)
++							fprintf(stderr, "Error loading game data: %s\n", strerror(errno));
++						else
++							fprintf(stderr, "Error loading game data\n");
+ 						enterState = cStateMainMenu;
+ 					}
+ 					else
+@@ -1178,13 +1215,70 @@ void showHelp( BNX_GAME *game )
+ GAME AND HISCORE SAVE / RESTORE
+ ******************************************************************************/
+ 
++static const char *saveFileName()
++{
++#ifndef _WIN32
++	char filename[1024];
++	char *home;
++	struct passwd *passwd;
++	if (!getuid())
++	{
++				fprintf(stderr, "No access to data files for root.\n");
++				return BNX_FALSE;
++	} else {
++		if ((home = getenv("XDG_DATA_HOME")))
++		{ /* See http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html */
++			if (strlen(home) > 1024 - sizeof("/biniax2/hof"))
++			{
++				fprintf(stderr, "$XDG_DATA_HOME is excessively long.n");
++				return BNX_FALSE;
++			}
++			snprintf(filename, sizeof(filename), "%s/biniax2", home);
++			mkdir(filename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
++		}
++		else if ((home = getenv("HOME")))
++		{
++			passwd = getpwuid (getuid());
++			home=passwd->pw_dir;
++			if (!home)
++			{
++				fprintf(stderr, "$HOME is not defined.\n");
++				return BNX_FALSE;
++			}
++			if (strlen(home) > 1024 - sizeof("/.local/share/biniax2/autosave"))
++			{
++				fprintf(stderr, "$HOME is excessively long.n");
++				return BNX_FALSE;
++			}
++			snprintf(filename, sizeof(filename), "%s/.local", home);
++			mkdir(filename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
++			strncat(filename, "/share", sizeof(filename)-1);
++			mkdir(filename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
++			strncat(filename, "/biniax2", sizeof(filename)-1);
++			mkdir(filename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
++		}
++		else
++		{
++			fprintf(stderr, "Neither $XDG_DATA_HOME nor $HOME are defined.\n");
++			return BNX_FALSE;
++		}
++	}
++	strncat(filename, "/autosave", sizeof(filename)-1);
++	return filename;
++#else
++	return "./autosave.bnx2";
++#endif
++}
++
+ BNX_BOOL saveGame( BNX_GAME *game )
+ {
+ 	FILE		*file;
+ 	BNX_INT32	i;
+ 	BNX_INT32	j;
+ 
+-	file = fopen( sysGetFullFileName( csSaveGameName ), "wb" );
++	fprintf(stderr, "Saving game data in \"%s\"\n", saveFileName());
++
++	file = fopen( saveFileName(), "wb" );
+ 
+ 	if ( file == (FILE *) NULL )
+ 		return BNX_FALSE;
+@@ -1242,9 +1336,14 @@ BNX_BOOL loadGame( BNX_GAME *game )
+ 	BNX_INT32	i;
+ 	BNX_INT32	j;
+ 
+-	if ( sysGetFileLen( sysGetFullFileName( csSaveGameName ) ) != cSaveFileSize )
++	if (loadOldDebianGame(game) == BNX_TRUE)
++		return BNX_TRUE;
++
++	fprintf(stderr, "Loading game data from \"%s\"\n", saveFileName());
++
++	if ( sysGetFileLen( saveFileName() ) != cSaveFileSize )
+ 		return BNX_FALSE;
+-	file = fopen( sysGetFullFileName( csSaveGameName ), "rb" );
++	file = fopen( saveFileName(), "rb" );
+ 	if ( file == (FILE *) NULL )
+ 		return BNX_FALSE;
+ 
+@@ -1302,3 +1401,124 @@ BNX_BOOL loadHiScore( BNX_GAME *game )
+ 	return BNX_TRUE;
+ }
+ 
++// DEBIAN SPECIFIC STUFF
++
++BNX_BOOL saveOldDebianGame( BNX_GAME *game )
++{
++	FILE		*file;
++	int		i, j;
++
++	fprintf(stderr, "Saving game data with old format in \"%s\"\n", saveFileName());
++	file = fopen( saveFileName(), "wb" );
++	if ( file == (FILE *) NULL )
++		return BNX_FALSE;
++
++	sysFPut16( 0xB2D1 , file );
++
++	sysFPut32( game->moment      , file );
++	sysFPut16( game->mode        , file );
++	sysFPut16( game->scroll      , file );
++	sysFPut16( game->speed       , file );
++	sysFPut16( game->moves       , file );
++	sysFPut16( game->clears      , file );
++	fputc(    game->ingame      , file );
++	sysFPut32( game->sounds      , file );
++	fputc(    game->message     , file );
++	sysFPut32( game->lines       , file );
++	sysFPut16( game->level       , file );
++	sysFPut16( game->level_count , file );
++
++	sysFPut16( cMaxPlayers , file );
++
++	for (i = 0; i < cMaxPlayers; i++)
++	{
++		fputc( game->player[i].x , file );
++		fputc( game->player[i].y , file );
++		fputc( game->player[i].e , file );
++		sysFPut32( game->score[i] , file );
++		sysFPut32( game->wins[i]  , file );
++		sysFPut32( game->best[i]  , file );
++	}
++
++	sysFPut32( cGridX , file );
++	sysFPut32( cGridY , file );
++
++	for (j = 0; j < cGridY; j++)
++		for (i = 0; i < cGridX; i++)
++			fputc( game->grid[i][j] , file );
++
++	sysFPut16( 0xB2D0 , file );
++
++	fclose( file );
++	return BNX_TRUE;
++}
++
++BNX_BOOL loadOldDebianGame( BNX_GAME *game )
++{
++	FILE		*file = NULL;
++	int		i, j;
++	uint16_t	id, mp;
++	uint32_t	mx, my;
++
++	file = fopen( saveFileName(), "rb" );
++	if ( file == (FILE *) NULL )
++		return BNX_FALSE;
++
++	errno = 0;
++
++	id = sysFGet16(file);
++	if (id != 0xB2D1)
++		goto error;
++
++	fprintf(stderr, "Loading game data with old format from \"%s\"\n", saveFileName());
++
++	game->moment = sysFGet32(file);
++	game->mode = sysFGet16(file);
++	game->scroll = sysFGet16(file);
++	game->speed = sysFGet16(file);
++	game->moves = sysFGet16(file);
++	game->clears = sysFGet16(file);
++	game->ingame = fgetc(file);
++	game->sounds = sysFGet32(file);
++	game->message = fgetc(file);
++	game->lines = sysFGet32(file);
++	game->level = sysFGet16(file);
++	game->level_count = sysFGet16(file);
++
++	mp = sysFGet16(file);
++	if (mp != cMaxPlayers)
++		goto error;
++
++	for (i = 0; i < cMaxPlayers; i++)
++	{
++		game->player[i].x = fgetc(file);
++		game->player[i].y = fgetc(file);
++		game->player[i].e = fgetc(file);
++		game->score[i] = sysFGet32(file);
++		game->wins[i] = sysFGet32(file);
++		game->best[i] = sysFGet32(file);
++	}
++
++	mx = sysFGet32(file);
++	if (mx != cGridX)
++		goto error;
++	my = sysFGet32(file);
++	if (my != cGridY)
++		goto error;
++
++	for (j = 0; j < cGridY; j++)
++		for (i = 0; i < cGridX; i++)
++			game->grid[i][j] = fgetc(file);
++
++	id = sysFGet16(file);
++	if (id != 0xB2D0)
++		goto error;
++
++	fclose( file );
++	return BNX_TRUE;
++
++error:
++	if (file)
++		fclose( file );
++	return BNX_FALSE;
++}
+diff --git a/desktop/cfg.c b/desktop/cfg.c
+index 5c2773a..b735566 100755
+--- a/desktop/cfg.c
++++ b/desktop/cfg.c
+@@ -30,6 +30,17 @@ INCLUDES
+ 
+ #include "inc.h"
+ 
++#ifndef _WIN32
++#include <stdlib.h>
++#include <stdio.h>
++#include <string.h>
++#include <unistd.h>
++#include <limits.h>
++#include <pwd.h>
++#include <fcntl.h>
++#include <sys/stat.h>
++#include <sys/types.h>
++#endif
+ 
+ /******************************************************************************
+ FUNCTIONS
+@@ -54,38 +65,99 @@ BNX_BOOL cfgInit()
+ 	char	buffer[ _Cfg_Buffer ];
+ 	int		nTemp;
+ 
++#ifndef _WIN32
++	char filename[1024];
++	char *home;
++	struct passwd *passwd;
++	if (!getuid())
++	{
++				fprintf(stderr, "No access to config files for root.\n");
++				return BNX_FALSE;
++	} else {
++		if ((home = getenv("XDG_CONFIG_HOME")))
++		{ /* See http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html */
++			if (strlen(home) > 1024 - sizeof("/biniax2/config"))
++			{
++				fprintf(stderr, "$XDG_CONFIG_HOME is excessively long.n");
++				return BNX_FALSE;
++			}
++			snprintf(filename, sizeof(filename), "%s/biniax2", home);
++			mkdir(filename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
++		}
++		else if ((home = getenv("HOME")))
++		{
++			passwd = getpwuid (getuid());
++			home=passwd->pw_dir;
++			if (!home)
++			{
++				fprintf(stderr, "$HOME is not defined.\n");
++				return BNX_FALSE;
++			}
++			if (strlen(home) > 1024 - sizeof("/.config/biniax2/config"))
++			{
++				fprintf(stderr, "$HOME is excessively long.n");
++				return BNX_FALSE;
++			}
++			snprintf(filename, sizeof(filename), "%s/.config", home);
++			mkdir(filename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
++			strncat(filename, "/biniax2", sizeof(filename)-1);
++			mkdir(filename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
++		}
++		else
++		{
++			fprintf(stderr, "Neither $XDG_CONFIG_HOME nor $HOME are defined.\n");
++			return BNX_FALSE;
++		}
++	}
++	strncat(filename, "/config", sizeof(filename)-1);
++#else
++	char filename[] = "./config.bnx2";
++#endif
++
+ 	_Cfg.sound = BNX_TRUE;
+ 	_Cfg.music = BNX_TRUE;
+ 	_Cfg.fullscreen = BNX_FALSE;
+ 	_Cfg.touch = BNX_FALSE;
+ 
+-	f = fopen( sysGetFullFileName( csConfigName ), "rt" );
+-	if ( f == 0 )
+-	{
+-		return BNX_FALSE;
+-	}
+-
+-	fgets( buffer, _Cfg_Buffer, f );
+-	sscanf( buffer, "SOUND=%d", &nTemp );
+-	_Cfg.sound = (BNX_BOOL) nTemp;
+-
+-	fgets( buffer, _Cfg_Buffer, f );
+-	sscanf( buffer, "MUSIC=%d", &nTemp );
+-	_Cfg.music = (BNX_BOOL) nTemp;
+-
+-	fgets( buffer, _Cfg_Buffer, f );
+-	sscanf( buffer, "FULLSCREEN=%d", &nTemp );
+-	_Cfg.fullscreen = (BNX_BOOL) nTemp;
+-
+-	fgets( buffer, _Cfg_Buffer, f );
+-	sscanf( buffer, "TOUCH=%d", &nTemp );
+-	_Cfg.touch = (BNX_BOOL) nTemp;
+-
+-	fclose( f );
+-
++if( access( filename, F_OK ) != -1 ) {
++	f = fopen( filename, "r" );
++		if ( f == NULL )
++		{
++			fprintf( stderr,"Configuration file \"%s\" not found\n", filename );
++			return BNX_FALSE;
++		}
++		else {
++			fgets( buffer, _Cfg_Buffer, f );
++			sscanf( buffer, "SOUND=%d", &nTemp );
++			_Cfg.sound = (BNX_BOOL) nTemp;
++
++			fgets( buffer, _Cfg_Buffer, f );
++			sscanf( buffer, "MUSIC=%d", &nTemp );
++			_Cfg.music = (BNX_BOOL) nTemp;
++
++			fgets( buffer, _Cfg_Buffer, f );
++			sscanf( buffer, "FULLSCREEN=%d", &nTemp );
++			_Cfg.fullscreen = (BNX_BOOL) nTemp;
++
++			fgets( buffer, _Cfg_Buffer, f );
++			sscanf( buffer, "TOUCH=%d", &nTemp );
++			_Cfg.touch = (BNX_BOOL) nTemp;
++			fclose( f );
++
++			fprintf( stderr, _Cfg.sound ? "Sound On\n" : "Sound Off\n" );
++			fprintf( stderr, _Cfg.music ? "Music On\n" : "Music Off\n" );
++			fprintf( stderr, _Cfg.fullscreen ? "Fullscreen On\n" : "Fullscreen Off\n" );
++			return BNX_TRUE;
++		}
++} else {
++	f = fopen( filename, "w" );
++	fputs("SOUND=1\n", f);
++	fputs("MUSIC=1\n", f);
++	fputs("FULLSCREEN=0", f);
++	fclose(f);
+ 	return BNX_TRUE;
+ }
+-
++}
+ BNX_BOOL cfgGetSound()
+ {
+ 	return _Cfg.sound;
+diff --git a/hof.c b/hof.c
+index 6472e68..d0c6efb 100755
+--- a/hof.c
++++ b/hof.c
+@@ -31,6 +31,21 @@ INCLUDES
+ 
+ #include "inc.h"
+ 
++#ifndef _WIN32
++#include <stdlib.h>
++#include <stdio.h>
++#include <string.h>
++#include <unistd.h>
++#include <limits.h>
++#include <pwd.h>
++#include <fcntl.h>
++#include <sys/stat.h>
++#include <sys/types.h>
++#endif
++
++#include <errno.h>
++#include <string.h>
++
+ #define chCursor		'_'			/* Cursor ON */
+ #define chSpace			' '			/* Cursor OFF*/
+ 
+@@ -46,6 +61,8 @@ void hofAddLetter( BNX_INT16 pos, char a, char *name );
+ void hofBlinkCursor( BNX_INT16 pos, char *name );
+ void hofResetCursor( BNX_INT16 pos, char *name );
+ 
++BNX_BOOL hofOldDebianInit();
++BNX_BOOL hofOldDebianSave();
+ 
+ void hofAddLetter( BNX_INT16 pos, char a, char *name )
+ {
+@@ -85,25 +102,81 @@ void hofResetCursor( BNX_INT16 pos, char *name )
+ 	}
+ }
+ 
++static const char *hofFileName()
++{
++#ifndef _WIN32
++	char filename[1024];
++	char *home;
++	struct passwd *passwd;
++	if (!getuid())
++	{
++				fprintf(stderr, "No access to data files for root.\n");
++				return BNX_FALSE;
++	} else {
++		if ((home = getenv("XDG_DATA_HOME")))
++		{ /* See http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html */
++			if (strlen(home) > 1024 - sizeof("/biniax2/hof"))
++			{
++				fprintf(stderr, "$XDG_DATA_HOME is excessively long.n");
++				return BNX_FALSE;
++			}
++			snprintf(filename, sizeof(filename), "%s/biniax2", home);
++			mkdir(filename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
++		}
++		else if ((home = getenv("HOME")))
++		{
++			passwd = getpwuid (getuid());
++			home=passwd->pw_dir;
++			if (!home)
++			{
++				fprintf(stderr, "$HOME is not defined.\n");
++				return BNX_FALSE;
++			}
++			if (strlen(home) > 1024 - sizeof("/.local/share/biniax2/hof"))
++			{
++				fprintf(stderr, "$HOME is excessively long.n");
++				return BNX_FALSE;
++			}
++			snprintf(filename, sizeof(filename), "%s/.local", home);
++			mkdir(filename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
++			strncat(filename, "/share", sizeof(filename)-1);
++			mkdir(filename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
++			strncat(filename, "/biniax2", sizeof(filename)-1);
++			mkdir(filename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
++		}
++		else
++		{
++			fprintf(stderr, "Neither $XDG_DATA_HOME nor $HOME are defined.\n");
++			return BNX_FALSE;
++		}
++	}
++	strncat(filename, "/hof", sizeof(filename)-1);
++	return filename;
++#else
++	return "./hof.bnx2";
++#endif
++}
+ 
+ BNX_BOOL hofInit()
+ {
+ 	FILE		*file;
+ 	BNX_INT16	i, j;
+-	
++
++	if (hofOldDebianInit() == BNX_TRUE)
++		return BNX_TRUE;
+ 
+ 	for ( i = 0; i < cHofEntries; ++i )
+ 	{
+-		strcpy( Hof.arcade[ i ].name, "JORDAN                       " );
++		strcpy( Hof.arcade[ i ].name, "DEBIAN                       " );
+ 		Hof.arcade[ i ].score = (cHofEntries - i) * cHofInitScore;
+ 
+-		strcpy( Hof.tactic[ i ].name, "JORDAN                       " );
++		strcpy( Hof.tactic[ i ].name, "DEBIAN                       " );
+ 		Hof.tactic[ i ].score = (cHofEntries - i) * cHofInitScore;
+ 	}
+ 
+-	if ( sysGetFileLen( sysGetFullFileName( csHOFName ) ) != cHOFFileSize )
++	if ( sysGetFileLen( hofFileName() ) != cHOFFileSize )
+ 		return BNX_FALSE;
+-	file = fopen( sysGetFullFileName( csHOFName ), "rb" );
++	file = fopen( hofFileName(), "rb" );
+ 	if ( file == (FILE *) NULL )
+ 		return BNX_FALSE;
+ 
+@@ -137,7 +210,7 @@ BNX_BOOL hofSave()
+ 	FILE		*file;
+ 	int			i, j;
+ 
+-	file = fopen( sysGetFullFileName( csHOFName ), "wb" );
++	file = fopen( hofFileName(), "wb" );
+ 
+ 	if ( file == (FILE *) NULL )
+ 		return BNX_FALSE;
+@@ -292,4 +365,119 @@ void hofView()
+ BNX_HALL *hofGet()
+ {
+ 	return (BNX_HALL *) &Hof;
+-}
+\ No newline at end of file
++}
++
++// DEBIAN SPECIFIC
++
++BNX_BOOL hofOldDebianInit()
++{
++	FILE		*file = NULL;
++	int		i;
++	uint16_t	id, me, ml;
++	const char *filename = NULL;
++	char alt_filename[1024+3];
++
++	file = fopen( (filename = hofFileName()), "rb" );
++
++	if ( file == (FILE *) NULL ) // Bug in previous version, see if data can be reached
++	{
++		char *ptr;
++		strncpy(alt_filename, filename, 1024);
++		ptr = strrchr(alt_filename, '/');
++		if (ptr != NULL)
++		{
++			ptr++;
++			filename = alt_filename;
++			strcpy(ptr, "config");
++			file = fopen( filename, "rb" );
++		}
++	}
++
++	if ( file == (FILE *) NULL )
++	{
++		goto error;
++	}
++
++	errno = 0;
++
++	id = sysFGet16(file);
++	if (id != 0xB2F1)
++		goto error;
++
++	fprintf(stderr, "Loading Hall of Fame data with old format from \"%s\"\n", filename);
++
++	ml = sysFGet16(file);
++	if (ml != cHofNameLen)
++		goto error;
++
++	me = sysFGet16(file);
++	if (me != cHofEntries)
++		goto error;
++
++	for ( i = 0; i < cHofEntries; ++i )
++	{	
++		fread( Hof.arcade[i].name, 1, cHofNameLen, file );
++		Hof.arcade[i].score = sysFGet32(file);
++	}
++
++	for ( i = 0; i < cHofEntries; ++i )
++	{	
++		fread( Hof.tactic[i].name, 1, cHofNameLen, file );
++		Hof.tactic[i].score = sysFGet32(file);
++	}
++
++	id = sysFGet16(file);
++	if (id != 0xB2F0)
++		goto error;
++
++	fclose( file );
++
++	return BNX_TRUE;
++
++error:
++	if (file)
++		fclose( file );
++	return BNX_FALSE;
++}
++
++BNX_BOOL hofOldDebianSave()
++{
++	FILE		*file;
++	int 		i;
++	const char *filename = NULL;
++
++	file = fopen( (filename=hofFileName()), "wb" );
++
++	if ( file == (FILE *) NULL )
++	{
++		if (errno)
++			fprintf(stderr, "Could not save Hall of Fame data with old format in \"%s\": %s\n", filename, strerror(errno));
++		else
++			fprintf(stderr, "Could not save Hall of Fame data with old format in \"%s\"\n", filename);
++		return BNX_FALSE;
++	}
++
++	fprintf(stderr, "Saving Hall of Fame data with old format in \"%s\"\n", filename);
++
++	sysFPut16( 0xB2F1 , file );
++	sysFPut16( cHofNameLen , file );
++	sysFPut16( cHofEntries , file );
++
++	for ( i = 0; i < cHofEntries; ++i )
++	{
++		fwrite( Hof.arcade[i].name, 1, cHofNameLen, file );
++		sysFPut32(Hof.arcade[i].score, file);
++	}
++
++	for ( i = 0; i < cHofEntries; ++i )
++	{
++		fwrite( Hof.tactic[i].name, 1, cHofNameLen, file );
++		sysFPut32(Hof.tactic[i].score, file);
++	}
++
++	sysFPut16( 0xB2F0 , file );
++
++	fclose( file );
++
++	return BNX_TRUE;
++}
+diff --git a/inc.h b/inc.h
+index ee3459a..e9c8379 100755
+--- a/inc.h
++++ b/inc.h
+@@ -68,5 +68,9 @@ INCLUDES
+ #include "symbian/sys.h"
+ #endif
+ 
++#ifndef _WIN32
++#include <stdint.h>
++#include <stdio.h>
++#endif
+ 
+ #endif




More information about the Pkg-games-commits mailing list