summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
Diffstat (limited to 'desktop')
-rw-r--r--desktop/source/app/cmdlineargs.cxx14
-rw-r--r--desktop/source/app/cmdlinehelp.cxx3
-rw-r--r--desktop/unx/source/args.c13
3 files changed, 29 insertions, 1 deletions
diff --git a/desktop/source/app/cmdlineargs.cxx b/desktop/source/app/cmdlineargs.cxx
index 381147cd534e..46395ae87133 100644
--- a/desktop/source/app/cmdlineargs.cxx
+++ b/desktop/source/app/cmdlineargs.cxx
@@ -42,6 +42,11 @@
#include <osl/file.hxx>
#include <sal/log.hxx>
+#ifdef LINUX
+#include <sys/prctl.h>
+#include <signal.h>
+#endif
+
using namespace com::sun::star::lang;
using namespace com::sun::star::uri;
using namespace com::sun::star::uno;
@@ -362,6 +367,15 @@ void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier )
{
// Do nothing, accept only for backward compatibility
}
+ else if ( oArg == "dont-survive-parent" )
+ {
+// only supported on linux for now
+#ifdef LINUX
+ prctl(PR_SET_PDEATHSIG, SIGKILL);
+#else
+ fprintf(stderr, "Warning: dont-survive-parent is not supported on this platform (yet).\n");
+#endif
+ }
else if ( oArg == "nologo" )
{
m_nologo = true;
diff --git a/desktop/source/app/cmdlinehelp.cxx b/desktop/source/app/cmdlinehelp.cxx
index bdb04bb9d4d8..b6afe63fe57a 100644
--- a/desktop/source/app/cmdlinehelp.cxx
+++ b/desktop/source/app/cmdlinehelp.cxx
@@ -112,7 +112,8 @@ namespace desktop
"Developer arguments: \n"
" --terminate_after_init \n"
" Exit after initialization complete (no documents loaded)\n"
- " --eventtesting Exit after loading documents. \n\n"
+ " --eventtesting Exit after loading documents. \n"
+ " --dont-survive-parent Exit when the parent exits (linux only) \n\n"
"New document creation arguments: \n"
"The arguments create an empty document of specified kind. Only one of them may \n"
"be used in one command line. If filenames are specified after an argument, \n"
diff --git a/desktop/unx/source/args.c b/desktop/unx/source/args.c
index 199b58a8e50e..81a8dbca4bb5 100644
--- a/desktop/unx/source/args.c
+++ b/desktop/unx/source/args.c
@@ -9,6 +9,10 @@
#include <stdlib.h>
#include <string.h>
#include <osl/process.h>
+#ifdef LINUX
+#include <sys/prctl.h>
+#include <signal.h>
+#endif
#include "args.h"
@@ -121,6 +125,15 @@ Args *args_parse (void)
args->pPageinType = pArgDescr[j].pPageinType;
break;
}
+ if (rtl_ustr_ascii_compare_WithLength(
+ arg, length, "dont-survive-parent")
+ == 0)
+ {
+#ifdef LINUX
+ prctl(PR_SET_PDEATHSIG, SIGKILL);
+#endif
+ break;
+ }
}
}