Index: pingus.hxx
===================================================================
--- pingus.hxx	(revision 2450)
+++ pingus.hxx	(working copy)
@@ -43,7 +43,7 @@
 #  include <assert.h>
 #endif
 
-#if defined(WIN32) && defined(__GNUC__)
+#if defined(WIN32) && defined(__GNUC__) && !defined(HAVE_SSTREAM)
 #  define HAVE_SSTREAM
 #endif
 
Index: stat_manager.cxx
===================================================================
--- stat_manager.cxx	(revision 2450)
+++ stat_manager.cxx	(working copy)
@@ -65,6 +65,12 @@
 void
 StatManager::load(const std::string& filename)
 {
+  if (!System::exist(filename))
+  {
+     // Create empty file
+     save(filename);
+  }
+  
   CL_InputSourceProvider_File provider(".");
   CL_DomDocument doc(provider.open_source(filename), true);
       
Index: system.cxx
===================================================================
--- system.cxx	(revision 2450)
+++ system.cxx	(working copy)
@@ -282,7 +282,7 @@
 System::get_vardir()
 {
 #ifdef WIN32
-  return "var\\";
+  return "var/";
 #else
   return "/var/games/pingus/";
 #endif
@@ -292,8 +292,10 @@
 System::get_tmpdir()
 {
 #ifdef WIN32
-  // FIXME: Warning: these hardcoded values are most probably wrong!
-  return "c:\\windows\\temp\\";
+  char* tmpdir = getenv("TEMP");
+  if (!tmpdir) tmpdir = getenv("TMP");
+  if (!tmpdir) return get_statdir() + "tmp/";
+  else return std::string(tmpdir);
 #else
   return "/tmp/";
 #endif
