blob: 97b9aeba7a3dc8916fb41b391d1e4cbb5e8ebde7 [file] [log] [blame]
Alex Brainmanac17fd42011-11-18 10:07:36 +11001// 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
5package mime
6
7import (
Alex Brainman89454b12015-04-23 15:04:35 +10008 "internal/syscall/windows/registry"
Alex Brainmanac17fd42011-11-18 10:07:36 +11009)
10
Brad Fitzpatrickb86f3932015-03-29 21:21:15 +020011func init() {
12 osInitMime = initMimeWindows
13}
14
15func initMimeWindows() {
Alex Brainman89454b12015-04-23 15:04:35 +100016 names, err := registry.CLASSES_ROOT.ReadSubKeyNames(-1)
17 if err != nil {
Alex Brainmanac17fd42011-11-18 10:07:36 +110018 return
19 }
Alex Brainman89454b12015-04-23 15:04:35 +100020 for _, name := range names {
21 if len(name) < 2 || name[0] != '.' { // looking for extensions only
Alex Brainmanac17fd42011-11-18 10:07:36 +110022 continue
23 }
Alex Brainman89454b12015-04-23 15:04:35 +100024 k, err := registry.OpenKey(registry.CLASSES_ROOT, name, registry.READ)
25 if err != nil {
Alex Brainmanac17fd42011-11-18 10:07:36 +110026 continue
27 }
Alex Brainman89454b12015-04-23 15:04:35 +100028 v, _, err := k.GetStringValue("Content Type")
29 k.Close()
30 if err != nil {
Alex Brainmanac17fd42011-11-18 10:07:36 +110031 continue
32 }
Alex Brainman89454b12015-04-23 15:04:35 +100033 setExtensionType(name, v)
Alex Brainmanac17fd42011-11-18 10:07:36 +110034 }
35}
36
37func initMimeForTests() map[string]string {
38 return map[string]string{
Jeff R. Allenaf12dc52014-08-28 08:22:54 -070039 ".PnG": "image/png",
Alex Brainmanac17fd42011-11-18 10:07:36 +110040 }
41}