Make stumpish work on OpenBSD again

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
https://github.com/stumpwm/stumpwm-contrib/pull/296

Co-authored-by: Mihail Ivanchev <contact@ivanchev.net>
This commit is contained in:
Kirill A. Korinsky 2024-11-30 10:38:02 +01:00
parent 7f0bc885b0
commit 729256e857
No known key found for this signature in database
GPG key ID: 98D8D9867759226E

View file

@ -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.
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
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
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 ()