Using function get_option_str from libini instead of independent parsing. New import names

git-svn-id: svn://kolibrios.org@1236 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
vkos 2009-10-25 20:18:42 +00:00
parent 7ccd9d85bb
commit 4448079bc7
5 changed files with 123 additions and 2862 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,8 @@
==================== <20>ãá᪨© ====================
0.1.4 - 0.9.03.2009 - vkos
0.1.5 - 25.10.2009 - vkos
* ˆá¯®«ì§®¢ ­¨¥ ä㭪樨 get_option_str ¨§ libini (¯®á«¥¤­¥© ॢ¨§¨¨) ¢¬¥áâ® á ¬®áâ®ï⥫쭮£® à §¡®à 
* <20>¥à¥å®¤ ­  ­®¢ë¥ ¨¬¥­  ¯à¨ ¨¬¯®à⥠(ᮢ¬¥á⨬®áâì á ¡¨¡«¨®â¥ª ¬¨)
0.1.4 - 09.03.2009 - vkos
* ˆá¯à ¢«¥­  ®è¨¡ª  à §¡®à  ¯ à ¬¥â஢ (¨§-§  ­¥ñ ¯à®£à ¬¬  ¬®£«  ¢®®¡é¥ ­¥ à ¡®â âì)
0.1.3 - 20.02.2009 - vkos
+ ‡ ¯ãáª á ¯ à ¬¥âà ¬¨
@ -14,7 +17,10 @@
+ <20>¥ «¨§®¢ ­® ç⥭¨¥ ª®­ä¨£ãà æ¨¨ ¨ § ¯ã᪠¯à®£à ¬¬ë (¡¥§  à£ã¬¥­â®¢)
==================== English ====================
0.1.4 - 0.9.03.2009 - vkos
0.1.5 - 25.10.2009 - vkos
* Using function get_option_str from libini (last revision) instead of independent parsing
* New import names (compatibility with libraries)
0.1.4 - 09.03.2009 - vkos
* Parsing of arguments is fixed (the problem may cause non-working program)
0.1.3 - 20.02.2009 - vkos
+ Launching with arguments

View File

@ -17,8 +17,10 @@
;; For more details see readme.txt ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
format binary
APP_NAME fix 'Launch'
APP_VERSION fix '0.1.4'
APP_VERSION fix '0.1.5'
use32
org 0x0
@ -32,17 +34,23 @@ dd APP_STACK
dd args
dd path
define DEBUG_NO 0
define DEBUG_CONSOLE 1
define DEBUG_BOARD 2 ;; Not used now
define PATH_MAX_LEN 1024
define DEBUG_MAX_LEN 8
define DEBUG_DEFAULT debug_no_num
define DEBUG_DEFAULT 0
define BUFF_SIZE 1024
include 'macros.inc'
include 'proc32.inc'
include '../../../proc32.inc'
include '../../../macros.inc'
include 'libio.inc'
include 'mem.inc'
include 'dll.inc'
;;--------------------------------------------------------------------------------------------------
;; Basic initialization
START:
;; Initialize process heap
mcall 68,11
@ -54,7 +62,9 @@ START:
test eax, eax
jnz exit
read_ini:
;;--------------------------------------------------------------------------------------------------
;; Reading config
read_ini_path: ;; Read search path
;; First read config in /sys/etc
invoke ini.get_str, etc_cfg, cfg_main, cfg_path, search_path, PATH_MAX_LEN, empty_str
@ -89,64 +99,26 @@ read_ini:
;; Read ini
invoke ini.get_str, path, cfg_main, cfg_path, edi, PATH_MAX_LEN, empty_str
read_ini_debug:
read_ini_debug: ;; Read debug options
;; Read debug options from config files
invoke ini.get_str, etc_cfg, cfg_debug, cfg_debug, debug_option, DEBUG_MAX_LEN, DEBUG_DEFAULT
invoke ini.get_str, path, cfg_debug, cfg_debug, debug_option, DEBUG_MAX_LEN, debug_option
invoke ini.get_option_str, etc_cfg, cfg_debug, cfg_debug, debug_strings, DEBUG_MAX_LEN, DEBUG_DEFAULT
invoke ini.get_option_str, path, cfg_debug, cfg_debug, debug_strings, DEBUG_MAX_LEN, eax
mov [debug_option], eax
;; Now convert debug_option from string to number of debug mode
mov ebx, modes-4
.convert:
mov al, byte [debug_option]
cmp al, 10
jbe .converted
.convert_nxt:
add ebx, 4
mov esi, dword [ebx]
test esi, esi
je .set_default ;; String is incorrect, so set default
mov edi, debug_option
.conv_loop:
mov al, byte [esi]
cmp al, byte [edi]
jne .convert_nxt ;; Not equal, so try next
test al, al
je .found ;; Equal, end of loop
inc esi
inc edi
jmp .conv_loop
.set_default:
mov al, byte [DEBUG_DEFAULT]
mov byte [debug_option], al
jmp .converted
.found:
sub ebx, modes
shr ebx, 2
add ebx, modes_nums
mov al, byte [ebx]
mov byte [debug_option], al
.converted:
dec al
test al, al
test eax, eax ;; No console
je .ok
dec al
test al, al
je .con_init
.noconsole:
mov al, 1
mov byte [debug_option], al
jmp .con_init
.console_err:
mov dword [debug_option], 0
jmp .ok
.con_init:
stdcall dll.Load, consoleImport
test eax, eax
jnz .noconsole
invoke con.init, -1, -1, -1, -1, WinTitle
jnz .console_err
invoke con.init, -1, -1, -1, -1, window_title
.read_level:
invoke ini.get_int, etc_cfg, cfg_debug, cfg_level, 0
@ -154,10 +126,19 @@ read_ini_debug:
mov dword [debug_level], eax
.ok:
; read_ini_kobra:
; invoke ini.get_str, etc_cfg, cfg_kobra, cfg_use, kobra_use, KOBRA_USE_MAX_LEN, KOBRA_USE_DEFAULT
; invoke ini.get_str, path, cfg_kobra, cfg_use, kobra_use, KOBRA_USE_MAX_LEN, kobra_use
;
; ;; Now convert string option to acceptable type
;;--------------------------------------------------------------------------------------------------
;; Parse command line options
parse_args:
;; Now parse command line arguments
;; TODO: use optparse library
;; Currently the only argument to parse is program name
;; Currently the only argument to parse is program name with its' arguments
.skip_spaces:
mov ecx, -1
@ -184,7 +165,8 @@ parse_args:
dec edi
;; Now edi = program name
;; End of preparations! Now we can find file and launch it.
;;--------------------------------------------------------------------------------------------------
;; Finding file
search_file:
push edi
mov esi, search_path
@ -197,7 +179,7 @@ search_file:
.prn_dbg:
push eax
mov al, byte [debug_option]
dec al
; dec al
test al, al
je .prn_stp
mov eax, dword [debug_level]
@ -253,15 +235,14 @@ search_file:
cmp eax, 0
jl .loop
;;--------------------------------------------------------------------------------------------------
;; Exit
exit:
push eax
;; If console is present we should write some info
mov al, byte [debug_option]
cmp al, 2
je .write_console
.close:
mcall -1
cmp al, DEBUG_CONSOLE
jne .close
.write_console:
pop eax
@ -275,52 +256,60 @@ exit:
cinvoke con.printf, message_error, edi
.wr_end:
invoke con.exit, 0
jmp .close
.close:
mcall -1
;; End of code
;;--------------------------------------------------------------------------------------------------
align 16
importTable:
library \
libini, 'libini.obj';, \
library libini, 'libini.obj' ;, \
; libio, 'libio.obj', \
import libini, \
ini.get_str ,'ini.get_str', \
\; ini.set_str ,'ini.set_str', \
ini.get_int ,'ini.get_int';, \
\; ini.set_int ,'ini.set_int', \
; ini.get_color,'ini.get_color', \
; ini.set_color,'ini.set_color'
ini.get_str ,'ini_get_str', \
\; ini.set_str ,'ini_set_str', \
ini.get_int ,'ini_get_int', \
\; ini.set_int ,'ini_set_int', \
\; ini.get_color ,'ini_get_color', \
\; ini.set_color ,'ini_set_color', \
ini.get_option_str ,'ini_get_option_str';, \
;import libio, \
; file.find_first,'file.find_first', \
; file.find_next ,'file.find_next', \
; file.find_close,'file.find_close', \
; file.size ,'file.size', \
; file.open ,'file.open', \
; file.read ,'file.read', \
; file.write ,'file.write', \
; file.seek ,'file.seek', \
; file.tell ,'file.tell', \
; file.eof? ,'file.eof?', \
; file.truncate ,'file.truncate', \
; file.close ,'file.close'
; file_find_first,'file_find_first', \
; file_find_next ,'file_find_next', \
; file_find_close,'file_find_close', \
; file_size ,'file_size', \
; file_open ,'file_open', \
; file_read ,'file_read', \
; file_write ,'file_write', \
; file_seek ,'file_seek', \
; file_tell ,'file_tell', \
; file_eof? ,'file_eof?', \
; file_truncate ,'file_truncate', \
; file_close ,'file_close'
consoleImport:
library \
conlib, 'console.obj'
import conlib, \
con.init, 'con.init',\
con.exit, 'con.exit',\
con.printf, 'con.printf';,\
; con.write_asciiz, 'con.write_asciiz'
import conlib,\
con.init, 'con_init',\
con.exit, 'con_exit',\
con.printf, 'con_printf' ;,\
; con.write_asciiz, 'con_write_asciiz'
align 16
APP_DATA:
WinTitle:
;; Window title
window_title:
db APP_NAME, ' ', APP_VERSION, 0
;; Messages
message_dbg_not_found:
db '%s not found', 10, 0
@ -330,8 +319,11 @@ message_error:
message_ok:
db '%s loaded succesfully. PID: %d (0x%X)'
;; Empty string
empty_str:
db 0
;; Configuration path
etc_cfg:
db '/sys/etc/'
cfg_name:
@ -339,6 +331,7 @@ cfg_name:
cfg_ext:
db '.cfg', 0
;; String in config file
cfg_main:
db 'main', 0
cfg_path:
@ -348,7 +341,8 @@ cfg_debug:
cfg_level:
db 'level', 0
modes:
;; List of debug modes for parsing debug option
debug_strings:
dd debug_no
dd debug_console
dd 0
@ -358,16 +352,19 @@ debug_no:
debug_console:
db 'console', 0
modes_nums:
debug_no_num:
db 1
debug_console_num:
db 2
; modes_nums:
; debug_no_num:
; db 1
;
; debug_console_num:
; db 2
debug_level:
dd 0
debug_kobra:
db 0
LaunchStruct FileInfoRun
args: db 0
@ -379,12 +376,15 @@ prog_args:
path:
rb 1024
;; Search path will be here
search_path:
rb PATH_MAX_LEN
;; debug option as number
debug_option:
rb DEBUG_MAX_LEN
dd 0
;; Buffer
buff:
rb BUFF_SIZE

View File

@ -1,349 +0,0 @@
0x186 START
0x972 APP_END
0x267D MEM_END
0x267D APP_STACK
0x971 args
0xA75 path
0x0 RECT.left
0x4 RECT.top
0x8 RECT.right
0xC RECT.bottom
0x0 BOX.left
0x4 BOX.top
0x8 BOX.width
0xC BOX.height
0x0 process_information.cpu_usage
0x4 process_information.window_stack_position
0x6 process_information.window_stack_value
0x8 process_information.anonymous?K
0xA process_information.process_name
0x16 process_information.memory_start
0x1A process_information.used_memory
0x1E process_information.PID
0x22 process_information.box
0x22 process_information.box.left
0x26 process_information.box.top
0x2A process_information.box.width
0x2E process_information.box.height
0x32 process_information.slot_state
0x34 process_information.anonymous?L
0x36 process_information.client_box
0x36 process_information.client_box.left
0x3A process_information.client_box.top
0x3E process_information.client_box.width
0x42 process_information.client_box.height
0x46 process_information.wnd_state
0x47 process_information.anonymous?M
0x0 system_colors.frame
0x4 system_colors.grab
0x8 system_colors.grab_button
0xC system_colors.grab_button_text
0x10 system_colors.grab_text
0x14 system_colors.work
0x18 system_colors.work_button
0x1C system_colors.work_button_text
0x20 system_colors.work_text
0x24 system_colors.work_graph
0x0 FILEDATE.Second
0x1 FILEDATE.Minute
0x2 FILEDATE.Hour
0x3 FILEDATE.anonymous?0D
0x4 FILEDATE.Day
0x5 FILEDATE.Month
0x6 FILEDATE.Year
0x0 FILEINFO.Attributes
0x4 FILEINFO.IsUnicode
0x5 FILEINFO.anonymous?0U
0x8 FILEINFO.DateCreate
0x8 FILEINFO.DateCreate.Second
0x9 FILEINFO.DateCreate.Minute
0xA FILEINFO.DateCreate.Hour
0xB FILEINFO.DateCreate.anonymous?0D
0xC FILEINFO.DateCreate.Day
0xD FILEINFO.DateCreate.Month
0xE FILEINFO.DateCreate.Year
0x10 FILEINFO.DateAccess
0x10 FILEINFO.DateAccess.Second
0x11 FILEINFO.DateAccess.Minute
0x12 FILEINFO.DateAccess.Hour
0x13 FILEINFO.DateAccess.anonymous?0D
0x14 FILEINFO.DateAccess.Day
0x15 FILEINFO.DateAccess.Month
0x16 FILEINFO.DateAccess.Year
0x18 FILEINFO.DateModify
0x18 FILEINFO.DateModify.Second
0x19 FILEINFO.DateModify.Minute
0x1A FILEINFO.DateModify.Hour
0x1B FILEINFO.DateModify.anonymous?0D
0x1C FILEINFO.DateModify.Day
0x1D FILEINFO.DateModify.Month
0x1E FILEINFO.DateModify.Year
0x20 FILEINFO.Size
0x0 sub?0m.sec
0x1 sub?0m.min
0x2 sub?0m.hour
0x0 FileDateTime.time
0x0 sub?0x.day
0x1 sub?0x.month
0x2 sub?0x.year
0x0 FileDateTime.date
0x0 FileInfoBlock.Function
0x4 FileInfoBlock.Position
0x8 FileInfoBlock.Flags
0xC FileInfoBlock.Count
0x10 FileInfoBlock.Buffer
0x14 FileInfoBlock.anonymous?1B
0x15 FileInfoBlock.FileName
0x0 FileInfoHeader.Version
0x4 FileInfoHeader.FilesRead
0x8 FileInfoHeader.FilesCount
0xC FileInfoHeader.anonymous?1S
0x0 sub?1j.FileSizeLow
0x4 sub?1j.FileSizeHigh
0x0 FileInfoA.FileSize
0x0 FileInfoA.Attributes
0x4 FileInfoA.Flags
0x8 FileInfoA.DateCreate
0x8 FileInfoA.DateCreatesub?0m
0x8 FileInfoA.DateCreate.time
0x8 FileInfoA.DateCreatesub?0p
0x8 FileInfoA.DateCreate.sec
0x9 FileInfoA.DateCreate.min
0xA FileInfoA.DateCreate.hour
0xC FileInfoA.DateCreatesub?0x
0xC FileInfoA.DateCreate.date
0xC FileInfoA.DateCreatesub?10
0xC FileInfoA.DateCreate.day
0xD FileInfoA.DateCreate.month
0xE FileInfoA.DateCreate.year
0x10 FileInfoA.DateAccess
0x10 FileInfoA.DateAccesssub?0m
0x10 FileInfoA.DateAccess.time
0x10 FileInfoA.DateAccesssub?0p
0x10 FileInfoA.DateAccess.sec
0x11 FileInfoA.DateAccess.min
0x12 FileInfoA.DateAccess.hour
0x14 FileInfoA.DateAccesssub?0x
0x14 FileInfoA.DateAccess.date
0x14 FileInfoA.DateAccesssub?10
0x14 FileInfoA.DateAccess.day
0x15 FileInfoA.DateAccess.month
0x16 FileInfoA.DateAccess.year
0x18 FileInfoA.DateModify
0x18 FileInfoA.DateModifysub?0m
0x18 FileInfoA.DateModify.time
0x18 FileInfoA.DateModifysub?0p
0x18 FileInfoA.DateModify.sec
0x19 FileInfoA.DateModify.min
0x1A FileInfoA.DateModify.hour
0x1C FileInfoA.DateModifysub?0x
0x1C FileInfoA.DateModify.date
0x1C FileInfoA.DateModifysub?10
0x1C FileInfoA.DateModify.day
0x1D FileInfoA.DateModify.month
0x1E FileInfoA.DateModify.year
0x28 FileInfoA.FileName
0x0 sub?27.FileSizeLow
0x4 sub?27.FileSizeHigh
0x0 FileInfoW.FileSize
0x0 FileInfoW.Attributes
0x4 FileInfoW.Flags
0x8 FileInfoW.DateCreate
0x8 FileInfoW.DateCreatesub?0m
0x8 FileInfoW.DateCreate.time
0x8 FileInfoW.DateCreatesub?0p
0x8 FileInfoW.DateCreate.sec
0x9 FileInfoW.DateCreate.min
0xA FileInfoW.DateCreate.hour
0xC FileInfoW.DateCreatesub?0x
0xC FileInfoW.DateCreate.date
0xC FileInfoW.DateCreatesub?10
0xC FileInfoW.DateCreate.day
0xD FileInfoW.DateCreate.month
0xE FileInfoW.DateCreate.year
0x10 FileInfoW.DateAccess
0x10 FileInfoW.DateAccesssub?0m
0x10 FileInfoW.DateAccess.time
0x10 FileInfoW.DateAccesssub?0p
0x10 FileInfoW.DateAccess.sec
0x11 FileInfoW.DateAccess.min
0x12 FileInfoW.DateAccess.hour
0x14 FileInfoW.DateAccesssub?0x
0x14 FileInfoW.DateAccess.date
0x14 FileInfoW.DateAccesssub?10
0x14 FileInfoW.DateAccess.day
0x15 FileInfoW.DateAccess.month
0x16 FileInfoW.DateAccess.year
0x18 FileInfoW.DateModify
0x18 FileInfoW.DateModifysub?0m
0x18 FileInfoW.DateModify.time
0x18 FileInfoW.DateModifysub?0p
0x18 FileInfoW.DateModify.sec
0x19 FileInfoW.DateModify.min
0x1A FileInfoW.DateModify.hour
0x1C FileInfoW.DateModifysub?0x
0x1C FileInfoW.DateModify.date
0x1C FileInfoW.DateModifysub?10
0x1C FileInfoW.DateModify.day
0x1D FileInfoW.DateModify.month
0x1E FileInfoW.DateModify.year
0x28 FileInfoW.FileName
0x0 sub?2V.Zero
0x1 sub?2V.FileNameP
0x0 FileInfoRun.FileName
0x0 FileInfoRun.Function
0x4 FileInfoRun.Flags
0x8 FileInfoRun.Arguments
0xC FileInfoRun.Reserved0
0x10 FileInfoRun.Reserved1
0x0 FileInfo
0x0 FileInfo.Attributes
0x4 FileInfo.Flags
0x8 FileInfo.DateCreate
0x8 FileInfo.DateCreatesub?0m
0x8 FileInfo.DateCreate.time
0x8 FileInfo.DateCreatesub?0p
0x8 FileInfo.DateCreate.sec
0x9 FileInfo.DateCreate.min
0xA FileInfo.DateCreate.hour
0xC FileInfo.DateCreatesub?0x
0xC FileInfo.DateCreate.date
0xC FileInfo.DateCreatesub?10
0xC FileInfo.DateCreate.day
0xD FileInfo.DateCreate.month
0xE FileInfo.DateCreate.year
0x10 FileInfo.DateAccess
0x10 FileInfo.DateAccesssub?0m
0x10 FileInfo.DateAccess.time
0x10 FileInfo.DateAccesssub?0p
0x10 FileInfo.DateAccess.sec
0x11 FileInfo.DateAccess.min
0x12 FileInfo.DateAccess.hour
0x14 FileInfo.DateAccesssub?0x
0x14 FileInfo.DateAccess.date
0x14 FileInfo.DateAccesssub?10
0x14 FileInfo.DateAccess.day
0x15 FileInfo.DateAccess.month
0x16 FileInfo.DateAccess.year
0x18 FileInfo.DateModify
0x18 FileInfo.DateModifysub?0m
0x18 FileInfo.DateModify.time
0x18 FileInfo.DateModifysub?0p
0x18 FileInfo.DateModify.sec
0x19 FileInfo.DateModify.min
0x1A FileInfo.DateModify.hour
0x1C FileInfo.DateModifysub?0x
0x1C FileInfo.DateModify.date
0x1C FileInfo.DateModifysub?10
0x1C FileInfo.DateModify.day
0x1D FileInfo.DateModify.month
0x1E FileInfo.DateModify.year
0x20 FileInfosub?1j
0x20 FileInfo.FileSize
0x20 FileInfosub?1m
0x20 FileInfo.FileSizeLow
0x24 FileInfo.FileSizeHigh
0x28 FileInfo.FileName
0x24 mem.Alloc
0x3A mem.ReAlloc
0x61 mem.Free
0x7B dll.Load
0x81 dll.Load.next_lib
0xBC dll.Load.exit
0x166 s_libdir.fname
0x15D s_libdir
0xC2 dll.Load.fail
0xCC dll.Link
0xFA dll.Init
0xF5 dll.Link.done
0xD7 dll.Link.next
0x112 dll.GetProcAddress
0x11A dll.GetProcAddress.next
0x139 dll.GetProcAddress.end
0x13D strcmp
0x136 dll.GetProcAddress.ok
0x154 strcmp.fail
0x157 strcmp.ok
0x3DD exit
0x430 importTable
0x1A8 read_ini
0x516 etc_cfg
0x52A cfg_main
0x52F cfg_path
0xE75 search_path
0x515 empty_str
0x448 ini.get_str
0x1CC read_ini.find_path_eol
0x525 cfg_ext
0x1E7 read_ini.find_search_eol
0x21D read_ini_debug
0x534 cfg_debug
0x1275 debug_option
0x557 debug_no_num
0x540 modes
0x264 read_ini_debug.convert
0x2AB read_ini_debug.converted
0x26D read_ini_debug.convert_nxt
0x289 read_ini_debug.set_default
0x27B read_ini_debug.conv_loop
0x295 read_ini_debug.found
0x557 modes_nums
0x313 read_ini_debug.ok
0x2C0 read_ini_debug.con_init
0x2B7 read_ini_debug.noconsole
0x46C consoleImport
0x4C0 WinTitle
0x484 con.init
0x2E1 read_ini_debug.read_level
0x53A cfg_level
0x44C ini.get_int
0x559 debug_level
0x313 parse_args
0x313 parse_args.skip_spaces
0xA71 prog_args
0x32D search_file
0x336 search_file.loop
0x33E search_file.prn_dbg
0x36C search_file.prn_end
0x36B search_file.prn_stp
0x358 search_file.prn_1
0x4CD message_dbg_not_found
0x127D buff
0x48C con.printf
0x376 search_file.copy_path
0x382 search_file.copy_file
0x386 search_file.cp_file_loop
0x392 search_file.copy_end
0x55D LaunchStruct.Function
0x565 LaunchStruct.Arguments
0x561 LaunchStruct.Flags
0x571 LaunchStruct.Zero
0x572 LaunchStruct.FileNameP
0x55D LaunchStruct
0x3EC exit.write_console
0x3E7 exit.close
0x408 exit.write_error
0x3F1 exit.write_launched
0x4F0 message_ok
0x418 exit.wr_end
0x4DB message_error
0x488 con.exit
0x448 __libini_library_table__
0x43C __libini_library_name__
0x454 __ini.get_str_import_name__
0x460 __ini.get_int_import_name__
0x484 __conlib_library_table__
0x478 __conlib_library_name__
0x494 __con.init_import_name__
0x4A0 __con.exit_import_name__
0x4AC __con.printf_import_name__
0x4C0 APP_DATA
0x51F cfg_name
0x54C debug_no
0x54F debug_console
0x558 debug_console_num
0x569 LaunchStruct.Reserved0
0x56D LaunchStruct.Reserved1
0x571 LaunchStructsub?2V
0x571 LaunchStruct.FileName
0x571 LaunchStructsub?2Y

View File

@ -1,5 +1,5 @@
==================== <20>ãá᪨© ====================
‚¥àá¨ï: 0.1.4
‚¥àá¨ï: 0.1.5
Launch - ¯à®£à ¬¬  ¤«ï § ¯ã᪠ ¯à¨«®¦¥­¨ï ¨§ ¤¨à¥ªâ®à¨© ¯®¨áª .
<EFBFBD>ਠ§ ¯ã᪥ ç¨â ¥â ä ©« launch.cfg ¢ /sys/etc, § â¥¬ ¢ ¤¨à¥ªâ®à¨¨ § ¯ã᪠.
<EFBFBD>®á«¥ í⮣® ᬮâà¨â ¯ à ¬¥âàë ª®¬ ­¤­®© áâப¨. <20>ਮà¨â¥â ¯ à ¬¥â஢ - ¯®
@ -10,10 +10,10 @@ main.path -
debug.debug - ®¯æ¨¨ ®â« ¤ª¨ (no - ­¥â ®â« ¤ª¨ ¨«¨ console - ¢ë¢®¤ ç¥à¥§ ª®­á®«ì)
debug.level - ã஢¥­ì ®â« ¤ª¨ (0 - ⮫쪮 á®®¡é¥­¨¥ 㤠筮/­¥ã¤ ç­®, 1 - ¢ë¢®¤¨âì á®®¡é¥­¨¥ ¤«ï ª ¦¤®© ¤¨à¥ªâ®à¨¨)
<EFBFBD><EFBFBD>…„“<EFBFBD><EFBFBD>…†„…<EFBFBD>ˆ…:
¤«ï ¢ë¢®¤  ¢ ª®­á®«ì ­ã¦­  ¨§¬¥­ñ­­ ï ¡¨¡«¨®â¥ª  console.obj!
¤«ï à ¡®âë ­ã¦­  libini ­¥ áâ à¥¥ ॢ¨§¨¨ #1235.
==================== English ====================
Version: 0.1.4
Version: 0.1.5
Launch is a programme that launches applications from search dirictories.
On the start it reads file launch.cfg in /sys/etc and in current dirictory.
Than it reads command line arguments. Priority of arguments is as reading.
@ -23,4 +23,4 @@ main.path - path to search dirictories
debug.debug - debug options (no or console)
debug.level - debug level (0 - show only ok/error messages, 1 - show for each directory)
ATTENTION:
to use console output you need new console.obj library!
you need libini from at least #1235 revision.