123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- #!/bin/execlineb -P
- /bin/export PATH /usr/bin:/bin
- /bin/export recfunction "\
- foreground { s6-chown -u ${3} -g ${4} -- ${1} }
- foreground
- {
- ifelse { s6-test -d ${1} }
- {
- if -t { s6-test ! ${6} = "-" }
- s6-chmod ${6} ${1}
- }
- if -t { s6-test ! ${5} = "-" }
- s6-chmod ${5} ${1}
- }
- if -t { if { s6-${2} } s6-test -d ${1} }
- forbacktickx -0 subfile
- {
- backtick -D 0 -n S6_FIX_ATTRS_HIDDEN { printcontenv S6_FIX_ATTRS_HIDDEN }
- importas S6_FIX_ATTRS_HIDDEN S6_FIX_ATTRS_HIDDEN
- ifelse { s6-test ${S6_FIX_ATTRS_HIDDEN} -eq 0 } { s6-ls -0 ${1} }
- s6-ls -0 -a ${1}
- }
- multisubstitute
- {
- importas -u subfile subfile
- importas recfunction recfunction
- }
- execlineb -S6 -c ${recfunction} ${1}/${subfile} true ${3} ${4} ${5} ${6}"
- # process each line
- forstdin -d"\n" -- line
- importas -u line line
- if { s6-test -n ${line} }
- multidefine -0 -Cd" \t" -- ${line} { globex recurse userentry fmode dmode }
- # get 'uid' and 'gid'
- multidefine -Cd"," -- ${userentry} { account uidgid }
- backtick -n envuidgid_opts
- {
- backtick -n opts
- {
- ifte { s6-echo -- -D${uidgid} } { s6-echo -- -i }
- s6-test -n ${uidgid}
- }
- importas -u opts opts
- ifte { s6-echo -- -nB ${opts} } { s6-echo -- ${opts} }
- pipeline { s6-echo ${account} }
- if
- {
- redirfd -w 1 /dev/null
- fdmove -c 2 1
- s6-grep -- ":"
- }
- }
- importas -u -sCd" \t" envuidgid_opts envuidgid_opts
- s6-envuidgid ${envuidgid_opts} ${account}
- importas -u uid UID
- importas -u gid GID
- elglob -0 -- files ${globex}
- forx -p -- file { ${files} }
- multisubstitute
- {
- importas -u file file
- importas recfunction recfunction
- }
- execlineb -S6 -c ${recfunction} ${file} ${recurse} ${uid} ${gid} ${fmode} ${dmode}
|