Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 6797 → Rev 6798

/kernel/trunk/fs/fs_lfn.inc
38,31 → 38,30
mov [image_of_ebx], ebx
ret
 
fileSystemUnicode:
; in: ebx -> f.80 parameter structure
mov edi, [ebx+20]
mov esi, [ebx+24]
jmp @f
 
file_system_lfn:
; in: ebx -> parameter structure
lea ebp, [ebx+20]
cmp byte [ebp], 0
; in: ebx -> f.70 parameter structure
xor edi, edi
lea esi, [ebx+20]
cmp byte [esi], 0
jnz @f
mov ebp, [ebx+21]
mov esi, [ebx+21]
@@:
cmp word [ebp], '/'
jz .rootdir
cmp byte [ebp], 4
jnc @f
cmp byte [ebp], 0
jz @f
cmp word [ebp+1], '/'
cmp word [esi], '/'
jnz @f
cmp byte [ebp], 2
cmp edi, 2
jnz .rootdir
cmp word [ebp+3], 0
cmp dword[esi], '/'
jz .rootdir
@@:
stdcall kernel_alloc, maxPathLength
push eax ebx
xchg eax, edi
mov esi, ebp
xor eax, eax
call getFullPath
pop ebx ebp
test eax, eax
367,9 → 366,11
lodsb
test al, al
jz .cont
or al, 20h
scasb
jz @b
or al, 20h
cmp [edi-1], al
jz @b
.cont:
pop edi esi
inc edi
397,6 → 398,7
sys_current_directory: ; sysfunction 30
mov eax, [current_slot]
mov edi, [eax+APPDATA.cur_dir]
xor eax, eax
dec ebx
jz .set
dec ebx
403,8 → 405,12
jz .get
dec ebx
jz .mount_additional_directory
mov eax, edx
dec ebx
jz .get16
jz .set
mov eax, esi
dec ebx
jz .get
@@:
ret
 
416,26 → 422,17
jnz @b
mov esi, ecx
mov edi, sysdir_name1
mov ecx, 63
mov ecx, 64
rep movsb ; copying fake directory name
inc esi
xor eax, eax
stosb ; terminator of name, in case if we get the inlet trash
mov byte [edi-1], 0
mov cl, 63
cmp word [esi], 2
jz .utf16
call cp866toUTF8_string
@@:
mov byte [edi], 0
mov [full_file_name_table.size], 2
ret
 
.utf16:
add esi, 2
call UTF16to8_string
jmp @b
 
.get: ; in: ecx -> buffer, edx = length
.get:
; in: ecx -> buffer, edx = length, eax = encoding
mov esi, edi
inc esi
mov edi, ecx
444,6 → 441,11
mov edx, maxPathLength
@@:
mov ecx, edx
jecxz .ret
cmp eax, 2
jz .get16
cmp eax, 3
jz .get8
@@:
dec ecx
js @f
453,21 → 455,26
test al, al
jnz @b
sub edx, ecx
mov ecx, edx
@@:
mov [esp+32], ecx
mov byte [edi-1], 0
.ret:
mov [esp+32], edx
ret
 
.get8:
push edi
mov edi, esi
xor eax, eax
repnz scasb
sub edx, ecx
mov ecx, edx
pop edi
rep movsb
jmp @b
 
.get16:
mov esi, edi
inc esi
mov edi, ecx
cmp edx, maxPathLength
jc @f
mov edx, maxPathLength
@@:
shr ecx, 1
shr edx, 1
mov ecx, edx
@@:
dec ecx
js @f
476,14 → 483,13
test ax, ax
jnz @b
sub edx, ecx
mov ecx, edx
@@:
mov [esp+32], ecx
ret
shl edx, 1
mov word [edi-2], 0
jmp .ret
 
.set:
mov esi, ecx
xor eax, eax
getFullPath:
; in: esi -> file path, eax = string encoding, edi -> destination
; out: UTF-8 string (with marker), eax = length, 0 -> error