forked from KolibriOS/kolibrios
iso9660: get CD info
git-svn-id: svn://kolibrios.org@6872 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
5e7dc6b25c
commit
846906fa8c
@ -10,7 +10,7 @@ $Revision$
|
|||||||
; CD external functions
|
; CD external functions
|
||||||
; in:
|
; in:
|
||||||
; esi -> path string in UTF-8
|
; esi -> path string in UTF-8
|
||||||
; ebx -> offset in file (qword)
|
; ebx -> parameter structure +4
|
||||||
; ecx = bytes to read
|
; ecx = bytes to read
|
||||||
; edx -> buffer
|
; edx -> buffer
|
||||||
; out:
|
; out:
|
||||||
@ -484,44 +484,62 @@ cd_get_parameters_of_file_1:
|
|||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
fs_CdGetFileInfo:
|
fs_CdGetFileInfo:
|
||||||
cmp byte [esi], 0
|
|
||||||
jnz @f
|
|
||||||
|
|
||||||
mov eax, 2
|
|
||||||
ret
|
|
||||||
;--------------------------------------
|
|
||||||
@@:
|
|
||||||
push edi
|
|
||||||
call cd_find_lfn
|
call cd_find_lfn
|
||||||
pushfd
|
movi eax, ERROR_FILE_NOT_FOUND
|
||||||
cmp [DevErrorCode], 0
|
jc @f
|
||||||
jz @f
|
|
||||||
|
|
||||||
popfd
|
|
||||||
pop edi
|
|
||||||
mov eax, 11
|
|
||||||
ret
|
|
||||||
;--------------------------------------
|
|
||||||
@@:
|
|
||||||
popfd
|
|
||||||
jnc @f
|
|
||||||
|
|
||||||
pop edi
|
|
||||||
mov eax, ERROR_FILE_NOT_FOUND
|
|
||||||
ret
|
|
||||||
;--------------------------------------
|
|
||||||
@@:
|
|
||||||
|
|
||||||
mov edi, edx
|
mov edi, edx
|
||||||
push ebp
|
mov eax, [ebx+4]
|
||||||
|
mov [edx+4], eax
|
||||||
|
cmp byte [esi], 0
|
||||||
|
jz .volume
|
||||||
mov ebp, [cd_current_pointer_of_input]
|
mov ebp, [cd_current_pointer_of_input]
|
||||||
add ebp, 33
|
add ebp, 33
|
||||||
call cd_get_parameters_of_file_1
|
call cd_get_parameters_of_file_1
|
||||||
pop ebp
|
|
||||||
and dword [edi+4], 0
|
|
||||||
pop edi
|
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
|
@@:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
.volume:
|
||||||
|
mov ecx, 16
|
||||||
|
mov esi, CDDataBuf+40
|
||||||
|
add edi, 40
|
||||||
|
cmp eax, 2
|
||||||
|
jz .utf16
|
||||||
|
cmp eax, 3
|
||||||
|
jz .utf8
|
||||||
|
@@:
|
||||||
|
lodsw
|
||||||
|
xchg al, ah
|
||||||
|
call uni2ansi_char
|
||||||
|
stosb
|
||||||
|
loop @b
|
||||||
|
jmp .size
|
||||||
|
|
||||||
|
.utf16:
|
||||||
|
lodsw
|
||||||
|
xchg al, ah
|
||||||
|
stosw
|
||||||
|
loop .utf16
|
||||||
|
jmp .size
|
||||||
|
|
||||||
|
.utf8:
|
||||||
|
mov ebx, ecx
|
||||||
|
shl ecx, 1
|
||||||
|
@@:
|
||||||
|
lodsw
|
||||||
|
xchg ah, al
|
||||||
|
call UTF16to8
|
||||||
|
dec ebx
|
||||||
|
jnz @b
|
||||||
|
.size:
|
||||||
|
mov eax, [CDDataBuf+80]
|
||||||
|
shl eax, 11
|
||||||
|
mov [edx+32], eax
|
||||||
|
xor eax, eax
|
||||||
|
mov [edx+36], eax
|
||||||
|
stosw
|
||||||
|
ret
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
cd_find_lfn:
|
cd_find_lfn:
|
||||||
mov [cd_appl_data], 0
|
mov [cd_appl_data], 0
|
||||||
|
Loading…
Reference in New Issue
Block a user