src/pkg/mime/type_unix.go - The Go Programming Language

Golang

Source file src/pkg/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 freebsd linux netbsd openbsd plan9
     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	
    27		reader := bufio.NewReader(f)
    28		for {
    29			line, err := reader.ReadString('\n')
    30			if err != nil {
    31				f.Close()
    32				return
    33			}
    34			fields := strings.Fields(line)
    35			if len(fields) <= 1 || fields[0][0] == '#' {
    36				continue
    37			}
    38			mimeType := fields[0]
    39			for _, ext := range fields[1:] {
    40				if ext[0] == '#' {
    41					break
    42				}
    43				setExtensionType("."+ext, mimeType)
    44			}
    45		}
    46	}
    47	
    48	func initMime() {
    49		for _, filename := range typeFiles {
    50			loadMimeFile(filename)
    51		}
    52	}
    53	
    54	func initMimeForTests() map[string]string {
    55		typeFiles = []string{"test.types"}
    56		return map[string]string{
    57			".t1":  "application/test",
    58			".t2":  "text/test; charset=utf-8",
    59			".png": "image/png",
    60		}
    61	}