summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2011-09-23 18:34:20 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2011-09-23 18:34:20 (GMT)
commita85340bfb53e8fcc1df30e35c5bfcfcc0b0ef621 (patch)
treeca60428e382b79dd776317dc209bd0ea4601a2cb
parent84e905a50767e81abaa2827a6b98401677527374 (diff)
parent930461946ce14051e56a3d7f49e2cd24742b8777 (diff)
downloadQt-a85340bfb53e8fcc1df30e35c5bfcfcc0b0ef621.zip
Qt-a85340bfb53e8fcc1df30e35c5bfcfcc0b0ef621.tar.gz
Qt-a85340bfb53e8fcc1df30e35c5bfcfcc0b0ef621.tar.bz2
Merge branch 'master' of git://scm.dev.nokia.troll.no/qt/qt-symbian-team
* 'master' of git://scm.dev.nokia.troll.no/qt/qt-symbian-team: Symbian - perform some FS initialisation previously done by open c symbian - Document behaviour of QDir::rootPath / homePath
-rw-r--r--src/corelib/io/qdir.cpp10
-rw-r--r--src/corelib/kernel/qcore_symbian_p.cpp19
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp6
3 files changed, 25 insertions, 10 deletions
diff --git a/src/corelib/io/qdir.cpp b/src/corelib/io/qdir.cpp
index 4ba8e06..48b9358 100644
--- a/src/corelib/io/qdir.cpp
+++ b/src/corelib/io/qdir.cpp
@@ -1872,7 +1872,10 @@ QString QDir::currentPath()
Under non-Windows operating systems the \c HOME environment
variable is used if it exists, otherwise the path returned by the
- rootPath(). On Symbian always the same as the path returned by the rootPath().
+ rootPath().
+
+ On Symbian this typically returns "c:/data",
+ i.e. the same as native PathInfo::PhoneMemoryRootPath().
\sa home(), currentPath(), rootPath(), tempPath()
*/
@@ -1936,9 +1939,8 @@ QString QDir::tempPath()
/*!
Returns the absolute path of the root directory.
- For Unix operating systems this returns "/". For Windows file
- systems this normally returns "c:/". On Symbian this typically returns
- "c:/data", i.e. the same as native PathInfo::PhoneMemoryRootPath().
+ For Unix operating systems this returns "/". For Windows and Symbian file
+ systems this normally returns "c:/". I.E. the root of the system drive.
\sa root(), drives(), currentPath(), homePath(), tempPath()
*/
diff --git a/src/corelib/kernel/qcore_symbian_p.cpp b/src/corelib/kernel/qcore_symbian_p.cpp
index 04acfb0..57ae2af 100644
--- a/src/corelib/kernel/qcore_symbian_p.cpp
+++ b/src/corelib/kernel/qcore_symbian_p.cpp
@@ -45,6 +45,7 @@
#include "qcore_symbian_p.h"
#include <string>
#include <in_sock.h>
+#include "qdebug.h"
QT_BEGIN_NAMESPACE
@@ -115,6 +116,24 @@ public:
QS60RFsSession() {
qt_symbian_throwIfError(iFs.Connect());
qt_symbian_throwIfError(iFs.ShareProtected());
+ //BC with 4.7: create private path on system drive
+ TInt sysdrive = iFs.GetSystemDrive();
+ TInt err = iFs.CreatePrivatePath(sysdrive);
+ if (err != KErrNone && err != KErrAlreadyExists)
+ qWarning("Failed to create private path on system drive.");
+ //BC with 4.7: set working directory to same drive as application
+ TFileName pfn = RProcess().FileName();
+ TInt drive;
+ if (pfn.Length() > 0 && iFs.CharToDrive(pfn[0], drive) == KErrNone) {
+ // for system drive or rom based apps, leave the path on system drive
+ if (drive != sysdrive && drive != EDriveZ) {
+ err = iFs.CreatePrivatePath(drive);
+ if (err == KErrNone || err == KErrAlreadyExists)
+ iFs.SetSessionToPrivate(drive);
+ else
+ qWarning("Failed to create private path on application drive.");
+ }
+ }
}
~QS60RFsSession() {
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index 752bbaa..c4a9e40 100644
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -1991,12 +1991,6 @@ QString QCoreApplication::applicationDirPath()
appPath = qt_TDesC2QString(privatePath);
appPath.prepend(QLatin1Char(':')).prepend(qDriveChar);
- // Create the appPath if it doesn't exist. Non-existing appPath will cause
- // Platform Security violations later on if the app doesn't have AllFiles capability.
- err = fs.CreatePrivatePath(drive);
- if (err != KErrNone)
- qWarning("QCoreApplication::applicationDirPath: Failed to create private path.");
-
d->cachedApplicationDirPath = QFileInfo(appPath).path();
}
#else