Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 3499 → Rev 3500

/kernel/branches/Kolibri-acpi/fs/ext2.inc
450,7 → 450,7
mov ebx, [ext2_data.ext2_temp_block]
call ext2_get_block
test eax, eax
jz @F ;если не было ошибки
jnz @F ;если не было ошибки
 
mov ecx, [ebx + ecx*4] ;заносим результат
@@:
565,7 → 565,7
rep movsd
pop ecx
@@:
cmp [ebp + EXT2_INODE_STRUC.i_blocks], 0 ;папка пуста
cmp [ebp + EXT2_INODE_STRUC.i_size], 0 ;папка пуста
je .error_empty_dir
push edx ;адрес результата [edi + 28]
616,6 → 616,7
test ebx, 0x3 ; длина записи должна делиться на 4
jnz .error_bad_len
 
sub [ebp + EXT2_INODE_STRUC.i_size], ebx ;вычитаем напрямую из структуры inode
add esi, ebx ; к следующей записи
cmp esi, [edi + 24] ; сравниваем с концом блока
jb .find_wanted_start
622,8 → 623,7
 
push .find_wanted_start
.end_block: ;вылетели из цикла
mov ebx, [ext2_data.count_block_in_block]
sub [ebp + EXT2_INODE_STRUC.i_blocks], ebx ;вычитаем напрямую из структуры inode
cmp [ebp + EXT2_INODE_STRUC.i_size], 0
jle .end_dir
 
inc dword [edi] ;получаем новый блок
727,6 → 727,7
test ebx, 0x3 ; длина записи должна делиться на 4
jnz .error_bad_len
 
sub [ebp + EXT2_INODE_STRUC.i_size], ebx ;вычитаем напрямую из структуры inode
add esi, ebx
cmp esi, [edi + 24] ;дошли ли до конца блока?
jb .wanted_start
895,15 → 896,13
jae .size_great_great
 
.size_great_less:
push 1
; or [EXT2_files_in_folder], 1 ;читаем по границе размера
push 1 ;читаем по границе размера
mov ecx, [ebp + EXT2_INODE_STRUC.i_size]
sub ecx, [esi] ;(размер - старт) = сколько читать
jmp @F
 
.size_great_great:
push 0
; and [EXT2_files_in_folder], 0 ;читаем столько сколько запросили
push 0 ;читаем столько сколько запросили
 
@@:
;здесь мы точно знаем сколько байт читать - ecx
919,7 → 918,7
mov eax, [esi]
div [ext2_data.block_size]
 
push eax ;номер блока запоминаем
push eax ;счетчик блоков ложим в стек
 
push ecx
mov ecx, eax
949,7 → 948,7
 
.zero_start:
mov eax, ecx
push 0 ;счетчик блоков
push 0 ;счетчик блоков ложим в стек
;теперь в eax кол-во оставшихся байт для чтения
.calc_blocks_count:
mov ebx, edi ;чтение блока прям в ->ebx
982,7 → 981,7
inc ecx
call ext2_get_inode_block
test eax, eax
jz .error_at_finish_block
jnz .error_at_finish_block
 
mov edi, ebx
mov eax, ecx
994,9 → 993,13
mov ecx, edx
mov esi, ebx
rep movsb ;кусок last блока
jmp @F
 
.end_read:
pop ebx
pop eax
pop ecx ;счетчик блоков, который хранился в стеке
@@:
pop ebx ;количество считанных байт
pop eax ; 1 или 0 - достигли ли конца файла
test eax, eax
jz @F
 
1009,7 → 1012,6
.only_one_block:
mov esi, ebx
rep movsb ;кусок last блока
pop eax
jmp .end_read
.error_at_first_block:
1094,6 → 1096,7
push [ebp + EXT2_INODE_STRUC.i_blocks]
xor ecx, ecx
.folder_block_cycle:
push ecx
call ext2_get_inode_block
test eax, eax
jnz .error_get_inode_block
1106,7 → 1109,7
 
push esi
call ext2_test_block_by_name
pop edi
pop edi ecx
 
cmp edi, esi ;нашли имя?
je .next_folder_block ;не нашли -> к след. блоку
1132,11 → 1135,11
sub eax, [ext2_data.count_block_in_block]
jle .not_found
push eax
inc ecx
jmp .folder_block_cycle
 
.not_found:
pop ebx
mov eax, ERROR_FILE_NOT_FOUND
ret
 
1152,6 → 1155,7
 
.error_get_inode_block:
.error_get_block:
pop ecx
.error_get_inode:
pop ebx
.error_empty_root:
/kernel/branches/Kolibri-acpi/fs/fat12.inc
2257,15 → 2257,17
popa
; delete FAT chain
pop eax
test eax, eax
jz .done
@@:
cmp eax, 2
jb .done
cmp eax, 0xFF8
jae .done
lea eax, [FLOPPY_FAT + eax*2]
push dword [eax]
and word [eax], 0
pop eax
and eax, 0xFFF
jnz @b
jmp @b
.done:
call save_flp_fat
pop edi
/kernel/branches/Kolibri-acpi/fs/fs-sp.inc
0,0 → 1,13
dir0:
db 'DISCO DURO '
db 'UNIDAD RAM '
db 'DISQUETE '
db 0
 
dir1:
db 'PRIMERO '
db 'SEGUNDO '
db 'TERCERO '
db 'CUARTO '
db 0
 
/kernel/branches/Kolibri-acpi/fs/fs.inc
21,6 → 21,10
 
 
iglobal
 
if lang eq sp
include 'fs/fs-sp.inc'
else
dir0:
db 'HARDDISK '
db 'RAMDISK '
33,6 → 37,7
db 'THIRD '
db 'FOURTH '
db 0
end if
 
not_select_IDE db 0
 
/kernel/branches/Kolibri-acpi/fs/fs_lfn.inc
103,6 → 103,17
dd 0
 
endg
 
file_system_lfn_protected:
pushad
call protect_from_terminate
call file_system_lfn
call unprotect_from_terminate
popad
mov [image_of_eax], eax
mov [image_of_ebx], ebx
ret
 
file_system_lfn:
; in: ebx->fileinfo block
; operation codes: