mirror of https://github.com/vitalif/e2fsprogs
misc: use libmagic when libblkid can't identify something
If we're using check_plausibility() to try to identify something that obviously isn't an ext* filesystem and libblkid doesn't know what it is, try libmagic instead. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>crypto
parent
c8b20b40eb
commit
b291c11f08
|
@ -114,6 +114,7 @@ LIBCOM_ERR = $(LIB)/libcom_err@LIB_EXT@ @PRIVATE_LIBS_CMT@ @SEM_INIT_LIB@
|
||||||
LIBE2P = $(LIB)/libe2p@LIB_EXT@
|
LIBE2P = $(LIB)/libe2p@LIB_EXT@
|
||||||
LIBEXT2FS = $(LIB)/libext2fs@LIB_EXT@
|
LIBEXT2FS = $(LIB)/libext2fs@LIB_EXT@
|
||||||
LIBUUID = @LIBUUID@ @SOCKET_LIB@
|
LIBUUID = @LIBUUID@ @SOCKET_LIB@
|
||||||
|
LIBMAGIC = @MAGIC_LIB@
|
||||||
LIBQUOTA = @STATIC_LIBQUOTA@
|
LIBQUOTA = @STATIC_LIBQUOTA@
|
||||||
LIBBLKID = @LIBBLKID@ @PRIVATE_LIBS_CMT@ $(LIBUUID)
|
LIBBLKID = @LIBBLKID@ @PRIVATE_LIBS_CMT@ $(LIBUUID)
|
||||||
LIBINTL = @LIBINTL@
|
LIBINTL = @LIBINTL@
|
||||||
|
|
|
@ -643,6 +643,7 @@ CYGWIN_CMT
|
||||||
LINUX_CMT
|
LINUX_CMT
|
||||||
UNI_DIFF_OPTS
|
UNI_DIFF_OPTS
|
||||||
SEM_INIT_LIB
|
SEM_INIT_LIB
|
||||||
|
MAGIC_LIB
|
||||||
SOCKET_LIB
|
SOCKET_LIB
|
||||||
SIZEOF_OFF_T
|
SIZEOF_OFF_T
|
||||||
SIZEOF_LONG_LONG
|
SIZEOF_LONG_LONG
|
||||||
|
@ -13134,6 +13135,59 @@ if test "x$ac_cv_lib_socket_socket" = xyes; then :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for magic_file in -lmagic" >&5
|
||||||
|
$as_echo_n "checking for magic_file in -lmagic... " >&6; }
|
||||||
|
if ${ac_cv_lib_magic_magic_file+:} false; then :
|
||||||
|
$as_echo_n "(cached) " >&6
|
||||||
|
else
|
||||||
|
ac_check_lib_save_LIBS=$LIBS
|
||||||
|
LIBS="-lmagic $LIBS"
|
||||||
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
|
/* end confdefs.h. */
|
||||||
|
|
||||||
|
/* Override any GCC internal prototype to avoid an error.
|
||||||
|
Use char because int might match the return type of a GCC
|
||||||
|
builtin and then its argument prototype would still apply. */
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C"
|
||||||
|
#endif
|
||||||
|
char magic_file ();
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
return magic_file ();
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
_ACEOF
|
||||||
|
if ac_fn_c_try_link "$LINENO"; then :
|
||||||
|
ac_cv_lib_magic_magic_file=yes
|
||||||
|
else
|
||||||
|
ac_cv_lib_magic_magic_file=no
|
||||||
|
fi
|
||||||
|
rm -f core conftest.err conftest.$ac_objext \
|
||||||
|
conftest$ac_exeext conftest.$ac_ext
|
||||||
|
LIBS=$ac_check_lib_save_LIBS
|
||||||
|
fi
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_magic_magic_file" >&5
|
||||||
|
$as_echo "$ac_cv_lib_magic_magic_file" >&6; }
|
||||||
|
if test "x$ac_cv_lib_magic_magic_file" = xyes; then :
|
||||||
|
MAGIC_LIB=-lmagic
|
||||||
|
for ac_header in magic.h
|
||||||
|
do :
|
||||||
|
ac_fn_c_check_header_mongrel "$LINENO" "magic.h" "ac_cv_header_magic_h" "$ac_includes_default"
|
||||||
|
if test "x$ac_cv_header_magic_h" = xyes; then :
|
||||||
|
cat >>confdefs.h <<_ACEOF
|
||||||
|
#define HAVE_MAGIC_H 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for optreset" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for optreset" >&5
|
||||||
$as_echo_n "checking for optreset... " >&6; }
|
$as_echo_n "checking for optreset... " >&6; }
|
||||||
if ${ac_cv_have_optreset+:} false; then :
|
if ${ac_cv_have_optreset+:} false; then :
|
||||||
|
|
|
@ -1153,6 +1153,12 @@ SOCKET_LIB=''
|
||||||
AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
|
AC_CHECK_LIB(socket, socket, [SOCKET_LIB=-lsocket])
|
||||||
AC_SUBST(SOCKET_LIB)
|
AC_SUBST(SOCKET_LIB)
|
||||||
dnl
|
dnl
|
||||||
|
dnl See if libmagic exists
|
||||||
|
dnl
|
||||||
|
AC_CHECK_LIB(magic, magic_file, [MAGIC_LIB=-lmagic
|
||||||
|
AC_CHECK_HEADERS([magic.h])])
|
||||||
|
AC_SUBST(MAGIC_LIB)
|
||||||
|
dnl
|
||||||
dnl See if optreset exists
|
dnl See if optreset exists
|
||||||
dnl
|
dnl
|
||||||
AC_MSG_CHECKING(for optreset)
|
AC_MSG_CHECKING(for optreset)
|
||||||
|
|
|
@ -37,13 +37,13 @@ SRCS= debug_cmds.c $(srcdir)/debugfs.c $(srcdir)/util.c $(srcdir)/ls.c \
|
||||||
$(srcdir)/../misc/plausible.c
|
$(srcdir)/../misc/plausible.c
|
||||||
|
|
||||||
LIBS= $(LIBQUOTA) $(LIBEXT2FS) $(LIBE2P) $(LIBSS) $(LIBCOM_ERR) $(LIBBLKID) \
|
LIBS= $(LIBQUOTA) $(LIBEXT2FS) $(LIBE2P) $(LIBSS) $(LIBCOM_ERR) $(LIBBLKID) \
|
||||||
$(LIBUUID) $(SYSLIBS)
|
$(LIBUUID) $(LIBMAGIC) $(SYSLIBS)
|
||||||
DEPLIBS= $(DEPLIBQUOTA) $(LIBEXT2FS) $(LIBE2P) $(DEPLIBSS) $(DEPLIBCOM_ERR) \
|
DEPLIBS= $(DEPLIBQUOTA) $(LIBEXT2FS) $(LIBE2P) $(DEPLIBSS) $(DEPLIBCOM_ERR) \
|
||||||
$(DEPLIBBLKID) $(DEPLIBUUID)
|
$(DEPLIBBLKID) $(DEPLIBUUID)
|
||||||
|
|
||||||
STATIC_LIBS= $(STATIC_LIBQUOTA) $(STATIC_LIBEXT2FS) $(STATIC_LIBSS) \
|
STATIC_LIBS= $(STATIC_LIBQUOTA) $(STATIC_LIBEXT2FS) $(STATIC_LIBSS) \
|
||||||
$(STATIC_LIBCOM_ERR) $(STATIC_LIBBLKID) $(STATIC_LIBUUID) \
|
$(STATIC_LIBCOM_ERR) $(STATIC_LIBBLKID) $(STATIC_LIBUUID) \
|
||||||
$(STATIC_LIBE2P) $(SYSLIBS)
|
$(STATIC_LIBE2P) $(LIBMAGIC) $(SYSLIBS)
|
||||||
STATIC_DEPLIBS= $(STATIC_LIBEXT2FS) $(DEPSTATIC_LIBSS) \
|
STATIC_DEPLIBS= $(STATIC_LIBEXT2FS) $(DEPSTATIC_LIBSS) \
|
||||||
$(DEPSTATIC_LIBCOM_ERR) $(DEPSTATIC_LIBUUID) \
|
$(DEPSTATIC_LIBCOM_ERR) $(DEPSTATIC_LIBUUID) \
|
||||||
$(DEPSTATIC_LIBE2P)
|
$(DEPSTATIC_LIBE2P)
|
||||||
|
|
|
@ -16,20 +16,20 @@ MANPAGES= e2fsck.8
|
||||||
FMANPAGES= e2fsck.conf.5
|
FMANPAGES= e2fsck.conf.5
|
||||||
|
|
||||||
LIBS= $(LIBQUOTA) $(LIBEXT2FS) $(LIBCOM_ERR) $(LIBBLKID) $(LIBUUID) \
|
LIBS= $(LIBQUOTA) $(LIBEXT2FS) $(LIBCOM_ERR) $(LIBBLKID) $(LIBUUID) \
|
||||||
$(LIBINTL) $(LIBE2P) $(SYSLIBS)
|
$(LIBINTL) $(LIBE2P) $(LIBMAGIC) $(SYSLIBS)
|
||||||
DEPLIBS= $(DEPLIBQUOTA) $(LIBEXT2FS) $(DEPLIBCOM_ERR) $(DEPLIBBLKID) \
|
DEPLIBS= $(DEPLIBQUOTA) $(LIBEXT2FS) $(DEPLIBCOM_ERR) $(DEPLIBBLKID) \
|
||||||
$(DEPLIBUUID) $(DEPLIBE2P)
|
$(DEPLIBUUID) $(DEPLIBE2P)
|
||||||
|
|
||||||
STATIC_LIBS= $(STATIC_LIBQUOTA) $(STATIC_LIBEXT2FS) $(STATIC_LIBCOM_ERR) \
|
STATIC_LIBS= $(STATIC_LIBQUOTA) $(STATIC_LIBEXT2FS) $(STATIC_LIBCOM_ERR) \
|
||||||
$(STATIC_LIBBLKID) $(STATIC_LIBUUID) $(LIBINTL) $(STATIC_LIBE2P) \
|
$(STATIC_LIBBLKID) $(STATIC_LIBUUID) $(LIBINTL) $(STATIC_LIBE2P) \
|
||||||
$(SYSLIBS)
|
$(LIBMAGIC) $(SYSLIBS)
|
||||||
STATIC_DEPLIBS= $(DEPSTATIC_LIBQUOTA) $(STATIC_LIBEXT2FS) \
|
STATIC_DEPLIBS= $(DEPSTATIC_LIBQUOTA) $(STATIC_LIBEXT2FS) \
|
||||||
$(DEPSTATIC_LIBCOM_ERR) $(DEPSTATIC_LIBBLKID) \
|
$(DEPSTATIC_LIBCOM_ERR) $(DEPSTATIC_LIBBLKID) \
|
||||||
$(DEPSTATIC_LIBUUID) $(DEPSTATIC_LIBE2P)
|
$(DEPSTATIC_LIBUUID) $(DEPSTATIC_LIBE2P)
|
||||||
|
|
||||||
PROFILED_LIBS= $(PROFILED_LIBQUOTA) $(PROFILED_LIBEXT2FS) \
|
PROFILED_LIBS= $(PROFILED_LIBQUOTA) $(PROFILED_LIBEXT2FS) \
|
||||||
$(PROFILED_LIBCOM_ERR) $(PROFILED_LIBBLKID) $(PROFILED_LIBUUID) \
|
$(PROFILED_LIBCOM_ERR) $(PROFILED_LIBBLKID) $(PROFILED_LIBUUID) \
|
||||||
$(PROFILED_LIBE2P) $(LIBINTL) $(SYSLIBS)
|
$(PROFILED_LIBE2P) $(LIBINTL) $(LIBMAGIC) $(SYSLIBS)
|
||||||
PROFILED_DEPLIBS= $(DEPPROFILED_LIBQUOTA) $(PROFILED_LIBEXT2FS) \
|
PROFILED_DEPLIBS= $(DEPPROFILED_LIBQUOTA) $(PROFILED_LIBEXT2FS) \
|
||||||
$(DEPPROFILED_LIBCOM_ERR) $(DEPPROFILED_LIBBLKID) \
|
$(DEPPROFILED_LIBCOM_ERR) $(DEPPROFILED_LIBBLKID) \
|
||||||
$(DEPPROFILED_LIBUUID) $(DEPPROFILED_LIBE2P)
|
$(DEPPROFILED_LIBUUID) $(DEPPROFILED_LIBE2P)
|
||||||
|
|
|
@ -265,6 +265,9 @@
|
||||||
/* Define to 1 if lseek64 declared in unistd.h */
|
/* Define to 1 if lseek64 declared in unistd.h */
|
||||||
#undef HAVE_LSEEK64_PROTOTYPE
|
#undef HAVE_LSEEK64_PROTOTYPE
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <magic.h> header file. */
|
||||||
|
#undef HAVE_MAGIC_H
|
||||||
|
|
||||||
/* Define to 1 if you have the `mallinfo' function. */
|
/* Define to 1 if you have the `mallinfo' function. */
|
||||||
#undef HAVE_MALLINFO
|
#undef HAVE_MALLINFO
|
||||||
|
|
||||||
|
|
|
@ -166,14 +166,14 @@ tune2fs: $(TUNE2FS_OBJS) $(DEPLIBS) $(DEPLIBS_E2P) $(DEPLIBBLKID) \
|
||||||
$(E) " LD $@"
|
$(E) " LD $@"
|
||||||
$(Q) $(CC) $(ALL_LDFLAGS) -o tune2fs $(TUNE2FS_OBJS) $(LIBS) \
|
$(Q) $(CC) $(ALL_LDFLAGS) -o tune2fs $(TUNE2FS_OBJS) $(LIBS) \
|
||||||
$(LIBBLKID) $(LIBUUID) $(LIBQUOTA) $(LIBEXT2FS) $(LIBS_E2P) \
|
$(LIBBLKID) $(LIBUUID) $(LIBQUOTA) $(LIBEXT2FS) $(LIBS_E2P) \
|
||||||
$(LIBINTL) $(SYSLIBS) $(LIBBLKID)
|
$(LIBINTL) $(SYSLIBS) $(LIBBLKID) $(LIBMAGIC)
|
||||||
|
|
||||||
tune2fs.static: $(TUNE2FS_OBJS) $(STATIC_DEPLIBS) $(STATIC_LIBE2P) $(DEPSTATIC_LIBBLKID)
|
tune2fs.static: $(TUNE2FS_OBJS) $(STATIC_DEPLIBS) $(STATIC_LIBE2P) $(DEPSTATIC_LIBBLKID)
|
||||||
$(E) " LD $@"
|
$(E) " LD $@"
|
||||||
$(Q) $(CC) $(LDFLAGS_STATIC) -o tune2fs.static $(TUNE2FS_OBJS) \
|
$(Q) $(CC) $(LDFLAGS_STATIC) -o tune2fs.static $(TUNE2FS_OBJS) \
|
||||||
$(STATIC_LIBS) $(STATIC_LIBBLKID) $(STATIC_LIBUUID) \
|
$(STATIC_LIBS) $(STATIC_LIBBLKID) $(STATIC_LIBUUID) \
|
||||||
$(STATIC_LIBQUOTA) $(STATIC_LIBE2P) $(LIBINTL) $(SYSLIBS) \
|
$(STATIC_LIBQUOTA) $(STATIC_LIBE2P) $(LIBINTL) $(SYSLIBS) \
|
||||||
$(STATIC_LIBBLKID)
|
$(STATIC_LIBBLKID) $(LIBMAGIC)
|
||||||
|
|
||||||
tune2fs.profiled: $(TUNE2FS_OBJS) $(PROFILED_DEPLIBS) \
|
tune2fs.profiled: $(TUNE2FS_OBJS) $(PROFILED_DEPLIBS) \
|
||||||
$(PROFILED_E2P) $(DEPPROFILED_LIBBLKID) $(DEPPROFILED_LIBUUID) \
|
$(PROFILED_E2P) $(DEPPROFILED_LIBBLKID) $(DEPPROFILED_LIBUUID) \
|
||||||
|
@ -182,7 +182,8 @@ tune2fs.profiled: $(TUNE2FS_OBJS) $(PROFILED_DEPLIBS) \
|
||||||
$(Q) $(CC) $(ALL_LDFLAGS) -g -pg -o tune2fs.profiled \
|
$(Q) $(CC) $(ALL_LDFLAGS) -g -pg -o tune2fs.profiled \
|
||||||
$(PROFILED_TUNE2FS_OBJS) $(PROFILED_LIBBLKID) \
|
$(PROFILED_TUNE2FS_OBJS) $(PROFILED_LIBBLKID) \
|
||||||
$(PROFILED_LIBUUID) $(PROFILED_LIBQUOTA) $(PROFILED_LIBE2P) \
|
$(PROFILED_LIBUUID) $(PROFILED_LIBQUOTA) $(PROFILED_LIBE2P) \
|
||||||
$(LIBINTL) $(PROFILED_LIBS) $(SYSLIBS) $(PROFILED_LIBBLKID)
|
$(LIBINTL) $(PROFILED_LIBS) $(SYSLIBS) $(PROFILED_LIBBLKID) \
|
||||||
|
$(LIBMAGIC)
|
||||||
|
|
||||||
blkid: $(BLKID_OBJS) $(DEPLIBBLKID) $(LIBEXT2FS)
|
blkid: $(BLKID_OBJS) $(DEPLIBBLKID) $(LIBEXT2FS)
|
||||||
$(E) " LD $@"
|
$(E) " LD $@"
|
||||||
|
@ -203,13 +204,13 @@ blkid.profiled: $(BLKID_OBJS) $(DEPPROFILED_LIBBLKID) \
|
||||||
e2image: $(E2IMAGE_OBJS) $(DEPLIBS) $(DEPLIBBLKID)
|
e2image: $(E2IMAGE_OBJS) $(DEPLIBS) $(DEPLIBBLKID)
|
||||||
$(E) " LD $@"
|
$(E) " LD $@"
|
||||||
$(Q) $(CC) $(ALL_LDFLAGS) -o e2image $(E2IMAGE_OBJS) $(LIBS) \
|
$(Q) $(CC) $(ALL_LDFLAGS) -o e2image $(E2IMAGE_OBJS) $(LIBS) \
|
||||||
$(LIBINTL) $(SYSLIBS) $(LIBBLKID)
|
$(LIBINTL) $(SYSLIBS) $(LIBBLKID) $(LIBMAGIC)
|
||||||
|
|
||||||
e2image.profiled: $(E2IMAGE_OBJS) $(PROFILED_DEPLIBS) $(DEPLIBBLKID)
|
e2image.profiled: $(E2IMAGE_OBJS) $(PROFILED_DEPLIBS) $(DEPLIBBLKID)
|
||||||
$(E) " LD $@"
|
$(E) " LD $@"
|
||||||
$(Q) $(CC) $(ALL_LDFLAGS) -g -pg -o e2image.profiled \
|
$(Q) $(CC) $(ALL_LDFLAGS) -g -pg -o e2image.profiled \
|
||||||
$(PROFILED_E2IMAGE_OBJS) $(PROFILED_LIBS) $(LIBINTL) $(SYSLIBS) \
|
$(PROFILED_E2IMAGE_OBJS) $(PROFILED_LIBS) $(LIBINTL) $(SYSLIBS) \
|
||||||
$(LIBBLKID)
|
$(LIBBLKID) $(LIBMAGIC)
|
||||||
|
|
||||||
e2undo: $(E2UNDO_OBJS) $(DEPLIBS)
|
e2undo: $(E2UNDO_OBJS) $(DEPLIBS)
|
||||||
$(E) " LD $@"
|
$(E) " LD $@"
|
||||||
|
@ -250,14 +251,15 @@ mke2fs: $(MKE2FS_OBJS) $(DEPLIBS) $(LIBE2P) $(DEPLIBBLKID) $(DEPLIBUUID) \
|
||||||
$(E) " LD $@"
|
$(E) " LD $@"
|
||||||
$(Q) $(CC) $(ALL_LDFLAGS) -o mke2fs $(MKE2FS_OBJS) $(LIBS) $(LIBBLKID) \
|
$(Q) $(CC) $(ALL_LDFLAGS) -o mke2fs $(MKE2FS_OBJS) $(LIBS) $(LIBBLKID) \
|
||||||
$(LIBUUID) $(LIBQUOTA) $(LIBEXT2FS) $(LIBE2P) $(LIBINTL) \
|
$(LIBUUID) $(LIBQUOTA) $(LIBEXT2FS) $(LIBE2P) $(LIBINTL) \
|
||||||
$(SYSLIBS)
|
$(SYSLIBS) $(LIBMAGIC)
|
||||||
|
|
||||||
mke2fs.static: $(MKE2FS_OBJS) $(STATIC_DEPLIBS) $(STATIC_LIBE2P) $(DEPSTATIC_LIBUUID) \
|
mke2fs.static: $(MKE2FS_OBJS) $(STATIC_DEPLIBS) $(STATIC_LIBE2P) $(DEPSTATIC_LIBUUID) \
|
||||||
$(DEPSTATIC_LIBQUOTA) $(DEPSTATIC_LIBBLKID)
|
$(DEPSTATIC_LIBQUOTA) $(DEPSTATIC_LIBBLKID)
|
||||||
$(E) " LD $@"
|
$(E) " LD $@"
|
||||||
$(Q) $(CC) $(ALL_LDFLAGS) -static -o mke2fs.static $(MKE2FS_OBJS) \
|
$(Q) $(CC) $(ALL_LDFLAGS) -static -o mke2fs.static $(MKE2FS_OBJS) \
|
||||||
$(STATIC_LIBQUOTA) $(STATIC_LIBS) $(STATIC_LIBE2P) \
|
$(STATIC_LIBQUOTA) $(STATIC_LIBS) $(STATIC_LIBE2P) \
|
||||||
$(STATIC_LIBBLKID) $(STATIC_LIBUUID) $(LIBINTL) $(SYSLIBS)
|
$(STATIC_LIBBLKID) $(STATIC_LIBUUID) $(LIBINTL) $(SYSLIBS) \
|
||||||
|
$(LIBMAGIC)
|
||||||
|
|
||||||
mke2fs.profiled: $(MKE2FS_OBJS) $(PROFILED_DEPLIBS) \
|
mke2fs.profiled: $(MKE2FS_OBJS) $(PROFILED_DEPLIBS) \
|
||||||
$(PROFILED_LIBE2P) $(PROFILED_DEPLIBBLKID) $(PROFILED_DEPLIBUUID) \
|
$(PROFILED_LIBE2P) $(PROFILED_DEPLIBBLKID) $(PROFILED_DEPLIBUUID) \
|
||||||
|
@ -266,7 +268,7 @@ mke2fs.profiled: $(MKE2FS_OBJS) $(PROFILED_DEPLIBS) \
|
||||||
$(Q) $(CC) $(ALL_LDFLAGS) -g -pg -o mke2fs.profiled \
|
$(Q) $(CC) $(ALL_LDFLAGS) -g -pg -o mke2fs.profiled \
|
||||||
$(PROFILED_MKE2FS_OBJS) $(PROFILED_LIBBLKID) \
|
$(PROFILED_MKE2FS_OBJS) $(PROFILED_LIBBLKID) \
|
||||||
$(PROFILED_LIBUUID) $(PROFILED_LIBQUOTA) $(PROFILED_LIBE2P) \
|
$(PROFILED_LIBUUID) $(PROFILED_LIBQUOTA) $(PROFILED_LIBE2P) \
|
||||||
$(LIBINTL) $(PROFILED_LIBS) $(SYSLIBS)
|
$(LIBINTL) $(PROFILED_LIBS) $(SYSLIBS) $(LIBMAGIC)
|
||||||
|
|
||||||
chattr: $(CHATTR_OBJS) $(DEPLIBS_E2P)
|
chattr: $(CHATTR_OBJS) $(DEPLIBS_E2P)
|
||||||
$(E) " LD $@"
|
$(E) " LD $@"
|
||||||
|
@ -302,7 +304,8 @@ uuidd.profiled: $(UUIDD_OBJS) $(PROFILED_DEPLIBUUID)
|
||||||
dumpe2fs: $(DUMPE2FS_OBJS) $(DEPLIBS) $(DEPLIBS_E2P) $(DEPLIBUUID) $(DEPLIBBLKID)
|
dumpe2fs: $(DUMPE2FS_OBJS) $(DEPLIBS) $(DEPLIBS_E2P) $(DEPLIBUUID) $(DEPLIBBLKID)
|
||||||
$(E) " LD $@"
|
$(E) " LD $@"
|
||||||
$(Q) $(CC) $(ALL_LDFLAGS) -o dumpe2fs $(DUMPE2FS_OBJS) $(LIBS) \
|
$(Q) $(CC) $(ALL_LDFLAGS) -o dumpe2fs $(DUMPE2FS_OBJS) $(LIBS) \
|
||||||
$(LIBS_E2P) $(LIBUUID) $(LIBINTL) $(SYSLIBS) $(LIBBLKID)
|
$(LIBS_E2P) $(LIBUUID) $(LIBINTL) $(SYSLIBS) $(LIBBLKID) \
|
||||||
|
$(LIBMAGIC)
|
||||||
|
|
||||||
dumpe2fs.profiled: $(DUMPE2FS_OBJS) $(PROFILED_DEPLIBS) \
|
dumpe2fs.profiled: $(DUMPE2FS_OBJS) $(PROFILED_DEPLIBS) \
|
||||||
$(PROFILED_LIBE2P) $(PROFILED_DEPLIBUUID) $(PROFILED_DEPLIBBLKID)
|
$(PROFILED_LIBE2P) $(PROFILED_DEPLIBUUID) $(PROFILED_DEPLIBBLKID)
|
||||||
|
@ -310,7 +313,7 @@ dumpe2fs.profiled: $(DUMPE2FS_OBJS) $(PROFILED_DEPLIBS) \
|
||||||
$(Q) $(CC) $(ALL_LDFLAGS) -g -pg -o dumpe2fs.profiled \
|
$(Q) $(CC) $(ALL_LDFLAGS) -g -pg -o dumpe2fs.profiled \
|
||||||
$(PROFILED_DUMPE2FS_OBJS) $(PROFILED_LIBS) \
|
$(PROFILED_DUMPE2FS_OBJS) $(PROFILED_LIBS) \
|
||||||
$(PROFILED_LIBE2P) $(PROFILED_LIBUUID) $(LIBINTL) $(SYSLIBS) \
|
$(PROFILED_LIBE2P) $(PROFILED_LIBUUID) $(LIBINTL) $(SYSLIBS) \
|
||||||
$(PROFILED_LIBBLKID)
|
$(PROFILED_LIBBLKID) $(LIBMAGIC)
|
||||||
|
|
||||||
fsck: $(FSCK_OBJS) $(DEPLIBBLKID)
|
fsck: $(FSCK_OBJS) $(DEPLIBBLKID)
|
||||||
$(E) " LD $@"
|
$(E) " LD $@"
|
||||||
|
|
|
@ -28,6 +28,9 @@
|
||||||
#ifdef HAVE_UNISTD_H
|
#ifdef HAVE_UNISTD_H
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_MAGIC_H
|
||||||
|
#include <magic.h>
|
||||||
|
#endif
|
||||||
#include "plausible.h"
|
#include "plausible.h"
|
||||||
#include "ext2fs/ext2fs.h"
|
#include "ext2fs/ext2fs.h"
|
||||||
#include "nls-enable.h"
|
#include "nls-enable.h"
|
||||||
|
@ -194,6 +197,25 @@ int check_plausibility(const char *device, int flags, int *ret_is_dev)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_MAGIC_H
|
||||||
|
if (flags & CHECK_FS_EXIST) {
|
||||||
|
const char *msg;
|
||||||
|
magic_t mag;
|
||||||
|
|
||||||
|
mag = magic_open(MAGIC_RAW | MAGIC_SYMLINK | MAGIC_DEVICES |
|
||||||
|
MAGIC_ERROR | MAGIC_NO_CHECK_ELF |
|
||||||
|
MAGIC_NO_CHECK_COMPRESS);
|
||||||
|
magic_load(mag, NULL);
|
||||||
|
|
||||||
|
msg = magic_file(mag, device);
|
||||||
|
if (msg && strcmp(msg, "data") && strcmp(msg, "empty"))
|
||||||
|
printf(_("%s contains a `%s'\n"), device, msg);
|
||||||
|
|
||||||
|
magic_close(mag);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
ret = check_partition_table(device);
|
ret = check_partition_table(device);
|
||||||
if (ret >= 0)
|
if (ret >= 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
*** e2fsck
|
||||||
|
ext2fs_open2: Bad magic number in super-block
|
||||||
|
../e2fsck/e2fsck: Superblock invalid, trying backup blocks...
|
||||||
|
../e2fsck/e2fsck: Bad magic number in super-block while trying to open test.img
|
||||||
|
|
||||||
|
The superblock could not be read or does not describe a valid ext2/ext3/ext4
|
||||||
|
filesystem. If the device is valid and it really contains an ext2/ext3/ext4
|
||||||
|
filesystem (and not swap or ufs or something else), then the superblock
|
||||||
|
is corrupt, and you might try running e2fsck with an alternate superblock:
|
||||||
|
e2fsck -b 8193 <device>
|
||||||
|
or
|
||||||
|
e2fsck -b 32768 <device>
|
||||||
|
|
||||||
|
test.img contains a `PNG image data, 148 x 31, 8-bit/color RGBA, non-interlaced'
|
||||||
|
*** debugfs
|
||||||
|
test.img: Bad magic number in super-block while opening filesystem
|
||||||
|
test.img contains a `PNG image data, 148 x 31, 8-bit/color RGBA, non-interlaced'
|
||||||
|
*** tune2fs
|
||||||
|
../misc/tune2fs: Bad magic number in super-block while trying to open test.img
|
||||||
|
test.img contains a `PNG image data, 148 x 31, 8-bit/color RGBA, non-interlaced'
|
||||||
|
*** mke2fs
|
||||||
|
Creating filesystem with 16384 1k blocks and 4096 inodes
|
||||||
|
Superblock backups stored on blocks:
|
||||||
|
8193
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
*** e2fsck
|
||||||
|
ext2fs_open2: Bad magic number in super-block
|
||||||
|
../e2fsck/e2fsck: Superblock invalid, trying backup blocks...
|
||||||
|
../e2fsck/e2fsck: Bad magic number in super-block while trying to open test.img
|
||||||
|
|
||||||
|
The superblock could not be read or does not describe a valid ext2/ext3/ext4
|
||||||
|
filesystem. If the device is valid and it really contains an ext2/ext3/ext4
|
||||||
|
filesystem (and not swap or ufs or something else), then the superblock
|
||||||
|
is corrupt, and you might try running e2fsck with an alternate superblock:
|
||||||
|
e2fsck -b 8193 <device>
|
||||||
|
or
|
||||||
|
e2fsck -b 32768 <device>
|
||||||
|
|
||||||
|
test.img contains a `PNG image data, 148 x 31, 8-bit/color RGBA, non-interlaced'
|
||||||
|
*** debugfs
|
||||||
|
*** tune2fs
|
||||||
|
../misc/tune2fs: Bad magic number in super-block while trying to open test.img
|
||||||
|
test.img contains a `PNG image data, 148 x 31, 8-bit/color RGBA, non-interlaced'
|
||||||
|
*** mke2fs
|
||||||
|
Creating filesystem with 16384 1k blocks and 4096 inodes
|
||||||
|
Superblock backups stored on blocks:
|
||||||
|
8193
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1 @@
|
||||||
|
detect non-fs file data
|
|
@ -0,0 +1,43 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ "$(grep -c 'define HAVE_MAGIC_H' $test_dir/../../lib/config.h)" -gt 0 ]; then
|
||||||
|
|
||||||
|
FSCK_OPT=-fn
|
||||||
|
IMAGE=$test_dir/image.bz2
|
||||||
|
|
||||||
|
bzip2 -d < $IMAGE > $TMPFILE
|
||||||
|
dd if=/dev/zero of=$TMPFILE conv=notrunc oflag=append bs=1024k count=16 > /dev/null 2>&1
|
||||||
|
|
||||||
|
# Run fsck to fix things?
|
||||||
|
if [ -x $DEBUGFS_EXE ]; then
|
||||||
|
EXP=$test_dir/expect
|
||||||
|
else
|
||||||
|
EXP=$test_dir/expect.nodebugfs
|
||||||
|
fi
|
||||||
|
OUT=$test_name.log
|
||||||
|
rm -rf $test_name.failed $test_name.ok
|
||||||
|
|
||||||
|
echo "*** e2fsck" > $OUT
|
||||||
|
$FSCK $FSCK_OPT $TMPFILE >> $OUT 2>&1
|
||||||
|
echo "*** debugfs" >> $OUT
|
||||||
|
test -x $DEBUGFS_EXE && $DEBUGFS_EXE -R 'quit' $TMPFILE >> $OUT 2>&1
|
||||||
|
echo "*** tune2fs" >> $OUT
|
||||||
|
$TUNE2FS -i 0 $TMPFILE >> $OUT 2>&1
|
||||||
|
echo "*** mke2fs" >> $OUT
|
||||||
|
$MKE2FS -n $TMPFILE >> $OUT 2>&1
|
||||||
|
|
||||||
|
sed -f $cmd_dir/filter.sed -e "s|$TMPFILE|test.img|g" -i $OUT
|
||||||
|
|
||||||
|
# Figure out what happened
|
||||||
|
if cmp -s $EXP $OUT; then
|
||||||
|
echo "$test_name: $test_description: ok"
|
||||||
|
touch $test_name.ok
|
||||||
|
else
|
||||||
|
echo "$test_name: $test_description: failed"
|
||||||
|
diff -u $EXP $OUT >> $test_name.failed
|
||||||
|
fi
|
||||||
|
unset EXP OUT FSCK_OPT IMAGE
|
||||||
|
|
||||||
|
else #if HAVE_MAGIC_H
|
||||||
|
echo "$test_name: $test_description: skipped"
|
||||||
|
fi
|
Loading…
Reference in New Issue