File File::getSpecialLocation (const SpecialLocationType type) { switch (type) { case userHomeDirectory: { if (const char* homeDir = getenv ("HOME")) return File (CharPointer_UTF8 (homeDir)); if (auto* pw = getpwuid (getuid())) return File (CharPointer_UTF8 (pw->pw_dir)); return {}; } case userDocumentsDirectory: return resolveXDGFolder ("XDG_DOCUMENTS_DIR", "~/Documents"); case userMusicDirectory: return resolveXDGFolder ("XDG_MUSIC_DIR", "~/Music"); case userMoviesDirectory: return resolveXDGFolder ("XDG_VIDEOS_DIR", "~/Videos"); case userPicturesDirectory: return resolveXDGFolder ("XDG_PICTURES_DIR", "~/Pictures"); case userDesktopDirectory: return resolveXDGFolder ("XDG_DESKTOP_DIR", "~/Desktop"); case userApplicationDataDirectory: return resolveXDGFolder ("XDG_CONFIG_HOME", "~/.config"); case commonDocumentsDirectory: case commonApplicationDataDirectory: return File ("/opt"); case globalApplicationsDirectory: return File ("/usr"); case tempDirectory: { if (const char* tmpDir = getenv ("TMPDIR")) return File (CharPointer_UTF8 (tmpDir)); return File ("/tmp"); } case invokedExecutableFile: if (juce_argv != nullptr && juce_argc > 0) return File (CharPointer_UTF8 (juce_argv[0])); // deliberate fall-through... case currentExecutableFile: case currentApplicationFile: #if ! JUCE_STANDALONE_APPLICATION return juce_getExecutableFile(); #endif // deliberate fall-through if this is not a shared-library case hostApplicationPath: { const File f ("/proc/self/exe"); return f.isSymbolicLink() ? f.getLinkedTarget() : juce_getExecutableFile(); } default: jassertfalse; // unknown type? break; } return {}; }
File File::getSpecialLocation (const SpecialLocationType type) { switch (type) { case userHomeDirectory: case userApplicationDataDirectory: case userDesktopDirectory: case commonApplicationDataDirectory: return File (android.appDataDir); case userDocumentsDirectory: case commonDocumentsDirectory: return getSpecialFile (JuceAppActivity.getDocumentsFolder); case userPicturesDirectory: return getSpecialFile (JuceAppActivity.getPicturesFolder); case userMusicDirectory: return getSpecialFile (JuceAppActivity.getMusicFolder); case userMoviesDirectory: return getSpecialFile (JuceAppActivity.getMoviesFolder); case globalApplicationsDirectory: return File ("/system/app"); case tempDirectory: return File (android.appDataDir).getChildFile (".temp"); case invokedExecutableFile: case currentExecutableFile: case currentApplicationFile: case hostApplicationPath: return juce_getExecutableFile(); default: jassertfalse; // unknown type? break; } return {}; }
//============================================================================== File File::getSpecialLocation (const SpecialLocationType type) { switch (type) { case userHomeDirectory: case userDocumentsDirectory: case userMusicDirectory: case userMoviesDirectory: case userPicturesDirectory: case userApplicationDataDirectory: case userDesktopDirectory: return File (android.appDataDir); case commonApplicationDataDirectory: return File (android.appDataDir); case globalApplicationsDirectory: return File ("/system/app"); case tempDirectory: //return File (AndroidStatsHelpers::getSystemProperty ("java.io.tmpdir")); return File (android.appDataDir).getChildFile (".temp"); case invokedExecutableFile: case currentExecutableFile: case currentApplicationFile: case hostApplicationPath: return juce_getExecutableFile(); default: jassertfalse; // unknown type? break; } return File::nonexistent; }
File File::getSpecialLocation (const SpecialLocationType type) { switch (type) { case userHomeDirectory: { const char* homeDir = getenv ("HOME"); if (homeDir == nullptr) { struct passwd* const pw = getpwuid (getuid()); if (pw != nullptr) homeDir = pw->pw_dir; } return File (CharPointer_UTF8 (homeDir)); } case userDocumentsDirectory: case userMusicDirectory: case userMoviesDirectory: case userApplicationDataDirectory: return File ("~"); case userDesktopDirectory: return File ("~/Desktop"); case commonApplicationDataDirectory: return File ("/var"); case globalApplicationsDirectory: return File ("/usr"); case tempDirectory: { File tmp ("/var/tmp"); if (! tmp.isDirectory()) { tmp = "/tmp"; if (! tmp.isDirectory()) tmp = File::getCurrentWorkingDirectory(); } return tmp; } case invokedExecutableFile: if (juce_Argv0 != nullptr) return File (CharPointer_UTF8 (juce_Argv0)); // deliberate fall-through... case currentExecutableFile: case currentApplicationFile: return juce_getExecutableFile(); case hostApplicationPath: return juce_readlink ("/proc/self/exe", juce_getExecutableFile()); default: jassertfalse; // unknown type? break; } return File::nonexistent; }
File File::getSpecialLocation (const SpecialLocationType type) { switch (type) { case userHomeDirectory: { if (const char* homeDir = getenv ("HOME")) return File (CharPointer_UTF8 (homeDir)); if (struct passwd* const pw = getpwuid (getuid())) return File (CharPointer_UTF8 (pw->pw_dir)); return File(); } case userDocumentsDirectory: return resolveXDGFolder ("XDG_DOCUMENTS_DIR", "~"); case userMusicDirectory: return resolveXDGFolder ("XDG_MUSIC_DIR", "~"); case userMoviesDirectory: return resolveXDGFolder ("XDG_VIDEOS_DIR", "~"); case userPicturesDirectory: return resolveXDGFolder ("XDG_PICTURES_DIR", "~"); case userDesktopDirectory: return resolveXDGFolder ("XDG_DESKTOP_DIR", "~/Desktop"); case userApplicationDataDirectory: return resolveXDGFolder ("XDG_CONFIG_HOME", "~"); case commonDocumentsDirectory: case commonApplicationDataDirectory: return File ("/var"); case globalApplicationsDirectory: return File ("/usr"); case tempDirectory: { File tmp ("/var/tmp"); if (! tmp.isDirectory()) { tmp = "/tmp"; if (! tmp.isDirectory()) tmp = File::getCurrentWorkingDirectory(); } return tmp; } case invokedExecutableFile: if (juce_argv != nullptr && juce_argc > 0) return File (CharPointer_UTF8 (juce_argv[0])); // deliberate fall-through... case currentExecutableFile: case currentApplicationFile: return juce_getExecutableFile(); case hostApplicationPath: { const File f ("/proc/self/exe"); return f.isLink() ? f.getLinkedTarget() : juce_getExecutableFile(); } default: jassertfalse; // unknown type? break; } return File(); }