ntfsmount:

* use mount function from utils.[ch]
* remove fsname option (need to support if volume already mounted)
* add force option to support mount from utils
* update manual page
* fix tiny memleak
edge.strict_endians
cha0smaster 2005-07-15 15:53:22 +00:00
parent 2c942cb3f4
commit 0b75b12544
14 changed files with 1339 additions and 731 deletions

View File

@ -144,6 +144,7 @@ ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
all_includes = @all_includes@
all_libraries = @all_libraries@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@

520
aclocal.m4 vendored

File diff suppressed because it is too large Load Diff

64
config.guess vendored
View File

@ -136,16 +136,6 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
case "${UNAME_MACHINE}" in
i?86)
test -z "$VENDOR" && VENDOR=pc
;;
*)
test -z "$VENDOR" && VENDOR=unknown
;;
esac
test -f /etc/SuSE-release -o -f /.buildenv && VENDOR=suse
# Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
@ -835,25 +825,25 @@ EOF
echo ${UNAME_MACHINE}-pc-minix
exit 0 ;;
arm*:Linux:*:*)
echo ${UNAME_MACHINE}-${VENDOR}-linux
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit 0 ;;
cris:Linux:*:*)
echo cris-axis-linux
echo cris-axis-linux-gnu
exit 0 ;;
crisv32:Linux:*:*)
echo crisv32-axis-linux
echo crisv32-axis-linux-gnu
exit 0 ;;
frv:Linux:*:*)
echo frv-${VENDOR}-linux
echo frv-unknown-linux-gnu
exit 0 ;;
ia64:Linux:*:*)
echo ${UNAME_MACHINE}-${VENDOR}-linux
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit 0 ;;
m32r*:Linux:*:*)
echo ${UNAME_MACHINE}-${VENDOR}-linux
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit 0 ;;
m68*:Linux:*:*)
echo ${UNAME_MACHINE}-${VENDOR}-linux
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit 0 ;;
mips:Linux:*:*)
eval $set_cc_for_build
@ -872,7 +862,7 @@ EOF
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
test x"${CPU}" != x && echo "${CPU}-${VENDOR}-linux" && exit 0
test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
;;
mips64:Linux:*:*)
eval $set_cc_for_build
@ -891,13 +881,13 @@ EOF
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
test x"${CPU}" != x && echo "${CPU}-${VENDOR}-linux" && exit 0
test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
;;
ppc:Linux:*:*)
echo powerpc-${VENDOR}-linux
echo powerpc-unknown-linux-gnu
exit 0 ;;
ppc64:Linux:*:*)
echo powerpc64-${VENDOR}-linux
echo powerpc64-unknown-linux-gnu
exit 0 ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
@ -910,34 +900,34 @@ EOF
EV68*) UNAME_MACHINE=alphaev68 ;;
esac
objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
if test "$?" = 0 ; then LIBC="-libc1" ; else LIBC="" ; fi
echo ${UNAME_MACHINE}-${VENDOR}-linux${LIBC}
if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
exit 0 ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
PA7*) echo hppa1.1-${VENDOR}-linux ;;
PA8*) echo hppa2.0-${VENDOR}-linux ;;
*) echo hppa-${VENDOR}-linux ;;
PA7*) echo hppa1.1-unknown-linux-gnu ;;
PA8*) echo hppa2.0-unknown-linux-gnu ;;
*) echo hppa-unknown-linux-gnu ;;
esac
exit 0 ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
echo hppa64-${VENDOR}-linux
echo hppa64-unknown-linux-gnu
exit 0 ;;
s390:Linux:*:* | s390x:Linux:*:*)
echo ${UNAME_MACHINE}-ibm-linux
exit 0 ;;
sh64*:Linux:*:*)
echo ${UNAME_MACHINE}-${VENDOR}-linux
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit 0 ;;
sh*:Linux:*:*)
echo ${UNAME_MACHINE}-${VENDOR}-linux
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit 0 ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
echo ${UNAME_MACHINE}-${VENDOR}-linux
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit 0 ;;
x86_64:Linux:*:*)
echo x86_64-${VENDOR}-linux
echo x86_64-unknown-linux-gnu
exit 0 ;;
i*86:Linux:*:*)
# The BFD linker knows what the default object file format is, so
@ -952,18 +942,18 @@ EOF
p'`
case "$ld_supported_targets" in
elf32-i386)
TENTATIVE="${UNAME_MACHINE}-${VENDOR}-linux"
TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
;;
a.out-i386-linux)
echo "${UNAME_MACHINE}-${VENDOR}-linuxaout"
echo "${UNAME_MACHINE}-pc-linux-gnuaout"
exit 0 ;;
coff-i386)
echo "${UNAME_MACHINE}-${VENDOR}-linuxcoff"
echo "${UNAME_MACHINE}-pc-linux-gnucoff"
exit 0 ;;
"")
# Either a pre-BFD a.out linker (linuxoldld) or
# Either a pre-BFD a.out linker (linux-gnuoldld) or
# one that does not give us useful --help.
echo "${UNAME_MACHINE}-${VENDOR}-linuxoldld"
echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
exit 0 ;;
esac
# Determine whether the default compiler is a.out or elf
@ -992,7 +982,7 @@ EOF
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
test x"${LIBC}" != x && echo "${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}" | sed 's/linux-gnu/linux/' && exit 0
test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
;;
i*86:DYNIX/ptx:4*:*)

5
config.sub vendored
View File

@ -1172,7 +1172,7 @@ case $os in
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -linux* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
| -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
@ -1205,6 +1205,9 @@ case $os in
-linux-dietlibc)
os=-linux-dietlibc
;;
-linux*)
os=`echo $os | sed -e 's|linux|linux-gnu|'`
;;
-sunos5*)
os=`echo $os | sed -e 's|sunos5|solaris2|'`
;;

1212
configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -119,6 +119,7 @@ ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
all_includes = @all_includes@
all_libraries = @all_libraries@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@

View File

@ -128,6 +128,7 @@ ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
all_includes = @all_includes@
all_libraries = @all_libraries@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@

View File

@ -132,6 +132,7 @@ ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
all_includes = @all_includes@
all_libraries = @all_libraries@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@

View File

@ -194,6 +194,7 @@ ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
all_includes = @all_includes@
all_libraries = @all_libraries@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@

156
ltmain.sh
View File

@ -17,7 +17,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@ -43,8 +43,8 @@ EXIT_FAILURE=1
PROGRAM=ltmain.sh
PACKAGE=libtool
VERSION=1.5.14
TIMESTAMP=" (1.1220.2.195 2005/02/12 12:12:33)"
VERSION=1.5.18
TIMESTAMP=" (1.1220.2.245 2005/05/16 08:55:27)"
# See if we are running on zsh, and set the options which allow our
# commands through without removal of \ escapes.
@ -112,8 +112,9 @@ if test "${LANG+set}" = set; then
fi
# Make sure IFS has a sensible default
: ${IFS="
"}
lt_nl='
'
IFS=" $lt_nl"
if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
$echo "$modename: not configured to build any kind of library" 1>&2
@ -250,37 +251,14 @@ func_extract_an_archive ()
{
f_ex_an_ar_dir="$1"; shift
f_ex_an_ar_oldlib="$1"
f_ex_an_ar_lib=`$echo "X$f_ex_an_ar_oldlib" | $Xsed -e 's%^.*/%%'`
$show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
$run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
:
else
$echo "$modename: warning: object name conflicts; renaming object files" 1>&2
$echo "$modename: warning: to ensure that they will not overwrite" 1>&2
$show "cp $f_ex_an_ar_oldlib $f_ex_an_ar_dir/$f_ex_an_ar_lib"
$run eval "cp \$f_ex_an_ar_oldlib \$f_ex_an_ar_dir/\$f_ex_an_ar_lib"
$AR t "$f_ex_an_ar_oldlib" | sort | uniq -c \
| $EGREP -v '^[ ]*1[ ]' | while read count name
do
i=1
while test "$i" -le "$count"
do
# Put our $i before any first dot (extension)
# Never overwrite any file
name_to="$name"
while test "X$name_to" = "X$name" || test -f "$f_ex_an_ar_dir/$name_to"
do
name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
done
$show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_lib '$name' && $mv '$name' '$name_to')"
$run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_lib '$name' && $mv '$name' '$name_to' && $AR -d \$f_ex_an_ar_lib '$name')" || exit $?
i=`expr $i + 1`
done
done
$show "$rm $f_ex_an_ar_dir/$f_ex_an_ar_lib"
$run eval "$rm \$f_ex_an_ar_dir/\$f_ex_an_ar_lib"
$echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
exit $EXIT_FAILURE
fi
}
@ -757,6 +735,15 @@ if test -z "$show_help"; then
esac
done
qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
case $qlibobj in
*$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
qlibobj="\"$qlibobj\"" ;;
esac
if test "X$libobj" != "X$qlibobj"; then
$echo "$modename: libobj name \`$libobj' may not contain shell special characters."
exit $EXIT_FAILURE
fi
objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
if test "X$xdir" = "X$obj"; then
@ -829,12 +816,17 @@ compiler."
$run $rm $removelist
exit $EXIT_FAILURE
fi
$echo $srcfile > "$lockfile"
$echo "$srcfile" > "$lockfile"
fi
if test -n "$fix_srcfile_path"; then
eval srcfile=\"$fix_srcfile_path\"
fi
qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
case $qsrcfile in
*$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
qsrcfile="\"$qsrcfile\"" ;;
esac
$run $rm "$libobj" "${libobj}T"
@ -856,10 +848,10 @@ EOF
fbsd_hideous_sh_bug=$base_compile
if test "$pic_mode" != no; then
command="$base_compile $srcfile $pic_flag"
command="$base_compile $qsrcfile $pic_flag"
else
# Don't build PIC code
command="$base_compile $srcfile"
command="$base_compile $qsrcfile"
fi
if test ! -d "${xdir}$objdir"; then
@ -939,9 +931,9 @@ EOF
if test "$build_old_libs" = yes; then
if test "$pic_mode" != yes; then
# Don't build PIC code
command="$base_compile $srcfile"
command="$base_compile $qsrcfile"
else
command="$base_compile $srcfile $pic_flag"
command="$base_compile $qsrcfile $pic_flag"
fi
if test "$compiler_c_o" = yes; then
command="$command -o $obj"
@ -1365,6 +1357,8 @@ EOF
;;
darwin_framework)
compiler_flags="$compiler_flags $arg"
compile_command="$compile_command $arg"
finalize_command="$finalize_command $arg"
prev=
continue
;;
@ -1429,6 +1423,8 @@ EOF
-framework)
prev=darwin_framework
compiler_flags="$compiler_flags $arg"
compile_command="$compile_command $arg"
finalize_command="$finalize_command $arg"
continue
;;
@ -2852,12 +2848,12 @@ EOF
*) continue ;;
esac
case " $deplibs " in
*" $depdepl "*) ;;
*) deplibs="$depdepl $deplibs" ;;
*" $path "*) ;;
*) deplibs="$path $deplibs" ;;
esac
case " $deplibs " in
*" $path "*) ;;
*) deplibs="$deplibs $path" ;;
*" $depdepl "*) ;;
*) deplibs="$depdepl $deplibs" ;;
esac
done
fi # link_all_deplibs != no
@ -3124,7 +3120,7 @@ EOF
case $current in
0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
*)
$echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
$echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
$echo "$modename: \`$vinfo' is not valid version information" 1>&2
exit $EXIT_FAILURE
;;
@ -3133,7 +3129,7 @@ EOF
case $revision in
0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
*)
$echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
$echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
$echo "$modename: \`$vinfo' is not valid version information" 1>&2
exit $EXIT_FAILURE
;;
@ -3142,7 +3138,7 @@ EOF
case $age in
0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
*)
$echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
$echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
$echo "$modename: \`$vinfo' is not valid version information" 1>&2
exit $EXIT_FAILURE
;;
@ -5091,6 +5087,63 @@ fi\
if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
cmds=$old_archive_from_new_cmds
else
# POSIX demands no paths to be encoded in archives. We have
# to avoid creating archives with duplicate basenames if we
# might have to extract them afterwards, e.g., when creating a
# static archive out of a convenience library, or when linking
# the entirety of a libtool archive into another (currently
# not supported by libtool).
if (for obj in $oldobjs
do
$echo "X$obj" | $Xsed -e 's%^.*/%%'
done | sort | sort -uc >/dev/null 2>&1); then
:
else
$echo "copying selected object files to avoid basename conflicts..."
if test -z "$gentop"; then
gentop="$output_objdir/${outputname}x"
generated="$generated $gentop"
$show "${rm}r $gentop"
$run ${rm}r "$gentop"
$show "$mkdir $gentop"
$run $mkdir "$gentop"
status=$?
if test "$status" -ne 0 && test ! -d "$gentop"; then
exit $status
fi
fi
save_oldobjs=$oldobjs
oldobjs=
counter=1
for obj in $save_oldobjs
do
objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
case " $oldobjs " in
" ") oldobjs=$obj ;;
*[\ /]"$objbase "*)
while :; do
# Make sure we don't pick an alternate name that also
# overlaps.
newobj=lt$counter-$objbase
counter=`expr $counter + 1`
case " $oldobjs " in
*[\ /]"$newobj "*) ;;
*) if test ! -f "$gentop/$newobj"; then break; fi ;;
esac
done
$show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
$run ln "$obj" "$gentop/$newobj" ||
$run cp "$obj" "$gentop/$newobj"
oldobjs="$oldobjs $gentop/$newobj"
;;
*) oldobjs="$oldobjs $obj" ;;
esac
done
fi
eval cmds=\"$old_archive_cmds\"
if len=`expr "X$cmds" : ".*"` &&
@ -5104,20 +5157,7 @@ fi\
objlist=
concat_cmds=
save_oldobjs=$oldobjs
# GNU ar 2.10+ was changed to match POSIX; thus no paths are
# encoded into archives. This makes 'ar r' malfunction in
# this piecewise linking case whenever conflicting object
# names appear in distinct ar calls; check, warn and compensate.
if (for obj in $save_oldobjs
do
$echo "X$obj" | $Xsed -e 's%^.*/%%'
done | sort | sort -uc >/dev/null 2>&1); then
:
else
$echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2
$echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2
AR_FLAGS=cq
fi
# Is there a better way of finding the last object in the list?
for obj in $save_oldobjs
do
@ -6026,14 +6066,14 @@ relink_command=\"$relink_command\""
fi
# Now prepare to actually exec the command.
exec_cmd="\"\$cmd\"$args"
exec_cmd="\$cmd$args"
else
# Display what would be done.
if test -n "$shlibpath_var"; then
eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
$echo "export $shlibpath_var"
fi
eval \$echo \"\$cmd\"$args
$echo "$cmd$args"
exit $EXIT_SUCCESS
fi
;;

View File

@ -79,7 +79,7 @@ ntfscp_LDADD = $(AM_LIBS)
ntfscp_LDFLAGS = $(AM_LFLAGS)
if ENABLE_FUSE_MODULE
ntfsmount_SOURCES = ntfsmount.c
ntfsmount_SOURCES = ntfsmount.c utils.c utils.h
ntfsmount_LDADD = $(AM_LIBS) $(FUSE_MODULE_LIBS)
ntfsmount_LDFLAGS = $(AM_LFLAGS)
ntfsmount_CFLAGS = $(FUSE_MODULE_CFLAGS) -DFUSE_USE_VERSION=22

View File

@ -111,9 +111,10 @@ ntfsls_DEPENDENCIES = $(am__DEPENDENCIES_1)
am_ntfsmftalloc_OBJECTS = ntfsmftalloc.$(OBJEXT) utils.$(OBJEXT)
ntfsmftalloc_OBJECTS = $(am_ntfsmftalloc_OBJECTS)
ntfsmftalloc_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__ntfsmount_SOURCES_DIST = ntfsmount.c
am__ntfsmount_SOURCES_DIST = ntfsmount.c utils.c utils.h
@ENABLE_FUSE_MODULE_TRUE@am_ntfsmount_OBJECTS = \
@ENABLE_FUSE_MODULE_TRUE@ ntfsmount-ntfsmount.$(OBJEXT)
@ENABLE_FUSE_MODULE_TRUE@ ntfsmount-ntfsmount.$(OBJEXT) \
@ENABLE_FUSE_MODULE_TRUE@ ntfsmount-utils.$(OBJEXT)
ntfsmount_OBJECTS = $(am_ntfsmount_OBJECTS)
am__DEPENDENCIES_2 =
@ENABLE_FUSE_MODULE_TRUE@ntfsmount_DEPENDENCIES = \
@ -240,6 +241,7 @@ ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
all_includes = @all_includes@
all_libraries = @all_libraries@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
@ -336,7 +338,7 @@ ntfscat_LDFLAGS = $(AM_LFLAGS)
ntfscp_SOURCES = ntfscp.c utils.c utils.h
ntfscp_LDADD = $(AM_LIBS)
ntfscp_LDFLAGS = $(AM_LFLAGS)
@ENABLE_FUSE_MODULE_TRUE@ntfsmount_SOURCES = ntfsmount.c
@ENABLE_FUSE_MODULE_TRUE@ntfsmount_SOURCES = ntfsmount.c utils.c utils.h
@ENABLE_FUSE_MODULE_TRUE@ntfsmount_LDADD = $(AM_LIBS) $(FUSE_MODULE_LIBS)
@ENABLE_FUSE_MODULE_TRUE@ntfsmount_LDFLAGS = $(AM_LFLAGS)
@ENABLE_FUSE_MODULE_TRUE@ntfsmount_CFLAGS = $(FUSE_MODULE_CFLAGS) -DFUSE_USE_VERSION=22
@ -551,6 +553,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntfsls.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntfsmftalloc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntfsmount-ntfsmount.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntfsmount-utils.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntfsmove.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntfsresize.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntfsrm.Po@am__quote@
@ -596,6 +599,20 @@ ntfsmount-ntfsmount.obj: ntfsmount.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntfsmount_CFLAGS) $(CFLAGS) -c -o ntfsmount-ntfsmount.obj `if test -f 'ntfsmount.c'; then $(CYGPATH_W) 'ntfsmount.c'; else $(CYGPATH_W) '$(srcdir)/ntfsmount.c'; fi`
ntfsmount-utils.o: utils.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntfsmount_CFLAGS) $(CFLAGS) -MT ntfsmount-utils.o -MD -MP -MF "$(DEPDIR)/ntfsmount-utils.Tpo" -c -o ntfsmount-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntfsmount-utils.Tpo" "$(DEPDIR)/ntfsmount-utils.Po"; else rm -f "$(DEPDIR)/ntfsmount-utils.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='utils.c' object='ntfsmount-utils.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntfsmount_CFLAGS) $(CFLAGS) -c -o ntfsmount-utils.o `test -f 'utils.c' || echo '$(srcdir)/'`utils.c
ntfsmount-utils.obj: utils.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntfsmount_CFLAGS) $(CFLAGS) -MT ntfsmount-utils.obj -MD -MP -MF "$(DEPDIR)/ntfsmount-utils.Tpo" -c -o ntfsmount-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi`; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntfsmount-utils.Tpo" "$(DEPDIR)/ntfsmount-utils.Po"; else rm -f "$(DEPDIR)/ntfsmount-utils.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='utils.c' object='ntfsmount-utils.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntfsmount_CFLAGS) $(CFLAGS) -c -o ntfsmount-utils.obj `if test -f 'utils.c'; then $(CYGPATH_W) 'utils.c'; else $(CYGPATH_W) '$(srcdir)/utils.c'; fi`
mostlyclean-libtool:
-rm -f *.lo

View File

@ -121,8 +121,8 @@ The default is infinite. Note that the size of read requests is
limited anyway to 32 pages (which is 128kbyte on i386).
.TP
.B fsname=
Sets the filesystem name. The default is the program name.
.B force=
Force mount even if errors occured. Use this option only if you know what are you doing and don't cry about data loss.
.TP
.B ro
@ -130,7 +130,7 @@ Mount filesystem read-only.
.TP
.B no_def_opts
By default ntfsmount acts as "default_permissions,kernel_cache,allow_other,fsname=ntfs#device" was passed to it, this option cancel this behaviour.
By default ntfsmount acts as "default_permissions,kernel_cache,allow_other" was passed to it, this option cancel this behaviour.
.TP
.B succeed_chmod

View File

@ -43,6 +43,7 @@
#include "dir.h"
#include "unistr.h"
#include "layout.h"
#include "utils.h"
typedef struct {
fuse_fill_dir_t filler;
@ -61,6 +62,7 @@ typedef struct {
BOOL ro;
BOOL show_sys_files;
BOOL succeed_chmod;
BOOL force;
} ntfs_fuse_context_t;
typedef enum {
@ -74,7 +76,9 @@ static const char *EXEC_NAME = "ntfsmount";
static char def_opts[] = "default_permissions,kernel_cache,allow_other,";
static ntfs_fuse_context_t *ctx;
#define Eprintf(arg...) fprintf(stderr, ##arg)
GEN_PRINTF(Eprintf, stderr, NULL, FALSE)
GEN_PRINTF(Vprintf, stderr, NULL, TRUE)
GEN_PRINTF(Qprintf, stderr, NULL, FALSE)
static long ntfs_fuse_get_nr_free_mft_records(ntfs_volume *vol)
{
@ -870,9 +874,9 @@ static int ntfs_fuse_mount(const char *device)
{
ntfs_volume *vol;
vol = ntfs_mount(device, (ctx->ro) ? MS_RDONLY : 0);
vol = utils_mount_volume(device, (ctx->ro) ? MS_RDONLY : 0, ctx->force);
if (!vol) {
perror("Mount failed");
Eprintf("Mount failed.\n");
return -1;
}
ctx->vol = vol;
@ -897,16 +901,16 @@ static void signal_handler(int arg __attribute__((unused)))
static char *parse_options(char *options, char **device)
{
char *opts, *s, *opt, *val, *ret;
BOOL no_def_opts = FALSE, no_fsname = FALSE;
BOOL no_def_opts = FALSE;
*device = NULL;
/*
* +8 for different in length of "fsname=ntfs#..." and "dev=...".
* +3 for different in length of "fsname=..." and "dev=...".
* +1 for comma
* +1 for null-terminator.
* Total: +10
* Total: +5
*/
ret = malloc(strlen(def_opts) + strlen(options) + 10);
ret = malloc(strlen(def_opts) + strlen(options) + 5);
if (!ret) {
perror("malloc failed");
return NULL;
@ -935,14 +939,12 @@ static char *parse_options(char *options, char **device)
ctx->ro =TRUE;
strcat(ret, "ro,");
} else if (!strcmp(opt, "fsname")) { /* Filesystem name. */
if (!val) {
Eprintf("fsname option should have value.\n");
goto err_exit;
}
no_fsname = TRUE;
strcat(ret, "fsname=");
strcat(ret, val);
strcat(ret, ",");
/*
* We need this to be able to check whether filesystem
* mounted or not.
*/
Eprintf("fsname is unsupported option.\n");
goto err_exit;
} else if (!strcmp(opt, "no_def_opts")) {
if (val) {
Eprintf("no_def_opts option should not have "
@ -995,6 +997,13 @@ static char *parse_options(char *options, char **device)
goto err_exit;
}
ctx->succeed_chmod = TRUE;
} else if (!strcmp(opt, "force")) {
if (val) {
Eprintf("force option should not "
"have value.\n");
goto err_exit;
}
ctx->force = TRUE;
} else { /* Probably FUSE option. */
strcat(ret, opt);
if (val) {
@ -1006,13 +1015,10 @@ static char *parse_options(char *options, char **device)
}
if (!*device)
goto err_exit;
if (!no_def_opts) {
if (!no_def_opts)
strcat(ret, def_opts);
if (!no_fsname) {
strcat(ret, "fsname=ntfs#");
strcat(ret, *device);
}
}
strcat(ret, "fsname=");
strcat(ret, *device);
exit:
free(opts);
return ret;
@ -1031,9 +1037,9 @@ static void usage(void)
EXEC_NAME);
Eprintf("Possible options are:\n\tdefault_permissions\n\tallow_other\n"
"\tkernel_cache\n\tlarge_read\n\tdirect_io\n\tmax_read\n\t"
"fsname\n\tro\n\tno_def_opts\n\tumask\n\tfmask\n\tdmask\n\t"
"force\n\tro\n\tno_def_opts\n\tumask\n\tfmask\n\tdmask\n\t"
"uid\n\tgid\n\tshow_sys_files\n\tsucceed_chmod\n\tdev\n\n");
Eprintf("Default options are: \"%sfsname=ntfs#device\".\n", def_opts);
Eprintf("Default options are: \"%s\".\n", def_opts);
}
int main(int argc, char *argv[])
@ -1067,18 +1073,27 @@ int main(int argc, char *argv[])
if (!device) {
Eprintf("dev option is mandatory.\n");
ntfs_fuse_destroy();
return 5;
return 2;
}
if (!parsed_options) {
free(device);
ntfs_fuse_destroy();
return 6;
return 3;
}
/* Mount volume. */
if (ntfs_fuse_mount(device)) {
free(device);
ntfs_fuse_destroy();
return 4;
}
free(device);
/* Create filesystem. */
ffd = fuse_mount(mnt_point, parsed_options);
if (ffd == -1) {
Eprintf("fuse_mount failed.\n");
return 2;
ntfs_fuse_destroy();
return 5;
}
free(parsed_options);
#ifndef DEBUG
@ -1091,14 +1106,8 @@ int main(int argc, char *argv[])
Eprintf("fuse_new failed.\n");
close(ffd);
fuse_unmount(mnt_point);
return 3;
}
/* Mount volume. */
if (ntfs_fuse_mount(device)) {
fuse_destroy(fh);
close(ffd);
fuse_unmount(mnt_point);
return 4;
ntfs_fuse_destroy();
return 6;
}
#ifndef DEBUG
if (daemon(0, 0))