| File: | jvmfwk/plugins/sunmajor/pluginlib/util.cxx |
| Location: | line 670, column 49 |
| Description: | Called C++ object pointer is null |
| 1 | /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ | |||
| 2 | /* | |||
| 3 | * This file is part of the LibreOffice project. | |||
| 4 | * | |||
| 5 | * This Source Code Form is subject to the terms of the Mozilla Public | |||
| 6 | * License, v. 2.0. If a copy of the MPL was not distributed with this | |||
| 7 | * file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
| 8 | * | |||
| 9 | * This file incorporates work covered by the following license notice: | |||
| 10 | * | |||
| 11 | * Licensed to the Apache Software Foundation (ASF) under one or more | |||
| 12 | * contributor license agreements. See the NOTICE file distributed | |||
| 13 | * with this work for additional information regarding copyright | |||
| 14 | * ownership. The ASF licenses this file to you under the Apache | |||
| 15 | * License, Version 2.0 (the "License"); you may not use this file | |||
| 16 | * except in compliance with the License. You may obtain a copy of | |||
| 17 | * the License at http://www.apache.org/licenses/LICENSE-2.0 . | |||
| 18 | */ | |||
| 19 | ||||
| 20 | ||||
| 21 | #include "util.hxx" | |||
| 22 | ||||
| 23 | #include "osl/process.h" | |||
| 24 | #include "osl/security.hxx" | |||
| 25 | #include "osl/file.hxx" | |||
| 26 | #include "osl/module.hxx" | |||
| 27 | #include "rtl/byteseq.hxx" | |||
| 28 | #include "rtl/ustrbuf.hxx" | |||
| 29 | #include "rtl/instance.hxx" | |||
| 30 | #include "salhelper/linkhelper.hxx" | |||
| 31 | #include "salhelper/thread.hxx" | |||
| 32 | #include "boost/scoped_array.hpp" | |||
| 33 | #include "com/sun/star/uno/Sequence.hxx" | |||
| 34 | #include <utility> | |||
| 35 | #include <algorithm> | |||
| 36 | #include <map> | |||
| 37 | ||||
| 38 | #if defined WNT | |||
| 39 | #if defined _MSC_VER | |||
| 40 | #pragma warning(push, 1) | |||
| 41 | #endif | |||
| 42 | #include <windows.h> | |||
| 43 | #if defined _MSC_VER | |||
| 44 | #pragma warning(pop) | |||
| 45 | #endif | |||
| 46 | #endif | |||
| 47 | #include <string.h> | |||
| 48 | ||||
| 49 | #include "sunjre.hxx" | |||
| 50 | #include "vendorlist.hxx" | |||
| 51 | #include "diagnostics.h" | |||
| 52 | ||||
| 53 | using namespace osl; | |||
| 54 | using namespace std; | |||
| 55 | ||||
| 56 | using ::rtl::OUString; | |||
| 57 | using ::rtl::Reference; | |||
| 58 | using ::rtl::OString; | |||
| 59 | using ::rtl::OUStringBuffer; | |||
| 60 | using ::rtl::OUStringToOString; | |||
| 61 | ||||
| 62 | #define OUSTR(x)::rtl::OUString( (&(x)[0]), ((sal_Int32)((sizeof (x) / sizeof ((x)[0]))-1)), (((rtl_TextEncoding) 11)) ) ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(x)(&(x)[0]), ((sal_Int32)((sizeof (x) / sizeof ((x)[0]))-1) ), (((rtl_TextEncoding) 11)) ) | |||
| 63 | #ifdef WNT | |||
| 64 | #define HKEY_SUN_JRE L"Software\\JavaSoft\\Java Runtime Environment" | |||
| 65 | #define HKEY_SUN_SDK L"Software\\JavaSoft\\Java Development Kit" | |||
| 66 | #endif | |||
| 67 | ||||
| 68 | #ifdef UNX1 | |||
| 69 | namespace { | |||
| 70 | char const *g_arJavaNames[] = { | |||
| 71 | "", | |||
| 72 | "j2re", | |||
| 73 | "j2se", | |||
| 74 | "j2sdk", | |||
| 75 | "jdk", | |||
| 76 | "jre", | |||
| 77 | "java", | |||
| 78 | "Home", | |||
| 79 | "IBMJava2-ppc-142" | |||
| 80 | }; | |||
| 81 | /* These are directory names which could contain multiple java installations. | |||
| 82 | */ | |||
| 83 | char const *g_arCollectDirs[] = { | |||
| 84 | "", | |||
| 85 | #ifndef JVM_ONE_PATH_CHECK | |||
| 86 | "j2re/", | |||
| 87 | "j2se/", | |||
| 88 | "j2sdk/", | |||
| 89 | "jdk/", | |||
| 90 | "jre/", | |||
| 91 | "java/", | |||
| 92 | #endif | |||
| 93 | "jvm/" | |||
| 94 | }; | |||
| 95 | ||||
| 96 | /* These are directories in which a java installation is | |||
| 97 | looked for. | |||
| 98 | */ | |||
| 99 | char const *g_arSearchPaths[] = { | |||
| 100 | #ifdef MACOSX | |||
| 101 | "", | |||
| 102 | "System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/" | |||
| 103 | #else | |||
| 104 | #ifndef JVM_ONE_PATH_CHECK | |||
| 105 | "", | |||
| 106 | "usr/", | |||
| 107 | "usr/local/", | |||
| 108 | "usr/local/IBMJava2-ppc-142", | |||
| 109 | "usr/local/j2sdk1.3.1", | |||
| 110 | #ifdef X86_64 | |||
| 111 | "usr/lib64/", | |||
| 112 | #endif | |||
| 113 | "usr/lib/", | |||
| 114 | "usr/bin/" | |||
| 115 | #else | |||
| 116 | JVM_ONE_PATH_CHECK | |||
| 117 | #endif | |||
| 118 | #endif | |||
| 119 | }; | |||
| 120 | } | |||
| 121 | #endif // UNX | |||
| 122 | ||||
| 123 | namespace jfw_plugin | |||
| 124 | { | |||
| 125 | extern VendorSupportMapEntry gVendorMap[]; | |||
| 126 | ||||
| 127 | bool getSDKInfoFromRegistry(vector<OUString> & vecHome); | |||
| 128 | bool getJREInfoFromRegistry(vector<OUString>& vecJavaHome); | |||
| 129 | bool decodeOutput(const rtl::OString& s, rtl::OUString* out); | |||
| 130 | ||||
| 131 | ||||
| 132 | ||||
| 133 | namespace | |||
| 134 | { | |||
| 135 | rtl::OUString getLibraryLocation() | |||
| 136 | { | |||
| 137 | rtl::OUString libraryFileUrl; | |||
| 138 | OSL_VERIFY(osl::Module::getUrlFromAddress((void *)(sal_IntPtr)getLibraryLocation, libraryFileUrl))do { if (!(osl::Module::getUrlFromAddress((void *)(sal_IntPtr )getLibraryLocation, libraryFileUrl))) do { if (true && (!(0))) { sal_detail_logFormat((SAL_DETAIL_LOG_LEVEL_WARN), ( "legacy.osl"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "138" ": "), "OSL_ASSERT: %s", "0"); } } while (false); } while (0); | |||
| 139 | return getDirFromFile(libraryFileUrl); | |||
| 140 | } | |||
| 141 | ||||
| 142 | struct InitBootstrap | |||
| 143 | { | |||
| 144 | rtl::Bootstrap * operator()(const OUString& sIni) | |||
| 145 | { | |||
| 146 | static rtl::Bootstrap aInstance(sIni); | |||
| 147 | return & aInstance; | |||
| 148 | ||||
| 149 | } | |||
| 150 | }; | |||
| 151 | ||||
| 152 | struct InitBootstrapData | |||
| 153 | { | |||
| 154 | OUString const & operator()() | |||
| 155 | { | |||
| 156 | static OUString sIni; | |||
| 157 | rtl::OUStringBuffer buf( 255); | |||
| 158 | buf.append( getLibraryLocation()); | |||
| 159 | buf.appendAscii( SAL_CONFIGFILE("/sunjavaplugin")"/sunjavaplugin" "rc" ); | |||
| 160 | sIni = buf.makeStringAndClear(); | |||
| 161 | JFW_TRACE2(OUSTR("[Java framework] sunjavaplugin: "do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Using configuration file \n")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Using configuration file \n") / sizeof (("[Java framework] sunjavaplugin: " "Using configuration file \n")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sIni) == 1) { ::sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "162" ": "), ::sal::detail::unwrapStream( ::sal::detail:: StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Using configuration file \n")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Using configuration file \n") / sizeof (("[Java framework] sunjavaplugin: " "Using configuration file \n")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sIni)); } else { ::std::ostringstream sal_detail_stream ; sal_detail_stream << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Using configuration file \n")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Using configuration file \n") / sizeof (("[Java framework] sunjavaplugin: " "Using configuration file \n")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sIni; ::sal::detail::log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "162" ": "), sal_detail_stream); } } } while (false) | |||
| 162 | "Using configuration file \n") + sIni)do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Using configuration file \n")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Using configuration file \n") / sizeof (("[Java framework] sunjavaplugin: " "Using configuration file \n")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sIni) == 1) { ::sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "162" ": "), ::sal::detail::unwrapStream( ::sal::detail:: StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Using configuration file \n")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Using configuration file \n") / sizeof (("[Java framework] sunjavaplugin: " "Using configuration file \n")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sIni)); } else { ::std::ostringstream sal_detail_stream ; sal_detail_stream << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Using configuration file \n")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Using configuration file \n") / sizeof (("[Java framework] sunjavaplugin: " "Using configuration file \n")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sIni; ::sal::detail::log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "162" ": "), sal_detail_stream); } } } while (false); | |||
| 163 | return sIni; | |||
| 164 | } | |||
| 165 | }; | |||
| 166 | } | |||
| 167 | ||||
| 168 | rtl::Bootstrap * getBootstrap() | |||
| 169 | { | |||
| 170 | return rtl_Instance< rtl::Bootstrap, InitBootstrap, | |||
| 171 | ::osl::MutexGuard, ::osl::GetGlobalMutex, | |||
| 172 | OUString, InitBootstrapData >::create( | |||
| 173 | InitBootstrap(), ::osl::GetGlobalMutex(), InitBootstrapData()); | |||
| 174 | } | |||
| 175 | ||||
| 176 | ||||
| 177 | ||||
| 178 | ||||
| 179 | class FileHandleGuard | |||
| 180 | { | |||
| 181 | public: | |||
| 182 | inline FileHandleGuard(oslFileHandle & rHandle) SAL_THROW(()): | |||
| 183 | m_rHandle(rHandle) {} | |||
| 184 | ||||
| 185 | inline ~FileHandleGuard() SAL_THROW(()); | |||
| 186 | ||||
| 187 | inline oslFileHandle & getHandle() SAL_THROW(()) { return m_rHandle; } | |||
| 188 | ||||
| 189 | private: | |||
| 190 | oslFileHandle & m_rHandle; | |||
| 191 | ||||
| 192 | FileHandleGuard(FileHandleGuard &); // not implemented | |||
| 193 | void operator =(FileHandleGuard); // not implemented | |||
| 194 | }; | |||
| 195 | ||||
| 196 | inline FileHandleGuard::~FileHandleGuard() SAL_THROW(()) | |||
| 197 | { | |||
| 198 | if (m_rHandle != 0) | |||
| 199 | { | |||
| 200 | if (osl_closeFile(m_rHandle) != osl_File_E_None) | |||
| 201 | { | |||
| 202 | OSL_FAIL("unexpected situation")do { if (true && (((sal_Bool)1))) { sal_detail_logFormat ((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "202" ": "), "%s", "unexpected situation"); } } while (false ); | |||
| 203 | } | |||
| 204 | } | |||
| 205 | } | |||
| 206 | ||||
| 207 | ||||
| 208 | class FileHandleReader | |||
| 209 | { | |||
| 210 | public: | |||
| 211 | enum Result | |||
| 212 | { | |||
| 213 | RESULT_OK, | |||
| 214 | RESULT_EOF, | |||
| 215 | RESULT_ERROR | |||
| 216 | }; | |||
| 217 | ||||
| 218 | inline FileHandleReader(oslFileHandle & rHandle) SAL_THROW(()): | |||
| 219 | m_aGuard(rHandle), m_nSize(0), m_nIndex(0), m_bLf(false) {} | |||
| 220 | ||||
| 221 | Result readLine(rtl::OString * pLine) SAL_THROW(()); | |||
| 222 | ||||
| 223 | private: | |||
| 224 | enum { BUFFER_SIZE = 1024 }; | |||
| 225 | ||||
| 226 | sal_Char m_aBuffer[BUFFER_SIZE]; | |||
| 227 | FileHandleGuard m_aGuard; | |||
| 228 | int m_nSize; | |||
| 229 | int m_nIndex; | |||
| 230 | bool m_bLf; | |||
| 231 | }; | |||
| 232 | ||||
| 233 | FileHandleReader::Result | |||
| 234 | FileHandleReader::readLine(rtl::OString * pLine) | |||
| 235 | SAL_THROW(()) | |||
| 236 | { | |||
| 237 | OSL_ENSURE(pLine, "specification violation")do { if (true && (!(pLine))) { sal_detail_logFormat(( SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "237" ": "), "%s", "specification violation"); } } while (false); | |||
| 238 | ||||
| 239 | for (bool bEof = true;; bEof = false) | |||
| 240 | { | |||
| 241 | if (m_nIndex == m_nSize) | |||
| 242 | { | |||
| 243 | sal_uInt64 nRead = 0; | |||
| 244 | switch (osl_readFile( | |||
| 245 | m_aGuard.getHandle(), m_aBuffer, sizeof(m_aBuffer), &nRead)) | |||
| 246 | { | |||
| 247 | case osl_File_E_PIPE: //HACK! for windows | |||
| 248 | nRead = 0; | |||
| 249 | case osl_File_E_None: | |||
| 250 | if (nRead == 0) | |||
| 251 | { | |||
| 252 | m_bLf = false; | |||
| 253 | return bEof ? RESULT_EOF : RESULT_OK; | |||
| 254 | } | |||
| 255 | m_nIndex = 0; | |||
| 256 | m_nSize = static_cast< int >(nRead); | |||
| 257 | break; | |||
| 258 | case osl_File_E_INTR: | |||
| 259 | continue; | |||
| 260 | ||||
| 261 | default: | |||
| 262 | return RESULT_ERROR; | |||
| 263 | } | |||
| 264 | } | |||
| 265 | ||||
| 266 | if (m_bLf && m_aBuffer[m_nIndex] == 0x0A) | |||
| 267 | ++m_nIndex; | |||
| 268 | m_bLf = false; | |||
| 269 | ||||
| 270 | int nStart = m_nIndex; | |||
| 271 | while (m_nIndex != m_nSize) | |||
| 272 | switch (m_aBuffer[m_nIndex++]) | |||
| 273 | { | |||
| 274 | case 0x0D: | |||
| 275 | m_bLf = true; | |||
| 276 | case 0x0A: | |||
| 277 | *pLine += rtl::OString(m_aBuffer + nStart, | |||
| 278 | m_nIndex - 1 - nStart); | |||
| 279 | //TODO! check for overflow, and not very efficient | |||
| 280 | return RESULT_OK; | |||
| 281 | } | |||
| 282 | ||||
| 283 | *pLine += rtl::OString(m_aBuffer + nStart, m_nIndex - nStart); | |||
| 284 | //TODO! check for overflow, and not very efficient | |||
| 285 | } | |||
| 286 | } | |||
| 287 | ||||
| 288 | class AsynchReader: public salhelper::Thread | |||
| 289 | { | |||
| 290 | size_t m_nDataSize; | |||
| 291 | boost::scoped_array<sal_Char> m_arData; | |||
| 292 | ||||
| 293 | bool m_bError; | |||
| 294 | bool m_bDone; | |||
| 295 | FileHandleGuard m_aGuard; | |||
| 296 | ||||
| 297 | virtual ~AsynchReader() {} | |||
| 298 | ||||
| 299 | void execute(); | |||
| 300 | public: | |||
| 301 | ||||
| 302 | AsynchReader(oslFileHandle & rHandle); | |||
| 303 | ||||
| 304 | /** only call this function after this thread has finished. | |||
| 305 | ||||
| 306 | That is, call join on this instance and then call getData. | |||
| 307 | ||||
| 308 | */ | |||
| 309 | OString getData(); | |||
| 310 | }; | |||
| 311 | ||||
| 312 | AsynchReader::AsynchReader(oslFileHandle & rHandle): | |||
| 313 | Thread("jvmfwkAsyncReader"), m_nDataSize(0), m_bError(false), | |||
| 314 | m_bDone(false), m_aGuard(rHandle) | |||
| 315 | { | |||
| 316 | } | |||
| 317 | ||||
| 318 | OString AsynchReader::getData() | |||
| 319 | { | |||
| 320 | return OString(m_arData.get(), m_nDataSize); | |||
| 321 | } | |||
| 322 | ||||
| 323 | void AsynchReader::execute() | |||
| 324 | { | |||
| 325 | const sal_uInt64 BUFFER_SIZE = 4096; | |||
| 326 | sal_Char aBuffer[BUFFER_SIZE]; | |||
| 327 | while (true) | |||
| 328 | { | |||
| 329 | sal_uInt64 nRead; | |||
| 330 | //the function blocks until something could be read or the pipe closed. | |||
| 331 | switch (osl_readFile( | |||
| 332 | m_aGuard.getHandle(), aBuffer, BUFFER_SIZE, &nRead)) | |||
| 333 | { | |||
| 334 | case osl_File_E_PIPE: //HACK! for windows | |||
| 335 | nRead = 0; | |||
| 336 | case osl_File_E_None: | |||
| 337 | break; | |||
| 338 | default: | |||
| 339 | m_bError = true; | |||
| 340 | return; | |||
| 341 | } | |||
| 342 | ||||
| 343 | if (nRead == 0) | |||
| 344 | { | |||
| 345 | m_bDone = true; | |||
| 346 | break; | |||
| 347 | } | |||
| 348 | else if (nRead <= BUFFER_SIZE) | |||
| 349 | { | |||
| 350 | //Save the data we have in m_arData into a temporary array | |||
| 351 | boost::scoped_array<sal_Char> arTmp( new sal_Char[m_nDataSize]); | |||
| 352 | memcpy(arTmp.get(), m_arData.get(), m_nDataSize); | |||
| 353 | //Enlarge m_arData to hold the newly read data | |||
| 354 | m_arData.reset(new sal_Char[(size_t)(m_nDataSize + nRead)]); | |||
| 355 | //Copy back the data that was already in m_arData | |||
| 356 | memcpy(m_arData.get(), arTmp.get(), m_nDataSize); | |||
| 357 | //Add the newly read data to m_arData | |||
| 358 | memcpy(m_arData.get() + m_nDataSize, aBuffer, (size_t) nRead); | |||
| 359 | m_nDataSize += (size_t) nRead; | |||
| 360 | } | |||
| 361 | } | |||
| 362 | } | |||
| 363 | ||||
| 364 | ||||
| 365 | bool getJavaProps(const OUString & exePath, | |||
| 366 | #ifdef JVM_ONE_PATH_CHECK | |||
| 367 | const OUString & homePath, | |||
| 368 | #endif | |||
| 369 | std::vector<std::pair<rtl::OUString, rtl::OUString> >& props, | |||
| 370 | bool * bProcessRun) | |||
| 371 | { | |||
| 372 | bool ret = false; | |||
| 373 | ||||
| 374 | OSL_ASSERT(!exePath.isEmpty())do { if (true && (!(!exePath.isEmpty()))) { sal_detail_logFormat ((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "374" ": "), "OSL_ASSERT: %s", "!exePath.isEmpty()"); } } while (false); | |||
| 375 | OUString usStartDir; | |||
| 376 | //We need to set the CLASSPATH in case the office is started from | |||
| 377 | //a different directory. The JREProperties.class is expected to reside | |||
| 378 | //next to the plugin. | |||
| 379 | rtl::OUString sThisLib; | |||
| 380 | if (osl_getModuleURLFromAddress((void *) (sal_IntPtr)& getJavaProps, | |||
| 381 | & sThisLib.pData) == sal_False((sal_Bool)0)) | |||
| 382 | return false; | |||
| 383 | sThisLib = getDirFromFile(sThisLib); | |||
| 384 | OUString sClassPath; | |||
| 385 | if (osl_getSystemPathFromFileURL(sThisLib.pData, & sClassPath.pData) | |||
| 386 | != osl_File_E_None) | |||
| 387 | return false; | |||
| 388 | ||||
| 389 | //check if we shall examine a Java for accessibility support | |||
| 390 | //If the bootstrap variable is "1" then we pass the argument | |||
| 391 | //"noaccessibility" to JREProperties.class. This will prevent | |||
| 392 | //that it calls java.awt.Toolkit.getDefaultToolkit(); | |||
| 393 | OUString sValue; | |||
| 394 | getBootstrap()->getFrom(OUSTR("JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY")::rtl::OUString( (&("JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY" )[0]), ((sal_Int32)((sizeof ("JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY" ) / sizeof (("JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY")[0]))-1) ), (((rtl_TextEncoding) 11)) ), sValue); | |||
| 395 | ||||
| 396 | //prepare the arguments | |||
| 397 | sal_Int32 cArgs = 3; | |||
| 398 | OUString arg1 = OUString(RTL_CONSTASCII_USTRINGPARAM("-classpath")(&("-classpath")[0]), ((sal_Int32)((sizeof ("-classpath") / sizeof (("-classpath")[0]))-1)), (((rtl_TextEncoding) 11)));// + sClassPath; | |||
| 399 | OUString arg2 = sClassPath; | |||
| 400 | OUString arg3(RTL_CONSTASCII_USTRINGPARAM("JREProperties")(&("JREProperties")[0]), ((sal_Int32)((sizeof ("JREProperties" ) / sizeof (("JREProperties")[0]))-1)), (((rtl_TextEncoding) 11 ))); | |||
| 401 | OUString arg4 = OUSTR("noaccessibility")::rtl::OUString( (&("noaccessibility")[0]), ((sal_Int32)( (sizeof ("noaccessibility") / sizeof (("noaccessibility")[0]) )-1)), (((rtl_TextEncoding) 11)) ); | |||
| 402 | rtl_uString *args[4] = {arg1.pData, arg2.pData, arg3.pData}; | |||
| 403 | ||||
| 404 | // Only add the fourth param if the bootstrap parameter is set. | |||
| 405 | if (sValue.equals(OUString::valueOf((sal_Int32) 1))) | |||
| 406 | { | |||
| 407 | args[3] = arg4.pData; | |||
| 408 | cArgs = 4; | |||
| 409 | } | |||
| 410 | ||||
| 411 | oslProcess javaProcess= 0; | |||
| 412 | oslFileHandle fileOut= 0; | |||
| 413 | oslFileHandle fileErr= 0; | |||
| 414 | ||||
| 415 | FileHandleReader stdoutReader(fileOut); | |||
| 416 | rtl::Reference< AsynchReader > stderrReader(new AsynchReader(fileErr)); | |||
| 417 | ||||
| 418 | JFW_TRACE2(OUSTR("\n[Java framework] Executing: ") + exePath + OUSTR(".\n"))do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << ::rtl::OUString( (&("\n[Java framework] Executing: " )[0]), ((sal_Int32)((sizeof ("\n[Java framework] Executing: " ) / sizeof (("\n[Java framework] Executing: ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + exePath + ::rtl::OUString( (&(".\n")[0]), ((sal_Int32 )((sizeof (".\n") / sizeof ((".\n")[0]))-1)), (((rtl_TextEncoding ) 11)) )) == 1) { ::sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "418" ": "), ::sal::detail::unwrapStream( ::sal::detail:: StreamStart() << ::rtl::OUString( (&("\n[Java framework] Executing: " )[0]), ((sal_Int32)((sizeof ("\n[Java framework] Executing: " ) / sizeof (("\n[Java framework] Executing: ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + exePath + ::rtl::OUString( (&(".\n")[0]), ((sal_Int32 )((sizeof (".\n") / sizeof ((".\n")[0]))-1)), (((rtl_TextEncoding ) 11)) ))); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << ::rtl::OUString( (&("\n[Java framework] Executing: " )[0]), ((sal_Int32)((sizeof ("\n[Java framework] Executing: " ) / sizeof (("\n[Java framework] Executing: ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + exePath + ::rtl::OUString( (&(".\n")[0]), ((sal_Int32 )((sizeof (".\n") / sizeof ((".\n")[0]))-1)), (((rtl_TextEncoding ) 11)) ); ::sal::detail::log( (::SAL_DETAIL_LOG_LEVEL_INFO), ( "jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "418" ": "), sal_detail_stream); } } } while (false); | |||
| 419 | oslProcessError procErr = | |||
| 420 | osl_executeProcess_WithRedirectedIO( exePath.pData,//usExe.pData, | |||
| 421 | args, | |||
| 422 | cArgs, //sal_uInt32 nArguments, | |||
| 423 | osl_Process_HIDDEN0x0010, //oslProcessOption Options, | |||
| 424 | NULL__null, //oslSecurity Security, | |||
| 425 | usStartDir.pData,//usStartDir.pData,//usWorkDir.pData, //rtl_uString *strWorkDir, | |||
| 426 | NULL__null, //rtl_uString *strEnvironment[], | |||
| 427 | 0, // sal_uInt32 nEnvironmentVars, | |||
| 428 | &javaProcess, //oslProcess *pProcess, | |||
| 429 | NULL__null,//oslFileHandle *pChildInputWrite, | |||
| 430 | &fileOut,//oslFileHandle *pChildOutputRead, | |||
| 431 | &fileErr);//oslFileHandle *pChildErrorRead); | |||
| 432 | ||||
| 433 | if( procErr != osl_Process_E_None) | |||
| 434 | { | |||
| 435 | JFW_TRACE2("[Java framework] Execution failed. \n")do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << "[Java framework] Execution failed. \n" ) == 1) { ::sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2" ), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "435" ": "), ::sal::detail::unwrapStream( ::sal::detail:: StreamStart() << "[Java framework] Execution failed. \n" )); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << "[Java framework] Execution failed. \n"; ::sal::detail ::log( (::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "435" ": "), sal_detail_stream); } } } while (false); | |||
| 436 | *bProcessRun = false; | |||
| 437 | return ret; | |||
| 438 | } | |||
| 439 | else | |||
| 440 | { | |||
| 441 | JFW_TRACE2("[Java framework] Java executed successfully.\n")do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << "[Java framework] Java executed successfully.\n" ) == 1) { ::sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2" ), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "441" ": "), ::sal::detail::unwrapStream( ::sal::detail:: StreamStart() << "[Java framework] Java executed successfully.\n" )); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << "[Java framework] Java executed successfully.\n"; :: sal::detail::log( (::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2" ), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "441" ": "), sal_detail_stream); } } } while (false); | |||
| 442 | *bProcessRun = true; | |||
| 443 | } | |||
| 444 | ||||
| 445 | //Start asynchronous reading (different thread) of error stream | |||
| 446 | stderrReader->launch(); | |||
| 447 | ||||
| 448 | //Use this thread to read output stream | |||
| 449 | FileHandleReader::Result rs = FileHandleReader::RESULT_OK; | |||
| 450 | while (1) | |||
| 451 | { | |||
| 452 | OString aLine; | |||
| 453 | rs = stdoutReader.readLine( & aLine); | |||
| 454 | if (rs != FileHandleReader::RESULT_OK) | |||
| 455 | break; | |||
| 456 | OUString sLine; | |||
| 457 | if (!decodeOutput(aLine, &sLine)) | |||
| 458 | continue; | |||
| 459 | JFW_TRACE2("[Java framework]:\" " << sLine << " \".\n")do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << "[Java framework]:\" " << sLine << " \".\n") == 1) { ::sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "459" ": "), ::sal::detail::unwrapStream( ::sal::detail:: StreamStart() << "[Java framework]:\" " << sLine << " \".\n")); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << "[Java framework]:\" " << sLine << " \".\n"; ::sal::detail::log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "459" ": "), sal_detail_stream); } } } while (false); | |||
| 460 | sLine = sLine.trim(); | |||
| 461 | if (sLine.isEmpty()) | |||
| 462 | continue; | |||
| 463 | //The JREProperties class writes key value pairs, separated by '=' | |||
| 464 | sal_Int32 index = sLine.indexOf('=', 0); | |||
| 465 | OSL_ASSERT(index != -1)do { if (true && (!(index != -1))) { sal_detail_logFormat ((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "465" ": "), "OSL_ASSERT: %s", "index != -1"); } } while (false); | |||
| 466 | OUString sKey = sLine.copy(0, index); | |||
| 467 | OUString sVal = sLine.copy(index + 1); | |||
| 468 | ||||
| 469 | #ifdef JVM_ONE_PATH_CHECK | |||
| 470 | //replace absolute path by linux distro link | |||
| 471 | OUString sHomeProperty(RTL_CONSTASCII_USTRINGPARAM("java.home")(&("java.home")[0]), ((sal_Int32)((sizeof ("java.home") / sizeof (("java.home")[0]))-1)), (((rtl_TextEncoding) 11))); | |||
| 472 | if(sHomeProperty.equals(sKey)) | |||
| 473 | { | |||
| 474 | sVal = homePath + OUString::createFromAscii("/jre"); | |||
| 475 | } | |||
| 476 | #endif | |||
| 477 | ||||
| 478 | props.push_back(std::make_pair(sKey, sVal)); | |||
| 479 | } | |||
| 480 | ||||
| 481 | if (rs != FileHandleReader::RESULT_ERROR && !props.empty()) | |||
| 482 | ret = true; | |||
| 483 | ||||
| 484 | //process error stream data | |||
| 485 | stderrReader->join(); | |||
| 486 | JFW_TRACE2("[Java framework] Java wrote to stderr:\" "do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << "[Java framework] Java wrote to stderr:\" " << stderrReader->getData().getStr() << " \".\n" ) == 1) { ::sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2" ), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "487" ": "), ::sal::detail::unwrapStream( ::sal::detail:: StreamStart() << "[Java framework] Java wrote to stderr:\" " << stderrReader->getData().getStr() << " \".\n" )); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << "[Java framework] Java wrote to stderr:\" " << stderrReader->getData().getStr() << " \".\n"; ::sal ::detail::log( (::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "487" ": "), sal_detail_stream); } } } while (false) | |||
| 487 | << stderrReader->getData().getStr() << " \".\n")do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << "[Java framework] Java wrote to stderr:\" " << stderrReader->getData().getStr() << " \".\n" ) == 1) { ::sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2" ), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "487" ": "), ::sal::detail::unwrapStream( ::sal::detail:: StreamStart() << "[Java framework] Java wrote to stderr:\" " << stderrReader->getData().getStr() << " \".\n" )); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << "[Java framework] Java wrote to stderr:\" " << stderrReader->getData().getStr() << " \".\n"; ::sal ::detail::log( (::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "487" ": "), sal_detail_stream); } } } while (false); | |||
| 488 | ||||
| 489 | TimeValue waitMax= {5 ,0}; | |||
| 490 | procErr = osl_joinProcessWithTimeout(javaProcess, &waitMax); | |||
| 491 | OSL_ASSERT(procErr == osl_Process_E_None)do { if (true && (!(procErr == osl_Process_E_None))) { sal_detail_logFormat((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl" ), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "491" ": "), "OSL_ASSERT: %s", "procErr == osl_Process_E_None" ); } } while (false); | |||
| 492 | osl_freeProcessHandle(javaProcess); | |||
| 493 | return ret; | |||
| 494 | } | |||
| 495 | ||||
| 496 | /* converts the properties printed by JREProperties.class into | |||
| 497 | readable strings. The strings are encoded as integer values separated | |||
| 498 | by spaces. | |||
| 499 | */ | |||
| 500 | bool decodeOutput(const rtl::OString& s, rtl::OUString* out) | |||
| 501 | { | |||
| 502 | OSL_ASSERT(out != 0)do { if (true && (!(out != 0))) { sal_detail_logFormat ((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "502" ": "), "OSL_ASSERT: %s", "out != 0"); } } while (false ); | |||
| 503 | OUStringBuffer buff(512); | |||
| 504 | sal_Int32 nIndex = 0; | |||
| 505 | do | |||
| 506 | { | |||
| 507 | OString aToken = s.getToken( 0, ' ', nIndex ); | |||
| 508 | if (!aToken.isEmpty()) | |||
| 509 | { | |||
| 510 | for (sal_Int32 i = 0; i < aToken.getLength(); ++i) | |||
| 511 | { | |||
| 512 | if (aToken[i] < '0' || aToken[i] > '9') | |||
| 513 | return false; | |||
| 514 | } | |||
| 515 | sal_Unicode value = (sal_Unicode)(aToken.toInt32()); | |||
| 516 | buff.append(value); | |||
| 517 | } | |||
| 518 | } while (nIndex >= 0); | |||
| 519 | ||||
| 520 | *out = buff.makeStringAndClear(); | |||
| 521 | return true; | |||
| 522 | } | |||
| 523 | ||||
| 524 | ||||
| 525 | #if defined WNT | |||
| 526 | void createJavaInfoFromWinReg(std::vector<rtl::Reference<VendorBase> > & vecInfos) | |||
| 527 | { | |||
| 528 | // Get Java s from registry | |||
| 529 | std::vector<OUString> vecJavaHome; | |||
| 530 | if(getSDKInfoFromRegistry(vecJavaHome)) | |||
| 531 | { | |||
| 532 | // create impl objects | |||
| 533 | typedef std::vector<OUString>::iterator ItHome; | |||
| 534 | for(ItHome it_home= vecJavaHome.begin(); it_home != vecJavaHome.end(); | |||
| 535 | it_home++) | |||
| 536 | { | |||
| 537 | getJREInfoByPath(*it_home, vecInfos); | |||
| 538 | } | |||
| 539 | } | |||
| 540 | ||||
| 541 | vecJavaHome.clear(); | |||
| 542 | if(getJREInfoFromRegistry(vecJavaHome)) | |||
| 543 | { | |||
| 544 | typedef std::vector<OUString>::iterator ItHome; | |||
| 545 | for(ItHome it_home= vecJavaHome.begin(); it_home != vecJavaHome.end(); | |||
| 546 | it_home++) | |||
| 547 | { | |||
| 548 | getJREInfoByPath(*it_home, vecInfos); | |||
| 549 | } | |||
| 550 | } | |||
| 551 | } | |||
| 552 | ||||
| 553 | ||||
| 554 | bool getJavaInfoFromRegistry(const wchar_t* szRegKey, | |||
| 555 | vector<OUString>& vecJavaHome) | |||
| 556 | { | |||
| 557 | HKEY hRoot; | |||
| 558 | if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, szRegKey, 0, KEY_ENUMERATE_SUB_KEYS, &hRoot) | |||
| 559 | == ERROR_SUCCESS) | |||
| 560 | { | |||
| 561 | DWORD dwIndex = 0; | |||
| 562 | const DWORD BUFFSIZE = 1024; | |||
| 563 | wchar_t bufVersion[BUFFSIZE]; | |||
| 564 | DWORD nNameLen = BUFFSIZE; | |||
| 565 | FILETIME fileTime; | |||
| 566 | nNameLen = sizeof(bufVersion); | |||
| 567 | ||||
| 568 | // Iterate over all subkeys of HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment | |||
| 569 | while (RegEnumKeyExW(hRoot, dwIndex, bufVersion, &nNameLen, NULL__null, NULL__null, NULL__null, &fileTime) != ERROR_NO_MORE_ITEMS) | |||
| 570 | { | |||
| 571 | HKEY hKey; | |||
| 572 | // Open a Java Runtime Environment sub key, e.g. "1.4.0" | |||
| 573 | if (RegOpenKeyExW(hRoot, bufVersion, 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) | |||
| 574 | { | |||
| 575 | DWORD dwType; | |||
| 576 | DWORD dwTmpPathLen= 0; | |||
| 577 | // Get the path to the JavaHome every JRE entry | |||
| 578 | // Find out how long the string for JavaHome is and allocate memory to hold the path | |||
| 579 | if( RegQueryValueExW(hKey, L"JavaHome", 0, &dwType, NULL__null, &dwTmpPathLen)== ERROR_SUCCESS) | |||
| 580 | { | |||
| 581 | char* szTmpPath= (char *) malloc( dwTmpPathLen); | |||
| 582 | // Get the path for the runtime lib | |||
| 583 | if(RegQueryValueExW(hKey, L"JavaHome", 0, &dwType, (unsigned char*) szTmpPath, &dwTmpPathLen) == ERROR_SUCCESS) | |||
| 584 | { | |||
| 585 | // There can be several version entries refering with the same JavaHome,e.g 1.4 and 1.4.1 | |||
| 586 | OUString usHome((sal_Unicode*) szTmpPath); | |||
| 587 | // check if there is already an entry with the same JavaHomeruntime lib | |||
| 588 | // if so, we use the one with the more accurate version | |||
| 589 | bool bAppend= true; | |||
| 590 | OUString usHomeUrl; | |||
| 591 | if (osl_getFileURLFromSystemPath(usHome.pData, & usHomeUrl.pData) == | |||
| 592 | osl_File_E_None) | |||
| 593 | { | |||
| 594 | //iterate over the vector with java home strings | |||
| 595 | typedef vector<OUString>::iterator ItHome; | |||
| 596 | for(ItHome itHome= vecJavaHome.begin(); | |||
| 597 | itHome != vecJavaHome.end(); itHome++) | |||
| 598 | { | |||
| 599 | if(usHomeUrl.equals(*itHome)) | |||
| 600 | { | |||
| 601 | bAppend= false; | |||
| 602 | break; | |||
| 603 | } | |||
| 604 | } | |||
| 605 | // Save the home dir | |||
| 606 | if(bAppend) | |||
| 607 | { | |||
| 608 | vecJavaHome.push_back(usHomeUrl); | |||
| 609 | } | |||
| 610 | } | |||
| 611 | } | |||
| 612 | free( szTmpPath); | |||
| 613 | RegCloseKey(hKey); | |||
| 614 | } | |||
| 615 | } | |||
| 616 | dwIndex ++; | |||
| 617 | nNameLen = BUFFSIZE; | |||
| 618 | } | |||
| 619 | RegCloseKey(hRoot); | |||
| 620 | } | |||
| 621 | return true; | |||
| 622 | } | |||
| 623 | ||||
| 624 | ||||
| 625 | ||||
| 626 | bool getSDKInfoFromRegistry(vector<OUString> & vecHome) | |||
| 627 | { | |||
| 628 | return getJavaInfoFromRegistry(HKEY_SUN_SDK, vecHome); | |||
| 629 | } | |||
| 630 | ||||
| 631 | bool getJREInfoFromRegistry(vector<OUString>& vecJavaHome) | |||
| 632 | { | |||
| 633 | return getJavaInfoFromRegistry(HKEY_SUN_JRE, vecJavaHome); | |||
| 634 | } | |||
| 635 | ||||
| 636 | #endif // WNT | |||
| 637 | ||||
| 638 | void bubbleSortVersion(vector<rtl::Reference<VendorBase> >& vec) | |||
| 639 | { | |||
| 640 | if(vec.empty()) | |||
| 641 | return; | |||
| 642 | int size= vec.size() - 1; | |||
| 643 | int cIter= 0; | |||
| 644 | // sort for version | |||
| 645 | for(int i= 0; i < size; i++) | |||
| 646 | { | |||
| 647 | for(int j= size; j > 0 + cIter; j--) | |||
| 648 | { | |||
| 649 | rtl::Reference<VendorBase>& cur= vec.at(j); | |||
| 650 | rtl::Reference<VendorBase>& next= vec.at(j-1); | |||
| 651 | ||||
| 652 | int nCmp = 0; | |||
| 653 | // comparing invalid SunVersion s is possible, they will be less than a | |||
| 654 | // valid version | |||
| 655 | ||||
| 656 | //check if version of current is recognized, by comparing it with itself | |||
| 657 | try | |||
| 658 | { | |||
| 659 | cur->compareVersions(cur->getVersion()); | |||
| 660 | } | |||
| 661 | catch (MalformedVersionException &) | |||
| 662 | { | |||
| 663 | nCmp = -1; // current < next | |||
| 664 | } | |||
| 665 | //The version of cur is valid, now compare with the second version | |||
| 666 | if (nCmp == 0) | |||
| 667 | { | |||
| 668 | try | |||
| 669 | { | |||
| 670 | nCmp = cur->compareVersions(next->getVersion()); | |||
| ||||
| 671 | } | |||
| 672 | catch (MalformedVersionException & ) | |||
| 673 | { | |||
| 674 | //The second version is invalid, therefor it is regardes less. | |||
| 675 | nCmp = 1; | |||
| 676 | } | |||
| 677 | } | |||
| 678 | if(nCmp == 1) // cur > next | |||
| 679 | { | |||
| 680 | rtl::Reference<VendorBase> less = next; | |||
| 681 | vec.at(j-1)= cur; | |||
| 682 | vec.at(j)= less; | |||
| 683 | } | |||
| 684 | } | |||
| 685 | ++cIter; | |||
| 686 | } | |||
| 687 | } | |||
| 688 | ||||
| 689 | ||||
| 690 | bool getJREInfoFromBinPath( | |||
| 691 | const rtl::OUString& path, vector<rtl::Reference<VendorBase> > & vecInfos) | |||
| 692 | { | |||
| 693 | // file:///c:/jre/bin | |||
| 694 | //map: jre/bin/java.exe | |||
| 695 | bool ret = false; | |||
| 696 | ||||
| 697 | for ( sal_Int32 pos = 0; | |||
| 698 | gVendorMap[pos].sVendorName != NULL__null; ++pos ) | |||
| 699 | { | |||
| 700 | vector<OUString> vecPaths; | |||
| 701 | getJavaExePaths_func pFunc = gVendorMap[pos].getJavaFunc; | |||
| 702 | ||||
| 703 | int size = 0; | |||
| 704 | char const* const* arExePaths = (*pFunc)(&size); | |||
| 705 | vecPaths = getVectorFromCharArray(arExePaths, size); | |||
| 706 | ||||
| 707 | //make sure argument path does not end with '/' | |||
| 708 | OUString sBinPath = path; | |||
| 709 | if (path.lastIndexOf('/') == (path.getLength() - 1)) | |||
| 710 | sBinPath = path.copy(0, path.getLength() - 1); | |||
| 711 | ||||
| 712 | typedef vector<OUString>::const_iterator c_it; | |||
| 713 | for (c_it i = vecPaths.begin(); i != vecPaths.end(); ++i) | |||
| 714 | { | |||
| 715 | //the map contains e.g. jre/bin/java.exe | |||
| 716 | //get the directory where the executable is contained | |||
| 717 | OUString sHome; | |||
| 718 | sal_Int32 index = i->lastIndexOf('/'); | |||
| 719 | if (index == -1) | |||
| 720 | { | |||
| 721 | //map contained only : "java.exe, then the argument | |||
| 722 | //path is already the home directory | |||
| 723 | sHome = sBinPath; | |||
| 724 | } | |||
| 725 | else | |||
| 726 | { | |||
| 727 | // jre/bin/jre -> jre/bin | |||
| 728 | OUString sMapPath(i->getStr(), index); | |||
| 729 | index = sBinPath.lastIndexOf(sMapPath); | |||
| 730 | if (index != -1 | |||
| 731 | && (index + sMapPath.getLength() == sBinPath.getLength()) | |||
| 732 | && sBinPath[index - 1] == '/') | |||
| 733 | { | |||
| 734 | sHome = OUString(sBinPath.getStr(), index - 1); | |||
| 735 | } | |||
| 736 | } | |||
| 737 | if (!sHome.isEmpty()) | |||
| 738 | { | |||
| 739 | ret = getJREInfoByPath(sHome, vecInfos); | |||
| 740 | if (ret) | |||
| 741 | break; | |||
| 742 | } | |||
| 743 | } | |||
| 744 | if (ret) | |||
| 745 | break; | |||
| 746 | } | |||
| 747 | return ret; | |||
| 748 | } | |||
| 749 | ||||
| 750 | vector<Reference<VendorBase> > getAllJREInfos() | |||
| 751 | { | |||
| 752 | vector<Reference<VendorBase> > vecInfos; | |||
| 753 | ||||
| 754 | #if defined WNT | |||
| 755 | // Get Javas from the registry | |||
| 756 | createJavaInfoFromWinReg(vecInfos); | |||
| 757 | #endif // WNT | |||
| 758 | ||||
| 759 | #ifndef JVM_ONE_PATH_CHECK | |||
| 760 | createJavaInfoFromJavaHome(vecInfos); | |||
| 761 | //this function should be called after createJavaInfoDirScan. | |||
| 762 | //Otherwise in SDKs Java may be started twice | |||
| 763 | createJavaInfoFromPath(vecInfos); | |||
| 764 | #endif | |||
| 765 | ||||
| 766 | #ifdef UNX1 | |||
| 767 | createJavaInfoDirScan(vecInfos); | |||
| 768 | #endif | |||
| 769 | ||||
| 770 | bubbleSortVersion(vecInfos); | |||
| ||||
| 771 | return vecInfos; | |||
| 772 | } | |||
| 773 | ||||
| 774 | ||||
| 775 | vector<OUString> getVectorFromCharArray(char const * const * ar, int size) | |||
| 776 | { | |||
| 777 | vector<OUString> vec; | |||
| 778 | for( int i = 0; i < size; i++) | |||
| 779 | { | |||
| 780 | OUString s(ar[i], strlen(ar[i]), RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76))); | |||
| 781 | vec.push_back(s); | |||
| 782 | } | |||
| 783 | return vec; | |||
| 784 | } | |||
| 785 | bool getJREInfoByPath(const rtl::OUString& path, | |||
| 786 | std::vector<rtl::Reference<VendorBase> > & vecInfos) | |||
| 787 | { | |||
| 788 | bool ret = false; | |||
| 789 | ||||
| 790 | rtl::Reference<VendorBase> aInfo = getJREInfoByPath(path); | |||
| 791 | if (aInfo.is()) | |||
| 792 | { | |||
| 793 | ret = true; | |||
| 794 | vector<rtl::Reference<VendorBase> >::const_iterator it_impl= std::find_if( | |||
| 795 | vecInfos.begin(),vecInfos.end(), InfoFindSame(aInfo->getHome())); | |||
| 796 | if(it_impl == vecInfos.end()) | |||
| 797 | { | |||
| 798 | vecInfos.push_back(aInfo); | |||
| 799 | } | |||
| 800 | } | |||
| 801 | return ret; | |||
| 802 | } | |||
| 803 | ||||
| 804 | /** Checks if the path is a directory. Links are resolved. | |||
| 805 | In case of an error the returned string has the length 0. | |||
| 806 | Otherwise the returned string is the "resolved" file URL. | |||
| 807 | */ | |||
| 808 | OUString resolveDirPath(const OUString & path) | |||
| 809 | { | |||
| 810 | OUString ret; | |||
| 811 | salhelper::LinkResolver aResolver(osl_FileStatus_Mask_Type0x00000001 | | |||
| 812 | osl_FileStatus_Mask_FileURL0x00000200); | |||
| 813 | if (aResolver.fetchFileStatus(path) == osl::FileBase::E_None) | |||
| 814 | { | |||
| 815 | //check if this is a directory | |||
| 816 | if (aResolver.m_aStatus.getFileType() == FileStatus::Directory) | |||
| 817 | { | |||
| 818 | #ifndef JVM_ONE_PATH_CHECK | |||
| 819 | ret = aResolver.m_aStatus.getFileURL(); | |||
| 820 | #else | |||
| 821 | ret = path; | |||
| 822 | #endif | |||
| 823 | } | |||
| 824 | } | |||
| 825 | return ret; | |||
| 826 | } | |||
| 827 | /** Checks if the path is a file. If it is a link to a file than | |||
| 828 | it is resolved. | |||
| 829 | */ | |||
| 830 | OUString resolveFilePath(const OUString & path) | |||
| 831 | { | |||
| 832 | OUString ret; | |||
| 833 | salhelper::LinkResolver aResolver(osl_FileStatus_Mask_Type0x00000001 | | |||
| 834 | osl_FileStatus_Mask_FileURL0x00000200); | |||
| 835 | if (aResolver.fetchFileStatus(path) == osl::FileBase::E_None) | |||
| 836 | { | |||
| 837 | //check if this is a file | |||
| 838 | if (aResolver.m_aStatus.getFileType() == FileStatus::Regular) | |||
| 839 | { | |||
| 840 | #ifndef JVM_ONE_PATH_CHECK | |||
| 841 | ret = aResolver.m_aStatus.getFileURL(); | |||
| 842 | #else | |||
| 843 | ret = path; | |||
| 844 | #endif | |||
| 845 | } | |||
| 846 | } | |||
| 847 | return ret; | |||
| 848 | } | |||
| 849 | ||||
| 850 | rtl::Reference<VendorBase> getJREInfoByPath( | |||
| 851 | const OUString& path) | |||
| 852 | { | |||
| 853 | rtl::Reference<VendorBase> ret; | |||
| 854 | static vector<OUString> vecBadPaths; | |||
| 855 | ||||
| 856 | static map<OUString, rtl::Reference<VendorBase> > mapJREs; | |||
| 857 | typedef map<OUString, rtl::Reference<VendorBase> >::const_iterator MapIt; | |||
| 858 | typedef map<OUString, rtl::Reference<VendorBase> > MAPJRE; | |||
| 859 | OUString sFilePath; | |||
| 860 | typedef vector<OUString>::const_iterator cit_path; | |||
| 861 | vector<pair<OUString, OUString> > props; | |||
| 862 | ||||
| 863 | OUString sResolvedDir = resolveDirPath(path); | |||
| 864 | // If this path is invalid then there is no chance to find a JRE here | |||
| 865 | if (sResolvedDir.isEmpty()) | |||
| 866 | return 0; | |||
| 867 | ||||
| 868 | //check if the directory path is good, that is a JRE was already recognized. | |||
| 869 | //Then we need not detect it again | |||
| 870 | //For example, a sun JKD contains <jdk>/bin/java and <jdk>/jre/bin/java. | |||
| 871 | //When <jdk>/bin/java has been found then we need not find <jdk>/jre/bin/java. | |||
| 872 | //Otherwise we would execute java two times for evers JDK found. | |||
| 873 | MapIt entry2 = find_if(mapJREs.begin(), mapJREs.end(), | |||
| 874 | SameOrSubDirJREMap(sResolvedDir)); | |||
| 875 | if (entry2 != mapJREs.end()) | |||
| 876 | { | |||
| 877 | JFW_TRACE2(OUSTR("[Java framework] sunjavaplugin" SAL_DLLEXTENSION ": ")do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("JRE found again (detected before): ")[0]), ((sal_Int32 )((sizeof ("JRE found again (detected before): ") / sizeof (( "JRE found again (detected before): ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sResolvedDir + ::rtl::OUString( (&(".\n")[0]), ((sal_Int32)((sizeof (".\n") / sizeof ((".\n")[0]))-1)), ((( rtl_TextEncoding) 11)) )) == 1) { ::sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "879" ": "), ::sal::detail::unwrapStream( ::sal::detail:: StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("JRE found again (detected before): ")[0]), ((sal_Int32 )((sizeof ("JRE found again (detected before): ") / sizeof (( "JRE found again (detected before): ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sResolvedDir + ::rtl::OUString( (&(".\n")[0]), ((sal_Int32)((sizeof (".\n") / sizeof ((".\n")[0]))-1)), ((( rtl_TextEncoding) 11)) ))); } else { ::std::ostringstream sal_detail_stream ; sal_detail_stream << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("JRE found again (detected before): ")[0]), ((sal_Int32 )((sizeof ("JRE found again (detected before): ") / sizeof (( "JRE found again (detected before): ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sResolvedDir + ::rtl::OUString( (&(".\n")[0]), ((sal_Int32)((sizeof (".\n") / sizeof ((".\n")[0]))-1)), ((( rtl_TextEncoding) 11)) ); ::sal::detail::log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "879" ": "), sal_detail_stream); } } } while (false) | |||
| 878 | + OUSTR("JRE found again (detected before): ") + sResolvedDirdo { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("JRE found again (detected before): ")[0]), ((sal_Int32 )((sizeof ("JRE found again (detected before): ") / sizeof (( "JRE found again (detected before): ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sResolvedDir + ::rtl::OUString( (&(".\n")[0]), ((sal_Int32)((sizeof (".\n") / sizeof ((".\n")[0]))-1)), ((( rtl_TextEncoding) 11)) )) == 1) { ::sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "879" ": "), ::sal::detail::unwrapStream( ::sal::detail:: StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("JRE found again (detected before): ")[0]), ((sal_Int32 )((sizeof ("JRE found again (detected before): ") / sizeof (( "JRE found again (detected before): ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sResolvedDir + ::rtl::OUString( (&(".\n")[0]), ((sal_Int32)((sizeof (".\n") / sizeof ((".\n")[0]))-1)), ((( rtl_TextEncoding) 11)) ))); } else { ::std::ostringstream sal_detail_stream ; sal_detail_stream << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("JRE found again (detected before): ")[0]), ((sal_Int32 )((sizeof ("JRE found again (detected before): ") / sizeof (( "JRE found again (detected before): ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sResolvedDir + ::rtl::OUString( (&(".\n")[0]), ((sal_Int32)((sizeof (".\n") / sizeof ((".\n")[0]))-1)), ((( rtl_TextEncoding) 11)) ); ::sal::detail::log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "879" ": "), sal_detail_stream); } } } while (false) | |||
| 879 | + OUSTR(".\n"))do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("JRE found again (detected before): ")[0]), ((sal_Int32 )((sizeof ("JRE found again (detected before): ") / sizeof (( "JRE found again (detected before): ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sResolvedDir + ::rtl::OUString( (&(".\n")[0]), ((sal_Int32)((sizeof (".\n") / sizeof ((".\n")[0]))-1)), ((( rtl_TextEncoding) 11)) )) == 1) { ::sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "879" ": "), ::sal::detail::unwrapStream( ::sal::detail:: StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("JRE found again (detected before): ")[0]), ((sal_Int32 )((sizeof ("JRE found again (detected before): ") / sizeof (( "JRE found again (detected before): ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sResolvedDir + ::rtl::OUString( (&(".\n")[0]), ((sal_Int32)((sizeof (".\n") / sizeof ((".\n")[0]))-1)), ((( rtl_TextEncoding) 11)) ))); } else { ::std::ostringstream sal_detail_stream ; sal_detail_stream << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("JRE found again (detected before): ")[0]), ((sal_Int32 )((sizeof ("JRE found again (detected before): ") / sizeof (( "JRE found again (detected before): ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sResolvedDir + ::rtl::OUString( (&(".\n")[0]), ((sal_Int32)((sizeof (".\n") / sizeof ((".\n")[0]))-1)), ((( rtl_TextEncoding) 11)) ); ::sal::detail::log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "879" ": "), sal_detail_stream); } } } while (false); | |||
| 880 | return entry2->second; | |||
| 881 | } | |||
| 882 | ||||
| 883 | for ( sal_Int32 pos = 0; | |||
| 884 | gVendorMap[pos].sVendorName != NULL__null; ++pos ) | |||
| 885 | { | |||
| 886 | vector<OUString> vecPaths; | |||
| 887 | getJavaExePaths_func pFunc = gVendorMap[pos].getJavaFunc; | |||
| 888 | ||||
| 889 | int size = 0; | |||
| 890 | char const* const* arExePaths = (*pFunc)(&size); | |||
| 891 | vecPaths = getVectorFromCharArray(arExePaths, size); | |||
| 892 | ||||
| 893 | bool bBreak = false; | |||
| 894 | typedef vector<OUString>::const_iterator c_it; | |||
| 895 | for (c_it i = vecPaths.begin(); i != vecPaths.end(); ++i) | |||
| 896 | { | |||
| 897 | //if the path is a link, then resolve it | |||
| 898 | //check if the executable exists at all | |||
| 899 | ||||
| 900 | //path can be only "file:///". Then do not append a '/' | |||
| 901 | //sizeof counts the terminating 0 | |||
| 902 | OUString sFullPath; | |||
| 903 | if (path.getLength() == sizeof("file:///") - 1) | |||
| 904 | sFullPath = sResolvedDir + (*i); | |||
| 905 | else | |||
| 906 | sFullPath = sResolvedDir + | |||
| 907 | OUString(RTL_CONSTASCII_USTRINGPARAM("/")(&("/")[0]), ((sal_Int32)((sizeof ("/") / sizeof (("/")[0 ]))-1)), (((rtl_TextEncoding) 11))) + (*i); | |||
| 908 | ||||
| 909 | ||||
| 910 | sFilePath = resolveFilePath(sFullPath); | |||
| 911 | ||||
| 912 | if (sFilePath.isEmpty()) | |||
| 913 | { | |||
| 914 | //The file path (to java exe) is not valid | |||
| 915 | cit_path ifull = find(vecBadPaths.begin(), vecBadPaths.end(), sFullPath); | |||
| 916 | if (ifull == vecBadPaths.end()) | |||
| 917 | vecBadPaths.push_back(sFullPath); | |||
| 918 | continue; | |||
| 919 | } | |||
| 920 | ||||
| 921 | cit_path ifile = find(vecBadPaths.begin(), vecBadPaths.end(), sFilePath); | |||
| 922 | if (ifile != vecBadPaths.end()) | |||
| 923 | continue; | |||
| 924 | ||||
| 925 | MapIt entry = mapJREs.find(sFilePath); | |||
| 926 | if (entry != mapJREs.end()) | |||
| 927 | { | |||
| 928 | JFW_TRACE2(OUSTR("[Java framework] sunjavaplugin" SAL_DLLEXTENSION ": ")do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("JRE found again (detected before): ")[0]), ((sal_Int32 )((sizeof ("JRE found again (detected before): ") / sizeof (( "JRE found again (detected before): ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sFilePath + ::rtl::OUString( (&(".\n")[0]), (( sal_Int32)((sizeof (".\n") / sizeof ((".\n")[0]))-1)), (((rtl_TextEncoding ) 11)) )) == 1) { ::sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "930" ": "), ::sal::detail::unwrapStream( ::sal::detail:: StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("JRE found again (detected before): ")[0]), ((sal_Int32 )((sizeof ("JRE found again (detected before): ") / sizeof (( "JRE found again (detected before): ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sFilePath + ::rtl::OUString( (&(".\n")[0]), (( sal_Int32)((sizeof (".\n") / sizeof ((".\n")[0]))-1)), (((rtl_TextEncoding ) 11)) ))); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("JRE found again (detected before): ")[0]), ((sal_Int32 )((sizeof ("JRE found again (detected before): ") / sizeof (( "JRE found again (detected before): ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sFilePath + ::rtl::OUString( (&(".\n")[0]), (( sal_Int32)((sizeof (".\n") / sizeof ((".\n")[0]))-1)), (((rtl_TextEncoding ) 11)) ); ::sal::detail::log( (::SAL_DETAIL_LOG_LEVEL_INFO), ( "jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "930" ": "), sal_detail_stream); } } } while (false) | |||
| 929 | + OUSTR("JRE found again (detected before): ") + sFilePathdo { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("JRE found again (detected before): ")[0]), ((sal_Int32 )((sizeof ("JRE found again (detected before): ") / sizeof (( "JRE found again (detected before): ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sFilePath + ::rtl::OUString( (&(".\n")[0]), (( sal_Int32)((sizeof (".\n") / sizeof ((".\n")[0]))-1)), (((rtl_TextEncoding ) 11)) )) == 1) { ::sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "930" ": "), ::sal::detail::unwrapStream( ::sal::detail:: StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("JRE found again (detected before): ")[0]), ((sal_Int32 )((sizeof ("JRE found again (detected before): ") / sizeof (( "JRE found again (detected before): ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sFilePath + ::rtl::OUString( (&(".\n")[0]), (( sal_Int32)((sizeof (".\n") / sizeof ((".\n")[0]))-1)), (((rtl_TextEncoding ) 11)) ))); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("JRE found again (detected before): ")[0]), ((sal_Int32 )((sizeof ("JRE found again (detected before): ") / sizeof (( "JRE found again (detected before): ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sFilePath + ::rtl::OUString( (&(".\n")[0]), (( sal_Int32)((sizeof (".\n") / sizeof ((".\n")[0]))-1)), (((rtl_TextEncoding ) 11)) ); ::sal::detail::log( (::SAL_DETAIL_LOG_LEVEL_INFO), ( "jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "930" ": "), sal_detail_stream); } } } while (false) | |||
| 930 | + OUSTR(".\n"))do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("JRE found again (detected before): ")[0]), ((sal_Int32 )((sizeof ("JRE found again (detected before): ") / sizeof (( "JRE found again (detected before): ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sFilePath + ::rtl::OUString( (&(".\n")[0]), (( sal_Int32)((sizeof (".\n") / sizeof ((".\n")[0]))-1)), (((rtl_TextEncoding ) 11)) )) == 1) { ::sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "930" ": "), ::sal::detail::unwrapStream( ::sal::detail:: StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("JRE found again (detected before): ")[0]), ((sal_Int32 )((sizeof ("JRE found again (detected before): ") / sizeof (( "JRE found again (detected before): ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sFilePath + ::rtl::OUString( (&(".\n")[0]), (( sal_Int32)((sizeof (".\n") / sizeof ((".\n")[0]))-1)), (((rtl_TextEncoding ) 11)) ))); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("JRE found again (detected before): ")[0]), ((sal_Int32 )((sizeof ("JRE found again (detected before): ") / sizeof (( "JRE found again (detected before): ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + sFilePath + ::rtl::OUString( (&(".\n")[0]), (( sal_Int32)((sizeof (".\n") / sizeof ((".\n")[0]))-1)), (((rtl_TextEncoding ) 11)) ); ::sal::detail::log( (::SAL_DETAIL_LOG_LEVEL_INFO), ( "jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "930" ": "), sal_detail_stream); } } } while (false); | |||
| 931 | ||||
| 932 | return entry->second; | |||
| 933 | } | |||
| 934 | ||||
| 935 | bool bProcessRun= false; | |||
| 936 | if (getJavaProps(sFilePath, | |||
| 937 | #ifdef JVM_ONE_PATH_CHECK | |||
| 938 | sResolvedDir, | |||
| 939 | #endif | |||
| 940 | props, & bProcessRun) == false) | |||
| 941 | { | |||
| 942 | //The java executable could not be run or the system properties | |||
| 943 | //could not be retrieved. We can assume that this java is corrupt. | |||
| 944 | vecBadPaths.push_back(sFilePath); | |||
| 945 | //If there was a java executable, that could be run but we did not get | |||
| 946 | //the system properties, then we also assume that the whole Java installation | |||
| 947 | //does not work. In a jdk there are two executables. One in jdk/bin and the other | |||
| 948 | //in jdk/jre/bin. We do not search any further, because we assume that if one java | |||
| 949 | //does not work then the other does not work as well. This saves us to run java | |||
| 950 | //again which is quite costly. | |||
| 951 | if (bProcessRun == true) | |||
| 952 | { | |||
| 953 | // 1.3.1 special treatment: jdk/bin/java and /jdk/jre/bin/java are links to | |||
| 954 | //a script, named .java_wrapper. The script starts jdk/bin/sparc/native_threads/java | |||
| 955 | //or jdk/jre/bin/sparc/native_threads/java. The script uses the name with which it was | |||
| 956 | //invoked to build the path to the executable. It we start the script directy as .java_wrapper | |||
| 957 | //then it tries to start a jdk/.../native_threads/.java_wrapper. Therefore the link, which | |||
| 958 | //is named java, must be used to start the script. | |||
| 959 | getJavaProps(sFullPath, | |||
| 960 | #ifdef JVM_ONE_PATH_CHECK | |||
| 961 | sResolvedDir, | |||
| 962 | #endif | |||
| 963 | props, & bProcessRun); | |||
| 964 | // Either we found a working 1.3.1 | |||
| 965 | //Or the java is broken. In both cases we stop searchin under this "root" directory | |||
| 966 | bBreak = true; | |||
| 967 | break; | |||
| 968 | } | |||
| 969 | //sFilePath is no working java executable. We continue with another possible | |||
| 970 | //path. | |||
| 971 | else | |||
| 972 | { | |||
| 973 | continue; | |||
| 974 | } | |||
| 975 | } | |||
| 976 | //sFilePath is a java and we could get the system properties. We proceed with this | |||
| 977 | //java. | |||
| 978 | else | |||
| 979 | { | |||
| 980 | bBreak = true; | |||
| 981 | break; | |||
| 982 | } | |||
| 983 | } | |||
| 984 | if (bBreak) | |||
| 985 | break; | |||
| 986 | } | |||
| 987 | ||||
| 988 | if (props.empty()) | |||
| 989 | return rtl::Reference<VendorBase>(); | |||
| 990 | ||||
| 991 | //find java.vendor property | |||
| 992 | typedef vector<pair<OUString, OUString> >::const_iterator c_ip; | |||
| 993 | OUString sVendor(RTL_CONSTASCII_USTRINGPARAM("java.vendor")(&("java.vendor")[0]), ((sal_Int32)((sizeof ("java.vendor" ) / sizeof (("java.vendor")[0]))-1)), (((rtl_TextEncoding) 11 ))); | |||
| 994 | OUString sVendorName; | |||
| 995 | ||||
| 996 | for (c_ip i = props.begin(); i != props.end(); ++i) | |||
| 997 | { | |||
| 998 | if (sVendor.equals(i->first)) | |||
| 999 | { | |||
| 1000 | sVendorName = i->second; | |||
| 1001 | break; | |||
| 1002 | } | |||
| 1003 | } | |||
| 1004 | ||||
| 1005 | if (!sVendorName.isEmpty()) | |||
| 1006 | { | |||
| 1007 | //find the creator func for the respective vendor name | |||
| 1008 | for ( sal_Int32 c = 0; | |||
| 1009 | gVendorMap[c].sVendorName != NULL__null; ++c ) | |||
| 1010 | { | |||
| 1011 | OUString sNameMap(gVendorMap[c].sVendorName, strlen(gVendorMap[c].sVendorName), | |||
| 1012 | RTL_TEXTENCODING_ASCII_US(((rtl_TextEncoding) 11))); | |||
| 1013 | if (sNameMap.equals(sVendorName)) | |||
| 1014 | { | |||
| 1015 | ret = createInstance(gVendorMap[c].createFunc, props); | |||
| 1016 | break; | |||
| 1017 | } | |||
| 1018 | } | |||
| 1019 | } | |||
| 1020 | if (ret.is() == false) | |||
| 1021 | vecBadPaths.push_back(sFilePath); | |||
| 1022 | else | |||
| 1023 | { | |||
| 1024 | JFW_TRACE2(OUSTR("[Java framework] sunjavaplugin" SAL_DLLEXTENSION ": ")do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("Found JRE: ")[0]), ((sal_Int32)((sizeof ("Found JRE: " ) / sizeof (("Found JRE: ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + sResolvedDir + ::rtl::OUString( (&(" \n at: ")[0]) , ((sal_Int32)((sizeof (" \n at: ") / sizeof ((" \n at: ")[0] ))-1)), (((rtl_TextEncoding) 11)) ) + path + ::rtl::OUString( (&(".\n")[0]), ((sal_Int32)((sizeof (".\n") / sizeof ((".\n" )[0]))-1)), (((rtl_TextEncoding) 11)) )) == 1) { ::sal_detail_log ( (::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1026" ": "), ::sal::detail::unwrapStream( ::sal::detail ::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("Found JRE: ")[0]), ((sal_Int32)((sizeof ("Found JRE: " ) / sizeof (("Found JRE: ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + sResolvedDir + ::rtl::OUString( (&(" \n at: ")[0]) , ((sal_Int32)((sizeof (" \n at: ") / sizeof ((" \n at: ")[0] ))-1)), (((rtl_TextEncoding) 11)) ) + path + ::rtl::OUString( (&(".\n")[0]), ((sal_Int32)((sizeof (".\n") / sizeof ((".\n" )[0]))-1)), (((rtl_TextEncoding) 11)) ))); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << ::rtl::OUString ( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), (( sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": " ) / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]) )-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString( (&( "Found JRE: ")[0]), ((sal_Int32)((sizeof ("Found JRE: ") / sizeof (("Found JRE: ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + sResolvedDir + ::rtl::OUString( (&(" \n at: ")[0]), ((sal_Int32)((sizeof (" \n at: ") / sizeof ((" \n at: ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + path + ::rtl::OUString( (&(".\n")[0]), ((sal_Int32 )((sizeof (".\n") / sizeof ((".\n")[0]))-1)), (((rtl_TextEncoding ) 11)) ); ::sal::detail::log( (::SAL_DETAIL_LOG_LEVEL_INFO), ( "jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1026" ": "), sal_detail_stream); } } } while (false) | |||
| 1025 | + OUSTR("Found JRE: ") + sResolvedDirdo { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("Found JRE: ")[0]), ((sal_Int32)((sizeof ("Found JRE: " ) / sizeof (("Found JRE: ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + sResolvedDir + ::rtl::OUString( (&(" \n at: ")[0]) , ((sal_Int32)((sizeof (" \n at: ") / sizeof ((" \n at: ")[0] ))-1)), (((rtl_TextEncoding) 11)) ) + path + ::rtl::OUString( (&(".\n")[0]), ((sal_Int32)((sizeof (".\n") / sizeof ((".\n" )[0]))-1)), (((rtl_TextEncoding) 11)) )) == 1) { ::sal_detail_log ( (::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1026" ": "), ::sal::detail::unwrapStream( ::sal::detail ::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("Found JRE: ")[0]), ((sal_Int32)((sizeof ("Found JRE: " ) / sizeof (("Found JRE: ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + sResolvedDir + ::rtl::OUString( (&(" \n at: ")[0]) , ((sal_Int32)((sizeof (" \n at: ") / sizeof ((" \n at: ")[0] ))-1)), (((rtl_TextEncoding) 11)) ) + path + ::rtl::OUString( (&(".\n")[0]), ((sal_Int32)((sizeof (".\n") / sizeof ((".\n" )[0]))-1)), (((rtl_TextEncoding) 11)) ))); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << ::rtl::OUString ( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), (( sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": " ) / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]) )-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString( (&( "Found JRE: ")[0]), ((sal_Int32)((sizeof ("Found JRE: ") / sizeof (("Found JRE: ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + sResolvedDir + ::rtl::OUString( (&(" \n at: ")[0]), ((sal_Int32)((sizeof (" \n at: ") / sizeof ((" \n at: ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + path + ::rtl::OUString( (&(".\n")[0]), ((sal_Int32 )((sizeof (".\n") / sizeof ((".\n")[0]))-1)), (((rtl_TextEncoding ) 11)) ); ::sal::detail::log( (::SAL_DETAIL_LOG_LEVEL_INFO), ( "jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1026" ": "), sal_detail_stream); } } } while (false) | |||
| 1026 | + OUSTR(" \n at: ") + path + OUSTR(".\n"))do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("Found JRE: ")[0]), ((sal_Int32)((sizeof ("Found JRE: " ) / sizeof (("Found JRE: ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + sResolvedDir + ::rtl::OUString( (&(" \n at: ")[0]) , ((sal_Int32)((sizeof (" \n at: ") / sizeof ((" \n at: ")[0] ))-1)), (((rtl_TextEncoding) 11)) ) + path + ::rtl::OUString( (&(".\n")[0]), ((sal_Int32)((sizeof (".\n") / sizeof ((".\n" )[0]))-1)), (((rtl_TextEncoding) 11)) )) == 1) { ::sal_detail_log ( (::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1026" ": "), ::sal::detail::unwrapStream( ::sal::detail ::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": ") / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString ( (&("Found JRE: ")[0]), ((sal_Int32)((sizeof ("Found JRE: " ) / sizeof (("Found JRE: ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + sResolvedDir + ::rtl::OUString( (&(" \n at: ")[0]) , ((sal_Int32)((sizeof (" \n at: ") / sizeof ((" \n at: ")[0] ))-1)), (((rtl_TextEncoding) 11)) ) + path + ::rtl::OUString( (&(".\n")[0]), ((sal_Int32)((sizeof (".\n") / sizeof ((".\n" )[0]))-1)), (((rtl_TextEncoding) 11)) ))); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << ::rtl::OUString ( (&("[Java framework] sunjavaplugin" ".so" ": ")[0]), (( sal_Int32)((sizeof ("[Java framework] sunjavaplugin" ".so" ": " ) / sizeof (("[Java framework] sunjavaplugin" ".so" ": ")[0]) )-1)), (((rtl_TextEncoding) 11)) ) + ::rtl::OUString( (&( "Found JRE: ")[0]), ((sal_Int32)((sizeof ("Found JRE: ") / sizeof (("Found JRE: ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + sResolvedDir + ::rtl::OUString( (&(" \n at: ")[0]), ((sal_Int32)((sizeof (" \n at: ") / sizeof ((" \n at: ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + path + ::rtl::OUString( (&(".\n")[0]), ((sal_Int32 )((sizeof (".\n") / sizeof ((".\n")[0]))-1)), (((rtl_TextEncoding ) 11)) ); ::sal::detail::log( (::SAL_DETAIL_LOG_LEVEL_INFO), ( "jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1026" ": "), sal_detail_stream); } } } while (false); | |||
| 1027 | ||||
| 1028 | mapJREs.insert(MAPJRE::value_type(sResolvedDir, ret)); | |||
| 1029 | mapJREs.insert(MAPJRE::value_type(sFilePath, ret)); | |||
| 1030 | } | |||
| 1031 | ||||
| 1032 | return ret; | |||
| 1033 | } | |||
| 1034 | ||||
| 1035 | Reference<VendorBase> createInstance(createInstance_func pFunc, | |||
| 1036 | vector<pair<OUString, OUString> > properties) | |||
| 1037 | { | |||
| 1038 | ||||
| 1039 | Reference<VendorBase> aBase = (*pFunc)(); | |||
| 1040 | if (aBase.is()) | |||
| 1041 | { | |||
| 1042 | if (aBase->initialize(properties) == false) | |||
| 1043 | aBase = 0; | |||
| 1044 | } | |||
| 1045 | return aBase; | |||
| 1046 | } | |||
| 1047 | ||||
| 1048 | inline OUString getDirFromFile(const OUString& usFilePath) | |||
| 1049 | { | |||
| 1050 | sal_Int32 index= usFilePath.lastIndexOf('/'); | |||
| 1051 | return OUString(usFilePath.getStr(), index); | |||
| 1052 | } | |||
| 1053 | ||||
| 1054 | void createJavaInfoFromPath(vector<rtl::Reference<VendorBase> >& vecInfos) | |||
| 1055 | { | |||
| 1056 | // Get Java from PATH environment variable | |||
| 1057 | static OUString sCurDir(RTL_CONSTASCII_USTRINGPARAM(".")(&(".")[0]), ((sal_Int32)((sizeof (".") / sizeof ((".")[0 ]))-1)), (((rtl_TextEncoding) 11))); | |||
| 1058 | static OUString sParentDir(RTL_CONSTASCII_USTRINGPARAM("..")(&("..")[0]), ((sal_Int32)((sizeof ("..") / sizeof ((".." )[0]))-1)), (((rtl_TextEncoding) 11))); | |||
| 1059 | char *szPath= getenv("PATH"); | |||
| 1060 | if(szPath) | |||
| 1061 | { | |||
| 1062 | OUString usAllPath(szPath, strlen(szPath), osl_getThreadTextEncoding()); | |||
| 1063 | sal_Int32 nIndex = 0; | |||
| 1064 | do | |||
| 1065 | { | |||
| 1066 | OUString usToken = usAllPath.getToken( 0, SAL_PATHSEPARATOR':', nIndex ); | |||
| 1067 | OUString usTokenUrl; | |||
| 1068 | if(File::getFileURLFromSystemPath(usToken, usTokenUrl) == File::E_None) | |||
| 1069 | { | |||
| 1070 | if(!usTokenUrl.isEmpty()) | |||
| 1071 | { | |||
| 1072 | OUString usBin; | |||
| 1073 | // "." | |||
| 1074 | if(usTokenUrl.equals(sCurDir)) | |||
| 1075 | { | |||
| 1076 | OUString usWorkDirUrl; | |||
| 1077 | if(osl_Process_E_None == osl_getProcessWorkingDir(&usWorkDirUrl.pData)) | |||
| 1078 | usBin= usWorkDirUrl; | |||
| 1079 | } | |||
| 1080 | // ".." | |||
| 1081 | else if(usTokenUrl.equals(sParentDir)) | |||
| 1082 | { | |||
| 1083 | OUString usWorkDir; | |||
| 1084 | if(osl_Process_E_None == osl_getProcessWorkingDir(&usWorkDir.pData)) | |||
| 1085 | usBin= getDirFromFile(usWorkDir); | |||
| 1086 | } | |||
| 1087 | else | |||
| 1088 | { | |||
| 1089 | usBin = usTokenUrl; | |||
| 1090 | } | |||
| 1091 | if(!usBin.isEmpty()) | |||
| 1092 | { | |||
| 1093 | getJREInfoFromBinPath(usBin, vecInfos); | |||
| 1094 | } | |||
| 1095 | } | |||
| 1096 | } | |||
| 1097 | } | |||
| 1098 | while ( nIndex >= 0 ); | |||
| 1099 | } | |||
| 1100 | } | |||
| 1101 | ||||
| 1102 | void createJavaInfoFromJavaHome(vector<rtl::Reference<VendorBase> >& vecInfos) | |||
| 1103 | { | |||
| 1104 | // Get Java from JAVA_HOME environment | |||
| 1105 | char *szJavaHome= getenv("JAVA_HOME"); | |||
| 1106 | if(szJavaHome) | |||
| 1107 | { | |||
| 1108 | OUString sHome(szJavaHome,strlen(szJavaHome),osl_getThreadTextEncoding()); | |||
| 1109 | OUString sHomeUrl; | |||
| 1110 | if(File::getFileURLFromSystemPath(sHome, sHomeUrl) == File::E_None) | |||
| 1111 | { | |||
| 1112 | getJREInfoByPath(sHomeUrl, vecInfos); | |||
| 1113 | } | |||
| 1114 | } | |||
| 1115 | } | |||
| 1116 | ||||
| 1117 | bool makeDriveLetterSame(OUString * fileURL) | |||
| 1118 | { | |||
| 1119 | bool ret = false; | |||
| 1120 | DirectoryItem item; | |||
| 1121 | if (DirectoryItem::get(*fileURL, item) == File::E_None) | |||
| 1122 | { | |||
| 1123 | FileStatus status(osl_FileStatus_Mask_FileURL0x00000200); | |||
| 1124 | if (item.getFileStatus(status) == File::E_None) | |||
| 1125 | { | |||
| 1126 | *fileURL = status.getFileURL(); | |||
| 1127 | ret = true; | |||
| 1128 | } | |||
| 1129 | } | |||
| 1130 | return ret; | |||
| 1131 | } | |||
| 1132 | ||||
| 1133 | #ifdef UNX1 | |||
| 1134 | #ifdef SOLARIS | |||
| 1135 | ||||
| 1136 | void createJavaInfoDirScan(vector<rtl::Reference<VendorBase> >& vecInfos) | |||
| 1137 | { | |||
| 1138 | JFW_TRACE2(OUSTR("\n[Java framework] Checking \"/usr/jdk/latest\"\n"))do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << ::rtl::OUString( (&("\n[Java framework] Checking \"/usr/jdk/latest\"\n" )[0]), ((sal_Int32)((sizeof ("\n[Java framework] Checking \"/usr/jdk/latest\"\n" ) / sizeof (("\n[Java framework] Checking \"/usr/jdk/latest\"\n" )[0]))-1)), (((rtl_TextEncoding) 11)) )) == 1) { ::sal_detail_log ( (::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1138" ": "), ::sal::detail::unwrapStream( ::sal::detail ::StreamStart() << ::rtl::OUString( (&("\n[Java framework] Checking \"/usr/jdk/latest\"\n" )[0]), ((sal_Int32)((sizeof ("\n[Java framework] Checking \"/usr/jdk/latest\"\n" ) / sizeof (("\n[Java framework] Checking \"/usr/jdk/latest\"\n" )[0]))-1)), (((rtl_TextEncoding) 11)) ))); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << ::rtl::OUString ( (&("\n[Java framework] Checking \"/usr/jdk/latest\"\n") [0]), ((sal_Int32)((sizeof ("\n[Java framework] Checking \"/usr/jdk/latest\"\n" ) / sizeof (("\n[Java framework] Checking \"/usr/jdk/latest\"\n" )[0]))-1)), (((rtl_TextEncoding) 11)) ); ::sal::detail::log( ( ::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1138" ": "), sal_detail_stream); } } } while (false); | |||
| 1139 | getJREInfoByPath(OUSTR("file:////usr/jdk/latest")::rtl::OUString( (&("file:////usr/jdk/latest")[0]), ((sal_Int32 )((sizeof ("file:////usr/jdk/latest") / sizeof (("file:////usr/jdk/latest" )[0]))-1)), (((rtl_TextEncoding) 11)) ), vecInfos); | |||
| 1140 | } | |||
| 1141 | ||||
| 1142 | #else | |||
| 1143 | void createJavaInfoDirScan(vector<rtl::Reference<VendorBase> >& vecInfos) | |||
| 1144 | { | |||
| 1145 | OUString excMessage = OUSTR("[Java framework] sunjavaplugin: "::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Error in function createJavaInfoDirScan in util.cxx." )[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Error in function createJavaInfoDirScan in util.cxx.") / sizeof (("[Java framework] sunjavaplugin: " "Error in function createJavaInfoDirScan in util.cxx." )[0]))-1)), (((rtl_TextEncoding) 11)) ) | |||
| 1146 | "Error in function createJavaInfoDirScan in util.cxx.")::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Error in function createJavaInfoDirScan in util.cxx." )[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Error in function createJavaInfoDirScan in util.cxx.") / sizeof (("[Java framework] sunjavaplugin: " "Error in function createJavaInfoDirScan in util.cxx." )[0]))-1)), (((rtl_TextEncoding) 11)) ); | |||
| 1147 | int cJavaNames= sizeof(g_arJavaNames) / sizeof(char*); | |||
| 1148 | boost::scoped_array<OUString> sarJavaNames(new OUString[cJavaNames]); | |||
| 1149 | OUString *arNames = sarJavaNames.get(); | |||
| 1150 | for(int i= 0; i < cJavaNames; i++) | |||
| 1151 | arNames[i] = OUString(g_arJavaNames[i], strlen(g_arJavaNames[i]), | |||
| 1152 | RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76))); | |||
| 1153 | ||||
| 1154 | int cSearchPaths= sizeof(g_arSearchPaths) / sizeof(char*); | |||
| 1155 | boost::scoped_array<OUString> sarPathNames(new OUString[cSearchPaths]); | |||
| 1156 | OUString *arPaths = sarPathNames.get(); | |||
| 1157 | for(int c = 0; c < cSearchPaths; c++) | |||
| 1158 | arPaths[c] = OUString(g_arSearchPaths[c], strlen(g_arSearchPaths[c]), | |||
| 1159 | RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76))); | |||
| 1160 | ||||
| 1161 | int cCollectDirs = sizeof(g_arCollectDirs) / sizeof(char*); | |||
| 1162 | boost::scoped_array<OUString> sarCollectDirs(new OUString[cCollectDirs]); | |||
| 1163 | OUString *arCollectDirs = sarCollectDirs.get(); | |||
| 1164 | for(int d = 0; d < cCollectDirs; d++) | |||
| 1165 | arCollectDirs[d] = OUString(g_arCollectDirs[d], strlen(g_arCollectDirs[d]), | |||
| 1166 | RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76))); | |||
| 1167 | ||||
| 1168 | ||||
| 1169 | ||||
| 1170 | OUString usFile(RTL_CONSTASCII_USTRINGPARAM("file:///")(&("file:///")[0]), ((sal_Int32)((sizeof ("file:///") / sizeof (("file:///")[0]))-1)), (((rtl_TextEncoding) 11))); | |||
| 1171 | for( int ii = 0; ii < cSearchPaths; ii ++) | |||
| 1172 | { | |||
| 1173 | OUString usDir1(usFile + arPaths[ii]); | |||
| 1174 | DirectoryItem item; | |||
| 1175 | if(DirectoryItem::get(usDir1, item) == File::E_None) | |||
| 1176 | { | |||
| 1177 | for(int j= 0; j < cCollectDirs; j++) | |||
| 1178 | { | |||
| 1179 | OUString usDir2(usDir1 + arCollectDirs[j]); | |||
| 1180 | // prevent that we scan the whole /usr, /usr/lib, etc directories | |||
| 1181 | if (!arCollectDirs[j].isEmpty()) | |||
| 1182 | { | |||
| 1183 | //usr/java/xxx | |||
| 1184 | //Examin every subdirectory | |||
| 1185 | Directory aCollectionDir(usDir2); | |||
| 1186 | ||||
| 1187 | Directory::RC openErr = aCollectionDir.open(); | |||
| 1188 | switch (openErr) | |||
| 1189 | { | |||
| 1190 | case File::E_None: | |||
| 1191 | break; | |||
| 1192 | case File::E_NOENT: | |||
| 1193 | case File::E_NOTDIR: | |||
| 1194 | continue; | |||
| 1195 | case File::E_ACCES: | |||
| 1196 | JFW_TRACE2(OUSTR("[Java framework] sunjavaplugin: "do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Could not read directory ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Could not read directory ") / sizeof (("[Java framework] sunjavaplugin: " "Could not read directory ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + usDir2 + ::rtl::OUString( (&(" because of missing access rights." )[0]), ((sal_Int32)((sizeof (" because of missing access rights." ) / sizeof ((" because of missing access rights.")[0]))-1)), ( ((rtl_TextEncoding) 11)) )) == 1) { ::sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1198" ": "), ::sal::detail::unwrapStream( ::sal::detail ::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Could not read directory ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Could not read directory ") / sizeof (("[Java framework] sunjavaplugin: " "Could not read directory ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + usDir2 + ::rtl::OUString( (&(" because of missing access rights." )[0]), ((sal_Int32)((sizeof (" because of missing access rights." ) / sizeof ((" because of missing access rights.")[0]))-1)), ( ((rtl_TextEncoding) 11)) ))); } else { ::std::ostringstream sal_detail_stream ; sal_detail_stream << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Could not read directory ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Could not read directory ") / sizeof (("[Java framework] sunjavaplugin: " "Could not read directory ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + usDir2 + ::rtl::OUString( (&(" because of missing access rights." )[0]), ((sal_Int32)((sizeof (" because of missing access rights." ) / sizeof ((" because of missing access rights.")[0]))-1)), ( ((rtl_TextEncoding) 11)) ); ::sal::detail::log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1198" ": "), sal_detail_stream); } } } while (false) | |||
| 1197 | "Could not read directory ") + usDir2 +do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Could not read directory ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Could not read directory ") / sizeof (("[Java framework] sunjavaplugin: " "Could not read directory ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + usDir2 + ::rtl::OUString( (&(" because of missing access rights." )[0]), ((sal_Int32)((sizeof (" because of missing access rights." ) / sizeof ((" because of missing access rights.")[0]))-1)), ( ((rtl_TextEncoding) 11)) )) == 1) { ::sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1198" ": "), ::sal::detail::unwrapStream( ::sal::detail ::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Could not read directory ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Could not read directory ") / sizeof (("[Java framework] sunjavaplugin: " "Could not read directory ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + usDir2 + ::rtl::OUString( (&(" because of missing access rights." )[0]), ((sal_Int32)((sizeof (" because of missing access rights." ) / sizeof ((" because of missing access rights.")[0]))-1)), ( ((rtl_TextEncoding) 11)) ))); } else { ::std::ostringstream sal_detail_stream ; sal_detail_stream << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Could not read directory ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Could not read directory ") / sizeof (("[Java framework] sunjavaplugin: " "Could not read directory ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + usDir2 + ::rtl::OUString( (&(" because of missing access rights." )[0]), ((sal_Int32)((sizeof (" because of missing access rights." ) / sizeof ((" because of missing access rights.")[0]))-1)), ( ((rtl_TextEncoding) 11)) ); ::sal::detail::log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1198" ": "), sal_detail_stream); } } } while (false) | |||
| 1198 | OUSTR(" because of missing access rights."))do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Could not read directory ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Could not read directory ") / sizeof (("[Java framework] sunjavaplugin: " "Could not read directory ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + usDir2 + ::rtl::OUString( (&(" because of missing access rights." )[0]), ((sal_Int32)((sizeof (" because of missing access rights." ) / sizeof ((" because of missing access rights.")[0]))-1)), ( ((rtl_TextEncoding) 11)) )) == 1) { ::sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1198" ": "), ::sal::detail::unwrapStream( ::sal::detail ::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Could not read directory ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Could not read directory ") / sizeof (("[Java framework] sunjavaplugin: " "Could not read directory ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + usDir2 + ::rtl::OUString( (&(" because of missing access rights." )[0]), ((sal_Int32)((sizeof (" because of missing access rights." ) / sizeof ((" because of missing access rights.")[0]))-1)), ( ((rtl_TextEncoding) 11)) ))); } else { ::std::ostringstream sal_detail_stream ; sal_detail_stream << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Could not read directory ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Could not read directory ") / sizeof (("[Java framework] sunjavaplugin: " "Could not read directory ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + usDir2 + ::rtl::OUString( (&(" because of missing access rights." )[0]), ((sal_Int32)((sizeof (" because of missing access rights." ) / sizeof ((" because of missing access rights.")[0]))-1)), ( ((rtl_TextEncoding) 11)) ); ::sal::detail::log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1198" ": "), sal_detail_stream); } } } while (false); | |||
| 1199 | continue; | |||
| 1200 | default: | |||
| 1201 | JFW_TRACE2(OUSTR("[Java framework] sunjavaplugin: "do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Could not read directory ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Could not read directory ") / sizeof (("[Java framework] sunjavaplugin: " "Could not read directory ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + usDir2 + ::rtl::OUString( (&(". Osl file error: ") [0]), ((sal_Int32)((sizeof (". Osl file error: ") / sizeof (( ". Osl file error: ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + OUString::valueOf((sal_Int32) openErr)) == 1) { ::sal_detail_log ( (::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1204" ": "), ::sal::detail::unwrapStream( ::sal::detail ::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Could not read directory ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Could not read directory ") / sizeof (("[Java framework] sunjavaplugin: " "Could not read directory ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + usDir2 + ::rtl::OUString( (&(". Osl file error: ") [0]), ((sal_Int32)((sizeof (". Osl file error: ") / sizeof (( ". Osl file error: ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + OUString::valueOf((sal_Int32) openErr))); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << ::rtl::OUString ( (&("[Java framework] sunjavaplugin: " "Could not read directory " )[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Could not read directory ") / sizeof (("[Java framework] sunjavaplugin: " "Could not read directory ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + usDir2 + ::rtl::OUString( (&(". Osl file error: ") [0]), ((sal_Int32)((sizeof (". Osl file error: ") / sizeof (( ". Osl file error: ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + OUString::valueOf((sal_Int32) openErr); ::sal::detail::log( ( ::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1204" ": "), sal_detail_stream); } } } while (false) | |||
| 1202 | "Could not read directory ")do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Could not read directory ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Could not read directory ") / sizeof (("[Java framework] sunjavaplugin: " "Could not read directory ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + usDir2 + ::rtl::OUString( (&(". Osl file error: ") [0]), ((sal_Int32)((sizeof (". Osl file error: ") / sizeof (( ". Osl file error: ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + OUString::valueOf((sal_Int32) openErr)) == 1) { ::sal_detail_log ( (::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1204" ": "), ::sal::detail::unwrapStream( ::sal::detail ::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Could not read directory ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Could not read directory ") / sizeof (("[Java framework] sunjavaplugin: " "Could not read directory ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + usDir2 + ::rtl::OUString( (&(". Osl file error: ") [0]), ((sal_Int32)((sizeof (". Osl file error: ") / sizeof (( ". Osl file error: ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + OUString::valueOf((sal_Int32) openErr))); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << ::rtl::OUString ( (&("[Java framework] sunjavaplugin: " "Could not read directory " )[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Could not read directory ") / sizeof (("[Java framework] sunjavaplugin: " "Could not read directory ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + usDir2 + ::rtl::OUString( (&(". Osl file error: ") [0]), ((sal_Int32)((sizeof (". Osl file error: ") / sizeof (( ". Osl file error: ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + OUString::valueOf((sal_Int32) openErr); ::sal::detail::log( ( ::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1204" ": "), sal_detail_stream); } } } while (false) | |||
| 1203 | + usDir2 + OUSTR(". Osl file error: ")do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Could not read directory ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Could not read directory ") / sizeof (("[Java framework] sunjavaplugin: " "Could not read directory ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + usDir2 + ::rtl::OUString( (&(". Osl file error: ") [0]), ((sal_Int32)((sizeof (". Osl file error: ") / sizeof (( ". Osl file error: ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + OUString::valueOf((sal_Int32) openErr)) == 1) { ::sal_detail_log ( (::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1204" ": "), ::sal::detail::unwrapStream( ::sal::detail ::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Could not read directory ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Could not read directory ") / sizeof (("[Java framework] sunjavaplugin: " "Could not read directory ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + usDir2 + ::rtl::OUString( (&(". Osl file error: ") [0]), ((sal_Int32)((sizeof (". Osl file error: ") / sizeof (( ". Osl file error: ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + OUString::valueOf((sal_Int32) openErr))); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << ::rtl::OUString ( (&("[Java framework] sunjavaplugin: " "Could not read directory " )[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Could not read directory ") / sizeof (("[Java framework] sunjavaplugin: " "Could not read directory ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + usDir2 + ::rtl::OUString( (&(". Osl file error: ") [0]), ((sal_Int32)((sizeof (". Osl file error: ") / sizeof (( ". Osl file error: ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + OUString::valueOf((sal_Int32) openErr); ::sal::detail::log( ( ::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1204" ": "), sal_detail_stream); } } } while (false) | |||
| 1204 | + OUString::valueOf((sal_Int32) openErr))do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Could not read directory ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Could not read directory ") / sizeof (("[Java framework] sunjavaplugin: " "Could not read directory ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + usDir2 + ::rtl::OUString( (&(". Osl file error: ") [0]), ((sal_Int32)((sizeof (". Osl file error: ") / sizeof (( ". Osl file error: ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + OUString::valueOf((sal_Int32) openErr)) == 1) { ::sal_detail_log ( (::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1204" ": "), ::sal::detail::unwrapStream( ::sal::detail ::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Could not read directory ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Could not read directory ") / sizeof (("[Java framework] sunjavaplugin: " "Could not read directory ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + usDir2 + ::rtl::OUString( (&(". Osl file error: ") [0]), ((sal_Int32)((sizeof (". Osl file error: ") / sizeof (( ". Osl file error: ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + OUString::valueOf((sal_Int32) openErr))); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << ::rtl::OUString ( (&("[Java framework] sunjavaplugin: " "Could not read directory " )[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Could not read directory ") / sizeof (("[Java framework] sunjavaplugin: " "Could not read directory ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + usDir2 + ::rtl::OUString( (&(". Osl file error: ") [0]), ((sal_Int32)((sizeof (". Osl file error: ") / sizeof (( ". Osl file error: ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + OUString::valueOf((sal_Int32) openErr); ::sal::detail::log( ( ::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1204" ": "), sal_detail_stream); } } } while (false); | |||
| 1205 | continue; | |||
| 1206 | } | |||
| 1207 | ||||
| 1208 | DirectoryItem curIt; | |||
| 1209 | File::RC errNext = File::E_None; | |||
| 1210 | while( (errNext = aCollectionDir.getNextItem(curIt)) == File::E_None) | |||
| 1211 | { | |||
| 1212 | FileStatus aStatus(osl_FileStatus_Mask_FileURL0x00000200); | |||
| 1213 | File::RC errStatus = File::E_None; | |||
| 1214 | if ((errStatus = curIt.getFileStatus(aStatus)) != File::E_None) | |||
| 1215 | { | |||
| 1216 | JFW_TRACE2(excMessage + OUSTR("getFileStatus failed with error ")do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << excMessage + ::rtl::OUString( ( &("getFileStatus failed with error ")[0]), ((sal_Int32)(( sizeof ("getFileStatus failed with error ") / sizeof (("getFileStatus failed with error " )[0]))-1)), (((rtl_TextEncoding) 11)) ) + OUString::valueOf(( sal_Int32) errStatus)) == 1) { ::sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1217" ": "), ::sal::detail::unwrapStream( ::sal::detail ::StreamStart() << excMessage + ::rtl::OUString( (& ("getFileStatus failed with error ")[0]), ((sal_Int32)((sizeof ("getFileStatus failed with error ") / sizeof (("getFileStatus failed with error " )[0]))-1)), (((rtl_TextEncoding) 11)) ) + OUString::valueOf(( sal_Int32) errStatus))); } else { ::std::ostringstream sal_detail_stream ; sal_detail_stream << excMessage + ::rtl::OUString( (& ("getFileStatus failed with error ")[0]), ((sal_Int32)((sizeof ("getFileStatus failed with error ") / sizeof (("getFileStatus failed with error " )[0]))-1)), (((rtl_TextEncoding) 11)) ) + OUString::valueOf(( sal_Int32) errStatus); ::sal::detail::log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1217" ": "), sal_detail_stream); } } } while (false) | |||
| 1217 | + OUString::valueOf((sal_Int32) errStatus))do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << excMessage + ::rtl::OUString( ( &("getFileStatus failed with error ")[0]), ((sal_Int32)(( sizeof ("getFileStatus failed with error ") / sizeof (("getFileStatus failed with error " )[0]))-1)), (((rtl_TextEncoding) 11)) ) + OUString::valueOf(( sal_Int32) errStatus)) == 1) { ::sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1217" ": "), ::sal::detail::unwrapStream( ::sal::detail ::StreamStart() << excMessage + ::rtl::OUString( (& ("getFileStatus failed with error ")[0]), ((sal_Int32)((sizeof ("getFileStatus failed with error ") / sizeof (("getFileStatus failed with error " )[0]))-1)), (((rtl_TextEncoding) 11)) ) + OUString::valueOf(( sal_Int32) errStatus))); } else { ::std::ostringstream sal_detail_stream ; sal_detail_stream << excMessage + ::rtl::OUString( (& ("getFileStatus failed with error ")[0]), ((sal_Int32)((sizeof ("getFileStatus failed with error ") / sizeof (("getFileStatus failed with error " )[0]))-1)), (((rtl_TextEncoding) 11)) ) + OUString::valueOf(( sal_Int32) errStatus); ::sal::detail::log( (::SAL_DETAIL_LOG_LEVEL_INFO ), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1217" ": "), sal_detail_stream); } } } while (false); | |||
| 1218 | continue; | |||
| 1219 | } | |||
| 1220 | JFW_TRACE2(OUSTR("[Java framework] sunjavaplugin: "do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Checking if directory: ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Checking if directory: ") / sizeof (("[Java framework] sunjavaplugin: " "Checking if directory: ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + aStatus.getFileURL() + ::rtl::OUString( (&(" is a Java. \n" )[0]), ((sal_Int32)((sizeof (" is a Java. \n") / sizeof ((" is a Java. \n" )[0]))-1)), (((rtl_TextEncoding) 11)) )) == 1) { ::sal_detail_log ( (::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1222" ": "), ::sal::detail::unwrapStream( ::sal::detail ::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Checking if directory: ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Checking if directory: ") / sizeof (("[Java framework] sunjavaplugin: " "Checking if directory: ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + aStatus.getFileURL() + ::rtl::OUString( (&(" is a Java. \n" )[0]), ((sal_Int32)((sizeof (" is a Java. \n") / sizeof ((" is a Java. \n" )[0]))-1)), (((rtl_TextEncoding) 11)) ))); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << ::rtl::OUString ( (&("[Java framework] sunjavaplugin: " "Checking if directory: " )[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Checking if directory: ") / sizeof (("[Java framework] sunjavaplugin: " "Checking if directory: ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + aStatus.getFileURL() + ::rtl::OUString( (&(" is a Java. \n" )[0]), ((sal_Int32)((sizeof (" is a Java. \n") / sizeof ((" is a Java. \n" )[0]))-1)), (((rtl_TextEncoding) 11)) ); ::sal::detail::log( ( ::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1222" ": "), sal_detail_stream); } } } while (false) | |||
| 1221 | "Checking if directory: ") + aStatus.getFileURL() +do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Checking if directory: ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Checking if directory: ") / sizeof (("[Java framework] sunjavaplugin: " "Checking if directory: ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + aStatus.getFileURL() + ::rtl::OUString( (&(" is a Java. \n" )[0]), ((sal_Int32)((sizeof (" is a Java. \n") / sizeof ((" is a Java. \n" )[0]))-1)), (((rtl_TextEncoding) 11)) )) == 1) { ::sal_detail_log ( (::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1222" ": "), ::sal::detail::unwrapStream( ::sal::detail ::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Checking if directory: ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Checking if directory: ") / sizeof (("[Java framework] sunjavaplugin: " "Checking if directory: ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + aStatus.getFileURL() + ::rtl::OUString( (&(" is a Java. \n" )[0]), ((sal_Int32)((sizeof (" is a Java. \n") / sizeof ((" is a Java. \n" )[0]))-1)), (((rtl_TextEncoding) 11)) ))); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << ::rtl::OUString ( (&("[Java framework] sunjavaplugin: " "Checking if directory: " )[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Checking if directory: ") / sizeof (("[Java framework] sunjavaplugin: " "Checking if directory: ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + aStatus.getFileURL() + ::rtl::OUString( (&(" is a Java. \n" )[0]), ((sal_Int32)((sizeof (" is a Java. \n") / sizeof ((" is a Java. \n" )[0]))-1)), (((rtl_TextEncoding) 11)) ); ::sal::detail::log( ( ::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1222" ": "), sal_detail_stream); } } } while (false) | |||
| 1222 | OUSTR(" is a Java. \n"))do { if (true) { if (sizeof ::sal::detail::getResult( ::sal:: detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Checking if directory: ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Checking if directory: ") / sizeof (("[Java framework] sunjavaplugin: " "Checking if directory: ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + aStatus.getFileURL() + ::rtl::OUString( (&(" is a Java. \n" )[0]), ((sal_Int32)((sizeof (" is a Java. \n") / sizeof ((" is a Java. \n" )[0]))-1)), (((rtl_TextEncoding) 11)) )) == 1) { ::sal_detail_log ( (::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1222" ": "), ::sal::detail::unwrapStream( ::sal::detail ::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Checking if directory: ")[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Checking if directory: ") / sizeof (("[Java framework] sunjavaplugin: " "Checking if directory: ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + aStatus.getFileURL() + ::rtl::OUString( (&(" is a Java. \n" )[0]), ((sal_Int32)((sizeof (" is a Java. \n") / sizeof ((" is a Java. \n" )[0]))-1)), (((rtl_TextEncoding) 11)) ))); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << ::rtl::OUString ( (&("[Java framework] sunjavaplugin: " "Checking if directory: " )[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Checking if directory: ") / sizeof (("[Java framework] sunjavaplugin: " "Checking if directory: ")[0]))-1)), (((rtl_TextEncoding) 11 )) ) + aStatus.getFileURL() + ::rtl::OUString( (&(" is a Java. \n" )[0]), ((sal_Int32)((sizeof (" is a Java. \n") / sizeof ((" is a Java. \n" )[0]))-1)), (((rtl_TextEncoding) 11)) ); ::sal::detail::log( ( ::SAL_DETAIL_LOG_LEVEL_INFO), ("jfw.level2"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1222" ": "), sal_detail_stream); } } } while (false); | |||
| 1223 | ||||
| 1224 | getJREInfoByPath(aStatus.getFileURL(),vecInfos); | |||
| 1225 | } | |||
| 1226 | ||||
| 1227 | JFW_ENSURE(errNext == File::E_None || errNext == File::E_NOENT,do { if (true && (!(errNext == File::E_None || errNext == File::E_NOENT))) { if (sizeof ::sal::detail::getResult( :: sal::detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Error while iterating over contens of ")[0]), ((sal_Int32)( (sizeof ("[Java framework] sunjavaplugin: " "Error while iterating over contens of " ) / sizeof (("[Java framework] sunjavaplugin: " "Error while iterating over contens of " )[0]))-1)), (((rtl_TextEncoding) 11)) ) + usDir2 + ::rtl::OUString ( (&(". Osl file error: ")[0]), ((sal_Int32)((sizeof (". Osl file error: " ) / sizeof ((". Osl file error: ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + OUString::valueOf((sal_Int32) openErr)) == 1) { :: sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_WARN), ("jfw"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1231" ": "), ::sal::detail::unwrapStream( ::sal::detail ::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Error while iterating over contens of ")[0]), ((sal_Int32)( (sizeof ("[Java framework] sunjavaplugin: " "Error while iterating over contens of " ) / sizeof (("[Java framework] sunjavaplugin: " "Error while iterating over contens of " )[0]))-1)), (((rtl_TextEncoding) 11)) ) + usDir2 + ::rtl::OUString ( (&(". Osl file error: ")[0]), ((sal_Int32)((sizeof (". Osl file error: " ) / sizeof ((". Osl file error: ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + OUString::valueOf((sal_Int32) openErr))); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Error while iterating over contens of " )[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Error while iterating over contens of ") / sizeof (("[Java framework] sunjavaplugin: " "Error while iterating over contens of ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + usDir2 + ::rtl::OUString( (&(". Osl file error: " )[0]), ((sal_Int32)((sizeof (". Osl file error: ") / sizeof ( (". Osl file error: ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + OUString::valueOf((sal_Int32) openErr); ::sal::detail::log( ( ::SAL_DETAIL_LOG_LEVEL_WARN), ("jfw"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1231" ": "), sal_detail_stream); } } } while (false) | |||
| 1228 | OUSTR("[Java framework] sunjavaplugin: "do { if (true && (!(errNext == File::E_None || errNext == File::E_NOENT))) { if (sizeof ::sal::detail::getResult( :: sal::detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Error while iterating over contens of ")[0]), ((sal_Int32)( (sizeof ("[Java framework] sunjavaplugin: " "Error while iterating over contens of " ) / sizeof (("[Java framework] sunjavaplugin: " "Error while iterating over contens of " )[0]))-1)), (((rtl_TextEncoding) 11)) ) + usDir2 + ::rtl::OUString ( (&(". Osl file error: ")[0]), ((sal_Int32)((sizeof (". Osl file error: " ) / sizeof ((". Osl file error: ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + OUString::valueOf((sal_Int32) openErr)) == 1) { :: sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_WARN), ("jfw"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1231" ": "), ::sal::detail::unwrapStream( ::sal::detail ::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Error while iterating over contens of ")[0]), ((sal_Int32)( (sizeof ("[Java framework] sunjavaplugin: " "Error while iterating over contens of " ) / sizeof (("[Java framework] sunjavaplugin: " "Error while iterating over contens of " )[0]))-1)), (((rtl_TextEncoding) 11)) ) + usDir2 + ::rtl::OUString ( (&(". Osl file error: ")[0]), ((sal_Int32)((sizeof (". Osl file error: " ) / sizeof ((". Osl file error: ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + OUString::valueOf((sal_Int32) openErr))); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Error while iterating over contens of " )[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Error while iterating over contens of ") / sizeof (("[Java framework] sunjavaplugin: " "Error while iterating over contens of ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + usDir2 + ::rtl::OUString( (&(". Osl file error: " )[0]), ((sal_Int32)((sizeof (". Osl file error: ") / sizeof ( (". Osl file error: ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + OUString::valueOf((sal_Int32) openErr); ::sal::detail::log( ( ::SAL_DETAIL_LOG_LEVEL_WARN), ("jfw"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1231" ": "), sal_detail_stream); } } } while (false) | |||
| 1229 | "Error while iterating over contens of ")do { if (true && (!(errNext == File::E_None || errNext == File::E_NOENT))) { if (sizeof ::sal::detail::getResult( :: sal::detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Error while iterating over contens of ")[0]), ((sal_Int32)( (sizeof ("[Java framework] sunjavaplugin: " "Error while iterating over contens of " ) / sizeof (("[Java framework] sunjavaplugin: " "Error while iterating over contens of " )[0]))-1)), (((rtl_TextEncoding) 11)) ) + usDir2 + ::rtl::OUString ( (&(". Osl file error: ")[0]), ((sal_Int32)((sizeof (". Osl file error: " ) / sizeof ((". Osl file error: ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + OUString::valueOf((sal_Int32) openErr)) == 1) { :: sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_WARN), ("jfw"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1231" ": "), ::sal::detail::unwrapStream( ::sal::detail ::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Error while iterating over contens of ")[0]), ((sal_Int32)( (sizeof ("[Java framework] sunjavaplugin: " "Error while iterating over contens of " ) / sizeof (("[Java framework] sunjavaplugin: " "Error while iterating over contens of " )[0]))-1)), (((rtl_TextEncoding) 11)) ) + usDir2 + ::rtl::OUString ( (&(". Osl file error: ")[0]), ((sal_Int32)((sizeof (". Osl file error: " ) / sizeof ((". Osl file error: ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + OUString::valueOf((sal_Int32) openErr))); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Error while iterating over contens of " )[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Error while iterating over contens of ") / sizeof (("[Java framework] sunjavaplugin: " "Error while iterating over contens of ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + usDir2 + ::rtl::OUString( (&(". Osl file error: " )[0]), ((sal_Int32)((sizeof (". Osl file error: ") / sizeof ( (". Osl file error: ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + OUString::valueOf((sal_Int32) openErr); ::sal::detail::log( ( ::SAL_DETAIL_LOG_LEVEL_WARN), ("jfw"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1231" ": "), sal_detail_stream); } } } while (false) | |||
| 1230 | + usDir2 + OUSTR(". Osl file error: ")do { if (true && (!(errNext == File::E_None || errNext == File::E_NOENT))) { if (sizeof ::sal::detail::getResult( :: sal::detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Error while iterating over contens of ")[0]), ((sal_Int32)( (sizeof ("[Java framework] sunjavaplugin: " "Error while iterating over contens of " ) / sizeof (("[Java framework] sunjavaplugin: " "Error while iterating over contens of " )[0]))-1)), (((rtl_TextEncoding) 11)) ) + usDir2 + ::rtl::OUString ( (&(". Osl file error: ")[0]), ((sal_Int32)((sizeof (". Osl file error: " ) / sizeof ((". Osl file error: ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + OUString::valueOf((sal_Int32) openErr)) == 1) { :: sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_WARN), ("jfw"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1231" ": "), ::sal::detail::unwrapStream( ::sal::detail ::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Error while iterating over contens of ")[0]), ((sal_Int32)( (sizeof ("[Java framework] sunjavaplugin: " "Error while iterating over contens of " ) / sizeof (("[Java framework] sunjavaplugin: " "Error while iterating over contens of " )[0]))-1)), (((rtl_TextEncoding) 11)) ) + usDir2 + ::rtl::OUString ( (&(". Osl file error: ")[0]), ((sal_Int32)((sizeof (". Osl file error: " ) / sizeof ((". Osl file error: ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + OUString::valueOf((sal_Int32) openErr))); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Error while iterating over contens of " )[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Error while iterating over contens of ") / sizeof (("[Java framework] sunjavaplugin: " "Error while iterating over contens of ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + usDir2 + ::rtl::OUString( (&(". Osl file error: " )[0]), ((sal_Int32)((sizeof (". Osl file error: ") / sizeof ( (". Osl file error: ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + OUString::valueOf((sal_Int32) openErr); ::sal::detail::log( ( ::SAL_DETAIL_LOG_LEVEL_WARN), ("jfw"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1231" ": "), sal_detail_stream); } } } while (false) | |||
| 1231 | + OUString::valueOf((sal_Int32) openErr))do { if (true && (!(errNext == File::E_None || errNext == File::E_NOENT))) { if (sizeof ::sal::detail::getResult( :: sal::detail::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Error while iterating over contens of ")[0]), ((sal_Int32)( (sizeof ("[Java framework] sunjavaplugin: " "Error while iterating over contens of " ) / sizeof (("[Java framework] sunjavaplugin: " "Error while iterating over contens of " )[0]))-1)), (((rtl_TextEncoding) 11)) ) + usDir2 + ::rtl::OUString ( (&(". Osl file error: ")[0]), ((sal_Int32)((sizeof (". Osl file error: " ) / sizeof ((". Osl file error: ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + OUString::valueOf((sal_Int32) openErr)) == 1) { :: sal_detail_log( (::SAL_DETAIL_LOG_LEVEL_WARN), ("jfw"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1231" ": "), ::sal::detail::unwrapStream( ::sal::detail ::StreamStart() << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Error while iterating over contens of ")[0]), ((sal_Int32)( (sizeof ("[Java framework] sunjavaplugin: " "Error while iterating over contens of " ) / sizeof (("[Java framework] sunjavaplugin: " "Error while iterating over contens of " )[0]))-1)), (((rtl_TextEncoding) 11)) ) + usDir2 + ::rtl::OUString ( (&(". Osl file error: ")[0]), ((sal_Int32)((sizeof (". Osl file error: " ) / sizeof ((". Osl file error: ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + OUString::valueOf((sal_Int32) openErr))); } else { ::std::ostringstream sal_detail_stream; sal_detail_stream << ::rtl::OUString( (&("[Java framework] sunjavaplugin: " "Error while iterating over contens of " )[0]), ((sal_Int32)((sizeof ("[Java framework] sunjavaplugin: " "Error while iterating over contens of ") / sizeof (("[Java framework] sunjavaplugin: " "Error while iterating over contens of ")[0]))-1)), (((rtl_TextEncoding ) 11)) ) + usDir2 + ::rtl::OUString( (&(". Osl file error: " )[0]), ((sal_Int32)((sizeof (". Osl file error: ") / sizeof ( (". Osl file error: ")[0]))-1)), (((rtl_TextEncoding) 11)) ) + OUString::valueOf((sal_Int32) openErr); ::sal::detail::log( ( ::SAL_DETAIL_LOG_LEVEL_WARN), ("jfw"), ("/usr/local/src/libreoffice/jvmfwk/plugins/sunmajor/pluginlib/util.cxx" ":" "1231" ": "), sal_detail_stream); } } } while (false); | |||
| 1232 | } | |||
| 1233 | else | |||
| 1234 | { | |||
| 1235 | //usr/java | |||
| 1236 | //When we look directly into a dir like /usr, /usr/lib, etc. then we only | |||
| 1237 | //look for certain java directories, such as jre, jdk, etc. Whe do not want | |||
| 1238 | //to examine the whole directory because of performance reasons. | |||
| 1239 | DirectoryItem item2; | |||
| 1240 | if(DirectoryItem::get(usDir2, item2) == File::E_None) | |||
| 1241 | { | |||
| 1242 | for( int k= 0; k < cJavaNames; k++) | |||
| 1243 | { | |||
| 1244 | // /usr/java/j2re1.4.0 | |||
| 1245 | OUString usDir3(usDir2 + arNames[k]); | |||
| 1246 | ||||
| 1247 | DirectoryItem item3; | |||
| 1248 | if(DirectoryItem::get(usDir3, item) == File::E_None) | |||
| 1249 | { | |||
| 1250 | //remove trailing '/' | |||
| 1251 | sal_Int32 islash = usDir3.lastIndexOf('/'); | |||
| 1252 | if (islash == usDir3.getLength() - 1 | |||
| 1253 | && (islash | |||
| 1254 | > RTL_CONSTASCII_LENGTH("file://")((sal_Int32)((sizeof ("file://") / sizeof (("file://")[0]))-1 )))) | |||
| 1255 | usDir3 = usDir3.copy(0, islash); | |||
| 1256 | getJREInfoByPath(usDir3,vecInfos); | |||
| 1257 | } | |||
| 1258 | } | |||
| 1259 | } | |||
| 1260 | } | |||
| 1261 | } | |||
| 1262 | } | |||
| 1263 | } | |||
| 1264 | } | |||
| 1265 | #endif // ifdef SOLARIS | |||
| 1266 | #endif // ifdef UNX | |||
| 1267 | } | |||
| 1268 | ||||
| 1269 | /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |