diff --git a/packages/addons/service/system/dcron/changelog.txt b/packages/addons/service/system/dcron/changelog.txt index 469697a317..4463d6285c 100644 --- a/packages/addons/service/system/dcron/changelog.txt +++ b/packages/addons/service/system/dcron/changelog.txt @@ -1,2 +1,5 @@ +2.0.2 +- add possibilty to start / stop addon from addon manager with enable / disable + 2.0 - initial version for dcron 4.5 diff --git a/packages/addons/service/system/dcron/meta b/packages/addons/service/system/dcron/meta index 6d6c13304f..4bd10ee975 100755 --- a/packages/addons/service/system/dcron/meta +++ b/packages/addons/service/system/dcron/meta @@ -21,7 +21,7 @@ PKG_NAME="dcron" PKG_VERSION="4.5" -PKG_REV="1" +PKG_REV="2" PKG_ARCH="any" PKG_LICENSE="GPL" PKG_SITE="http://www.jimpryor.net/linux/dcron.html" diff --git a/packages/addons/service/system/dcron/source/bin/dcron.service b/packages/addons/service/system/dcron/source/bin/dcron.start similarity index 83% rename from packages/addons/service/system/dcron/source/bin/dcron.service rename to packages/addons/service/system/dcron/source/bin/dcron.start index 81e512103b..ba22a14825 100755 --- a/packages/addons/service/system/dcron/source/bin/dcron.service +++ b/packages/addons/service/system/dcron/source/bin/dcron.start @@ -20,10 +20,16 @@ # http://www.gnu.org/copyleft/gpl.html ################################################################################ +. /etc/profile + +LOCKDIR="/var/lock/" +LOCKFILE="dcron.disabled" + ADDON_NAME="service.system.dcron" ADDON_DIR="$HOME/.xbmc/addons/$ADDON_NAME" ADDON_HOME="$HOME/.xbmc/userdata/addon_data/$ADDON_NAME" +if [ ! "$(pidof crond)" ]; then mkdir -p $ADDON_HOME if [ ! -d $ADDON_HOME/crontabs ]; then @@ -43,6 +49,15 @@ ADDON_HOME="$HOME/.xbmc/userdata/addon_data/$ADDON_NAME" export PATH=$ADDON_DIR/bin:$PATH - if [ -z "$(pidof crond)" ]; then - crond -b -l info +# Restart process if it terminates. + if [ -f "$LOCKDIR/$LOCKFILE" ] ; then + rm -rf "$LOCKDIR/$LOCKFILE" fi + while [ true ] ; do + if [ -f "$LOCKDIR/$LOCKFILE" ] ; then + break + fi + crond -f -l info + sleep 1 + done & +fi diff --git a/packages/addons/service/system/dcron/source/bin/dcron.stop b/packages/addons/service/system/dcron/source/bin/dcron.stop new file mode 100755 index 0000000000..75858a66a7 --- /dev/null +++ b/packages/addons/service/system/dcron/source/bin/dcron.stop @@ -0,0 +1,32 @@ +#!/bin/sh + +################################################################################ +# This file is part of OpenELEC - http://www.openelec.tv +# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv) +# +# This Program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This Program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with OpenELEC.tv; see the file COPYING. If not, write to +# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA. +# http://www.gnu.org/copyleft/gpl.html +################################################################################ + +. /etc/profile + +LOCKDIR="/var/lock/" +LOCKFILE="dcron.disabled" + +if [ "$(pidof crond)" ]; then + mkdir -p "$LOCKDIR" + touch "$LOCKDIR/$LOCKFILE" + killall -9 crond +fi diff --git a/packages/addons/service/system/dcron/source/default.py b/packages/addons/service/system/dcron/source/default.py index b84124d73b..55136ed296 100755 --- a/packages/addons/service/system/dcron/source/default.py +++ b/packages/addons/service/system/dcron/source/default.py @@ -22,12 +22,23 @@ import os import sys import xbmcaddon +import time +import subprocess __scriptname__ = "Lightweight cron daemon" __author__ = "OpenELEC" __url__ = "http://www.openelec.tv" __settings__ = xbmcaddon.Addon(id='service.system.dcron') __cwd__ = __settings__.getAddonInfo('path') -__path__ = xbmc.translatePath( os.path.join( __cwd__, 'bin', "dcron.service") ) +__start__ = xbmc.translatePath( os.path.join( __cwd__, 'bin', "dcron.start") ) +__stop__ = xbmc.translatePath( os.path.join( __cwd__, 'bin', "dcron.stop") ) -os.system(__path__) +#make binary files executable in adson bin folder +subprocess.Popen("chmod -R +x " + __cwd__ + "/bin/*" , shell=True, close_fds=True) + +subprocess.Popen(__start__, shell=True, close_fds=True) + +while (not xbmc.abortRequested): + time.sleep(0.250) + +subprocess.Popen(__stop__, shell=True, close_fds=True)