#
# "$Id: mime.types,v 1.29 2004/02/25 20:14:51 mike Exp $"
#
#   MIME types file for the Common UNIX Printing System (CUPS).
#
#   Copyright 1997-2004 by Easy Software Products.
#
#   These coded instructions, statements, and computer programs are the
#   property of Easy Software Products and are protected by Federal
#   copyright law.  Distribution and use rights are outlined in the file
#   "LICENSE.txt" which should have been included with this file.  If this
#   file is missing or damaged please contact Easy Software Products
#   at:
#
#       Attn: CUPS Licensing Information
#       Easy Software Products
#       44141 Airport View Drive, Suite 204
#       Hollywood, Maryland 20636-3111 USA
#
#       Voice: (301) 373-9603
#       EMail: cups-info@cups.org
#         WWW: http://www.cups.org
#

########################################################################
#
# Format of Lines:
#
#   super/type rules
#
# "rules" can be any combination of:
#
#   ( expr )				Parenthesis for expression grouping
#   +					Logical AND
#   , or whitespace			Logical OR
#   !					Logical NOT
#   match("pattern")			Pattern match on filename
#   extension				Pattern match on "*.extension"
#   ascii(offset,length)		True if bytes are valid printable ASCII
#					(CR, NL, TAB, BS, 32-126)
#   printable(offset,length)		True if bytes are printable 8-bit chars
#					(CR, NL, TAB, BS, 32-126, 128-254)
#   string(offset,"string")		True if bytes are identical to string
#   istring(offset,"string")		True if bytes are identical to
#                                       case-insensitive string
#   char(offset,value)			True if byte is identical
#   short(offset,value)			True if 16-bit integer is identical
#   int(offset,value)			True if 32-bit integer is identical
#   locale("string")                    True if current locale matches string
#   contains(offset,range,"string")	True if the range contains the string
#
# General Notes:
#
#   MIME type names are case-insensitive.  Internally they are converted
#   to lowercase.  Multiple occurrences of a type will cause the provided
#   rules to be appended to the existing definition.  Type names are sorted
#   in ascending order, so if two types use the same rules to resolve a type
#   (e.g. doc extension for two types), the returned type will be the first
#   type in the sorted list.
#
#   The "printable" rule differs from the "ascii" rule in that it also
#   accepts 8-bit characters in the range 128-255.
#
#   String constants must be surrounded by "" if they contain whitespace.
#   To insert binary data into a string, use the <hex> notation.
#

########################################################################
#
# Application-generated files...
#

#application/msword		doc string(0,<D0CF11E0A1B11AE1>)
application/pdf			pdf string(0,%PDF)
application/postscript		ai eps ps string(0,%!) string(0,<04>%!) \
				contains(0,128,<1B>%-12345X) + \
				(contains(0,1024,"LANGUAGE=POSTSCRIPT") \
				 contains(0,1024,"LANGUAGE = Postscript") \
				 contains(0,1024,"LANGUAGE = POSTSCRIPT"))
application/vnd.hp-HPGL		hpgl string(0,<1B>&)\
				string(0,<1B>E<1B>%0B) \
				string(0,<1B>%-1B) string(0,<201B>)\
				string(0,BP;) string(0,IN;) string(0,DF;) \
				string(0,BPINPS;) \
				(contains(0,128,<1B>%-12345X) + \
				 (contains(0,1024,"LANGUAGE=HPGL") \
				  contains(0,1024,"LANGUAGE = HPGL")))

########################################################################
#
# Image files...
#

image/gif			gif string(0,GIF87a) string(0,GIF89a)
image/png			png string(0,<89>PNG)
image/jpeg			jpeg jpg jpe string(0,<FFD8FF>) &&\
				(char(3,0xe0) char(3,0xe1) char(3,0xe2) char(3,0xe3)\
				 char(3,0xe4) char(3,0xe5) char(3,0xe6) char(3,0xe7)\
				 char(3,0xe8) char(3,0xe9) char(3,0xea) char(3,0xeb)\
				 char(3,0xec) char(3,0xed) char(3,0xee) char(3,0xef))
image/tiff			tiff tif string(0,MM) string(0,II)
image/x-photocd			pcd string(2048,PCD_IPI)
image/x-portable-anymap		pnm
image/x-portable-bitmap		pbm string(0,P1) string(0,P4)
image/x-portable-graymap	pgm string(0,P2) string(0,P5)
image/x-portable-pixmap		ppm string(0,P3) string(0,P6)
image/x-sgi-rgb			rgb sgi bw icon short(0,474)
image/x-xbitmap			xbm
image/x-xpixmap			xpm ascii(0,1024) + string(3,"XPM")
#image/x-xwindowdump		xwd string(4,<00000007>)
image/x-sun-raster		ras string(0,<59a66a95>)

#image/fpx			fpx
image/x-alias			pix short(8,8) short(8,24)
image/x-bitmap			bmp string(0,BM) && !printable(2,14)

########################################################################
#
# Text files...
#

text/html			html htm printable(0,1024) +\
				(istring(0,"<HTML>") istring(0,"<!DOCTYPE"))
application/x-cshell		csh printable(0,1024) + string(0,#!) +\
				(contains(2,80,/csh) contains(2,80,/tcsh))
application/x-perl		pl printable(0,1024) + string(0,#!) +\
				contains(2,80,/perl)
application/x-shell		sh printable(0,1024) + string(0,#!) +\
				(contains(2,80,/bash) contains(2,80,/ksh)\
				 contains(2,80,/sh) contains(2,80,/zsh))
text/plain			txt printable(0,1024)

########################################################################
#
# CUPS-specific types...
#

application/vnd.cups-command	string(0,'#CUPS-COMMAND')
application/vnd.cups-form	string(0,"<CUPSFORM>")
application/vnd.cups-postscript
application/vnd.cups-raster	string(0,"RaSt") string(0,"tSaR")
application/vnd.cups-raw	(string(0,<1B>E) + !string(2,<1B>%0B)) \
				string(0,<1B>@) \
				(contains(0,128,<1B>%-12345X) + \
				 (contains(0,1024,"LANGUAGE=PCL") \
				  contains(0,1024,"LANGUAGE = PCL")))

########################################################################
#
# Raw print file support...
#
# Uncomment the following type and the application/octet-stream
# filter line in mime.convs to allow raw file printing without the
# -oraw option.
#

#application/octet-stream

#
# End of "$Id: mime.types,v 1.29 2004/02/25 20:14:51 mike Exp $".
#
