* Makefile.in: Rebuilt.
authorgreen <green@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 21 Feb 2000 05:54:29 +0000 (05:54 +0000)
committergreen <green@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 21 Feb 2000 05:54:29 +0000 (05:54 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@32086 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/Makefile.am
libjava/Makefile.in
libjava/gnu/gcj/io/DefaultMimeTypes.java [new file with mode: 0644]
libjava/gnu/gcj/io/MimeTypes.java [new file with mode: 0644]
libjava/java/net/URLConnection.java
libjava/scripts/MakeDefaultMimeTypes.java [new file with mode: 0644]
libjava/scripts/classes.pl [moved from libjava/classes.pl with 100% similarity]
libjava/scripts/mime.types [new file with mode: 0644]

index c22a2c8..3fa4841 100644 (file)
@@ -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 \
index dada6e9..0185881 100644 (file)
@@ -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 (file)
index 0000000..e25fe88
--- /dev/null
@@ -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 (file)
index 0000000..36d3eb8
--- /dev/null
@@ -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);
+  }
+}
index 79547ee..a9b42e9 100644 (file)
@@ -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 (file)
index 0000000..a84c4a4
--- /dev/null
@@ -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/scripts/mime.types b/libjava/scripts/mime.types
new file mode 100644 (file)
index 0000000..d681902
--- /dev/null
@@ -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