87 lines
1.9 KiB
Java
87 lines
1.9 KiB
Java
/* Copyright (C) 2000 Free Software Foundation
|
|
|
|
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 != null) && (! 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);
|
|
}
|
|
}
|