summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorTails developers <amnesia@boum.org>2012-03-24 19:29:36 +0100
committerDaniel Baumann <daniel@debian.org>2012-04-05 07:51:13 +0200
commit6d0cc254c6b9c37c674db96017752e5f2b3b9005 (patch)
treecf6d2d11f04e0f320c6f788b380d73703ae8cb18 /scripts
parent395a2b5f13edc3c3d39a414c403ed317711e9d1b (diff)
downloadlive-boot-6d0cc254c6b9c37c674db96017752e5f2b3b9005.tar.gz
live-boot-6d0cc254c6b9c37c674db96017752e5f2b3b9005.zip
Adding functions equivalent to chmod/chown --reference.
This option is apparently not present in busybox.
Diffstat (limited to 'scripts')
-rw-r--r--scripts/live-helpers30
1 files changed, 24 insertions, 6 deletions
diff --git a/scripts/live-helpers b/scripts/live-helpers
index ce28742..860e6ff 100644
--- a/scripts/live-helpers
+++ b/scripts/live-helpers
@@ -530,6 +530,24 @@ what_is_mounted_on ()
grep -m1 "^[^ ]\+ ${dir} " /proc/mounts | cut -d' ' -f1
}
+chown_ref ()
+{
+ local reference="${1}"
+ shift
+ local targets=${@}
+ local owner=$(stat -c %u:%g "${reference}")
+ chown -h ${owner} ${targets}
+}
+
+chmod_ref ()
+{
+ local reference="${1}"
+ shift
+ local targets=${@}
+ local rights=$(stat -c %a "${reference}")
+ chmod ${rights} ${targets}
+}
+
lastline ()
{
while read lines
@@ -1164,8 +1182,8 @@ link_files ()
then
mkdir -p "${dest}"
prev="$(dirname "${dest}")"
- chown --reference "${prev}" "${dest}"
- chmod --reference "${prev}" "${dest}"
+ chown_ref "${prev}" "${dest}"
+ chmod_ref "${prev}" "${dest}"
fi
link_files "${src}" "${dest}" "${src_mask}"
else
@@ -1433,8 +1451,8 @@ activate_custom_mounts ()
# unions and don't need to be bootstrapped
# linkfiles dirs can't be bootstrapped in a sensible way
mkdir -p "${source}"
- chown --reference "${dest}" "${source}"
- chmod --reference "${dest}" "${source}"
+ chown_ref "${dest}" "${source}"
+ chmod_ref "${dest}" "${source}"
else
# ensure that $dest is not copied *into* $source
mkdir -p "$(dirname ${source})"
@@ -1494,8 +1512,8 @@ activate_custom_mounts ()
rm -rf "${cow_dir}"
fi
mkdir -p ${cow_dir}
- chown --reference "${source}" "${cow_dir}"
- chmod --reference "${source}" "${cow_dir}"
+ chown_ref "${source}" "${cow_dir}"
+ chmod_ref "${source}" "${cow_dir}"
do_union ${dest} ${cow_dir} ${source} ${rofs_dest_backing}
fi