diff --git a/component/file/buildout.cfg b/component/file/buildout.cfg index f861eee6d7cef4824f55b9fc9f5c234e101250d8..432409cc25ba7cd75f7c1cd83cc7ba59c5a5b0d4 100644 --- a/component/file/buildout.cfg +++ b/component/file/buildout.cfg @@ -6,6 +6,13 @@ parts = file extends = ../zlib/buildout.cfg +[file-msooxml] +recipe = slapos.recipe.build:download +url = ${:_profile_base_location_}/msooxml +md5sum = c889ad135cbfb343db36b729a3897432 +location = ${buildout:parts-directory}/${:_buildout_section_name_} +filename = msooxml + [file] recipe = slapos.recipe.cmmi url = http://ftp.icm.edu.pl/packages/file/file-5.32.tar.gz @@ -15,3 +22,7 @@ configure-options = environment = CPPFLAGS=-I${zlib:location}/include LDFLAGS=-L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib +pre-configure = +# patch for fix msooxml files detect correctly + test -f ./magic/Magdir/msooxml + cp ${file-msooxml:location}/msooxml ./magic/Magdir/ diff --git a/component/file/msooxml b/component/file/msooxml new file mode 100644 index 0000000000000000000000000000000000000000..f8431dc86f5a15d086131a1897f95d78e71e4969 --- /dev/null +++ b/component/file/msooxml @@ -0,0 +1,45 @@ +#------------------------------------------------------------------------------ +# $File: msooxml,v 1.5 2014/08/05 07:38:45 christos Exp $ +# msooxml: file(1) magic for Microsoft Office XML +# From: Ralf Brown <ralf.brown@gmail.com> + +# .docx, .pptx, and .xlsx are XML plus other files inside a ZIP +# archive. The first member file is normally "[Content_Types].xml". +# but some libreoffice generated files put this later. Perhaps skip +# the "[Content_Types].xml" test? +# Since MSOOXML doesn't have anything like the uncompressed "mimetype" +# file of ePub or OpenDocument, we'll have to scan for a filename +# which can distinguish between the three types + +# start by checking for ZIP local file header signature +0 string PK\003\004 +!:strength +10 +# make sure the first file is correct +>0x1E regex \\[Content_Types\\]\\.xml|_rels/\\.rels +# skip to the second local file header +# since some documents include a 520-byte extra field following the file +# header, we need to scan for the next header +>>(18.l+49) search/2000 PK\003\004 +# now skip to the *third* local file header; again, we need to scan due to a +# 520-byte extra field following the file header +>>>&26 search/1000 PK\003\004 +# and check the subdirectory name to determine which type of OOXML +# file we have. Correct the mimetype with the registered ones: +# http://technet.microsoft.com/en-us/library/cc179224.aspx +>>>>&26 string word/ Microsoft Word 2007+ +!:mime application/vnd.openxmlformats-officedocument.wordprocessingml.document +>>>>&26 string ppt/ Microsoft PowerPoint 2007+ +!:mime application/vnd.openxmlformats-officedocument.presentationml.presentation +>>>>&26 string xl/ Microsoft Excel 2007+ +!:mime application/vnd.openxmlformats-officedocument.spreadsheetml.sheet + +>>1104 search/300 PK\003\004 +# and check the subdirectory name to determine which type of OOXML +# file we have. Correct the mimetype with the registered ones: +# http://technet.microsoft.com/en-us/library/cc179224.aspx +>>>&26 string word/ Microsoft Word 2007+ +!:mime application/vnd.openxmlformats-officedocument.wordprocessingml.document +>>>&26 string ppt/ Microsoft PowerPoint 2007+ +!:mime application/vnd.openxmlformats-officedocument.presentationml.presentation +>>>&26 string xl/ Microsoft Excel 2007+ +!:mime application/vnd.openxmlformats-officedocument.spreadsheetml.sheet