[evolution] killev: Search for killall/pkill in runtime, rather than in compile time
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] killev: Search for killall/pkill in runtime, rather than in compile time
- Date: Fri, 2 Aug 2019 09:19:31 +0000 (UTC)
commit 1d68ce06686c81fe6839b2277a27561faf8ce707
Author: Milan Crha <mcrha redhat com>
Date: Fri Aug 2 11:18:34 2019 +0200
killev: Search for killall/pkill in runtime, rather than in compile time
CMakeLists.txt | 18 --------------
config.h.in | 9 -------
src/shell/killev.c | 73 +++++++++++++++++++++++++++++++++++++-----------------
src/shell/main.c | 2 +-
4 files changed, 51 insertions(+), 51 deletions(-)
---
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 54b1b2192a..730a71aa3d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -219,24 +219,6 @@ CHECK_INCLUDE_FILE(X11/XF86keysym.h HAVE_XFREE)
CHECK_FUNCTION_EXISTS(mkdtemp HAVE_MKDTEMP)
CHECK_FUNCTION_EXISTS(nl_langinfo HAVE_NL_LANGINFO)
-# ******************************
-# executables
-# ******************************
-
-find_program(KILL_PROCESS_COMMAND killall)
-if(NOT KILL_PROCESS_COMMAND)
- find_program(KILL_PROCESS_COMMAND pkill)
- set(KILL_PROCESS_COMMAND_ARGS "-f")
- set(KILL_PROCESS_COMMAND_ARG_EXACT "-x")
-else(NOT KILL_PROCESS_COMMAND)
- set(KILL_PROCESS_COMMAND_ARGS "")
- set(KILL_PROCESS_COMMAND_ARG_EXACT "-e")
-endif(NOT KILL_PROCESS_COMMAND)
-
-if(NOT KILL_PROCESS_COMMAND)
- message(WARNING "Could not find a command to kill a process by name")
-endif(NOT KILL_PROCESS_COMMAND)
-
# ******************************
# Check for nl_langinfo features
# ******************************
diff --git a/config.h.in b/config.h.in
index 55666a185d..7e6abf00be 100644
--- a/config.h.in
+++ b/config.h.in
@@ -30,15 +30,6 @@
/* Defined, when configured with ENABLE_MAINTAINER_MODE */
#cmakedefine ENABLE_MAINTAINER_MODE 1
-/* Command to kill processes by name */
-#cmakedefine KILL_PROCESS_COMMAND "@KILL_PROCESS_COMMAND@"
-
-/* Extra arguments to kill command */
-#cmakedefine KILL_PROCESS_COMMAND_ARGS "@KILL_PROCESS_COMMAND_ARGS@"
-
-/* An argument to kill command to match exact process */
-#cmakedefine KILL_PROCESS_COMMAND_ARG_EXACT "@KILL_PROCESS_COMMAND_ARG_EXACT@"
-
/* Define to 1 if you have the `nl_langinfo' function. */
#cmakedefine HAVE_NL_LANGINFO 1
diff --git a/src/shell/killev.c b/src/shell/killev.c
index 5409eb139f..80b1683b63 100644
--- a/src/shell/killev.c
+++ b/src/shell/killev.c
@@ -93,6 +93,50 @@ exit:
return success;
}
+/* Returns whether found kill command, not whether killed anything */
+static gboolean
+call_kill_process (const gchar *process_name,
+ gboolean request_exact_name)
+{
+ gchar *killcmd, *cmd;
+ const gchar *exact_arg = NULL, *extra_args = NULL;
+
+ g_return_val_if_fail (process_name, FALSE);
+
+ killcmd = g_find_program_in_path ("killall");
+
+ if (killcmd) {
+ exact_arg = "-e";
+ } else {
+ killcmd = g_find_program_in_path ("pkill");
+
+ if (!killcmd) {
+ g_message ("No killall/pkill command found");
+
+ return FALSE;
+ }
+
+ exact_arg = "-x";
+ extra_args = "-f";
+ }
+
+ cmd = g_strdup_printf ("%s%s%s%s%s -TERM %s 2> /dev/null",
+ killcmd,
+ extra_args ? " " : "",
+ extra_args ? extra_args : "",
+ request_exact_name ? " " : "",
+ request_exact_name ? exact_arg : "",
+ process_name);
+
+ if (system (cmd) == -1)
+ g_message ("%s: Failed to execute: '%s'", G_STRFUNC, cmd);
+
+ g_free (killcmd);
+ g_free (cmd);
+
+ return TRUE;
+}
+
gint
main (gint argc,
gchar **argv)
@@ -161,29 +205,12 @@ main (gint argc,
g_object_unref (monitor);
kill:
-#ifdef KILL_PROCESS_COMMAND
-#ifdef KILL_PROCESS_COMMAND_ARGS
-#define KILL_CMD KILL_PROCESS_COMMAND " " KILL_PROCESS_COMMAND_ARGS
-#else
-#define KILL_CMD KILL_PROCESS_COMMAND
-#endif
-#ifndef KILL_PROCESS_COMMAND_ARG_EXACT
-#define KILL_PROCESS_COMMAND_ARG_EXACT ""
-#endif
- if (system (KILL_CMD " " KILL_PROCESS_COMMAND_ARG_EXACT " -TERM evolution 2> /dev/null") == -1)
- g_warning ("%s: Failed to execute: '%s'", G_STRFUNC, KILL_PROCESS_COMMAND);
- if (system (KILL_CMD " -TERM evolution-alarm-notify 2> /dev/null") == -1)
- g_warning ("%s: Failed to execute: '%s'", G_STRFUNC, KILL_PROCESS_COMMAND);
- if (system (KILL_CMD " -TERM evolution-source-registry 2> /dev/null") == -1)
- g_warning ("%s: Failed to execute: '%s'", G_STRFUNC, KILL_PROCESS_COMMAND);
- if (system (KILL_CMD " -TERM evolution-addressbook-factory 2> /dev/null") == -1)
- g_warning ("%s: Failed to execute: '%s'", G_STRFUNC, KILL_PROCESS_COMMAND);
- if (system (KILL_CMD " -TERM evolution-calendar-factory 2> /dev/null") == -1)
- g_warning ("%s: Failed to execute: '%s'", G_STRFUNC, KILL_PROCESS_COMMAND);
-#undef KILL_CMD
-#else
- g_printerr ("No \"kill\" command available.\n");
-#endif
+ if (call_kill_process ("evolution", TRUE)) {
+ call_kill_process ("evolution-alarm-notify", FALSE);
+ call_kill_process ("evolution-source-registry", FALSE);
+ call_kill_process ("evolution-addressbook-factory", FALSE);
+ call_kill_process ("evolution-calendar-factory", FALSE);
+ }
g_clear_object (&pid_file);
diff --git a/src/shell/main.c b/src/shell/main.c
index d89c4f8bb9..6dc5b8b8ae 100644
--- a/src/shell/main.c
+++ b/src/shell/main.c
@@ -333,7 +333,7 @@ static GOptionEntry entries[] = {
N_("Start in online mode"), NULL },
{ "force-online", '\0', 0, G_OPTION_ARG_NONE, &force_online,
N_("Ignore network availability"), NULL },
-#ifdef KILL_PROCESS_CMD
+#ifndef G_OS_WIN32
{ "force-shutdown", '\0', 0, G_OPTION_ARG_NONE, &force_shutdown,
N_("Forcibly shut down Evolution"), NULL },
#endif
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]