diff --git a/kernel/trunk/blkdev/rd.inc b/kernel/trunk/blkdev/rd.inc index 2b6b49d12d..8227c20b1b 100644 --- a/kernel/trunk/blkdev/rd.inc +++ b/kernel/trunk/blkdev/rd.inc @@ -411,6 +411,8 @@ char_toupper: jb .ret cmp al, 'z' jbe .az + cmp al, 'ñ' + jz .yo1 cmp al, ' ' jb .ret cmp al, 'à' @@ -426,6 +428,10 @@ char_toupper: .az: and al, not 0x20 ret +.yo1: +; 0xF1 -> 0xF0 + dec ax + ret fat_get_name: ; in: edi->FAT entry diff --git a/kernel/trunk/fs/ntfs.inc b/kernel/trunk/fs/ntfs.inc index ed7e6017b2..9e62db6be0 100644 --- a/kernel/trunk/fs/ntfs.inc +++ b/kernel/trunk/fs/ntfs.inc @@ -942,6 +942,18 @@ ntfs_decode_mcb_entry: pop edi ecx eax ret +unichar_toupper: + push eax + call uni2ansi_char + cmp al, '_' + jz .unk + add esp, 4 + call char_toupper + jmp ansi2uni_char +.unk: + pop eax + ret + ntfs_find_lfn: ; in: esi+ebp -> name ; out: CF=1 - file not found @@ -1030,15 +1042,15 @@ ntfs_find_lfn: push edi @@: lodsw - call uni2ansi_char - call char_toupper + call unichar_toupper push eax mov al, [edi] inc edi cmp al, '/' jz .slash call char_toupper - cmp al, [esp] + call ansi2uni_char + cmp ax, [esp] pop eax loopz @b jz .found