Rev 7219 | Rev 7768 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7219 | Rev 7246 | ||
---|---|---|---|
Line 14... | Line 14... | ||
14 | #define _TEXT_ERROR_ADD "'Error while loading library" |
14 | #define _TEXT_ERROR_ADD "'Error while loading library" |
15 | #endif |
15 | #endif |
Line 16... | Line 16... | ||
16 | 16 | ||
Line 17... | Line -... | ||
17 | char a_libdir[43] = "/sys/lib/\0"; |
- | |
18 | - | ||
19 | dword GLOBAL_FUNC_LIB = 0; |
- | |
20 | dword G_FUNC_LOAD = 0; |
- | |
21 | dword G_FUNC_GET = 0; |
- | |
22 | dword PATH_LIBRARY_LOADING = "/rd/1/lib/library.obj"; |
17 | char a_libdir[43] = "/sys/lib/\0"; |
23 | 18 | ||
24 | :inline void error_init(dword text) |
19 | :inline void error_init(dword text) |
25 | { |
20 | { |
26 | dword TEXT_ERROR = malloc(1024); |
21 | dword TEXT_ERROR[1024]; |
27 | sprintf(TEXT_ERROR, "%s `%s`' -E",_TEXT_ERROR_ADD,text); |
- | |
28 | notify(TEXT_ERROR); |
22 | sprintf(TEXT_ERROR, "%s `%s`' -E",_TEXT_ERROR_ADD,text); |
Line 29... | Line 23... | ||
29 | free(TEXT_ERROR); |
23 | notify(TEXT_ERROR); |
30 | } |
24 | } |
31 | 25 | ||
Line 252... | Line 246... | ||
252 | return false; |
246 | return false; |
253 | } |
247 | } |
254 | return true; |
248 | return true; |
255 | } |
249 | } |
Line 256... | Line -... | ||
256 | - | ||
257 | :struct OBJECT |
- | |
258 | { |
- | |
259 | void load(dword dllname); |
- | |
260 | dword get(dword fname); |
- | |
261 | } library; |
- | |
262 | - | ||
263 | :void OBJECT::load(dword dllname) |
- | |
264 | { |
- | |
265 | dword tmp; |
- | |
266 | IF(!GLOBAL_FUNC_LIB) |
- | |
267 | { |
- | |
268 | $mov eax, 68 |
- | |
269 | $mov ebx, 19 |
- | |
270 | ECX=#PATH_LIBRARY_LOADING; |
- | |
271 | $int 0x40 |
- | |
272 | tmp = EAX; |
- | |
273 | GLOBAL_FUNC_LIB = tmp; |
- | |
274 | tmp+=4; |
- | |
275 | G_FUNC_LOAD = DSDWORD[tmp]; |
- | |
276 | tmp+=8; |
- | |
277 | G_FUNC_GET = DSDWORD[tmp]; |
- | |
278 | } |
- | |
279 | G_FUNC_LOAD stdcall(dllname); |
- | |
280 | } |
- | |
281 | - | ||
282 | :dword OBJECT::get(dword fname) |
- | |
283 | { |
- | |
284 | dword tmp=fname; |
- | |
285 | G_FUNC_GET stdcall(tmp); |
- | |
286 | return EAX; |
- | |
287 | } |
- | |
288 | - | ||
289 | /* |
- | |
290 | #define INIT_(name) byte init_#name(){object.load(name); |
- | |
291 | #define IMPORT(name) name = object.get(name); |
- | |
292 | #define _INIT return 1;} |
- | |
Line 293... | Line 250... | ||
293 | */ |
250 | |
294 | 251 |