Makefile.in: Rebuilt.

* Makefile.in: Rebuilt.
	* Makefile.am (ordinary_java_source_files): Add
        gnu/gcj/io/DefaultMimeTypes.java and gnu/gcj/io/MimeTypes.java

        * scripts/MakeDefaultMimeTypes.java: New file.
        * scripts/mime.types: New file.
	* scripts/classes.pl: Moved from top level.
        * classes.pl: Moved to scripts directory.

        * java/net/URLConnection.java: Implement guessContentTypeFromName.

        * gnu/gcj/io/MimeTypes.java: New file.
        * gnu/gcj/io/DefaultMimeTypes.java: New file.

From-SVN: r32086
This commit is contained in:
Anthony Green 2000-02-21 05:54:29 +00:00
parent 38b3a2c089
commit 06440a12a2
8 changed files with 639 additions and 54 deletions

View File

@ -522,6 +522,8 @@ built_java_source_files = java/lang/ConcreteProcess.java
## convert_source_files. If the .java file has a hand-maintained ## convert_source_files. If the .java file has a hand-maintained
## header, please list it in special_java_source_files. ## header, please list it in special_java_source_files.
ordinary_java_source_files = $(convert_source_files) \ ordinary_java_source_files = $(convert_source_files) \
gnu/gcj/io/DefaultMimeTypes.java \
gnu/gcj/io/MimeTypes.java \
gnu/gcj/jni/NativeThread.java \ gnu/gcj/jni/NativeThread.java \
gnu/gcj/runtime/MethodInvocation.java \ gnu/gcj/runtime/MethodInvocation.java \
gnu/gcj/runtime/VMClassLoader.java \ gnu/gcj/runtime/VMClassLoader.java \

View File

@ -326,6 +326,8 @@ java/awt/peer/WindowPeer.java
built_java_source_files = java/lang/ConcreteProcess.java built_java_source_files = java/lang/ConcreteProcess.java
ordinary_java_source_files = $(convert_source_files) \ ordinary_java_source_files = $(convert_source_files) \
gnu/gcj/io/DefaultMimeTypes.java \
gnu/gcj/io/MimeTypes.java \
gnu/gcj/jni/NativeThread.java \ gnu/gcj/jni/NativeThread.java \
gnu/gcj/runtime/MethodInvocation.java \ gnu/gcj/runtime/MethodInvocation.java \
gnu/gcj/runtime/VMClassLoader.java \ gnu/gcj/runtime/VMClassLoader.java \
@ -732,13 +734,12 @@ LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
DATA = $(data_DATA) $(toolexeclib_DATA) DATA = $(data_DATA) $(toolexeclib_DATA)
DIST_COMMON = README COPYING.LIB ChangeLog Makefile.am Makefile.in NEWS \ DIST_COMMON = README COPYING.LIB ChangeLog Makefile.am Makefile.in NEWS \
THANKS acconfig.h acinclude.m4 aclocal.m4 configure configure.in \ THANKS acinclude.m4 aclocal.m4 configure configure.in libgcj.spec.in
include/config.h.in include/stamp-h.in libgcj.spec.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar TAR = gtar
GZIP_ENV = --best GZIP_ENV = --best
DIST_SUBDIRS = @DIRLTDL@ testsuite gcj include @DIRLTDL@ gcj include DIST_SUBDIRS = @DIRLTDL@ testsuite gcj include @DIRLTDL@ gcj include
DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
@ -755,8 +756,10 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/gnu/gcj/convert/Output_JavaSrc.P \ .deps/gnu/gcj/convert/Output_JavaSrc.P \
.deps/gnu/gcj/convert/Output_SJIS.P .deps/gnu/gcj/convert/Output_UTF8.P \ .deps/gnu/gcj/convert/Output_SJIS.P .deps/gnu/gcj/convert/Output_UTF8.P \
.deps/gnu/gcj/convert/Output_iconv.P \ .deps/gnu/gcj/convert/Output_iconv.P \
.deps/gnu/gcj/convert/UnicodeToBytes.P .deps/gnu/gcj/jni/NativeThread.P \ .deps/gnu/gcj/convert/UnicodeToBytes.P \
.deps/gnu/gcj/math/MPN.P .deps/gnu/gcj/protocol/file/Connection.P \ .deps/gnu/gcj/io/DefaultMimeTypes.P .deps/gnu/gcj/io/MimeTypes.P \
.deps/gnu/gcj/jni/NativeThread.P .deps/gnu/gcj/math/MPN.P \
.deps/gnu/gcj/protocol/file/Connection.P \
.deps/gnu/gcj/protocol/file/Handler.P \ .deps/gnu/gcj/protocol/file/Handler.P \
.deps/gnu/gcj/protocol/http/Connection.P \ .deps/gnu/gcj/protocol/http/Connection.P \
.deps/gnu/gcj/protocol/http/Handler.P \ .deps/gnu/gcj/protocol/http/Handler.P \
@ -958,34 +961,6 @@ config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck $(SHELL) ./config.status --recheck
$(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) $(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
cd $(srcdir) && $(AUTOCONF) cd $(srcdir) && $(AUTOCONF)
include/config.h: include/stamp-h
@if test ! -f $@; then \
rm -f include/stamp-h; \
$(MAKE) include/stamp-h; \
else :; fi
include/stamp-h: $(srcdir)/include/config.h.in $(top_builddir)/config.status
cd $(top_builddir) \
&& CONFIG_FILES= CONFIG_HEADERS=include/config.h \
$(SHELL) ./config.status
@echo timestamp > include/stamp-h 2> /dev/null
$(srcdir)/include/config.h.in: @MAINTAINER_MODE_TRUE@$(srcdir)/include/stamp-h.in
@if test ! -f $@; then \
rm -f $(srcdir)/include/stamp-h.in; \
$(MAKE) $(srcdir)/include/stamp-h.in; \
else :; fi
$(srcdir)/include/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h
cd $(top_srcdir) && $(AUTOHEADER)
@echo timestamp > $(srcdir)/include/stamp-h.in 2> /dev/null
mostlyclean-hdr:
clean-hdr:
distclean-hdr:
-rm -f include/config.h
maintainer-clean-hdr:
libgcj.spec: $(top_builddir)/config.status libgcj.spec.in libgcj.spec: $(top_builddir)/config.status libgcj.spec.in
cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
@ -1309,7 +1284,7 @@ distdir: $(DISTFILES)
@for file in $(DISTFILES); do \ @for file in $(DISTFILES); do \
d=$(srcdir); \ d=$(srcdir); \
if test -d $$d/$$file; then \ if test -d $$d/$$file; then \
cp -pr $$/$$file $(distdir)/$$file; \ cp -pr $$d/$$file $(distdir)/$$file; \
else \ else \
test -f $(distdir)/$$file \ test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
@ -1424,33 +1399,31 @@ distclean-generic:
-rm -f config.cache config.log stamp-h stamp-h[0-9]* -rm -f config.cache config.log stamp-h stamp-h[0-9]*
maintainer-clean-generic: maintainer-clean-generic:
mostlyclean-am: mostlyclean-hdr mostlyclean-toolexeclibLIBRARIES \ mostlyclean-am: mostlyclean-toolexeclibLIBRARIES mostlyclean-compile \
mostlyclean-compile mostlyclean-libtool \ mostlyclean-libtool mostlyclean-toolexeclibLTLIBRARIES \
mostlyclean-toolexeclibLTLIBRARIES \
mostlyclean-binPROGRAMS mostlyclean-noinstPROGRAMS \ mostlyclean-binPROGRAMS mostlyclean-noinstPROGRAMS \
mostlyclean-tags mostlyclean-depend mostlyclean-generic mostlyclean-tags mostlyclean-depend mostlyclean-generic
mostlyclean: mostlyclean-recursive mostlyclean: mostlyclean-recursive
clean-am: clean-hdr clean-toolexeclibLIBRARIES clean-compile \ clean-am: clean-toolexeclibLIBRARIES clean-compile clean-libtool \
clean-libtool clean-toolexeclibLTLIBRARIES \ clean-toolexeclibLTLIBRARIES clean-binPROGRAMS \
clean-binPROGRAMS clean-noinstPROGRAMS clean-tags \ clean-noinstPROGRAMS clean-tags clean-depend \
clean-depend clean-generic mostlyclean-am clean-local clean-generic mostlyclean-am clean-local
clean: clean-recursive clean: clean-recursive
distclean-am: distclean-hdr distclean-toolexeclibLIBRARIES \ distclean-am: distclean-toolexeclibLIBRARIES distclean-compile \
distclean-compile distclean-libtool \ distclean-libtool distclean-toolexeclibLTLIBRARIES \
distclean-toolexeclibLTLIBRARIES distclean-binPROGRAMS \ distclean-binPROGRAMS distclean-noinstPROGRAMS \
distclean-noinstPROGRAMS distclean-tags \ distclean-tags distclean-depend distclean-generic \
distclean-depend distclean-generic clean-am clean-am
-rm -f libtool -rm -f libtool
distclean: distclean-recursive distclean: distclean-recursive
-rm -f config.status -rm -f config.status
maintainer-clean-am: maintainer-clean-hdr \ maintainer-clean-am: maintainer-clean-toolexeclibLIBRARIES \
maintainer-clean-toolexeclibLIBRARIES \
maintainer-clean-compile maintainer-clean-libtool \ maintainer-clean-compile maintainer-clean-libtool \
maintainer-clean-toolexeclibLTLIBRARIES \ maintainer-clean-toolexeclibLTLIBRARIES \
maintainer-clean-binPROGRAMS \ maintainer-clean-binPROGRAMS \
@ -1463,8 +1436,7 @@ maintainer-clean-am: maintainer-clean-hdr \
maintainer-clean: maintainer-clean-recursive maintainer-clean: maintainer-clean-recursive
-rm -f config.status -rm -f config.status
.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ .PHONY: mostlyclean-toolexeclibLIBRARIES distclean-toolexeclibLIBRARIES \
mostlyclean-toolexeclibLIBRARIES distclean-toolexeclibLIBRARIES \
clean-toolexeclibLIBRARIES maintainer-clean-toolexeclibLIBRARIES \ clean-toolexeclibLIBRARIES maintainer-clean-toolexeclibLIBRARIES \
uninstall-toolexeclibLIBRARIES install-toolexeclibLIBRARIES \ uninstall-toolexeclibLIBRARIES install-toolexeclibLIBRARIES \
mostlyclean-compile distclean-compile clean-compile \ mostlyclean-compile distclean-compile clean-compile \

View File

@ -0,0 +1,139 @@
// Do not edit this file! Create a new version with MakeDefaultMimeTypes.
/* Copyright (C) 2000 Red Hat, Inc.
This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
package gnu.gcj.io;
public class DefaultMimeTypes
{
public static final String[] types = {
"midi", "audio/midi"
, "sit", "application/x-stuffit"
, "ram", "audio/x-pn-realaudio"
, "ez", "application/andrew-inset"
, "jpeg", "image/jpeg"
, "sv4crc", "application/x-sv4crc"
, "sv4cpio", "application/x-sv4cpio"
, "txt", "text/plain"
, "spl", "application/x-futuresplash"
, "ras", "image/x-cmu-raster"
, "sh", "application/x-sh"
, "dcr", "application/x-director"
, "msh", "model/mesh"
, "swf", "application/x-shockwave-flash"
, "hdf", "application/x-hdf"
, "bcpio", "application/x-bcpio"
, "zip", "application/zip"
, "gif", "image/gif"
, "me", "application/x-troff-me"
, "gtar", "application/x-gtar"
, "tex", "application/x-tex"
, "xyz", "chemical/x-pdb"
, "hqx", "application/mac-binhex40"
, "ms", "application/x-troff-ms"
, "oda", "application/oda"
, "vcd", "application/x-cdlink"
, "aifc", "audio/x-aiff"
, "skd", "application/x-koan"
, "smil", "application/smil"
, "asc", "text/plain"
, "aiff", "audio/x-aiff"
, "xml", "text/xml"
, "tr", "application/x-troff"
, "nc", "application/x-netcdf"
, "dxr", "application/x-director"
, "skm", "application/x-koan"
, "wrl", "model/vrml"
, "tsv", "text/tab-separated-values"
, "mpeg", "video/mpeg"
, "skp", "application/x-koan"
, "src", "application/x-wais-source"
, "rpm", "application/x-rpm"
, "skt", "application/x-koan"
, "ai", "application/postscript"
, "cpt", "application/mac-compactpro"
, "mp2", "audio/mpeg"
, "man", "application/x-troff-man"
, "mp3", "audio/mpeg"
, "mesh", "model/mesh"
, "igs", "model/iges"
, "shar", "application/x-shar"
, "au", "audio/basic"
, "texi", "application/x-texinfo"
, "cpio", "application/x-cpio"
, "jpe", "image/jpeg"
, "lzh", "application/octet-stream"
, "jpg", "image/jpeg"
, "cdf", "application/x-netcdf"
, "etx", "text/x-setext"
, "texinfo", "application/x-texinfo"
, "sgml", "text/sgml"
, "roff", "application/x-troff"
, "pgm", "image/x-portable-graymap"
, "pgn", "application/x-chess-pgn"
, "bin", "application/octet-stream"
, "png", "image/png"
, "tar", "application/x-tar"
, "mid", "audio/midi"
, "mov", "video/quicktime"
, "movie", "video/x-sgi-movie"
, "mif", "application/vnd.mif"
, "pnm", "image/x-portable-anymap"
, "mpga", "audio/mpeg"
, "smi", "application/smil"
, "t", "application/x-troff"
, "tiff", "image/tiff"
, "xbm", "image/x-xbitmap"
, "htm", "text/html"
, "mpe", "video/mpeg"
, "dms", "application/octet-stream"
, "mpg", "video/mpeg"
, "lha", "application/octet-stream"
, "latex", "application/x-latex"
, "ps", "application/postscript"
, "sgm", "text/sgml"
, "tif", "image/tiff"
, "ice", "x-conference/x-cooltalk"
, "snd", "audio/basic"
, "html", "text/html"
, "pbm", "image/x-portable-bitmap"
, "xpm", "image/x-xpixmap"
, "iges", "model/iges"
, "aif", "audio/x-aiff"
, "avi", "video/x-msvideo"
, "csh", "application/x-csh"
, "wav", "audio/x-wav"
, "xwd", "image/x-xwindowdump"
, "js", "application/x-javascript"
, "silo", "model/mesh"
, "vrml", "model/vrml"
, "tcl", "application/x-tcl"
, "css", "text/css"
, "eps", "application/postscript"
, "class", "application/octet-stream"
, "qt", "video/quicktime"
, "doc", "application/msword"
, "ustar", "application/x-ustar"
, "ppm", "image/x-portable-pixmap"
, "ppt", "application/vnd.ms-powerpoint"
, "ra", "audio/x-realaudio"
, "rgb", "image/x-rgb"
, "rtf", "text/rtf"
, "kar", "audio/midi"
, "dvi", "application/x-dvi"
, "rm", "audio/x-pn-realaudio"
, "exe", "application/octet-stream"
, "pdb", "chemical/x-pdb"
, "pdf", "application/pdf"
, "rtx", "text/richtext"
, "dir", "application/x-director"
, "ief", "image/ief"
};
}

View File

@ -0,0 +1,86 @@
/* Copyright (C) 2000 Red Hat, Inc.
This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
package gnu.gcj.io;
import java.util.*;
import java.io.*;
public class MimeTypes
{
private static Hashtable mime_types;
public static void fillFromFile (Hashtable table, String fname)
throws IOException
{
LineNumberReader reader =
new LineNumberReader (new FileReader (fname));
while (reader.ready ())
{
StringTokenizer tokenizer =
new StringTokenizer (reader.readLine ());
try
{
String t = tokenizer.nextToken ();
if (! t.startsWith ("#"))
{
while (true)
{
// Read the next extension
String e = tokenizer.nextToken ();
if (! e.startsWith ("#"))
table.put (e, t);
else
break;
}
}
} catch (NoSuchElementException ex) {
// Do nothing.
}
}
}
// This is the primary interface to this class.
public static String getMimeTypeFromExtension (String extension)
{
if (mime_types == null)
{
mime_types = new Hashtable ();
// First populate the hash table with the default mime type
// mappings.
int i = DefaultMimeTypes.types.length;
while (i > 1)
{
mime_types.put (DefaultMimeTypes.types[i - 2],
DefaultMimeTypes.types[i - 1]);
i = i - 2;
}
// Now read mime types from /etc/mime.types if it exists.
// This should override the default values.
try {
fillFromFile (mime_types, "/etc/mime.types");
} catch (IOException ex) {
// Do nothing.
}
// Now read mime types from ~/.mime.types.
// FIXME: We can't currently parse this file.
}
String type = (String) mime_types.get (extension);
if (type == null)
return ("application/octet-stream");
else
return (type);
}
}

View File

@ -18,6 +18,7 @@ import java.util.Date;
import java.util.Locale; import java.util.Locale;
import java.util.Hashtable; import java.util.Hashtable;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import gnu.gcj.io.MimeTypes;
/** /**
* @author Warren Levy <warrenl@cygnus.com> * @author Warren Levy <warrenl@cygnus.com>
@ -27,7 +28,7 @@ import java.util.StringTokenizer;
/** /**
* Written using on-line Java Platform 1.2 API Specification, as well * Written using on-line Java Platform 1.2 API Specification, as well
* as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998). * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
* Status: Two guessContentTypeFrom... methods not implemented. * Status: One guessContentTypeFrom... methods not implemented.
* getContent method assumes content type from response; see comment there. * getContent method assumes content type from response; see comment there.
*/ */
@ -312,9 +313,25 @@ public abstract class URLConnection
factory = fac; factory = fac;
} }
// TODO: protected static String guessContentTypeFromName(String fname) protected static String guessContentTypeFromName(String fname)
// { {
// } int dot = fname.lastIndexOf (".");
if (dot != -1)
{
if (dot == fname.length())
return ("application/octet-stream");
else
fname = fname.substring (dot + 1);
}
String type = MimeTypes.getMimeTypeFromExtension (fname);
if (type == null)
return("application/octet-stream");
return(type);
}
// TODO: public static String guessContentTypeFromStream(InputStream is) // TODO: public static String guessContentTypeFromStream(InputStream is)
// throws IOException // throws IOException

View File

@ -0,0 +1,93 @@
/* Copyright (C) 2000 Red Hat, Inc.
This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
import gnu.gcj.io.MimeTypes;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.util.Hashtable;
import java.util.Enumeration;
import java.util.NoSuchElementException;
public class MakeDefaultMimeTypes
{
private static void fatal (String message)
{
System.err.println ("MakeDefaultMimeTypes Error: " + message);
System.exit (-1);
}
public static void main (String[] args)
{
Hashtable mime_table = new Hashtable ();
if (args.length != 1)
fatal ("missing mime type filename");
try {
MimeTypes.fillFromFile (mime_table, args[0]);
} catch (FileNotFoundException ex) {
fatal ("can't open " + args[0]);
} catch (IOException ex) {
fatal ("error reading " + args[0]);
}
System.out.println ("// Do not edit this file! Create a new version with MakeDefaultMimeTypes.\
\
/* Copyright (C) 2000 Red Hat, Inc.\
\
This file is part of libgcj.\
\
This software is copyrighted work licensed under the terms of the\
Libgcj License. Please consult the file \"LIBGCJ_LICENSE\" for\
details. */\
\
package gnu.gcj.io; \
\
public class DefaultMimeTypes\
{\
public static final String[] types = {");
Enumeration keys = mime_table.keys();
Enumeration values = mime_table.elements();
// Prepend first element with open bracket
StringBuffer result = new StringBuffer("");
try
{
result.append(" \""
+ keys.nextElement().toString()
+ "\",\t\""
+ values.nextElement().toString()
+ "\"\n");
}
catch (NoSuchElementException ex)
{
}
// Prepend subsequent elements with ", "
try
{
while (true)
result.append(" , \""
+ keys.nextElement().toString()
+ "\",\t\""
+ values.nextElement().toString()
+ "\"\n");
}
catch (NoSuchElementException ex)
{
}
// Append last element with closing bracket
result.append(" };\
}\
");
System.out.println(result);
}
}

276
libjava/scripts/mime.types Normal file
View File

@ -0,0 +1,276 @@
# This is the default mime.types file from the Apache web server distribution
# This file controls what Internet media types are sent to the client for
# given file extension(s). Sending the correct media type to the client
# is important so they know how to handle the content of the file.
# Extra types can either be added here or by using an AddType directive
# in your config files. For more information about Internet media types,
# please read RFC 2045, 2046, 2047, 2048, and 2077. The Internet media type
# registry is at <ftp://ftp.iana.org/in-notes/iana/assignments/media-types/>.
# MIME type Extension
application/EDI-Consent
application/EDI-X12
application/EDIFACT
application/activemessage
application/andrew-inset ez
application/applefile
application/atomicmail
application/cals-1840
application/commonground
application/cybercash
application/dca-rft
application/dec-dx
application/eshop
application/hyperstudio
application/iges
application/mac-binhex40 hqx
application/mac-compactpro cpt
application/macwriteii
application/marc
application/mathematica
application/msword doc
application/news-message-id
application/news-transmission
application/octet-stream bin dms lha lzh exe class
application/oda oda
application/pdf pdf
application/pgp-encrypted
application/pgp-keys
application/pgp-signature
application/pkcs10
application/pkcs7-mime
application/pkcs7-signature
application/postscript ai eps ps
application/prs.alvestrand.titrax-sheet
application/prs.cww
application/prs.nprend
application/remote-printing
application/riscos
application/rtf rtf
application/set-payment
application/set-payment-initiation
application/set-registration
application/set-registration-initiation
application/sgml
application/sgml-open-catalog
application/slate
application/smil smi smil
application/vemmi
application/vnd.3M.Post-it-Notes
application/vnd.FloGraphIt
application/vnd.acucobol
application/vnd.anser-web-certificate-issue-initiation
application/vnd.anser-web-funds-transfer-initiation
application/vnd.audiograph
application/vnd.businessobjects
application/vnd.claymore
application/vnd.comsocaller
application/vnd.dna
application/vnd.dxr
application/vnd.ecdis-update
application/vnd.ecowin.chart
application/vnd.ecowin.filerequest
application/vnd.ecowin.fileupdate
application/vnd.ecowin.series
application/vnd.ecowin.seriesrequest
application/vnd.ecowin.seriesupdate
application/vnd.enliven
application/vnd.epson.salt
application/vnd.fdf
application/vnd.ffsns
application/vnd.framemaker
application/vnd.fujitsu.oasys
application/vnd.fujitsu.oasys2
application/vnd.fujitsu.oasys3
application/vnd.fujitsu.oasysgp
application/vnd.fujitsu.oasysprs
application/vnd.fujixerox.docuworks
application/vnd.hp-HPGL
application/vnd.hp-PCL
application/vnd.hp-PCLXL
application/vnd.hp-hps
application/vnd.ibm.MiniPay
application/vnd.ibm.modcap
application/vnd.intercon.formnet
application/vnd.intertrust.digibox
application/vnd.intertrust.nncp
application/vnd.is-xpr
application/vnd.japannet-directory-service
application/vnd.japannet-jpnstore-wakeup
application/vnd.japannet-payment-wakeup
application/vnd.japannet-registration
application/vnd.japannet-registration-wakeup
application/vnd.japannet-setstore-wakeup
application/vnd.japannet-verification
application/vnd.japannet-verification-wakeup
application/vnd.koan
application/vnd.lotus-1-2-3
application/vnd.lotus-approach
application/vnd.lotus-freelance
application/vnd.lotus-organizer
application/vnd.lotus-screencam
application/vnd.lotus-wordpro
application/vnd.meridian-slingshot
application/vnd.mif mif
application/vnd.minisoft-hp3000-save
application/vnd.mitsubishi.misty-guard.trustweb
application/vnd.ms-artgalry
application/vnd.ms-asf
application/vnd.ms-excel
application/vnd.ms-powerpoint ppt
application/vnd.ms-project
application/vnd.ms-tnef
application/vnd.ms-works
application/vnd.music-niff
application/vnd.musician
application/vnd.netfpx
application/vnd.noblenet-directory
application/vnd.noblenet-sealer
application/vnd.noblenet-web
application/vnd.novadigm.EDM
application/vnd.novadigm.EDX
application/vnd.novadigm.EXT
application/vnd.osa.netdeploy
application/vnd.powerbuilder6
application/vnd.powerbuilder6-s
application/vnd.rapid
application/vnd.seemail
application/vnd.shana.informed.formtemplate
application/vnd.shana.informed.interchange
application/vnd.shana.informed.package
application/vnd.street-stream
application/vnd.svd
application/vnd.swiftview-ics
application/vnd.truedoc
application/vnd.visio
application/vnd.webturbo
application/vnd.wrq-hp3000-labelled
application/vnd.wt.stf
application/vnd.xara
application/vnd.yellowriver-custom-menu
application/wita
application/wordperfect5.1
application/x-bcpio bcpio
application/x-cdlink vcd
application/x-chess-pgn pgn
application/x-compress
application/x-cpio cpio
application/x-csh csh
application/x-director dcr dir dxr
application/x-dvi dvi
application/x-futuresplash spl
application/x-gtar gtar
application/x-gzip
application/x-hdf hdf
application/x-javascript js
application/x-koan skp skd skt skm
application/x-latex latex
application/x-netcdf nc cdf
# The standard is that rpm is audio/x-pn-realaudio-plugin... oh well...
application/x-rpm rpm
application/x-sh sh
application/x-shar shar
application/x-shockwave-flash swf
application/x-stuffit sit
application/x-sv4cpio sv4cpio
application/x-sv4crc sv4crc
application/x-tar tar
application/x-tcl tcl
application/x-tex tex
application/x-texinfo texinfo texi
application/x-troff t tr roff
application/x-troff-man man
application/x-troff-me me
application/x-troff-ms ms
application/x-ustar ustar
application/x-wais-source src
application/x400-bp
application/xml
application/zip zip
audio/32kadpcm
audio/basic au snd
audio/midi mid midi kar
audio/mpeg mpga mp2 mp3
audio/vnd.qcelp
audio/x-aiff aif aiff aifc
audio/x-pn-realaudio ram rm
audio/x-realaudio ra
audio/x-wav wav
chemical/x-pdb pdb xyz
image/cgm
image/g3fax
image/gif gif
image/ief ief
image/jpeg jpeg jpg jpe
image/naplps
image/png png
image/prs.btif
image/tiff tiff tif
image/vnd.dwg
image/vnd.dxf
image/vnd.fpx
image/vnd.net-fpx
image/vnd.svf
image/vnd.xiff
image/x-cmu-raster ras
image/x-portable-anymap pnm
image/x-portable-bitmap pbm
image/x-portable-graymap pgm
image/x-portable-pixmap ppm
image/x-rgb rgb
image/x-xbitmap xbm
image/x-xpixmap xpm
image/x-xwindowdump xwd
message/delivery-status
message/disposition-notification
message/external-body
message/http
message/news
message/partial
message/rfc822
model/iges igs iges
model/mesh msh mesh silo
model/vnd.dwf
model/vrml wrl vrml
multipart/alternative
multipart/appledouble
multipart/byteranges
multipart/digest
multipart/encrypted
multipart/form-data
multipart/header-set
multipart/mixed
multipart/parallel
multipart/related
multipart/report
multipart/signed
multipart/voice-message
text/css css
text/directory
text/enriched
text/html html htm
text/plain asc txt
text/prs.lines.tag
text/rfc822-headers
text/richtext rtx
text/rtf rtf
text/sgml sgml sgm
text/tab-separated-values tsv
text/uri-list
text/vnd.abc
text/vnd.flatland.3dml
text/vnd.fmi.flexstor
text/vnd.in3d.3dml
text/vnd.in3d.spot
text/vnd.latex-z
text/x-setext etx
text/xml xml
video/mpeg mpeg mpg mpe
video/quicktime qt mov
video/vnd.motorola.video
video/vnd.motorola.videop
video/vnd.vivo
video/x-msvideo avi
video/x-sgi-movie movie
x-conference/x-cooltalk ice