forked from KolibriOS/kolibrios
Eolite: uses library fs.obj
git-svn-id: svn://kolibrios.org@5883 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
a7698530ac
commit
cd41c5ddfc
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -18,6 +18,7 @@
|
||||
//obj
|
||||
#include "..\lib\obj\libini.h"
|
||||
#include "..\lib\obj\box_lib.h"
|
||||
#include "..\lib\obj\fs.h"
|
||||
|
||||
byte CMD_ENABLE_SAVE_IMG = false;
|
||||
|
||||
@ -124,6 +125,9 @@ void main()
|
||||
|
||||
load_dll(boxlib, #box_lib_init,0);
|
||||
load_dll(libini, #lib_init,1);
|
||||
|
||||
lib_init_fs();
|
||||
|
||||
eolite_ini_path = abspath("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_File2(dword way, sh_progr)
|
||||
{
|
||||
dword dirbuf, fcount, i, filename;
|
||||
/*dword dirbuf, fcount, i, filename;
|
||||
int error;
|
||||
char del_from[4096];
|
||||
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()
|
||||
|
@ -7,12 +7,14 @@ enum {NOCUT, CUT};
|
||||
|
||||
Clipboard clipboard;
|
||||
|
||||
dword _copy_path_ = 0;
|
||||
void Copy(dword pcth, char cut)
|
||||
{
|
||||
dword selected_offset2;
|
||||
byte copy_t[4096];
|
||||
dword buff_data;
|
||||
int ind = 0;
|
||||
/*
|
||||
if (selected_count)
|
||||
{
|
||||
buff_data = malloc(selected_count*4096+10);
|
||||
@ -42,6 +44,9 @@ void Copy(dword pcth, char cut)
|
||||
}
|
||||
cut_active = cut;
|
||||
free(buff_data);
|
||||
*/
|
||||
_copy_path_ = strdup(#file_path);
|
||||
cut_active = cut;
|
||||
}
|
||||
|
||||
|
||||
@ -56,9 +61,27 @@ void PasteThread()
|
||||
int j;
|
||||
int cnt = 0;
|
||||
dword buf;
|
||||
dword tmp;
|
||||
file_count_copy = 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);
|
||||
if (DSDWORD[buf+4] != 3) return;
|
||||
cnt = ESINT[buf+8];
|
||||
@ -101,11 +124,8 @@ void PasteThread()
|
||||
Del_File2(#copy_from, 0);
|
||||
|
||||
}
|
||||
}
|
||||
if (cut_active)
|
||||
{
|
||||
}*/
|
||||
cut_active=false;
|
||||
}
|
||||
if (info_after_copy) notify(INFO_AFTER_COPY);
|
||||
DialogExit();
|
||||
|
||||
}
|
@ -155,6 +155,7 @@ void Quest()
|
||||
DrawFlatButton(145,138,70,20,302,0xC6DFC6,T_NO);
|
||||
}
|
||||
|
||||
/*
|
||||
void GetSizeDir(dword way)
|
||||
{
|
||||
dword dirbuf, fcount, i, filename;
|
||||
@ -184,17 +185,21 @@ void GetSizeDir(dword way)
|
||||
free(cur_file);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
void GetSizeMoreFiles(dword way)
|
||||
{
|
||||
char cur_file[4096];
|
||||
dword selected_offset2;
|
||||
|
||||
size_dir = 0;
|
||||
for (i=0; i<files.count; i++)
|
||||
{
|
||||
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);
|
||||
size_dir += fs.get_size(#cur_file);
|
||||
/*
|
||||
if (TestBit(ESDWORD[file_mas[i]*304+buf+32], 4) )
|
||||
{
|
||||
debugln(#cur_file);
|
||||
@ -203,10 +208,10 @@ void GetSizeMoreFiles(dword way)
|
||||
}
|
||||
else
|
||||
{
|
||||
GetFileInfo(#cur_file, #file_info_dirsize);
|
||||
size_dir += file_info_dirsize.sizelo;
|
||||
size_dir += fs.get_size(#cur_file);
|
||||
file_count++;
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -235,7 +240,8 @@ void properties_dialog()
|
||||
GetFileInfo(#file_path, #file_info_general);
|
||||
strcpy(#file_name2, #file_name);
|
||||
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_hidden = file_info_general.hidden;
|
||||
atr_system = file_info_general.system;
|
||||
|
@ -16,6 +16,11 @@
|
||||
|
||||
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)
|
||||
{
|
||||
dword TEXT_ERROR = malloc(1024);
|
||||
@ -25,7 +30,7 @@ char a_libdir[43] = "/sys/lib/\0";
|
||||
}
|
||||
|
||||
// stdcall with 1 parameter
|
||||
void dll_Load() {
|
||||
:void dll_Load() {
|
||||
asm {
|
||||
push ebp
|
||||
mov ebp, esp
|
||||
@ -83,7 +88,7 @@ asm {
|
||||
}
|
||||
|
||||
//stdcall with 2 parameters
|
||||
void dll_Link() {
|
||||
:void dll_Link() {
|
||||
asm {
|
||||
push ebp
|
||||
mov ebp, esp
|
||||
@ -113,7 +118,7 @@ asm {
|
||||
|
||||
|
||||
//stdcall with 1 parameter
|
||||
void dll_Init() {
|
||||
:void dll_Init() {
|
||||
asm {
|
||||
push ebp
|
||||
mov ebp, esp
|
||||
@ -131,7 +136,7 @@ asm {
|
||||
|
||||
|
||||
// stdcall with 2 parameters
|
||||
void dll_GetProcAddress(){
|
||||
:void dll_GetProcAddress(){
|
||||
asm {
|
||||
push ebp
|
||||
mov ebp, esp
|
||||
@ -161,7 +166,7 @@ asm {
|
||||
|
||||
|
||||
// stdcall with 2 parameters
|
||||
void dll_StrCmp() {
|
||||
:void dll_StrCmp() {
|
||||
asm {
|
||||
push ebp
|
||||
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;
|
||||
// load DLL
|
||||
@ -239,7 +244,7 @@ int load_dll2(dword dllname, import_table, byte need_init)
|
||||
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))
|
||||
{
|
||||
@ -249,5 +254,42 @@ byte load_dll(dword dllname, import_table, byte need_init)
|
||||
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
|
@ -25,6 +25,8 @@ dword I_Path = #program_path;
|
||||
char param[4096];
|
||||
char program_path[4096];
|
||||
|
||||
dword TEMP = 0;
|
||||
|
||||
#define NULL 0
|
||||
#define OLD -1
|
||||
#define true 1
|
||||
|
68
programs/cmm/lib/obj/fs.h
Normal file
68
programs/cmm/lib/obj/fs.h
Normal 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
|
Loading…
Reference in New Issue
Block a user