summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
Diffstat (limited to 't')
-rwxr-xr-xt38
1 files changed, 21 insertions, 17 deletions
diff --git a/t b/t
index 73ad51d..dc40e6d 100755
--- a/t
+++ b/t
@@ -1,27 +1,31 @@
#!/bin/sh
-unset SPAWN
+unset KILL SPAWN
-while getopts "t:r:a:" o; do case "${o}" in
+MODE="t"
+
+while getopts "-tr" o; do case "${o}" in
+ t) MODE="t" ;;
+ r) MODE="r" ;;
+ -) break ;;
+esac done
+
+SPAWN="$(echo "$@" | sed 's/^.*-[-tr] //')"
+KILL="$(echo $SPAWN | cut -d' ' -f1)"
+
+[ -z "${MODE}" -o -z "$SPAWN" ] && exit
+case "${MODE}" in
t)
- if pgrep -Uzachir -x "$OPTARG" >/dev/null 2>&1; then
- pkill -Uzachir -x "$OPTARG"
- exit
+ if pgrep -x "$KILL"; then
+ killall "$KILL" 2>&1 >/dev/null
else
- SPAWN="$OPTARG"
+ $SPAWN &
fi
;;
r)
- if pgrep -Uzachir -x "$OPTARG" >/dev/null 2>&1; then
- pkill -Uzachir -x "$OPTARG"
- fi
- SPAWN="$OPTARG"
- ;;
- a)
- ARGS="$ARGS$OPTARG "
+ killall "$KILL" 2>&1 >/dev/null
+ sleep 0.1
+ $SPAWN &
;;
-esac done
-
-sleep 0.1
-[ -n "$SPAWN" ] && exec "$SPAWN" $ARGS &
+esac