aboutsummaryrefslogtreecommitdiff
path: root/sh/tmpfiles.sh.in
diff options
context:
space:
mode:
Diffstat (limited to 'sh/tmpfiles.sh.in')
-rwxr-xr-xsh/tmpfiles.sh.in10
1 files changed, 8 insertions, 2 deletions
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) ;;