Current Path : /usr/local/share/namazu/filter/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : //usr/local/share/namazu/filter/macbinary.pl |
# # -*- Perl -*- # $Id: macbinary.pl,v 1.1.2.5 2006/11/12 16:10:06 opengl2772 Exp $ # Copyright (C) 2003-2006 Namazu Project All rights reserved. # This is free software with ABSOLUTELY NO WARRANTY. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either versions 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA # # This file must be encoded in EUC-JP encoding # package macbinary; use strict; require 'util.pl'; sub mediatype () { return ('application/macbinary'); } sub status () { return 'yes'; } sub recursive () { return 0; } sub pre_codeconv () { return 0; } sub post_codeconv () { return 0; } sub add_magic ($) { my ($magic) = @_; $magic->addMagicEntry("0\tubyte\t0\t"); $magic->addMagicEntry(">74\tubyte\t0\t"); # MacBinaryIII $magic->addMagicEntry(">>122\tubyte\t130\t"); $magic->addMagicEntry(">>>102\tstring\tmBIN\tapplication/macbinary"); # MacBinaryII $magic->addMagicEntry(">>122\tubyte\t129\t"); $magic->addMagicEntry(">>>123\tubyte\t129\t"); $magic->addMagicEntry(">>>>102\tbelong\t0\tapplication/macbinary"); # MacBinaryI $magic->addMagicEntry(">>122\tubyte\t0\t"); $magic->addMagicEntry(">>>123\tubyte\t0\t"); $magic->addMagicEntry(">>>>102\tbelong\t0\tapplication/macbinary"); return; } sub filter ($$$$$) { my ($orig_cfile, $contref, $weighted_str, $headings, $fields) = @_; util::vprint("Processing macbinary file ...\n"); return 'Unsupported macbinary.'; # 083 Data Fork Length my $size = unpack("N", substr($$contref, 83, 4)); if ($size > $conf::FILE_SIZE_MAX) { return 'too_large_macbinary_file'; } # 128-byte Header Size my $datafork = substr($$contref, 128, $size); my $filetype_code = substr($$contref, 65, 4); my $creator_code = substr($$contref, 69, 4); my $mmtype = undef; if (($filetype_code =~ /^XLS/) && ($creator_code =~ /XCEL/)){ $mmtype = 'application/excel'; }elsif (($filetype_code =~ /W.BN/) && ($creator_code =~ /MSWD/)){ $mmtype = 'application/msword'; }elsif (($filetype_code =~ /(SLD8|PPSS)/) && ($creator_code =~ /^PPT/)){ $mmtype = 'application/powerpoint'; }elsif (($filetype_code =~ /(SLD3)/) && ($creator_code =~ /^PPT/)){ # ppthtml doesn't sopport this file. $mmtype = 'application/powerpoint4'; }elsif ($filetype_code =~ /^PDF/){ $mmtype = 'application/pdf'; }elsif ($filetype_code =~ /^RTF/){ $mmtype = 'application/rtf'; }elsif ($filetype_code =~ /TEXT/) { $mmtype = undef; } my $dummy_shelterfname=""; my $err = undef; my ($kanji, $mtype) = mknmz::apply_filter($orig_cfile, \$datafork, $weighted_str, $headings, $fields, $dummy_shelterfname, $mmtype); if ($mtype =~ /; x-system=unsupported$/){ $$contref = ""; $err = "filter/macbinary.pl gets error from other filter"; util::dprint($err); $err = $mtype; }elsif ($mtype =~ /; x-error=(.*)$/){ $$contref = ""; $err = "filter/macbinary.pl gets error from other filter"; util::dprint($err); $err = $1; }else{ $$contref = $datafork; gfilter::show_filter_debug_info($contref, $weighted_str, $fields, $headings); } return $err; } 1;