From 271d5b3929d101717e901c086ae26dbc00ae16a5 Mon Sep 17 00:00:00 2001 From: ac-stef Date: Sun, 21 Feb 2016 15:17:24 +0100 Subject: [PATCH] always use a profile directory If none is specified by commandline, "profile/" is used. This way, downloaded files don't mix with the original install files. --- .gitignore | 1 + source/src/main.cpp | 11 ++++++++++- source/src/stream.cpp | 5 +++++ source/src/tools.h | 1 + 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index ad5fff61..349c36e6 100644 --- a/.gitignore +++ b/.gitignore @@ -36,4 +36,5 @@ source/src/Makefile_local clientlog*.txt dumpmapconfig.txt packetlog.txt +profile/* diff --git a/source/src/main.cpp b/source/src/main.cpp index 88ce868b..29e7d3bd 100644 --- a/source/src/main.cpp +++ b/source/src/main.cpp @@ -976,6 +976,8 @@ void initclientlog() // rotate old logfiles and create new one DELETEP(bootclientlog); } +#define DEFAULTPROFILEPATH "profile" + int main(int argc, char **argv) { ASSERT((GMMASK__BOT ^ GMMASK__MP ^ GMMASK__TEAM ^ GMMASK__FFA ^ GMMASK__TEAMSPAWN ^ GMMASK__FFASPAWN) == GMMASK__ALL); @@ -1025,7 +1027,11 @@ int main(int argc, char **argv) if(argv[i][0]=='-') switch(argv[i][1]) { case '-': - if(!strncmp(argv[i], "--home=", 7)) + if(!strcmp(argv[i], "--home")) + { + sethomedir(DEFAULTPROFILEPATH); + } + else if(!strncmp(argv[i], "--home=", 7)) { sethomedir(&argv[i][7]); } @@ -1035,11 +1041,13 @@ int main(int argc, char **argv) } else if(!strcmp(argv[i], "--init")) { + if(!havehomedir()) sethomedir(DEFAULTPROFILEPATH); execfile((char *)"config/init.cfg"); restoredinits = true; } else if(!strncmp(argv[i], "--init=", 7)) { + if(!havehomedir()) sethomedir(DEFAULTPROFILEPATH); execfile(&argv[i][7]); restoredinits = true; } @@ -1082,6 +1090,7 @@ int main(int argc, char **argv) else conoutf("\f3unknown commandline argument: %c", argv[i][0]); } } + if(!havehomedir()) sethomedir(DEFAULTPROFILEPATH); entropy_init(time(NULL) + (uint)(size_t)&serverport + (uint)(size_t)entropy_init); initclientlog(); if(quitdirectly) return EXIT_SUCCESS; diff --git a/source/src/stream.cpp b/source/src/stream.cpp index 471b21c0..a63b650d 100644 --- a/source/src/stream.cpp +++ b/source/src/stream.cpp @@ -204,6 +204,11 @@ void sethomedir(const char *dir) } } +bool havehomedir() +{ + return homedir[0] != '\0'; +} + void addpackagedir(const char *dir) { string pdir; diff --git a/source/src/tools.h b/source/src/tools.h index 0dce463a..93830b9b 100644 --- a/source/src/tools.h +++ b/source/src/tools.h @@ -892,6 +892,7 @@ extern bool fileexists(const char *path, const char *mode); extern bool createdir(const char *path); extern size_t fixpackagedir(char *dir); extern void sethomedir(const char *dir); +extern bool havehomedir(); extern void addpackagedir(const char *dir); extern int findfilelocation; enum { FFL_WORKDIR = -2, FFL_HOME = -1, FFL_ZIP = 0 };