]> arthur.barton.de Git - ngircd-alex.git/blob - src/testsuite/getpid.sh
Test suite: clean up scripts
[ngircd-alex.git] / src / testsuite / getpid.sh
1 #!/bin/sh
2 # ngIRCd Test Suite
3
4 set -u
5
6 # did we get a name?
7 [ $# -ne 1 ] && exit 1
8
9 [ -x /bin/pidof ] && exec /bin/pidof -s "$1"
10
11 # detect flags for "ps" and "head"
12 UNAME=`uname`
13 if [ $UNAME = "FreeBSD" ]; then
14         PS_FLAGS="-a"; PS_PIDCOL="1"; HEAD_FLAGS="-n 1"
15 elif [ $UNAME = "A/UX" ]; then
16         PS_FLAGS="-af"; PS_PIDCOL="2"; HEAD_FLAGS="-1"
17 elif [ $UNAME = "GNU" ]; then
18         PS_FLAGS="-ax"; PS_PIDCOL="2"; HEAD_FLAGS="-n 1"
19 elif [ $UNAME = "Haiku" ]; then
20         PS_FLAGS="-o Id -o Team"; PS_PIDCOL="1"; HEAD_FLAGS="-1"
21 elif [ $UNAME = "Linux" ]; then
22         PS_FLAGS="ax"; PS_PIDCOL="1"; HEAD_FLAGS="-n 1"
23 elif [ $UNAME = "SunOS" ]; then
24         PS_FLAGS="-af"; PS_PIDCOL=2; HEAD_FLAGS="-n 1"
25 else
26         PS_FLAGS="-af"; PS_PIDCOL="2"; HEAD_FLAGS="-n 1"
27         ps $PS_FLAGS >/dev/null 2>&1
28         if [ $? -ne 0 ]; then PS_FLAGS="a"; PS_PIDCOL="1"; fi
29 fi
30
31 # debug output
32 #echo "$0: UNAME=$UNAME"
33 #echo "$0: PS_FLAGS=$PS_FLAGS"
34 #echo "$0: PS_PIDCOL=$PS_PIDCOL"
35 #echo "$0: HEAD_FLAGS=$HEAD_FLAGS"
36
37 # search PID
38 ps $PS_FLAGS >procs.tmp
39 cat procs.tmp | \
40         grep -v "$0" | grep "$1" | \
41         awk "{print \$$PS_PIDCOL}" | \
42         sort -n >pids.tmp
43 pid=`head $HEAD_FLAGS pids.tmp`
44 rm -rf procs.tmp pids.tmp
45
46 # validate PID
47 [ "$pid" -gt 1 ] >/dev/null 2>&1 || exit 1
48
49 echo $pid
50 exit 0