fix-attrs 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/bin/sh -e
  2. if test "0`printcontenv S6_FIX_ATTRS_HIDDEN`" -ne 0 ; then
  3. lsopt='-a'
  4. else
  5. lsopt=''
  6. fi
  7. applyrec () {
  8. s6-chown -u "$3" -g "$4" -- "$1"
  9. if test -d "$1" ; then
  10. s6-chmod "$6" "$1"
  11. if test "$2" = true ; then
  12. for subfile in `s6-ls $lsopt "$1" ; do
  13. applyrec "$subfile" "$2" "$3" "$4" "$5" "$6"
  14. done
  15. fi
  16. else
  17. s6-chmod "$5" "$1"
  18. fi
  19. }
  20. while read globex recurse userentry fmode dmode ; do
  21. if test -n "$globex" && test "$globex" != "#" ; then
  22. account="${userentry%%,*}"
  23. if test "$account" != "$userentry" ; then
  24. default="-D${userentry#*,}"
  25. else
  26. default='-i'
  27. fi
  28. if test "${account%%:*}" != "$account" ; then
  29. opts='-nB'
  30. else
  31. opts=""
  32. fi
  33. uidgid=`s6-envuidgid "$default" $opts -- "$account" multisubstitute importas UID UID importas GID GID '' s6-echo -- '${UID}:${GID}'`
  34. uid=${uidgid%%:*}
  35. gid=${uidgid#*:}
  36. for file in $globex ; do
  37. applyrec "$file" "$recurse" "$uid" "$gid" "$fmode" "$dmode"
  38. done
  39. fi
  40. done