Eolite: uses library fs.obj

git-svn-id: svn://kolibrios.org@5883 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
pavelyakov 2015-11-05 20:49:42 +00:00
parent a7698530ac
commit cd41c5ddfc
9 changed files with 164 additions and 21 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -18,6 +18,7 @@
//obj //obj
#include "..\lib\obj\libini.h" #include "..\lib\obj\libini.h"
#include "..\lib\obj\box_lib.h" #include "..\lib\obj\box_lib.h"
#include "..\lib\obj\fs.h"
byte CMD_ENABLE_SAVE_IMG = false; byte CMD_ENABLE_SAVE_IMG = false;
@ -124,6 +125,9 @@ void main()
load_dll(boxlib, #box_lib_init,0); load_dll(boxlib, #box_lib_init,0);
load_dll(libini, #lib_init,1); load_dll(libini, #lib_init,1);
lib_init_fs();
eolite_ini_path = abspath("Eolite.ini"); eolite_ini_path = abspath("Eolite.ini");
fd_path_eolite_ini_path = "/fd/1/File Managers/Eolite.ini"; fd_path_eolite_ini_path = "/fd/1/File Managers/Eolite.ini";
@ -874,7 +878,7 @@ void Del_Form()
int del_error; int del_error;
int Del_File2(dword way, sh_progr) int Del_File2(dword way, sh_progr)
{ {
dword dirbuf, fcount, i, filename; /*dword dirbuf, fcount, i, filename;
int error; int error;
char del_from[4096]; char del_from[4096];
if (isdir(way)) if (isdir(way))
@ -896,7 +900,8 @@ int Del_File2(dword way, sh_progr)
} }
} }
} }
if (error = DeleteFile(way)) del_error = error; if (error = DeleteFile(way)) del_error = error;*/
fs.remove(way);
} }
void Del_File_Thread() void Del_File_Thread()

View File

@ -7,12 +7,14 @@ enum {NOCUT, CUT};
Clipboard clipboard; Clipboard clipboard;
dword _copy_path_ = 0;
void Copy(dword pcth, char cut) void Copy(dword pcth, char cut)
{ {
dword selected_offset2; dword selected_offset2;
byte copy_t[4096]; byte copy_t[4096];
dword buff_data; dword buff_data;
int ind = 0; int ind = 0;
/*
if (selected_count) if (selected_count)
{ {
buff_data = malloc(selected_count*4096+10); buff_data = malloc(selected_count*4096+10);
@ -42,6 +44,9 @@ void Copy(dword pcth, char cut)
} }
cut_active = cut; cut_active = cut;
free(buff_data); free(buff_data);
*/
_copy_path_ = strdup(#file_path);
cut_active = cut;
} }
@ -56,9 +61,27 @@ void PasteThread()
int j; int j;
int cnt = 0; int cnt = 0;
dword buf; dword buf;
dword tmp;
file_count_copy = 0; file_count_copy = 0;
copy_bar.value = 0; copy_bar.value = 0;
if(_copy_path_)
{
DisplayOperationForm();
IF(!TEMP) TEMP = malloc(4096);
buf = _copy_path_;
while(DSBYTE[buf])
{
IF(DSBYTE[buf]=='/')tmp = buf;
buf++;
}
sprintf(TEMP,"%s/%s",#path,tmp);
IF(cut_active) fs.move(_copy_path_,TEMP);
ELSE fs.copy(_copy_path_,TEMP);
free(_copy_path_);
DialogExit();
}
_copy_path_ = 0;
/*
buf = clipboard.GetSlotData(clipboard.GetSlotCount()-1); buf = clipboard.GetSlotData(clipboard.GetSlotCount()-1);
if (DSDWORD[buf+4] != 3) return; if (DSDWORD[buf+4] != 3) return;
cnt = ESINT[buf+8]; cnt = ESINT[buf+8];
@ -101,11 +124,8 @@ void PasteThread()
Del_File2(#copy_from, 0); Del_File2(#copy_from, 0);
} }
} }*/
if (cut_active) cut_active=false;
{
cut_active=false;
}
if (info_after_copy) notify(INFO_AFTER_COPY); if (info_after_copy) notify(INFO_AFTER_COPY);
DialogExit();
} }

View File

@ -155,6 +155,7 @@ void Quest()
DrawFlatButton(145,138,70,20,302,0xC6DFC6,T_NO); DrawFlatButton(145,138,70,20,302,0xC6DFC6,T_NO);
} }
/*
void GetSizeDir(dword way) void GetSizeDir(dword way)
{ {
dword dirbuf, fcount, i, filename; dword dirbuf, fcount, i, filename;
@ -184,17 +185,21 @@ void GetSizeDir(dword way)
free(cur_file); free(cur_file);
} }
} }
*/
void GetSizeMoreFiles(dword way) void GetSizeMoreFiles(dword way)
{ {
char cur_file[4096]; char cur_file[4096];
dword selected_offset2; dword selected_offset2;
size_dir = 0;
for (i=0; i<files.count; i++) for (i=0; i<files.count; i++)
{ {
selected_offset2 = file_mas[i]*304 + buf+32 + 7; selected_offset2 = file_mas[i]*304 + buf+32 + 7;
if (ESBYTE[selected_offset2]) { if(ESBYTE[selected_offset2])
{
sprintf(#cur_file,"%s%s",way,file_mas[i]*304+buf+72); sprintf(#cur_file,"%s%s",way,file_mas[i]*304+buf+72);
size_dir += fs.get_size(#cur_file);
/*
if (TestBit(ESDWORD[file_mas[i]*304+buf+32], 4) ) if (TestBit(ESDWORD[file_mas[i]*304+buf+32], 4) )
{ {
debugln(#cur_file); debugln(#cur_file);
@ -203,10 +208,10 @@ void GetSizeMoreFiles(dword way)
} }
else else
{ {
GetFileInfo(#cur_file, #file_info_dirsize); size_dir += fs.get_size(#cur_file);
size_dir += file_info_dirsize.sizelo;
file_count++; file_count++;
} }
*/
} }
} }
} }
@ -235,7 +240,8 @@ void properties_dialog()
GetFileInfo(#file_path, #file_info_general); GetFileInfo(#file_path, #file_info_general);
strcpy(#file_name2, #file_name); strcpy(#file_name2, #file_name);
file_name_ed.size = strlen(#file_name2); file_name_ed.size = strlen(#file_name2);
if(itdir) GetSizeDir(#file_path); //if(itdir) GetSizeDir(#file_path);
size_dir = fs.get_size(#file_path);
atr_readonly = file_info_general.readonly; atr_readonly = file_info_general.readonly;
atr_hidden = file_info_general.hidden; atr_hidden = file_info_general.hidden;
atr_system = file_info_general.system; atr_system = file_info_general.system;

View File

@ -16,6 +16,11 @@
char a_libdir[43] = "/sys/lib/\0"; char a_libdir[43] = "/sys/lib/\0";
dword GLOBAL_FUNC_LIB = 0;
dword G_FUNC_LOAD = 0;
dword G_FUNC_GET = 0;
dword PATH_LIBRARY_LOADING = "/rd/1/lib/library.obj";
:inline void error_init(dword text) :inline void error_init(dword text)
{ {
dword TEXT_ERROR = malloc(1024); dword TEXT_ERROR = malloc(1024);
@ -25,7 +30,7 @@ char a_libdir[43] = "/sys/lib/\0";
} }
// stdcall with 1 parameter // stdcall with 1 parameter
void dll_Load() { :void dll_Load() {
asm { asm {
push ebp push ebp
mov ebp, esp mov ebp, esp
@ -83,7 +88,7 @@ asm {
} }
//stdcall with 2 parameters //stdcall with 2 parameters
void dll_Link() { :void dll_Link() {
asm { asm {
push ebp push ebp
mov ebp, esp mov ebp, esp
@ -113,7 +118,7 @@ asm {
//stdcall with 1 parameter //stdcall with 1 parameter
void dll_Init() { :void dll_Init() {
asm { asm {
push ebp push ebp
mov ebp, esp mov ebp, esp
@ -131,7 +136,7 @@ asm {
// stdcall with 2 parameters // stdcall with 2 parameters
void dll_GetProcAddress(){ :void dll_GetProcAddress(){
asm { asm {
push ebp push ebp
mov ebp, esp mov ebp, esp
@ -161,7 +166,7 @@ asm {
// stdcall with 2 parameters // stdcall with 2 parameters
void dll_StrCmp() { :void dll_StrCmp() {
asm { asm {
push ebp push ebp
mov ebp, esp mov ebp, esp
@ -187,7 +192,7 @@ asm {
} }
} }
int load_dll2(dword dllname, import_table, byte need_init) :int load_dll2(dword dllname, import_table, byte need_init)
{ {
//dword dllentry=0; //dword dllentry=0;
// load DLL // load DLL
@ -239,7 +244,7 @@ int load_dll2(dword dllname, import_table, byte need_init)
return -1; return -1;
} }
byte load_dll(dword dllname, import_table, byte need_init) :byte load_dll(dword dllname, import_table, byte need_init)
{ {
if (load_dll2(dllname, import_table, need_init)) if (load_dll2(dllname, import_table, need_init))
{ {
@ -249,5 +254,42 @@ byte load_dll(dword dllname, import_table, byte need_init)
return true; return true;
} }
:struct OBJECT
{
void load(dword dllname);
dword get(dword fname);
} library;
:void OBJECT::load(dword dllname)
{
dword tmp;
IF(!GLOBAL_FUNC_LIB)
{
$mov eax, 68
$mov ebx, 19
ECX=#PATH_LIBRARY_LOADING;
$int 0x40
tmp = EAX;
GLOBAL_FUNC_LIB = tmp;
tmp+=4;
G_FUNC_LOAD = DSDWORD[tmp];
tmp+=8;
G_FUNC_GET = DSDWORD[tmp];
}
G_FUNC_LOAD stdcall(dllname);
}
:dword OBJECT::get(dword fname)
{
dword tmp=fname;
G_FUNC_GET stdcall(tmp);
return EAX;
}
/*
#define INIT_(name) byte init_#name(){object.load(name);
#define IMPORT(name) name = object.get(name);
#define _INIT return 1;}
*/
#endif #endif

View File

@ -25,6 +25,8 @@ dword I_Path = #program_path;
char param[4096]; char param[4096];
char program_path[4096]; char program_path[4096];
dword TEMP = 0;
#define NULL 0 #define NULL 0
#define OLD -1 #define OLD -1
#define true 1 #define true 1

68
programs/cmm/lib/obj/fs.h Normal file
View File

@ -0,0 +1,68 @@
#ifndef INCLUDE_LIBFS_H
#define INCLUDE_LIBFS_H
#print "[include <obj/fs.h>]\n"
#ifndef INCLUDE_KOLIBRI_H
#include "../lib/kolibri.h"
#endif
#ifndef INCLUDE_DLL_H
#include "../lib/dll.h"
#endif
:struct FILE_SYSTEM_FUNCTION
{
dword remove_pointer;
byte remove(dword path);
dword move_pointer;
byte move(dword path1,path2);
dword copy_pointer;
byte copy(dword path1,path2);
dword get_size_pointer;
qword get_size(dword path);
} fs;
:byte FILE_SYSTEM_FUNCTION::remove(dword path)
{
dword tmp = path;
remove_pointer stdcall(tmp);
return EAX;
}
:qword FILE_SYSTEM_FUNCTION::get_size(dword path)
{
dword tmp = path;
get_size_pointer stdcall(tmp);
return EAX;
}
:byte FILE_SYSTEM_FUNCTION::move(dword path1,path2)
{
dword tmp1 = path1;
dword tmp2 = path2;
move_pointer stdcall(tmp1,tmp2);
return EAX;
}
:byte FILE_SYSTEM_FUNCTION::copy(dword path1,path2)
{
dword tmp1 = path1;
dword tmp2 = path2;
copy_pointer stdcall(tmp1,tmp2);
return EAX;
}
:void lib_init_fs()
{
library.load("/sys/LIB/FS.OBJ");
fs.remove_pointer = library.get("fs.remove");
fs.get_size_pointer = library.get("fs.get_size");
fs.move_pointer = library.get("fs.move");
fs.copy_pointer = library.get("fs.copy");
//alert(itoa(fs.get_size("/sys/")));
}
#endif