Rev 5895 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
5883 | pavelyakov | 1 | #ifndef INCLUDE_LIBFS_H |
2 | #define INCLUDE_LIBFS_H |
||
3 | #print "[include |
||
4 | |||
5 | #ifndef INCLUDE_KOLIBRI_H |
||
6 | #include "../lib/kolibri.h" |
||
7 | #endif |
||
8 | |||
9 | #ifndef INCLUDE_DLL_H |
||
10 | #include "../lib/dll.h" |
||
11 | #endif |
||
12 | |||
13 | :struct FILE_SYSTEM_FUNCTION |
||
14 | { |
||
15 | dword remove_pointer; |
||
16 | byte remove(dword path); |
||
17 | |||
5933 | pavelyakov | 18 | dword open_pointer; |
19 | dword open(dword path); |
||
20 | |||
5885 | pavelyakov | 21 | dword read_pointer; |
22 | dword read(dword path); |
||
23 | |||
5890 | pavelyakov | 24 | dword run_pointer; |
25 | dword run(dword path,arg); |
||
26 | |||
5883 | pavelyakov | 27 | dword move_pointer; |
28 | byte move(dword path1,path2); |
||
29 | |||
30 | dword copy_pointer; |
||
31 | byte copy(dword path1,path2); |
||
32 | |||
5933 | pavelyakov | 33 | dword write_pointer; |
34 | byte write(dword path1,path2,path3); |
||
35 | |||
5883 | pavelyakov | 36 | dword get_size_pointer; |
37 | qword get_size(dword path); |
||
5895 | pavelyakov | 38 | |
5933 | pavelyakov | 39 | dword callback_copy_pointer; |
40 | byte callback_copy(dword path1,path2,ptr); |
||
5883 | pavelyakov | 41 | } fs; |
42 | |||
43 | :byte FILE_SYSTEM_FUNCTION::remove(dword path) |
||
44 | { |
||
45 | dword tmp = path; |
||
5894 | pavelyakov | 46 | lib_init_fs(); |
5883 | pavelyakov | 47 | remove_pointer stdcall(tmp); |
48 | return EAX; |
||
49 | } |
||
50 | |||
5885 | pavelyakov | 51 | :dword FILE_SYSTEM_FUNCTION::read(dword path) |
52 | { |
||
53 | dword tmp = path; |
||
5894 | pavelyakov | 54 | lib_init_fs(); |
5885 | pavelyakov | 55 | read_pointer stdcall(tmp); |
56 | return EAX; |
||
57 | } |
||
58 | |||
5933 | pavelyakov | 59 | :byte FILE_SYSTEM_FUNCTION::write(dword path1,path2,path3) |
60 | { |
||
61 | dword tmp1 = path1; |
||
62 | dword tmp2 = path2; |
||
63 | dword tmp3 = path3; |
||
64 | lib_init_fs(); |
||
65 | write_pointer stdcall(tmp1,tmp2,tmp3); |
||
66 | return EAX; |
||
67 | } |
||
68 | |||
5890 | pavelyakov | 69 | :dword FILE_SYSTEM_FUNCTION::run(dword path,arg) |
70 | { |
||
71 | dword tmp1 = path1; |
||
72 | dword tmp2 = arg; |
||
5894 | pavelyakov | 73 | lib_init_fs(); |
5890 | pavelyakov | 74 | run_pointer stdcall(tmp1,tmp2); |
75 | return EAX; |
||
76 | } |
||
77 | |||
5883 | pavelyakov | 78 | :qword FILE_SYSTEM_FUNCTION::get_size(dword path) |
79 | { |
||
80 | dword tmp = path; |
||
5894 | pavelyakov | 81 | lib_init_fs(); |
5933 | pavelyakov | 82 | //get_size_pointer stdcall(tmp); |
83 | $push tmp |
||
84 | $call get_size_pointer |
||
85 | $add esi,4 |
||
86 | } |
||
87 | |||
88 | :dword FILE_SYSTEM_FUNCTION::open(dword path) |
||
89 | { |
||
90 | dword tmp = path; |
||
91 | lib_init_fs(); |
||
92 | open_pointer stdcall(tmp); |
||
5883 | pavelyakov | 93 | return EAX; |
94 | } |
||
95 | |||
96 | :byte FILE_SYSTEM_FUNCTION::move(dword path1,path2) |
||
97 | { |
||
98 | dword tmp1 = path1; |
||
99 | dword tmp2 = path2; |
||
5894 | pavelyakov | 100 | lib_init_fs(); |
5883 | pavelyakov | 101 | move_pointer stdcall(tmp1,tmp2); |
102 | return EAX; |
||
103 | } |
||
104 | |||
105 | :byte FILE_SYSTEM_FUNCTION::copy(dword path1,path2) |
||
106 | { |
||
107 | dword tmp1 = path1; |
||
108 | dword tmp2 = path2; |
||
5894 | pavelyakov | 109 | lib_init_fs(); |
5883 | pavelyakov | 110 | copy_pointer stdcall(tmp1,tmp2); |
111 | return EAX; |
||
112 | } |
||
113 | |||
5933 | pavelyakov | 114 | :byte FILE_SYSTEM_FUNCTION::callback_copy(dword path1,path2,ptr) |
115 | { |
||
116 | dword tmp1 = path1; |
||
117 | dword tmp2 = path2; |
||
118 | lib_init_fs(); |
||
119 | callback_copy_pointer stdcall(tmp1,tmp2,ptr); |
||
120 | return EAX; |
||
121 | } |
||
122 | |||
123 | |||
5885 | pavelyakov | 124 | :byte __CHECK_FS__ = 0; |
5883 | pavelyakov | 125 | :void lib_init_fs() |
126 | { |
||
5885 | pavelyakov | 127 | IF(__CHECK_FS__)return; |
5883 | pavelyakov | 128 | library.load("/sys/LIB/FS.OBJ"); |
129 | fs.remove_pointer = library.get("fs.remove"); |
||
130 | fs.get_size_pointer = library.get("fs.get_size"); |
||
131 | fs.move_pointer = library.get("fs.move"); |
||
5933 | pavelyakov | 132 | fs.open_pointer = library.get("fs.open"); |
5883 | pavelyakov | 133 | fs.copy_pointer = library.get("fs.copy"); |
5885 | pavelyakov | 134 | fs.read_pointer = library.get("fs.read"); |
5890 | pavelyakov | 135 | fs.run_pointer = library.get("fs.execute"); |
5933 | pavelyakov | 136 | fs.write_pointer = library.get("fs.write"); |
137 | fs.callback_copy_pointer = library.get("fs.callback_copy"); |
||
5885 | pavelyakov | 138 | __CHECK_FS__ = true; |
5883 | pavelyakov | 139 | } |
140 | |||
141 | #endif |