From b055f3351ce402f4069442a544ac384cfcb07fc2 Mon Sep 17 00:00:00 2001 From: "Marat Zakiyanov (Mario79)" Date: Wed, 24 Jul 2013 19:54:47 +0000 Subject: [PATCH] KFM - display the date of creation, change, and access on the window of properties file/directory (Alt + Enter) git-svn-id: svn://kolibrios.org@3833 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/fs/kfm/trunk/data.inc | 40 +- programs/fs/kfm/trunk/file_inf.inc | 1004 ++++++++++++++++------------ programs/fs/kfm/trunk/kfm.asm | 4 +- programs/fs/kfm/trunk/text.inc | 20 +- 4 files changed, 609 insertions(+), 459 deletions(-) diff --git a/programs/fs/kfm/trunk/data.inc b/programs/fs/kfm/trunk/data.inc index 9fede5e297..b96be8c09c 100644 --- a/programs/fs/kfm/trunk/data.inc +++ b/programs/fs/kfm/trunk/data.inc @@ -1,10 +1,36 @@ ;--------------------------------------------------------------------- align 4 -files_counter rd 1 -directories_counter rd 1 +files_counter rd 1 +directories_counter rd 1 + files_size: - .low rd 1 - .high rd 1 + .low rd 1 + .high rd 1 +;Формат времени: +; * +0: byte: секунды +; * +1: byte: минуты +; * +2: byte: часы +; * +3: byte: зарезервировано (0) +; * например, 23.59.59 записывается как (в hex) 3B 3B 17 00 +time: +.create: + rd 1 +.access: + rd 1 +.change: + rd 1 +;Формат даты: +; * +0: byte: день +; * +1: byte: месяц +; * +2: word: год +; * например, 25.11.1979 записывается как (в hex) 19 0B BB 07 +date: +.create: + rd 1 +.access: + rd 1 +.change: + rd 1 ;--------------------------------------------------------------------- open_param rd 1 ;--------------------------------------------------------------------- @@ -90,14 +116,12 @@ align 4 left_start_draw_line rd 1 left_folder_block rd 1 left_start_draw_cursor_line rw 1 -;left_panel_clear_all rb 1 left_folder_block_1 rd 1 ;--------------------------------------------------------------------- align 4 right_start_draw_line rd 1 right_folder_block rd 1 right_start_draw_cursor_line rw 1 -;right_panel_clear_all rb 1 right_folder_block_1 rd 1 ;--------------------------------------------------------------------- align 4 @@ -197,10 +221,6 @@ type_name: rb 512 ;--------------------------------------------------------------------- align 4 -type_size_string: - rb 32 -;--------------------------------------------------------------------- -align 4 type_files_string: rb 16 ;--------------------------------------------------------------------- diff --git a/programs/fs/kfm/trunk/file_inf.inc b/programs/fs/kfm/trunk/file_inf.inc index 901deec311..bf2ab5fcb0 100644 --- a/programs/fs/kfm/trunk/file_inf.inc +++ b/programs/fs/kfm/trunk/file_inf.inc @@ -1,181 +1,218 @@ files_information: - 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 - mov eax,files_size - mov ebx,type_size_string - call decimal_string_20 - call start_files_information_thread - jmp still -;--------------------------------------------------------------------- + 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 +;------------------------------------------------------------------------------ start_files_information_thread: - mcall 9, procinfo, -1 - mov eax,[ebx+46] - shr eax,1 - add eax,[ebx+38] - sub eax,150 - mov [files_information_window_y+2],ax - mov eax,[ebx+42] - shr eax,1 - add eax,[ebx+34] - sub eax,125 - mov [files_information_window_x+2],ax - mcall 51,1,thread_files_information_start,thread_stack - ret -;--------------------------------------------------------------------- + mcall 9,procinfo,-1 + mov eax,[ebx+46] + shr eax,1 + add eax,[ebx+38] + sub eax,150 + mov [files_information_window_y+2],ax + mov eax,[ebx+42] + shr eax,1 + add eax,[ebx+34] + sub eax,125 + mov [files_information_window_x+2],ax + mcall 51,1,thread_files_information_start,thread_stack + ret +;------------------------------------------------------------------------------ draw_files_information_window: - mcall 12, 1 - mcall 0,[files_information_window_x] ,[files_information_window_y], 0x03ffffcc - mov edx,90 shl 16+50 - mov ebx,0xa0000 - mov esi,0x10000000 - cmp [inf_marked_yes],1 - je .continue_4 - cmp [nesting_direction],1 - je @f - add edx,15 + mcall 12,1 + mcall 0,[files_information_window_x],[files_information_window_y],0x03ffffcc + mov edx,100 shl 16+50 + mov ebx,0x800a0000 + mov esi,0x10000000 + cmp [inf_marked_yes],1 + je .continue_4 + + cmp [nesting_direction],1 + je @f + + add edx,15 +;-------------------------------------- .continue_4: - mcall 47, ,[files_counter] +; show files counter + mcall 47,,[files_counter] +;-------------------------------------- @@: - cmp [inf_marked_yes],1 - je .continue_2 - cmp [nesting_direction],0 - je .continue_2 - cmp [directories_counter],0 - je @f + cmp [inf_marked_yes],1 + je .continue_2 + + cmp [nesting_direction],0 + je .continue_2 + + cmp [directories_counter],0 + je @f +;-------------------------------------- .continue_2: - add edx,15 - mcall 47, ,[directories_counter] +; show directories counter + add edx,15 + mcall ,,[directories_counter] +;-------------------------------------- @@: - add edx,15 - mov ebx,edx - mcall 4, ,0x90000000,type_size_string - cmp [select_panel_counter],0 - jne .right_1 - mov edx,read_folder_name - jmp @f +; show file or directory size + add edx,15 + 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 +;-------------------------------------- .right_1: - mov edx,read_folder_1_name + mov edx,read_folder_1_name +;-------------------------------------- @@: - mcall 4,<75,35>,0x80000000, ;file_name - mcall 4,<10,35>,0x90000000,type_location - cmp [inf_marked_yes],1 - je .continue - mcall 4,<90,50>,0x80000000,type_name - mov ecx,0x90000000 - cmp [nesting_direction],1 - je @f - mcall 4,<10,50>, ,type_dir_name - jmp .continue + mcall 4,<75,35>,0x80000000, ;file_name + mcall ,<10,35>,0x90000000,type_location + cmp [inf_marked_yes],1 + je .continue + + mcall ,<90,50>,0x80000000,type_name + mov ecx,0x90000000 + cmp [nesting_direction],1 + je @f + + mcall ,<10,50>,,type_dir_name + jmp .continue +;-------------------------------------- @@: - mcall 4,<10,50>, ,type_file_name + mcall ,<10,50>,,type_file_name +;-------------------------------------- .continue: - cmp [inf_marked_yes],1 - je .continue_3 - cmp [nesting_direction],1 - je @f + cmp [inf_marked_yes],1 + je .continue_3 + + cmp [nesting_direction],1 + je @f +;-------------------------------------- .continue_3: - add ebx,15 - mcall 4, , ,type_files + add ebx,15 + mcall ,,,type_files +;-------------------------------------- @@: - cmp [inf_marked_yes],1 - je .continue_1 - cmp [nesting_direction],0 - je .continue_1 - cmp [directories_counter],0 - je @f + cmp [inf_marked_yes],1 + je .continue_1 + + cmp [nesting_direction],0 + je .continue_1 + + cmp [directories_counter],0 + je @f +;-------------------------------------- .continue_1: - add ebx,15 - mcall 4, , ,type_dir + add ebx,15 + mcall ,,,type_dir +;-------------------------------------- @@: - add ebx,15 - mcall 4, , ,type_size - mcall 12, 2 - ret -;--------------------------------------------------------------------- + add ebx,15 + mcall ,,,type_size + add ebx,15 + mcall ,,,type_create + add ebx,15 + mcall ,,,type_change + add ebx,15 + mcall ,,,type_access + sub ebx,30 + add ebx,107 shl 16 + mcall ,,0x80000000,type_limiters_data_time + add ebx,15 + mcall + add ebx,15 + mcall + + mcall 12,2 + ret +;------------------------------------------------------------------------------ +show_date_and_time_of_files_information: +; show date + add edx,15 + push edx + movzx ecx,byte [ebp+0] + mcall ,0x00020000 + add edx,24 shl 16 + movzx ecx,byte [ebp+1] + mcall + add edx,23 shl 16 + movzx ecx,word [ebp+2] + mcall ,0x00040000 + sub ebp,12 +; show time + add edx,37 shl 16 + 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 +;------------------------------------------------------------------------------ thread_files_information_start: .red: - call draw_files_information_window + call draw_files_information_window +;-------------------------------------- .still: - mcall 10 - cmp eax,1 - je .red - cmp eax,2 - je .key - cmp eax,3 - je .button - jmp .still + mcall 10 + cmp eax,1 + je .red + + cmp eax,2 + je .key + + cmp eax,3 + je .button + + jmp .still +;-------------------------------------- .key: + mcall 2 +;-------------------------------------- .button: - mcall -1 - jmp .still -;--------------------------------------------------------------------- -; ПЕРЕВОД 10-НЫХ ЧИСЕЛ СО ЗНАКОМ В СТРОКОВЫЙ ВИД -; Вход: -; EAX - указатель на число -; EBX - адрес строки -;--------------------------------------------------------------------- -decimal_string_20: - push eax ebx ecx edx - mov [divisor],word 10 - mov ebp,eax - xor ecx,ecx -; mov [ebx],byte '0' -; inc ebx -.p3: - xor edx,edx - push ebx - call Division_64bit - mov eax,[quotent] - mov [ebp],eax - mov eax,[quotent+4] - mov [ebp+4],eax - pop ebx - add edx,48 - push edx - inc ecx - cmp [ebp],dword 0 - jne .p3 - cmp [ebp+4],dword 0 - jne .p3 - cmp ecx,19 - jbe .p4 - mov ecx,20 - dec ebx -.p4: - pop edx - mov [ebx],dl - inc ebx - loop .p4 - mov [ebx], byte 0 - pop edx ecx ebx eax - ret -;---------------------------------------------------------- + mcall -1 + jmp .still +;------------------------------------------------------------------------------ ; деление 64-битного числа divident на 16-битное число divisor. ; Частное помещается в 64-битную переменную quotent, ; а остаток - в 16-битную переменную modulo Division_64bit: - 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 + 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 ret - +;-------------------------------------- ;divident: ; rb 8 divisor: @@ -184,298 +221,379 @@ quotent: rb 8 ;modulo: ; rb 2 -;--------------------------------------------------------------------- +;------------------------------------------------------------------------------ copy_type_name: - push esi - mov esi,ebx - mov edi,type_name + push esi + mov esi,ebx + mov edi,type_name + cld +;-------------------------------------- @@: - cld - lodsb - stosb - test al,al - jnz @b - pop esi - ret -;--------------------------------------------------------------------- -get_files_information: - 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 -.right_1: - 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 -.end: - mov [error_pointer],ebx - 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 -@@: - 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 -.end_1: -; inc [files_counter] - 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 -.end_2: - ret -;--------------------------------------------------------------------- -get_information_marked_files: - xor eax,eax - mov [inf_marked_yes],al - cmp [select_panel_counter],al - jne .right_1 - mov ebp,[left_folder_block] -.start: - 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 -.continue: - mov esi,read_folder_name - call prepare_data_9 -.continue_1: - mov [inf_marked_yes],1 -@@: - dec ebp - jnz .start - ret -.right_1: - mov ebp,[right_folder_block] -.start_1: - 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 -.continue_2: - mov esi,read_folder_1_name - call prepare_data_9 -.continue_3: - mov [inf_marked_yes],1 -@@: - dec ebp - jnz .start_1 - ret -;--------------------------------------------------------------------- -prepare_data_9: - mov [error_pointer],ebx - mov edi,file_name - call copy_path_1 - test [ebx-40],byte 0x10 - jz @f - call get_inf_dir - ret -@@: - inc [files_counter] - call get_file_size - test eax,eax - jz .continue - call start_error_window_thread - add esp,8+4 - ret -.continue: - 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 -.continue_1: - ret -;--------------------------------------------------------------------- -prepare_data_8: - add ebx,32+40 - cmp [ebx],word '..' - jne .continue - cmp [ebx+2],byte 0 - jne .continue - add esp,4+4 - jmp reload_dir -.continue: - ret -;--------------------------------------------------------------------- -get_inf_dir: - mov [nesting_direction],0 - pusha - mov [recursive_pointer],0 - mov eax,[appl_memory] - mov [appl_memory_old],eax -.1: - 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 -@@: - 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 -@@: - 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 -@@: - cmp [nesting_direction],0 - je @f - call get_inf_dir_2 - jnc .end - dec ebp - push ebp - jmp .1 -@@: - call get_inf_dir_1 - jnc .end - dec ebp - push ebp - jmp .1 -.end: - 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 -@@: - popa - ret -;--------------------------------------------------------------------- -get_inf_dir_2: - pop eax - pop ebp - push eax - jmp get_inf_dir_1.start -get_inf_dir_1: - inc [directories_counter] - mov ebp,[appl_memory_old] - mov ebp,[ebp+8] -.start: - 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 -@@: - cmp [ebx],word '..' - jne .continue - cmp [ebx+2],byte 0 - je .continue_4 -.continue: - mov esi,file_name - inc [recursive_pointer] - call copy_path_2 - test [ebx-40],byte 0x10 - jnz .continue_3 -@@: - inc [files_counter] -.continue_1: - 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 + lodsb + stosb + test al,al + jnz @b -.continue_4: - clc - mov [nesting_direction],1 - ret + pop esi + ret +;------------------------------------------------------------------------------ +get_files_information: + 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 +;-------------------------------------- +.right_1: + 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 +;-------------------------------------- +.end: + mov [error_pointer],ebx +;-------------------------------------- + push eax ebx + sub ebx,40 +; время создания файла + mov eax,[ebx+8] + mov [time.create],eax +; дата создания файла + mov eax,[ebx+12] + mov [date.create],eax +; время последнего доступа (чтение или запись) + mov eax,[ebx+16] + mov [time.access],eax +; дата последнего доступа + mov eax,[ebx+20] + mov [date.access],eax +; время последней модификации + mov eax,[ebx+24] + mov [time.change],eax +; дата последней модификации + 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 +;-------------------------------------- +@@: + 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 +;-------------------------------------- +.end_1: + 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 +;-------------------------------------- +.end_2: + ret +;------------------------------------------------------------------------------ +get_information_marked_files: + xor eax,eax + mov [inf_marked_yes],al + cmp [select_panel_counter],al + jne .right_1 + + mov ebp,[left_folder_block] +;-------------------------------------- +.start: + 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 +;-------------------------------------- +.continue: + mov esi,read_folder_name + call prepare_data_9 +;-------------------------------------- +.continue_1: + mov [inf_marked_yes],1 +;-------------------------------------- +@@: + dec ebp + jnz .start + + ret +;-------------------------------------- +.right_1: + mov ebp,[right_folder_block] +;-------------------------------------- +.start_1: + 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 +;-------------------------------------- +.continue_2: + mov esi,read_folder_1_name + call prepare_data_9 +;-------------------------------------- .continue_3: - stc - mov [nesting_direction],0 - ret -;--------------------------------------------------------------------- + mov [inf_marked_yes],1 +;-------------------------------------- +@@: + dec ebp + jnz .start_1 + + ret +;------------------------------------------------------------------------------ +prepare_data_9: + mov [error_pointer],ebx + mov edi,file_name + call copy_path_1 + test [ebx-40],byte 0x10 + jz @f + + call get_inf_dir + ret +;-------------------------------------- +@@: + inc [files_counter] + call get_file_size + test eax,eax + jz .continue + + call start_error_window_thread + add esp,8+4 + ret +;-------------------------------------- +.continue: + 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 +;-------------------------------------- +.continue_1: + ret +;------------------------------------------------------------------------------ +prepare_data_8: + add ebx,32+40 + cmp [ebx],word '..' + jne .continue + + cmp [ebx+2],byte 0 + jne .continue + + add esp,4+4 + jmp reload_dir +;-------------------------------------- +.continue: + ret +;------------------------------------------------------------------------------ +get_inf_dir: + mov [nesting_direction],0 + pusha + mov [recursive_pointer],0 + mov eax,[appl_memory] + mov [appl_memory_old],eax +;-------------------------------------- +.1: + 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 +;-------------------------------------- +@@: + 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 +;-------------------------------------- +@@: + 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 +;-------------------------------------- +@@: + cmp [nesting_direction],0 + je @f + + call get_inf_dir_2 + jnc .end + + dec ebp + push ebp + jmp .1 +;-------------------------------------- +@@: + call get_inf_dir_1 + jnc .end + dec ebp + push ebp + jmp .1 +;-------------------------------------- +.end: + 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 +;-------------------------------------- +@@: + popa + ret +;------------------------------------------------------------------------------ +get_inf_dir_2: + pop eax + pop ebp + push eax + jmp get_inf_dir_1.start +;-------------------------------------- +get_inf_dir_1: + inc [directories_counter] + mov ebp,[appl_memory_old] + mov ebp,[ebp+8] +;-------------------------------------- +.start: + 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 +;-------------------------------------- +@@: + cmp [ebx],word '..' + jne .continue + + cmp [ebx+2],byte 0 + je .continue_4 +;-------------------------------------- +.continue: + mov esi,file_name + inc [recursive_pointer] + call copy_path_2 + test [ebx-40],byte 0x10 + jnz .continue_3 +;-------------------------------------- +@@: + inc [files_counter] +;-------------------------------------- +.continue_1: + 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 +;-------------------------------------- +.continue_4: + clc + mov [nesting_direction],1 + ret +;-------------------------------------- +.continue_3: + stc + mov [nesting_direction],0 + ret +;------------------------------------------------------------------------------ ;type_patch_test: -; 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 -;--------------------------------------------------------------------- \ No newline at end of file +; 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 +;------------------------------------------------------------------------------ \ No newline at end of file diff --git a/programs/fs/kfm/trunk/kfm.asm b/programs/fs/kfm/trunk/kfm.asm index 3209a24ddd..e7e5cfc7df 100644 --- a/programs/fs/kfm/trunk/kfm.asm +++ b/programs/fs/kfm/trunk/kfm.asm @@ -1,6 +1,6 @@ ;***************************************************************************** ; KFM - Kolibri File Manager -; Copyright (c) 2006 - 2012, Marat Zakiyanov aka Mario79, aka Mario +; Copyright (c) 2006 - 2013, Marat Zakiyanov aka Mario79, aka Mario ; All rights reserved. ; ; Redistribution and use in source and binary forms, with or without @@ -25,7 +25,7 @@ ; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ;***************************************************************************** -; KFM v0.47e 16.04.2012 +; KFM v0.47g 24/07/2013 ;--------------------------------------------------------------------- use32 org 0x0 diff --git a/programs/fs/kfm/trunk/text.inc b/programs/fs/kfm/trunk/text.inc index 4c62714841..0ac1202e31 100644 --- a/programs/fs/kfm/trunk/text.inc +++ b/programs/fs/kfm/trunk/text.inc @@ -1,4 +1,4 @@ -header_text db 'Kolibri File Manager v0.47f 04/07/2013',0 +header_text db 'Kolibri File Manager v0.47g 24/07/2013',0 ;--------------------------------------------------------------------- fbutton_name: .f1 db '1 Help',0 @@ -155,11 +155,23 @@ type_files: db 'Files:',0 ;--------------------------------------------------------------------- type_dir: - db 'Dir.:',0 + db 'Directories:',0 ;--------------------------------------------------------------------- type_size: db 'Size:',0 ;--------------------------------------------------------------------- +type_create: + db 'Create date:',0 +;--------------------------------------------------------------------- +type_change: + db 'Change date:',0 +;--------------------------------------------------------------------- +type_access: + db 'Access date:',0 +;--------------------------------------------------------------------- +type_limiters_data_time: + db '/ / : :',0 +;--------------------------------------------------------------------- mouse_left_panel: db 'Left ',0 mouse_right_panel: @@ -191,8 +203,8 @@ background_tile: background_stretch: db '\S ' ;--------------------------------------------------------------------- -files_information_window_x: dd 100 shl 16 + 250 -files_information_window_y: dd 100 shl 16 + 300 +files_information_window_x: dd 100 shl 16 + 300 +files_information_window_y: dd 100 shl 16 + 200 ;--------------------------------------------------------------------- error_window_x: dd 100 shl 16 + 250 error_window_y: dd 100 shl 16 + 80