diff options
author | Joachim Lingner <jl@openoffice.org> | 2004-05-18 07:37:33 +0000 |
---|---|---|
committer | Joachim Lingner <jl@openoffice.org> | 2004-05-18 07:37:33 +0000 |
commit | f0df8160e185acda43a2edc04ec915868fce29a6 (patch) | |
tree | b64c60a063275c721a3bf68db513c2a3bb25f362 /jvmfwk/source/fwkutil.cxx | |
parent | 7ad218fec64e01f26ea8734fa9b28c495c5b72c1 (diff) |
#i20052#
Diffstat (limited to 'jvmfwk/source/fwkutil.cxx')
-rw-r--r-- | jvmfwk/source/fwkutil.cxx | 61 |
1 files changed, 43 insertions, 18 deletions
diff --git a/jvmfwk/source/fwkutil.cxx b/jvmfwk/source/fwkutil.cxx index 587418a7c3bc..5fe8c7290579 100644 --- a/jvmfwk/source/fwkutil.cxx +++ b/jvmfwk/source/fwkutil.cxx @@ -2,9 +2,9 @@ * * $RCSfile: fwkutil.cxx,v $ * - * $Revision: 1.12 $ + * $Revision: 1.13 $ * - * last change: $Author: jl $ $Date: 2004-05-18 08:05:27 $ + * last change: $Author: jl $ $Date: 2004-05-18 08:37:33 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -405,6 +405,7 @@ rtl::OUString getBaseInstallation() rtl::OUString getVendorSettingsURL() { //get the system path to the javavendors.xml file + //First try in an office installation rtl::OUString sBaseDir = getBaseInstallation(); if (sBaseDir.getLength() != 0) { @@ -415,25 +416,49 @@ rtl::OUString getVendorSettingsURL() sSettings.appendAscii(VENDORSETTINGS); return sSettings.makeStringAndClear(); } - else + + //try next to the executable + rtl_uString* sExe = NULL; + if (osl_getExecutableFile( & sExe) != osl_Process_E_None) { - //We are not in an office, try to find the javavendors.xml next to this - //library - rtl::OUString sLib; - if (osl_getModuleURLFromAddress((void *) & getVendorSettingsURL, - & sLib.pData) == sal_True) - { - sLib = getDirFromFile(sLib); - rtl::OUStringBuffer sSettings(256); - sSettings.append(sLib); - sSettings.appendAscii("/"); - sSettings.appendAscii(VENDORSETTINGS); - return sSettings.makeStringAndClear(); - } - else - return rtl::OUString(); + OSL_ASSERT(0); + return rtl::OUString(); + } + rtl::OUString ouExe(sExe, SAL_NO_ACQUIRE); + rtl::OUString sVendor = getDirFromFile(ouExe); + rtl::OUStringBuffer sBufVendor(256); + sBufVendor.append(sVendor); + sBufVendor.appendAscii("/"); + sBufVendor.appendAscii(VENDORSETTINGS); + sVendor = sBufVendor.makeStringAndClear(); + + //check if the file exists + osl::DirectoryItem vendorItem; + osl::File::RC fileError = osl::DirectoryItem::get(sVendor, vendorItem); + if (fileError == osl::FileBase::E_None) + return sVendor; + + //try next to the jvmfwk.dll + rtl::OUString sLib; + if (osl_getModuleURLFromAddress((void *) & getVendorSettingsURL, + & sLib.pData) == sal_True) + { + sLib = getDirFromFile(sLib); + rtl::OUStringBuffer sBufVendor(256); + sBufVendor.append(sLib); + sBufVendor.appendAscii("/"); + sBufVendor.appendAscii(VENDORSETTINGS); + rtl::OUString sVendor = sBufVendor.makeStringAndClear(); + //check if the file exists + osl::DirectoryItem vendorItem; + osl::File::RC fileError = osl::DirectoryItem::get(sVendor, vendorItem); + if (fileError == osl::FileBase::E_None) + return sVendor; } + + OSL_ASSERT(0); + return rtl::OUString(); } rtl::OString getVendorSettingsPath() |