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
|
//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()
|
||||||
|
@ -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();
|
|
||||||
}
|
}
|
@ -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;
|
||||||
|
@ -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
|
@ -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
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