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);