summary refs log tree commit diff
path: root/pkgs/tools/security/pass/set-correct-program-name-for-sleep.patch
blob: f3a844ad2d6d343d0c96326c2f18d579ece3ccd6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
From d11261c2ad184daf6e9edd777bc8a3372c277b4b Mon Sep 17 00:00:00 2001
From: Johannes Frankenau <johannes@frankenau.net>
Date: Fri, 10 Aug 2018 09:49:57 +0200
Subject: [PATCH] Patch the clip() function to work even when using
 single-binary coreutils

---
 src/password-store.sh  | 4 ++--
 src/platform/cygwin.sh | 4 ++--
 src/platform/darwin.sh | 4 ++--
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/password-store.sh b/src/password-store.sh
index 7264ffc..68551a4 100755
--- a/src/password-store.sh
+++ b/src/password-store.sh
@@ -155,11 +155,11 @@ clip() {
 	# variable. Specifically, it cannot store nulls nor (non-trivally) store
 	# trailing new lines.
 	local sleep_argv0="password store sleep on display $DISPLAY"
-	pkill -f "^$sleep_argv0" 2>/dev/null && sleep 0.5
+	pkill -P $(pgrep -f "^$sleep_argv0") 2>/dev/null && sleep 0.5
 	local before="$(xclip -o -selection "$X_SELECTION" 2>/dev/null | $BASE64)"
 	echo -n "$1" | xclip -selection "$X_SELECTION" || die "Error: Could not copy data to the clipboard"
 	(
-		( exec -a "$sleep_argv0" bash <<<"trap 'kill %1' TERM; sleep '$CLIP_TIME' & wait" )
+		( exec -a "$sleep_argv0" bash <(echo trap 'kill %1' TERM\; sleep "$CLIP_TIME & wait") )
 		local now="$(xclip -o -selection "$X_SELECTION" | $BASE64)"
 		[[ $now != $(echo -n "$1" | $BASE64) ]] && before="$now"
 
diff --git a/src/platform/cygwin.sh b/src/platform/cygwin.sh
index 5a8d5ea..423e0ce 100644
--- a/src/platform/cygwin.sh
+++ b/src/platform/cygwin.sh
@@ -3,11 +3,11 @@
 
 clip() {
 	local sleep_argv0="password store sleep on display $DISPLAY"
-	pkill -f "^$sleep_argv0" 2>/dev/null && sleep 0.5
+	pkill -P $(pgrep -f "^$sleep_argv0") 2>/dev/null && sleep 0.5
 	local before="$($BASE64 < /dev/clipboard)"
 	echo -n "$1" > /dev/clipboard
 	(
-		( exec -a "$sleep_argv0" sleep "$CLIP_TIME" )
+		( exec -a "$sleep_argv0" bash <(echo sleep "$CLIP_TIME") )
 		local now="$($BASE64 < /dev/clipboard)"
 		[[ $now != $(echo -n "$1" | $BASE64) ]] && before="$now"
 		echo "$before" | $BASE64 -d > /dev/clipboard
diff --git a/src/platform/darwin.sh b/src/platform/darwin.sh
index 342ecce..9e12837 100644
--- a/src/platform/darwin.sh
+++ b/src/platform/darwin.sh
@@ -3,11 +3,11 @@
 
 clip() {
 	local sleep_argv0="password store sleep for user $(id -u)"
-	pkill -f "^$sleep_argv0" 2>/dev/null && sleep 0.5
+	pkill -P $(pgrep -f "^$sleep_argv0") 2>/dev/null && sleep 0.5
 	local before="$(pbpaste | $BASE64)"
 	echo -n "$1" | pbcopy
 	(
-		( exec -a "$sleep_argv0" sleep "$CLIP_TIME" )
+		( exec -a "$sleep_argv0" bash <(echo sleep "$CLIP_TIME") )
 		local now="$(pbpaste | $BASE64)"
 		[[ $now != $(echo -n "$1" | $BASE64) ]] && before="$now"
 		echo "$before" | $BASE64 -d | pbcopy
-- 
2.16.4