Rev 845 | Rev 988 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 845 | Rev 919 | ||
---|---|---|---|
Line 174... | Line 174... | ||
174 | ;;================================================================================================;; |
174 | ;;================================================================================================;; |
175 | push eax ebx ecx |
175 | push eax ebx ecx |
176 | mov ebx, [_f] |
176 | mov ebx, [_f] |
177 | mov eax, [ebx + IniFile.pos] |
177 | mov eax, [ebx + IniFile.pos] |
178 | add eax, -ini.BLOCK_SIZE |
178 | add eax, -ini.BLOCK_SIZE |
179 | invoke file.seek, [ebx + IniFile.fh], SEEK_SET, eax |
179 | invoke file.seek, [ebx + IniFile.fh], eax, SEEK_SET |
180 | stdcall libini._.preload_block, ebx |
180 | stdcall libini._.preload_block, ebx |
181 | add esi, eax ; ini.BLOCK_SIZE |
181 | add esi, eax ; ini.BLOCK_SIZE |
182 | mov [ebx + IniFile.cnt], 0 |
182 | mov [ebx + IniFile.cnt], 0 |
183 | pop ecx ebx eax |
183 | pop ecx ebx eax |
184 | ret |
184 | ret |
Line 226... | Line 226... | ||
226 | ;;================================================================================================;; |
226 | ;;================================================================================================;; |
227 | push eax ebx ecx |
227 | push eax ebx ecx |
228 | mov ebx, [_f] |
228 | mov ebx, [_f] |
229 | push [ebx + IniFile.bsize] |
229 | push [ebx + IniFile.bsize] |
230 | push esi [ebx + IniFile.cnt] |
230 | push esi [ebx + IniFile.cnt] |
231 | invoke file.seek, [ebx + IniFile.fh], SEEK_SET, [ebx + IniFile.pos] |
231 | invoke file.seek, [ebx + IniFile.fh], [ebx + IniFile.pos], SEEK_SET |
232 | stdcall libini._.preload_block, ebx |
232 | stdcall libini._.preload_block, ebx |
233 | pop [ebx + IniFile.cnt] esi |
233 | pop [ebx + IniFile.cnt] esi |
234 | pop eax |
234 | pop eax |
235 | sub eax,[ebx + IniFile.bsize] |
235 | sub eax,[ebx + IniFile.bsize] |
236 | sub [ebx + IniFile.cnt], eax |
236 | sub [ebx + IniFile.cnt], eax |
Line 274... | Line 274... | ||
274 | mov ebx, [ebx + IniFile.fh] |
274 | mov ebx, [ebx + IniFile.fh] |
275 | invoke file.tell, ebx |
275 | invoke file.tell, ebx |
276 | ; push eax |
276 | ; push eax |
277 | sub eax, ecx |
277 | sub eax, ecx |
278 | ; dec eax |
278 | ; dec eax |
279 | invoke file.seek, ebx, SEEK_SET, eax |
279 | invoke file.seek, ebx, eax, SEEK_SET |
280 | @@: invoke file.seek, ebx, SEEK_CUR, [_delta] |
280 | @@: invoke file.seek, ebx, [_delta], SEEK_CUR |
281 | invoke file.eof?, ebx |
281 | invoke file.eof?, ebx |
282 | or eax, eax |
282 | or eax, eax |
283 | jnz .done |
283 | jnz .done |
284 | invoke file.read, ebx, [buf], ini.BLOCK_SIZE |
284 | invoke file.read, ebx, [buf], ini.BLOCK_SIZE |
285 | mov ecx, eax |
285 | mov ecx, eax |
286 | mov eax, [_delta] |
286 | mov eax, [_delta] |
287 | neg eax |
287 | neg eax |
288 | sub eax,ecx;ini.BLOCK_SIZE |
288 | sub eax, ecx;ini.BLOCK_SIZE |
289 | invoke file.seek,ebx,SEEK_CUR,eax |
289 | invoke file.seek, ebx, eax, SEEK_CUR |
290 | invoke file.write,ebx,[buf],ecx;ini.BLOCK_SIZE |
290 | invoke file.write, ebx, [buf], ecx;ini.BLOCK_SIZE |
291 | jmp @b |
291 | jmp @b |
292 | .done: |
292 | .done: |
293 | mov eax, [_delta] |
293 | mov eax, [_delta] |
294 | neg eax |
294 | neg eax |
295 | invoke file.seek, ebx, SEEK_CUR, eax |
295 | invoke file.seek, ebx, eax, SEEK_CUR |
296 | invoke file.seteof, ebx |
296 | invoke file.seteof, ebx |
297 | ; pop eax |
297 | ; pop eax |
298 | ; invoke file.seek, ebx, SEEK_SET;, eax |
298 | ; invoke file.seek, ebx, SEEK_SET;, eax |
299 | stdcall libini._.reload_block, [_f] |
299 | stdcall libini._.reload_block, [_f] |
300 | invoke mem.free, [buf] |
300 | invoke mem.free, [buf] |
Line 315... | Line 315... | ||
315 | invoke file.tell, ebx |
315 | invoke file.tell, ebx |
316 | ; push eax |
316 | ; push eax |
317 | sub eax, ecx |
317 | sub eax, ecx |
318 | lea edx, [eax - 1] |
318 | lea edx, [eax - 1] |
319 | push edx |
319 | push edx |
320 | @@: invoke file.seek, ebx, SEEK_SET, edx |
320 | @@: invoke file.seek, ebx, edx, SEEK_SET |
321 | invoke file.eof?, ebx |
321 | invoke file.eof?, ebx |
322 | or eax, eax |
322 | or eax, eax |
323 | jnz @f |
323 | jnz @f |
324 | add edx, ini.BLOCK_SIZE |
324 | add edx, ini.BLOCK_SIZE |
325 | jmp @b |
325 | jmp @b |
326 | @@: cmp edx, [esp] |
326 | @@: cmp edx, [esp] |
327 | je .skip.2 |
327 | je .skip.2 |
328 | add edx, -ini.BLOCK_SIZE |
328 | add edx, -ini.BLOCK_SIZE |
329 | cmp edx, [esp] |
329 | cmp edx, [esp] |
330 | jl @f |
330 | jl @f |
331 | invoke file.seek, ebx, SEEK_SET, edx |
331 | invoke file.seek, ebx, edx, SEEK_SET |
332 | invoke file.read, ebx, [buf], ini.BLOCK_SIZE |
332 | invoke file.read, ebx, [buf], ini.BLOCK_SIZE |
333 | mov ecx, eax |
333 | mov ecx, eax |
334 | mov eax, [_delta] |
334 | mov eax, [_delta] |
335 | sub eax, ecx |
335 | sub eax, ecx |
336 | invoke file.seek, ebx, SEEK_CUR, eax |
336 | invoke file.seek, ebx, eax, SEEK_CUR |
337 | invoke file.write, ebx, [buf], ecx |
337 | invoke file.write, ebx, [buf], ecx |
338 | jmp @b |
338 | jmp @b |
339 | @@: |
339 | @@: |
340 | .skip.2: |
340 | .skip.2: |
341 | add esp, 4 |
341 | add esp, 4 |
Line 370... | Line 370... | ||
370 | invoke file.tell, [ebx + IniFile.fh] |
370 | invoke file.tell, [ebx + IniFile.fh] |
371 | sub eax, [ebx + IniFile.cnt] |
371 | sub eax, [ebx + IniFile.cnt] |
372 | sub eax, edx |
372 | sub eax, edx |
373 | mov [esp + 4 * 3], eax |
373 | mov [esp + 4 * 3], eax |
Line 374... | Line 374... | ||
374 | 374 | ||
375 | ; pop eax |
375 | pop eax |
376 | invoke file.seek, [ebx + IniFile.fh], SEEK_SET;, eax |
376 | invoke file.seek, [ebx + IniFile.fh], eax, SEEK_SET |
377 | stdcall libini._.preload_block, [_f] |
377 | stdcall libini._.preload_block, [_f] |
378 | pop [ebx + IniFile.cnt] esi |
378 | pop [ebx + IniFile.cnt] esi |
379 | pop eax edx ecx ebx |
379 | pop eax edx ecx ebx |
380 | ret |
380 | ret |
Line 440... | Line 440... | ||
440 | ;< [_f.pos] = new cursor position (right after ']' char if eax = 0, at the end of file otherwise) ;; |
440 | ;< [_f.pos] = new cursor position (right after ']' char if eax = 0, at the end of file otherwise) ;; |
441 | ;;================================================================================================;; |
441 | ;;================================================================================================;; |
442 | push ebx edi |
442 | push ebx edi |
Line 443... | Line 443... | ||
443 | 443 | ||
444 | mov ecx, [_f] |
444 | mov ecx, [_f] |
445 | invoke file.seek, [ecx + IniFile.fh], SEEK_SET, 0 |
445 | invoke file.seek, [ecx + IniFile.fh], 0, SEEK_SET |
Line 446... | Line 446... | ||
446 | stdcall libini._.preload_block, [_f] |
446 | stdcall libini._.preload_block, [_f] |
447 | 447 | ||
448 | .next_section: |
448 | .next_section: |