diff options
author | Marius Kintel <marius@kintel.net> | 2013-03-06 18:08:31 (GMT) |
---|---|---|
committer | Marius Kintel <marius@kintel.net> | 2013-03-06 18:08:31 (GMT) |
commit | cfc67f928fc86310614940f126d9f6c76d4e9ea7 (patch) | |
tree | 162be7579d3acd0eeb5b7b509ef9a0b428d6831f /tests/virtualfb.sh | |
parent | fe44758f5096be0e98c82d2cb0d54bdeffc4403a (diff) | |
parent | 974abf13049d5e73227418e3990af8a9bbf9db09 (diff) |
Merge branch 'master' of github.com:openscad/openscad
Diffstat (limited to 'tests/virtualfb.sh')
-rwxr-xr-x | tests/virtualfb.sh | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/tests/virtualfb.sh b/tests/virtualfb.sh index 5abd804..186b389 100755 --- a/tests/virtualfb.sh +++ b/tests/virtualfb.sh @@ -3,8 +3,12 @@ # Toggle the Virtual Framebuffer # If started, stop. If stopped, start. +debug= + start() { + VFB_BINARY= + if [ "`command -v Xvfb`" ]; then VFB_BINARY=Xvfb fi @@ -15,12 +19,26 @@ start() if [ ! $VFB_BINARY ]; then echo "$0 Failed, cannot find Xvfb or Xvnc" + echo "$0 Failed, cannot find Xvfb or Xvnc" > ./virtualfb.log exit 1 fi VFB_DISPLAY=`echo | awk 'BEGIN{srand();} {printf ":%.0f", rand()*1000+100};'` $VFB_BINARY $VFB_DISPLAY -screen 0 800x600x24 &> ./virtualfb.log & - VFB_PID=$! + # on some systems $! gives us VFB_BINARY's PID, on others we have to subtract 1 + VFB_PID_MINUS0=$! + VFB_PID_MINUS1=$(($VFB_PID_MINUS0 - 1)) + + if [ "`ps cax | grep $VFB_PID_MINUS0 | grep $VFB_BINARY`" ]; then + VFB_PID=$VFB_PID_MINUS0 + elif [ "`ps cax | grep $VFB_PID_MINUS1 | grep $VFB_BINARY`" ]; then + VFB_PID=$VFB_PID_MINUS1 + else + echo started $VFB_BINARY but cannot find process ID in process table + echo please stop $VFB_BINARY manually + VFB_PID= + return + fi echo $VFB_DISPLAY > ./virtualfb.DISPLAY echo $VFB_PID > ./virtualfb.PID @@ -48,13 +66,29 @@ isrunning() { isrunning_result= if [ -e ./virtualfb.PID ]; then + if [ $debug ]; then echo "found PID file"; fi VFB_PID=`cat ./virtualfb.PID` + if [ ! $VFB_PID ]; then + echo ./virtualfb.PID contained invalid PID number + return + fi + if [ $debug ]; then echo "PID from file:" $VFB_PID; fi + PS_RESULT=`ps cax | awk ' { print $1 } '` + GREP_RESULT=`echo $PS_RESULT | grep $VFB_PID` + if [ $debug ]; then echo "grep ps result: " $GREP_RESULT; fi if [ "`ps cax | awk ' { print $1 } ' | grep ^$VFB_PID\$`" ]; then + if [ $debug ]; then echo "found pid in process table."; fi isrunning_result=1 + else + if [ $debug ]; then echo "did not find pid in process table."; fi fi fi } +if [ "`echo $* | grep debug`" ]; then + debug=1 +fi + isrunning if [ $isrunning_result ]; then stop |