filecheck: Fall back to using the file command if the freedesktop magic file cannot identify a file.
parent
74d975ff4d
commit
51d5e54697
|
@ -132,15 +132,28 @@ sub match_mimetype ($$;@) {
|
|||
return IkiWiki::ErrorReason->new("file does not exist");
|
||||
}
|
||||
|
||||
# Use ::magic to get the mime type, the idea is to only trust
|
||||
# data obtained by examining the actual file contents.
|
||||
# Get the mime type.
|
||||
#
|
||||
# First, try File::Mimeinfo. This is fast, but doesn't recognise
|
||||
# all files.
|
||||
eval q{use File::MimeInfo::Magic};
|
||||
if ($@) {
|
||||
return IkiWiki::ErrorReason->new("failed to load File::MimeInfo::Magic ($@); cannot check MIME type");
|
||||
my $mimeinfo_ok=! $@;
|
||||
my $mimetype;
|
||||
if ($mimeinfo_ok) {
|
||||
my $mimetype=File::MimeInfo::Magic::magic($file);
|
||||
}
|
||||
my $mimetype=File::MimeInfo::Magic::magic($file);
|
||||
|
||||
# Fall back to using file, which has a more complete
|
||||
# magic database.
|
||||
if (! defined $mimetype) {
|
||||
$mimetype=File::MimeInfo::Magic::default($file);
|
||||
open(my $file_h, "-|", "file", "-bi", $file);
|
||||
$mimetype=<$file_h>;
|
||||
close $file_h;
|
||||
}
|
||||
if (! defined $mimetype || $mimetype !~s /;.*//) {
|
||||
# Fall back to default value.
|
||||
$mimetype=File::MimeInfo::Magic::default($file)
|
||||
if $mimeinfo_ok;
|
||||
if (! defined $mimetype) {
|
||||
$mimetype="unknown";
|
||||
}
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
ikiwiki (3.20100805) UNRELEASED; urgency=low
|
||||
|
||||
* filecheck: Fall back to using the file command if the freedesktop
|
||||
magic file cannot identify a file.
|
||||
|
||||
-- Joey Hess <joeyh@debian.org> Mon, 09 Aug 2010 13:18:28 -0400
|
||||
|
||||
ikiwiki (3.20100804) unstable; urgency=low
|
||||
|
||||
* template: Fix dependency tracking. Broken in version 3.20100427.
|
||||
|
|
|
@ -7,7 +7,8 @@ status. These tests are mostly useful for the [[attachment]] plugin, and
|
|||
are documented [[here|ikiwiki/pagespec/attachment]].
|
||||
|
||||
This plugin will use the [[!cpan File::MimeInfo::Magic]] perl module, if
|
||||
available, for mimetype checking.
|
||||
available, for mimetype checking. It falls back to using the `file` command
|
||||
if necessary for hard to detect files.
|
||||
|
||||
The `virusfree` [[PageSpec|ikiwiki/pagespec/attachment]] requires that
|
||||
ikiwiki be configured with a virus scanner program via the `virus_checker`
|
||||
|
|
Loading…
Reference in New Issue