diff options
author | Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> | 2016-12-12 17:29:28 +0100 |
---|---|---|
committer | Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> | 2016-12-13 07:25:31 +0000 |
commit | 0fda52cc4a5c78c55f96850faa734ea66891808c (patch) | |
tree | e4dc7b9bc620c2e1c5dbdc37b123727677d4419d /sfx2 | |
parent | 19650d0e27be97a4485998f3e8863c09a6f5cc74 (diff) |
SafeMode: Restart goes into safe mode again
Looks like the XRestartManager keeps all command line arguments when
restarting, so it also keeps --safe-mode.
Solution is to add a flag file when restarting from safe mode,
to prevent going into safe mode again.
Change-Id: I9820d3ccbddf98b0bf6132f254c989f52ea5e808
Reviewed-on: https://gerrit.libreoffice.org/31913
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/source/safemode/safemode.cxx | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/sfx2/source/safemode/safemode.cxx b/sfx2/source/safemode/safemode.cxx index 3e84f7ed02e6..6d8dcf981a4d 100644 --- a/sfx2/source/safemode/safemode.cxx +++ b/sfx2/source/safemode/safemode.cxx @@ -20,7 +20,7 @@ namespace sfx2 { bool SafeMode::putFlag() { - File safeModeFile(getFileName()); + File safeModeFile(getFilePath("safemode")); if (safeModeFile.open(osl_File_OpenFlag_Create) == FileBase::E_None) { safeModeFile.close(); @@ -30,7 +30,7 @@ bool SafeMode::putFlag() } bool SafeMode::hasFlag() { - File safeModeFile(getFileName()); + File safeModeFile(getFilePath("safemode")); if (safeModeFile.open(osl_File_OpenFlag_Read) == FileBase::E_None) { safeModeFile.close(); @@ -40,17 +40,42 @@ bool SafeMode::hasFlag() } bool SafeMode::removeFlag() { - return File::remove(getFileName()) == FileBase::E_None; + return File::remove(getFilePath("safemode")) == FileBase::E_None; } -OUString SafeMode::getFileName() +bool SafeMode::putRestartFlag() +{ + File restartFile(getFilePath("safemode_restart")); + if (restartFile.open(osl_File_OpenFlag_Create) == FileBase::E_None) + { + restartFile.close(); + return true; + } + return false; +} +bool SafeMode::hasRestartFlag() +{ + File restartFile(getFilePath("safemode_restart")); + if (restartFile.open(osl_File_OpenFlag_Read) == FileBase::E_None) + { + restartFile.close(); + return true; + } + return false; +} +bool SafeMode::removeRestartFlag() +{ + return File::remove(getFilePath("safemode_restart")) == FileBase::E_None; +} + +OUString SafeMode::getFilePath(const OUString& sFilename) { OUString url("${$BRAND_BASE_DIR/" LIBO_ETC_FOLDER "/" SAL_CONFIGFILE("bootstrap") ":UserInstallation}/"); rtl::Bootstrap::expandMacros(url); OUString aProfilePath; FileBase::getSystemPathFromFileURL(url, aProfilePath); - FileBase::getAbsoluteFileURL(url, "safemode", aProfilePath); + FileBase::getAbsoluteFileURL(url, sFilename, aProfilePath); return aProfilePath; } |