Subversion Repositories Kolibri OS

Rev

Rev 919 | Rev 989 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 919 Rev 988
Line 15... Line 15...
15
;; You should have received a copy of the GNU General Public License along with Libs-Dev. If not, ;;
15
;; You should have received a copy of the GNU General Public License along with Libs-Dev. If not, ;;
16
;; see .                                                            ;;
16
;; see .                                                            ;;
17
;;                                                                                                ;;
17
;;                                                                                                ;;
18
;;================================================================================================;;
18
;;================================================================================================;;
19
;;                                                                                                ;;
19
;;                                                                                                ;;
-
 
20
;; 2008-12-29 (mike.dld)                                                                          ;;
-
 
21
;;   bug-fixes:                                                                                   ;;
-
 
22
;;     - unnecessary 'stosb' in ini.get_str was causing problems                                  ;;
20
;; 2008-08-06 (mike.dld)                                                                          ;;
23
;; 2008-08-06 (mike.dld)                                                                          ;;
21
;;   changes:                                                                                     ;;
24
;;   changes:                                                                                     ;;
22
;;     - split private procs into libini_p.asm, added comments                                    ;;
25
;;     - split private procs into libini_p.asm, added comments                                    ;;
23
;; 2008-02-07 (mike.dld)                                                                          ;;
26
;; 2008-02-07 (mike.dld)                                                                          ;;
24
;;   changes:                                                                                     ;;
27
;;   changes:                                                                                     ;;
Line 304... Line 307...
304
	stdcall libini._.find_key, ebx, [_key_name]
307
	stdcall libini._.find_key, ebx, [_key_name]
305
	or	eax, eax
308
	or	eax, eax
306
	jnz	.exit_error
309
	jnz	.exit_error
Line 307... Line 310...
307
 
310
 
308
	stdcall libini._.low.read_value, [f_addr], [_buffer], [_buf_len]
-
 
309
;       mov     edi, [_buffer]
-
 
310
;   @@: dec     [_buf_len]
-
 
311
;       jz      @f
-
 
312
;       stdcall ini.aux.get_char, [f_addr]
-
 
313
;       or      al, al
-
 
314
;       jz      @f
-
 
315
;       cmp     al, 13
-
 
316
;       je      @f
-
 
317
;       cmp     al, 10
-
 
318
;       je      @f
-
 
319
;       stosb
-
 
320
;       jmp     @b
311
	stdcall libini._.low.read_value, [f_addr], [_buffer], [_buf_len]
321
    @@: invoke	file.close, [f.fh]
312
    @@: invoke	file.close, [f.fh]
322
	invoke	mem.free, [f.buf]
313
	invoke	mem.free, [f.buf]
323
	xor	eax, eax
-
 
324
	stosb
314
	xor	eax, eax
325
	pop	edi esi ebx
315
	pop	edi esi ebx
Line 326... Line 316...
326
	ret
316
	ret
327
 
317
 
328
  .exit_error:
318
  .exit_error:
329
	invoke	file.close, [f.fh]
-
 
330
	invoke	mem.free, [f.buf]
319
	invoke	file.close, [f.fh]
-
 
320
	invoke	mem.free, [f.buf]
-
 
321
	mov	edi, [_buffer]
-
 
322
	mov	esi, [_def_val]
-
 
323
	xor	al, al
331
	mov	esi, [_def_val]
324
	or	esi, esi
-
 
325
	jz	.exit_error.2
332
	mov	edi, [_buffer]
326
    @@: lodsb
333
    @@: lodsb
327
  .exit_error.2:
334
	stosb
328
	stosb
335
	or	al, al
329
	or	al, al
336
	jnz	@b
330
	jnz	@b
Line 570... Line 564...
570
 
564
 
571
	pop	edi edx ecx
565
	pop	edi edx ecx
572
	ret
566
	ret
Line -... Line 567...
-
 
567
endp
-
 
568
 
-
 
569
;;================================================================================================;;
-
 
570
proc ini.get_color _f_name, _sec_name, _key_name, _def_val ;//////////////////////////////////////;;
-
 
571
;;------------------------------------------------------------------------------------------------;;
-
 
572
;? Read color                                                                                     ;;
-
 
573
;;------------------------------------------------------------------------------------------------;;
-
 
574
;> _f_name = ini filename                                                                 ;;
-
 
575
;> _sec_name = section name                                                               ;;
-
 
576
;> _key_name = key name                                                                   ;;
-
 
577
;> _def_val = default value to return if no key, section or file found                     ;;
-
 
578
;;------------------------------------------------------------------------------------------------;;
-
 
579
;< eax = [_def_val] (error) / found key value                                              ;;
-
 
580
;;================================================================================================;;
-
 
581
locals
-
 
582
  buf rb 14
-
 
583
endl
-
 
584
 
-
 
585
	push	ebx esi edi
-
 
586
 
-
 
587
	lea	esi, [buf]
-
 
588
	stdcall ini.get_str, [_f_name], [_sec_name], [_key_name], esi, 14, 0
-
 
589
	cmp	byte[esi],0
-
 
590
	je	.exit_error
-
 
591
 
-
 
592
	xor	ebx, ebx
-
 
593
	stdcall libini._.str_to_int
-
 
594
	movzx	ebx, al
-
 
595
	shl	ebx, 16
-
 
596
	lodsb
-
 
597
	cmp	al, ','
-
 
598
	jne	@f
-
 
599
	stdcall libini._.str_to_int
-
 
600
	mov	bh, al
-
 
601
	lodsb
-
 
602
	cmp	al, ','
-
 
603
	jne	@f
-
 
604
	stdcall libini._.str_to_int
-
 
605
	mov	bl, al
-
 
606
 
-
 
607
    @@: mov	eax, ebx
-
 
608
 
-
 
609
	pop	edi esi ebx
-
 
610
	ret
-
 
611
 
-
 
612
  .exit_error:
-
 
613
	mov	eax, [_def_val]
-
 
614
	pop	edi esi ebx
-
 
615
	ret
-
 
616
endp
-
 
617
 
-
 
618
;;================================================================================================;;
-
 
619
proc ini.set_color _f_name, _sec_name, _key_name, _val ;//////////////////////////////////////////;;
-
 
620
;;------------------------------------------------------------------------------------------------;;
-
 
621
;? Write color                                                                                    ;;
-
 
622
;;------------------------------------------------------------------------------------------------;;
-
 
623
;> _f_name = ini filename                                                                 ;;
-
 
624
;> _sec_name = section name                                                               ;;
-
 
625
;> _key_name = key name                                                                   ;;
-
 
626
;> _val = value                                                                            ;;
-
 
627
;;------------------------------------------------------------------------------------------------;;
-
 
628
;< eax = -1 (error) / 0                                                                           ;;
-
 
629
;;================================================================================================;;
-
 
630
locals
-
 
631
  buf rb 16
-
 
632
endl
-
 
633
 
-
 
634
	push	ecx edx edi
-
 
635
 
-
 
636
	lea	edi, [buf]
-
 
637
	mov	ecx, 10
-
 
638
	mov	ebx, [_val]
-
 
639
	mov	eax, ebx
-
 
640
	shr	eax, 16
-
 
641
	and	eax, 0x0ff
-
 
642
	stdcall libini._.int_to_str
-
 
643
	mov	byte[edi], ','
-
 
644
	inc	edi
-
 
645
	movzx	eax, bh
-
 
646
	stdcall libini._.int_to_str
-
 
647
	mov	byte[edi], ','
-
 
648
	inc	edi
-
 
649
	movzx	eax, bl
-
 
650
	stdcall libini._.int_to_str
-
 
651
 
-
 
652
	lea	eax, [buf]
-
 
653
	sub	edi, eax
-
 
654
 
-
 
655
	stdcall ini.set_str, [_f_name], [_sec_name], [_key_name], eax, edi
-
 
656
 
-
 
657
	pop	edi edx ecx
-
 
658
	ret
Line 573... Line 659...
573
endp
659
endp
574
 
660
 
575
 
661
 
576
;;================================================================================================;;
662
;;================================================================================================;;
Line 617... Line 703...
617
	0x00040005	  , 'version'		, \
703
	0x00040005	  , 'version'		, \
618
	ini.enum_sections , 'ini.enum_sections' , \
704
	ini.enum_sections , 'ini.enum_sections' , \
619
	ini.enum_keys	  , 'ini.enum_keys'	, \
705
	ini.enum_keys	  , 'ini.enum_keys'	, \
620
	ini.get_str	  , 'ini.get_str'	, \
706
	ini.get_str	  , 'ini.get_str'	, \
621
	ini.get_int	  , 'ini.get_int'	, \
707
	ini.get_int	  , 'ini.get_int'	, \
-
 
708
	ini.get_color	  , 'ini.get_color'	, \
622
	ini.set_str	  , 'ini.set_str'	, \
709
	ini.set_str	  , 'ini.set_str'	, \
623
	ini.set_int	  , 'ini.set_int'
710
	ini.set_int	  , 'ini.set_int'	, \
-
 
711
	ini.set_color	  , 'ini.set_color'