From 407f3c54a999661fefc8913efc7ae9aba6841564 Mon Sep 17 00:00:00 2001 From: "mkaply%us.ibm.com" Date: Wed, 1 Nov 2000 20:04:59 +0000 Subject: [PATCH] #55813 r=dougt, sr/a=waterson Support for a MOZILLA_HOME dir to specify pref location --- .../src/nsAppFileLocationProvider.cpp | 2 +- xpcom/io/nsAppFileLocationProvider.cpp | 2 +- xpcom/io/nsDirectoryService.cpp | 7 +++---- xpcom/io/nsSpecialSystemDirectory.cpp | 13 +++++++++++++ xpcom/io/nsSpecialSystemDirectory.h | 1 + xpfe/bootstrap/nsAppRunner.cpp | 2 +- 6 files changed, 20 insertions(+), 7 deletions(-) diff --git a/modules/appfilelocprovider/src/nsAppFileLocationProvider.cpp b/modules/appfilelocprovider/src/nsAppFileLocationProvider.cpp index ab7ea6bf7ab4..218959c28eee 100755 --- a/modules/appfilelocprovider/src/nsAppFileLocationProvider.cpp +++ b/modules/appfilelocprovider/src/nsAppFileLocationProvider.cpp @@ -329,7 +329,7 @@ static nsresult GetDefaultUserProfileRoot(nsILocalFile **aLocalFile) #elif defined(XP_OS2) NS_WITH_SERVICE(nsIProperties, directoryService, NS_DIRECTORY_SERVICE_CONTRACTID, &rv); if (NS_FAILED(rv)) return rv; - rv = directoryService->Get(NS_OS2_DIR, NS_GET_IID(nsILocalFile), getter_AddRefs(localDir)); + rv = directoryService->Get(NS_OS2_HOME_DIR, NS_GET_IID(nsILocalFile), getter_AddRefs(localDir)); if (NS_FAILED(rv)) return rv; #elif defined(XP_PC) NS_WITH_SERVICE(nsIProperties, directoryService, NS_DIRECTORY_SERVICE_CONTRACTID, &rv); diff --git a/xpcom/io/nsAppFileLocationProvider.cpp b/xpcom/io/nsAppFileLocationProvider.cpp index ab7ea6bf7ab4..218959c28eee 100755 --- a/xpcom/io/nsAppFileLocationProvider.cpp +++ b/xpcom/io/nsAppFileLocationProvider.cpp @@ -329,7 +329,7 @@ static nsresult GetDefaultUserProfileRoot(nsILocalFile **aLocalFile) #elif defined(XP_OS2) NS_WITH_SERVICE(nsIProperties, directoryService, NS_DIRECTORY_SERVICE_CONTRACTID, &rv); if (NS_FAILED(rv)) return rv; - rv = directoryService->Get(NS_OS2_DIR, NS_GET_IID(nsILocalFile), getter_AddRefs(localDir)); + rv = directoryService->Get(NS_OS2_HOME_DIR, NS_GET_IID(nsILocalFile), getter_AddRefs(localDir)); if (NS_FAILED(rv)) return rv; #elif defined(XP_PC) NS_WITH_SERVICE(nsIProperties, directoryService, NS_DIRECTORY_SERVICE_CONTRACTID, &rv); diff --git a/xpcom/io/nsDirectoryService.cpp b/xpcom/io/nsDirectoryService.cpp index 1d2aba834d48..d9b404bd710a 100644 --- a/xpcom/io/nsDirectoryService.cpp +++ b/xpcom/io/nsDirectoryService.cpp @@ -77,7 +77,7 @@ // define home directory // For Windows platform, We are choosing Appdata folder as HOME #ifdef XP_OS2 -#define HOME_DIR NS_OS2_DIR +#define HOME_DIR NS_OS2_HOME_DIR #elif defined (XP_PC) #define HOME_DIR NS_WIN_APPDATA_DIR #elif defined (XP_MAC) @@ -907,9 +907,8 @@ nsDirectoryService::GetFile(const char *prop, PRBool *persistent, nsIFile **_ret } else if (inAtom == nsDirectoryService::sHomeDirectory) { - /* for now, set the "Home" directory to point to be the */ - /* current process directory */ - rv = GetCurrentProcessDirectory(getter_AddRefs(localFile)); + nsSpecialSystemDirectory fileSpec(nsSpecialSystemDirectory::OS2_HomeDirectory); + rv = NS_FileSpecToIFile(&fileSpec, getter_AddRefs(localFile)); } else if (inAtom == nsDirectoryService::sDesktopDirectory) { diff --git a/xpcom/io/nsSpecialSystemDirectory.cpp b/xpcom/io/nsSpecialSystemDirectory.cpp index 231a1dbbc65b..f730a1ca4b23 100644 --- a/xpcom/io/nsSpecialSystemDirectory.cpp +++ b/xpcom/io/nsSpecialSystemDirectory.cpp @@ -43,6 +43,7 @@ #include #include #include +#include "prenv.h" #elif defined(XP_UNIX) #include #include @@ -856,6 +857,18 @@ void nsSpecialSystemDirectory::operator = (SystemDirectories aSystemSystemDirect break; } + case OS2_HomeDirectory: + { + char *tPath = PR_GetEnv("MOZILLA_HOME"); + /* If MOZILLA_HOME is not set, use GetCurrentProcessDirectory */ + /* To ensure we get a long filename system */ + if (!tPath || PL_strlen(tPath) == 0) + GetCurrentProcessDirectory(*this); + else + *this = tPath; + break; + } + case OS2_DesktopDirectory: { char szPath[CCHMAXPATH + 1]; diff --git a/xpcom/io/nsSpecialSystemDirectory.h b/xpcom/io/nsSpecialSystemDirectory.h index cd489ec831df..abf432e1e87e 100644 --- a/xpcom/io/nsSpecialSystemDirectory.h +++ b/xpcom/io/nsSpecialSystemDirectory.h @@ -106,6 +106,7 @@ class NS_COM nsSpecialSystemDirectory : public nsFileSpec , OS2_SystemDirectory = 501 , OS2_OS2Directory = 502 , OS2_DesktopDirectory = 503 + , OS2_HomeDirectory = 504 }; //nsSpecialSystemDirectory(); diff --git a/xpfe/bootstrap/nsAppRunner.cpp b/xpfe/bootstrap/nsAppRunner.cpp index bcd1ccda234d..f3c42dcee219 100644 --- a/xpfe/bootstrap/nsAppRunner.cpp +++ b/xpfe/bootstrap/nsAppRunner.cpp @@ -763,7 +763,7 @@ static nsresult InitializeProfileService(nsICmdLineService *cmdLineArgs) PRBool exists = PR_FALSE; #ifdef XP_OS2 - rv = NS_GetSpecialDirectory(NS_OS2_DIR, getter_AddRefs(parentDir)); + rv = NS_GetSpecialDirectory(NS_OS2_HOME_DIR, getter_AddRefs(parentDir)); if (NS_SUCCEEDED(rv)) rv = parentDir->Exists(&exists);