forked from KolibriOS/kolibrios
Translate part of Russian comments in ext2 driver to English
git-svn-id: svn://kolibrios.org@3691 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
f5bede5d6a
commit
1a6a8ac7e2
@ -4,7 +4,7 @@
|
|||||||
;; Distributed under terms of the GNU General Public License ;;
|
;; Distributed under terms of the GNU General Public License ;;
|
||||||
;; 02.02.2010 turbanoff - support 70.5 ;;
|
;; 02.02.2010 turbanoff - support 70.5 ;;
|
||||||
;; 23.01.2010 turbanoff - support 70.0 70.1 ;;
|
;; 23.01.2010 turbanoff - support 70.0 70.1 ;;
|
||||||
;; ;;
|
;; 21.06.2013 yogev_ezra - Translate Russian comments ;;
|
||||||
;; ;;
|
;; ;;
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
@ -17,31 +17,34 @@ EXT2_ACL_DATA_INO = 4
|
|||||||
EXT2_BOOT_LOADER_INO = 5
|
EXT2_BOOT_LOADER_INO = 5
|
||||||
EXT2_UNDEL_DIR_INO = 6
|
EXT2_UNDEL_DIR_INO = 6
|
||||||
|
|
||||||
;флаги, указываемый в inode файла
|
;RUS: флаги, указываемые в inode файла ;ENG: flags specified in file inode
|
||||||
EXT2_S_IFREG = 0x8000
|
EXT2_S_IFREG = 0x8000
|
||||||
EXT2_S_IFDIR = 0x4000
|
EXT2_S_IFDIR = 0x4000
|
||||||
EXT2_S_IFMT = 0xF000 ;маска для типа файла
|
EXT2_S_IFMT = 0xF000 ;RUS: маска для типа файла ;ENG: mask for file type
|
||||||
|
|
||||||
;флаги, указываемые в linked list родительской папки
|
;RUS: флаги, указываемые в linked list родительской папки
|
||||||
EXT2_FT_REG_FILE = 1 ;это файл, запись в родительском каталоге
|
;ENG: flags specified in linked list of parent folder
|
||||||
EXT2_FT_DIR = 2 ;это папка
|
EXT2_FT_REG_FILE = 1 ;RUS: это файл, запись в родительском каталоге
|
||||||
|
;ENG: this is a file, record in parent catalog
|
||||||
|
EXT2_FT_DIR = 2 ;RUS: это папка ;ENG: this is a folder
|
||||||
|
|
||||||
;флаги используемые KolibriOS
|
;RUS: флаги используемые KolibriOS ;ENG: flags used by KolibriOS
|
||||||
FS_FT_HIDDEN = 2
|
FS_FT_HIDDEN = 2
|
||||||
FS_FT_DIR = 0x10 ;это папка
|
FS_FT_DIR = 0x10 ;RUS: это папка ;ENG: this is a folder
|
||||||
FS_FT_ASCII = 0 ;имя в ascii
|
FS_FT_ASCII = 0 ;RUS: имя в ascii ;ENG: name in ASCII
|
||||||
FS_FT_UNICODE = 1 ;имя в unicode
|
FS_FT_UNICODE = 1 ;RUS: имя в unicode ;ENG: name in UNICODE
|
||||||
|
|
||||||
EXT2_FEATURE_INCOMPAT_FILETYPE = 0x0002 ;тип файла должен указываться в директории
|
EXT2_FEATURE_INCOMPAT_FILETYPE = 0x0002 ;RUS: тип файла должен указываться в директории
|
||||||
EXT4_FEATURE_INCOMPAT_EXTENTS = 0x0040 ;экстенты
|
;ENG: file type must be specified in the folder
|
||||||
EXT4_FEATURE_INCOMPAT_FLEX_BG = 0x0200 ;гибкие группы блоков
|
EXT4_FEATURE_INCOMPAT_EXTENTS = 0x0040 ;RUS: экстенты ;ENG: extents
|
||||||
;реализованные ext[234] features
|
EXT4_FEATURE_INCOMPAT_FLEX_BG = 0x0200 ;RUS: гибкие группы блоков ;ENG: flexible block groups
|
||||||
|
|
||||||
|
;RUS: реализованные ext[234] features ;ENG: implemented ext[234] features
|
||||||
EXT4_FEATURE_INCOMPAT_SUPP = EXT2_FEATURE_INCOMPAT_FILETYPE \
|
EXT4_FEATURE_INCOMPAT_SUPP = EXT2_FEATURE_INCOMPAT_FILETYPE \
|
||||||
or EXT4_FEATURE_INCOMPAT_EXTENTS \
|
or EXT4_FEATURE_INCOMPAT_EXTENTS \
|
||||||
or EXT4_FEATURE_INCOMPAT_FLEX_BG
|
or EXT4_FEATURE_INCOMPAT_FLEX_BG
|
||||||
|
|
||||||
|
;RUS: флаги, указываемые для inode в i_flags ;ENG: flags specified for inode in i_flags
|
||||||
;флаги, указываемые для inode в i_flags
|
|
||||||
EXT2_EXTENTS_FL = 0x00080000
|
EXT2_EXTENTS_FL = 0x00080000
|
||||||
|
|
||||||
struct EXT2_INODE_STRUC
|
struct EXT2_INODE_STRUC
|
||||||
@ -147,26 +150,31 @@ struct EXT2_SB_STRUC
|
|||||||
log_groups_per_flex db ? ;+372
|
log_groups_per_flex db ? ;+372
|
||||||
ends
|
ends
|
||||||
|
|
||||||
struct EXT4_EXTENT_HEADER ;заголовок блока экстентов/индексов
|
struct EXT4_EXTENT_HEADER ;RUS: заголовок блока экстентов/индексов
|
||||||
eh_magic dw ? ;в текущей реализации ext4 должно быть 0xF30A
|
eh_magic dw ? ;RUS: в текущей реализации ext4 должно быть 0xF30A
|
||||||
eh_entries dw ? ;количество экстентов/индексов в блоке
|
eh_entries dw ? ;RUS: количество экстентов/индексов в блоке
|
||||||
eh_max dw ? ;max количество (используется при записи)
|
eh_max dw ? ;RUS: max количество (используется при записи)
|
||||||
eh_depth dw ? ;глубина дерева (0, если это блок экстентов)
|
eh_depth dw ? ;RUS: глубина дерева (0, если это блок экстентов)
|
||||||
eh_generation dd ? ;???
|
eh_generation dd ? ;???
|
||||||
ends
|
ends
|
||||||
|
|
||||||
struct EXT4_EXTENT ;экстент
|
struct EXT4_EXTENT ;RUS: экстент ;ENG: extent
|
||||||
ee_block dd ? ;номер ext4 блока
|
ee_block dd ? ;RUS: номер ext4 блока ;ENG: number of ext4 block
|
||||||
ee_len dw ? ;длина экстента
|
ee_len dw ? ;RUS: длина экстента ;ENG: extent length
|
||||||
ee_start_hi dw ? ;старшие 16 бит 48-битного адреса (пока не используются в KOS)
|
ee_start_hi dw ? ;RUS: старшие 16 бит 48-битного адреса (пока не используются в KOS)
|
||||||
ee_start_lo dd ? ;младшие 32 бита 48-битного адреса
|
;ENG: upper 16 bits of the 48-bit address (not used in KolibriOS yet)
|
||||||
|
ee_start_lo dd ? ;RUS: младшие 32 бита 48-битного адреса
|
||||||
|
;ENG: lower 32 bits of the 48-bit address
|
||||||
ends
|
ends
|
||||||
|
|
||||||
struct EXT4_EXTENT_IDX ;индес - указатель на блок с экстентами/индексами
|
struct EXT4_EXTENT_IDX ;RUS: индекс - указатель на блок с экстентами/индексами
|
||||||
ei_block dd ? ;номер ext4 блока
|
;ENG: index - pointer to block of extents/indexes
|
||||||
ei_leaf_lo dd ? ;младшие 32 бит 48-битного адреса
|
ei_block dd ? ;RUS: номер ext4 блока ;ENG: number of ext4 block
|
||||||
ei_leaf_hi dw ? ;старшие 16 бит 48-битного адреса (пока не используются в KOS)
|
ei_leaf_lo dd ? ;RUS: младшие 32 бит 48-битного адреса
|
||||||
ei_unused dw ? ;зарезервировано
|
;ENG: lower 32 bits of the 48-bit address
|
||||||
|
ei_leaf_hi dw ? ;RUS: старшие 16 бит 48-битного адреса (пока не используются в KOS)
|
||||||
|
;ENG: upper 16 bits of the 48-bit address (not used in KolibriOS yet)
|
||||||
|
ei_unused dw ? ;RUS: зарезервировано ;ENG: reserved
|
||||||
ends
|
ends
|
||||||
|
|
||||||
ext2_test_superblock:
|
ext2_test_superblock:
|
||||||
@ -230,7 +238,7 @@ ext2_setup:
|
|||||||
|
|
||||||
shl eax, 7
|
shl eax, 7
|
||||||
mov [ext2_data.count_pointer_in_block], eax
|
mov [ext2_data.count_pointer_in_block], eax
|
||||||
mov edx, eax ; потом еще квадрат найдем
|
mov edx, eax ;RUS: потом еще квадрат найдем ;ENG: we'll find a square later
|
||||||
|
|
||||||
shl eax, 2
|
shl eax, 2
|
||||||
mov [ext2_data.block_size], eax
|
mov [ext2_data.block_size], eax
|
||||||
@ -294,11 +302,11 @@ ext2_get_block:
|
|||||||
|
|
||||||
|
|
||||||
;===================================================================
|
;===================================================================
|
||||||
;получает номер блока из extent inode
|
;RUS: получает номер блока из extent inode ;ENG: receives block number from extent inode
|
||||||
;in: ecx = номер блока по порядку
|
;RUS: in: ecx = номер блока по порядку ;ENG: in: ecx = consecutive block number
|
||||||
; ebp = адрес extent header`а
|
;RUS: ebp = адрес extent header`а ;ENG: ebp = address of extent header
|
||||||
;out: ecx - адрес очередного блока в случае успеха
|
;RUS: out: ecx - адрес очередного блока в случае успеха ;ENG: out: ecx - address of next block, if successful
|
||||||
; eax - номер ошибки (если равно 0, то ошибки нет)
|
;RUS: eax - номер ошибки (если равно 0, то ошибки нет) ;ENG: eax - error number (0 - no error)
|
||||||
ext4_block_recursive_search:
|
ext4_block_recursive_search:
|
||||||
cmp word [ebp + EXT4_EXTENT_HEADER.eh_magic], 0xF30A ;EXT4_EXT_MAGIC
|
cmp word [ebp + EXT4_EXTENT_HEADER.eh_magic], 0xF30A ;EXT4_EXT_MAGIC
|
||||||
jne .fail
|
jne .fail
|
||||||
@ -369,10 +377,10 @@ ext4_block_recursive_search:
|
|||||||
|
|
||||||
;===================================================================
|
;===================================================================
|
||||||
;получает адрес ext2 блока из inode с определнным номером
|
;получает адрес ext2 блока из inode с определнным номером
|
||||||
;in: ecx = номер блока в inode (0..)
|
;RUS: in: ecx = номер блока в inode (0..) ;ENG: in: ecx = number of block in inode (0..)
|
||||||
; ebp = адрес inode
|
;RUS: ebp = адрес inode ;ENG: ebp = inode address
|
||||||
;out: ecx = адрес очередного блока
|
;RUS: out: ecx = адрес очередного блока ;ENG: out: ecx = next block address
|
||||||
; eax - error code
|
;RUS: eax - error code ;ENG: eax - error code
|
||||||
ext2_get_inode_block:
|
ext2_get_inode_block:
|
||||||
test [ebp + EXT2_INODE_STRUC.i_flags], EXT2_EXTENTS_FL
|
test [ebp + EXT2_INODE_STRUC.i_flags], EXT2_EXTENTS_FL
|
||||||
jz @F
|
jz @F
|
||||||
@ -411,7 +419,8 @@ ext2_get_inode_block:
|
|||||||
mov eax, ecx
|
mov eax, ecx
|
||||||
div [ext2_data.count_pointer_in_block_square]
|
div [ext2_data.count_pointer_in_block_square]
|
||||||
|
|
||||||
;eax - номер в полученном блоке edx - номер дальше
|
;RUS: eax - номер в полученном блоке edx - номер дальше
|
||||||
|
;ENG: eax - current block number, edx - next block number
|
||||||
mov eax, [ebx + eax*4]
|
mov eax, [ebx + eax*4]
|
||||||
call ext2_get_block
|
call ext2_get_block
|
||||||
test eax, eax
|
test eax, eax
|
||||||
@ -450,9 +459,9 @@ ext2_get_inode_block:
|
|||||||
mov ebx, [ext2_data.ext2_temp_block]
|
mov ebx, [ext2_data.ext2_temp_block]
|
||||||
call ext2_get_block
|
call ext2_get_block
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jnz @F ;если не было ошибки
|
jnz @F ;RUS: если не было ошибки ;ENG: if there was no error
|
||||||
|
|
||||||
mov ecx, [ebx + ecx*4] ;заносим результат
|
mov ecx, [ebx + ecx*4] ;RUS: заносим результат ;ENG: ???
|
||||||
@@:
|
@@:
|
||||||
pop ebx
|
pop ebx
|
||||||
ret
|
ret
|
||||||
@ -481,8 +490,10 @@ ext2_get_inode:
|
|||||||
mov edx, 32
|
mov edx, 32
|
||||||
mul edx ; address block_group in global_desc_table
|
mul edx ; address block_group in global_desc_table
|
||||||
|
|
||||||
; в eax - смещение группы с inode-ом относительно начала глобальной дескрипторной таблицы
|
;RUS: в eax - смещение группы с inode-ом относительно начала глобальной дескрипторной таблицы
|
||||||
; найдем блок в котором он находится
|
;RUS: найдем блок в котором он находится
|
||||||
|
;ENG: in eax - inode group offset relative to global descriptor table start
|
||||||
|
;ENG: let's find the block this inode is in
|
||||||
div [ext2_data.block_size]
|
div [ext2_data.block_size]
|
||||||
add eax, [ecx + EXT2_SB_STRUC.first_data_block]
|
add eax, [ecx + EXT2_SB_STRUC.first_data_block]
|
||||||
inc eax
|
inc eax
|
||||||
@ -491,32 +502,32 @@ ext2_get_inode:
|
|||||||
test eax, eax
|
test eax, eax
|
||||||
jnz .fail
|
jnz .fail
|
||||||
|
|
||||||
add ebx, edx ; локальный номер в блоке
|
add ebx, edx ;RUS: локальный номер в блоке ;ENG: local number inside block
|
||||||
mov eax, [ebx + EXT2_BLOCK_GROUP_DESC.inode_table]; номер блока - в терминах ext2
|
mov eax, [ebx + EXT2_BLOCK_GROUP_DESC.inode_table] ;RUS: номер блока - в терминах ext2
|
||||||
|
;ENG: block number - in ext2 terms
|
||||||
mov ecx, [ext2_data.log_block_size]
|
mov ecx, [ext2_data.log_block_size]
|
||||||
shl eax, cl
|
shl eax, cl
|
||||||
add eax, [PARTITION_START] ; а старт раздела - в терминах hdd (512)
|
add eax, [PARTITION_START] ;RUS: а старт раздела - в терминах hdd (512)
|
||||||
|
;ENG: partition start - in HDD terms (512)
|
||||||
|
;RUS: eax - указывает на таблицу inode-ов на hdd ;ENG: eax - points to inode table on HDD
|
||||||
|
mov esi, eax ;RUS: сохраним его пока в esi ;ENG: let's save it in esi for now
|
||||||
|
|
||||||
;eax - указывает на таблицу inode-ов на hdd
|
;RUS: прибавим локальный адрес inode-а ;ENG: add local address of inode
|
||||||
mov esi, eax ;сохраним его пока в esi
|
|
||||||
|
|
||||||
; прибавим локальный адрес inode-а
|
|
||||||
pop eax ; index
|
pop eax ; index
|
||||||
mov ecx, [ext2_data.inode_size]
|
mov ecx, [ext2_data.inode_size]
|
||||||
mul ecx ; (index * inode_size)
|
mul ecx ; (index * inode_size)
|
||||||
mov ebp, 512
|
mov ebp, 512
|
||||||
div ebp ;поделим на размер блока
|
div ebp ;RUS: поделим на размер блока ;ENG: divide by block size
|
||||||
|
|
||||||
add eax, esi ;нашли адрес блока для чтения
|
add eax, esi ;RUS: нашли адрес блока для чтения ;ENG: found block address to read
|
||||||
mov ebx, [ext2_data.ext2_temp_block]
|
mov ebx, [ext2_data.ext2_temp_block]
|
||||||
call hd_read
|
call hd_read
|
||||||
cmp [hd_error], 0
|
cmp [hd_error], 0
|
||||||
jnz .fail
|
jnz .fail
|
||||||
|
|
||||||
mov esi, edx ;добавим "остаток"
|
mov esi, edx ;RUS: добавим "остаток" ;ENG: add the "remainder"
|
||||||
add esi, ebx ;к адресу
|
add esi, ebx ;RUS: к адресу ;ENG: to the address
|
||||||
rep movsb ;копируем inode
|
rep movsb ;RUS: копируем inode ;ENG: copy inode
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
.fail:
|
.fail:
|
||||||
mov PUSHAD_EAX, eax
|
mov PUSHAD_EAX, eax
|
||||||
@ -745,7 +756,8 @@ ext2_HdReadFolder:
|
|||||||
|
|
||||||
lea esp, [edi + 32]
|
lea esp, [edi + 32]
|
||||||
|
|
||||||
xor eax, eax ;зарезервировано: нули в текущей реализации
|
xor eax, eax ;RUS: зарезервировано: нули в текущей реализации
|
||||||
|
;ENG: reserved: zeros in current implementation
|
||||||
lea edi, [edx + 12]
|
lea edi, [edx + 12]
|
||||||
mov ecx, 20 / 4
|
mov ecx, 20 / 4
|
||||||
rep stosd
|
rep stosd
|
||||||
@ -760,12 +772,12 @@ ext2_HdReadFolder:
|
|||||||
or ebx, -1
|
or ebx, -1
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.error_empty_dir: ;inode папки без блоков
|
.error_empty_dir: ;RUS: inode папки без блоков ;ENG: inode of folder without blocks
|
||||||
.error_root: ;root - не папка
|
.error_root: ;RUS: root - не папка ;ENG: root is not a folder
|
||||||
mov eax, ERROR_FS_FAIL
|
mov eax, ERROR_FS_FAIL
|
||||||
jmp .error_ret
|
jmp .error_ret
|
||||||
|
|
||||||
.error_not_found: ;файл не найден
|
.error_not_found: ;RUS: файл не найден ;ENG: file not found
|
||||||
mov eax, ERROR_FILE_NOT_FOUND
|
mov eax, ERROR_FILE_NOT_FOUND
|
||||||
jmp .error_ret
|
jmp .error_ret
|
||||||
|
|
||||||
@ -867,9 +879,9 @@ ext2_HdRead:
|
|||||||
jz @F
|
jz @F
|
||||||
mov esi, ebx ; esi = pointer to first_wanted
|
mov esi, ebx ; esi = pointer to first_wanted
|
||||||
mov ebx, [esi+4]
|
mov ebx, [esi+4]
|
||||||
mov eax, [esi] ; ebx : eax - стартовый номер байта
|
mov eax, [esi] ;RUS: ebx : eax - стартовый номер байта ;ENG: ebx : eax - start byte number
|
||||||
|
|
||||||
;///// сравним хватит ли нам файла или нет
|
;RUS: ///// сравним хватит ли нам файла или нет ;ENG: ///// check if file is big enough for us
|
||||||
cmp [ebp + EXT2_INODE_STRUC.i_dir_acl], ebx
|
cmp [ebp + EXT2_INODE_STRUC.i_dir_acl], ebx
|
||||||
ja .size_great
|
ja .size_great
|
||||||
jb .size_less
|
jb .size_less
|
||||||
@ -886,23 +898,24 @@ ext2_HdRead:
|
|||||||
xor ebx, ebx
|
xor ebx, ebx
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
.size_great:
|
.size_great:
|
||||||
add eax, ecx ;add to first_wanted кол-во байт для чтения
|
add eax, ecx ;RUS: add to first_wanted кол-во байт для чтения
|
||||||
|
;ENG: add to first_wanted number of bytes to read
|
||||||
adc ebx, 0
|
adc ebx, 0
|
||||||
|
|
||||||
cmp [ebp + EXT2_INODE_STRUC.i_dir_acl], ebx
|
cmp [ebp + EXT2_INODE_STRUC.i_dir_acl], ebx
|
||||||
ja .size_great_great
|
ja .size_great_great
|
||||||
jb .size_great_less
|
jb .size_great_less
|
||||||
cmp [ebp + EXT2_INODE_STRUC.i_size], eax
|
cmp [ebp + EXT2_INODE_STRUC.i_size], eax
|
||||||
jae .size_great_great
|
jae .size_great_great ; and if it's equal, no matter where we jump
|
||||||
|
|
||||||
.size_great_less:
|
.size_great_less:
|
||||||
push 1 ;читаем по границе размера
|
push 1 ;RUS: читаем по границе размера ;ENG: reading till the end of file
|
||||||
mov ecx, [ebp + EXT2_INODE_STRUC.i_size]
|
mov ecx, [ebp + EXT2_INODE_STRUC.i_size]
|
||||||
sub ecx, [esi] ;(размер - старт) = сколько читать
|
sub ecx, [esi] ;RUS: (размер - старт) = сколько читать ;ENG: to read = (size - start)
|
||||||
jmp @F
|
jmp @F
|
||||||
|
|
||||||
.size_great_great:
|
.size_great_great:
|
||||||
push 0 ;читаем столько сколько запросили
|
push 0 ;RUS: читаем столько, сколько запросили ;ENG: reading as much as requested
|
||||||
|
|
||||||
@@:
|
@@:
|
||||||
;здесь мы точно знаем сколько байт читать - ecx
|
;здесь мы точно знаем сколько байт читать - ecx
|
||||||
@ -934,7 +947,8 @@ ext2_HdRead:
|
|||||||
add ebx, edx
|
add ebx, edx
|
||||||
|
|
||||||
neg edx
|
neg edx
|
||||||
add edx, [ext2_data.block_size] ;block_size - стартовый байт = сколько байт 1-го блока
|
add edx, [ext2_data.block_size] ;RUS: block_size - стартовый байт = сколько байт 1-го блока
|
||||||
|
;ENG: block_size - start byte = number of bytes in 1st block
|
||||||
cmp ecx, edx
|
cmp ecx, edx
|
||||||
jbe .only_one_block
|
jbe .only_one_block
|
||||||
|
|
||||||
@ -943,7 +957,7 @@ ext2_HdRead:
|
|||||||
mov ecx, edx
|
mov ecx, edx
|
||||||
|
|
||||||
mov esi, ebx
|
mov esi, ebx
|
||||||
rep movsb ;кусок 1-го блока
|
rep movsb ;RUS: кусок 1-го блока ;ENG: part of 1st block
|
||||||
jmp .calc_blocks_count
|
jmp .calc_blocks_count
|
||||||
|
|
||||||
.zero_start:
|
.zero_start:
|
||||||
@ -1031,7 +1045,7 @@ ext2_HdRead:
|
|||||||
ext2_test_block_by_name:
|
ext2_test_block_by_name:
|
||||||
sub esp, 256 ;EXT2_filename
|
sub esp, 256 ;EXT2_filename
|
||||||
mov edx, ebx
|
mov edx, ebx
|
||||||
add edx, [ext2_data.block_size] ;запомним конец блока
|
add edx, [ext2_data.block_size] ;RUS: запомним конец блока ;ENG: save block end
|
||||||
|
|
||||||
.start_rec:
|
.start_rec:
|
||||||
cmp [ebx + EXT2_DIR_STRUC.inode], 0
|
cmp [ebx + EXT2_DIR_STRUC.inode], 0
|
||||||
@ -1045,7 +1059,7 @@ ext2_test_block_by_name:
|
|||||||
|
|
||||||
mov ecx, edi
|
mov ecx, edi
|
||||||
lea edi, [esp + 4]
|
lea edi, [esp + 4]
|
||||||
sub ecx, edi ;кол-во байт в получившейся строке
|
sub ecx, edi ;RUS: кол-во байт в получившейся строке ;ENG: number of bytes in resulting string
|
||||||
|
|
||||||
mov esi, [esp]
|
mov esi, [esp]
|
||||||
@@:
|
@@:
|
||||||
@ -1061,19 +1075,19 @@ ext2_test_block_by_name:
|
|||||||
call char_toupper
|
call char_toupper
|
||||||
cmp al, ah
|
cmp al, ah
|
||||||
je @B
|
je @B
|
||||||
@@: ;не подошло
|
@@: ;RUS: не подошло ;ENG: didn't fit
|
||||||
pop esi
|
pop esi
|
||||||
.next_rec:
|
.next_rec:
|
||||||
movzx eax, [ebx + EXT2_DIR_STRUC.rec_len]
|
movzx eax, [ebx + EXT2_DIR_STRUC.rec_len]
|
||||||
add ebx, eax ;к след. записи
|
add ebx, eax ;RUS: к след. записи ;ENG: go to next record
|
||||||
cmp ebx, edx ;проверим конец ли
|
cmp ebx, edx ;RUS: проверим конец ли ;ENG: check if this is the end
|
||||||
jb .start_rec
|
jb .start_rec
|
||||||
add esp, 256
|
add esp, 256
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.test_find:
|
.test_find:
|
||||||
cmp byte [esi], 0
|
cmp byte [esi], 0
|
||||||
je .ret ;нашли конец
|
je .ret ;RUS: нашли конец ;ENG: the end reached
|
||||||
cmp byte [esi], '/'
|
cmp byte [esi], '/'
|
||||||
jne @B
|
jne @B
|
||||||
inc esi
|
inc esi
|
||||||
@ -1111,27 +1125,28 @@ ext2_find_lfn:
|
|||||||
call ext2_test_block_by_name
|
call ext2_test_block_by_name
|
||||||
pop edi ecx
|
pop edi ecx
|
||||||
|
|
||||||
cmp edi, esi ;нашли имя?
|
cmp edi, esi ;RUS: нашли имя? ;ENG: did we find a name?
|
||||||
je .next_folder_block ;не нашли -> к след. блоку
|
je .next_folder_block ;RUS: не нашли -> к след. блоку ;ENG: we didn't -> moving to next block
|
||||||
|
|
||||||
cmp byte [esi], 0 ;дошли до "конца" пути -> возваращаемся
|
cmp byte [esi], 0 ;RUS: дошли до "конца" пути -> возваращаемся
|
||||||
|
;ENG: reached the "end" of path -> returning
|
||||||
jz .get_inode_ret
|
jz .get_inode_ret
|
||||||
|
|
||||||
cmp [ebx + EXT2_DIR_STRUC.file_type], EXT2_FT_DIR ;нашли, но это не папка
|
cmp [ebx + EXT2_DIR_STRUC.file_type], EXT2_FT_DIR ;RUS: нашли, но это не папка
|
||||||
jne .not_found
|
jne .not_found ;ENG: found, but it's not a folder
|
||||||
|
|
||||||
mov eax, [ebx + EXT2_DIR_STRUC.inode]
|
mov eax, [ebx + EXT2_DIR_STRUC.inode]
|
||||||
mov ebx, [ext2_data.ext2_save_inode] ;все же папка.
|
mov ebx, [ext2_data.ext2_save_inode] ;RUS: все же папка. ;ENG: it's a folder afterall
|
||||||
call ext2_get_inode
|
call ext2_get_inode
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jnz .error_get_inode
|
jnz .error_get_inode
|
||||||
pop ecx ;в стеке лежит кол-во блоков
|
pop ecx ;RUS: в стеке лежит кол-во блоков ;ENG: stack top contains number of blocks
|
||||||
mov ebp, ebx
|
mov ebp, ebx
|
||||||
jmp .next_path_part
|
jmp .next_path_part
|
||||||
|
|
||||||
.next_folder_block:
|
.next_folder_block:
|
||||||
;к следующему блоку в текущей папке
|
;к следующему блоку в текущей папке
|
||||||
pop eax ;счетчик блоков
|
pop eax ;RUS: счетчик блоков ;ENG: blocks counter
|
||||||
sub eax, [ext2_data.count_block_in_block]
|
sub eax, [ext2_data.count_block_in_block]
|
||||||
jle .not_found
|
jle .not_found
|
||||||
|
|
||||||
@ -1144,8 +1159,8 @@ ext2_find_lfn:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.get_inode_ret:
|
.get_inode_ret:
|
||||||
pop ecx ;в стеке лежит кол-во блоков
|
pop ecx ;RUS: в стеке лежит кол-во блоков ;ENG: stack top contains number of blocks
|
||||||
mov dl, [ebx + EXT2_DIR_STRUC.name] ;в dl - первый символ ()
|
mov dl, [ebx + EXT2_DIR_STRUC.name] ;RUS: в dl - первый символ () ;ENG: ???
|
||||||
mov eax, [ebx + EXT2_DIR_STRUC.inode]
|
mov eax, [ebx + EXT2_DIR_STRUC.inode]
|
||||||
mov ebx, [ext2_data.ext2_save_inode]
|
mov ebx, [ext2_data.ext2_save_inode]
|
||||||
call ext2_get_inode
|
call ext2_get_inode
|
||||||
@ -1182,7 +1197,7 @@ ext2_HdGetFileInfo:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.is_root:
|
.is_root:
|
||||||
xor ebx, ebx ;root не может быть скрытым
|
xor ebx, ebx ;RUS: root не может быть скрытым ;ENG: root cannot be hidden
|
||||||
mov ebp, [ext2_data.root_inode]
|
mov ebp, [ext2_data.root_inode]
|
||||||
@@:
|
@@:
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
|
@ -73,15 +73,15 @@ ext2_data:
|
|||||||
.count_block_in_block dd ?
|
.count_block_in_block dd ?
|
||||||
.blocks_per_group dd ?
|
.blocks_per_group dd ?
|
||||||
.global_desc_table dd ?
|
.global_desc_table dd ?
|
||||||
.root_inode dd ? ; pointer to root inode in memory
|
.root_inode dd ? ; pointer to root inode in memory
|
||||||
.inode_size dd ?
|
.inode_size dd ?
|
||||||
.count_pointer_in_block dd ? ; block_size / 4
|
.count_pointer_in_block dd ? ; block_size / 4
|
||||||
.count_pointer_in_block_square dd ? ; (block_size / 4)**2
|
.count_pointer_in_block_square dd ? ; (block_size / 4)**2
|
||||||
.ext2_save_block dd ? ; блок на глобальную 1 процедуру
|
.ext2_save_block dd ? ;RUS: блок на глобальную 1 процедуру ;ENG: block for 1 global procedure
|
||||||
.ext2_temp_block dd ? ; блок для мелких процедур
|
.ext2_temp_block dd ? ;RUS: блок для мелких процедур ;ENG: block for small procedures
|
||||||
.ext2_save_inode dd ? ; inode на глобальную процедуру
|
.ext2_save_inode dd ? ;RUS: inode на глобальную процедуру ;ENG: inode for global procedure
|
||||||
.ext2_temp_inode dd ? ; inode для мелких процедур
|
.ext2_temp_inode dd ? ;RUS: inode для мелких процедур ;ENG: inode for small procedures
|
||||||
.sb dd ? ; superblock
|
.sb dd ? ; superblock
|
||||||
.groups_count dd ?
|
.groups_count dd ?
|
||||||
if $ > fs_dependent_data_end
|
if $ > fs_dependent_data_end
|
||||||
ERROR:
|
ERROR:
|
||||||
|
Loading…
Reference in New Issue
Block a user