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