)]}'
{"metropolis/pkg/fat32/fat32.go":[{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"d304c46f8c1555db8cf84adc09e504ff8afdfaa4","unresolved":true,"context_lines":[{"line_number":270,"context_line":"\tfor j, part :\u003d range pathParts {"},{"line_number":271,"context_line":"\t\tvar childExists bool"},{"line_number":272,"context_line":"\t\tfor _, child :\u003d range inodeRef.Children {"},{"line_number":273,"context_line":"\t\t\tif strings.EqualFold(child.Name, part) {"},{"line_number":274,"context_line":"\t\t\t\tinodeRef \u003d child"},{"line_number":275,"context_line":"\t\t\t\tchildExists \u003d true"},{"line_number":276,"context_line":"\t\t\t\tbreak"}],"source_content_type":"text/x-go","patch_set":1,"id":"86f45635_f58a951e","line":273,"range":{"start_line":273,"start_character":6,"end_line":273,"end_character":43},"updated":"2024-04-22 09:19:12.000000000","message":"Not sure we want this? According to docs, this is more generic than plain lowercasing (`EqualFold(\"ß\", \"ss\") \u003d\u003d true`).\n\nCC @lorenz@monogon.tech","commit_id":"374f93cc580ad06cd68c5b5c3b06acab14358e5b"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"5b9d548f3329653b609c388f91cffc46b18a3324","unresolved":false,"context_lines":[{"line_number":270,"context_line":"\tfor j, part :\u003d range pathParts {"},{"line_number":271,"context_line":"\t\tvar childExists bool"},{"line_number":272,"context_line":"\t\tfor _, child :\u003d range inodeRef.Children {"},{"line_number":273,"context_line":"\t\t\tif strings.EqualFold(child.Name, part) {"},{"line_number":274,"context_line":"\t\t\t\tinodeRef \u003d child"},{"line_number":275,"context_line":"\t\t\t\tchildExists \u003d true"},{"line_number":276,"context_line":"\t\t\t\tbreak"}],"source_content_type":"text/x-go","patch_set":1,"id":"441b46ae_3bc889ee","line":273,"range":{"start_line":273,"start_character":6,"end_line":273,"end_character":43},"in_reply_to":"12764fbf_72860cf0","updated":"2024-04-22 17:54:10.000000000","message":"Acknowledged","commit_id":"374f93cc580ad06cd68c5b5c3b06acab14358e5b"},{"author":{"_account_id":1000001,"name":"Lorenz Brun","display_name":"Lorenz","email":"lorenz@monogon.tech","username":"lorenz","avatars":[{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/75c04f6e9881c24ee621fba80667eed8.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"6de259bf57630878e76ac1e1def008116959c4f8","unresolved":true,"context_lines":[{"line_number":270,"context_line":"\tfor j, part :\u003d range pathParts {"},{"line_number":271,"context_line":"\t\tvar childExists bool"},{"line_number":272,"context_line":"\t\tfor _, child :\u003d range inodeRef.Children {"},{"line_number":273,"context_line":"\t\t\tif strings.EqualFold(child.Name, part) {"},{"line_number":274,"context_line":"\t\t\t\tinodeRef \u003d child"},{"line_number":275,"context_line":"\t\t\t\tchildExists \u003d true"},{"line_number":276,"context_line":"\t\t\t\tbreak"}],"source_content_type":"text/x-go","patch_set":1,"id":"12764fbf_72860cf0","line":273,"range":{"start_line":273,"start_character":6,"end_line":273,"end_character":43},"in_reply_to":"86f45635_f58a951e","updated":"2024-04-22 10:22:26.000000000","message":"Case-insensitivity on FAT is a mess. Originally FAT was all-uppercase with a codepage-defined encoding (but with no indication of what codepage this was). Then LFN aka vfat came along and allowed UCS-2 filenames (which kind of became UTF-16 at some point but only mostly, EDK II still has some issues with UTF-16). Windows treated (and still does mostly) all filesystems as case-insensitive. NTFS and exFAT have the casefolding table in the filesystem superblock as Microsoft does not use a table with stability guarantees (like the Unicode CaseFold table) and their table is locale-dependent. EDK II uses a locale-aware casefolding implementation, their english reference implementation just ignores all non-ASCII casefolding [1]. So basically there is no good way of doing it.\n\nI see one advantage to using EqualFold over ToLower and that is that Unicode guarantees stability of it for most codepoints.\n\n\n[1] https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/UnicodeCollationEng.c#L178","commit_id":"374f93cc580ad06cd68c5b5c3b06acab14358e5b"}]}
