diff options
-rw-r--r-- | init.d/tmpfiles.setup.in | 2 | ||||
-rwxr-xr-x | 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 7edef5ac..d5a6ecd9 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 da588e21..a9031632 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) ;; |