Mercurial > hg > svcore
diff base/TempDirectory.cpp @ 680:27cdabba2d3e
Better system-specific unbundle locations for ResourceFinder; use same location for TempDirectory
author | Chris Cannam |
---|---|
date | Mon, 09 May 2011 16:58:24 +0100 |
parents | 29efe322ab47 |
children | b4a8d8221eaf |
line wrap: on
line diff
--- a/base/TempDirectory.cpp Wed May 04 14:05:08 2011 +0100 +++ b/base/TempDirectory.cpp Mon May 09 16:58:24 2011 +0100 @@ -14,6 +14,7 @@ */ #include "TempDirectory.h" +#include "ResourceFinder.h" #include "system/System.h" #include "Exceptions.h" @@ -58,34 +59,26 @@ TempDirectory::getContainingPath() { QMutexLocker locker(&m_mutex); - + QSettings settings; settings.beginGroup("TempDirectory"); QString svDirParent = settings.value("create-in", "$HOME").toString(); settings.endGroup(); -#ifdef Q_OS_WIN32 - char *homedrive = getenv("HOMEDRIVE"); - char *homepath = getenv("HOMEPATH"); - if (homedrive && homepath) { - svDirParent.replace("$HOME", QString("%1%2").arg(homedrive).arg(homepath)); - } else { - svDirParent.replace("$HOME", QDir::home().absolutePath()); + QString svDir = ResourceFinder().getUserResourcePrefix(); + if (svDirParent != "$HOME") { + //!!! iffy + svDir.replace(QDir::home().absolutePath(), svDirParent); } -#else - svDirParent.replace("$HOME", QDir::home().absolutePath()); -#endif - QString svDirBase = ".sv1"; - QString svDir = QDir(svDirParent).filePath(svDirBase); if (!QFileInfo(svDir).exists()) { - if (!QDir(svDirParent).mkdir(svDirBase)) { + if (!QDir(svDirParent).mkdir(svDir)) { throw DirectoryCreationFailed(QString("%1 directory in %2") - .arg(svDirBase).arg(svDirParent)); + .arg(svDir).arg(svDirParent)); } } else if (!QFileInfo(svDir).isDir()) { - throw DirectoryCreationFailed(QString("%1/%2 is not a directory") - .arg(svDirParent).arg(svDirBase)); + throw DirectoryCreationFailed(QString("%1 is not a directory") + .arg(svDir)); } cleanupAbandonedDirectories(svDir);