fix processing of cyrillic letter yo in file systems

git-svn-id: svn://kolibrios.org@1504 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Evgeny Grechnikov (Diamond) 2010-06-23 22:18:42 +00:00
parent cb55d99b40
commit 2ccee1b676
2 changed files with 21 additions and 3 deletions

View File

@ -411,6 +411,8 @@ char_toupper:
jb .ret jb .ret
cmp al, 'z' cmp al, 'z'
jbe .az jbe .az
cmp al, 'ñ'
jz .yo1
cmp al, ' ' cmp al, ' '
jb .ret jb .ret
cmp al, 'à' cmp al, 'à'
@ -426,6 +428,10 @@ char_toupper:
.az: .az:
and al, not 0x20 and al, not 0x20
ret ret
.yo1:
; 0xF1 -> 0xF0
dec ax
ret
fat_get_name: fat_get_name:
; in: edi->FAT entry ; in: edi->FAT entry

View File

@ -942,6 +942,18 @@ ntfs_decode_mcb_entry:
pop edi ecx eax pop edi ecx eax
ret 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: ntfs_find_lfn:
; in: esi+ebp -> name ; in: esi+ebp -> name
; out: CF=1 - file not found ; out: CF=1 - file not found
@ -1030,15 +1042,15 @@ ntfs_find_lfn:
push edi push edi
@@: @@:
lodsw lodsw
call uni2ansi_char call unichar_toupper
call char_toupper
push eax push eax
mov al, [edi] mov al, [edi]
inc edi inc edi
cmp al, '/' cmp al, '/'
jz .slash jz .slash
call char_toupper call char_toupper
cmp al, [esp] call ansi2uni_char
cmp ax, [esp]
pop eax pop eax
loopz @b loopz @b
jz .found jz .found