Subversion Repositories Kolibri OS

Rev

Rev 5626 | Rev 5676 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5626 Rev 5631
Line 1... Line 1...
1
#ifndef INCLUDE_DLL_H
1
#ifndef INCLUDE_DLL_H
2
#define INCLUDE_DLL_H
2
#define INCLUDE_DLL_H
Line 3... Line 3...
3
 
3
 
4
#ifndef INCLUDE_KOLIBRI_H
4
#ifndef INCLUDE_FILESYSTEM_H
5
#include "../lib/file_system.h"
5
#include "../lib/file_system.h"
Line -... Line 6...
-
 
6
#endif
-
 
7
 
-
 
8
#ifdef LANG_RUS
-
 
9
	#define _TEXT_ERROR_ADD "'Žè¨¡ª  ¯à¨ § £à㧪¥ ¡¨¡«¨®â¥ª¨"
-
 
10
#elif LANG_EST
-
 
11
	#define _TEXT_ERROR_ADD "'Viga teegi laadimisel"
-
 
12
#else
Line 6... Line 13...
6
#endif
13
	#define _TEXT_ERROR_ADD "'Error while loading library"
Line 7... Line 14...
7
 
14
#endif
8
 
15
 
9
char a_libdir[43]  = "/sys/lib/\0";
16
char a_libdir[43]  = "/sys/lib/\0";
10
 
-
 
11
:inline void error_init(dword text)
-
 
12
{
-
 
13
	dword TEXT_ERROR = malloc(1024);
-
 
14
	#ifdef LANG_RUS
-
 
15
		strcpy(TEXT_ERROR,"'Žè¨¡ª  ¯à¨ § £à㧪¥ ¡¨¡«¨®â¥ª¨ `");
-
 
16
	#elif LANG_EST
-
 
17
		strcpy(TEXT_ERROR,"'Viga teegi laadimisel `");
17
 
18
	#else
-
 
19
		strcpy(TEXT_ERROR,"'Error while loading library `");
18
:inline void error_init(dword text)
20
	#endif
19
{
21
	strcat(TEXT_ERROR,text);
20
	dword TEXT_ERROR = malloc(1024);
Line 22... Line 21...
22
	strcat(TEXT_ERROR,"`' -E");
21
	sprintf("%s `%s`' -E",_TEXT_ERROR_ADD,text);
Line 116... Line 115...
116
void dll_Init() {
115
void dll_Init() {
117
asm {
116
asm {
118
        push    ebp
117
        push    ebp
119
        mov     ebp, esp
118
        mov     ebp, esp
120
        pushad
119
        pushad
121
        mov     eax, #mem_Alloc
120
        mov     eax, #malloc
122
        mov     ebx, #mem_Free;
121
        mov     ebx, #free;
123
        mov     ecx, #mem_ReAlloc;
122
        mov     ecx, #realloc;
124
        mov     edx, #dll_Load;
123
        mov     edx, #dll_Load;
125
        call    SSDWORD[EBP+8]
124
        call    SSDWORD[EBP+8]
126
        popad
125
        popad
127
        leave
126
        leave
128
        ret     4
127
        ret     4
Line 237... Line 236...
237
        return 0;
236
        return 0;
238
@exit01:
237
@exit01:
239
        return -1;
238
        return -1;
240
}
239
}
Line 241... Line 240...
241
 
240
 
242
void load_dll(dword dllname, import_table, byte need_init)
241
byte load_dll(dword dllname, import_table, byte need_init)
243
{
242
{
-
 
243
	if (load_dll2(dllname, import_table, need_init))
-
 
244
	{
-
 
245
		error_init(dllname);
-
 
246
		return false;
-
 
247
	}
244
	if (load_dll2(dllname, import_table, need_init)!=0) error_init(dllname);
248
	return true;
Line 245... Line 249...
245
}
249
}
246
 
250