From 03797171f8350096cabc7a816d783233f051f32b Mon Sep 17 00:00:00 2001 From: Jephte CLAIN Date: Tue, 19 Aug 2014 12:32:00 +0400 Subject: [PATCH] =?UTF-8?q?elogto=20n'est=20plus=20lanc=C3=A9=20dans=20un?= =?UTF-8?q?=20sous-shell?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- uscrontab | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/uscrontab b/uscrontab index 7710371..0a1acd0 100755 --- a/uscrontab +++ b/uscrontab @@ -391,19 +391,27 @@ elif [ "$action" == "run" ]; then autoclean "$lockfile" fi + function __should_fork() { + # tester si la commande doit être lancée dans un sous-shell + local cmd + cmd="${1%% *}" + case "$cmd" in + check_pidfile|remove_pidfile|elogto) return 1;; + esac + return 0 + } function __ctexec() { local ec=0 if [ -n "$fake" ]; then echo "$*" else edebug "$*" - if [ "${1#check_pidfile }" != "$1" -o "${1#remove_pidfile }" != "$1" ]; then - # cas particulier: les fonctions check_pidfile() et - # remove_pidfile() doivent être exécutée dans le contexte - # courant, et non pas dans un sous-shell - eval "$*"; ec=$? - else + if __should_fork "$1"; then (eval "$*"); ec=$? + else + # cas particulier: certaines fonctions doivent être exécutée + # dans le contexte courant, et non pas dans un sous-shell + eval "$*"; ec=$? fi fi [ -n "$USCRONTAB_STOPEC" -a "$ec" == "$USCRONTAB_STOPEC" ] && exit 0