2011-01-29 19:25:55 +01:00
|
|
|
|
files_information:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
xor eax,eax
|
|
|
|
|
mov [alt_flag],al
|
|
|
|
|
mov [files_counter],eax
|
|
|
|
|
mov [directories_counter],eax
|
|
|
|
|
mov [files_size.low],eax
|
|
|
|
|
mov [files_size.high],eax
|
|
|
|
|
call get_files_information
|
|
|
|
|
call start_files_information_thread
|
|
|
|
|
jmp still
|
|
|
|
|
;------------------------------------------------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
start_files_information_thread:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mcall 9,procinfo,-1
|
|
|
|
|
mov eax,[ebx+46]
|
|
|
|
|
shr eax,1
|
|
|
|
|
add eax,[ebx+38]
|
2021-12-24 15:43:09 +01:00
|
|
|
|
sub eax,INF_WINH/2
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov [files_information_window_y+2],ax
|
|
|
|
|
mov eax,[ebx+42]
|
|
|
|
|
shr eax,1
|
|
|
|
|
add eax,[ebx+34]
|
2021-12-24 15:43:09 +01:00
|
|
|
|
sub eax,INF_WINW/2
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov [files_information_window_x+2],ax
|
|
|
|
|
mcall 51,1,thread_files_information_start,thread_stack
|
|
|
|
|
ret
|
|
|
|
|
;------------------------------------------------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
draw_files_information_window:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mcall 12,1
|
2021-12-24 15:43:09 +01:00
|
|
|
|
mcall 0,[files_information_window_x],[files_information_window_y],0x33ffffcc,,infowin_title
|
|
|
|
|
mov edx,INF_DATAX shl 16+INF_DATAY+INF_LINEH
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov ebx,0x800a0000
|
|
|
|
|
mov esi,0x10000000
|
|
|
|
|
cmp [inf_marked_yes],1
|
|
|
|
|
je .continue_4
|
|
|
|
|
|
|
|
|
|
cmp [nesting_direction],1
|
|
|
|
|
je @f
|
|
|
|
|
|
2021-12-24 15:43:09 +01:00
|
|
|
|
add edx,INF_LINEH
|
2013-07-24 21:54:47 +02:00
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.continue_4:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
; show files counter
|
|
|
|
|
mcall 47,,[files_counter]
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
@@:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
cmp [inf_marked_yes],1
|
|
|
|
|
je .continue_2
|
|
|
|
|
|
|
|
|
|
cmp [nesting_direction],0
|
|
|
|
|
je .continue_2
|
|
|
|
|
|
|
|
|
|
cmp [directories_counter],0
|
|
|
|
|
je @f
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.continue_2:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
; show directories counter
|
2021-12-24 15:43:09 +01:00
|
|
|
|
add edx,INF_LINEH
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mcall ,,[directories_counter]
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
@@:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
; show file or directory size
|
2021-12-24 15:43:09 +01:00
|
|
|
|
add edx,INF_LINEH
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mcall 47,0x80140001,files_size
|
|
|
|
|
;--------------------------------------
|
|
|
|
|
mov ebp,date.create
|
|
|
|
|
call show_date_and_time_of_files_information
|
|
|
|
|
;--------------------------------------
|
|
|
|
|
mov ebp,date.change
|
|
|
|
|
call show_date_and_time_of_files_information
|
|
|
|
|
;--------------------------------------
|
|
|
|
|
mov ebp,date.access
|
|
|
|
|
call show_date_and_time_of_files_information
|
|
|
|
|
;--------------------------------------
|
|
|
|
|
cmp [select_panel_counter],0
|
|
|
|
|
jne .right_1
|
|
|
|
|
|
|
|
|
|
mov edx,read_folder_name
|
|
|
|
|
jmp @f
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.right_1:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov edx,read_folder_1_name
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
@@:
|
2021-12-24 15:43:09 +01:00
|
|
|
|
mcall 4,<INF_DATAX,INF_DATAY>,0x90000000, ;file_name
|
|
|
|
|
mcall ,<10,INF_DATAY>,0x90000000,type_location
|
2013-07-24 21:54:47 +02:00
|
|
|
|
cmp [inf_marked_yes],1
|
|
|
|
|
je .continue
|
|
|
|
|
|
2021-12-24 15:43:09 +01:00
|
|
|
|
mcall ,<INF_DATAX,INF_DATAY+INF_LINEH>,0x90000000,type_name
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov ecx,0x90000000
|
|
|
|
|
cmp [nesting_direction],1
|
|
|
|
|
je @f
|
|
|
|
|
|
2021-12-24 15:43:09 +01:00
|
|
|
|
mcall ,<10,INF_DATAY+INF_LINEH>,,type_dir_name
|
2013-07-24 21:54:47 +02:00
|
|
|
|
jmp .continue
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
@@:
|
2021-12-24 15:43:09 +01:00
|
|
|
|
mcall ,<10,INF_DATAY+INF_LINEH>,,type_file_name
|
2013-07-24 21:54:47 +02:00
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.continue:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
cmp [inf_marked_yes],1
|
|
|
|
|
je .continue_3
|
|
|
|
|
|
|
|
|
|
cmp [nesting_direction],1
|
|
|
|
|
je @f
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.continue_3:
|
2021-12-24 15:43:09 +01:00
|
|
|
|
add ebx,INF_LINEH
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mcall ,,,type_files
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
@@:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
cmp [inf_marked_yes],1
|
|
|
|
|
je .continue_1
|
|
|
|
|
|
|
|
|
|
cmp [nesting_direction],0
|
|
|
|
|
je .continue_1
|
|
|
|
|
|
|
|
|
|
cmp [directories_counter],0
|
|
|
|
|
je @f
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.continue_1:
|
2021-12-24 15:43:09 +01:00
|
|
|
|
add ebx,INF_LINEH
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mcall ,,,type_dir
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
@@:
|
2021-12-24 15:43:09 +01:00
|
|
|
|
add ebx,INF_LINEH
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mcall ,,,type_size
|
2021-12-24 15:43:09 +01:00
|
|
|
|
add ebx,INF_LINEH
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mcall ,,,type_create
|
2021-12-24 15:43:09 +01:00
|
|
|
|
add ebx,INF_LINEH
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mcall ,,,type_change
|
2021-12-24 15:43:09 +01:00
|
|
|
|
add ebx,INF_LINEH
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mcall ,,,type_access
|
2021-12-24 15:43:09 +01:00
|
|
|
|
sub ebx,INF_LINEH*2
|
|
|
|
|
add ebx,115 shl 16
|
|
|
|
|
mcall ,,0x90000000,type_limiters_data_time
|
|
|
|
|
add ebx,INF_LINEH
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mcall
|
2021-12-24 15:43:09 +01:00
|
|
|
|
add ebx,INF_LINEH
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mcall
|
|
|
|
|
|
|
|
|
|
mcall 12,2
|
|
|
|
|
ret
|
|
|
|
|
;------------------------------------------------------------------------------
|
|
|
|
|
show_date_and_time_of_files_information:
|
|
|
|
|
; show date
|
2021-12-24 15:43:09 +01:00
|
|
|
|
add edx,INF_LINEH
|
2013-07-24 21:54:47 +02:00
|
|
|
|
push edx
|
|
|
|
|
movzx ecx,byte [ebp+0]
|
|
|
|
|
mcall ,0x00020000
|
2021-12-24 15:43:09 +01:00
|
|
|
|
add edx,23 shl 16
|
2013-07-24 21:54:47 +02:00
|
|
|
|
movzx ecx,byte [ebp+1]
|
|
|
|
|
mcall
|
|
|
|
|
add edx,23 shl 16
|
|
|
|
|
movzx ecx,word [ebp+2]
|
|
|
|
|
mcall ,0x00040000
|
|
|
|
|
sub ebp,12
|
|
|
|
|
; show time
|
2021-12-24 15:43:09 +01:00
|
|
|
|
add edx,41 shl 16
|
2013-07-24 21:54:47 +02:00
|
|
|
|
movzx ecx,byte [ebp+2]
|
|
|
|
|
mcall ,0x00020000
|
|
|
|
|
add edx,24 shl 16
|
|
|
|
|
movzx ecx,byte [ebp+1]
|
|
|
|
|
mcall
|
|
|
|
|
add edx,23 shl 16
|
|
|
|
|
movzx ecx,byte [ebp+0]
|
|
|
|
|
mcall
|
|
|
|
|
pop edx
|
|
|
|
|
ret
|
|
|
|
|
;------------------------------------------------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
thread_files_information_start:
|
|
|
|
|
.red:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
call draw_files_information_window
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.still:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mcall 10
|
|
|
|
|
cmp eax,1
|
|
|
|
|
je .red
|
|
|
|
|
|
|
|
|
|
cmp eax,2
|
|
|
|
|
je .key
|
|
|
|
|
|
|
|
|
|
cmp eax,3
|
|
|
|
|
je .button
|
|
|
|
|
|
|
|
|
|
jmp .still
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.key:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mcall 2
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.button:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mcall -1
|
|
|
|
|
jmp .still
|
|
|
|
|
;------------------------------------------------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 64-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> divident <EFBFBD><EFBFBD> 16-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> divisor.
|
|
|
|
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> 64-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> quotent,
|
|
|
|
|
; <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <EFBFBD> 16-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> modulo
|
|
|
|
|
Division_64bit:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov ax,[ebp+6]
|
|
|
|
|
xor dx,dx
|
|
|
|
|
mov bx,[divisor]
|
|
|
|
|
div bx
|
|
|
|
|
mov [quotent+6],ax
|
|
|
|
|
mov ax,[ebp+4]
|
|
|
|
|
div bx
|
|
|
|
|
mov [quotent+4],ax
|
|
|
|
|
mov ax,[ebp+2]
|
|
|
|
|
div bx
|
|
|
|
|
mov [quotent+2],ax
|
|
|
|
|
mov ax,[ebp]
|
|
|
|
|
div bx
|
|
|
|
|
mov [quotent],ax
|
|
|
|
|
; mov [modulo],dx
|
2011-01-29 19:25:55 +01:00
|
|
|
|
ret
|
2013-07-24 21:54:47 +02:00
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
;divident:
|
|
|
|
|
; rb 8
|
|
|
|
|
divisor:
|
|
|
|
|
rb 2
|
|
|
|
|
quotent:
|
|
|
|
|
rb 8
|
|
|
|
|
;modulo:
|
|
|
|
|
; rb 2
|
2013-07-24 21:54:47 +02:00
|
|
|
|
;------------------------------------------------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
copy_type_name:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
push esi
|
|
|
|
|
mov esi,ebx
|
|
|
|
|
mov edi,type_name
|
|
|
|
|
cld
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
@@:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
lodsb
|
|
|
|
|
stosb
|
|
|
|
|
test al,al
|
|
|
|
|
jnz @b
|
|
|
|
|
|
|
|
|
|
pop esi
|
|
|
|
|
ret
|
|
|
|
|
;------------------------------------------------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
get_files_information:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
call get_information_marked_files
|
|
|
|
|
cmp [inf_marked_yes],1
|
|
|
|
|
je .end_2
|
|
|
|
|
|
|
|
|
|
xor eax,eax
|
|
|
|
|
xor edx,edx
|
|
|
|
|
cmp [select_panel_counter],0
|
|
|
|
|
jne .right_1
|
|
|
|
|
|
|
|
|
|
mov ax,[left_start_draw_cursor_line]
|
|
|
|
|
mov ebx,10
|
|
|
|
|
div ebx
|
|
|
|
|
mov ebx,[left_start_draw_line]
|
|
|
|
|
add ebx,eax
|
|
|
|
|
imul ebx,304
|
|
|
|
|
add ebx,[left_folder_data]
|
|
|
|
|
call prepare_data_8
|
|
|
|
|
mov esi,read_folder_name
|
|
|
|
|
jmp .end
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.right_1:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov ax,[right_start_draw_cursor_line]
|
|
|
|
|
mov ebx,10
|
|
|
|
|
div ebx
|
|
|
|
|
mov ebx,[right_start_draw_line]
|
|
|
|
|
add ebx,eax
|
|
|
|
|
imul ebx,304
|
|
|
|
|
add ebx,[right_folder_data]
|
|
|
|
|
call prepare_data_8
|
|
|
|
|
mov esi,read_folder_1_name
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.end:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov [error_pointer],ebx
|
|
|
|
|
;--------------------------------------
|
|
|
|
|
push eax ebx
|
|
|
|
|
sub ebx,40
|
|
|
|
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
mov eax,[ebx+8]
|
|
|
|
|
mov [time.create],eax
|
|
|
|
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
mov eax,[ebx+12]
|
|
|
|
|
mov [date.create],eax
|
|
|
|
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|
|
|
|
mov eax,[ebx+16]
|
|
|
|
|
mov [time.access],eax
|
|
|
|
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
mov eax,[ebx+20]
|
|
|
|
|
mov [date.access],eax
|
|
|
|
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
mov eax,[ebx+24]
|
|
|
|
|
mov [time.change],eax
|
|
|
|
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
mov eax,[ebx+28]
|
|
|
|
|
mov [date.change],eax
|
|
|
|
|
pop ebx eax
|
|
|
|
|
;--------------------------------------
|
|
|
|
|
call copy_type_name
|
|
|
|
|
mov edi,file_name
|
|
|
|
|
call copy_path_1
|
|
|
|
|
|
|
|
|
|
test [ebx-40],byte 0x10
|
|
|
|
|
jz @f
|
|
|
|
|
|
|
|
|
|
push eax ebx
|
|
|
|
|
call get_inf_dir
|
|
|
|
|
mov [nesting_direction],0
|
|
|
|
|
pop ebx eax
|
|
|
|
|
dec [directories_counter]
|
|
|
|
|
jmp .end_2
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
@@:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov [nesting_direction],1
|
|
|
|
|
call get_file_size
|
|
|
|
|
test eax,eax
|
|
|
|
|
jz .end_1
|
|
|
|
|
|
|
|
|
|
call start_error_window_thread
|
|
|
|
|
add esp,4
|
|
|
|
|
jmp reload_dir_all
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.end_1:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov eax,[file_features_temp_area+32]
|
|
|
|
|
add [files_size.low],eax
|
|
|
|
|
mov eax,[file_features_temp_area+32+4]
|
|
|
|
|
adc [files_size.high],eax
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.end_2:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
ret
|
|
|
|
|
;------------------------------------------------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
get_information_marked_files:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
xor eax,eax
|
|
|
|
|
mov [inf_marked_yes],al
|
|
|
|
|
cmp [select_panel_counter],al
|
|
|
|
|
jne .right_1
|
|
|
|
|
|
|
|
|
|
mov ebp,[left_folder_block]
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.start:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov ebx,ebp
|
|
|
|
|
dec ebx
|
|
|
|
|
imul ebx,304
|
|
|
|
|
add ebx,[left_folder_data]
|
|
|
|
|
add ebx,32+40
|
|
|
|
|
cmp [ebx+299-40],byte 0
|
|
|
|
|
je @f
|
|
|
|
|
|
|
|
|
|
cmp [ebx],word '..'
|
|
|
|
|
jne .continue
|
|
|
|
|
|
|
|
|
|
cmp [ebx+2],byte 0
|
|
|
|
|
je .continue_1
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.continue:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov esi,read_folder_name
|
|
|
|
|
call prepare_data_9
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.continue_1:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov [inf_marked_yes],1
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
@@:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
dec ebp
|
|
|
|
|
jnz .start
|
|
|
|
|
|
|
|
|
|
ret
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.right_1:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov ebp,[right_folder_block]
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.start_1:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov ebx,ebp
|
|
|
|
|
dec ebx
|
|
|
|
|
imul ebx,304
|
|
|
|
|
add ebx,[right_folder_data]
|
|
|
|
|
add ebx,32+40
|
|
|
|
|
cmp [ebx+299-40],byte 0
|
|
|
|
|
je @f
|
|
|
|
|
|
|
|
|
|
cmp [ebx],word '..'
|
|
|
|
|
jne .continue_2
|
|
|
|
|
|
|
|
|
|
cmp [ebx+2],byte 0
|
|
|
|
|
je .continue_3
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.continue_2:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov esi,read_folder_1_name
|
|
|
|
|
call prepare_data_9
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.continue_3:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov [inf_marked_yes],1
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
@@:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
dec ebp
|
|
|
|
|
jnz .start_1
|
|
|
|
|
|
|
|
|
|
ret
|
|
|
|
|
;------------------------------------------------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
prepare_data_9:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov [error_pointer],ebx
|
|
|
|
|
mov edi,file_name
|
|
|
|
|
call copy_path_1
|
|
|
|
|
test [ebx-40],byte 0x10
|
|
|
|
|
jz @f
|
|
|
|
|
|
|
|
|
|
call get_inf_dir
|
|
|
|
|
ret
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
@@:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
inc [files_counter]
|
|
|
|
|
call get_file_size
|
|
|
|
|
test eax,eax
|
|
|
|
|
jz .continue
|
|
|
|
|
|
|
|
|
|
call start_error_window_thread
|
|
|
|
|
add esp,8+4
|
|
|
|
|
ret
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.continue:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov eax,[file_features_temp_area+32]
|
|
|
|
|
add [files_size.low],eax
|
|
|
|
|
mov eax,[file_features_temp_area+32+4]
|
|
|
|
|
adc [files_size.high],eax
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.continue_1:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
ret
|
|
|
|
|
;------------------------------------------------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
prepare_data_8:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
add ebx,32+40
|
|
|
|
|
cmp [ebx],word '..'
|
|
|
|
|
jne .continue
|
|
|
|
|
|
|
|
|
|
cmp [ebx+2],byte 0
|
|
|
|
|
jne .continue
|
|
|
|
|
|
|
|
|
|
add esp,4+4
|
|
|
|
|
jmp reload_dir
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.continue:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
ret
|
|
|
|
|
;------------------------------------------------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
get_inf_dir:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov [nesting_direction],0
|
|
|
|
|
pusha
|
|
|
|
|
mov [recursive_pointer],0
|
|
|
|
|
mov eax,[appl_memory]
|
|
|
|
|
mov [appl_memory_old],eax
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.1:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov [read_delete_dir_data.size],0
|
|
|
|
|
mov [read_delete_dir_data.return],delete_dir_data
|
|
|
|
|
call read_delete_dir
|
|
|
|
|
test eax,eax
|
|
|
|
|
jz @f
|
|
|
|
|
|
|
|
|
|
mov [error_pointer],file_name
|
|
|
|
|
call start_error_window_thread
|
|
|
|
|
popa
|
|
|
|
|
add esp,8+8
|
|
|
|
|
ret
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
@@:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov eax,[delete_dir_data+8]
|
|
|
|
|
imul eax,304
|
|
|
|
|
add eax,32
|
|
|
|
|
mov ebx,eax
|
|
|
|
|
add ebx,[appl_memory_old]
|
|
|
|
|
cmp ebx,[appl_memory]
|
|
|
|
|
jbe @f
|
|
|
|
|
|
|
|
|
|
mov ecx,[appl_memory]
|
|
|
|
|
mov ecx,ebx
|
|
|
|
|
mov [appl_memory],ecx
|
|
|
|
|
mcall 64,1
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
@@:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov eax,[delete_dir_data+8]
|
|
|
|
|
mov [read_delete_dir_data.size],eax
|
|
|
|
|
mov eax,[appl_memory_old]
|
|
|
|
|
mov [read_delete_dir_data.return],eax
|
|
|
|
|
call read_delete_dir
|
|
|
|
|
test eax,eax
|
|
|
|
|
jz @f
|
|
|
|
|
|
|
|
|
|
mov [error_pointer],file_name
|
|
|
|
|
call start_error_window_thread
|
|
|
|
|
popa
|
|
|
|
|
add esp,8+8
|
|
|
|
|
ret
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
@@:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
cmp [nesting_direction],0
|
|
|
|
|
je @f
|
|
|
|
|
|
|
|
|
|
call get_inf_dir_2
|
|
|
|
|
jnc .end
|
|
|
|
|
|
|
|
|
|
dec ebp
|
|
|
|
|
push ebp
|
|
|
|
|
jmp .1
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
@@:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
call get_inf_dir_1
|
|
|
|
|
jnc .end
|
|
|
|
|
dec ebp
|
|
|
|
|
push ebp
|
|
|
|
|
jmp .1
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.end:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
call return_delete_path
|
|
|
|
|
dec [recursive_pointer]
|
|
|
|
|
cmp [recursive_pointer],0
|
|
|
|
|
jge .1
|
|
|
|
|
|
|
|
|
|
mov ecx,[appl_memory_old]
|
|
|
|
|
cmp [appl_memory],ecx
|
|
|
|
|
je @f
|
|
|
|
|
|
|
|
|
|
mov [appl_memory],ecx
|
|
|
|
|
mcall 64,1
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
@@:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
popa
|
|
|
|
|
ret
|
|
|
|
|
;------------------------------------------------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
get_inf_dir_2:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
pop eax
|
|
|
|
|
pop ebp
|
|
|
|
|
push eax
|
|
|
|
|
jmp get_inf_dir_1.start
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
get_inf_dir_1:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
inc [directories_counter]
|
|
|
|
|
mov ebp,[appl_memory_old]
|
|
|
|
|
mov ebp,[ebp+8]
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.start:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov ebx,ebp
|
|
|
|
|
dec ebx
|
|
|
|
|
imul ebx,304
|
|
|
|
|
add ebx,[appl_memory_old]
|
|
|
|
|
add ebx,32+40
|
|
|
|
|
cmp [ebx],byte '.'
|
|
|
|
|
jne @f
|
|
|
|
|
|
|
|
|
|
cmp [ebx+1],byte 0
|
|
|
|
|
je .continue_4
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
@@:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
cmp [ebx],word '..'
|
|
|
|
|
jne .continue
|
|
|
|
|
|
|
|
|
|
cmp [ebx+2],byte 0
|
|
|
|
|
je .continue_4
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.continue:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov esi,file_name
|
|
|
|
|
inc [recursive_pointer]
|
|
|
|
|
call copy_path_2
|
|
|
|
|
test [ebx-40],byte 0x10
|
|
|
|
|
jnz .continue_3
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
@@:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
inc [files_counter]
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.continue_1:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
mov eax,[ebx+32-40]
|
|
|
|
|
add [files_size.low],eax
|
|
|
|
|
mov eax,[ebx+32+4-40]
|
|
|
|
|
adc [files_size.high],eax
|
|
|
|
|
dec [recursive_pointer]
|
|
|
|
|
call return_delete_path
|
|
|
|
|
dec ebp
|
|
|
|
|
jnz .start
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.continue_4:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
clc
|
|
|
|
|
mov [nesting_direction],1
|
|
|
|
|
ret
|
|
|
|
|
;--------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
.continue_3:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
stc
|
|
|
|
|
mov [nesting_direction],0
|
|
|
|
|
ret
|
|
|
|
|
;------------------------------------------------------------------------------
|
2011-01-29 19:25:55 +01:00
|
|
|
|
;type_patch_test:
|
2013-07-24 21:54:47 +02:00
|
|
|
|
; pusha
|
|
|
|
|
; mcall 5,200
|
|
|
|
|
; mcall 13,<290,300>,<3,13>,0x0
|
|
|
|
|
; mcall 4,<300,5>,0x80FFFFFF,file_name ;[error_pointer]
|
|
|
|
|
; mcall 47,0x160100,[recursive_pointer],<300,5>,0xffffff
|
|
|
|
|
; mcall 47,0x160100,ebp,<300,5>,0xffffff
|
|
|
|
|
; mcall 5,1
|
|
|
|
|
; popa
|
|
|
|
|
; ret
|
|
|
|
|
;temp_value_1 db '1',0
|
|
|
|
|
;temp_value_2 db '2',0
|
|
|
|
|
;temp_value_3 db '3',0
|
|
|
|
|
;temp_value_4 db '4',0
|
|
|
|
|
;temp_value_5 db '5',0
|
|
|
|
|
;------------------------------------------------------------------------------
|