34 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
 | 
						|
#------------------------------------------------------------------------------
 | 
						|
# $File: msooxml,v 1.1 2011/01/25 18:36:19 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".
 | 
						|
# 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
 | 
						|
# make sure the first file is correct
 | 
						|
>0x1E           string          [Content_Types].xml
 | 
						|
# 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
 | 
						|
>>>>&26         string          word/           Microsoft Word 2007+
 | 
						|
!:mime application/msword
 | 
						|
>>>>&26         string          ppt/            Microsoft PowerPoint 2007+
 | 
						|
!:mime application/vnd.ms-powerpoint
 | 
						|
>>>>&26         string          xl/             Microsoft Excel 2007+
 | 
						|
!:mime application/vnd.ms-excel
 | 
						|
>>>>&26         default         x               Microsoft OOXML
 | 
						|
!:strength +10
 |