Package: mkvtoolnix Version: 1.6.5-4 Severity: normal Tags: patch Hi,
This patch gets mkvtoolnix to use libmagic instead of (unreliable) filename extension checks. -- System Information: Debian Release: testing/unstable APT prefers testing APT policy: (500, 'testing') Architecture: amd64 (x86_64) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.15-1-amd64-k8 Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ANSI_X3.4-1968) (ignored: LC_ALL set to C) Versions of packages mkvtoolnix depends on: ii libbz2-1.0 1.0.3-2 high-quality block-sorting file co ii libc6 2.3.6-3 GNU C Library: Shared libraries an ii libexpat1 1.95.8-3 XML parsing C library - runtime li ii libflac7 1.1.2-3.1 Free Lossless Audio Codec - runtim ii libgcc1 1:4.0.3-1 GCC support library ii liblzo1 1.08-3 data compression library (old vers ii libmagic1 4.15-2 File type determination library us ii libogg0 1.1.3-2 Ogg Bitstream Library ii libstdc++6 4.0.3-1 The GNU Standard C++ Library v3 ii libvorbis0a 1.1.2-1 The Vorbis General Audio Compressi ii zlib1g 1:1.2.3-11 compression library - runtime Versions of packages mkvtoolnix recommends: pn mkvtoolnix-gui <none> (no description available) -- no debconf information
diff -x config.h.in -x configure -ur mkvtoolnix-1.6.5.old/Makefile.in mkvtoolnix-1.6.5/Makefile.in --- mkvtoolnix-1.6.5.old/Makefile.in 2005-09-08 19:32:08.000000000 +0200 +++ mkvtoolnix-1.6.5/Makefile.in 2006-03-29 11:03:16.000000000 +0200 @@ -67,6 +67,7 @@ FLAC_LIBS = @FLAC_LIBS@ ICONV_LIBS = @ICONV_LIBS@ LZO_LIBS = @LZO_LIBS@ +MAGIC_LIBS = @MAGIC_LIBS@ MATROSKA_CFLAGS = @MATROSKA_CFLAGS@ MATROSKA_LIBS = @MATROSKA_LIBS@ MINGW_GUIAPP = @MINGW_GUIAPP@ @@ -383,7 +384,7 @@ $(DEP_COMP) $(DEP_INPUT) $(DEP_OUTPUT) $(DEP_AVI) $(DEP_RMFF) \ $(DEP_MPEGPARSER) mkvmerge_LDADD = -lmtxinput -lmtxoutput \ - -lmtxcommon -lmatroska -lebml \ + -lmtxcommon $(MAGIC_LIBS) -lmatroska -lebml \ -lavi -lrmff -lmpegparser \ $(FLAC_LIBS) -lvorbis -logg -lz $(COMPRESSION_LIBRARIES) \ -lexpat $(ICONV_LIBS) $(LIBINTL_LIBS) $(LIBRPCRT) @@ -395,7 +396,7 @@ mkvinfo_SOURCES = $(wildcard src/info/*.cpp) mkvinfo_OBJECTS := $(patsubst %.cpp,%.o,$(mkvinfo_SOURCES)) mkvinfo_DEPENDENCIES += $(DEP_COMMON) -mkvinfo_LDADD = -lmtxcommon -lmatroska -lebml \ +mkvinfo_LDADD = -lmtxcommon $(MAGIC_LIBS) -lmatroska -lebml \ $(WXWINDOWS_LIBS) \ -lexpat $(ICONV_LIBS) $(LIBINTL_LIBS) $(LIBRPCRT) @@ -406,7 +407,7 @@ mkvextract_SOURCES = $(wildcard src/extract/*.cpp) mkvextract_OBJECTS := $(patsubst %.cpp,%.o,$(mkvextract_SOURCES)) mkvextract_DEPENDENCIES += $(DEP_COMMON) $(DEP_AVILIB) $(DEP_RMFF) -mkvextract_LDADD = -lmtxcommon -lvorbis -logg -lavi -lmatroska -lebml -lrmff \ +mkvextract_LDADD = -lmtxcommon $(MAGIC_LIBS) -lvorbis -logg -lavi -lmatroska -lebml -lrmff \ $(ICONV_LIBS) $(LIBINTL_LIBS) -lexpat \ -lz $(COMPRESSION_LIBRARIES) $(LIBRPCRT) @@ -417,7 +418,7 @@ base64tool_SOURCES = src/base64tool.cpp base64tool_OBJECTS := $(patsubst %.cpp,%.o,$(base64tool_SOURCES)) base64tool_DEPENDENCIES += $(DEP_COMMON) -base64tool_LDADD = -lmtxcommon -lexpat $(ICONV_LIBS) $(LIBINTL_LIBS) \ +base64tool_LDADD = -lmtxcommon $(MAGIC_LIBS) -lexpat $(ICONV_LIBS) $(LIBINTL_LIBS) \ $(LIBRPCRT) # @@ -428,7 +429,7 @@ mmg_OBJECTS := $(patsubst %.cpp,%.o,$(mmg_SOURCES)) \ $(patsubst %.rc,%.o,$(MMG_RESOURCES)) mmg_DEPENDENCIES += $(DEP_COMMON) -mmg_LDADD = -lmtxcommon -lmatroska -lebml -lexpat $(ICONV_LIBS) \ +mmg_LDADD = -lmtxcommon $(MAGIC_LIBS) -lmatroska -lebml -lexpat $(ICONV_LIBS) \ $(WXWINDOWS_LIBS) $(LIBINTL_LIBS) $(MINGW_GUIAPP) \ $(LIBRPCRT) diff -x config.h.in -x configure -ur mkvtoolnix-1.6.5.old/configure.in mkvtoolnix-1.6.5/configure.in --- mkvtoolnix-1.6.5.old/configure.in 2005-12-07 18:22:29.000000000 +0100 +++ mkvtoolnix-1.6.5/configure.in 2006-03-29 12:20:32.000000000 +0200 @@ -983,6 +983,13 @@ AC_SUBST(TRANSLATIONS_POS) AC_SUBST(TRANSLATIONS) +dnl +dnl Check for libmagic +dnl +AC_CHECK_LIB(magic, magic_open, [ MAGIC_LIBS="-lmagic" ]) +AC_CHECK_HEADERS([magic.h]) +AC_SUBST(MAGIC_LIBS) + CFLAGS="$USER_CPPFLAGS @EXTRA_CFLAGS@ @OPTIMIZATION_CFLAGS@ $USER_CFLAGS -Wall -Wno-sign-compare -Wno-comment -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 @EXTRA_CFLAGS@ @DEBUG_CFLAGS@ @PROFILING_CFLAGS@ @MATROSKA_CFLAGS@ @EBML_CFLAGS@" CXXFLAGS="$USER_CPPFLAGS @EXTRA_CFLAGS@ @OPTIMIZATION_CFLAGS@ $USER_CXXFLAGS -Wall -Wno-sign-compare -Wno-comment -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 @EXTRA_CFLAGS@ @DEBUG_CFLAGS@ @PROFILING_CFLAGS@ @MATROSKA_CFLAGS@ @EBML_CFLAGS@ @WXWINDOWS_CFLAGS@" LDFLAGS="$USER_LDFLAGS @EXTRA_LDFLAGS@ @PROFILING_LIBS@" diff -x config.h.in -x configure -ur mkvtoolnix-1.6.5.old/debian/control mkvtoolnix-1.6.5/debian/control --- mkvtoolnix-1.6.5.old/debian/control 2006-03-29 09:52:00.000000000 +0200 +++ mkvtoolnix-1.6.5/debian/control 2006-03-29 09:58:19.000000000 +0200 @@ -2,7 +2,7 @@ Section: graphics Priority: optional Maintainer: Clément Stenac <[EMAIL PROTECTED]> -Build-Depends: debhelper (>= 4.0.0) , libogg-dev, libvorbis-dev, zlib1g-dev, libwxgtk2.6-dev|libwxgtk2.4-dev, libflac-dev, libexpat1-dev, libbz2-dev, liblzo-dev, libebml-dev (>= 0.7.5), libmatroska-dev (>= 0.7.7), dpatch +Build-Depends: debhelper (>= 4.0.0) , libogg-dev, libvorbis-dev, zlib1g-dev, libwxgtk2.6-dev|libwxgtk2.4-dev, libflac-dev, libexpat1-dev, libbz2-dev, liblzo-dev, libebml-dev (>= 0.7.5), libmatroska-dev (>= 0.7.7), dpatch, libmagic-dev Standards-Version: 3.6.2 Package: mkvtoolnix diff -x config.h.in -x configure -ur mkvtoolnix-1.6.5.old/src/common/extern_data.cpp mkvtoolnix-1.6.5/src/common/extern_data.cpp --- mkvtoolnix-1.6.5.old/src/common/extern_data.cpp 2005-12-05 17:31:01.000000000 +0100 +++ mkvtoolnix-1.6.5/src/common/extern_data.cpp 2006-03-29 12:22:33.000000000 +0200 @@ -17,6 +17,10 @@ #include "common.h" #include "extern_data.h" +#if HAVE_MAGIC_H +#include <magic.h> +#endif + #ifndef NULL # define NULL 0 #endif @@ -2602,9 +2606,31 @@ string guess_mime_type(string ext) { +#if HAVE_MAGIC_H + const char *ret; + magic_t m; + + m = magic_open (MAGIC_MIME); + magic_load (m, NULL); + ret = magic_file (m, ext.c_str()); + magic_close (m); + + if (ret == NULL) + return ""; + else + return ret; +#else vector<string> extensions; int i, j; + /* chop off basename */ + i = ext.rfind('.'); + if (i < 0) + mxerror(_("No MIME type has been set for the attachment '%s', and " + "the file name contains no extension. Therefore the MIME " + "type could not be guessed automatically.\n"), + ext.c_str()); + ext.erase(0, i + 1); ext = downcase(ext); for (i = 0; NULL != mime_types[i].name; i++) { @@ -2618,6 +2644,7 @@ } return ""; +#endif } bool diff -x config.h.in -x configure -ur mkvtoolnix-1.6.5.old/src/input/r_ssa.cpp mkvtoolnix-1.6.5/src/input/r_ssa.cpp --- mkvtoolnix-1.6.5.old/src/input/r_ssa.cpp 2005-10-12 18:41:09.000000000 +0200 +++ mkvtoolnix-1.6.5/src/input/r_ssa.cpp 2006-03-29 12:01:15.000000000 +0200 @@ -348,11 +348,7 @@ attachment.data = counted_ptr<buffer_t>(buffer); - pos = name.rfind('.'); - if (0 < pos) { - name.erase(0, pos + 1); - attachment.mime_type = guess_mime_type(name); - } + attachment.mime_type = guess_mime_type(name); if (attachment.mime_type == "") attachment.mime_type = "application/octet-stream"; diff -x config.h.in -x configure -ur mkvtoolnix-1.6.5.old/src/merge/mkvmerge.cpp mkvtoolnix-1.6.5/src/merge/mkvmerge.cpp --- mkvtoolnix-1.6.5.old/src/merge/mkvmerge.cpp 2005-12-06 17:17:01.000000000 +0100 +++ mkvtoolnix-1.6.5/src/merge/mkvmerge.cpp 2006-03-29 12:01:47.000000000 +0200 @@ -1237,15 +1237,6 @@ static string guess_mime_type_and_report(string file_name) { string mime_type; - int i; - - i = file_name.rfind('.'); - if (i < 0) - mxerror(_("No MIME type has been set for the attachment '%s', and " - "the file name contains no extension. Therefore the MIME " - "type could not be guessed automatically.\n"), - file_name.c_str()); - file_name.erase(0, i + 1); mime_type = guess_mime_type(file_name); if (mime_type != "") { @@ -1255,7 +1246,7 @@ } mxerror(_("No MIME type has been set for the attachment '%s', and " - "it could not be guessed based on its extension.\n"), + "it could not be guessed.\n"), file_name.c_str()); return ""; } diff -x config.h.in -x configure -ur mkvtoolnix-1.6.5.old/src/mmg/tab_attachments.cpp mkvtoolnix-1.6.5/src/mmg/tab_attachments.cpp --- mkvtoolnix-1.6.5.old/src/mmg/tab_attachments.cpp 2005-11-04 09:58:57.000000000 +0100 +++ mkvtoolnix-1.6.5/src/mmg/tab_attachments.cpp 2006-03-29 12:02:52.000000000 +0200 @@ -175,7 +175,7 @@ name += wxString(wxT(" (")) + file_name.BeforeLast(wxT(PSEP)) + wxT(")"); lb_attachments->Append(name); if (ext.Length() > 0) - attch.mime_type = wxU(guess_mime_type(wxMB(ext)).c_str()); + attch.mime_type = wxU(guess_mime_type(wxMB(file_name)).c_str()); attch.style = 0; attch.stored_name = derive_stored_name_from_file_name(attch.file_name);