From 2a9d4da2af153d222d39db726dfa3b98a2c2964a Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Sat, 30 Jan 2010 19:08:07 -0600
Subject: runit-scripts: frontend add pkill to kill X when sv stop is run apply
 fix based on patch from FS#533. This stops the frontend from always shutting
 down after 4 kills. get the number of these terminations that are more than
 10 seconds old. if more that 2 terminations (files) are greater than 10
 seconds old then stop the frontend from future automatic restarts and delete
 all the files and print error message to the log. closes FS#522

---
 abs/core-testing/runit-scripts/PKGBUILD            |  2 +-
 .../runitscripts/services/frontend/finish          | 37 ++++++++++++++++------
 2 files changed, 28 insertions(+), 11 deletions(-)

diff --git a/abs/core-testing/runit-scripts/PKGBUILD b/abs/core-testing/runit-scripts/PKGBUILD
index 60d78b5..80f8054 100755
--- a/abs/core-testing/runit-scripts/PKGBUILD
+++ b/abs/core-testing/runit-scripts/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=runit-scripts
 pkgver=1.8.0
-pkgrel=101
+pkgrel=104
 pkgdesc="collection of startup scripts for runit"
 url="http://smarden.org/runit/"
 license="BSD"
diff --git a/abs/core-testing/runit-scripts/runitscripts/services/frontend/finish b/abs/core-testing/runit-scripts/runitscripts/services/frontend/finish
index 5b0bd5b..417488d 100755
--- a/abs/core-testing/runit-scripts/runitscripts/services/frontend/finish
+++ b/abs/core-testing/runit-scripts/runitscripts/services/frontend/finish
@@ -1,28 +1,45 @@
-#!/bin/bash
-exec 2>&1
-export TERM=linux
-. /etc/rc.conf
-. /etc/rc.d/functions
+#!/bin/bash                                                
+exec 2>&1                                                  
+export TERM=linux                                          
+. /etc/rc.conf                                             
+. /etc/rc.d/functions                                      
+
+function cleanup(){
+             rm -f /etc/sv/frontend/.runtime/*
+             printhl  "    Cleaning up  /etc/sv/frontend/.runtime/"
+}
 
 grep -q  nox /proc/cmdline
 STATUS=$?
  if  [ $STATUS = 0 ]
       then
+      printhl  " status = 0"
       chvt 2
 else
+    pkill   -f  "X :0"
+    printhl  " status = 1"
     if [ ! -d /etc/sv/frontend/.runtime ]
     then
-	    mkdir  -p /etc/sv/frontend/.runtime
+            mkdir  -p /etc/sv/frontend/.runtime
     fi
     touch /etc/sv/frontend/.runtime/`date +%s`
     sleep 0.2
     ps -U mythtv -ef |grep  "/bin/sh /usr/bin/startx"|grep -v grep|awk ' { print $2 } '|xargs kill -9  2> /dev/null
     cdate=`date`
-    numfiles=`/usr/bin/file_time_offset.py   -s10 -d/etc/sv/frontend/.runtime`   
-    if [ $numfiles -gt 2 ]
+    numfilestotal=`/usr/bin/file_time_offset.py   -s0 -d/etc/sv/frontend/.runtime`
+    numfilesover10secondsold=`/usr/bin/file_time_offset.py   -s10 -d/etc/sv/frontend/.runtime`
+    numfileslessthan10secondsold=$(($numfilestotal-$numfilesover10secondsold))
+    if [ $numfileslessthan10secondsold -gt 2 ]
     then
          sv stop frontend
-         rm -f /etc/sv/frontend/.runtime/*
-         printhl  "    Frontend is not able to start, disabling it."
+         printhl  "   Frontend disabled, due to many restarts."
+         printhl  "   Run \"sv start frontend\" to try again"
+         cleanup
+    else
+         if [ $numfilestotal -gt 10 ]
+         then
+                 cleanup
+         fi
     fi
 fi
+
-- 
cgit v0.12

