Mercurial > hgrepos > FreeBSD > ports > sysutils > local-bsdtools
comparison sbin/ftjail @ 342:89877869a665
Create all temporary files within a unique temporary directory
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Sat, 03 Dec 2022 21:27:50 +0100 |
| parents | a204a7415d4a |
| children | c5b1647cedb5 |
comparison
equal
deleted
inserted
replaced
| 341:a204a7415d4a | 342:89877869a665 |
|---|---|
| 971 local _res _jailname _dir_mounts _dir_fn_fstab _dir_basename _dir_fn_tldir | 971 local _res _jailname _dir_mounts _dir_fn_fstab _dir_basename _dir_fn_tldir |
| 972 local _root_dataset _root_mountpoint _root_type _root_options | 972 local _root_dataset _root_mountpoint _root_type _root_options |
| 973 local _clone_extra_props _canmount_prop | 973 local _clone_extra_props _canmount_prop |
| 974 local _line _opt | 974 local _line _opt |
| 975 local _root_readonly _root_origin | 975 local _root_readonly _root_origin |
| 976 local _u_tmpdir | |
| 976 | 977 |
| 977 _opt_keep="no" | 978 _opt_keep="no" |
| 978 _opt_old_origin="" | 979 _opt_old_origin="" |
| 979 while getopts "ko:" _opt ; do | 980 while getopts "ko:" _opt ; do |
| 980 case ${_opt} in | 981 case ${_opt} in |
| 1051 # | 1052 # |
| 1052 # XXX FIXME: should we check that _root_options equals "ro" or | 1053 # XXX FIXME: should we check that _root_options equals "ro" or |
| 1053 # start with "ro," | 1054 # start with "ro," |
| 1054 # _root_origin="$(zfs list -H -o origin "${_root_dataset}")" | 1055 # _root_origin="$(zfs list -H -o origin "${_root_dataset}")" |
| 1055 | 1056 |
| 1056 _dir_fn_fstab="$(env TMPDIR=/var/tmp mktemp -t ftjail_${_dir_basename}.fstab)" | 1057 _u_tmpdir="$(env TMPDIR=/var/tmp mktemp -d -t ftjail_${_dir_basename})" |
| 1058 [ -z "${_u_tmpdir}" ] && { echo "ERROR: cannot create unique temp dir" 1>&2; return 1; } | |
| 1059 _dir_fn_fstab="${_u_tmpdir}/fstab" | |
| 1057 echo -n "${_dir_mounts}" >>"${_dir_fn_fstab}" | 1060 echo -n "${_dir_mounts}" >>"${_dir_fn_fstab}" |
| 1058 | 1061 _dir_fn_tldir="${_u_tmpdir}/tldirs" |
| 1059 _dir_fn_tldir="$(env TMPDIR=/var/tmp mktemp -t ftjail_${_dir_basename}.tldir)" | |
| 1060 find "${_directory}" -depth 1 -type d 2>/dev/null | sort >>"${_dir_fn_tldir}" | 1062 find "${_directory}" -depth 1 -type d 2>/dev/null | sort >>"${_dir_fn_tldir}" |
| 1061 | 1063 |
| 1062 # Unmount in reverse order: unmount can do it for us | 1064 # Unmount in reverse order: unmount can do it for us |
| 1063 echo "Unmounting all datasets mounted at \`${_directory}'" | 1065 echo "Unmounting all datasets mounted at \`${_directory}'" |
| 1064 umount -a -F "${_dir_fn_fstab}" -v | 1066 umount -a -F "${_dir_fn_fstab}" -v |
| 1142 etcupdate -D "${_directory}" -t "${_etcupdate_tarball}" | 1144 etcupdate -D "${_directory}" -t "${_etcupdate_tarball}" |
| 1143 fi | 1145 fi |
| 1144 | 1146 |
| 1145 if [ "${_opt_keep}" != "yes" ]; then | 1147 if [ "${_opt_keep}" != "yes" ]; then |
| 1146 echo "Cleaning up...""" | 1148 echo "Cleaning up...""" |
| 1147 [ -n "${_dir_fn_tldir}" } && [ -f "${_dir_fn_tldir}" ] && rm -f "${_dir_fn_tldir}" | 1149 [ -n "${_u_tmpdir}" ] && [ -d "${_u_tmpdir}" ] && rm -rvf "${_u_tmpdir}" |
| 1148 [ -n "${_dir_fn_fstab}" ] && [ -f "${_dir_fn_fstab}" ] && rm -f "${_dir_fn_fstab}" | |
| 1149 fi | 1150 fi |
| 1150 echo "Done." | 1151 echo "Done." |
| 1151 } | 1152 } |
| 1152 | 1153 |
| 1153 | 1154 |
