...

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 aix darwin dragonfly freebsd js,wasm linux nacl netbsd openbsd solaris
     6	
     7	package mime
     8	
     9	import (
    10		"bufio"
    11		"os"
    12		"strings"
    13	)
    14	
    15	func init() {
    16		osInitMime = initMimeUnix
    17	}
    18	
    19	var typeFiles = []string{
    20		"/etc/mime.types",
    21		"/etc/apache2/mime.types",
    22		"/etc/apache/mime.types",
    23	}
    24	
    25	func loadMimeFile(filename string) {
    26		f, err := os.Open(filename)
    27		if err != nil {
    28			return
    29		}
    30		defer f.Close()
    31	
    32		scanner := bufio.NewScanner(f)
    33		for scanner.Scan() {
    34			fields := strings.Fields(scanner.Text())
    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		if err := scanner.Err(); err != nil {
    47			panic(err)
    48		}
    49	}
    50	
    51	func initMimeUnix() {
    52		for _, filename := range typeFiles {
    53			loadMimeFile(filename)
    54		}
    55	}
    56	
    57	func initMimeForTests() map[string]string {
    58		typeFiles = []string{"testdata/test.types"}
    59		return map[string]string{
    60			".T1":  "application/test",
    61			".t2":  "text/test; charset=utf-8",
    62			".png": "image/png",
    63		}
    64	}
    65	

View as plain text