Use XDG Directory Specification for Linux. See: http://standards.free… · hrydgard/ppsspp@132fe47

2 files changed

lines changed

Original file line numberDiff line numberDiff line change

@@ -243,15 +243,24 @@ void NativeInit(int argc, const char *argv[], const char *savegame_directory, co

243243

isMessagePending = false;

244244
245245

std::string user_data_path = savegame_directory;

246+

#ifdef Q_OS_LINUX

247+

char* config = getenv("XDG_CONFIG_HOME");

248+

if (!config) {

249+

config = getenv("HOME");

250+

strcat(config, "/.config");

251+

}

252+

std::string memcard_path = std::string(config) + "/ppsspp/";

253+

#else

246254

std::string memcard_path = QDir::homePath().toStdString() + "/.ppsspp/";

255+

#endif

247256
248257

VFSRegister("", new DirectoryAssetReader("assets/"));

249258

VFSRegister("", new DirectoryAssetReader(user_data_path.c_str()));

250259

VFSRegister("", new AssetsAssetReader());

251260
252261

g_Config.AddSearchPath(user_data_path);

253262

g_Config.AddSearchPath(memcard_path + "PSP/SYSTEM/");

254-

g_Config.SetDefaultPath(g_Config.memCardDirectory + "PSP/SYSTEM/");

263+

g_Config.SetDefaultPath(memcard_path + "PSP/SYSTEM/");

255264

g_Config.Load();

256265

i18nrepo.LoadIni(g_Config.sLanguageIni);

257266

@@ -305,7 +314,7 @@ void NativeInit(int argc, const char *argv[], const char *savegame_directory, co

305314

g_Config.currentDirectory = QDir::homePath().toStdString();

306315

}

307316
308-

g_Config.memCardDirectory = QDir::homePath().toStdString() + "/.ppsspp/";

317+

g_Config.memCardDirectory = memcard_path;

309318
310319

#if defined(Q_OS_LINUX)

311320

std::string program_path = QCoreApplication::applicationDirPath().toStdString();

Original file line numberDiff line numberDiff line change

@@ -249,13 +249,11 @@ void NativeInit(int argc, const char *argv[],

249249

// We want this to be FIRST.

250250

#ifdef USING_QT_UI

251251

VFSRegister("", new AssetsAssetReader());

252-

#else

253-

#if defined(BLACKBERRY) || defined(IOS)

252+

#elif defined(BLACKBERRY) || defined(IOS)

254253

// Packed assets are included in app

255254

VFSRegister("", new DirectoryAssetReader(external_directory));

256255

#else

257256

VFSRegister("", new DirectoryAssetReader("assets/"));

258-

#endif

259257

#endif

260258

VFSRegister("", new DirectoryAssetReader(savegame_directory));

261259

@@ -272,7 +270,12 @@ void NativeInit(int argc, const char *argv[],

272270

g_Config.memCardDirectory = user_data_path;

273271

g_Config.flash0Directory = std::string(external_directory) + "/flash0/";

274272

#elif !defined(_WIN32)

275-

g_Config.memCardDirectory = std::string(getenv("HOME")) + "/.ppsspp/";

273+

char* config = getenv("XDG_CONFIG_HOME");

274+

if (!config) {

275+

config = getenv("HOME");

276+

strcat(config, "/.config");

277+

}

278+

g_Config.memCardDirectory = std::string(config) + "/ppsspp/";

276279

std::string program_path = File::GetExeDirectory();

277280

if (program_path.empty())

278281

g_Config.flash0Directory = g_Config.memCardDirectory + "/flash0/";