From 43a123c1ae6613b3efeed291fa552ecd909d3acf Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Tue, 16 Apr 2024 21:23:18 +0200 Subject: Adding upstream version 1.20.14. Signed-off-by: Daniel Baumann --- src/mime/type_windows.go | 52 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/mime/type_windows.go (limited to 'src/mime/type_windows.go') diff --git a/src/mime/type_windows.go b/src/mime/type_windows.go new file mode 100644 index 0000000..9380214 --- /dev/null +++ b/src/mime/type_windows.go @@ -0,0 +1,52 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package mime + +import ( + "internal/syscall/windows/registry" +) + +func init() { + osInitMime = initMimeWindows +} + +func initMimeWindows() { + names, err := registry.CLASSES_ROOT.ReadSubKeyNames() + if err != nil { + return + } + for _, name := range names { + if len(name) < 2 || name[0] != '.' { // looking for extensions only + continue + } + k, err := registry.OpenKey(registry.CLASSES_ROOT, name, registry.READ) + if err != nil { + continue + } + v, _, err := k.GetStringValue("Content Type") + k.Close() + if err != nil { + continue + } + + // There is a long-standing problem on Windows: the + // registry sometimes records that the ".js" extension + // should be "text/plain". See issue #32350. While + // normally local configuration should override + // defaults, this problem is common enough that we + // handle it here by ignoring that registry setting. + if name == ".js" && (v == "text/plain" || v == "text/plain; charset=utf-8") { + continue + } + + setExtensionType(name, v) + } +} + +func initMimeForTests() map[string]string { + return map[string]string{ + ".PnG": "image/png", + } +} -- cgit v1.2.3