commit:     d4204a97a2410fcf37a64385204e6452c6958e8d
Author:     Andrew Gregory <andrew.gregory.8 <AT> gmail <DOT> com>
AuthorDate: Mon Aug 25 19:46:28 2014 +0000
Commit:     William Hubbs <williamh <AT> gentoo <DOT> org>
CommitDate: Wed Aug 27 22:49:00 2014 +0000
URL:        
http://sources.gentoo.org/gitweb/?p=proj/openrc.git;a=commit;h=d4204a97

tmpfiles.sh: add support for C action

Recursively copies files or directories.  Added by systemd in 849958d1.

---
 sh/tmpfiles.sh.in | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/sh/tmpfiles.sh.in b/sh/tmpfiles.sh.in
index 41f86cf..6e7be42 100755
--- a/sh/tmpfiles.sh.in
+++ b/sh/tmpfiles.sh.in
@@ -80,6 +80,17 @@ _c() {
        fi
 }
 
+_C() {
+       # recursively copy a file or directory
+       local path=$1 mode=$2 uid=$3 gid=$4 age=$5 arg=$6
+       if [ ! -e "$path" ]; then
+               dryrun_or_real cp -r "$arg" "$path"
+               _restorecon "$path"
+               [ $uid != '-' ] && dryrun_or_real chown "$uid" "$path"
+               [ $gid != '-' ] && dryrun_or_real chgrp "$gid" "$path"
+               [ $mode != '-' ] && dryrun_or_real chmod "$mode" "$path"
+       fi
+}
 
 _f() {
        # Create a file if it doesn't exist yet
@@ -325,7 +336,7 @@ for FILE in $tmpfiles_d ; do
 
                # whine about invalid entries
                case $cmd in
-                       f|F|w|d|D|p|L|c|b|x|X|r|R|z|Z) ;;
+                       f|F|w|d|D|p|L|c|C|b|x|X|r|R|z|Z) ;;
                        *) warninvalid ; continue ;;
                esac
 
@@ -334,7 +345,7 @@ for FILE in $tmpfiles_d ; do
                        case "$cmd" in
                                p|f|F) mode=0644 ;;
                                d|D) mode=0755 ;;
-                               z|Z|x|r|R|L) ;;
+                               C|z|Z|x|r|R|L) ;;
                        esac
                fi
 

Reply via email to