aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorAnthony Green <green@gcc.gnu.org>2000-02-21 05:54:29 +0000
committerAnthony Green <green@gcc.gnu.org>2000-02-21 05:54:29 +0000
commit06440a12a2aba035710fe478b88f6224d77b5815 (patch)
tree5348c0d2f6947295be47163fd566b9b5264a8749 /libjava
parent38b3a2c089296350450e5dc0db2c279529fa6909 (diff)
downloadgcc-06440a12a2aba035710fe478b88f6224d77b5815.zip
gcc-06440a12a2aba035710fe478b88f6224d77b5815.tar.gz
gcc-06440a12a2aba035710fe478b88f6224d77b5815.tar.bz2
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
Diffstat (limited to 'libjava')
-rw-r--r--libjava/Makefile.am2
-rw-r--r--libjava/Makefile.in72
-rw-r--r--libjava/gnu/gcj/io/DefaultMimeTypes.java139
-rw-r--r--libjava/gnu/gcj/io/MimeTypes.java86
-rw-r--r--libjava/java/net/URLConnection.java25
-rw-r--r--libjava/scripts/MakeDefaultMimeTypes.java93
-rw-r--r--libjava/scripts/classes.pl (renamed from libjava/classes.pl)0
-rw-r--r--libjava/scripts/mime.types276
8 files changed, 639 insertions, 54 deletions
diff --git a/libjava/Makefile.am b/libjava/Makefile.am
index c22a2c8..3fa4841 100644
--- a/libjava/Makefile.am
+++ b/libjava/Makefile.am
@@ -522,6 +522,8 @@ built_java_source_files = java/lang/ConcreteProcess.java
## convert_source_files. If the .java file has a hand-maintained
## header, please list it in special_java_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/runtime/MethodInvocation.java \
gnu/gcj/runtime/VMClassLoader.java \
diff --git a/libjava/Makefile.in b/libjava/Makefile.in
index dada6e9..0185881 100644
--- a/libjava/Makefile.in
+++ b/libjava/Makefile.in
@@ -326,6 +326,8 @@ java/awt/peer/WindowPeer.java
built_java_source_files = java/lang/ConcreteProcess.java
ordinary_java_source_files = $(convert_source_files) \
+gnu/gcj/io/DefaultMimeTypes.java \
+gnu/gcj/io/MimeTypes.java \
gnu/gcj/jni/NativeThread.java \
gnu/gcj/runtime/MethodInvocation.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)
DIST_COMMON = README COPYING.LIB ChangeLog Makefile.am Makefile.in NEWS \
-THANKS acconfig.h acinclude.m4 aclocal.m4 configure configure.in \
-include/config.h.in include/stamp-h.in libgcj.spec.in
+THANKS acinclude.m4 aclocal.m4 configure configure.in libgcj.spec.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-TAR = tar
+TAR = gtar
GZIP_ENV = --best
DIST_SUBDIRS = @DIRLTDL@ testsuite gcj include @DIRLTDL@ gcj include
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_SJIS.P .deps/gnu/gcj/convert/Output_UTF8.P \
.deps/gnu/gcj/convert/Output_iconv.P \
-.deps/gnu/gcj/convert/UnicodeToBytes.P .deps/gnu/gcj/jni/NativeThread.P \
-.deps/gnu/gcj/math/MPN.P .deps/gnu/gcj/protocol/file/Connection.P \
+.deps/gnu/gcj/convert/UnicodeToBytes.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/http/Connection.P \
.deps/gnu/gcj/protocol/http/Handler.P \
@@ -958,34 +961,6 @@ config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
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
cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
@@ -1309,7 +1284,7 @@ distdir: $(DISTFILES)
@for file in $(DISTFILES); do \
d=$(srcdir); \
if test -d $$d/$$file; then \
- cp -pr $$/$$file $(distdir)/$$file; \
+ cp -pr $$d/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| 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]*
maintainer-clean-generic:
-mostlyclean-am: mostlyclean-hdr mostlyclean-toolexeclibLIBRARIES \
- mostlyclean-compile mostlyclean-libtool \
- mostlyclean-toolexeclibLTLIBRARIES \
+mostlyclean-am: mostlyclean-toolexeclibLIBRARIES mostlyclean-compile \
+ mostlyclean-libtool mostlyclean-toolexeclibLTLIBRARIES \
mostlyclean-binPROGRAMS mostlyclean-noinstPROGRAMS \
mostlyclean-tags mostlyclean-depend mostlyclean-generic
mostlyclean: mostlyclean-recursive
-clean-am: clean-hdr clean-toolexeclibLIBRARIES clean-compile \
- clean-libtool clean-toolexeclibLTLIBRARIES \
- clean-binPROGRAMS clean-noinstPROGRAMS clean-tags \
- clean-depend clean-generic mostlyclean-am clean-local
+clean-am: clean-toolexeclibLIBRARIES clean-compile clean-libtool \
+ clean-toolexeclibLTLIBRARIES clean-binPROGRAMS \
+ clean-noinstPROGRAMS clean-tags clean-depend \
+ clean-generic mostlyclean-am clean-local
clean: clean-recursive
-distclean-am: distclean-hdr distclean-toolexeclibLIBRARIES \
- distclean-compile distclean-libtool \
- distclean-toolexeclibLTLIBRARIES distclean-binPROGRAMS \
- distclean-noinstPROGRAMS distclean-tags \
- distclean-depend distclean-generic clean-am
+distclean-am: distclean-toolexeclibLIBRARIES distclean-compile \
+ distclean-libtool distclean-toolexeclibLTLIBRARIES \
+ distclean-binPROGRAMS distclean-noinstPROGRAMS \
+ distclean-tags distclean-depend distclean-generic \
+ clean-am
-rm -f libtool
distclean: distclean-recursive
-rm -f config.status
-maintainer-clean-am: maintainer-clean-hdr \
- maintainer-clean-toolexeclibLIBRARIES \
+maintainer-clean-am: maintainer-clean-toolexeclibLIBRARIES \
maintainer-clean-compile maintainer-clean-libtool \
maintainer-clean-toolexeclibLTLIBRARIES \
maintainer-clean-binPROGRAMS \
@@ -1463,8 +1436,7 @@ maintainer-clean-am: maintainer-clean-hdr \
maintainer-clean: maintainer-clean-recursive
-rm -f config.status
-.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \
-mostlyclean-toolexeclibLIBRARIES distclean-toolexeclibLIBRARIES \
+.PHONY: mostlyclean-toolexeclibLIBRARIES distclean-toolexeclibLIBRARIES \
clean-toolexeclibLIBRARIES maintainer-clean-toolexeclibLIBRARIES \
uninstall-toolexeclibLIBRARIES install-toolexeclibLIBRARIES \
mostlyclean-compile distclean-compile clean-compile \
diff --git a/libjava/gnu/gcj/io/DefaultMimeTypes.java b/libjava/gnu/gcj/io/DefaultMimeTypes.java
new file mode 100644
index 0000000..e25fe88
--- /dev/null
+++ b/libjava/gnu/gcj/io/DefaultMimeTypes.java
@@ -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"
+ };
+}
+
diff --git a/libjava/gnu/gcj/io/MimeTypes.java b/libjava/gnu/gcj/io/MimeTypes.java
new file mode 100644
index 0000000..36d3eb8
--- /dev/null
+++ b/libjava/gnu/gcj/io/MimeTypes.java
@@ -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);
+ }
+}
diff --git a/libjava/java/net/URLConnection.java b/libjava/java/net/URLConnection.java
index 79547ee..a9b42e9 100644
--- a/libjava/java/net/URLConnection.java
+++ b/libjava/java/net/URLConnection.java
@@ -18,6 +18,7 @@ import java.util.Date;
import java.util.Locale;
import java.util.Hashtable;
import java.util.StringTokenizer;
+import gnu.gcj.io.MimeTypes;
/**
* @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
* 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.
*/
@@ -312,9 +313,25 @@ public abstract class URLConnection
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)
// throws IOException
diff --git a/libjava/scripts/MakeDefaultMimeTypes.java b/libjava/scripts/MakeDefaultMimeTypes.java
new file mode 100644
index 0000000..a84c4a4
--- /dev/null
+++ b/libjava/scripts/MakeDefaultMimeTypes.java
@@ -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);
+ }
+}
diff --git a/libjava/classes.pl b/libjava/scripts/classes.pl
index 05f9133..05f9133 100644
--- a/libjava/classes.pl
+++ b/libjava/scripts/classes.pl
diff --git a/libjava/scripts/mime.types b/libjava/scripts/mime.types
new file mode 100644
index 0000000..d6819023
--- /dev/null
+++ b/libjava/scripts/mime.types
@@ -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