aboutsummaryrefslogtreecommitdiff
path: root/misc/shared-mime-info/files
diff options
context:
space:
mode:
authorJoe Marcus Clarke <marcus@FreeBSD.org>2005-03-19 20:59:06 +0000
committerJoe Marcus Clarke <marcus@FreeBSD.org>2005-03-19 20:59:06 +0000
commitf445ade1adf1a0832de63042444b5e5de8997999 (patch)
tree96b04e2e71ea0e2b095e59a0fe94d402291e4b71 /misc/shared-mime-info/files
parentd0a7c9491f3fd6ebd0ab60769a4ab9f1e384d019 (diff)
Notes
Diffstat (limited to 'misc/shared-mime-info/files')
-rw-r--r--misc/shared-mime-info/files/patch-freedesktop.org.xml.in794
-rw-r--r--misc/shared-mime-info/files/patch-update-mime-database.c245
2 files changed, 1020 insertions, 19 deletions
diff --git a/misc/shared-mime-info/files/patch-freedesktop.org.xml.in b/misc/shared-mime-info/files/patch-freedesktop.org.xml.in
new file mode 100644
index 000000000000..a59b4dbf7334
--- /dev/null
+++ b/misc/shared-mime-info/files/patch-freedesktop.org.xml.in
@@ -0,0 +1,794 @@
+===================================================================
+RCS file: /cvs/mime/shared-mime-info/freedesktop.org.xml.in,v
+retrieving revision 1.21
+retrieving revision 1.50
+diff -u -r1.21 -r1.50
+--- freedesktop.org.xml.in 2004/08/16 10:29:23 1.21
++++ freedesktop.org.xml.in 2005/03/19 12:15:55 1.50
+@@ -68,6 +68,10 @@
+ <match type="string" value="must be converted with BinHex" offset="11"/>
+ </magic>
+ </mime-type>
++ <mime-type type="application/mathematica">
++ <comment xml:lang="en">Mathematica Notebook</comment>
++ <glob pattern="*.nb" />
++ </mime-type>
+ <mime-type type="application/octet-stream">
+ <_comment>unknown</_comment>
+ <magic priority="50">
+@@ -89,6 +93,7 @@
+ <match type="string" value="%PDF-" offset="0"/>
+ </magic>
+ <glob pattern="*.pdf"/>
++ <alias type="application/x-pdf"/>
+ </mime-type>
+ <mime-type type="application/pgp">
+ <_comment>PGP message</_comment>
+@@ -133,6 +138,15 @@
+ <glob pattern="*.smi"/>
+ <glob pattern="*.sml"/>
+ </mime-type>
++ <mime-type type="application/stuffit">
++ <_comment>StuffIt archive</_comment>
++ <magic priority="50">
++ <match type="string" value="StuffIt" offset="0"/>
++ </magic>
++ <glob pattern="*.sit"/>
++ <alias type="application/x-stuffit"/>
++ <alias type="application/x-sit"/>
++ </mime-type>
+ <mime-type type="application/vnd.corel-draw">
+ <_comment>Corel Draw drawing</_comment>
+ <magic priority="50">
+@@ -151,7 +165,7 @@
+ <mime-type type="application/vnd.lotus-1-2-3">
+ <_comment>Lotus 1-2-3 spreadsheet</_comment>
+ <magic priority="50">
+- <match type="string" value="\x00\x00\x02\x00" offset="0"/>
++ <match type="string" value="\x00\x00\x02\x00\x06\x04\x06\x00\x08\x00\x00\x00\x00\x00" offset="0"/>
+ </magic>
+ <glob pattern="*.123"/>
+ <glob pattern="*.wk1"/>
+@@ -159,7 +173,12 @@
+ <glob pattern="*.wk4"/>
+ <glob pattern="*.wks"/>
+ </mime-type>
+- <mime-type type="application/vnd.ms-excel">
++ <mime-type type="application/vnd.mozilla.xul+xml">
++ <sub-class-of type="text/xml"/>
++ <_comment>XML User Interface Language document</_comment>
++ <glob pattern="*.xul"/>
++ </mime-type>
++ <mime-type type="application/vnd.ms-excel">
+ <_comment>Microsoft Excel spreadsheet</_comment>
+ <magic priority="50">
+ <match type="string" value="Microsoft Excel 5.0 Worksheet" offset="2080"/>
+@@ -184,8 +203,8 @@
+ <match type="little32" value="0xcfd0e011" offset="0"/>
+ </magic>
+ </mime-type>
+- <mime-type type="application/vnd.ms-word">
+- <_comment>Microsoft Word document</_comment>
++ <mime-type type="application/msword">
++ <_comment>Microsoft Word document</_comment>
+ <magic priority="50">
+ <match type="string" value="\x31\xbe\x00\x00" offset="0"/>
+ <match type="string" value="PO^Q`" offset="0"/>
+@@ -195,7 +214,7 @@
+ <match type="string" value="Microsoft Word document data" offset="2112"/>
+ </magic>
+ <glob pattern="*.doc"/>
+- <alias type="application/msword"/>
++ <alias type="application/vnd.ms-word"/>
+ </mime-type>
+ <mime-type type="application/vnd.palm">
+ <_comment>Palmpilot database/document</_comment>
+@@ -275,6 +294,62 @@
+ <_comment>OpenOffice.org Writer document template</_comment>
+ <glob pattern="*.stw"/>
+ </mime-type>
++ <mime-type type="application/vnd.oasis.opendocument.text">
++ <_comment>OpenDocument Text</_comment>
++ <glob pattern="*.odt"/>
++ </mime-type>
++ <mime-type type="application/vnd.oasis.opendocument.text-template">
++ <_comment>OpenDocument Text Template</_comment>
++ <glob pattern="*.ott"/>
++ </mime-type>
++ <mime-type type="application/vnd.oasis.opendocument.text-web">
++ <_comment>OpenDocument HTML Document Template</_comment>
++ <glob pattern="*.oth"/>
++ </mime-type>
++ <mime-type type="application/vnd.oasis.opendocument.text-master">
++ <_comment>OpenDocument Master Document</_comment>
++ <glob pattern="*.odm"/>
++ </mime-type>
++ <mime-type type="application/vnd.oasis.opendocument.graphics">
++ <_comment>OpenDocument Drawing</_comment>
++ <glob pattern="*.odg"/>
++ </mime-type>
++ <mime-type type="application/vnd.oasis.opendocument.graphics-template">
++ <_comment>OpenDocument Drawing Template</_comment>
++ <glob pattern="*.otg"/>
++ </mime-type>
++ <mime-type type="application/vnd.oasis.opendocument.presentation">
++ <_comment>OpenDocument Presentation</_comment>
++ <glob pattern="*.odp"/>
++ </mime-type>
++ <mime-type type="application/vnd.oasis.opendocument.presentation-template">
++ <_comment>OpenDocument Presentation Template</_comment>
++ <glob pattern="*.otp"/>
++ </mime-type>
++ <mime-type type="application/vnd.oasis.opendocument.spreadsheet">
++ <_comment>OpenDocument Spreadsheet</_comment>
++ <glob pattern="*.ods"/>
++ </mime-type>
++ <mime-type type="application/vnd.oasis.opendocument.spreadsheet-template">
++ <_comment>OpenDocument Spreadsheet Template</_comment>
++ <glob pattern="*.ots"/>
++ </mime-type>
++ <mime-type type="application/vnd.oasis.opendocument.chart">
++ <_comment>OpenDocument Chart</_comment>
++ <glob pattern="*.odc"/>
++ </mime-type>
++ <mime-type type="application/vnd.oasis.opendocument.formula">
++ <_comment>OpenDocument Formula</_comment>
++ <glob pattern="*.odf"/>
++ </mime-type>
++ <mime-type type="application/vnd.oasis.opendocument.database">
++ <_comment>OpenDocument Database</_comment>
++ <glob pattern="*.odb"/>
++ </mime-type>
++ <mime-type type="application/vnd.oasis.opendocument.image">
++ <_comment>OpenDocument Image</_comment>
++ <glob pattern="*.odi"/>
++ </mime-type>
+ <mime-type type="application/vnd.wordperfect">
+ <alias type="application/x-wordperfect"/>
+ <alias type="application/wordperfect"/>
+@@ -419,6 +494,10 @@
+ <_comment>PGN chess game</_comment>
+ <glob pattern="*.pgn"/>
+ </mime-type>
++ <mime-type type="application/x-chm">
++ <comment>Compiled HTML Help Format</comment>
++ <glob pattern="*.chm"/>
++ </mime-type>
+ <mime-type type="application/x-class-file">
+ <_comment>Java byte code</_comment>
+ </mime-type>
+@@ -468,8 +547,16 @@
+ <glob pattern="*.cpio.gz"/>
+ </mime-type>
+ <mime-type type="application/x-csh">
++ <sub-class-of type="application/x-shellscript"/>
+ <sub-class-of type="text/plain"/>
+ <_comment>C shell script</_comment>
++ <magic>
++ <match type="string" value="/bin/tcsh" offset="1:16"/>
++ <match type="string" value="/bin/csh" offset="1:16"/>
++ <match type="string" value="#!/usr/bin/env csh" offset="0"/>
++ <match type="string" value="#!/usr/bin/env tcsh" offset="0"/>
++ </magic>
++ <glob pattern="*.csh"/>
+ </mime-type>
+ <mime-type type="application/x-dbase">
+ <_comment>dBASE document</_comment>
+@@ -694,7 +781,7 @@
+ <glob pattern="*.gmo"/>
+ </mime-type>
+ <mime-type type="application/x-glade">
+- <sub-class-of type="text/plain"/>
++ <sub-class-of type="text/xml"/>
+ <_comment>Glade project</_comment>
+ <glob pattern="*.glade"/>
+ </mime-type>
+@@ -765,6 +852,14 @@
+ </magic>
+ <glob pattern="*.class"/>
+ </mime-type>
++ <mime-type type="application/x-java-jnlp-file">
++ <sub-class-of type="text/xml"/>
++ <_comment>Java Network Launched Application</_comment>
++ <glob pattern="*.jnlp"/>
++ <magic priority="50">
++ <match type="string" value="&lt;jnlp" offset="0:64"/>
++ </magic>
++ </mime-type>
+ <mime-type type="application/x-javascript">
+ <sub-class-of type="text/plain"/>
+ <_comment>Javascript program</_comment>
+@@ -1111,6 +1206,14 @@
+ <mime-type type="application/x-palm-database">
+ <_comment>Palm OS database</_comment>
+ </mime-type>
++ <mime-type type="application/x-par2">
++ <comment>PAR2 Parity File</comment>
++ <magic priority="50">
++ <match offset="0" type="string" value="PAR2" />
++ </magic>
++ <glob pattern="*.PAR2" />
++ <glob pattern="*.par2" />
++ </mime-type>
+ <mime-type type="application/x-pef-executable">
+ <_comment>PEF executable</_comment>
+ <magic priority="50">
+@@ -1118,6 +1221,7 @@
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-perl">
++ <sub-class-of type='application/x-executable'/>
+ <sub-class-of type="text/plain"/>
+ <_comment>Perl script</_comment>
+ <magic priority="50">
+@@ -1154,23 +1258,6 @@
+ <_comment>Pathetic Writer document</_comment>
+ <glob pattern="*.pw"/>
+ </mime-type>
+- <mime-type type="application/x-python">
+- <sub-class-of type="text/plain"/>
+- <_comment>Python script</_comment>
+- <magic priority="50">
+- <match type="string" value="#!/bin/python" offset="0"/>
+- <match type="string" value="#! /bin/python" offset="0"/>
+- <match type="string" value='eval \"exec /bin/python' offset="0"/>
+- <match type="string" value="#!/usr/bin/python" offset="0"/>
+- <match type="string" value="#! /usr/bin/python" offset="0"/>
+- <match type="string" value='eval \"exec /usr/bin/python' offset="0"/>
+- <match type="string" value="#!/usr/local/bin/python" offset="0"/>
+- <match type="string" value="#! /usr/local/bin/python" offset="0"/>
+- <match type="string" value='eval \"exec /usr/local/bin/python' offset="0"/>
+- <match type="string" value='/bin/env python' offset="1:16"/>
+- </magic>
+- <glob pattern="*.py"/>
+- </mime-type>
+ <mime-type type="application/x-python-bytecode">
+ <_comment>Python bytecode</_comment>
+ <magic priority="50">
+@@ -1209,6 +1296,7 @@
+ <glob pattern="*.rpm"/>
+ </mime-type>
+ <mime-type type="application/x-ruby">
++ <sub-class-of type='application/x-executable'/>
+ <sub-class-of type="text/plain"/>
+ <_comment>Ruby script</_comment>
+ <magic>
+@@ -1253,25 +1341,18 @@
+ <sub-class-of type="text/plain"/>
+ <_comment>shell script</_comment>
+ <magic priority="50">
+- <match type="string" value="#!/bin/ksh" offset="0"/>
+- <match type="string" value="#!/usr/local/bin/ash" offset="0"/>
+- <match type="string" value="#!/usr/local/tcsh" offset="0"/>
+ <match type="string" value="# This is a shell archive" offset="10"/>
+ <match type="string" value="/bin/bash" offset="1:16"/>
+ <match type="string" value="/bin/nawk" offset="1:16"/>
+- <match type="string" value="/bin/tcsh" offset="1:16"/>
+- <match type="string" value="/bin/csh" offset="1:16"/>
+ <match type="string" value="/bin/zsh" offset="1:16"/>
+ <match type="string" value="/bin/sh" offset="1:16"/>
++ <match type="string" value="/bin/ksh" offset="1:16"/>
+ <match type="string" value="#!/usr/bin/env sh" offset="0"/>
+ <match type="string" value="#!/usr/bin/env bash" offset="0"/>
+- <match type="string" value="#!/usr/bin/env csh" offset="0"/>
+- <match type="string" value="#!/usr/bin/env tcsh" offset="0"/>
+ <match type="string" value="#!/usr/bin/env zsh" offset="0"/>
+-
++ <match type="string" value="#!/usr/bin/env ksh" offset="0"/>
+ </magic>
+ <glob pattern="*.sh"/>
+- <glob pattern="*.csh"/>
+ </mime-type>
+ <mime-type type="application/x-shockwave-flash">
+ <_comment>Shockwave Flash file</_comment>
+@@ -1407,12 +1488,13 @@
+ <glob pattern="*.zoo"/>
+ </mime-type>
+ <mime-type type="application/xhtml+xml">
+- <sub-class-of type="text/plain"/>
++ <sub-class-of type="text/xml"/>
+ <_comment>XHTML page</_comment>
+ <glob pattern="*.xhtml"/>
+ <root-XML namespaceURI='http://www.w3.org/1999/xhtml' localName='html'/>
+ </mime-type>
+ <mime-type type="application/zip">
++ <alias type="application/x-zip-compressed"/>
+ <_comment>ZIP archive</_comment>
+ <magic priority="40">
+ <match type="string" value="PK\003\004" offset="0"/>
+@@ -1497,6 +1579,13 @@
+ <glob pattern="*.mid"/>
+ <glob pattern="*.midi"/>
+ </mime-type>
++ <mime-type type="audio/x-m4a">
++ <_comment>MP4 audio</_comment>
++ <magic priority="50">
++ <match type="string" value="ftypM4A" offset="0"/>
++ </magic>
++ <glob pattern="*.m4a"/>
++ </mime-type>
+ <mime-type type="audio/x-mod">
+ <_comment>Amiga SoundTracker audio</_comment>
+ <glob pattern="*.mod"/>
+@@ -1507,12 +1596,12 @@
+ <glob pattern="*.mtm"/>
+ <glob pattern="*.669"/>
+ </mime-type>
+- <mime-type type="audio/x-mp3">
++ <mime-type type="audio/mpeg">
++ <alias type="audio/x-mp3" />
+ <_comment>MP3 audio</_comment>
+ <magic priority="50">
+ <match type="big32" value="0xfffb" offset="0"/>
+ <match type="string" value="ID3" offset="0"/>
+- <match type="big16" mask="0xfff0" value="0xfff0" offset="0"/>
+ </magic>
+ <glob pattern="*.mp3"/>
+ </mime-type>
+@@ -1525,6 +1614,9 @@
+ <mime-type type="audio/x-mpegurl">
+ <_comment>MP3 audio (streamed)</_comment>
+ <glob pattern="*.m3u"/>
++ <magic priority="50">
++ <match type="string" value="#EXTM3U" offset="0"/>
++ </magic>
+ </mime-type>
+ <mime-type type="audio/x-ms-asx">
+ <_comment>Playlist</_comment>
+@@ -1557,6 +1649,11 @@
+ </mime-type>
+ <mime-type type="audio/x-scpls">
+ <_comment>MP3 ShoutCast playlist</_comment>
++ <magic priority="50">
++ <match type="string" value="[playlist]" offset="0"/>
++ <match type="string" value="[Playlist]" offset="0"/>
++ <match type="string" value="[PLAYLIST]" offset="0"/>
++ </magic>
+ <glob pattern="*.pls"/>
+ </mime-type>
+ <mime-type type="audio/x-stm">
+@@ -1568,6 +1665,8 @@
+ <glob pattern="*.voc"/>
+ </mime-type>
+ <mime-type type="audio/x-wav">
++ <alias type="audio/wav"/>
++ <alias type="audio/vnd.wave"/>
+ <_comment>WAV audio</_comment>
+ <magic priority="50">
+ <match type="string" value="WAVE" offset="8"/>
+@@ -1649,6 +1748,7 @@
+ <glob pattern="*.rle"/>
+ </mime-type>
+ <mime-type type="image/svg+xml">
++ <sub-class-of type="text/xml"/>
+ <_comment>scalable SVG image</_comment>
+ <magic priority="80">
+ <match type="string" value="&lt;!DOCTYPE svg" offset="0:256"/>
+@@ -1695,11 +1795,11 @@
+ <glob pattern="*.xcf.gz"/>
+ <glob pattern="*.xcf.bz2"/>
+ </mime-type>
+- <mime-type type="image/x-dcm">
++ <mime-type type="application/dicom">
+ <_comment>Digital Imaging and Communications in Medicine image</_comment>
+ <glob pattern="*.dcm"/>
+ <magic priority="50">
+- <match type="string" value="DCMw" offset="0"/>
++ <match type="string" value="DICM" offset="128"/>
+ </magic>
+ </mime-type>
+ <mime-type type="image/x-dib">
+@@ -1993,10 +2093,13 @@
+ <_comment>stream of data (server push)</_comment>
+ </mime-type>
+ <mime-type type="text/calendar">
+- <_comment>iCalendar file</_comment>
++ <alias type="text/x-vcalendar"/>
++ <_comment>vCalendar interchange file</_comment>
+ <magic priority="50">
+ <match type="string" value="BEGIN:VCALENDAR" offset="0"/>
++ <match type="string" value="begin:vcalendar" offset="0"/>
+ </magic>
++ <glob pattern="*.vcs"/>
+ <glob pattern="*.ics"/>
+ </mime-type>
+ <mime-type type="text/css">
+@@ -2005,47 +2108,24 @@
+ <glob pattern="*.CSSL"/>
+ </mime-type>
+ <mime-type type="text/directory">
+- <_comment>directory information file</_comment>
++ <alias type="text/x-vcard"/>
++ <_comment>Electronic Business Card</_comment>
++ <magic priority="50">
++ <match type="string" value="BEGIN:VCARD" offset="0"/>
++ <match type="string" value="begin:vcard" offset="0"/>
++ </magic>
++ <glob pattern="*.vcf"/>
++ <glob pattern="*.vct"/>
++ <glob pattern="*.gcrd"/>
+ </mime-type>
+ <mime-type type="text/enriched">
+ <_comment>enriched text document</_comment>
+ </mime-type>
+- <mime-type type="text/x-gettext-translation">
+- <_comment>translated messages</_comment>
+- <glob pattern="*.po"/>
+- </mime-type>
+- <mime-type type="text/x-gettext-translation-template">
+- <_comment>message translation template</_comment>
+- <glob pattern="*.pot"/>
+- </mime-type>
+- <mime-type type="text/html">
+- <_comment>HTML page</_comment>
+- <magic priority="50">
+- <match type="string" value="&lt;!DOCTYPE HTML" offset="0:64"/>
+- <match type="string" value="&lt;!doctype html" offset="0:64"/>
+- <match type="string" value="&lt;HEAD" offset="0:64"/>
+- <match type="string" value="&lt;head" offset="0:64"/>
+- <match type="string" value="&lt;TITLE" offset="0:64"/>
+- <match type="string" value="&lt;title" offset="0:64"/>
+- <match type="string" value="&lt;html" offset="0:64"/>
+- <match type="string" value="&lt;HTML" offset="0:64"/>
+- <match type="string" value="&lt;BODY" offset="0"/>
+- <match type="string" value="&lt;body" offset="0"/>
+- <match type="string" value="&lt;TITLE" offset="0"/>
+- <match type="string" value="&lt;title" offset="0"/>
+- <match type="string" value="&lt;!--" offset="0"/>
+- <match type="string" value="&lt;h1" offset="0"/>
+- <match type="string" value="&lt;H1" offset="0"/>
+- <match type="string" value="&lt;!doctype HTML" offset="0"/>
+- <match type="string" value="&lt;!DOCTYPE html" offset="0"/>
+- </magic>
+- <glob pattern="*.html"/>
+- <glob pattern="*.htm"/>
+- </mime-type>
+ <mime-type type="text/htmlh">
+ <_comment>help page</_comment>
+ </mime-type>
+ <mime-type type="text/mathml">
++ <sub-class-of type="text/xml"/>
+ <_comment>MathML document</_comment>
+ <glob pattern="*.mml"/>
+ </mime-type>
+@@ -2059,6 +2139,7 @@
+ <glob pattern="*.asc"/>
+ </mime-type>
+ <mime-type type="text/rdf">
++ <sub-class-of type="text/plain"/>
+ <_comment>Resource Description Framework (RDF) file</_comment>
+ <glob pattern="*.rdf"/>
+ </mime-type>
+@@ -2066,10 +2147,12 @@
+ <_comment>email headers</_comment>
+ </mime-type>
+ <mime-type type="text/richtext">
++ <sub-class-of type="text/plain"/>
+ <_comment>rich text document</_comment>
+ <glob pattern="*.rtx"/>
+ </mime-type>
+ <mime-type type="text/rss">
++ <sub-class-of type="text/plain"/>
+ <_comment>RDF Site Summary</_comment>
+ <glob pattern="*.rss"/>
+ </mime-type>
+@@ -2087,6 +2170,7 @@
+ <glob pattern="*.slk"/>
+ </mime-type>
+ <mime-type type="text/tab-separated-values">
++ <sub-class-of type="text/plain"/>
+ <_comment>text document (with tab-separated values)</_comment>
+ <glob pattern="*.tsv"/>
+ </mime-type>
+@@ -2095,23 +2179,28 @@
+ <glob pattern="*.wml"/>
+ </mime-type>
+ <mime-type type="text/x-adasrc">
++ <sub-class-of type="text/plain"/>
+ <_comment>Ada source code</_comment>
+ <glob pattern="*.adb"/>
+ <glob pattern="*.ads"/>
+ </mime-type>
+ <mime-type type="text/x-authors">
++ <sub-class-of type="text/plain"/>
+ <_comment>author list</_comment>
+ <glob pattern="AUTHORS"/>
+ </mime-type>
+ <mime-type type="text/x-bibtex">
++ <sub-class-of type="text/plain"/>
+ <_comment>Bibtex bibliographic data</_comment>
+ <glob pattern="*.bib"/>
+ </mime-type>
+ <mime-type type="text/x-c++hdr">
++ <sub-class-of type="text/plain"/>
+ <_comment>C++ source code header</_comment>
+ <glob pattern="*.hh"/>
+ </mime-type>
+ <mime-type type="text/x-c++src">
++ <sub-class-of type="text/plain"/>
+ <_comment>C++ source code</_comment>
+ <glob pattern="*.cpp"/>
+ <glob pattern="*.cxx"/>
+@@ -2120,32 +2209,39 @@
+ <glob pattern="*.c++"/>
+ </mime-type>
+ <mime-type type="text/x-chdr">
++ <sub-class-of type="text/plain"/>
+ <_comment>C source code header</_comment>
+ <glob pattern="*.h"/>
+ <glob pattern="*.h++"/>
+ <glob pattern="*.hp"/>
+ </mime-type>
+ <mime-type type="text/x-comma-separated-values">
++ <sub-class-of type="text/plain"/>
+ <_comment>text document (with comma-separated values)</_comment>
+ <glob pattern="*.csv"/>
+ </mime-type>
+ <mime-type type="text/x-copying">
++ <sub-class-of type="text/plain"/>
+ <_comment>software license terms</_comment>
+ <glob pattern="COPYING"/>
+ </mime-type>
+ <mime-type type="text/x-credits">
++ <sub-class-of type="text/plain"/>
+ <_comment>software author credits</_comment>
+ <glob pattern="CREDITS"/>
+ </mime-type>
+ <mime-type type="text/x-csrc">
++ <sub-class-of type="text/plain"/>
+ <_comment>C source code</_comment>
+ <glob pattern="*.c"/>
+ </mime-type>
+ <mime-type type="text/x-csharp">
++ <sub-class-of type="text/plain"/>
+ <_comment>C# source code</_comment>
+ <glob pattern="*.cs"/>
+ </mime-type>
+ <mime-type type="text/x-dcl">
++ <sub-class-of type="text/plain"/>
+ <_comment>DCL script</_comment>
+ <glob pattern="*.dcl"/>
+ </mime-type>
+@@ -2153,11 +2249,18 @@
+ <_comment>DSSSL document</_comment>
+ <glob pattern="*.dsl"/>
+ </mime-type>
++ <mime-type type="text/x-dsrc">
++ <sub-class-of type="text/plain"/>
++ <_comment>D source code</_comment>
++ <glob pattern="*.d"/>
++ </mime-type>
+ <mime-type type="text/x-dtd">
++ <sub-class-of type="text/plain"/>
+ <_comment>document type definition</_comment>
+ <glob pattern="*.dtd"/>
+ </mime-type>
+ <mime-type type="text/x-emacs-lisp">
++ <sub-class-of type="text/plain"/>
+ <_comment>Emacs Lisp source code</_comment>
+ <magic priority="50">
+ <match type="string" value="\012(" offset="0"/>
+@@ -2166,68 +2269,110 @@
+ <glob pattern="*.el"/>
+ </mime-type>
+ <mime-type type="text/x-fortran">
++ <sub-class-of type="text/plain"/>
+ <_comment>Fortran source code</_comment>
+ <glob pattern="*.f"/>
+ </mime-type>
++ <mime-type type="text/x-gettext-translation">
++ <sub-class-of type="text/plain"/>
++ <_comment>translated messages</_comment>
++ <glob pattern="*.po"/>
++ </mime-type>
++ <mime-type type="text/x-gettext-translation-template">
++ <sub-class-of type="text/plain"/>
++ <_comment>message translation template</_comment>
++ <glob pattern="*.pot"/>
++ </mime-type>
++ <mime-type type="text/html">
++ <_comment>HTML page</_comment>
++ <magic priority="50">
++ <match type="string" value="&lt;!DOCTYPE HTML" offset="0:64"/>
++ <match type="string" value="&lt;!doctype html" offset="0:64"/>
++ <match type="string" value="&lt;HEAD" offset="0:64"/>
++ <match type="string" value="&lt;head" offset="0:64"/>
++ <match type="string" value="&lt;TITLE" offset="0:64"/>
++ <match type="string" value="&lt;title" offset="0:64"/>
++ <match type="string" value="&lt;html" offset="0:64"/>
++ <match type="string" value="&lt;HTML" offset="0:64"/>
++ <match type="string" value="&lt;BODY" offset="0"/>
++ <match type="string" value="&lt;body" offset="0"/>
++ <match type="string" value="&lt;TITLE" offset="0"/>
++ <match type="string" value="&lt;title" offset="0"/>
++ <match type="string" value="&lt;!--" offset="0"/>
++ <match type="string" value="&lt;h1" offset="0"/>
++ <match type="string" value="&lt;H1" offset="0"/>
++ <match type="string" value="&lt;!doctype HTML" offset="0"/>
++ <match type="string" value="&lt;!DOCTYPE html" offset="0"/>
++ </magic>
++ <glob pattern="*.html"/>
++ <glob pattern="*.htm"/>
++ </mime-type>
+ <mime-type type="text/x-gtkrc">
++ <sub-class-of type="text/plain"/>
+ <_comment>GTK configuration</_comment>
+ <glob pattern="gtkrc"/>
+ <glob pattern=".gtkrc"/>
+ </mime-type>
+ <mime-type type="text/x-haskell">
++ <sub-class-of type="text/plain"/>
+ <_comment>Haskell source code</_comment>
+ <glob pattern="*.hs"/>
+ </mime-type>
+ <mime-type type="text/x-idl">
++ <sub-class-of type="text/plain"/>
+ <_comment>IDL document</_comment>
+ <glob pattern="*.idl"/>
+ </mime-type>
+ <mime-type type="text/x-install">
++ <sub-class-of type="text/plain"/>
+ <_comment>software installation instructions</_comment>
+ <glob pattern="INSTALL"/>
+ </mime-type>
+ <mime-type type="text/x-java">
++ <sub-class-of type="text/plain"/>
+ <_comment>Java source code</_comment>
+ <glob pattern="*.java"/>
+ </mime-type>
+- <mime-type type="text/x-ksh">
+- <_comment>Korn shell script</_comment>
+- <magic priority="50">
+- <match type="string" value="/bin/ksh" offset="1:16"/>
+- </magic>
+- </mime-type>
+ <mime-type type="text/x-ksysv-log">
++ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+ <match type="string" value="KDE System V Init Editor" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="text/x-literate-haskell">
++ <sub-class-of type="text/plain"/>
+ <_comment>Literate haskell source code</_comment>
+ <glob pattern="*.lhs"/>
+ </mime-type>
+ <mime-type type="text/x-log">
++ <sub-class-of type="text/plain"/>
+ <_comment>application log</_comment>
+ <glob pattern="*.log"/>
+ </mime-type>
+ <mime-type type="text/x-makefile">
++ <sub-class-of type="text/plain"/>
+ <_comment>Makefile</_comment>
+ <glob pattern="makefile*"/>
+ <glob pattern="[Mm]akefile"/>
+ </mime-type>
+ <mime-type type="text/x-moc">
++ <sub-class-of type="text/plain"/>
+ <_comment>Qt Meta Object file</_comment>
+ <glob pattern="*.moc"/>
+ </mime-type>
+ <mime-type type="text/x-objcsrc">
++ <sub-class-of type="text/plain"/>
+ <_comment>Objective-C source code</_comment>
+ <glob pattern="*.m"/>
+ </mime-type>
+ <mime-type type="text/x-pascal">
++ <sub-class-of type="text/plain"/>
+ <_comment>Pascal source code</_comment>
+ <glob pattern="*.p"/>
+ <glob pattern="*.pas"/>
+ </mime-type>
+ <mime-type type="text/x-patch">
++ <sub-class-of type="text/plain"/>
+ <_comment>differences between files</_comment>
+ <magic priority="50">
+ <match type="string" value="diff\t" offset="0"/>
+@@ -2242,15 +2387,36 @@
+ <glob pattern="*.diff"/>
+ <glob pattern="*.patch"/>
+ </mime-type>
++ <mime-type type="text/x-python">
++ <sub-class-of type='application/x-executable'/>
++ <sub-class-of type="text/plain"/>
++ <_comment>Python script</_comment>
++ <magic priority="50">
++ <match type="string" value="#!/bin/python" offset="0"/>
++ <match type="string" value="#! /bin/python" offset="0"/>
++ <match type="string" value='eval \"exec /bin/python' offset="0"/>
++ <match type="string" value="#!/usr/bin/python" offset="0"/>
++ <match type="string" value="#! /usr/bin/python" offset="0"/>
++ <match type="string" value='eval \"exec /usr/bin/python' offset="0"/>
++ <match type="string" value="#!/usr/local/bin/python" offset="0"/>
++ <match type="string" value="#! /usr/local/bin/python" offset="0"/>
++ <match type="string" value='eval \"exec /usr/local/bin/python' offset="0"/>
++ <match type="string" value='/bin/env python' offset="1:16"/>
++ </magic>
++ <glob pattern="*.py"/>
++ </mime-type>
+ <mime-type type="text/x-readme">
++ <sub-class-of type="text/plain"/>
+ <_comment>README document</_comment>
+ <glob pattern="README*"/>
+ </mime-type>
+ <mime-type type="text/x-scheme">
++ <sub-class-of type="text/plain"/>
+ <_comment>Scheme source code</_comment>
+ <glob pattern="*.scm"/>
+ </mime-type>
+ <mime-type type="text/x-setext">
++ <sub-class-of type="text/plain"/>
+ <_comment>Setext document</_comment>
+ <glob pattern="*.etx"/>
+ </mime-type>
+@@ -2258,15 +2424,18 @@
+ <_comment>Speech document</_comment>
+ </mime-type>
+ <mime-type type="text/x-sql">
++ <sub-class-of type="text/plain"/>
+ <_comment>SQL code</_comment>
+ <glob pattern="*.sql"/>
+ </mime-type>
+ <mime-type type="text/x-tcl">
++ <sub-class-of type="text/plain"/>
+ <_comment>Tcl script</_comment>
+ <glob pattern="*.tcl"/>
+ <glob pattern="*.tk"/>
+ </mime-type>
+ <mime-type type="text/x-tex">
++ <sub-class-of type="text/plain"/>
+ <_comment>TeX document</_comment>
+ <glob pattern="*.tex"/>
+ <glob pattern="*.ltx"/>
+@@ -2274,6 +2443,7 @@
+ <glob pattern="*.cls"/>
+ </mime-type>
+ <mime-type type="text/x-texinfo">
++ <sub-class-of type="text/plain"/>
+ <_comment>TeXInfo document</_comment>
+ <glob pattern="*.texi"/>
+ <glob pattern="*.texinfo"/>
+@@ -2300,24 +2470,6 @@
+ <glob pattern="*.uri"/>
+ <glob pattern="*.url"/>
+ </mime-type>
+- <mime-type type="text/x-vcalendar">
+- <_comment>vCalendar interchange file</_comment>
+- <magic priority="50">
+- <match type="string" value="BEGIN:VCALENDAR" offset="0"/>
+- <match type="string" value="begin:vcalendar" offset="0"/>
+- </magic>
+- <glob pattern="*.vcs"/>
+- <glob pattern="*.vcf"/>
+- </mime-type>
+- <mime-type type="text/x-vcard">
+- <_comment>electronic business card</_comment>
+- <magic priority="50">
+- <match type="string" value="BEGIN:VCARD" offset="0"/>
+- <match type="string" value="begin:vcard" offset="0"/>
+- </magic>
+- <glob pattern="*.vct"/>
+- <glob pattern="*.gcrd"/>
+- </mime-type>
+ <mime-type type="text/x-xmi">
+ <_comment>XML Metadata Interchange file</_comment>
+ <glob pattern="*.xmi"/>
+@@ -2328,7 +2480,9 @@
+ <glob pattern="*.xslfo"/>
+ </mime-type>
+ <mime-type type="text/x-xslt">
++ <sub-class-of type="text/plain"/>
+ <_comment>XSLT stylesheet</_comment>
++ <sub-class-of type="text/xml"/>
+ <glob pattern="*.xslt"/>
+ <glob pattern="*.xsl"/>
+ </mime-type>
+@@ -2338,6 +2492,7 @@
+ </magic>
+ </mime-type>
+ <mime-type type="text/xml">
++ <sub-class-of type="text/plain"/>
+ <_comment>eXtensible Markup Language document</_comment>
+ <magic priority="50">
+ <match type="string" value="&lt;?xml" offset="0"/>
diff --git a/misc/shared-mime-info/files/patch-update-mime-database.c b/misc/shared-mime-info/files/patch-update-mime-database.c
index a9dbd47224bd..bbddab3d2097 100644
--- a/misc/shared-mime-info/files/patch-update-mime-database.c
+++ b/misc/shared-mime-info/files/patch-update-mime-database.c
@@ -1,6 +1,59 @@
---- update-mime-database.c.orig Mon Oct 13 05:43:38 2003
-+++ update-mime-database.c Sat Dec 4 15:52:53 2004
-@@ -377,7 +377,8 @@
+--- update-mime-database.c.orig Sat Mar 19 15:29:41 2005
++++ update-mime-database.c Sat Mar 19 15:29:45 2005
+@@ -94,6 +94,12 @@ static GHashTable *globs_hash = NULL;
+ /* 'magic' nodes */
+ static GPtrArray *magic_array = NULL;
+
++/* Maps MIME type names to superclass names */
++static GHashTable *subclass_hash = NULL;
++
++/* Maps aliases to Types */
++static GHashTable *alias_hash = NULL;
++
+ /* Static prototypes */
+ static Magic *magic_new(xmlNode *node, Type *type, GError **error);
+
+@@ -295,12 +301,37 @@ static gboolean process_freedesktop_node
+ {
+ char *other_type;
+ gboolean valid;
++ GSList *list, *nlist;
++
+ other_type = xmlGetNsProp(field, "type", NULL);
+ valid = other_type && strchr(other_type, '/');
+- xmlFree(other_type);
+ if (valid)
+- return FALSE; /* Copy through */
++ {
++ char *typename;
+
++ typename = g_strdup_printf("%s/%s",
++ type->media,
++ type->subtype);
++
++ if (strcmp(field->name, "alias") == 0)
++ g_hash_table_insert(alias_hash,
++ g_strdup(other_type), type);
++
++ else
++ {
++ list = g_hash_table_lookup(subclass_hash, typename);
++ nlist = g_slist_append (list, g_strdup(other_type));
++ if (list == NULL)
++ g_hash_table_insert(subclass_hash,
++ g_strdup(typename), nlist);
++ }
++ g_free(typename);
++ xmlFree(other_type);
++
++ return FALSE; /* Copy through */
++ }
++
++ xmlFree(other_type);
+ g_set_error(error, MIME_ERROR, 0,
+ _("Incorrect or missing 'type' attribute "
+ "in <%s>"), field->name);
+@@ -377,7 +408,8 @@ static void remove_old(Type *type, xmlNo
}
}
@@ -10,7 +63,7 @@
}
/* 'node' is a <mime-type> node from a source file, whose type is 'type'.
-@@ -809,7 +810,13 @@
+@@ -809,7 +841,14 @@ static void parse_int_value(int bytes, c
unsigned long value;
int b;
@@ -18,34 +71,35 @@
+ value = strtoul(in, &end, 0);
+ if (errno == ERANGE) {
+ g_set_error(error, MIME_ERROR, 0,
-+ "Number out-of-range (%s should fit in %d bytes)",
-+ in, bytes);
++ "Number out-of-range (%s should fit in %d bytes)",
++ in, bytes);
+ return;
+ }
++
if (*end != '\0')
{
g_set_error(error, MIME_ERROR, 0, "Value is not a number");
-@@ -834,9 +841,16 @@
+@@ -834,9 +873,17 @@ static void parse_int_value(int bytes, c
if (in_mask)
{
int b;
- long mask;
--
-- mask = strtol(in_mask, &end, 0);
+ unsigned long mask;
-+
+
+- mask = strtol(in_mask, &end, 0);
+ mask = strtoul(in_mask, &end, 0);
+ if (errno == ERANGE) {
+ g_set_error(error, MIME_ERROR, 0,
-+ "Mask out-of-range (%s should fit in %d bytes)",
-+ in_mask, bytes);
++ "Mask out-of-range (%s should fit in %d bytes)",
++ in_mask, bytes);
+ return;
+ }
+
++
if (*end != '\0')
{
g_set_error(error, MIME_ERROR, 0,
-@@ -847,7 +861,7 @@
+@@ -847,7 +894,7 @@ static void parse_int_value(int bytes, c
out_mask = g_new(char, bytes);
for (b = 0; b < bytes; b++)
{
@@ -54,7 +108,7 @@
out_mask[b] = (mask >> shift) & 0xff;
}
}
-@@ -991,11 +1005,32 @@
+@@ -991,11 +1038,33 @@ static void match_offset(Match *match, x
}
match->range_start = strtol(offset, &end, 10);
@@ -62,11 +116,12 @@
+ char *number;
+ number = g_strndup(offset, end-offset);
+ g_set_error(error, MIME_ERROR, 0,
-+ "Number out-of-range (%s should fit in 4 bytes)",
-+ number);
++ "Number out-of-range (%s should fit in 4 bytes)",
++ number);
+ g_free(number);
+ return;
+ }
++
if (*end == ':' && end[1] && match->range_start >= 0)
{
int last;
@@ -78,8 +133,8 @@
+ char *number;
+ number = g_strndup(begin, end-begin);
+ g_set_error(error, MIME_ERROR, 0,
-+ "Number out-of-range (%s should fit in 8 bytes)",
-+ number);
++ "Number out-of-range (%s should fit in 8 bytes)",
++ number);
+ g_free(number);
+ return;
+ }
@@ -88,7 +143,74 @@
if (*end == '\0' && last >= match->range_start)
match->range_length = last - match->range_start + 1;
else
-@@ -1330,7 +1365,7 @@
+@@ -1310,6 +1379,66 @@ static void write_namespaces(FILE *strea
+ g_ptr_array_free(lines, TRUE);
+ }
+
++static void write_subclass(gpointer key, gpointer value, gpointer data)
++{
++ GSList *list = value;
++ FILE *stream = data;
++ GSList *l;
++ char *line;
++
++ for (l = list; l; l = l->next)
++ {
++ line = g_strconcat (key, " ", l->data, "\n", NULL);
++ fwrite(line, 1, strlen(line), stream);
++ g_free (line);
++ }
++}
++
++/* Write all the collected subclass information to 'subclasses' */
++static void write_subclasses(FILE *stream)
++{
++ g_hash_table_foreach(subclass_hash, write_subclass, stream);
++}
++
++/* Extract one entry from alias_hash and put it in the GPtrArray so
++ * we can sort it.
++ */
++static void add_alias(gpointer key, gpointer value, gpointer data)
++{
++ GPtrArray *lines = (GPtrArray *) data;
++ const guchar *alias = (guchar *) key;
++ Type *type = (Type *) value;
++
++ g_ptr_array_add(lines, g_strconcat(alias, " ", type->media,
++ "/", type->subtype, "\n",
++ NULL));
++}
++
++/* Write all the collected aliases */
++static void write_aliases(FILE *stream)
++{
++ GPtrArray *lines;
++ int i;
++
++ lines = g_ptr_array_new();
++
++ g_hash_table_foreach(alias_hash, add_alias, lines);
++
++ g_ptr_array_sort(lines, strcmp2);
++
++ for (i = 0; i < lines->len; i++)
++ {
++ char *line = (char *) lines->pdata[i];
++
++ fwrite(line, 1, strlen(line), stream);
++
++ g_free(line);
++ }
++
++ g_ptr_array_free(lines, TRUE);
++}
++
++
+ /* Issue a warning if 'path' won't be found by applications */
+ static void check_in_path_xdg_data(const char *mime_path)
+ {
+@@ -1330,7 +1459,7 @@ static void check_in_path_xdg_data(const
env = getenv("XDG_DATA_DIRS");
if (!env)
@@ -97,3 +219,88 @@
dirs = g_strsplit(env, ":", 0);
g_return_if_fail(dirs != NULL);
for (n = 0; dirs[n]; n++)
+@@ -1371,6 +1500,14 @@ out:
+ g_free(path);
+ }
+
++static void free_string_list(gpointer data)
++{
++ GSList *list = data;
++
++ g_slist_foreach(list, (GFunc)g_free, NULL);
++ g_slist_free(list);
++}
++
+ int main(int argc, char **argv)
+ {
+ char *mime_dir = NULL;
+@@ -1442,7 +1579,11 @@ int main(int argc, char **argv)
+ namespace_hash = g_hash_table_new_full(g_str_hash, g_str_equal,
+ g_free, NULL);
+ magic_array = g_ptr_array_new();
+-
++ subclass_hash = g_hash_table_new_full(g_str_hash, g_str_equal,
++ g_free, free_string_list);
++ alias_hash = g_hash_table_new_full(g_str_hash, g_str_equal,
++ g_free, NULL);
++
+ scan_source_dir(package_dir);
+ g_free(package_dir);
+
+@@ -1494,7 +1635,7 @@ int main(int argc, char **argv)
+ atomic_update(magic_path);
+ g_free(magic_path);
+ }
+-
++
+ {
+ FILE *stream;
+ char *ns_path;
+@@ -1510,12 +1651,47 @@ int main(int argc, char **argv)
+ atomic_update(ns_path);
+ g_free(ns_path);
+ }
++
++ {
++ FILE *stream;
++ char *path;
++
++ path = g_strconcat(mime_dir, "/subclasses.new", NULL);
++ stream = fopen(path, "wb");
++ if (!stream)
++ g_error("Failed to open '%s' for writing\n",
++ path);
++
++ write_subclasses(stream);
++
++ atomic_update(path);
++ g_free(path);
++ }
++
++ {
++ FILE *stream;
++ char *path;
++
++ path = g_strconcat(mime_dir, "/aliases.new", NULL);
++ stream = fopen(path, "wb");
++ if (!stream)
++ g_error("Failed to open '%s' for writing\n",
++ path);
++
++ write_aliases(stream);
++
++ atomic_update(path);
++ g_free(path);
++ }
++
+
+ g_ptr_array_free(magic_array, TRUE);
+
+ g_hash_table_destroy(types);
+ g_hash_table_destroy(globs_hash);
+ g_hash_table_destroy(namespace_hash);
++ g_hash_table_destroy(subclass_hash);
++ g_hash_table_destroy(alias_hash);
+
+ g_print("***\n");
+