github.com/c12o16h1/go/src@v0.0.0-20200114212001-5a151c0f00ed/mime/type_plan9.go (about) 1 // Copyright 2013 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 package mime 6 7 import ( 8 "bufio" 9 "os" 10 "strings" 11 ) 12 13 func init() { 14 osInitMime = initMimePlan9 15 } 16 17 func initMimePlan9() { 18 for _, filename := range typeFiles { 19 loadMimeFile(filename) 20 } 21 } 22 23 var typeFiles = []string{ 24 "/sys/lib/mimetype", 25 } 26 27 func initMimeForTests() map[string]string { 28 typeFiles = []string{"testdata/test.types.plan9"} 29 return map[string]string{ 30 ".t1": "application/test", 31 ".t2": "text/test; charset=utf-8", 32 ".pNg": "image/png", 33 } 34 } 35 36 func loadMimeFile(filename string) { 37 f, err := os.Open(filename) 38 if err != nil { 39 return 40 } 41 defer f.Close() 42 43 scanner := bufio.NewScanner(f) 44 for scanner.Scan() { 45 fields := strings.Fields(scanner.Text()) 46 if len(fields) <= 2 || fields[0][0] != '.' { 47 continue 48 } 49 if fields[1] == "-" || fields[2] == "-" { 50 continue 51 } 52 setExtensionType(fields[0], fields[1]+"/"+fields[2]) 53 } 54 if err := scanner.Err(); err != nil { 55 panic(err) 56 } 57 }