@@ -356,61 +356,20 @@ bool init(int argc, char** args)
356356 // Missing data folder is handled in StartState
357357 }
358358 if (_userFolder == "")
359- {
360- std::vector<std::string> user = CrossPlatform::findUserFolders();
361- _configFolder = CrossPlatform::findConfigFolder();
359+ setUserFolder();
362360
363- // Look for an existing user folder
364- for (std::vector<std::string>::iterator i = user.begin(); i != user.end(); ++i)
365- {
366- if (CrossPlatform::folderExists(*i))
367- {
368- _userFolder = *i;
369- break;
370- }
371- }
372-
373- // Set up folders
374- if (_userFolder == "")
375- {
376- for (std::vector<std::string>::iterator i = user.begin(); i != user.end(); ++i)
377- {
378- if (CrossPlatform::createFolder(*i))
379- {
380- _userFolder = *i;
381- break;
382- }
383- }
384- }
385- if (_configFolder == "")
386- {
387- _configFolder = _userFolder;
388- }
389-
390- // Load existing options
391- if (CrossPlatform::folderExists(_configFolder))
392- {
393- try
394- {
395- load();
396- }
397- catch (YAML::Exception &e)
398- {
399- Log(LOG_ERROR) << e.what();
400- }
401- }
402- // Create config folder and save options
403- else
404- {
405- CrossPlatform::createFolder(_configFolder);
406- save();
407- }
408- }
409361 std::string s = getUserFolder();
410362 s += "openxcom.log";
411363 Logger::logFile() = s;
412364 FILE *file = fopen(Logger::logFile().c_str(), "w");
413- fflush(file);
365+ if(!file)
366+ {
367+ std::stringstream error;
368+ error << "Error: invalid User Folder " << _userFolder << std::endl;
369+ std::cout << error.str();
370+ return false;
371+ }
372+ fflush(file);
414373 fclose(file);
415374 Log(LOG_INFO) << "Data folder is: " << _dataFolder;
416375 for (std::vector<std::string>::iterator i = _dataList.begin(); i != _dataList.end(); ++i)
@@ -530,6 +489,62 @@ std::string getUserFolder()
530489 return _userFolder;
531490}
532491
492+ /**
493+ * Sets up the game's User folder where settings
494+ * and saves are stored in.
495+ */
496+ void setUserFolder()
497+ {
498+ std::vector<std::string> user = CrossPlatform::findUserFolders();
499+ _configFolder = CrossPlatform::findConfigFolder();
500+
501+ // Look for an existing user folder
502+ for (std::vector<std::string>::iterator i = user.begin(); i != user.end(); ++i)
503+ {
504+ if (CrossPlatform::folderExists(*i))
505+ {
506+ _userFolder = *i;
507+ break;
508+ }
509+ }
510+
511+ // Set up folders
512+ if (_userFolder == "")
513+ {
514+ for (std::vector<std::string>::iterator i = user.begin(); i != user.end(); ++i)
515+ {
516+ if (CrossPlatform::createFolder(*i))
517+ {
518+ _userFolder = *i;
519+ break;
520+ }
521+ }
522+ }
523+ if (_configFolder == "")
524+ {
525+ _configFolder = _userFolder;
526+ }
527+
528+ // Load existing options
529+ if (CrossPlatform::folderExists(_configFolder))
530+ {
531+ try
532+ {
533+ load();
534+ }
535+ catch (YAML::Exception &e)
536+ {
537+ Log(LOG_ERROR) << e.what();
538+ }
539+ }
540+ // Create config folder and save options
541+ else
542+ {
543+ CrossPlatform::createFolder(_configFolder);
544+ save();
545+ }
546+ }
547+
533548/**
534549 * Returns an option in string format.
535550 * @param id Option ID.
0 commit comments