Skip to content

Commit

Permalink
Make stumpish work on OpenBSD again
Browse files Browse the repository at this point in the history
Seems that `pgrep` exists everywhere, for example in Debian it is
installed from the same package which installs `ps` and `kill`.

Use it as main way to detect stumpwm, and old code via /proc as a
fallback when no `pgrep` here.

This fixes regression which was introduced by
#296

Co-authored-by: Mihail Ivanchev <[email protected]>
  • Loading branch information
catap and MIvanchev committed Nov 30, 2024
1 parent 7f0bc88 commit 729256e
Showing 1 changed file with 25 additions and 18 deletions.
43 changes: 25 additions & 18 deletions util/stumpish/stumpish
Original file line number Diff line number Diff line change
Expand Up @@ -40,25 +40,32 @@ fi

stumpwm_pid ()
{
local pid=$$
if command -v pgrep 2>&1 >/dev/null; then
STUMPWM_PID=$(pgrep -u $(id -u) stumpwm)
elif [ -d /proc ]; then
# Go up the process chain until we locate StumpWM's process using
# the /proc virtual file system.

local pid=$$

while [ $pid -ne 1 ]
do
if [ "$(cat /proc/${pid}/comm)" = "stumpwm" ]; then
STUMPWM_PID=$pid
break
else
pid=$(cut -f 4 -d " " < /proc/$pid/stat)
fi
done
fi

while :
do
if [ $pid -eq 1 ]
then
echo "StumpWM not found in the process tree, are you sure a graphical " 1>&2
echo "session is running and StumpWM is your WM? If you think this is " 1>&2
echo "a bug in stumpish, please report it." 1>&2
echo 1>&2
exit 1
elif [ "$(cat /proc/${pid}/comm)" = "stumpwm" ]
then
STUMPWM_PID=$pid
break
else
pid=$(cut -f 4 -d " " < /proc/$pid/stat)
fi
done
if [ -z "$STUMPWM_PID" ]; then
echo "StumpWM not found in the process tree, are you sure a graphical " 1>&2
echo "session is running and StumpWM is your WM? If you think this is " 1>&2
echo "a bug in stumpish, please report it." 1>&2
echo 1>&2
exit 1
fi
}

wait_result ()
Expand Down

0 comments on commit 729256e

Please sign in to comment.