15#include <wx/stdpaths.h>
18#if HAVE_DLFCN_H && !defined(DISABLE_DLADDR)
19# if __linux__ && !defined(_GNU_SOURCE)
23# define HAVE_GET_LIBRARY_PATH 1
26wxString GetLibraryPath()
30 if (dladdr(
reinterpret_cast<const void*
>(GetLibraryPath), &info))
31 return info.dli_fname;
40 const auto programPath = standardPaths.GetExecutablePath();
48 const auto portablePrefix = wxPathOnly(wxPathOnly(programPath));
51 if (wxDirExists(portablePrefix + L
"/share/audacity")) {
53 standardPaths.SetInstallPrefix(portablePrefix);
56 standardPaths.SetInstallPrefix(
wxT(INSTALL_PREFIX));
58 wxString installPrefix = standardPaths.GetInstallPrefix();
66 wxString home = wxGetHomeDir();
68 wxString envTempDir = wxGetenv(
wxT(
"TMPDIR"));
69 if (!envTempDir.empty()) {
73 wxT(
"%s/audacity-%s"), envTempDir, wxGetUserId() ) );
77 wxT(
"/var/tmp/audacity-%s"), wxGetUserId() ) );
80 wxString pathVar = wxGetenv(
wxT(
"AUDACITY_PATH"));
86 const auto progPath = wxPathOnly(programPath);
92#if !defined(__WXMSW__)
96 const wxString progParentPath = wxPathOnly(progPath);
98 if (!progParentPath.IsEmpty())
104#if HAVE_GET_LIBRARY_PATH
105 const wxString thisLibPath = GetLibraryPath();
106 if (!thisLibPath.IsEmpty())
115 home,
wxT(AUDACITY_NAME)),
146 tmpFile.AssignHomeDir();
147 wxString tmpDirLoc = tmpFile.GetPath(wxPATH_GET_VOLUME);
150 tmpFile.AssignTempFileName(
wxT(
"nn"));
151 wxString tmpDirLoc = tmpFile.GetPath(wxPATH_GET_VOLUME);
152 ::wxRemoveFile(tmpFile.GetFullPath());
160 const auto progPath = wxPathOnly(programPath);
167 wxT(
"%s\\SessionData"), tmpDirLoc ) );
172 const auto progPath = wxPathOnly(programPath);
181 progPath +
wxT(
"/../"), audacityPathList);
183 progPath +
wxT(
"/../Resources"), audacityPathList);
188 wxT(
"%s/Library/Application Support/audacity/SessionData"), tmpDirLoc) );
Extend wxArrayString with move operations and construction and insertion fromstd::initializer_list.
Services * Get()
Fetch the global instance, or nullptr if none is yet installed.
FILES_API wxString MkDir(const wxString &Str)
FILES_API void AddUniquePathToPathList(const FilePath &path, FilePaths &pathList)
FILES_API void InitializePathList()
FILES_API void AddMultiPathsToPathList(const wxString &multiPathString, FilePaths &pathList)
FILES_API FilePath DataDir()
Audacity user data directory.
FILES_API FilePath ModulesDir()
FILES_API void SetAudacityPathList(FilePaths list)
FILES_API void SetDefaultTempDir(const FilePath &tempDir)