Subversion Repositories Kolibri OS

Rev

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: