aboutsummaryrefslogtreecommitdiffstats
path: root/main/gparted/gparted.in-Use-reliable-way-of-detecting-gpartedbin-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/gparted/gparted.in-Use-reliable-way-of-detecting-gpartedbin-.patch')
-rw-r--r--main/gparted/gparted.in-Use-reliable-way-of-detecting-gpartedbin-.patch46
1 files changed, 46 insertions, 0 deletions
diff --git a/main/gparted/gparted.in-Use-reliable-way-of-detecting-gpartedbin-.patch b/main/gparted/gparted.in-Use-reliable-way-of-detecting-gpartedbin-.patch
new file mode 100644
index 0000000000..d9e935b2ee
--- /dev/null
+++ b/main/gparted/gparted.in-Use-reliable-way-of-detecting-gpartedbin-.patch
@@ -0,0 +1,46 @@
+From 640709cd2eeb5037b871e6d96ffc186779bcf387 Mon Sep 17 00:00:00 2001
+From: Przemyslaw Pawelczyk <przemoc@gmail.com>
+Date: Sun, 4 Dec 2016 01:55:43 +0100
+Subject: [PATCH] gparted.in: Use reliable way of detecting gpartedbin process
+ existence.
+
+Grepping ps output had only one advantage, it's using tools available in
+any POSIX system. pidof looks for exact process name, regardless of
+the path used to call the binary (which is not true for pgrep).
+pidof is provided by busybox, procps-ng, sysvinit-tools or as a
+stand-alone package on some systems.
+
+We cannot guarantee that if gpartedbin is running there, then it's
+really gpartedbin and not something else renamed to it.
+We could try to detect if it is at least gpartedbin from a known
+location by checking $(readlink /proc/$PID/exe), but it wouldn't prevent
+user from running its own compiled gpartedbin from other location.
+
+ps, pgrep or pidof are simply not the right tools to prevent running
+more than one instance of the program. If such feature is really
+needed, then it should be built into the program to make it truly
+reliable (assuming correct implementation, obviously).
+Alternatively, if the program always run via one and only one
+supervisor, then the supervisor should be able to do the right job,
+because only parent process can reliably tell when it created the child,
+or when the child process execed into given binary or died.
+---
+ gparted.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gparted.in b/gparted.in
+index c435bac..625e50f 100755
+--- a/gparted.in
++++ b/gparted.in
+@@ -30,7 +30,7 @@
+ #
+ # Only permit one instance of GParted to execute at a time
+ #
+-if test "z`ps -e | grep gpartedbin`" != "z"; then
++if pidof -s gpartedbin >/dev/null; then
+ echo "The process gpartedbin is already running."
+ echo "Only one gpartedbin process is permitted."
+ exit 1
+--
+2.8.3
+