--- source/glest_game/ai/ai_interface.h 2009-04-15 11:17:19.000000000 +0400 +++ source/glest_game/ai/ai_interface.h 2009-04-15 12:25:04.000000000 +0400 @@ -84,7 +84,11 @@ bool isFreeCells(const Vec2i &pos, int size, Field field); private: - string getLogFilename() const {return "ai"+intToStr(factionIndex)+".log";} + string getLogFilename() const { + string logfn=getenv("HOME"); + logfn+="/.glest/ai"+intToStr(factionIndex)+".log"; + return logfn; + } }; }}//end namespace --- source/glest_game/ai/ai_rule.cpp 2009-04-15 11:17:19.000000000 +0400 +++ source/glest_game/ai/ai_rule.cpp 2009-04-15 11:19:02.000000000 +0400 @@ -17,6 +17,8 @@ #include "unit.h" #include "leak_dumper.h" +#include + using Shared::Graphics::Vec2i; namespace Glest{ namespace Game{ --- source/glest_game/game/game.cpp 2009-04-15 11:17:19.000000000 +0400 +++ source/glest_game/game/game.cpp 2009-04-15 12:21:29.000000000 +0400 @@ -443,7 +443,8 @@ } else if(key=='E'){ for(int i=0; i<100; ++i){ - string path= "screens/screen" + intToStr(i) + ".tga"; + string path=getenv("HOME"); + path+="/.glest/screens/screen" + intToStr(i) + ".tga"; FILE *f= fopen(path.c_str(), "rb"); if(f==NULL){ --- source/glest_game/main/main.cpp 2009-04-15 11:17:19.000000000 +0400 +++ source/glest_game/main/main.cpp 2009-04-15 12:32:04.000000000 +0400 @@ -114,6 +114,17 @@ // ===================================================== int glestMain(int argc, char** argv){ + if (!getenv("HOME")) + throw runtime_error("HOME external variable is not set"); + + char path[PATH_MAX]; + snprintf(path, PATH_MAX, "%s/.glest", getenv("HOME")); + mkdir(path, 0750); + + snprintf(path, PATH_MAX, "%s/.glest/screens", getenv("HOME")); + mkdir(path, 0750); + + chdir("/usr/share/glest"); MainWindow *mainWindow= NULL; Program *program= NULL; --- source/glest_game/main/program.cpp 2009-04-15 11:17:19.000000000 +0400 +++ source/glest_game/main/program.cpp 2009-04-15 12:11:51.000000000 +0400 @@ -196,9 +196,11 @@ updateTimer.init(GameConstants::updateFps, maxTimes); updateCameraTimer.init(GameConstants::cameraFps, maxTimes); - //log start - Logger &logger= Logger::getInstance(); - logger.setFile("glest.log"); + //log start + char path[PATH_MAX]; + snprintf(path, PATH_MAX, "%s/.glest/glest.log", getenv("HOME")); + Logger &logger= Logger::getInstance(); + logger.setFile(path); logger.clear(); //lang --- source/shared_lib/sources/util/leak_dumper.cpp 2009-04-15 11:17:19.000000000 +0400 +++ source/shared_lib/sources/util/leak_dumper.cpp 2009-04-15 12:04:49.000000000 +0400 @@ -52,7 +52,9 @@ } AllocRegistry::~AllocRegistry(){ - dump("leak_dump.log"); + char path[PATH_MAX]; + snprintf(path, PATH_MAX, "%s/.glest/leak_dump.log", getenv("HOME")); + dump(path); } void AllocRegistry::allocate(AllocInfo info){ --- source/shared_lib/sources/util/profiler.cpp 2009-04-15 11:17:19.000000000 +0400 +++ source/shared_lib/sources/util/profiler.cpp 2009-04-15 12:01:52.000000000 +0400 @@ -71,9 +71,11 @@ Profiler::~Profiler(){ rootSection->stop(); - FILE *f= fopen("profiler.log", "w"); + char path[PATH_MAX]; + snprintf(path, PATH_MAX, "%s/.glest/profiler.log", getenv("HOME")); + FILE *f= fopen(path, "w"); if(f==NULL) - throw runtime_error("Can not open file: profiler.log"); + throw runtime_error("Can not open file: %s",path); fprintf(f, "Profiler Results\n\n"); --- source/shared_lib/sources/util/properties.cpp 2009-04-15 11:17:19.000000000 +0400 +++ source/shared_lib/sources/util/properties.cpp 2009-04-15 13:09:33.000000000 +0400 @@ -15,6 +15,9 @@ #include #include +#include +#include + #include "conversion.h" #include "leak_dumper.h" @@ -34,9 +37,13 @@ this->path= path; - fileStream.open(path.c_str(), ios_base::in); + char str[PATH_MAX]; + snprintf(str, PATH_MAX, "%s/.glest/%s", getenv("HOME"), path.c_str()); + fileStream.open(str, ios_base::in); if(fileStream.fail()){ - throw runtime_error("Can't open propertyMap file: " + path); + fileStream.open(path.c_str(), ios_base::in); // use defaults + if(fileStream.fail()) + throw runtime_error("Can't open propertyMap file: " + path + " cwd: "+ getenv("PWD")); } propertyMap.clear(); @@ -71,7 +78,9 @@ void Properties::save(const string &path){ ofstream fileStream; - fileStream.open(path.c_str(), ios_base::out | ios_base::trunc); + char str[PATH_MAX]; + snprintf(str, PATH_MAX, "%s/.glest/%s", getenv("HOME"), path.c_str()); + fileStream.open(str, ios_base::out | ios_base::trunc); fileStream << "; === propertyMap File === \n"; fileStream << '\n';