From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id A6FFF138010 for ; Sat, 22 Sep 2012 14:58:36 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 421AFE052E; Sat, 22 Sep 2012 14:58:29 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 0739EE052E for ; Sat, 22 Sep 2012 14:58:28 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 171F633C844 for ; Sat, 22 Sep 2012 14:58:28 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id B906CE5442 for ; Sat, 22 Sep 2012 14:58:26 +0000 (UTC) From: "Christian Ruppert" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Christian Ruppert" Message-ID: <1348325866.0406c6085bb25ace04c7880f860219ebfc67a16f.idl0r@OpenRC> Subject: [gentoo-commits] proj/openrc:master commit in: man/, sh/ X-VCS-Repository: proj/openrc X-VCS-Files: man/runscript.8 sh/runscript.sh.in X-VCS-Directories: man/ sh/ X-VCS-Committer: idl0r X-VCS-Committer-Name: Christian Ruppert X-VCS-Revision: 0406c6085bb25ace04c7880f860219ebfc67a16f X-VCS-Branch: master Date: Sat, 22 Sep 2012 14:58:26 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 5be0f04c-7249-420a-9a48-c65737db0960 X-Archives-Hash: 83360cae350115f53d065dab227af9e8 commit: 0406c6085bb25ace04c7880f860219ebfc67a16f Author: Christian Ruppert gentoo org> AuthorDate: Sat Sep 22 14:57:46 2012 +0000 Commit: Christian Ruppert gentoo org> CommitDate: Sat Sep 22 14:57:46 2012 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/openrc.git;a=commit;h=0406c608 Add restart_pre/restart_post support, also document RC_CMD --- man/runscript.8 | 8 ++++++++ sh/runscript.sh.in | 22 ++++++++++++++++++++++ 2 files changed, 30 insertions(+), 0 deletions(-) diff --git a/man/runscript.8 b/man/runscript.8 index b87f8ef..d823e33 100644 --- a/man/runscript.8 +++ b/man/runscript.8 @@ -357,6 +357,9 @@ In a Gentoo Prefix installation, this variable contains the prefix offset. Otherwise it is undefined. .It Va RC_UNAME The result of `uname -s`. +.It Va RC_CMD +Name of the command like start, stop, restart, ... +RC_CMD is one way to determine whether it's a restart or normal start/stop. .El .Sh FILES .Pp @@ -444,6 +447,11 @@ depend() need ${_need} } +restart_pre() { + # Verify a config and abort the restart in case it's not valid + ... +} + start_pre() { # Ensure that our dirs are correct diff --git a/sh/runscript.sh.in b/sh/runscript.sh.in index 6ad2ded..3b9a72d 100644 --- a/sh/runscript.sh.in +++ b/sh/runscript.sh.in @@ -285,15 +285,37 @@ while [ -n "$1" ]; do case $1 in start|stop|status) verify_boot;; esac + + # FIXME: We may want to skip the start/stop _pre functions later + # restart_pre + if [ "${RC_CMD}" = "restart" ]; then + if [ "${1}" = "stop" -a "$(command -v "restart_pre")" = "restart_pre" ]; then + restart_pre || exit $? + fi + fi + + # Execute _pre functions if [ "$(command -v "$1_pre")" = "$1_pre" ] then "$1"_pre || exit $? fi + + # Execute the actual command/function, start, stop, ... "$1" || exit $? + + # restart_post + if [ "${RC_CMD}" = "restart" ]; then + if [ "${1}" = "start" -a "$(command -v "restart_post")" = "restart_post" ]; then + restart_post || exit $? + fi + fi + + # Execute the _post functions if [ "$(command -v "$1_post")" = "$1_post" ] then "$1"_post || exit $? fi + shift continue 2 else