summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2
-rw-r--r--src/main.cpp18
2 files changed, 12 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index dbc057c3..3ef8ae12 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -13,6 +13,8 @@
Being class and removed the old #define's.
* src/resources/resourcemanager.cpp: Fixed a location where a wrong
dir-separator was used.
+ * src/main.cpp: Fixed updates directory not being created on non-unix
+ systems. Started using PhysFS write support.
2005-07-27 Bjørn Lindeijer <bjorn@lindeijer.nl>
diff --git a/src/main.cpp b/src/main.cpp
index b2421a07..219df488 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -160,18 +160,20 @@ void init_engine()
std::cout << homeDir << " can't be made, but it doesn't exist! Exitting." << std::endl;
exit(1);
}
+#endif
- // Creating and checking the ~/.tmw/updates folder existence and rights.
- std::string dataUpdateDir = homeDir + "/updates";
- //sprintf(dataUpdateDir, "%s/updates", homeDir);
- if ((mkdir(dataUpdateDir.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0) &&
- (errno != EEXIST))
- {
- std::cout << dataUpdateDir << " can't be made, but it doesn't exist! Exitting." << std::endl;
+ if (!PHYSFS_setWriteDir(homeDir.c_str())) {
+ std::cout << homeDir << " couldn't be set as home directory! Exitting." << std::endl;
exit(1);
}
-#endif
+ // Creating and checking the updates folder existence and rights.
+ if (!PHYSFS_exists("/updates")) {
+ if (!PHYSFS_mkdir("/updates")) {
+ std::cout << homeDir << "/updates can't be made, but it doesn't exist! Exitting." << std::endl;
+ exit(1);
+ }
+ }
// Initialize logger
logger = new Logger(homeDir + std::string("/tmw.log"));