t_edit can open kpack-ed files
git-svn-id: svn://kolibrios.org@9485 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -1263,20 +1263,12 @@ proc ted_memory_increase
|
||||
cmp ted_increase_size,0
|
||||
je @f
|
||||
push eax ebx ecx
|
||||
mov ecx,ted_increase_size
|
||||
add ecx,ted_max_chars
|
||||
mov ted_max_chars,ecx
|
||||
imul ecx,sizeof.symbol
|
||||
invoke mem.realloc, ted_tex,ecx
|
||||
mov ebx,ted_tex
|
||||
mov ted_tex,eax
|
||||
mov ted_tex_1,eax
|
||||
add ted_tex_1,sizeof.symbol
|
||||
sub edx,ebx
|
||||
add edx,eax
|
||||
mov ted_ptr_free_symb,edx
|
||||
add eax,ecx
|
||||
mov ted_tex_end,eax
|
||||
mov ecx,ted_max_chars
|
||||
call ted_mem_resize.no_2
|
||||
sub edx,ebx
|
||||
add edx,ted_tex
|
||||
mov ted_ptr_free_symb,edx
|
||||
pop ecx ebx eax
|
||||
@@:
|
||||
ret
|
||||
@@ -2546,11 +2538,39 @@ proc ted_find_help_id uses ebx ecx, end_pos:dword
|
||||
ret
|
||||
endp
|
||||
|
||||
;description:
|
||||
; <20><><EFBFBD><EFBFBD><EFBFBD>塞 ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> ⥪<><E2A5AA><EFBFBD> (<28><>⠭<EFBFBD><E2A0AD><EFBFBD><EFBFBD> ted_ptr_free_symb <20><> 1 ᨬ<><E1A8AC><EFBFBD>)
|
||||
;input:
|
||||
; ecx - <20><> ᨬ<><E1A8AC><EFBFBD><EFBFBD><EFBFBD> <20> 䠩<><E4A0A9>
|
||||
; edi - pointer to tedit struct
|
||||
;output:
|
||||
; eax, ecx - ࠧ<><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
align 16
|
||||
ted_mem_resize:
|
||||
add ecx,2 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> ⥪<><E2A5AA><EFBFBD> + <20><>㦥<EFBFBD><E3A6A5><EFBFBD><EFBFBD> <20><>砫<EFBFBD><E7A0AB><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᨬ<><E1A8AC><EFBFBD><EFBFBD>
|
||||
.no_2:
|
||||
add ecx,ted_increase_size ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> ।<><E0A5A4><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD> 䠩<><E4A0A9>
|
||||
mov ted_max_chars,ecx
|
||||
imul ecx,sizeof.symbol
|
||||
invoke mem.realloc, ted_tex,ecx
|
||||
mov ted_tex,eax
|
||||
mov ted_tex_1,eax
|
||||
add ted_tex_1,sizeof.symbol
|
||||
add eax,ecx
|
||||
mov ted_tex_end,eax
|
||||
mov ecx,ted_tex_1
|
||||
add ecx,sizeof.symbol
|
||||
mov ted_ptr_free_symb,ecx
|
||||
ret
|
||||
|
||||
;output:
|
||||
; eax = <20><><EFBFBD> <20>訡<EFBFBD><E8A8A1>
|
||||
; ebx = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮ <20><><EFBFBD><EFBFBD><EFBFBD>⠭<EFBFBD><E2A0AD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
align 16
|
||||
proc ted_open_file uses ecx edx edi, edit:dword, file:dword, f_name:dword ;<3B>㭪<EFBFBD><E3ADAA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<><E4A0A9>
|
||||
proc ted_open_file uses ecx edx edi esi, edit:dword, file:dword, f_name:dword ;<3B>㭪<EFBFBD><E3ADAA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<><E4A0A9>
|
||||
locals
|
||||
unpac_mem dd ?
|
||||
endl
|
||||
mov edi,[edit]
|
||||
|
||||
; *** <20><EFBFBD><E0AEA2>塞 ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20> <20><> 墠⠥<E5A2A0> <20><> 㢥<><E3A2A5>稢<EFBFBD><E7A8A2><EFBFBD> ***
|
||||
@@ -2580,21 +2600,8 @@ align 4
|
||||
mov edx,[edx+32] ;+32 = +0x20: qword: ࠧ<><E0A0A7><EFBFBD> 䠩<><E4A0A9> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
cmp edx,ecx
|
||||
jl @f
|
||||
;㢥<><E3A2A5>稢<EFBFBD><E7A8A2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> 墠⨫<E5A2A0>
|
||||
mov ecx,edx ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>室<EFBFBD><E5AEA4><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<><E4A0A9>
|
||||
add ecx,2 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><>㦥<EFBFBD><E3A6A5><EFBFBD><EFBFBD> <20><>砫쭮<E7A0AB><ECADAE> <20> <20><><EFBFBD><EFBFBD>筮<EFBFBD><E7ADAE> ᨬ<><E1A8AC><EFBFBD><EFBFBD><EFBFBD>
|
||||
add ecx,ted_increase_size ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> ।<><E0A5A4><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD> 䠩<><E4A0A9>
|
||||
mov ted_max_chars,ecx
|
||||
imul ecx,sizeof.symbol
|
||||
invoke mem.realloc, ted_tex,ecx
|
||||
mov ted_tex,eax
|
||||
mov ted_tex_1,eax
|
||||
add ted_tex_1,sizeof.symbol
|
||||
add eax,ecx
|
||||
mov ted_tex_end,eax
|
||||
mov ecx,ted_tex_1
|
||||
add ecx,sizeof.symbol
|
||||
mov ted_ptr_free_symb,ecx
|
||||
mov ecx,edx
|
||||
call ted_mem_resize
|
||||
@@:
|
||||
|
||||
; *** <20>㥬 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<> ***
|
||||
@@ -2617,6 +2624,32 @@ align 4
|
||||
cmp ebx,-1
|
||||
je .ret_f
|
||||
;if open file
|
||||
push eax
|
||||
mov eax,ted_tex
|
||||
cmp dword[eax],'KPCK'
|
||||
jne .end_unpack
|
||||
;<3B>뤥<EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><>ᯠ<EFBFBD><E1AFA0><EFBFBD><EFBFBD><EFBFBD> 䠩<><E4A0A9>
|
||||
invoke mem.alloc,[eax+4]
|
||||
mov [unpac_mem],eax
|
||||
stdcall unpack,ted_tex,[unpac_mem]
|
||||
mov ecx,ted_max_chars
|
||||
sub ecx,2 ;ecx = <20><><EFBFBD>ᨬ<EFBFBD><E1A8AC>쭮<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>뫠 <20>뤥<EFBFBD><EBA4A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov eax,ted_tex
|
||||
mov ebx,[eax+4]
|
||||
cmp ebx,ecx
|
||||
jl @f ;<3B> <20><><EFBFBD> <20><>ᯠ<EFBFBD><E1AFA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 䠩<><E4A0A9> <20><> 墠⠥<E5A2A0> <20>뤥<EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov ecx,ebx
|
||||
call ted_mem_resize
|
||||
@@:
|
||||
mov edi,ted_tex
|
||||
mov esi,[unpac_mem]
|
||||
mov ecx,ebx
|
||||
cld
|
||||
rep movsb
|
||||
mov edi,[edit]
|
||||
invoke mem.free,[unpac_mem]
|
||||
.end_unpack:
|
||||
pop eax
|
||||
call ted_on_open_file
|
||||
.ret_f:
|
||||
ret
|
||||
|
Reference in New Issue
Block a user