diff --git a/programs/develop/libraries/libs-dev/libini/libini.asm b/programs/develop/libraries/libs-dev/libini/libini.asm
deleted file mode 100644
index f7e544cf69..0000000000
--- a/programs/develop/libraries/libs-dev/libini/libini.asm
+++ /dev/null
@@ -1,710 +0,0 @@
-;;================================================================================================;;
-;;//// libini.asm //// (c) mike.dld, 2006-2008 ///////////////////////////////////////////////////;;
-;;================================================================================================;;
-;; ;;
-;; This file is part of Common development libraries (Libs-Dev). ;;
-;; ;;
-;; Libs-Dev is free software: you can redistribute it and/or modify it under the terms of the GNU ;;
-;; Lesser General Public License as published by the Free Software Foundation, either version 2.1 ;;
-;; of the License, or (at your option) any later version. ;;
-;; ;;
-;; Libs-Dev is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without ;;
-;; even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;;
-;; Lesser General Public License for more details. ;;
-;; ;;
-;; You should have received a copy of the GNU Lesser General Public License along with Libs-Dev. ;;
-;; If not, see . ;;
-;; ;;
-;;================================================================================================;;
-;; ;;
-;; 2009-03-08 (mike.dld) ;;
-;; bug-fixes: ;;
-;; - moved buffer bound check in libini._.low.read_value up (reported by Insolor) ;;
-;; new features: ;;
-;; - comments support (char is ini.COMMENT_CHAR, defaults to ';') ;;
-;; inline comments are not supported ;;
-;; 2008-12-29 (mike.dld) ;;
-;; bug-fixes: ;;
-;; - unnecessary 'stosb' in ini.get_str was causing problems ;;
-;; new features: ;;
-;; - new functions: ini.get_color and ini.set_color ;;
-;; 2008-08-06 (mike.dld) ;;
-;; changes: ;;
-;; - split private procs into libini_p.asm, added comments ;;
-;; 2008-02-07 (mike.dld) ;;
-;; changes: ;;
-;; - renamed all *.aux.* to *._.* to match overall libraries design ;;
-;; 2007-09-26 (mike.dld) ;;
-;; bug-fixes: ;;
-;; - value was not correctly trimmed (reported by diamond) ;;
-;; 2007-08-01 (mike.dld) ;;
-;; bug-fixes: ;;
-;; - serious defect in ini.set_str causing displaced write operations ;;
-;; (reported by diamond) ;;
-;; - another serious defect in ini.enum_keys introduced with refactoring ;;
-;; changes: ;;
-;; - callback for enum_keys now takes additional parameter - key value ;;
-;; - handling trailing spaces in section/key/value ;;
-;; 2007-05-19 (mike.dld) ;;
-;; bug-fixes: ;;
-;; - last char still wasn't read correctly ;;
-;; - digits of number were reversed when using ini.set_int ;;
-;; - now using 'ini.aux.unget_char' instead of dangerous 'dec esi' ;;
-;; changes: ;;
-;; - all non-public functions now start with ini.aux.* ;;
-;; - added ini.enum_sections and ini.enum_keys ;;
-;; - removed ini.query_sec (use ini.enum_* instead) ;;
-;; ;;
-;;================================================================================================;;
-
-format MS COFF
-
-public @EXPORT as 'EXPORTS'
-
-include '../../../../proc32.inc'
-include '../../../../macros.inc'
-include '../libio/libio.inc'
-purge section ; mov,add,sub
-
-include 'libini_p.inc'
-
-section '.flat' code readable align 16
-
-include 'libini_p.asm'
-
-;;================================================================================================;;
-proc ini.enum_sections _f_name, _callback ;///////////////////////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? Enumerate sections, calling callback function for each of them ;;
-;;------------------------------------------------------------------------------------------------;;
-;> _f_name = ini filename ;;
-;> _callback = callback function address: func(f_name, sec_name), where ;;
-;> f_name = ini filename (as passed to the function) ;;
-;> sec_name = section name found ;;
-;;------------------------------------------------------------------------------------------------;;
-;< eax = -1 (error) / 0 ;;
-;;================================================================================================;;
-locals
- f IniFile
- f_addr dd ?
- sec_buf dd ?
-endl
-
- push ebx esi edi
-
- cld
-
- invoke mem.alloc, ini.MAX_NAME_LEN
- or eax, eax
- jz .exit_error.2
- mov [sec_buf], eax
-
- xor eax, eax
- mov [f.fh], eax
- mov [f.buf], eax
- invoke file.open, [_f_name], O_READ
- cmp eax, 32
- jb .exit_error
- mov [f.fh], eax
- invoke mem.alloc, ini.MEM_SIZE
- or eax, eax
- jz .exit_error
- mov [f.buf], eax
- lea ebx, [f]
- mov [f_addr], ebx
-
- invoke file.seek, [f.fh], 0, SEEK_SET
- stdcall libini._.preload_block, [f_addr]
-
- .next_section:
- stdcall libini._.find_next_section, [f_addr]
- or eax, eax
- jnz .exit_error
-
- stdcall libini._.get_char, [f_addr]
- stdcall libini._.skip_spaces, [f_addr]
- mov edi, [sec_buf]
- @@: stdcall libini._.get_char, [f_addr]
- cmp al, ']'
- je @f
- or al, al
- jz .exit_ok
- cmp al, 13
- je .next_section
- cmp al, 10
- je .next_section
- stosb
- jmp @b
- @@: xor al, al
- stosb
- add edi, -2
- @@: cmp byte[edi], 32
- ja @f
- mov byte[edi], 0
- dec edi
- jmp @b
- @@:
- pushad
- mov eax, [f_addr]
- stdcall [_callback], [_f_name], [sec_buf]
- or eax, eax
- popad
- jnz .next_section
-
- .exit_ok:
- invoke file.close, [f.fh]
- invoke mem.free, [f.buf]
- invoke mem.free, [sec_buf]
- xor eax, eax
- pop edi esi ebx
- ret
-
- .exit_error:
- invoke file.close, [f.fh]
- invoke mem.free, [f.buf]
- invoke mem.free, [sec_buf]
- .exit_error.2:
- or eax, -1
- pop edi esi ebx
- ret
-endp
-
-;;================================================================================================;;
-proc ini.enum_keys _f_name, _sec_name, _callback ;////////////////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? Enumerate keys within a section, calling callback function for each of them ;;
-;;------------------------------------------------------------------------------------------------;;
-;> _f_name = ini filename ;;
-;> _sec_name = section name ;;
-;> _callback = callback function address: func(f_name, sec_name, key_name, key_value), where ;;
-;> f_name = ini filename (as passed to the function) ;;
-;> sec_name = section name (as passed to the function) ;;
-;> key_name = key name found ;;
-;> key_value = value of key found ;;
-;;------------------------------------------------------------------------------------------------;;
-;< eax = -1 (error) / 0 ;;
-;;================================================================================================;;
-locals
- f IniFile
- f_addr dd ?
- key_buf dd ?
- val_buf dd ?
-endl
-
- push ebx esi edi
-
- cld
-
- invoke mem.alloc, ini.MAX_NAME_LEN
- or eax, eax
- jz .exit_error.3
- mov [key_buf], eax
- invoke mem.alloc, ini.MAX_VALUE_LEN
- or eax, eax
- jz .exit_error.2
- mov [val_buf], eax
-
- xor eax, eax
- mov [f.fh], eax
- mov [f.buf], eax
- invoke file.open, [_f_name], O_READ
- cmp eax, 32
- jb .exit_error
- mov [f.fh], eax
- invoke mem.alloc, ini.MEM_SIZE
- or eax, eax
- jz .exit_error
- mov [f.buf], eax
- lea ebx, [f]
- mov [f_addr], ebx
- stdcall libini._.find_section, ebx, [_sec_name]
- or eax, eax
- jnz .exit_error
-
- .next_key:
- stdcall libini._.skip_line, [f_addr]
- stdcall libini._.skip_nonblanks, [f_addr]
- or al, al
- jz .exit_error
- cmp al, '['
- je .exit_error
- mov edi, [key_buf]
- @@: stdcall libini._.get_char, [f_addr]
- or al, al
- jz .exit_error
- cmp al, '='
- je @f
- stosb
- jmp @b
- @@:
- xor al, al
- stosb
- add edi, -2
- @@: cmp byte[edi], 32
- ja @f
- mov byte[edi], 0
- dec edi
- jmp @b
- @@: stdcall libini._.low.read_value, [f_addr], [val_buf], ini.MAX_VALUE_LEN
- pushad
- stdcall [_callback], [_f_name], [_sec_name], [key_buf], [val_buf]
- or eax, eax
- popad
- jnz .next_key
-
- @@: invoke file.close, [f.fh]
- invoke mem.free, [f.buf]
- xor eax, eax
- stosb
- pop edi esi ebx
- ret
-
- .exit_error:
- invoke file.close, [f.fh]
- invoke mem.free, [f.buf]
- invoke mem.free, [val_buf]
- .exit_error.2:
- invoke mem.free, [key_buf]
- .exit_error.3:
- or eax, -1
- pop edi esi ebx
- ret
-endp
-
-;;================================================================================================;;
-proc ini.get_str _f_name, _sec_name, _key_name, _buffer, _buf_len, _def_val ;/////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? Read string ;;
-;;------------------------------------------------------------------------------------------------;;
-;> _f_name = ini filename ;;
-;> _sec_name = section name ;;
-;> _key_name = key name ;;
-;> _buffer = destination buffer address ;;
-;> _buf_len = buffer size (maximum bytes to read) ;;
-;> _def_val = default value to return if no key, section or file found ;;
-;;------------------------------------------------------------------------------------------------;;
-;< eax = -1 (error) / 0 ;;
-;< [_buffer] = [_def_val] (error) / found key value ;;
-;;================================================================================================;;
-locals
- f IniFile
- f_addr dd ?
-endl
-
- push ebx esi edi
-
- xor eax, eax
- mov [f.fh], eax
- mov [f.buf], eax
- invoke file.open, [_f_name], O_READ
- cmp eax, 32
- jb .exit_error
- mov [f.fh], eax
- invoke mem.alloc, ini.MEM_SIZE
- or eax, eax
- jz .exit_error
- mov [f.buf], eax
- lea ebx, [f]
- mov [f_addr], ebx
- stdcall libini._.find_section, ebx, [_sec_name]
- or eax, eax
- jnz .exit_error
-
- stdcall libini._.find_key, ebx, [_key_name]
- or eax, eax
- jnz .exit_error
-
- stdcall libini._.low.read_value, [f_addr], [_buffer], [_buf_len]
- @@: invoke file.close, [f.fh]
- invoke mem.free, [f.buf]
- xor eax, eax
- pop edi esi ebx
- ret
-
- .exit_error:
- invoke file.close, [f.fh]
- invoke mem.free, [f.buf]
- mov edi, [_buffer]
- mov esi, [_def_val]
- xor al, al
- or esi, esi
- jz .exit_error.2
- @@: lodsb
- .exit_error.2:
- stosb
- or al, al
- jnz @b
- or eax, -1
- pop edi esi ebx
- ret
-endp
-
-;;================================================================================================;;
-proc ini.set_str _f_name, _sec_name, _key_name, _buffer, _buf_len ;///////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? Write string ;;
-;;------------------------------------------------------------------------------------------------;;
-;> _f_name = ini filename ;;
-;> _sec_name = section name ;;
-;> _key_name = key name ;;
-;> _buffer = source buffer address ;;
-;> _buf_len = buffer size (bytes to write) ;;
-;;------------------------------------------------------------------------------------------------;;
-;< eax = -1 (error) / 0 ;;
-;;================================================================================================;;
-locals
- f IniFile
- f_addr dd ?
-endl
-
- push ebx esi edi
-
- xor eax, eax
- mov [f.fh], eax
- mov [f.buf], eax
- invoke file.open, [_f_name], O_READ + O_WRITE + O_CREATE
- cmp eax, 32
- jb .exit_error
- mov [f.fh], eax
- invoke mem.alloc, ini.MEM_SIZE
- or eax, eax
- jz .exit_error
- mov [f.buf], eax
- lea ebx, [f]
- mov [f_addr], ebx
-
- stdcall libini._.find_section, ebx, [_sec_name]
- or eax, eax
- jnz .create_section
-
- stdcall libini._.find_key, ebx, [_key_name]
- or eax, eax
- jnz .create_key
-
- .modify_key:
- stdcall libini._.get_value_length, [f_addr]
- sub eax, [_buf_len]
- stdcall libini._.shift_content, [f_addr], eax
-
- .modify_key.ex:
- invoke file.tell, [f.fh]
- sub eax, [f.cnt]
- invoke file.seek, [f.fh], eax, SEEK_SET
- invoke file.write, [f.fh], [_buffer], [_buf_len]
-
- pop edi esi ebx
- xor eax, eax
- ret
-
- .create_key:
- mov edi, [f.buf]
- add edi, ini.BLOCK_SIZE
- push edi
-
- .create_key.ex:
- mov esi, [_key_name]
- call libini._.string_copy
- mov byte[edi], '='
- inc edi
- mov esi, [_buffer]
- mov ecx, [_buf_len]
- rep movsb
- mov word[edi], 0x0A0D
- add edi, 2
- mov eax, edi
-
- pop edi
- sub eax, edi
- mov [_buffer], edi
- mov [_buf_len], eax
- neg eax
- stdcall libini._.shift_content, [f_addr], eax
-
- jmp .modify_key.ex
-
- .create_section:
- mov edi, [f.buf]
- add edi, ini.BLOCK_SIZE
- push edi
-
- mov esi, [_sec_name]
- mov byte[edi], '['
- inc edi
- call libini._.string_copy
- mov dword[edi], ']' + (0x0A0D shl 8)
- add edi, 3
-
- jmp .create_key.ex
-
- .exit_error:
- pop edi esi ebx
- or eax, -1
- ret
-endp
-
-;;================================================================================================;;
-proc ini.get_int _f_name, _sec_name, _key_name, _def_val ;////////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? Read integer ;;
-;;------------------------------------------------------------------------------------------------;;
-;> _f_name = ini filename ;;
-;> _sec_name = section name ;;
-;> _key_name = key name ;;
-;> _def_val = default value to return if no key, section or file found ;;
-;;------------------------------------------------------------------------------------------------;;
-;< eax = [_def_val] (error) / found key value ;;
-;;================================================================================================;;
-locals
- f IniFile
- f_addr dd ?
-endl
-
- push ebx esi edi
-
- xor eax, eax
- mov [f.fh], eax
- mov [f.buf], eax
- invoke file.open, [_f_name], O_READ
- cmp eax, 32
- jb .exit_error
- mov [f.fh], eax
- invoke mem.alloc, ini.MEM_SIZE
- or eax, eax
- jz .exit_error
- mov [f.buf], eax
- lea ebx, [f]
- mov [f_addr], ebx
- stdcall libini._.find_section, ebx, [_sec_name]
- or eax, eax
- jnz .exit_error
-
- stdcall libini._.find_key, ebx, [_key_name]
- or eax, eax
- jnz .exit_error
-
- stdcall libini._.skip_spaces, [f_addr]
- xor eax, eax
- xor ebx, ebx
- xor edx, edx
- stdcall libini._.get_char, [f_addr]
- cmp al, '-'
- jne .lp1
- inc bh
- @@: stdcall libini._.get_char, [f_addr]
- .lp1: cmp al, '0'
- jb @f
- cmp al, '9'
- ja @f
- inc bl
- add eax, -'0'
- imul edx, 10
- add edx, eax
- jmp @b
- @@:
- or bl, bl
- jz .exit_error
- or bh, bh
- jz @f
- neg edx
- @@: invoke file.close, [f.fh]
- invoke mem.free, [f.buf]
- mov eax, edx
- pop edi esi ebx
- ret
-
- .exit_error:
- invoke file.close, [f.fh]
- invoke mem.free, [f.buf]
- mov eax, [_def_val]
- pop edi esi ebx
- ret
-endp
-
-;;================================================================================================;;
-proc ini.set_int _f_name, _sec_name, _key_name, _val ;////////////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? Write integer ;;
-;;------------------------------------------------------------------------------------------------;;
-;> _f_name = ini filename ;;
-;> _sec_name = section name ;;
-;> _key_name = key name ;;
-;> _val = value ;;
-;;------------------------------------------------------------------------------------------------;;
-;< eax = -1 (error) / 0 ;;
-;;================================================================================================;;
-locals
- buf rb 16
-endl
-
- push ecx edx edi
-
- lea edi, [buf]
- add edi, 15
- mov eax, [_val]
- or eax, eax
- jns @f
- mov byte[edi], '-'
- neg eax
- inc edi
- @@: mov ecx, 10
- @@: xor edx, edx
- idiv ecx
- add dl, '0'
- mov [edi], dl
- dec edi
- or eax, eax
- jnz @b
- 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
- ret
-endp
-
-;;================================================================================================;;
-proc ini.get_color _f_name, _sec_name, _key_name, _def_val ;//////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? Read color ;;
-;;------------------------------------------------------------------------------------------------;;
-;> _f_name = ini filename ;;
-;> _sec_name = section name ;;
-;> _key_name = key name ;;
-;> _def_val = default value to return if no key, section or file found ;;
-;;------------------------------------------------------------------------------------------------;;
-;< eax = [_def_val] (error) / found key value ;;
-;;================================================================================================;;
-locals
- buf rb 14
-endl
-
- push ebx esi edi
-
- lea esi, [buf]
- stdcall ini.get_str, [_f_name], [_sec_name], [_key_name], esi, 14, 0
- cmp byte[esi],0
- je .exit_error
-
- xor ebx, ebx
- stdcall libini._.str_to_int
- movzx ebx, al
- shl ebx, 16
- lodsb
- cmp al, ','
- jne @f
- stdcall libini._.str_to_int
- mov bh, al
- lodsb
- cmp al, ','
- jne @f
- stdcall libini._.str_to_int
- mov bl, al
-
- @@: mov eax, ebx
-
- pop edi esi ebx
- ret
-
- .exit_error:
- mov eax, [_def_val]
- pop edi esi ebx
- ret
-endp
-
-;;================================================================================================;;
-proc ini.set_color _f_name, _sec_name, _key_name, _val ;//////////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? Write color ;;
-;;------------------------------------------------------------------------------------------------;;
-;> _f_name = ini filename ;;
-;> _sec_name = section name ;;
-;> _key_name = key name ;;
-;> _val = value ;;
-;;------------------------------------------------------------------------------------------------;;
-;< eax = -1 (error) / 0 ;;
-;;================================================================================================;;
-locals
- buf rb 16
-endl
-
- push ecx edx edi
-
- lea edi, [buf]
- mov ecx, 10
- mov ebx, [_val]
- mov eax, ebx
- shr eax, 16
- and eax, 0x0ff
- stdcall libini._.int_to_str
- mov byte[edi], ','
- inc edi
- movzx eax, bh
- stdcall libini._.int_to_str
- mov byte[edi], ','
- inc edi
- movzx eax, bl
- stdcall libini._.int_to_str
-
- lea eax, [buf]
- sub edi, eax
-
- stdcall ini.set_str, [_f_name], [_sec_name], [_key_name], eax, edi
-
- pop edi edx ecx
- ret
-endp
-
-
-;;================================================================================================;;
-;;////////////////////////////////////////////////////////////////////////////////////////////////;;
-;;================================================================================================;;
-;! Imported functions section ;;
-;;================================================================================================;;
-;;////////////////////////////////////////////////////////////////////////////////////////////////;;
-;;================================================================================================;;
-
-
-align 16
-@IMPORT:
-
-library \
- libio , 'libio.obj'
-
-import libio , \
- file.size , 'file_size' , \
- file.open , 'file_open' , \
- file.read , 'file_read' , \
- file.write , 'file_write' , \
- file.seek , 'file_seek' , \
- file.eof? , 'file_iseof' , \
- file.seteof , 'file_seteof' , \
- file.tell , 'file_tell' , \
- file.close , 'file_close'
-
-
-;;================================================================================================;;
-;;////////////////////////////////////////////////////////////////////////////////////////////////;;
-;;================================================================================================;;
-;! Exported functions section ;;
-;;================================================================================================;;
-;;////////////////////////////////////////////////////////////////////////////////////////////////;;
-;;================================================================================================;;
-
-
-align 16
-@EXPORT:
-
-export \
- libini._.init , 'lib_init' , \
- 0x00080008 , 'version' , \
- ini.enum_sections , 'ini_enum_sections' , \
- ini.enum_keys , 'ini_enum_keys' , \
- ini.get_str , 'ini_get_str' , \
- ini.get_int , 'ini_get_int' , \
- ini.get_color , 'ini_get_color' , \
- ini.set_str , 'ini_set_str' , \
- ini.set_int , 'ini_set_int' , \
- ini.set_color , 'ini_set_color'
diff --git a/programs/develop/libraries/libs-dev/libini/libini_p.asm b/programs/develop/libraries/libs-dev/libini/libini_p.asm
deleted file mode 100644
index 659160c943..0000000000
--- a/programs/develop/libraries/libs-dev/libini/libini_p.asm
+++ /dev/null
@@ -1,623 +0,0 @@
-;;================================================================================================;;
-;;//// libini_p.asm //// (c) mike.dld, 2006-2008 /////////////////////////////////////////////////;;
-;;================================================================================================;;
-;; ;;
-;; This file is part of Common development libraries (Libs-Dev). ;;
-;; ;;
-;; Libs-Dev is free software: you can redistribute it and/or modify it under the terms of the GNU ;;
-;; Lesser General Public License as published by the Free Software Foundation, either version 2.1 ;;
-;; of the License, or (at your option) any later version. ;;
-;; ;;
-;; Libs-Dev is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without ;;
-;; even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;;
-;; Lesser General Public License for more details. ;;
-;; ;;
-;; You should have received a copy of the GNU Lesser General Public License along with Libs-Dev. ;;
-;; If not, see . ;;
-;; ;;
-;;================================================================================================;;
-
-mem.alloc dd ?
-mem.free dd ?
-mem.realloc dd ?
-dll.load dd ?
-
-;;================================================================================================;;
-proc libini._.init ;//////////////////////////////////////////////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? Library entry point (called after library load) ;;
-;;------------------------------------------------------------------------------------------------;;
-;> eax = memory allocation routine ;;
-;> ebx = memory freeing routine ;;
-;> ecx = memory reallocation routine ;;
-;> edx = library loading routine ;;
-;;------------------------------------------------------------------------------------------------;;
-;< eax = 1 (fail) / 0 (ok) (library initialization result) ;;
-;;================================================================================================;;
- mov [mem.alloc], eax
- mov [mem.free], ebx
- mov [mem.realloc], ecx
- mov [dll.load], edx
-
- invoke dll.load, @IMPORT
- or eax, eax
- jz .ok
-
- xor eax, eax
- inc eax
- ret
-
- .ok: xor eax,eax
- ret
-endp
-
-;;================================================================================================;;
-proc libini._.unget_char _f ;/////////////////////////////////////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;> --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;< --- TBD --- ;;
-;;================================================================================================;;
- push eax ecx
- mov ecx, [_f]
- inc [ecx + IniFile.cnt]
- dec esi
- mov eax, [ecx + IniFile.bsize]
- cmp [ecx + IniFile.cnt], eax
- jle @f
- stdcall libini._.unload_block, [_f]
- @@: pop ecx eax
- ret
-endp
-
-;;================================================================================================;;
-proc libini._.get_char _f ;///////////////////////////////////////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;> --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;< --- TBD --- ;;
-;;================================================================================================;;
- mov ecx, [_f]
- dec [ecx + IniFile.cnt]
- jns @f
- stdcall libini._.preload_block, [_f]
- dec [ecx + IniFile.cnt]
- @@: lodsb
- ret
-endp
-
-;;================================================================================================;;
-proc libini._.skip_nonblanks _f ;/////////////////////////////////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;> --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;< --- TBD --- ;;
-;;================================================================================================;;
- mov ecx, [_f]
- @@: stdcall libini._.get_char, [_f]
- cmp al, 32
- je @b
- cmp al, 13
- je @b
- cmp al, 10
- je @b
- cmp al, 9
- je @b
- cmp al, ini.COMMENT_CHAR
- jne @f
- stdcall libini._.skip_line, [_f]
- jmp @b
- @@: stdcall libini._.unget_char, [_f]
- ret
-endp
-
-;;================================================================================================;;
-proc libini._.skip_spaces _f ;////////////////////////////////////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;> --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;< --- TBD --- ;;
-;;================================================================================================;;
- mov ecx, [_f]
- @@: stdcall libini._.get_char, [_f]
- cmp al, 32
- je @b
- cmp al, 9
- je @b
- @@: stdcall libini._.unget_char, [_f]
- ret
-endp
-
-;;================================================================================================;;
-proc libini._.skip_line _f ;//////////////////////////////////////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;> --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;< --- TBD --- ;;
-;;================================================================================================;;
- mov ecx, [_f]
- @@: stdcall libini._.get_char, [_f]
- or al, al
- jz @f
- cmp al, 13
- je @f
- cmp al, 10
- jne @b
- @@: stdcall libini._.unget_char, [_f]
- ret
-endp
-
-;;================================================================================================;;
-proc libini._.unload_block _f ;///////////////////////////////////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;> --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;< --- TBD --- ;;
-;;================================================================================================;;
- push eax ebx ecx
- mov ebx, [_f]
- mov eax, [ebx + IniFile.pos]
- add eax, -ini.BLOCK_SIZE
- invoke file.seek, [ebx + IniFile.fh], eax, SEEK_SET
- stdcall libini._.preload_block, ebx
- add esi, eax
- mov [ebx + IniFile.cnt], 0
- pop ecx ebx eax
- ret
-endp
-
-;;================================================================================================;;
-proc libini._.preload_block _f ;//////////////////////////////////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;> --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;< --- TBD --- ;;
-;;================================================================================================;;
- push eax ebx ecx
- mov ebx, [_f]
- @@: mov esi, [ebx + IniFile.buf]
- push edi
- mov edi, esi
- mov ecx, ini.BLOCK_SIZE / 4
- xor eax, eax
- rep stosd
- pop edi
- invoke file.tell, [ebx + IniFile.fh]
- mov [ebx + IniFile.pos], eax
- invoke file.read, [ebx + IniFile.fh], esi, ini.BLOCK_SIZE
- mov esi,[ebx + IniFile.buf]
- cmp eax,ini.BLOCK_SIZE
- jl @f
- @@: mov [ebx + IniFile.cnt], eax
- mov [ebx + IniFile.bsize], eax
- pop ecx ebx eax
- ret
-endp
-
-;;================================================================================================;;
-proc libini._.reload_block _f ;///////////////////////////////////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;> --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;< --- TBD --- ;;
-;;================================================================================================;;
- push eax ebx ecx
- mov ebx, [_f]
- push [ebx + IniFile.bsize]
- push esi [ebx + IniFile.cnt]
- invoke file.seek, [ebx + IniFile.fh], [ebx + IniFile.pos], SEEK_SET
- stdcall libini._.preload_block, ebx
- pop [ebx + IniFile.cnt] esi
- pop eax
- sub eax,[ebx + IniFile.bsize]
- sub [ebx + IniFile.cnt], eax
- pop ecx ebx eax
- ret
-endp
-
-; f_info - contains current file block number
-; esi - position in block from where to shift
-; ecx - number of bytes to shift by
-
-;;================================================================================================;;
-proc libini._.shift_content _f, _delta ;//////////////////////////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? Shift file content starting from cursor position (~ delete) ;;
-;? Content is copied by 'delta' bytes up/down ;;
-;;------------------------------------------------------------------------------------------------;;
-;> --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;< eax = -1 (fail) / 0 (ok) ;;
-;;================================================================================================;;
-locals
- buf dd ?
-endl
-
- xor eax, eax
- cmp [_delta], 0
- je .skip
-
- push ebx ecx
- invoke mem.alloc, ini.BLOCK_SIZE
- or eax, eax
- jz .fail
- mov [buf], eax
-
- cmp [_delta], 0
- jl .down
-
- mov ebx, [_f]
- mov ecx, [ebx + IniFile.cnt]
- mov ebx, [ebx + IniFile.fh]
- invoke file.tell, ebx
- sub eax, ecx
- invoke file.seek, ebx, eax, SEEK_SET
- @@: invoke file.seek, ebx, [_delta], SEEK_CUR
- invoke file.eof?, ebx
- or eax, eax
- jnz .done
- invoke file.read, ebx, [buf], ini.BLOCK_SIZE
- mov ecx, eax
- mov eax, [_delta]
- neg eax
- sub eax, ecx
- invoke file.seek, ebx, eax, SEEK_CUR
- invoke file.write, ebx, [buf], ecx
- jmp @b
- .done:
- mov eax, [_delta]
- neg eax
- invoke file.seek, ebx, eax, SEEK_CUR
- invoke file.seteof, ebx
- stdcall libini._.reload_block, [_f]
- invoke mem.free, [buf]
- pop ecx ebx
- .skip:
- ret
- .fail:
- or eax, -1
- pop ecx ebx
- ret
-
- .down:
- neg [_delta]
-
- mov ebx, [_f]
- mov ecx, [ebx + IniFile.cnt]
- mov ebx, [ebx + IniFile.fh]
- invoke file.tell, ebx
- sub eax, ecx
- lea edx, [eax - 1]
- push edx
- @@: invoke file.seek, ebx, edx, SEEK_SET
- invoke file.eof?, ebx
- or eax, eax
- jnz @f
- add edx, ini.BLOCK_SIZE
- jmp @b
- @@: cmp edx, [esp]
- je .skip.2
- add edx, -ini.BLOCK_SIZE
- cmp edx, [esp]
- jl @f
- invoke file.seek, ebx, edx, SEEK_SET
- invoke file.read, ebx, [buf], ini.BLOCK_SIZE
- mov ecx, eax
- mov eax, [_delta]
- sub eax, ecx
- invoke file.seek, ebx, eax, SEEK_CUR
- invoke file.write, ebx, [buf], ecx
- jmp @b
- @@:
- .skip.2:
- add esp, 4
- stdcall libini._.reload_block, [_f]
- invoke mem.free, [buf]
- pop ecx ebx
- ret
-endp
-
-;;================================================================================================;;
-proc libini._.get_value_length _f ;///////////////////////////////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;> --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;< --- TBD --- ;;
-;;================================================================================================;;
- push ebx ecx edx eax
- mov ebx, [_f]
- invoke file.tell, [ebx + IniFile.fh]
- push esi [ebx + IniFile.cnt] [ebx + IniFile.pos]
- sub eax, [ebx + IniFile.cnt]
- mov edx, eax
-
- stdcall libini._.skip_line, [_f]
- invoke file.tell, [ebx + IniFile.fh]
- sub eax, [ebx + IniFile.cnt]
- sub eax, edx
- mov [esp + 4 * 3], eax
-
- pop eax
- invoke file.seek, [ebx + IniFile.fh], eax, SEEK_SET
- stdcall libini._.preload_block, [_f]
- pop [ebx + IniFile.cnt] esi
- pop eax edx ecx ebx
- ret
-endp
-
-;;================================================================================================;;
-proc libini._.string_copy ;///////////////////////////////////////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;> --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;< --- TBD --- ;;
-;;================================================================================================;;
- @@: lodsb
- or al, al
- jz @f
- stosb
- jmp @b
- @@: ret
-endp
-
-;;================================================================================================;;
-proc libini._.find_next_section _f ;//////////////////////////////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;> --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;< --- TBD --- ;;
-;;================================================================================================;;
- push ebx edi
-
- @@: stdcall libini._.skip_nonblanks, [_f]
- cmp al, '['
- je @f
- or al, al
- jz .exit_error
- stdcall libini._.skip_line, [_f]
- or al, al
- jz .exit_error
- jmp @b
- @@:
- pop edi ebx
- xor eax, eax
- ret
-
- .exit_error:
- pop edi ebx
- or eax, -1
- ret
-endp
-
-;;================================================================================================;;
-proc libini._.find_section _f, _sec_name ;////////////////////////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? Find section in file ;;
-;? Search is performed from the beginning of file ;;
-;;------------------------------------------------------------------------------------------------;;
-;> --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;< eax = -1 (fail) / 0 (ok) ;;
-;< [_f.pos] = new cursor position (right after ']' char if eax = 0, at the end of file otherwise) ;;
-;;================================================================================================;;
- push ebx edi
-
- mov ecx, [_f]
- invoke file.seek, [ecx + IniFile.fh], 0, SEEK_SET
- stdcall libini._.preload_block, [_f]
-
- .next_section:
- stdcall libini._.find_next_section, [_f]
- or eax, eax
- jnz .exit_error
-
- stdcall libini._.get_char, [_f]
- stdcall libini._.skip_spaces, [_f]
- mov edi, [_sec_name]
- @@: stdcall libini._.get_char, [_f]
- cmp al, ']'
- je @f
- or al, al
- jz .exit_error
- cmp al, 13
- je .next_section
- cmp al, 10
- je .next_section
- scasb
- je @b
- cmp byte[edi - 1], 0
- jne .next_section
- dec edi
- stdcall libini._.unget_char, [_f]
- stdcall libini._.skip_spaces, [_f]
- stdcall libini._.get_char, [_f]
- cmp al, ']'
- jne .next_section
- @@:
- cmp byte[edi], 0
- jne .next_section
- pop edi ebx
- xor eax, eax
- ret
-
- .exit_error:
- pop edi ebx
- or eax, -1
- ret
-endp
-
-;;================================================================================================;;
-proc libini._.find_key _f, _key_name ;////////////////////////////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? Find key in section ;;
-;? Search is performed within current section starting from cursor position ;;
-;;------------------------------------------------------------------------------------------------;;
-;> --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;< eax = -1 (fail) / 0 (ok) ;;
-;< [_f.pos] = new cursor position (right after '=' char if eax = 0, at the end of file or right ;;
-;< before '[' char otherwise) ;;
-;;================================================================================================;;
- push ebx edi
-
- .next_value:
- mov edi, [_key_name]
- stdcall libini._.skip_line, [_f]
- stdcall libini._.skip_nonblanks, [_f]
- or al, al
- jz .exit_error
- cmp al, '['
- je .exit_error
- @@: stdcall libini._.get_char, [_f]
- or al, al
- jz .exit_error
- cmp al, '='
- je @f
- scasb
- je @b
- cmp byte[edi - 1], 0
- jne .next_value
- dec edi
- stdcall libini._.unget_char, [_f]
- stdcall libini._.skip_spaces, [_f]
- stdcall libini._.get_char, [_f]
- cmp al, '='
- je @f
- jmp .next_value
- @@:
- cmp byte[edi], 0
- jne .next_value
-
- pop edi ebx
- xor eax, eax
- ret
-
- .exit_error:
- pop edi ebx
- or eax, -1
- ret
-endp
-
-;;================================================================================================;;
-proc libini._.low.read_value _f_addr, _buffer, _buf_len ;/////////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;> --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;< --- TBD --- ;;
-;;================================================================================================;;
- push edi eax
- mov edi, [_buffer]
- stdcall libini._.skip_spaces, [_f_addr]
- @@: dec [_buf_len]
- jz @f
- stdcall libini._.get_char, [_f_addr]
- cmp al, 13
- je @f
- cmp al, 10
- je @f
- stosb
- or al, al
- jnz @b
- @@: stdcall libini._.unget_char, [_f_addr]
- mov byte[edi], 0
- dec edi
- @@: cmp edi, [_buffer]
- jb @f
- cmp byte[edi], 32
- ja @f
- mov byte[edi], 0
- dec edi
- jmp @b
- @@: pop eax edi
- ret
-endp
-
-;;================================================================================================;;
-proc libini._.str_to_int ;////////////////////////////////////////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;> esi = string buffer address ;;
-;;------------------------------------------------------------------------------------------------;;
-;< eax = binary number representation (no overflow checks made) ;;
-;;================================================================================================;;
- push edx
-
- xor eax, eax
- xor edx, edx
-
- @@: lodsb
- cmp al, '0'
- jb @f
- cmp al, '9'
- ja @f
- add eax, -'0'
- imul edx, 10
- add edx, eax
- jmp @b
-
- @@: dec esi
- mov eax, edx
- pop edx
- ret
-endp
-
-;;================================================================================================;;
-proc libini._.int_to_str ;////////////////////////////////////////////////////////////////////////;;
-;;------------------------------------------------------------------------------------------------;;
-;? --- TBD --- ;;
-;;------------------------------------------------------------------------------------------------;;
-;> eax = number to convert ;;
-;> ecx = base ;;
-;> edi = string buffer address ;;
-;;------------------------------------------------------------------------------------------------;;
-;< --- TBD --- ;;
-;;================================================================================================;;
- push ecx edx
-
- or eax, eax
- jns @f
- mov byte[edi], '-'
- inc edi
- @@: call .recurse
- pop edx ecx
- ret
-
- .recurse:
- cmp eax,ecx
- jb @f
- xor edx,edx
- div ecx
- push edx
- call .recurse
- pop eax
- @@: cmp al,10
- sbb al,0x69
- das
- stosb
- retn
-endp
diff --git a/programs/develop/libraries/libs-dev/libini/libini_p.inc b/programs/develop/libraries/libs-dev/libini/libini_p.inc
deleted file mode 100644
index 73311b4c71..0000000000
--- a/programs/develop/libraries/libs-dev/libini/libini_p.inc
+++ /dev/null
@@ -1,34 +0,0 @@
-;;================================================================================================;;
-;;//// libini_p.inc //// (c) mike.dld, 2007-2008 /////////////////////////////////////////////////;;
-;;================================================================================================;;
-;; ;;
-;; This file is part of Common development libraries (Libs-Dev). ;;
-;; ;;
-;; Libs-Dev is free software: you can redistribute it and/or modify it under the terms of the GNU ;;
-;; Lesser General Public License as published by the Free Software Foundation, either version 2.1 ;;
-;; of the License, or (at your option) any later version. ;;
-;; ;;
-;; Libs-Dev is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without ;;
-;; even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;;
-;; Lesser General Public License for more details. ;;
-;; ;;
-;; You should have received a copy of the GNU Lesser General Public License along with Libs-Dev. ;;
-;; If not, see . ;;
-;; ;;
-;;================================================================================================;;
-
-
-ini.MAX_NAME_LEN = 1024
-ini.MAX_VALUE_LEN = 4096
-ini.MEM_SIZE = 4096
-ini.BLOCK_SIZE = ini.MEM_SIZE / 2
-
-ini.COMMENT_CHAR = ';'
-
-struct IniFile
- fh dd ?
- buf dd ?
- cnt dd ?
- pos dd ?
- bsize dd ?
-ends