See http://library.gnome.org/misc/release-notes/2.24/ for the general release notes. On the FreeBSD front, this release introduces Fuse support in HAL, adds multi-CPU support to libgtop, WebKit updates, and fixes some long-standing seahorse and gnome-keyring bugs. The documentation updates to the website are forthcoming. This release features commits by adamw, ahze, kwm, mezz, and myself. It would not have been possible without are contributors and testers: Alexander Loginov Craig Butler [1] Dmitry Marakasov [6] Eric L. Chen Joseph S. Atkinson Kris Moore Lapo Luchini [7] Nikos Ntarmos Pawel Worach Romain Tartiere TAOKA Fumiyoshi [3] Yasuda Keisuke Zyl aZ [4] bf [2] [5] Florent Thoumie Peter Wemm pluknet PR: 125857 [1] 126993 [2] 130031 [3] 127399 [4] 127661 [5] 124302 [6] 129570 [7] 129936 123790
130 lines
3.0 KiB
Bash
130 lines
3.0 KiB
Bash
#!/bin/sh
|
|
# Wrapper script for FreeBSD and PC-BSD, which takes calls from HAL
|
|
# for running mount_ntfs, and performs it with a given FUSE helper.
|
|
###################################################################
|
|
|
|
## Modify this next variable to point to the correct FUSE helper.
|
|
FUSE_HELPER="ntfs-3g"
|
|
## DO NOT modify anything below this.
|
|
|
|
FUSEDB="/tmp"
|
|
if [ -n "${TMPDIR}" ]
|
|
then
|
|
FUSEDB=${TMPDIR}
|
|
fi
|
|
|
|
FUSEDB="${FUSEDB}/.fuse-mnts"
|
|
MNTSTRING=""
|
|
OPTIONS=""
|
|
FOUNDOPT="0"
|
|
FOUNDU="0"
|
|
HWDEV=""
|
|
FOUNDDEV="0"
|
|
|
|
for i in $@
|
|
do
|
|
if [ "$FOUNDOPT" = "1" ]
|
|
then
|
|
OPTIONS="${OPTIONS} -o ${i}"
|
|
elif [ "${FOUNDU}" = "1" ]
|
|
then
|
|
OPTIONS="${OPTIONS} -o uid=${i}"
|
|
else
|
|
|
|
if [ "${FOUNDDEV}" = "1" ]
|
|
then
|
|
# Save the mount-point, will be used later
|
|
MNTPOINT="${i}"
|
|
FOUNDDEV="2"
|
|
fi
|
|
|
|
echo ${i}| grep -q "/dev" 2>/dev/null
|
|
if [ "$?" = "0" -a "${FOUNDDEV}" = "0" ]
|
|
then
|
|
FOUNDDEV="1"
|
|
# Lets check if we were given a fuse[] device
|
|
# or a real device name
|
|
echo "${i}" | grep -q "fuse" 2>/dev/null
|
|
if [ "$?" = "0" ]
|
|
then
|
|
# Lets save the old fuse device name we had saved
|
|
OLDFUSE="${i}"
|
|
|
|
# Lets get the *real* device name for FUSE helper
|
|
REALHWDEV="`cat ${FUSEDB} | grep ${i} | cut -d '=' -f 2`"
|
|
|
|
# Now lets change the string we will be saving
|
|
i="${REALHWDEV}"
|
|
else
|
|
# We are doing a first time mount of this device
|
|
|
|
# Set the real device name for mounting
|
|
REALHWDEV="${i}"
|
|
fi
|
|
fi
|
|
|
|
# Add the value to our mount string
|
|
if [ "${i}" != "-o" -a "${i}" != "-u" ]
|
|
then
|
|
MNTSTRING="${MNTSTRING} ${i}"
|
|
fi
|
|
|
|
fi
|
|
|
|
# Check if we are on a -u flag now
|
|
if [ "${i}" = "-u" ]
|
|
then
|
|
FOUNDU="1"
|
|
else
|
|
FOUNDU="0"
|
|
fi
|
|
|
|
# Check if we are on a -o option
|
|
if [ "${i}" = "-o" ]
|
|
then
|
|
FOUNDOPT="1"
|
|
else
|
|
FOUNDOPT="0"
|
|
fi
|
|
done
|
|
|
|
# Save our final string which our FUSE helper will use
|
|
FINALSTRING="${MNTSTRING} ${OPTIONS}"
|
|
|
|
|
|
# Check that fuse.ko is loaded
|
|
kldstat | grep -q fuse 2>/dev/null
|
|
if [ "$?" != "0" ]
|
|
then
|
|
kldload /usr/local/modules/fuse.ko
|
|
fi
|
|
|
|
# Run the FUSE helper command now, with the options in the right order
|
|
${FUSE_HELPER} ${FINALSTRING}
|
|
|
|
# If we have an OLDFUSE variable, lets clear it from the list
|
|
if [ ! -z "${OLDFUSE}" -a -e ${FUSEDB} ]
|
|
then
|
|
cat ${FUSEDB} | grep -v "${OLDFUSE}=" > /tmp/.newfuse
|
|
mv /tmp/.newfuse ${FUSEDB}
|
|
fi
|
|
|
|
# Now lets figure out which fuse device was used and save it to DB
|
|
NEWFUSE="`mount | tr -s ' ' | grep \" ${MNTPOINT} \" | cut -d ' ' -f 1`"
|
|
|
|
# Make sure we don't already have this fuse device listed
|
|
if [ -e ${FUSEDB} ]
|
|
then
|
|
cat ${FUSEDB} | grep -v "${NEWFUSE}=" > /tmp/.newfuse
|
|
mv /tmp/.newfuse ${FUSEDB}
|
|
else
|
|
touch ${FUSEDB}
|
|
fi
|
|
|
|
# Save the fuse device to our DB
|
|
echo "${NEWFUSE}=${REALHWDEV}" >> ${FUSEDB}
|
|
|
|
|
|
# Finished!
|
|
exit 0
|