commit:     686ee62a79e12ad73581ef4e151baad21b624935
Author:     Andrew Gregory <andrew.gregory.8 <AT> gmail <DOT> com>
AuthorDate: Wed Mar 26 16:13:20 2014 +0000
Commit:     William Hubbs <williamh <AT> gentoo <DOT> org>
CommitDate: Thu Mar 27 15:36:41 2014 +0000
URL:        
http://git.overlays.gentoo.org/gitweb/?p=proj/openrc.git;a=commit;h=686ee62a

tmpfiles: add support for --boot option

For compatibility with systemd-tmpfiles.

Fixes #17

Signed-off-by: Andrew Gregory <andrew.gregory.8 <AT> gmail.com>

---
 init.d/tmpfiles.setup.in |  2 +-
 sh/tmpfiles.sh.in        | 10 ++++++++--
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/init.d/tmpfiles.setup.in b/init.d/tmpfiles.setup.in
index 7edef5a..d5a6ecd 100644
--- a/init.d/tmpfiles.setup.in
+++ b/init.d/tmpfiles.setup.in
@@ -12,7 +12,7 @@ depend()
 start()
 {
        ebegin "setting up tmpfiles.d entries"
-       @LIBEXECDIR@/sh/tmpfiles.sh --exclude-prefix=/dev --create --remove \
+       @LIBEXECDIR@/sh/tmpfiles.sh --exclude-prefix=/dev --create --remove 
--boot \
                ${tmpfiles_opts}
        eend $?
        return 0

diff --git a/sh/tmpfiles.sh.in b/sh/tmpfiles.sh.in
index da588e2..a903163 100755
--- a/sh/tmpfiles.sh.in
+++ b/sh/tmpfiles.sh.in
@@ -214,7 +214,7 @@ _Z() {
        CHOPTS=-R relabel "$@"
 }
 
-CREATE=0 REMOVE=0 CLEAN=0 VERBOSE=0 DRYRUN=0 error=0 LINENO=0
+BOOT=0 CREATE=0 REMOVE=0 CLEAN=0 VERBOSE=0 DRYRUN=0 error=0 LINENO=0
 EXCLUDE=
 PREFIX=
 FILE=
@@ -249,6 +249,7 @@ done
 
 while [ $# -gt 0 ]; do
        case $1 in
+               --boot) BOOT=1 ;;
                --create) CREATE=1 ;;
                --remove) REMOVE=1 ;;
                --clean) CLEAN=1 ;; # TODO: Not implemented
@@ -266,7 +267,7 @@ if [ $(( CLEAN )) -eq 1 ] ; then
 fi
 
 if [ "$CREATE$REMOVE" = '00' ]; then
-       printf 'usage: %s [--exclude-prefix=path] [--prefix=path] [--create] 
[--remove] [--clean] [--verbose] [--dry-run]\n' "${0##*/}"
+       printf 'usage: %s [--exclude-prefix=path] [--prefix=path] [--boot] 
[--create] [--remove] [--clean] [--verbose] [--dry-run]\n' "${0##*/}"
        exit 1
 fi
 
@@ -283,6 +284,7 @@ for FILE in $tmpfiles_d ; do
        # Cmd  Path           Mode UID  GID  Age Argument
        # d    /run/user      0755 root root 10d -
        # Mode, UID, GID, Age, Argument may be omitted!
+       # If Cmd ends with !, the line is only processed if --boot is passed
 
        # XXX: Upstream says whitespace is NOT permitted in the Path argument.
        # But IS allowed when globs are expanded for the x/r/R/z/Z types.
@@ -294,6 +296,10 @@ for FILE in $tmpfiles_d ; do
                        continue
                fi
 
+               case $cmd in
+                       *!) [ "$BOOT" -eq "1" ] || continue; cmd=${cmd%!} ;;
+               esac
+
                # whine about invalid entries
                case $cmd in
                        f|F|w|d|D|p|L|c|b|x|X|r|R|z|Z) ;;

Reply via email to