/usr/share/bashburn/lib/misc/loopback.sh is in bashburn 3.0.1-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | # Directory names
typeset -r bb_lb_dir=/tmp/bb-loopback
typeset -r bb_im_copy_dir="/tmp/imagecopy"
#
# This file has functions for mounting an image file in a loopback
# device and edit its contents. After editing, a new image file
# is created containing the edited material.
#
# Remove temporary directories
loopback_cleanup()
{
sudo umount "$bb_lb_dir"
rm -rf "$bb_im_copy_dir"/*
}
loopback()
{
typeset -r mntcmd="mount -t iso9660 -o loop $1 $bb_lb_dir"
typeset answer
# Bad filename?
if [[ ! -r "$1" ]]
then
echo " \"$1\" $bb_lb_noread"
return 100 # FIXME: HOLD ON THAR BULLWINKLE
fi
# Create necessary directories if possible
if [[ ! -e "$bb_lb_dir" ]]
then
echo "$bb_lb_no_lb_dir"
mkdir -p "$bb_lb_dir" || { echo "$bb_lb_dir_cf"; return 2; }
echo "$bb_lb_dir_c"
fi
if [[ ! -e "$bb_im_copy_dir" ]]
then
echo "$bb_lb_no_im_dir"
mkdir -p "$bb_im_copy_dir" || { echo "$bb_lb_dir_cf"; return 3; }
echo "$bb_lb_dir_c"
fi
if [[ ! -e "${BBBURNDIR}" ]]
then
echo "$bb_lb_no_temp_dir"
mkdir -p ${BBBURNDIR} || { echo "$bb_lb_dir_cf"; return 4; }
echo "$bb_lb_dir_c"
fi
# Mount the CD image in a loopback device
if [[ "$USER" != root ]]
then
echo "$bb_lb_sudo1"
echo "$bb_lb_sudo2"
echo "$bb_lb_sudo3"
echo "$bb_lb_sudo4"
echo "$bb_lb_sudo5"
echo "$bb_lb_sudo6"
sudo $mntcmd || { echo "$bb_lb_mount_fail"; return 5; }
echo "$bb_lb_mount"
else
$mntcmd || { echo "$bb_lb_mount_fail"; return 6; }
fi
echo "$bb_lb_mount"
# Copy contents from the mounted image to another directory and set
# new permissions so its contents can be manipulated.
echo "$bb_lb_cp_cont"
cp -R "$bb_lb_dir"/* "$bb_im_copy_dir"
chmod -R +w "$bb_im_copy_dir"
# Change to new directory and start a shell session there
cd "$bb_im_copy_dir"
echo "$bb_lb_in_file"
${SHELL:-/bin/bash}
# When user exits shell session, change to temporary file directory and
# create new image file out of what user manipulated (If anything was).
echo "$bb_lb_change1"
echo "$bb_lb_change2"
#echo -n "|> "
#read answer
read -e -p "|>" answer
if [[ "$answer" == y ]]
then
# We want to make sure no data is deleted by mistake
if [[ "$(ls -A ${BBBURNDIR})" ]];
then
echo "$bb_lb_change3 \"${BBBURNDIR}\","
echo "$bb_lb_change4"
echo -n "$bb_lb_change5"
read -p "|>" answer
if [[ "$answer" == y ]]
then
cd "${BBBURNDIR}"
rm -rf "${BBBURNDIR}"/*
echo "$bb_lb_change6"
${BB_ISOCMD} -r -f -v -J -hide-joliet-trans-tbl \
-o BashBurn.iso ${bb_im_copy_dir} \
&& echo "$bb_lb_change7 \"${BBBURNDIR}\""
else
echo "$bb_lb_change8"
cleanup
fi
fi
else
echo "$bb_lb_change9"
fi
# Finally clean up our mess
loopback_cleanup
return 0
}
|