Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 3831 → Rev 3832

/programs/develop/libraries/libs-dev/libini/libini.asm
541,6 → 541,7
;;================================================================================================;;
locals
buf rb 16
bNeg rd 1
endl
 
push ecx edx edi
547,12 → 548,14
 
lea edi, [buf]
add edi, 15
 
mov eax, [_val]
mov [bNeg],0
or eax, eax
jns @f
mov byte[edi], '-'
mov [bNeg],1
neg eax
inc edi
 
@@: mov ecx, 10
@@: xor edx, edx
idiv ecx
561,11 → 564,19
dec edi
or eax, eax
jnz @b
 
cmp [bNeg],0
je @f
mov byte[edi], '-'
dec edi
@@:
lea eax, [buf]
add eax, 15
sub eax, edi
inc edi
 
 
 
stdcall ini.set_str, [_f_name], [_sec_name], [_key_name], edi, eax
 
pop edi edx ecx
664,7 → 675,127
ret
endp
 
 
;;================================================================================================;;
proc ini.del_section _f_name, _sec_name ;/////////////////////////////////////////////////////////;;
;;------------------------------------------------------------------------------------------------;;
;? Delete section and all key in this section ;;
;;------------------------------------------------------------------------------------------------;;
;> _f_name = ini filename <asciiz> ;;
;> _sec_name = section name <asciiz> ;;
;;------------------------------------------------------------------------------------------------;;
;< eax = 0 - success ;;
;< -1 - file not found ;;
;< 1 - section not found ;;
;;================================================================================================;;
locals
funcFile rb 25
fileInfo rb 40
begMem rd 1
endMem rd 1
begDel rd 1
endDel rd 1
endl
push ebx ecx edi esi
mov dword[funcFile],5 ;get file info
mov dword[funcFile+4],0
mov dword[funcFile+8],0
mov dword[funcFile+12],0
lea eax,[fileInfo]
mov dword[funcFile+16],eax
mov byte[funcFile+20],0
m2m dword[funcFile+21],[_f_name]
lea ebx,[funcFile]
mcall 70
test eax,eax
jz @f
 
or eax,-1
pop esi edi ecx ebx
ret
@@:
 
mov ecx,dword[fileInfo+32] ;allocation mem for all file
mcall 68,12
 
mov [begMem],eax
mov [endMem],eax
add [endMem],ecx
 
mov dword[funcFile],0 ;read file to buffer
mov dword[funcFile+12],ecx
mov dword[funcFile+16],eax
lea ebx,[funcFile]
mcall 70
 
mov edi,[begMem] ;search begin section
.searchSect:
mov al,'['
repne scasb
test ecx,ecx
jnz @f
pop esi edi ecx ebx
mov eax,1
ret
@@:
mov [begDel],edi
mov esi,[_sec_name]
@@:
lodsb
test al,al
jz @f
scasb
jne .searchSect
jmp @b
@@:
cmp byte[edi],']'
jne .searchSect
 
dec [begDel]
 
mov edi,[begDel] ;search end section
inc edi
.searchEndSect:
mov al,'['
repne scasb
 
dec edi
mov [endDel],edi
 
test ecx,ecx
jnz @f
jmp .SaveToFile
@@:
 
 
mov esi,[endDel]
mov edi,[begDel]
@@: lodsb
stosb
cmp esi,[endMem]
jb @b
 
.SaveToFile:
mov eax,dword[funcFile+12]
sub eax,[endDel]
add eax,[begDel]
 
mov dword[funcFile],2 ;write buffer to file
mov dword[funcFile+12],eax
m2m dword[funcFile+16],[begMem]
lea ebx,[funcFile]
mcall 70
 
xor eax,eax
pop esi edi ecx ebx
ret
endp
 
 
 
 
;;================================================================================================;;
proc ini.get_shortcut _f_name, _sec_name, _key_name, _def_val, _modifiers ;///////////////////////;;
;;------------------------------------------------------------------------------------------------;;
;? Read shortcut key ;;
843,6 → 974,7
{
shortcut_name_with_handler name, .name_handler
}
 
; all names here must be in english
; ... or modify lowercasing in macro and in comparison
.names_table:
920,4 → 1052,6
ini.set_str , 'ini_set_str' , \
ini.set_int , 'ini_set_int' , \
ini.set_color , 'ini_set_color' , \
ini.get_shortcut , 'ini_get_shortcut'
ini.get_shortcut , 'ini_get_shortcut' , \
ini.del_section , 'ini_del_section'