Files
libreoffice/desktop/source/deployment/misc/dp_misc.cxx

601 lines
17 KiB
C++
Raw Normal View History

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
re-base on ALv2 code. Includes: Patch contributed by: Jurgen Schmidt remove onlineregistration with dependencies http://svn.apache.org/viewvc?view=revision&revision=1240245 imported patch package_eventlistener.patch http://svn.apache.org/viewvc?view=revision&revision=1172103 Patch contributed by Pedro Giffuni Accept Google Chrome OS fonts as equivalent to MS fonts. http://svn.apache.org/viewvc?view=revision&revision=1233155 http://svn.apache.org/viewvc?view=revision&revision=1233408 Patch contributed by Andre Fischer Do not add targets for junit tests when junit is disabled. http://svn.apache.org/viewvc?view=revision&revision=1241508 Patches contributed by Mathias Bauer (and others) gnumake4 work variously http://svn.apache.org/viewvc?view=revision&revision=1394707 http://svn.apache.org/viewvc?view=revision&revision=1394326 cws mba34issues01: #i114600#: remove forbidden characters from list of unencoded characters http://svn.apache.org/viewvc?view=revision&revision=1172370 Patches contributed by Oliver Rainer-Wittman some clean up in JPEGReader due to memory constraints http://svn.apache.org/viewvc?view=revision&revision=1299729 119114 - method <UpdateDialog::addSpecificError(..)> - create entry with correct type http://svn.apache.org/viewvc?view=revision&revision=1305265 Patches contributed by Ariel Constenla-Haile i118707 - make toolbar control's popup window grab focus http://svn.apache.org/viewvc?view=revision&revision=1225846 Patches contributed by Herbert Duerr #i118662# remove usage of BerkeleyDB in desktop module http://svn.apache.org/viewvc?view=revision&revision=1213171 minor cleanups in dp_persmap.* http://svn.apache.org/viewvc?view=revision&revision=1215064 flush early to prevent problem with extension manager not cleaning up its objects http://svn.apache.org/viewvc?view=revision&revision=1228147 i118726 do not flush *pmap file while reading it http://svn.apache.org/viewvc?view=revision&revision=1230614 #i119048# migrate BDB extension entries using a simple heuristic http://svn.apache.org/viewvc?view=revision&revision=1300972 #i119048# handle edge cases when importing BDB hash files http://svn.apache.org/viewvc?view=revision&revision=1301428 #i119113# fix of-by-one when importing BDB files http://svn.apache.org/viewvc?view=revision&revision=1305420 restore our encryption settings, icon themes, and dictionaries. removed wrapper hacks, kill obsolete bundled extension blob / pre-registration handling, remove duplicated quickstart code. remove OS/2 conditionals.
2012-11-15 17:28:16 +00:00
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#include <config_folders.h>
#include <config_features.h>
#include "dp_misc.h"
#include "dp_version.hxx"
#include "dp_interact.h"
#include <rtl/uri.hxx>
#include <rtl/digest.h>
#include <rtl/random.h>
#include <rtl/bootstrap.hxx>
#include <unotools/bootstrap.hxx>
#include <osl/file.hxx>
#include <osl/pipe.hxx>
#include <osl/security.hxx>
#include <osl/thread.hxx>
#include <osl/mutex.hxx>
#include <com/sun/star/ucb/CommandAbortedException.hpp>
#include <com/sun/star/task/XInteractionHandler.hpp>
#include <com/sun/star/bridge/BridgeFactory.hpp>
#include <com/sun/star/bridge/UnoUrlResolver.hpp>
#include <com/sun/star/bridge/XUnoUrlResolver.hpp>
#include <com/sun/star/deployment/ExtensionManager.hpp>
#include <com/sun/star/task/OfficeRestartManager.hpp>
#include <boost/scoped_array.hpp>
#include <boost/shared_ptr.hpp>
#include <comphelper/lok.hxx>
#include <comphelper/processfactory.hxx>
2011-05-25 08:53:52 +01:00
#include <salhelper/linkhelper.hxx>
2009-01-22 17:12:19 +00:00
#ifdef WNT
#define UNICODE
#define WIN32_LEAN_AND_MEAN
2011-07-21 23:33:35 +03:00
#include <windows.h>
2009-01-22 17:12:19 +00:00
#endif
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
#if defined WNT
#define SOFFICE1 "soffice.exe"
#define SBASE "sbase.exe"
#define SCALC "scalc.exe"
#define SDRAW "sdraw.exe"
#define SIMPRESS "simpress.exe"
#define SWRITER "swriter.exe"
#endif
#ifdef MACOSX
#define SOFFICE2 "soffice"
#else
#define SOFFICE2 "soffice.bin"
#endif
namespace dp_misc {
namespace {
struct UnoRc : public rtl::StaticWithInit<
boost::shared_ptr<rtl::Bootstrap>, UnoRc> {
const boost::shared_ptr<rtl::Bootstrap> operator () () {
OUString unorc( "$BRAND_BASE_DIR/" LIBO_ETC_FOLDER "/" SAL_CONFIGFILE("louno") );
::rtl::Bootstrap::expandMacros( unorc );
::boost::shared_ptr< ::rtl::Bootstrap > ret(
new ::rtl::Bootstrap( unorc ) );
OSL_ASSERT( ret->getHandle() != 0 );
return ret;
}
};
struct OfficePipeId : public rtl::StaticWithInit<OUString, OfficePipeId> {
const OUString operator () ();
};
const OUString OfficePipeId::operator () ()
{
OUString userPath;
::utl::Bootstrap::PathStatus aLocateResult =
::utl::Bootstrap::locateUserInstallation( userPath );
if (!(aLocateResult == ::utl::Bootstrap::PATH_EXISTS ||
aLocateResult == ::utl::Bootstrap::PATH_VALID))
{
throw Exception("Extension Manager: Could not obtain path for UserInstallation.", 0);
}
rtlDigest digest = rtl_digest_create( rtl_Digest_AlgorithmMD5 );
if (!digest) {
throw RuntimeException("cannot get digest rtl_Digest_AlgorithmMD5!", 0 );
}
sal_uInt8 const * data =
reinterpret_cast<sal_uInt8 const *>(userPath.getStr());
sal_Size size = (userPath.getLength() * sizeof (sal_Unicode));
sal_uInt32 md5_key_len = rtl_digest_queryLength( digest );
::boost::scoped_array<sal_uInt8> md5_buf( new sal_uInt8 [ md5_key_len ] );
rtl_digest_init( digest, data, static_cast<sal_uInt32>(size) );
rtl_digest_update( digest, data, static_cast<sal_uInt32>(size) );
rtl_digest_get( digest, md5_buf.get(), md5_key_len );
rtl_digest_destroy( digest );
// create hex-value string from the MD5 value to keep
// the string size minimal
OUStringBuffer buf;
buf.appendAscii( "SingleOfficeIPC_" );
for ( sal_uInt32 i = 0; i < md5_key_len; ++i ) {
buf.append( static_cast<sal_Int32>(md5_buf[ i ]), 0x10 );
}
return buf.makeStringAndClear();
}
bool existsOfficePipe()
{
OUString const & pipeId = OfficePipeId::get();
if (pipeId.isEmpty())
return false;
::osl::Security sec;
::osl::Pipe pipe( pipeId, osl_Pipe_OPEN, sec );
return pipe.is();
}
//get modification time
static bool getModifyTimeTargetFile(const OUString &rFileURL, TimeValue &rTime)
{
2011-05-25 08:53:52 +01:00
salhelper::LinkResolver aResolver(osl_FileStatus_Mask_ModifyTime);
2011-05-25 08:53:52 +01:00
if (aResolver.fetchFileStatus(rFileURL) != osl::FileBase::E_None)
return false;
2011-05-25 08:53:52 +01:00
rTime = aResolver.m_aStatus.getModifyTime();
return true;
}
//Returns true if the Folder was more recently modified then
//the lastsynchronized file. That is the repository needs to
//be synchronized.
bool compareExtensionFolderWithLastSynchronizedFile(
OUString const & folderURL, OUString const & fileURL)
{
bool bNeedsSync = false;
::osl::DirectoryItem itemExtFolder;
::osl::File::RC err1 =
::osl::DirectoryItem::get(folderURL, itemExtFolder);
//If it does not exist, then there is nothing to be done
if (err1 == ::osl::File::E_NOENT)
{
return false;
}
else if (err1 != ::osl::File::E_None)
{
OSL_FAIL("Cannot access extension folder");
return true; //sync just in case
}
//If last synchronized does not exist, then OOo is started for the first time
::osl::DirectoryItem itemFile;
::osl::File::RC err2 = ::osl::DirectoryItem::get(fileURL, itemFile);
if (err2 == ::osl::File::E_NOENT)
{
return true;
}
else if (err2 != ::osl::File::E_None)
{
OSL_FAIL("Cannot access file lastsynchronized");
return true; //sync just in case
}
//compare the modification time of the extension folder and the last
//modified file
TimeValue timeFolder;
if (getModifyTimeTargetFile(folderURL, timeFolder))
{
TimeValue timeFile;
if (getModifyTimeTargetFile(fileURL, timeFile))
{
if (timeFile.Seconds < timeFolder.Seconds)
bNeedsSync = true;
}
else
{
OSL_ASSERT(false);
bNeedsSync = true;
}
}
else
{
OSL_ASSERT(false);
bNeedsSync = true;
}
return bNeedsSync;
}
bool needToSyncRepository(OUString const & name)
{
OUString folder;
OUString file;
2012-04-06 14:09:04 +02:00
if ( name == "bundled" )
{
folder = "$BUNDLED_EXTENSIONS";
file = "$BUNDLED_EXTENSIONS_USER/lastsynchronized";
}
2012-04-06 14:09:04 +02:00
else if ( name == "shared" )
{
folder = "$UNO_SHARED_PACKAGES_CACHE/uno_packages";
file = "$SHARED_EXTENSIONS_USER/lastsynchronized";
}
else
{
OSL_ASSERT(false);
return true;
}
::rtl::Bootstrap::expandMacros(folder);
::rtl::Bootstrap::expandMacros(file);
return compareExtensionFolderWithLastSynchronizedFile(
folder, file);
}
} // anon namespace
namespace {
inline OUString encodeForRcFile( OUString const & str )
{
// escape $\{} (=> rtl bootstrap files)
OUStringBuffer buf;
sal_Int32 pos = 0;
const sal_Int32 len = str.getLength();
for ( ; pos < len; ++pos ) {
sal_Unicode c = str[ pos ];
switch (c) {
case '$':
case '\\':
case '{':
case '}':
buf.append( '\\' );
break;
}
buf.append( c );
}
return buf.makeStringAndClear();
}
}
OUString makeURL( OUString const & baseURL, OUString const & relPath_ )
{
OUStringBuffer buf;
if (baseURL.getLength() > 1 && baseURL[ baseURL.getLength() - 1 ] == '/')
buf.append( baseURL.copy( 0, baseURL.getLength() - 1 ) );
else
buf.append( baseURL );
OUString relPath(relPath_);
if( relPath.startsWith("/") )
relPath = relPath.copy( 1 );
if (!relPath.isEmpty())
{
buf.append( '/' );
if (baseURL.match( "vnd.sun.star.expand:" )) {
// encode for macro expansion: relPath is supposed to have no
// macros, so encode $, {} \ (bootstrap mimic)
relPath = encodeForRcFile(relPath);
// encode once more for vnd.sun.star.expand schema:
// vnd.sun.star.expand:$UNO_...
// will expand to file-url
relPath = ::rtl::Uri::encode( relPath, rtl_UriCharClassUric,
rtl_UriEncodeIgnoreEscapes,
RTL_TEXTENCODING_UTF8 );
}
buf.append( relPath );
}
return buf.makeStringAndClear();
}
OUString makeURLAppendSysPathSegment( OUString const & baseURL, OUString const & relPath_ )
{
OUString segment = relPath_;
OSL_ASSERT(segment.indexOf(static_cast<sal_Unicode>('/')) == -1);
::rtl::Uri::encode(
segment, rtl_UriCharClassPchar, rtl_UriEncodeIgnoreEscapes,
RTL_TEXTENCODING_UTF8);
return makeURL(baseURL, segment);
}
OUString expandUnoRcTerm( OUString const & term_ )
{
OUString term(term_);
UnoRc::get()->expandMacrosFrom( term );
return term;
}
OUString makeRcTerm( OUString const & url )
{
OSL_ASSERT( url.match( "vnd.sun.star.expand:" ));
if (url.match( "vnd.sun.star.expand:" )) {
// cut protocol:
OUString rcterm( url.copy( sizeof ("vnd.sun.star.expand:") - 1 ) );
// decode uric class chars:
rcterm = ::rtl::Uri::decode(
rcterm, rtl_UriDecodeWithCharset, RTL_TEXTENCODING_UTF8 );
return rcterm;
}
else
return url;
}
OUString expandUnoRcUrl( OUString const & url )
{
if (url.match( "vnd.sun.star.expand:" )) {
// cut protocol:
OUString rcurl( url.copy( sizeof ("vnd.sun.star.expand:") - 1 ) );
// decode uric class chars:
rcurl = ::rtl::Uri::decode(
rcurl, rtl_UriDecodeWithCharset, RTL_TEXTENCODING_UTF8 );
// expand macro string:
UnoRc::get()->expandMacrosFrom( rcurl );
return rcurl;
}
else {
return url;
}
}
bool office_is_running()
{
//We need to check if we run within the office process. Then we must not use the pipe, because
//this could cause a deadlock. This is actually a workaround for i82778
OUString sFile;
oslProcessError err = osl_getExecutableFile(& sFile.pData);
bool ret = false;
if (osl_Process_E_None == err)
{
sFile = sFile.copy(sFile.lastIndexOf('/') + 1);
if (
#if defined UNIX
2012-04-06 14:09:04 +02:00
sFile == SOFFICE2
2011-05-21 16:26:08 +03:00
#elif defined WNT
//osl_getExecutableFile should deliver "soffice.bin" on windows
//even if swriter.exe, scalc.exe etc. was started. This is a bug
//in osl_getExecutableFile
2012-04-06 14:09:04 +02:00
sFile == SOFFICE1 || sFile == SOFFICE2 || sFile == SBASE || sFile == SCALC
|| sFile == SDRAW || sFile == SIMPRESS || sFile == SWRITER
#else
#error "Unsupported platform"
#endif
)
ret = true;
else
ret = existsOfficePipe();
}
else
{
OSL_FAIL("NOT osl_Process_E_None ");
//if osl_getExecutable file than we take the risk of creating a pipe
ret = existsOfficePipe();
}
return ret;
}
oslProcess raiseProcess(
OUString const & appURL, Sequence<OUString> const & args )
{
::osl::Security sec;
oslProcess hProcess = 0;
oslProcessError rc = osl_executeProcess(
appURL.pData,
reinterpret_cast<rtl_uString **>(
const_cast<OUString *>(args.getConstArray()) ),
args.getLength(),
osl_Process_DETACHED,
sec.getHandle(),
0, // => current working dir
0, 0, // => no env vars
&hProcess );
switch (rc) {
case osl_Process_E_None:
break;
case osl_Process_E_NotFound:
throw RuntimeException( "image not found!", 0 );
case osl_Process_E_TimedOut:
Many spelling fixes: directories a* - g*. Attempt to clean up most but certainly not all the spelling mistakes that found home in OpenOffice through decades. We could probably blame the international nature of the code but it is somewhat shameful that this wasn't done before. (cherry picked from commit a6efc99d19d533fcf53106b6667bafba4d364370) Conflicts: accessibility/bridge/org/openoffice/java/accessibility/AccessibleTextImpl.java accessibility/bridge/org/openoffice/java/accessibility/Component.java accessibility/bridge/org/openoffice/java/accessibility/Container.java accessibility/bridge/org/openoffice/java/accessibility/DescendantManager.java accessibility/bridge/org/openoffice/java/accessibility/Dialog.java accessibility/bridge/org/openoffice/java/accessibility/Frame.java accessibility/bridge/org/openoffice/java/accessibility/List.java accessibility/bridge/org/openoffice/java/accessibility/Menu.java accessibility/bridge/org/openoffice/java/accessibility/Table.java accessibility/bridge/org/openoffice/java/accessibility/Tree.java accessibility/bridge/org/openoffice/java/accessibility/Window.java accessibility/bridge/source/java/WindowsAccessBridgeAdapter.cxx accessibility/inc/accessibility/extended/AccessibleBrowseBoxBase.hxx accessibility/inc/accessibility/extended/AccessibleGridControlBase.hxx accessibility/inc/accessibility/standard/vclxaccessiblebox.hxx accessibility/source/extended/accessibleiconchoicectrlentry.cxx accessibility/source/extended/accessiblelistboxentry.cxx accessibility/source/extended/accessibletablistbox.cxx accessibility/source/extended/accessibletablistboxtable.cxx accessibility/workben/org/openoffice/accessibility/awb/canvas/Canvas.java accessibility/workben/org/openoffice/accessibility/misc/OfficeConnection.java apple_remote/AppleRemote.m autodoc/inc/ary/cpp/c_gate.hxx autodoc/inc/ary/cpp/cp_ce.hxx autodoc/inc/ary/cpp/cp_def.hxx autodoc/inc/ary/cpp/cp_type.hxx autodoc/inc/ary/doc/d_parametrized.hxx autodoc/inc/ary/idl/i_type.hxx autodoc/source/ary/inc/cross_refs.hxx autodoc/source/ary/inc/sorted_idset.hxx autodoc/source/display/html/outfile.hxx autodoc/source/display/html/pagemake.cxx autodoc/source/display/idl/hi_env.hxx autodoc/source/parser/inc/tokens/tokproct.hxx autodoc/source/parser_i/inc/s2_luidl/tokproct.hxx autodoc/source/parser_i/inc/tokens/tkp2.hxx automation/inc/automation/commtypes.hxx automation/inc/automation/simplecm.hxx automation/source/server/recorder.cxx automation/source/server/recorder.hxx automation/source/server/statemnt.cxx automation/source/simplecm/packethandler.hxx automation/source/simplecm/simplecm.cxx avmedia/source/framework/soundhandler.cxx basegfx/inc/basegfx/range/rangeexpander.hxx basic/inc/basic/sbxdef.hxx basic/source/classes/sbunoobj.cxx basic/source/classes/sbxmod.cxx basic/source/comp/dim.cxx basic/source/comp/exprgen.cxx basic/source/runtime/step1.cxx basic/source/runtime/step2.cxx basic/source/sbx/sbxint.cxx basic/source/uno/namecont.cxx basic/workben/mgrtest.cxx bean/com/sun/star/beans/LocalOfficeConnection.java bean/com/sun/star/beans/LocalOfficeWindow.java bean/com/sun/star/comp/beans/LocalOfficeConnection.java bean/com/sun/star/comp/beans/LocalOfficeWindow.java bean/com/sun/star/comp/beans/OOoBean.java bridges/inc/bridges/cpp_uno/bridge.hxx bridges/source/cpp_uno/cc50_solaris_intel/cpp2uno.cxx bridges/source/cpp_uno/cc50_solaris_intel/except.cxx bridges/source/cpp_uno/cc50_solaris_intel/uno2cpp.cxx bridges/source/cpp_uno/cc50_solaris_sparc/cpp2uno.cxx bridges/source/cpp_uno/cc50_solaris_sparc/except.cxx bridges/source/cpp_uno/cc50_solaris_sparc/uno2cpp.cxx bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx bridges/source/cpp_uno/gcc3_macosx_x86-64/uno2cpp.cxx bridges/source/cpp_uno/gcc3_netbsd_intel/cpp2uno.cxx bridges/source/cpp_uno/gcc3_netbsd_intel/except.cxx bridges/source/cpp_uno/gcc3_netbsd_intel/uno2cpp.cxx bridges/source/cpp_uno/gcc3_os2_intel/cpp2uno.cxx bridges/source/cpp_uno/gcc3_os2_intel/except.cxx bridges/source/cpp_uno/gcc3_os2_intel/uno2cpp.cxx bridges/source/cpp_uno/mingw_x86-64/uno2cpp.cxx bridges/source/cpp_uno/msvc_win32_intel/except.cxx bridges/source/cpp_uno/s5abi_macosx_x86-64/except.cxx bridges/source/cpp_uno/shared/component.cxx bridges/source/jni_uno/jni_base.h bridges/source/jni_uno/jni_bridge.cxx bridges/source/jni_uno/jni_java2uno.cxx bridges/source/jni_uno/jni_uno2java.cxx canvas/inc/canvas/base/doublebitmapbase.hxx canvas/inc/canvas/base/floatbitmapbase.hxx canvas/inc/canvas/base/integerbitmapbase.hxx canvas/source/cairo/cairo_canvasbitmap.cxx canvas/source/cairo/cairo_textlayout.cxx chart2/source/controller/dialogs/ObjectNameProvider.cxx chart2/source/view/diagram/VDiagram.cxx chart2/source/view/main/ChartView.cxx cli_ure/source/native/makefile.mk cli_ure/source/uno_bridge/cli_data.cxx codemaker/source/javamaker/javatype.cxx comphelper/inc/comphelper/componentcontext.hxx comphelper/inc/comphelper/interaction.hxx comphelper/inc/comphelper/locale.hxx comphelper/inc/comphelper/string.hxx comphelper/source/container/embeddedobjectcontainer.cxx comphelper/source/misc/accessiblecontexthelper.cxx comphelper/source/misc/asyncnotification.cxx comphelper/source/misc/locale.cxx comphelper/source/misc/mediadescriptor.cxx comphelper/source/misc/numberedcollection.cxx comphelper/source/misc/proxyaggregation.cxx comphelper/source/misc/scopeguard.cxx comphelper/source/misc/sequenceashashmap.cxx configure.in connectivity/source/commontools/parameters.cxx connectivity/source/drivers/dbase/DTable.cxx connectivity/source/drivers/evoab2/NStatement.cxx connectivity/source/drivers/file/FPreparedStatement.cxx connectivity/source/drivers/jdbc/DatabaseMetaData.cxx connectivity/source/inc/flat/ETable.hxx connectivity/source/parse/sqlnode.cxx cosv/inc/cosv/persist.hxx cosv/inc/cosv/ploc_dir.hxx cosv/inc/cosv/tpl/dyn.hxx cppu/source/LogBridge/LogBridge.cxx cppu/source/uno/data.cxx cppuhelper/source/bootstrap.cxx cppuhelper/source/component_context.cxx cppuhelper/source/propshlp.cxx cppuhelper/source/servicefactory.cxx cpputools/source/registercomponent/registercomponent.cxx cui/source/customize/acccfg.cxx cui/source/dialogs/about.cxx cui/source/dialogs/commonlingui.hxx cui/source/dialogs/showcols.cxx cui/source/inc/cuihyperdlg.hxx cui/source/inc/cuitabline.hxx cui/source/options/optsave.src cui/source/tabpages/tpline.cxx cui/source/tabpages/transfrm.cxx dbaccess/source/core/api/CacheSet.cxx dbaccess/source/core/api/KeySet.cxx dbaccess/source/core/api/RowSet.cxx dbaccess/source/core/api/RowSet.hxx dbaccess/source/core/api/RowSetBase.cxx dbaccess/source/core/api/RowSetBase.hxx dbaccess/source/core/api/RowSetCache.cxx dbaccess/source/core/api/querycomposer.cxx dbaccess/source/ext/adabas/Acomponentmodule.hxx dbaccess/source/ui/app/AppControllerDnD.cxx dbaccess/source/ui/app/AppDetailView.cxx dbaccess/source/ui/browser/brwctrlr.cxx dbaccess/source/ui/browser/sbagrid.cxx dbaccess/source/ui/browser/unodatbr.cxx dbaccess/source/ui/dlg/AdabasStat.hxx dbaccess/source/ui/dlg/UserAdmin.cxx dbaccess/source/ui/dlg/directsql.cxx dbaccess/source/ui/dlg/generalpage.hxx dbaccess/source/ui/dlg/tablespage.cxx dbaccess/source/ui/inc/JoinTableView.hxx dbaccess/source/ui/inc/TableController.hxx dbaccess/source/ui/inc/UITools.hxx dbaccess/source/ui/inc/brwctrlr.hxx dbaccess/source/ui/inc/datasourcemap.hxx dbaccess/source/ui/querydesign/JoinTableView.cxx dbaccess/source/ui/querydesign/QueryDesignView.cxx dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx dbaccess/source/ui/querydesign/TableWindow.cxx dbaccess/source/ui/querydesign/querycontroller.cxx dbaccess/source/ui/relationdesign/RelationTableView.cxx dbaccess/source/ui/tabledesign/TableController.cxx desktop/source/app/app.cxx desktop/source/app/appinit.cxx desktop/source/app/langselect.cxx desktop/source/app/officeipcthread.cxx desktop/source/deployment/manager/dp_extensionmanager.cxx desktop/source/deployment/misc/dp_misc.cxx desktop/source/deployment/misc/dp_resource.cxx desktop/source/deployment/registry/dp_backend.cxx desktop/source/deployment/registry/package/dp_package.cxx desktop/source/migration/cfgfilter.cxx desktop/source/migration/migration.cxx desktop/source/splash/splash.cxx desktop/win32/source/QuickStart/QuickStart.cpp desktop/win32/source/setup/setup.cpp drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx dtrans/source/win32/clipb/MtaOleClipb.hxx dtrans/source/win32/clipb/WinClipbImpl.cxx editeng/source/editeng/editview.cxx editeng/source/editeng/impedit2.cxx editeng/source/editeng/impedit3.cxx editeng/source/editeng/impedit4.cxx editeng/source/editeng/textconv.hxx editeng/source/misc/unolingu.cxx embeddedobj/source/commonembedding/persistence.cxx embeddedobj/source/general/dummyobject.cxx embeddedobj/source/msole/olecomponent.cxx embeddedobj/source/msole/olepersist.cxx embeddedobj/test/Container1/NativeView.java extensions/source/bibliography/framectr.cxx extensions/source/macosx/spotlight/OOoContentDataParser.m extensions/source/macosx/spotlight/unzip.h extensions/source/macosx/spotlight/unzip.m extensions/source/oooimprovement/myconfigurationhelper.hxx extensions/source/propctrlr/eventhandler.cxx extensions/source/propctrlr/formcomponenthandler.cxx extensions/source/propctrlr/pcrcomponentcontext.hxx extensions/source/scanner/twain.cxx extensions/source/update/check/updatecheckconfig.hxx external/mingwheaders/mingw_atl_headers.patch extras/source/misc_config/wizard/web/layouts/source.xml.xsl fileaccess/source/FileAccess.cxx filter/inc/filter/msfilter/msocximex.hxx filter/inc/filter/msfilter/svxmsbas.hxx filter/qa/complex/filter/detection/typeDetection/Helper.java filter/source/config/cache/basecontainer.cxx filter/source/config/cache/cacheitem.hxx filter/source/config/cache/contenthandlerfactory.cxx filter/source/config/cache/filtercache.cxx filter/source/config/cache/filtercache.hxx filter/source/config/cache/filterfactory.cxx filter/source/config/cache/frameloaderfactory.cxx filter/source/config/cache/querytokenizer.hxx filter/source/config/cache/typedetection.cxx filter/source/config/cache/typedetection.hxx filter/source/config/cache/versions.hxx filter/source/config/fragments/makefile.mk filter/source/config/tools/merge/pyAltFCFGMerge filter/source/flash/swfwriter.cxx filter/source/flash/swfwriter1.cxx filter/source/msfilter/msdffimp.cxx filter/source/msfilter/msocximex.cxx filter/source/msfilter/msvbahelper.cxx filter/source/msfilter/svxmsbas.cxx filter/source/xmlfilterdetect/filterdetect.cxx filter/source/xslt/import/uof2/uof2odf.xsl filter/source/xslt/odf2xhtml/export/xhtml/body.xsl filter/source/xsltfilter/com/sun/star/comp/xsltfilter/Base64.java forms/source/xforms/convert.hxx forms/source/xforms/model.cxx fpicker/source/aqua/SalAquaFilePicker.mm fpicker/source/office/fpinteraction.cxx fpicker/source/unx/gnome/SalGtkFolderPicker.cxx fpicker/source/unx/kde4/KDE4FilePicker.cxx fpicker/source/win32/filepicker/PreviewCtrl.cxx fpicker/source/win32/filepicker/PreviewCtrl.hxx fpicker/source/win32/filepicker/VistaFilePicker.cxx fpicker/source/win32/filepicker/VistaFilePickerImpl.hxx fpicker/source/win32/filepicker/helppopupwindow.hxx fpicker/source/win32/folderpicker/MtaFop.hxx framework/inc/classes/droptargetlistener.hxx framework/inc/classes/filtercache.hxx framework/inc/classes/filtercachedata.hxx framework/inc/classes/protocolhandlercache.hxx framework/inc/classes/servicemanager.hxx framework/inc/commands.h framework/inc/dispatch/basedispatcher.hxx framework/inc/dispatch/blankdispatcher.hxx framework/inc/dispatch/closedispatcher.hxx framework/inc/dispatch/createdispatcher.hxx framework/inc/dispatch/dispatchprovider.hxx framework/inc/dispatch/helpagentdispatcher.hxx framework/inc/dispatch/mailtodispatcher.hxx framework/inc/dispatch/menudispatcher.hxx framework/inc/dispatch/oxt_handler.hxx framework/inc/dispatch/popupmenudispatcher.hxx framework/inc/dispatch/selfdispatcher.hxx framework/inc/dispatch/servicehandler.hxx framework/inc/dispatch/startmoduledispatcher.hxx framework/inc/dispatch/systemexec.hxx framework/inc/helper/fixeddocumentproperties.hxx framework/inc/helper/ocomponentaccess.hxx framework/inc/helper/oframes.hxx framework/inc/helper/otasksenumeration.hxx framework/inc/helper/persistentwindowstate.hxx framework/inc/helper/statusindicator.hxx framework/inc/helper/statusindicatorfactory.hxx framework/inc/helper/tagwindowasmodified.hxx framework/inc/helper/titlebarupdate.hxx framework/inc/helper/vclstatusindicator.hxx framework/inc/interaction/quietinteraction.hxx framework/inc/jobs/helponstartup.hxx framework/inc/jobs/job.hxx framework/inc/jobs/jobdata.hxx framework/inc/jobs/jobexecutor.hxx framework/inc/loadstate.h framework/inc/macros/debug/assertion.hxx framework/inc/macros/debug/event.hxx framework/inc/macros/debug/filterdbg.hxx framework/inc/macros/debug/memorymeasure.hxx framework/inc/macros/debug/timemeasure.hxx framework/inc/macros/xserviceinfo.hxx framework/inc/queries.h framework/inc/recording/dispatchrecordersupplier.hxx framework/inc/services/autorecovery.hxx framework/inc/services/backingcomp.hxx framework/inc/services/contenthandlerfactory.hxx framework/inc/services/desktop.hxx framework/inc/services/detectorfactory.hxx framework/inc/services/frame.hxx framework/inc/services/frameloaderfactory.hxx framework/inc/services/layoutmanager.hxx framework/inc/services/license.hxx framework/inc/services/logindialog.hxx framework/inc/services/modulemanager.hxx framework/inc/services/pathsettings.hxx framework/inc/services/pluginframe.hxx framework/inc/services/substitutepathvars.hxx framework/inc/services/task.hxx framework/inc/services/taskcreatorsrv.hxx framework/inc/stdtypes.h framework/inc/threadhelp/fairrwlock.hxx framework/inc/threadhelp/inoncopyable.h framework/inc/threadhelp/itransactionmanager.h framework/inc/threadhelp/lockhelper.hxx framework/inc/threadhelp/readguard.hxx framework/inc/threadhelp/resetableguard.hxx framework/inc/threadhelp/transactionguard.hxx framework/inc/threadhelp/writeguard.hxx framework/inc/uifactory/uielementfactorymanager.hxx framework/inc/xml/acceleratorconfigurationreader.hxx framework/qa/complex/dispatches/checkdispatchapi.java framework/qa/complex/framework/autosave/AutoSave.java framework/qa/complex/framework/autosave/Protocol.java framework/qa/complex/framework/recovery/RecoveryTest.java framework/qa/complex/loadAllDocuments/StreamSimulator.java framework/source/accelerators/acceleratorconfiguration.cxx framework/source/accelerators/acceleratorexecute.cxx framework/source/accelerators/acceleratorexecute.hxx framework/source/accelerators/keymapping.cxx framework/source/accelerators/presethandler.cxx framework/source/application/framework.cxx framework/source/application/login.cxx framework/source/classes/framecontainer.cxx framework/source/classes/menumanager.cxx framework/source/classes/taskcreator.cxx framework/source/dispatch/closedispatcher.cxx framework/source/dispatch/dispatchprovider.cxx framework/source/dispatch/helpagentdispatcher.cxx framework/source/dispatch/interceptionhelper.cxx framework/source/dispatch/mailtodispatcher.cxx framework/source/dispatch/menudispatcher.cxx framework/source/dispatch/oxt_handler.cxx framework/source/dispatch/servicehandler.cxx framework/source/fwe/classes/framelistanalyzer.cxx framework/source/fwe/dispatch/interaction.cxx framework/source/fwe/helper/titlehelper.cxx framework/source/fwe/helper/undomanagerhelper.cxx framework/source/fwe/xml/eventsdocumenthandler.cxx framework/source/fwe/xml/statusbardocumenthandler.cxx framework/source/fwe/xml/toolboxdocumenthandler.cxx framework/source/fwi/classes/protocolhandlercache.cxx framework/source/fwi/threadhelp/lockhelper.cxx framework/source/fwi/threadhelp/transactionmanager.cxx framework/source/helper/persistentwindowstate.cxx framework/source/helper/statusindicatorfactory.cxx framework/source/helper/vclstatusindicator.cxx framework/source/inc/accelerators/acceleratorcache.hxx framework/source/inc/accelerators/acceleratorconfiguration.hxx framework/source/inc/accelerators/presethandler.hxx framework/source/inc/accelerators/storageholder.hxx framework/source/inc/loadenv/actionlockguard.hxx framework/source/inc/loadenv/loadenv.hxx framework/source/inc/loadenv/loadenvexception.hxx framework/source/inc/pattern/frame.hxx framework/source/inc/pattern/storages.hxx framework/source/inc/pattern/window.hxx framework/source/jobs/helponstartup.cxx framework/source/jobs/job.cxx framework/source/jobs/jobdata.cxx framework/source/jobs/jobdispatch.cxx framework/source/jobs/jobresult.cxx framework/source/jobs/joburl.cxx framework/source/jobs/shelljob.cxx framework/source/loadenv/loadenv.cxx framework/source/services/autorecovery.cxx framework/source/services/backingwindow.cxx framework/source/services/desktop.cxx framework/source/services/frame.cxx framework/source/services/modulemanager.cxx framework/source/services/pathsettings.cxx framework/source/services/substitutepathvars.cxx framework/source/uiconfiguration/moduleuicfgsupplier.cxx framework/source/uiconfiguration/moduleuiconfigurationmanager.cxx framework/source/uiconfiguration/uicategorydescription.cxx framework/source/uiconfiguration/uiconfigurationmanagerimpl.cxx framework/source/uiconfiguration/windowstateconfiguration.cxx framework/source/uielement/uicommanddescription.cxx framework/source/unotypes/fwk.xml framework/source/xml/imagesdocumenthandler.cxx framework/test/test.cxx framework/test/test_componentenumeration.bas framework/test/test_statusindicatorfactory.bas framework/test/threadtest.cxx framework/test/threadtest/threadtest.cxx framework/test/typecfg/cfgview.cxx framework/test/typecfg/xml2xcd.cxx include/basegfx/polygon/b2dpolygon.hxx include/canvas/base/graphicdevicebase.hxx include/canvas/canvastools.hxx include/comphelper/configurationhelper.hxx include/comphelper/embeddedobjectcontainer.hxx include/comphelper/propagg.hxx include/comphelper/sequenceashashmap.hxx include/connectivity/sqlerror.hxx include/connectivity/sqlnode.hxx include/cppuhelper/propshlp.hxx include/editeng/AccessibleContextBase.hxx include/framework/framelistanalyzer.hxx sfx2/source/dialog/backingcomp.cxx vcl/unx/gtk/fpicker/SalGtkFilePicker.cxx Change-Id: I2618bf83c0e30f68f23ff25f6eb466df04d34c6d
2014-04-29 19:05:05 +00:00
throw RuntimeException( "timeout occurred!", 0 );
case osl_Process_E_NoPermission:
throw RuntimeException( "permission denied!", 0 );
case osl_Process_E_Unknown:
throw RuntimeException( "unknown error!", 0 );
case osl_Process_E_InvalidError:
default:
throw RuntimeException( "unmapped error!", 0 );
}
return hProcess;
}
OUString generateRandomPipeId()
{
// compute some good pipe id:
static rtlRandomPool s_hPool = rtl_random_createPool();
if (s_hPool == 0)
throw RuntimeException( "cannot create random pool!?", 0 );
sal_uInt8 bytes[ 32 ];
if (rtl_random_getBytes(
s_hPool, bytes, ARLEN(bytes) ) != rtl_Random_E_None) {
throw RuntimeException( "random pool error!?", 0 );
}
OUStringBuffer buf;
for ( sal_uInt32 i = 0; i < ARLEN(bytes); ++i ) {
buf.append( static_cast<sal_Int32>(bytes[ i ]), 0x10 );
}
return buf.makeStringAndClear();
}
Reference<XInterface> resolveUnoURL(
OUString const & connectString,
Reference<XComponentContext> const & xLocalContext,
AbortChannel * abortChannel )
{
Reference<bridge::XUnoUrlResolver> xUnoUrlResolver(
bridge::UnoUrlResolver::create( xLocalContext ) );
for (int i = 0; i <= 20; ++i) // 10 seconds
{
if (abortChannel != 0 && abortChannel->isAborted()) {
throw ucb::CommandAbortedException( "abort!" );
}
try {
return xUnoUrlResolver->resolve( connectString );
}
2011-12-06 00:19:44 +09:00
catch (const connection::NoConnectException &) {
if (i < 20)
{
TimeValue tv = { 0 /* secs */, 500000000 /* nanosecs */ };
::osl::Thread::wait( tv );
}
else throw;
}
}
return 0; // warning C4715
}
2009-01-22 17:12:19 +00:00
#ifdef WNT
void writeConsoleWithStream(OUString const & sText, HANDLE stream)
2009-01-22 17:12:19 +00:00
{
DWORD nWrittenChars = 0;
WriteFile(stream, sText.getStr(),
sText.getLength() * 2, &nWrittenChars, NULL);
}
#else
void writeConsoleWithStream(OUString const & sText, FILE * stream)
2009-01-22 17:12:19 +00:00
{
OString s = OUStringToOString(sText, osl_getThreadTextEncoding());
fprintf(stream, "%s", s.getStr());
fflush(stream);
}
#endif
void writeConsole(OUString const & sText)
2009-01-22 17:12:19 +00:00
{
#ifdef WNT
writeConsoleWithStream(sText, GetStdHandle(STD_OUTPUT_HANDLE));
#else
writeConsoleWithStream(sText, stdout);
#endif
}
void writeConsoleError(OUString const & sText)
2009-01-22 17:12:19 +00:00
{
#ifdef WNT
writeConsoleWithStream(sText, GetStdHandle(STD_ERROR_HANDLE));
#else
writeConsoleWithStream(sText, stderr);
#endif
}
OUString readConsole()
{
#ifdef WNT
sal_Unicode aBuffer[1024];
DWORD dwRead = 0;
//unopkg.com feeds unopkg.exe with wchar_t|s
if (ReadFile( GetStdHandle(STD_INPUT_HANDLE), &aBuffer, sizeof(aBuffer), &dwRead, NULL ) )
{
OSL_ASSERT((dwRead % 2) == 0);
OUString value( aBuffer, dwRead / 2);
2010-01-11 11:19:45 +01:00
return value.trim();
2009-01-22 17:12:19 +00:00
}
#else
char buf[1024];
memset(buf, 0, 1024);
2009-01-22 17:12:19 +00:00
// read one char less so that the last char in buf is always zero
2010-01-11 11:19:45 +01:00
if (fgets(buf, 1024, stdin) != NULL)
{
OUString value = OStringToOUString(OString(buf), osl_getThreadTextEncoding());
2010-01-11 11:19:45 +01:00
return value.trim();
}
2009-01-22 17:12:19 +00:00
#endif
2010-01-11 11:19:45 +01:00
return OUString();
2009-01-22 17:12:19 +00:00
}
void TRACE(OUString const & sText)
2009-01-22 17:12:19 +00:00
{
SAL_INFO("desktop.deployment", sText);
2009-01-22 17:12:19 +00:00
}
void syncRepositories(
bool force, Reference<ucb::XCommandEnvironment> const & xCmdEnv)
{
OUString sDisable;
::rtl::Bootstrap::get( "DISABLE_EXTENSION_SYNCHRONIZATION", sDisable, OUString() );
if (!sDisable.isEmpty())
return;
Reference<deployment::XExtensionManager> xExtensionManager;
//synchronize shared before bundled otherewise there are
//more revoke and registration calls.
bool bModified = false;
if (force || needToSyncRepository("shared") || needToSyncRepository("bundled"))
{
xExtensionManager =
deployment::ExtensionManager::get(
comphelper::getProcessComponentContext());
if (xExtensionManager.is())
{
bModified = xExtensionManager->synchronize(
Reference<task::XAbortChannel>(), xCmdEnv);
}
}
#if !HAVE_FEATURE_MACOSX_SANDBOX
if (bModified && !comphelper::LibreOfficeKit::isActive())
{
2012-11-30 01:22:55 +01:00
Reference<task::XRestartManager> restarter(task::OfficeRestartManager::get(comphelper::getProcessComponentContext()));
if (restarter.is())
{
2010-10-29 18:05:32 +01:00
OSL_TRACE( "Request restart for modified extensions manager" );
restarter->requestRestart(xCmdEnv.is() ? xCmdEnv->getInteractionHandler() :
Reference<task::XInteractionHandler>());
}
}
#endif
}
void disposeBridges(Reference<css::uno::XComponentContext> const & ctx)
{
if (!ctx.is())
return;
Reference<css::bridge::XBridgeFactory2> bridgeFac( css::bridge::BridgeFactory::create(ctx) );
const Sequence< Reference<css::bridge::XBridge> >seqBridges = bridgeFac->getExistingBridges();
for (sal_Int32 i = 0; i < seqBridges.getLength(); i++)
{
Reference<css::lang::XComponent> comp(seqBridges[i], UNO_QUERY);
if (comp.is())
{
try {
comp->dispose();
}
catch ( const css::lang::DisposedException& )
{
}
}
}
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */