libgo, compiler: Upgrade libgo to Go 1.4, except for runtime.
[gcc.git] / libgo / go / mime / type_unix.go
1 // Copyright 2010 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 // +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris
6
7 package mime
8
9 import (
10 "bufio"
11 "os"
12 "strings"
13 )
14
15 var typeFiles = []string{
16 "/etc/mime.types",
17 "/etc/apache2/mime.types",
18 "/etc/apache/mime.types",
19 }
20
21 func loadMimeFile(filename string) {
22 f, err := os.Open(filename)
23 if err != nil {
24 return
25 }
26 defer f.Close()
27
28 scanner := bufio.NewScanner(f)
29 for scanner.Scan() {
30 fields := strings.Fields(scanner.Text())
31 if len(fields) <= 1 || fields[0][0] == '#' {
32 continue
33 }
34 mimeType := fields[0]
35 for _, ext := range fields[1:] {
36 if ext[0] == '#' {
37 break
38 }
39 setExtensionType("."+ext, mimeType)
40 }
41 }
42 if err := scanner.Err(); err != nil {
43 panic(err)
44 }
45 }
46
47 func initMime() {
48 for _, filename := range typeFiles {
49 loadMimeFile(filename)
50 }
51 }
52
53 func initMimeForTests() map[string]string {
54 typeFiles = []string{"testdata/test.types"}
55 return map[string]string{
56 ".T1": "application/test",
57 ".t2": "text/test; charset=utf-8",
58 ".png": "image/png",
59 }
60 }