Package: mime-support
Version: 3.39-1
Followup-For: Bug #77985
Attached, a patch to run-mailcap to use current file (4.23) to find the
MIME type of a file as a first guess.
-- System Information:
Debian Release: 4.0
APT prefers stable
APT policy: (700, 'stable')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.18-5-k7
Locale: LANG=en_GB, LC_CTYPE=en_GB (charmap=ISO-8859-1)
mime-support depends on no packages.
Versions of packages mime-support recommends:
ii file 4.21-3 Determines file type using "magic"
-- no debconf information
--- /usr/bin/run-mailcap 2008-04-01 19:11:34.000000000 +0100
+++ /usr/local/bin/run-mailcap 2008-01-12 20:01:18.000000000 +0000
@@ -16,7 +16,7 @@
$locmimetyp="/usr/local/etc/mime.types";
$usrmimetyp="$ENV{HOME}/.mime.types";
$xtermprgrm="/usr/bin/x-terminal-emulator"; # xterm?
-$defmimetyp="application/*";
+$defmimetyp="application/octet-stream";
$quotedsemi=chr(255);
$quotedprct=chr(254);
$retcode=0;
@@ -278,6 +278,18 @@
+sub MagicMimetype {
+ my($file) = @_;
+ my($typ);
+
+ open(READER, "-|", "file", "-b", "--mime-type", "-e", "tokens", "-L",
"-z", $file);
+ $typ = <READER>;
+ chomp $typ;
+ return $typ;
+}
+
+
+
sub PatternMimetype {
my($file) = @_;
my($key,$val);
@@ -296,12 +308,13 @@
sub FileMimetype {
- my($file) = @_;
+ my($realfile, $file) = @_;
my($ext) = ($file =~ m!\.([^/\.]+)$!);
my $type;
- $type = ExtensionMimetype($ext) if $ext;
+ $type = MagicMimetype($realfile) if -e $realfile;
+ $type = ExtensionMimetype($ext) unless $type || !$ext;
$type = PatternMimetype($file) unless $type;
return $type;
@@ -331,9 +344,9 @@
if ($code) {
my $efile = $file;
$efile =~ s/\.[^\.]+$//;
- $type = FileMimetype($efile);
+ $type = FileMimetype($file, $efile);
} else {
- $type = FileMimetype($file);
+ $type = FileMimetype($file, $file);
}
if ($type) {
push @files,"${type}:${code}:${file}";