]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/testsuite/getpid.sh
Change log messages issued for IP address forgeries
[ngircd-alex.git] / src / testsuite / getpid.sh
index 973c67f3912210defa40a1129994246332347dcd..f200afb9ad69494a45f657f2fa4d4e160a088076 100755 (executable)
@@ -1,24 +1,45 @@
 #!/bin/sh
 # ngIRCd Test Suite
-# $Id: getpid.sh,v 1.1 2002/09/20 14:46:55 alex Exp $
 
-# wurde ein Name uebergeben?
+# did we get a name?
 [ $# -ne 1 ] && exit 1
 
-# Flags fuer "ps" ermitteln
-if [ `uname` = "FreeBSD" ]; then
-  PS_FLAGS=-a; PS_PIDCOL=1
+[ -x /bin/pidof ] && exec /bin/pidof -s $@
+
+# detect flags for "ps" and "head"
+UNAME=`uname`
+if [ $UNAME = "FreeBSD" ]; then
+  PS_FLAGS="-a"; PS_PIDCOL="1"; HEAD_FLAGS="-n 1"
+elif [ $UNAME = "A/UX" ]; then
+  PS_FLAGS="-af"; PS_PIDCOL="2"; HEAD_FLAGS="-1"
+elif [ $UNAME = "GNU" ]; then
+  PS_FLAGS="-ax"; PS_PIDCOL="2"; HEAD_FLAGS="-n 1"
+elif [ $UNAME = "Linux" ]; then
+  PS_FLAGS="ax"; PS_PIDCOL="1"; HEAD_FLAGS="-n 1"
+elif [ $UNAME = "SunOS" ]; then
+  PS_FLAGS="-af"; PS_PIDCOL=2; HEAD_FLAGS="-n 1"
 else
-  PS_FLAGS=-f; PS_PIDCOL=2
+  PS_FLAGS="-af"; PS_PIDCOL="2"; HEAD_FLAGS="-n 1"
   ps $PS_FLAGS > /dev/null 2>&1
-  if [ $? -ne 0 ]; then PS_FLAGS=a; PS_PIDCOL=1; fi
+  if [ $? -ne 0 ]; then PS_FLAGS="a"; PS_PIDCOL="1"; fi
 fi
 
-# PID ermitteln
+# debug output
+#echo "$0: UNAME=$UNAME"
+#echo "$0: PS_FLAGS=$PS_FLAGS"
+#echo "$0: PS_PIDCOL=$PS_PIDCOL"
+#echo "$0: HEAD_FLAGS=$HEAD_FLAGS"
+
+# search PID
 ps $PS_FLAGS > procs.tmp
-pid=`cat procs.tmp | grep "$1" | awk "{ print \\\$$PS_PIDCOL }" | sort -n | head -n 1`
+cat procs.tmp | \
+  grep -v "$0" | grep "$1" | \
+  awk "{print \$$PS_PIDCOL}" | \
+  sort -n > pids.tmp
+pid=`head $HEAD_FLAGS pids.tmp`
+rm -rf procs.tmp pids.tmp
 
-# ermittelte PID validieren
+# validate PID
 [ "$pid" -gt 1 ] > /dev/null 2>&1
 [ $? -ne 0 ] && exit 1