Upstream-status: https://bugzilla.mozilla.org/show_bug.cgi?id=1986219 diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp index 9c94cb8808aa..dfee051b302f 100644 --- a/toolkit/xre/nsXREDirProvider.cpp +++ b/toolkit/xre/nsXREDirProvider.cpp @@ -276,11 +276,27 @@ nsresult nsXREDirProvider::GetBackgroundTasksProfilesRootDir( * * On OSX this is /Library/Application Support/Mozilla * On Linux this is /usr/{lib,lib64}/mozilla - * (for 32- and 64-bit systems respsectively) + * (for 32- and 64-bit systems respectively) + * + * The MOZILLA_SYSTEM_DIR environment variable can be used to override + * the system directory used. */ static nsresult GetSystemParentDirectory(nsIFile** aFile) { - nsresult rv; + nsresult rv = NS_ERROR_FAILURE; nsCOMPtr localDir; + + // Honor a the MOZILLA_SYSTEM_DIR environment variable first... + const char* systemParentDir = getenv("MOZILLA_SYSTEM_DIR"); + if (systemParentDir) { + rv = NS_NewNativeLocalFile(nsDependentCString(systemParentDir), + getter_AddRefs(localDir)); + } + if (NS_SUCCEEDED(rv)) { + localDir.forget(aFile); + return rv; + } + + // ... falling back to the conventional fixed location otherwise. # if defined(XP_MACOSX) rv = GetOSXFolderType(kOnSystemDisk, kApplicationSupportFolderType, getter_AddRefs(localDir));