X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=src%2Ftestsuite%2Fgetpid.sh;h=f200afb9ad69494a45f657f2fa4d4e160a088076;hp=973c67f3912210defa40a1129994246332347dcd;hb=c5da48368569383d064a2325ab3b99d10287a085;hpb=efedfe12ff27a450e85ff0b13c028c2dad1a72e4 diff --git a/src/testsuite/getpid.sh b/src/testsuite/getpid.sh index 973c67f3..f200afb9 100755 --- a/src/testsuite/getpid.sh +++ b/src/testsuite/getpid.sh @@ -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