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 <[email protected]>  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 <[email protected]>  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 <[email protected]>  Sun, 27 Sep 2009 10:45:47 -0400
-
-biniax2 (0.0.20080409-1) unstable; urgency=low
-
-  [ Miriam Ruiz ]
-  * Initial release (Closes: #476247)
-
- -- Miriam Ruiz <[email protected]>  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 <[email protected]>  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 <[email protected]>  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 <[email protected]>  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 <[email protected]>  Sun, 27 Sep 2009 10:45:47 -0400
+
+biniax2 (0.0.20080409-1) unstable; urgency=low
+
+  [ Miriam Ruiz ]
+  * Initial release (Closes: #476247)
+
+ -- Miriam Ruiz <[email protected]>  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 <[email protected]>
+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 <[email protected]>
-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 <[email protected]>
+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


_______________________________________________
Pkg-games-commits mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

Reply via email to