diff options
Diffstat (limited to 'desktop')
-rw-r--r-- | desktop/source/app/cmdlineargs.cxx | 14 | ||||
-rw-r--r-- | desktop/source/app/cmdlinehelp.cxx | 3 | ||||
-rw-r--r-- | desktop/unx/source/args.c | 13 |
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; + } } } |