Rev 501 | Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
488 | spraid | 1 | ;------------------------------------------------------------------------- |
2 | ; |
||
3 | ; Замена имен файлов |
||
4 | ; |
||
5 | ; |
||
6 | ; SPraid |
||
7 | ; |
||
8 | ;------------------------------------------------------------------------- |
||
9 | |||
10 | ; перебирает по файлу варианты замен |
||
11 | proc full_file_name stdcall,sourc,dest |
||
12 | locals |
||
13 | param rb 60 |
||
14 | val rb 60 |
||
15 | tmpsrc rb 60 ; временное хранение преобразования |
||
16 | endl |
||
17 | pushad |
||
18 | |||
19 | |||
20 | mov esi,[sourc] |
||
21 | mov edi,ebp |
||
22 | add edi,tmpsrc-ebp |
||
23 | @@: |
||
24 | lodsb |
||
25 | stosb |
||
26 | or al,al |
||
27 | jnz @b |
||
28 | |||
29 | mov al,[conf_file_loaded] ; требуется при обращении к первому файлу (конфигу) |
||
30 | or al,al |
||
31 | jnz @use_replace |
||
32 | |||
33 | jmp full_file_name_exit |
||
34 | |||
35 | |||
36 | ;-------------------------------- |
||
37 | @use_replace: |
||
38 | |||
39 | xor eax,eax |
||
40 | .loop: |
||
41 | push eax |
||
42 | mov ebx,ebp |
||
43 | add ebx,param-ebp |
||
44 | mov ecx,ebp |
||
45 | add ecx,val-ebp |
||
46 | invoke ini.get_par,sect, ebx, ecx, eax |
||
47 | |||
48 | mov bl,[param] |
||
49 | or bl,bl |
||
50 | jz .done |
||
51 | |||
52 | mov eax,ebp |
||
53 | add eax,tmpsrc-ebp |
||
54 | mov ebx,ebp |
||
55 | add ebx,param-ebp |
||
56 | mov ecx,ebp |
||
57 | add ecx,val-ebp |
||
58 | mov edx,[dest] |
||
59 | |||
60 | stdcall full_file_name_parse, eax,edx,ebx,ecx |
||
61 | |||
62 | mov esi,[dest] |
||
63 | mov edi,ebp |
||
64 | add edi,tmpsrc-ebp |
||
65 | @@: |
||
66 | lodsb |
||
67 | stosb |
||
68 | or al,al |
||
69 | jnz @b |
||
70 | |||
71 | pop eax |
||
72 | inc eax |
||
73 | jmp .loop |
||
74 | |||
75 | .done: |
||
76 | pop eax |
||
77 | full_file_name_exit: |
||
78 | |||
79 | mov eax,ebp |
||
80 | add eax,tmpsrc-ebp |
||
81 | stdcall full_file_name_parse , eax , [dest], sysdir_ , sys_path |
||
82 | popad |
||
83 | ret |
||
84 | endp |
||
85 | |||
86 | sect: db 'path',0 |
||
87 | |||
88 | ; |
||
89 | ; Преобразовать имя в полное. Если в начале стоит |
||
90 | ; sourc - ссылка на строку... |
||
91 | ; dest - ссылка на буфер куда результат ложить |
||
92 | ; def - строка шаблон для поиска |
||
93 | ; dval - к чему приравнивать шаблон |
||
94 | proc full_file_name_parse stdcall,sourc,dest,def,dval |
||
95 | ; для одного |
||
96 | pushad |
||
97 | |||
98 | mov eax,[sourc] |
||
99 | mov ebx,[def] |
||
100 | @@: |
||
101 | mov dl,[ebx] |
||
102 | mov cl,[eax] |
||
103 | cmp cl,0 |
||
104 | je @@bad_s |
||
105 | cmp dl,0 |
||
106 | je @@good |
||
107 | |||
108 | or cl,0x20 |
||
109 | or dl,0x20 |
||
110 | cmp cl,dl |
||
111 | jne @@bad |
||
112 | |||
113 | inc eax |
||
114 | inc ebx |
||
115 | jmp @b |
||
116 | |||
117 | @@bad_s: |
||
118 | cmp dl,0 |
||
119 | je @@good |
||
120 | |||
121 | @@bad: |
||
122 | mov edi,[dest] |
||
123 | mov esi,[sourc] |
||
124 | @@: |
||
125 | lodsb |
||
126 | stosb |
||
127 | or al,al |
||
128 | jnz @b |
||
129 | jmp @@ret_ok |
||
130 | |||
131 | @@good: |
||
132 | push eax |
||
133 | mov edi,[dest] |
||
134 | mov esi,[dval] |
||
135 | @@: |
||
136 | lodsb |
||
137 | stosb |
||
138 | or al,al |
||
139 | jnz @b |
||
140 | |||
141 | @@goodl: |
||
142 | pop esi |
||
143 | dec edi |
||
144 | @@: |
||
145 | lodsb |
||
146 | stosb |
||
147 | or al,al |
||
148 | jnz @b |
||
149 | |||
150 | @@ret_ok: |
||
151 | popad |
||
152 | ret |
||
153 | |||
154 | endp |
||
155 | |||
156 | sys_dir_mess: db 'System dir is ' |
||
157 | sys_path: db '/HD0/1/KOLIBRI',0,0 |
||
158 | sysdir_ db '%sys%',0 |
||
159 | |||
160 | ; берет параметры bx_from_load и исчит файл конфигурации |
||
161 | Parser_params: |
||
162 | pushad |
||
163 | mov ax,[BOOT_VAR+bx_from_load] |
||
164 | cmp al,'r' ; рам диск |
||
165 | jnz @f |
||
166 | mov [sys_path],dword '/RD/' |
||
167 | mov [sys_path+4],byte ah |
||
168 | mov [sys_path+5],word 0 ;0x002F |
||
169 | jmp .done |
||
170 | @@: |
||
171 | sub al,49 |
||
172 | mov [sys_path],dword '/HDa' |
||
173 | mov [sys_path+3],byte al |
||
174 | mov [sys_path+4],byte '/' |
||
175 | mov [sys_path+5],byte ah |
||
176 | mov [sys_path+6],dword '/KOL' |
||
177 | mov [sys_path+10],dword 'IBRI' |
||
178 | mov [sys_path+14],word 0 ;0x002F |
||
179 | |||
180 | .done: |
||
181 | popad |
||
182 | ret |
||
183 |