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