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