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);