r2953 - in packages/trunk/sauerbraten/debian: . patches
Bruno Fuddl-guestquot; Fuddl" Kleinert
fuddl-guest at alioth.debian.org
Sat Jun 16 22:34:40 UTC 2007
Author: fuddl-guest
Date: 2007-06-16 22:34:39 +0000 (Sat, 16 Jun 2007)
New Revision: 2953
Added:
packages/trunk/sauerbraten/debian/patches/10_save_and_load_maps_from_home_directory.dpatch
Modified:
packages/trunk/sauerbraten/debian/changelog
packages/trunk/sauerbraten/debian/patches/00list
Log:
add dpatch to save/load maps to/from '/home/fuddl/.sauerbraten'
Modified: packages/trunk/sauerbraten/debian/changelog
===================================================================
--- packages/trunk/sauerbraten/debian/changelog 2007-06-16 20:18:03 UTC (rev 2952)
+++ packages/trunk/sauerbraten/debian/changelog 2007-06-16 22:34:39 UTC (rev 2953)
@@ -1,3 +1,10 @@
+sauerbraten (0.0.20070413.dfsg-2) UNRELEASED; urgency=low
+
+ * Add patch to make in-game commands /savemap and /map save/load maps
+ to/from a user's home directory
+
+ -- Bruno "Fuddl" Kleinert <fuddl at gmx.de> Sun, 17 Jun 2007 00:32:34 +0200
+
sauerbraten (0.0.20070413.dfsg-1) unstable; urgency=low
* New upstream release (Closes: #420086)
Modified: packages/trunk/sauerbraten/debian/patches/00list
===================================================================
--- packages/trunk/sauerbraten/debian/patches/00list 2007-06-16 20:18:03 UTC (rev 2952)
+++ packages/trunk/sauerbraten/debian/patches/00list 2007-06-16 22:34:39 UTC (rev 2953)
@@ -1 +1,2 @@
10_search_home_for_config.dpatch
+10_save_and_load_maps_from_home_directory.dpatch
Added: packages/trunk/sauerbraten/debian/patches/10_save_and_load_maps_from_home_directory.dpatch
===================================================================
--- packages/trunk/sauerbraten/debian/patches/10_save_and_load_maps_from_home_directory.dpatch (rev 0)
+++ packages/trunk/sauerbraten/debian/patches/10_save_and_load_maps_from_home_directory.dpatch 2007-06-16 22:34:39 UTC (rev 2953)
@@ -0,0 +1,118 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 10_save_and_load_maps_from_home_directory.dpatch by Bruno "Fuddl" Kleinert <fuddl at gmx.de>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Save maps in $HOME/.sauerbraten and read them from there
+
+ at DPATCH@
+diff -urNad sauerbraten-0.0.20070413.dfsg~/engine/worldio.cpp sauerbraten-0.0.20070413.dfsg/engine/worldio.cpp
+--- sauerbraten-0.0.20070413.dfsg~/engine/worldio.cpp 2007-04-05 02:40:00.000000000 +0000
++++ sauerbraten-0.0.20070413.dfsg/engine/worldio.cpp 2007-06-16 14:20:51.442424828 +0000
+@@ -2,6 +2,10 @@
+
+ #include "pch.h"
+ #include "engine.h"
++#include <libgen.h>
++#include <sys/stat.h>
++#include <sys/types.h>
++#include <unistd.h>
+
+ void backup(char *name, char *backupname)
+ {
+@@ -235,9 +239,28 @@
+ {
+ if(!*mname) mname = cl->getclientmap();
+ setnames(mname);
+- if(savebak) backup(cgzname, bakname);
+- gzFile f = gzopen(cgzname, "wb9");
+- if(!f) { conoutf("could not write map to %s", cgzname); return; }
++
++ // Save maps in $HOME/.sauerbraten
++ char *sauerdir = ".sauerbraten";
++ char *userhome = getenv("HOME");
++ char *savecgz;
++ if(!userhome) { // bahave as usual, but probably fail
++ conoutf("$HOME not set, cannot save map");
++ savecgz = strdup(cgzname);
++ } else {
++ savecgz = (char *) malloc(strlen(userhome) + strlen(sauerdir) + 2);
++ sprintf(savecgz, "%s/%s", userhome, sauerdir);
++ mkdir(savecgz, 0755); // mkdir $HOME/.sauerbraten
++ savecgz = (char *) realloc(savecgz, strlen(userhome) + strlen(sauerdir) + strlen(basename(cgzname)) + 3);
++ sprintf(savecgz, "%s/%s/%s", userhome, sauerdir, basename(cgzname));
++ }
++
++ //if(savebak) backup(cgzname, bakname);
++ if(savebak) backup(savecgz, bakname);
++ //gzFile f = gzopen(cgzname, "wb9");
++ gzFile f = gzopen(savecgz, "wb9");
++ //if(!f) { conoutf("could not write map to %s", cgzname); return; }
++ if(!f) { conoutf("could not write map to %s", savecgz); free(savecgz); return; }
+ hdr.version = MAPVERSION;
+ hdr.numents = 0;
+ const vector<extentity *> &ents = et->getents();
+@@ -287,7 +310,9 @@
+ }
+
+ gzclose(f);
+- conoutf("wrote map file %s", cgzname);
++ conoutf("wrote map file %s", savecgz);
++
++ free(savecgz);
+ }
+
+ void swapXZ(cube *c)
+@@ -310,13 +335,31 @@
+ {
+ int loadingstart = SDL_GetTicks();
+ setnames(mname, cname);
+- gzFile f = gzopen(cgzname, "rb9");
+- if(!f) { conoutf("could not read map %s", cgzname); return; }
++
++ // Load map from $HOME/.sauerbraten, then from system dir
++ char *sauerdir = ".sauerbraten";
++ char *userhome = getenv("HOME");
++ char *loadcgz;
++ struct stat statbuf;
++ if(stat(cgzname, &statbuf) < 0) { // no such map installed system wide => try in home
++ if(!userhome) { // bahave as usual, but probably fail
++ conoutf("$HOME not set, cannot load user's map");
++ return;
++ } else {
++ loadcgz = (char *) malloc(strlen(userhome) + strlen(sauerdir) + strlen(basename(cgzname)) + 3);
++ sprintf(loadcgz, "%s/%s/%s", userhome, sauerdir, basename(cgzname));
++ }
++ } else { // system wide installed map exists => use it
++ loadcgz = strdup(cgzname);
++ }
++
++ gzFile f = gzopen(loadcgz, "rb9");
++ if(!f) { conoutf("could not read map %s", loadcgz); free(loadcgz); return; }
+ header newhdr;
+ gzread(f, &newhdr, sizeof(header));
+ endianswap(&newhdr.version, sizeof(int), 9);
+- if(strncmp(newhdr.head, "OCTA", 4)!=0) { conoutf("map %s has malformatted header", cgzname); gzclose(f); return; }
+- if(newhdr.version>MAPVERSION) { conoutf("map %s requires a newer version of cube 2", cgzname); gzclose(f); return; }
++ if(strncmp(newhdr.head, "OCTA", 4)!=0) { conoutf("map %s has malformatted header", loadcgz); gzclose(f); free(loadcgz); return; }
++ if(newhdr.version>MAPVERSION) { conoutf("map %s requires a newer version of cube 2", loadcgz); gzclose(f); free(loadcgz); return; }
+ hdr = newhdr;
+ resetmap();
+ computescreen(mname);
+@@ -475,7 +518,7 @@
+ // FIXME: need to load texture slots before VAs can be properly sorted
+ // allchanged();
+
+- conoutf("read map %s (%.1f seconds)", cgzname, (SDL_GetTicks()-loadingstart)/1000.0f);
++ conoutf("read map %s (%.1f seconds)", loadcgz, (SDL_GetTicks()-loadingstart)/1000.0f);
+ conoutf("%s", hdr.maptitle);
+
+ overrideidents = true;
+@@ -497,6 +540,8 @@
+ }
+ }
+
++ free(loadcgz);
++
+ startmap(cname ? cname : mname);
+ }
+
Property changes on: packages/trunk/sauerbraten/debian/patches/10_save_and_load_maps_from_home_directory.dpatch
___________________________________________________________________
Name: svn:executable
+ *
More information about the Pkg-games-commits
mailing list