Fix EN typos

- Corrections for en_US language.
- Some whitespace sanitation.

git-svn-id: svn://kolibrios.org@10062 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Andrew 2024-05-29 14:27:12 +00:00
parent 2d3e0ac7f4
commit f4fd3f6ea0
4 changed files with 1420 additions and 1420 deletions

View File

@ -69,7 +69,7 @@ login_ok:
cmp [param_path], 0x20 ; no path specified cmp [param_path], 0x20 ; no path specified
jbe wait_for_usercommand jbe wait_for_usercommand
; copy path to buf_cmd and execute CWD ; copy path to buf_cmd and execute CWD
jmp arg_handler.get_path jmp arg_handler.get_path
@ -175,7 +175,7 @@ data_loop:
cmp [operation], OPERATION_LIST cmp [operation], OPERATION_LIST
je .list je .list
; not retreiving, just print to console ; not retreiving, just print to console
icall eax, interface_addr, interface.print, buf_buffer2 icall eax, interface_addr, interface.print, buf_buffer2
jmp data_loop jmp data_loop
@ -267,9 +267,9 @@ data_loop:
jne .copy_buf jne .copy_buf
; All received filenames have been copied, calculate new size of fname buffer ; All received filenames have been copied, calculate new size of fname buffer
dec edi ; dont count the trailing 0 byte dec edi ; don't count the trailing 0 byte
sub edi, [ptr_fname] sub edi, [ptr_fname]
mov [size_fname], edi mov [size_fname], edi
jmp data_loop jmp data_loop

File diff suppressed because it is too large Load Diff

View File

@ -1,425 +1,425 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;; ;; ;;
;; Copyright (C) KolibriOS team 2010-2024. All rights reserved. ;; ;; Copyright (C) KolibriOS team 2010-2024. All rights reserved. ;;
;; Distributed under terms of the GNU General Public License ;; ;; Distributed under terms of the GNU General Public License ;;
;; ;; ;; ;;
;; Written by hidnplayr@kolibrios.org ;; ;; Written by hidnplayr@kolibrios.org ;;
;; ;; ;; ;;
;; GNU GENERAL PUBLIC LICENSE ;; ;; GNU GENERAL PUBLIC LICENSE ;;
;; Version 2, June 1991 ;; ;; Version 2, June 1991 ;;
;; ;; ;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ipcfg: ipcfg:
mcall 40, EVM_MOUSE + EVM_MOUSE_FILTER + EVM_REDRAW + EVM_BUTTON + EVM_KEY + EVM_STACK mcall 40, EVM_MOUSE + EVM_MOUSE_FILTER + EVM_REDRAW + EVM_BUTTON + EVM_KEY + EVM_STACK
; Create the 'ip..' string with correct device number ; Create the 'ip..' string with correct device number
call create_str_ini_int call create_str_ini_int
; Try to read settings from .ini file ; Try to read settings from .ini file
invoke ini.get_str, net_ini, str_ini_int, str_ini_ip_type, ini_buf, 16, sz_0 invoke ini.get_str, net_ini, str_ini_int, str_ini_ip_type, ini_buf, 16, sz_0
test eax, eax test eax, eax
jz @f jz @f
; If settings not found, use default settings from 'ip?' section ; If settings not found, use default settings from 'ip?' section
mov dword[str_ini_int], 'ip?' mov dword[str_ini_int], 'ip?'
@@: @@:
; Read ip/subnet/gateway type ; Read ip/subnet/gateway type
mov [option_ip], op_ip_disabled mov [option_ip], op_ip_disabled
invoke ini.get_str, net_ini, str_ini_int, str_ini_ip_type, ini_buf, 16, sz_0 invoke ini.get_str, net_ini, str_ini_int, str_ini_ip_type, ini_buf, 16, sz_0
test eax, eax test eax, eax
jnz .ip_type_loaded jnz .ip_type_loaded
mov eax, dword[ini_buf] mov eax, dword[ini_buf]
or eax, 0x20202020 or eax, 0x20202020
cmp eax, 'auto' cmp eax, 'auto'
jne @f jne @f
; cmp byte[ini_buf+4], 0 ; cmp byte[ini_buf+4], 0
; jne @f ; jne @f
mov [option_ip], op_ip_auto mov [option_ip], op_ip_auto
jmp .ip_type_loaded jmp .ip_type_loaded
@@: @@:
cmp eax, 'dhcp' cmp eax, 'dhcp'
jne @f jne @f
; cmp byte[ini_buf+4], 0 ; cmp byte[ini_buf+4], 0
; jne @f ; jne @f
mov [option_ip], op_ip_auto mov [option_ip], op_ip_auto
jmp .ip_type_loaded jmp .ip_type_loaded
@@: @@:
cmp eax, 'stat' cmp eax, 'stat'
jne @f jne @f
; mov eax, dword[ini_buf+3] ; mov eax, dword[ini_buf+3]
; or eax, 0x202020 ; or eax, 0x202020
; cmp eax, 'tic' ; cmp eax, 'tic'
; jne @f ; jne @f
mov [option_ip], op_ip_static mov [option_ip], op_ip_static
; jmp .ip_type_loaded ; jmp .ip_type_loaded
@@: @@:
.ip_type_loaded: .ip_type_loaded:
; Read DNS type ; Read DNS type
mov [option_dns], op_dns_auto mov [option_dns], op_dns_auto
invoke ini.get_str, net_ini, str_ini_int, str_ini_dns_type, ini_buf, 16, sz_0 invoke ini.get_str, net_ini, str_ini_int, str_ini_dns_type, ini_buf, 16, sz_0
test eax, eax test eax, eax
jnz @f jnz @f
mov eax, dword[ini_buf] mov eax, dword[ini_buf]
or eax, 0x20202020 or eax, 0x20202020
cmp eax, 'stat' cmp eax, 'stat'
jne @f jne @f
; mov eax, dword[ini_buf+3] ; mov eax, dword[ini_buf+3]
; or eax, 0x202020 ; or eax, 0x202020
; cmp eax, 'tic' ; cmp eax, 'tic'
; jne @f ; jne @f
mov [option_dns], op_dns_static mov [option_dns], op_dns_static
@@: @@:
; Read all IP addresses ; Read all IP addresses
mov [str_edit_ip], 0 mov [str_edit_ip], 0
mov [str_edit_subnet], 0 mov [str_edit_subnet], 0
mov [str_edit_gateway], 0 mov [str_edit_gateway], 0
mov [str_edit_dns], 0 mov [str_edit_dns], 0
invoke ini.get_str, net_ini, str_ini_int, str_ini_ip, str_edit_ip, 16, sz_0 invoke ini.get_str, net_ini, str_ini_int, str_ini_ip, str_edit_ip, 16, sz_0
invoke ini.get_str, net_ini, str_ini_int, str_ini_subnet, str_edit_subnet, 16, sz_0 invoke ini.get_str, net_ini, str_ini_int, str_ini_subnet, str_edit_subnet, 16, sz_0
invoke ini.get_str, net_ini, str_ini_int, str_ini_gateway, str_edit_gateway, 16, sz_0 invoke ini.get_str, net_ini, str_ini_int, str_ini_gateway, str_edit_gateway, 16, sz_0
invoke ini.get_str, net_ini, str_ini_int, str_ini_dns, str_edit_dns, 16, sz_0 invoke ini.get_str, net_ini, str_ini_int, str_ini_dns, str_edit_dns, 16, sz_0
invoke edit_set_text, edit_ip, str_edit_ip invoke edit_set_text, edit_ip, str_edit_ip
invoke edit_set_text, edit_subnet, str_edit_subnet invoke edit_set_text, edit_subnet, str_edit_subnet
invoke edit_set_text, edit_gateway, str_edit_gateway invoke edit_set_text, edit_gateway, str_edit_gateway
invoke edit_set_text, edit_dns, str_edit_dns invoke edit_set_text, edit_dns, str_edit_dns
.parse_settings: .parse_settings:
call toggle_editboxes call toggle_editboxes
.draw: .draw:
; get system colors ; get system colors
mcall 48, 3, sc, 40 mcall 48, 3, sc, 40
mcall 12, 1 mcall 12, 1
mov edx, [sc.work] mov edx, [sc.work]
or edx, 0x34000000 or edx, 0x34000000
xor esi, esi xor esi, esi
mov edi, str_title mov edi, str_title
mcall 0, 50 shl 16 + 200, 30 shl 16 + 200 mcall 0, 50 shl 16 + 200, 30 shl 16 + 200
mov ecx, 0x80000000 mov ecx, 0x80000000
or ecx, [sc.work_text] or ecx, [sc.work_text]
; mov ebx, 47 shl 16 + 25 ; mov ebx, 47 shl 16 + 25
; mov edx, str_mode ; mov edx, str_mode
; mcall ; mcall
mov ebx, 59 shl 16 + 50 mov ebx, 59 shl 16 + 50
mov edx, sz_ip mov edx, sz_ip
mcall 4 mcall 4
mov ebx, 5 shl 16 + 70 mov ebx, 5 shl 16 + 70
mov edx, sz_subnet mov edx, sz_subnet
mcall mcall
mov ebx, 29 shl 16 + 90 mov ebx, 29 shl 16 + 90
mov edx, sz_gateway mov edx, sz_gateway
mcall mcall
; mov ebx, 47 shl 16 + 95 ; mov ebx, 47 shl 16 + 95
; mov edx, str_mode ; mov edx, str_mode
; mcall ; mcall
mov ebx, 53 shl 16 + 135 mov ebx, 53 shl 16 + 135
mov edx, sz_dns mov edx, sz_dns
mcall mcall
invoke edit_box_draw, edit_ip invoke edit_box_draw, edit_ip
invoke edit_box_draw, edit_subnet invoke edit_box_draw, edit_subnet
invoke edit_box_draw, edit_gateway invoke edit_box_draw, edit_gateway
invoke edit_box_draw, edit_dns invoke edit_box_draw, edit_dns
invoke option_box_draw, Option_boxs1 invoke option_box_draw, Option_boxs1
invoke option_box_draw, Option_boxs2 invoke option_box_draw, Option_boxs2
mcall 8, 80 shl 16 + 100, 155 shl 16 + 16, 2, [sc.work_button] mcall 8, 80 shl 16 + 100, 155 shl 16 + 16, 2, [sc.work_button]
mov ecx, 0x80000000 mov ecx, 0x80000000
or ecx, [sc.work_button_text] or ecx, [sc.work_button_text]
mov ebx, 112 shl 16 + 160 mov ebx, 112 shl 16 + 160
mov edx, sz_apply mov edx, sz_apply
mcall 4 mcall 4
mcall 12, 2 mcall 12, 2
.loop: .loop:
mcall 10 mcall 10
dec eax dec eax
jz .draw jz .draw
dec eax dec eax
jz .key jz .key
dec eax dec eax
jz .btn jz .btn
invoke edit_box_mouse, edit_ip invoke edit_box_mouse, edit_ip
invoke edit_box_mouse, edit_subnet invoke edit_box_mouse, edit_subnet
invoke edit_box_mouse, edit_gateway invoke edit_box_mouse, edit_gateway
invoke edit_box_mouse, edit_dns invoke edit_box_mouse, edit_dns
push [option_ip] [option_dns] push [option_ip] [option_dns]
invoke option_box_mouse, Option_boxs1 invoke option_box_mouse, Option_boxs1
invoke option_box_mouse, Option_boxs2 invoke option_box_mouse, Option_boxs2
pop ebx eax pop ebx eax
cmp eax, [option_ip] cmp eax, [option_ip]
jne @f jne @f
cmp ebx, [option_dns] cmp ebx, [option_dns]
je .loop je .loop
@@: @@:
call toggle_editboxes call toggle_editboxes
jmp .draw jmp .draw
.btn: .btn:
mcall 17 mcall 17
test ah , ah test ah , ah
jz .loop jz .loop
cmp ah, 2 ; apply cmp ah, 2 ; apply
jne .exit jne .exit
; Apply settings! ; Apply settings!
.apply: .apply:
xor edi, edi xor edi, edi
cmp [option_ip], op_ip_static cmp [option_ip], op_ip_static
jne .skip_ip jne .skip_ip
mov [edit_ip.color], 0xffffff mov [edit_ip.color], 0xffffff
mov esi, str_edit_ip mov esi, str_edit_ip
call validate_ip call validate_ip
test eax, eax test eax, eax
jz @f jz @f
mov [edit_ip.color], 0xff4444 mov [edit_ip.color], 0xff4444
inc edi inc edi
@@: @@:
mov [edit_subnet.color], 0xffffff mov [edit_subnet.color], 0xffffff
mov esi, str_edit_subnet mov esi, str_edit_subnet
call validate_ip call validate_ip
test eax, eax test eax, eax
jz @f jz @f
mov [edit_subnet.color], 0xff4444 mov [edit_subnet.color], 0xff4444
inc edi inc edi
@@: @@:
mov [edit_gateway.color], 0xffffff mov [edit_gateway.color], 0xffffff
mov esi, str_edit_gateway mov esi, str_edit_gateway
call validate_ip call validate_ip
test eax, eax test eax, eax
jz @f jz @f
mov [edit_gateway.color], 0xff4444 mov [edit_gateway.color], 0xff4444
inc edi inc edi
@@: @@:
.skip_ip: .skip_ip:
cmp [option_dns], op_dns_static cmp [option_dns], op_dns_static
jne .skip_dns jne .skip_dns
mov [edit_dns.color], 0xffffff mov [edit_dns.color], 0xffffff
mov esi, str_edit_dns mov esi, str_edit_dns
call validate_ip call validate_ip
test eax, eax test eax, eax
jz @f jz @f
mov [edit_dns.color], 0xff4444 mov [edit_dns.color], 0xff4444
inc edi inc edi
@@: @@:
.skip_dns: .skip_dns:
test edi, edi test edi, edi
jnz .draw jnz .draw
; Settings look valid, save them to the ini file ; Settings look valid, save them to the ini file
; Re-create 'ip..' string, we dont want to save to 'ip?' section. ; Re-create 'ip..' string, we don't want to save to 'ip?' section.
call create_str_ini_int call create_str_ini_int
cmp [option_ip], op_ip_auto cmp [option_ip], op_ip_auto
jne @f jne @f
invoke ini.set_str, net_ini, str_ini_int, str_ini_ip_type, sz_auto, 4 invoke ini.set_str, net_ini, str_ini_int, str_ini_ip_type, sz_auto, 4
jmp .ip_type_ok jmp .ip_type_ok
@@: @@:
cmp [option_ip], op_ip_static cmp [option_ip], op_ip_static
jne @f jne @f
invoke ini.set_str, net_ini, str_ini_int, str_ini_ip_type, sz_static, 6 invoke ini.set_str, net_ini, str_ini_int, str_ini_ip_type, sz_static, 6
jmp .ip_type_ok jmp .ip_type_ok
@@: @@:
; cmp [option_ip], op_ip_disabled ; cmp [option_ip], op_ip_disabled
; jne @f ; jne @f
invoke ini.set_str, net_ini, str_ini_int, str_ini_ip_type, sz_disabled, 8 invoke ini.set_str, net_ini, str_ini_int, str_ini_ip_type, sz_disabled, 8
; @@: ; @@:
.ip_type_ok: .ip_type_ok:
cmp [option_dns], op_dns_auto cmp [option_dns], op_dns_auto
jne .dns_static jne .dns_static
invoke ini.set_str, net_ini, str_ini_int, str_ini_dns_type, sz_auto, 4 invoke ini.set_str, net_ini, str_ini_int, str_ini_dns_type, sz_auto, 4
jmp @f jmp @f
.dns_static: .dns_static:
invoke ini.set_str, net_ini, str_ini_int, str_ini_dns_type, sz_static, 6 invoke ini.set_str, net_ini, str_ini_int, str_ini_dns_type, sz_static, 6
@@: @@:
invoke ini.set_str, net_ini, str_ini_int, str_ini_ip, str_edit_ip, [edit_ip.size] invoke ini.set_str, net_ini, str_ini_int, str_ini_ip, str_edit_ip, [edit_ip.size]
invoke ini.set_str, net_ini, str_ini_int, str_ini_subnet, str_edit_subnet, [edit_subnet.size] invoke ini.set_str, net_ini, str_ini_int, str_ini_subnet, str_edit_subnet, [edit_subnet.size]
invoke ini.set_str, net_ini, str_ini_int, str_ini_gateway, str_edit_gateway, [edit_gateway.size] invoke ini.set_str, net_ini, str_ini_int, str_ini_gateway, str_edit_gateway, [edit_gateway.size]
invoke ini.set_str, net_ini, str_ini_int, str_ini_dns, str_edit_dns, [edit_dns.size] invoke ini.set_str, net_ini, str_ini_int, str_ini_dns, str_edit_dns, [edit_dns.size]
.exit: .exit:
mcall -1 mcall -1
.key: .key:
mcall 2 mcall 2
; Editbox doesnt allow us to filter input decently, so we do it here. ; Editbox doesn't allow us to filter input decently, so we do it here.
cmp ah, 13 cmp ah, 13
je .apply je .apply
cmp ah, 8 cmp ah, 8
je @f je @f
cmp ah, 0xb0 ; left arrow cmp ah, 0xb0 ; left arrow
je @f je @f
cmp ah, 0xb3 ; right arrow cmp ah, 0xb3 ; right arrow
je @f je @f
cmp ah, '.' cmp ah, '.'
je @f je @f
cmp ah, '0' cmp ah, '0'
jb .loop jb .loop
cmp ah, '9' cmp ah, '9'
ja .loop ja .loop
@@: @@:
invoke edit_box_key, edit_ip invoke edit_box_key, edit_ip
invoke edit_box_key, edit_subnet invoke edit_box_key, edit_subnet
invoke edit_box_key, edit_gateway invoke edit_box_key, edit_gateway
invoke edit_box_key, edit_dns invoke edit_box_key, edit_dns
jmp .loop jmp .loop
toggle_editboxes: toggle_editboxes:
and [edit_ip.flags], not ed_disabled and [edit_ip.flags], not ed_disabled
and [edit_subnet.flags], not ed_disabled and [edit_subnet.flags], not ed_disabled
and [edit_gateway.flags], not ed_disabled and [edit_gateway.flags], not ed_disabled
cmp [option_ip], op_ip_static cmp [option_ip], op_ip_static
je @f je @f
or [edit_ip.flags], ed_disabled or [edit_ip.flags], ed_disabled
or [edit_subnet.flags], ed_disabled or [edit_subnet.flags], ed_disabled
or [edit_gateway.flags], ed_disabled or [edit_gateway.flags], ed_disabled
@@: @@:
or [edit_dns.flags], ed_disabled or [edit_dns.flags], ed_disabled
cmp [option_ip], op_ip_disabled cmp [option_ip], op_ip_disabled
je @f je @f
cmp [option_dns], op_dns_static cmp [option_dns], op_dns_static
jne @f jne @f
and [edit_dns.flags], not ed_disabled and [edit_dns.flags], not ed_disabled
@@: @@:
ret ret
; in: esi = ptr to ascii ip ; in: esi = ptr to ascii ip
; out: eax = 0 - ok / -1 - error ; out: eax = 0 - ok / -1 - error
validate_ip: validate_ip:
xor ecx, ecx ; octet count xor ecx, ecx ; octet count
.outer_loop: .outer_loop:
xor ebx, ebx ; current number xor ebx, ebx ; current number
inc ecx inc ecx
.inner_loop: .inner_loop:
lodsb ; load one character from ascii string lodsb ; load one character from ascii string
test al, al test al, al
je .finish je .finish
cmp al, '.' cmp al, '.'
je .outer_loop je .outer_loop
; Convert current digit from ascii to bin, if valid ; Convert current digit from ascii to bin, if valid
sub al, '0' sub al, '0'
jb .invalid jb .invalid
cmp al, 9 cmp al, 9
ja .invalid ja .invalid
; multiply current number by 10 ; multiply current number by 10
add bl, bl add bl, bl
jc .invalid jc .invalid
lea ebx, [ebx + 4 * ebx] lea ebx, [ebx + 4 * ebx]
test ebx, 0xffffff00 test ebx, 0xffffff00
jnz .invalid jnz .invalid
; add current digit to current number ; add current digit to current number
add bl, al add bl, al
jc .invalid jc .invalid
jmp .inner_loop jmp .inner_loop
.finish: .finish:
cmp cl, 4 cmp cl, 4
jne .invalid jne .invalid
xor eax, eax xor eax, eax
ret ret
.invalid: .invalid:
or eax, -1 or eax, -1
ret ret
create_str_ini_int: create_str_ini_int:
movzx eax, [device] movzx eax, [device]
mov ebx, 10 mov ebx, 10
xor edx, edx xor edx, edx
push 0 push 0
@@: @@:
div ebx div ebx
add dl, '0' add dl, '0'
push edx push edx
test eax, eax test eax, eax
jnz @r jnz @r
@@: @@:
mov edi, str_ini_int+2 mov edi, str_ini_int+2
@@: @@:
pop eax pop eax
stosb stosb
test eax, eax test eax, eax
jnz @r jnz @r
ret ret
;------------------------- ;-------------------------
; DATA ; DATA
edit_ip edit_box 100, 80, 45, 0xffffff, 0x6f9480, 0, 0, 0, 15, str_edit_ip, mouse_dd, 0, 0, 1 edit_ip edit_box 100, 80, 45, 0xffffff, 0x6f9480, 0, 0, 0, 15, str_edit_ip, mouse_dd, 0, 0, 1
edit_subnet edit_box 100, 80, 65, 0xffffff, 0x6f9480, 0, 0, 0, 15, str_edit_subnet, mouse_dd, 0, 0, 1 edit_subnet edit_box 100, 80, 65, 0xffffff, 0x6f9480, 0, 0, 0, 15, str_edit_subnet, mouse_dd, 0, 0, 1
edit_gateway edit_box 100, 80, 85, 0xffffff, 0x6f9480, 0, 0, 0, 15, str_edit_gateway, mouse_dd, 0, 0, 1 edit_gateway edit_box 100, 80, 85, 0xffffff, 0x6f9480, 0, 0, 0, 15, str_edit_gateway, mouse_dd, 0, 0, 1
edit_dns edit_box 100, 80, 130, 0xffffff, 0x6f9480, 0, 0, 0, 15, str_edit_dns, mouse_dd, 0, 0, 1 edit_dns edit_box 100, 80, 130, 0xffffff, 0x6f9480, 0, 0, 0, 15, str_edit_dns, mouse_dd, 0, 0, 1
op_ip_disabled option_box option_ip, 15, 5, 6, 12, 0xffffff, 0, 0, sz_disabled, 9 op_ip_disabled option_box option_ip, 15, 5, 6, 12, 0xffffff, 0, 0, sz_disabled, 9
op_ip_auto option_box option_ip, 15, 25, 6, 12, 0xffffff, 0, 0, sz_auto, 5 op_ip_auto option_box option_ip, 15, 25, 6, 12, 0xffffff, 0, 0, sz_auto, 5
op_ip_static option_box option_ip, 80, 25, 6, 12, 0xffffff, 0, 0, sz_static, 7 op_ip_static option_box option_ip, 80, 25, 6, 12, 0xffffff, 0, 0, sz_static, 7
op_dns_auto option_box option_dns, 15, 110, 6, 12, 0xffffff, 0, 0, sz_auto, 5 op_dns_auto option_box option_dns, 15, 110, 6, 12, 0xffffff, 0, 0, sz_auto, 5
op_dns_static option_box option_dns, 80, 110, 6, 12, 0xffffff, 0, 0, sz_static, 7 op_dns_static option_box option_dns, 80, 110, 6, 12, 0xffffff, 0, 0, sz_static, 7
option_ip dd op_ip_auto option_ip dd op_ip_auto
option_dns dd op_dns_auto option_dns dd op_dns_auto
Option_boxs1 dd op_ip_disabled, op_ip_auto, op_ip_static, 0 Option_boxs1 dd op_ip_disabled, op_ip_auto, op_ip_static, 0
Option_boxs2 dd op_dns_auto, op_dns_static, 0 Option_boxs2 dd op_dns_auto, op_dns_static, 0
net_ini db '/sys/settings/network.ini', 0 net_ini db '/sys/settings/network.ini', 0
str_ini_int db 'ip1', 0 str_ini_int db 'ip1', 0
rb 10 rb 10
str_ini_ip db 'ip', 0 str_ini_ip db 'ip', 0
str_ini_subnet db 'subnet', 0 str_ini_subnet db 'subnet', 0
str_ini_gateway db 'gateway', 0 str_ini_gateway db 'gateway', 0
str_ini_dns db 'dns', 0 str_ini_dns db 'dns', 0
str_ini_ip_type db 'ip_type', 0 str_ini_ip_type db 'ip_type', 0
str_ini_dns_type db 'dns_type', 0 str_ini_dns_type db 'dns_type', 0
str_title db 'IP settings', 0 str_title db 'IP settings', 0
sz_0 db 0 sz_0 db 0
sz_ip db 'IP:', 0 sz_ip db 'IP:', 0
sz_subnet db 'Subnet mask:', 0 sz_subnet db 'Subnet mask:', 0
sz_gateway db 'Gateway:', 0 sz_gateway db 'Gateway:', 0
sz_dns db 'DNS:', 0 sz_dns db 'DNS:', 0
sz_auto db 'Auto', 0 sz_auto db 'Auto', 0
sz_static db 'Static', 0 sz_static db 'Static', 0
sz_disabled db 'Disabled', 0 sz_disabled db 'Disabled', 0
sz_apply db 'Apply', 0 sz_apply db 'Apply', 0
str_edit_ip rb 16 str_edit_ip rb 16
str_edit_subnet rb 16 str_edit_subnet rb 16
str_edit_gateway rb 16 str_edit_gateway rb 16
str_edit_dns rb 16 str_edit_dns rb 16
ini_buf rb 16 ini_buf rb 16
mouse_dd dd ? mouse_dd dd ?

View File

@ -1,415 +1,415 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;; ;; ;;
;; Copyright (C) KolibriOS team 2017. All rights reserved. ;; ;; Copyright (C) KolibriOS team 2017-2024. All rights reserved. ;;
;; Distributed under terms of the GNU General Public License ;; ;; Distributed under terms of the GNU General Public License ;;
;; ;; ;; ;;
;; netsurf-installer - Set up Netsurf Browser on KolibriOS ;; ;; netsurf-installer - Set up Netsurf Browser on KolibriOS ;;
;; Author: ashmew2. ;; ;; Author: ashmew2. ;;
;; ;; ;; ;;
;; Inspired from downloader.asm by hidnplayr@kolibrios.org ;; ;; Inspired from downloader.asm by hidnplayr@kolibrios.org ;;
;; GENERAL PUBLIC LICENSE ;; ;; GENERAL PUBLIC LICENSE ;;
;; Version 2, June 1991 ;; ;; Version 2, June 1991 ;;
;; ;; ;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
URLMAXLEN = 65535 URLMAXLEN = 65535
FILENAMEMAXLEN = 1024 FILENAMEMAXLEN = 1024
__DEBUG_LEVEL__ = 2 __DEBUG_LEVEL__ = 2
__DEBUG__ = 1 __DEBUG__ = 1
format binary as "" format binary as ""
use32 use32
org 0x0 org 0x0
db 'MENUET01' ; header db 'MENUET01' ; header
dd 0x01 ; header version dd 0x01 ; header version
dd START ; entry point dd START ; entry point
dd I_END ; image size dd I_END ; image size
dd I_END+0x1000 ; required memory dd I_END+0x1000 ; required memory
dd I_END+0x1000 ; esp dd I_END+0x1000 ; esp
dd 0x0 ; I_Path dd 0x0 ; I_Path
dd 0x0 ; I_Path dd 0x0 ; I_Path
include '../../macros.inc' include '../../macros.inc'
include '../../proc32.inc' include '../../proc32.inc'
include '../../dll.inc' include '../../dll.inc'
include '../../debug-fdo.inc' include '../../debug-fdo.inc'
include '../../develop/libraries/http/http.inc' include '../../develop/libraries/http/http.inc'
include '../../string.inc' include '../../string.inc'
include '../../system/notify3/notify.inc' include '../../system/notify3/notify.inc'
include 'notify.asm' include 'notify.asm'
virtual at 0 virtual at 0
http_msg http_msg http_msg http_msg
end virtual end virtual
;; Parameters ;; Parameters
;; HTTP URL to download ;; HTTP URL to download
;; Target filename ;; Target filename
proc get_file_over_http targeturl, targetfilename proc get_file_over_http targeturl, targetfilename
pusha pusha
xor eax, eax xor eax, eax
mov [write_to_file.current_offset], eax mov [write_to_file.current_offset], eax
mov [write_to_file.bufsize], eax mov [write_to_file.bufsize], eax
mov [write_to_file.bufptr], eax mov [write_to_file.bufptr], eax
DEBUGF 1, "---- HTTP : Getting %s\n", [targeturl] DEBUGF 1, "---- HTTP : Getting %s\n", [targeturl]
invoke HTTP_get, [targeturl], 0, FLAG_KEEPALIVE or FLAG_BLOCK, 0 invoke HTTP_get, [targeturl], 0, FLAG_KEEPALIVE or FLAG_BLOCK, 0
cmp eax, 0 cmp eax, 0
je .http_error je .http_error
mov [httpstruct], eax mov [httpstruct], eax
;; No HTTP errors, create a new file for the download. ;; No HTTP errors, create a new file for the download.
DEBUGF 1, "---- Creating new file : %s\n", [targetfilename] DEBUGF 1, "---- Creating new file : %s\n", [targetfilename]
mcall 70, create_new_file mcall 70, create_new_file
cmp eax, 0 cmp eax, 0
jne .file_error jne .file_error
.http_receive_loop: .http_receive_loop:
DEBUGF 1, "---- Receiving over http.\n" DEBUGF 1, "---- Receiving over http.\n"
invoke HTTP_receive, [httpstruct] invoke HTTP_receive, [httpstruct]
cmp eax, 0 cmp eax, 0
je .http_transfer_done je .http_transfer_done
mov ebp, [httpstruct] mov ebp, [httpstruct]
DEBUGF 1, "---- http flags = 0x%x.\n", [ebp + http_msg.flags] DEBUGF 1, "---- http flags = 0x%x.\n", [ebp + http_msg.flags]
test [ebp + http_msg.flags], 0xffff0000 test [ebp + http_msg.flags], 0xffff0000
jnz .http_error jnz .http_error
mov ebp, [ebp + http_msg.content_received] mov ebp, [ebp + http_msg.content_received]
cmp ebp, [write_to_file.current_offset] cmp ebp, [write_to_file.current_offset]
jle .http_receive_loop jle .http_receive_loop
;; Only proceed if we have more data in HTTP buffer than we have written to file. ;; Only proceed if we have more data in HTTP buffer than we have written to file.
;; Process data we got (write it to the file) ;; Process data we got (write it to the file)
mov ebp, [httpstruct] mov ebp, [httpstruct]
mov ecx, [ebp + http_msg.content_length] mov ecx, [ebp + http_msg.content_length]
mov edx, [ebp + http_msg.content_received] mov edx, [ebp + http_msg.content_received]
DEBUGF 1, "---- Current file write offset : %u (http got : %u / %u)\n", [write_to_file.current_offset], edx, ecx DEBUGF 1, "---- Current file write offset : %u (http got : %u / %u)\n", [write_to_file.current_offset], edx, ecx
sub edx, [write_to_file.current_offset] sub edx, [write_to_file.current_offset]
mov [write_to_file.bufsize], edx mov [write_to_file.bufsize], edx
mov ecx, [ebp + http_msg.content_ptr] mov ecx, [ebp + http_msg.content_ptr]
add ecx, [write_to_file.current_offset] add ecx, [write_to_file.current_offset]
mov [write_to_file.bufptr], ecx mov [write_to_file.bufptr], ecx
DEBUGF 1, "---- ecx + offset = 0x%x\n", ecx DEBUGF 1, "---- ecx + offset = 0x%x\n", ecx
DEBUGF 1, "---- Writing to file %u bytes at 0x%x to %s\n", [write_to_file.bufsize], [write_to_file.bufptr], current_filename DEBUGF 1, "---- Writing to file %u bytes at 0x%x to %s\n", [write_to_file.bufsize], [write_to_file.bufptr], current_filename
mcall 70, write_to_file mcall 70, write_to_file
cmp eax, 0 cmp eax, 0
jne .file_error jne .file_error
DEBUGF 1, "---- Wrote to file %u bytes.\n", ebx DEBUGF 1, "---- Wrote to file %u bytes.\n", ebx
add [write_to_file.current_offset], ebx add [write_to_file.current_offset], ebx
DEBUGF 1, "---- File offset updated to : %u\n", [write_to_file.current_offset] DEBUGF 1, "---- File offset updated to : %u\n", [write_to_file.current_offset]
jmp .http_receive_loop jmp .http_receive_loop
.file_error: .file_error:
DEBUGF 1, "file_erroR with eax = %u!", eax DEBUGF 1, "file_erroR with eax = %u!", eax
call EXIT call EXIT
.http_error: .http_error:
DEBUGF 1, "http_erroR!" DEBUGF 1, "http_erroR!"
call EXIT call EXIT
.http_transfer_done: .http_transfer_done:
;; Write any remaining bytes from the http buffer into the file ;; Write any remaining bytes from the http buffer into the file
DEBUGF 1, "---- http flags = 0x%x.\n", [httpstruct + http_msg.flags] DEBUGF 1, "---- http flags = 0x%x.\n", [httpstruct + http_msg.flags]
DEBUGF 1, "Got %u bytes in total\n", [httpstruct + http_msg.content_length] DEBUGF 1, "Got %u bytes in total\n", [httpstruct + http_msg.content_length]
mov ebp, [httpstruct] mov ebp, [httpstruct]
mov edx, [ebp + http_msg.content_length] mov edx, [ebp + http_msg.content_length]
sub edx, [write_to_file.current_offset] sub edx, [write_to_file.current_offset]
mov [write_to_file.bufsize], edx mov [write_to_file.bufsize], edx
mov ecx, [ebp + http_msg.content_ptr] mov ecx, [ebp + http_msg.content_ptr]
add ecx, [write_to_file.current_offset] add ecx, [write_to_file.current_offset]
mov [write_to_file.bufptr], ecx mov [write_to_file.bufptr], ecx
DEBUGF 1, "---- Final ecx + offset = 0x%x\n", ecx DEBUGF 1, "---- Final ecx + offset = 0x%x\n", ecx
DEBUGF 1, "-- Writing to file %u bytes at 0x%x to %s\n", [write_to_file.bufsize], [write_to_file.bufptr], current_filename DEBUGF 1, "-- Writing to file %u bytes at 0x%x to %s\n", [write_to_file.bufsize], [write_to_file.bufptr], current_filename
mcall 70, write_to_file mcall 70, write_to_file
cmp eax, 0 cmp eax, 0
jne .file_error jne .file_error
DEBUGF 1, "-- Wrote to file %u bytes.\n", ebx DEBUGF 1, "-- Wrote to file %u bytes.\n", ebx
add [write_to_file.current_offset], ebx add [write_to_file.current_offset], ebx
DEBUGF 1, "-- File offset updated to : %u\n", [write_to_file.current_offset] DEBUGF 1, "-- File offset updated to : %u\n", [write_to_file.current_offset]
mov ebp, [httpstruct] mov ebp, [httpstruct]
mov edx, [ebp + http_msg.content_length] mov edx, [ebp + http_msg.content_length]
cmp [write_to_file.current_offset], edx cmp [write_to_file.current_offset], edx
jne .http_transfer_done jne .http_transfer_done
invoke HTTP_free, [httpstruct] invoke HTTP_free, [httpstruct]
popa popa
ret ret
endp endp
proc make_new_folder newfolder proc make_new_folder newfolder
pusha pusha
mov eax, [newfolder] mov eax, [newfolder]
mov [create_new_folder.foldername], eax mov [create_new_folder.foldername], eax
mcall 70, create_new_folder mcall 70, create_new_folder
test eax, eax test eax, eax
jz .success jz .success
DEBUGF 1, "Failed to create folder: %s\n", [newfolder] DEBUGF 1, "Failed to create folder: %s\n", [newfolder]
call EXIT call EXIT
.success: .success:
popa popa
ret ret
endp endp
proc run_if_exists file_path proc run_if_exists file_path
m2m [fileinfo.path], [file_path] m2m [fileinfo.path], [file_path]
mcall 70, fileinfo mcall 70, fileinfo
test eax, eax test eax, eax
jnz @f jnz @f
m2m [fileopen.path], [file_path] m2m [fileopen.path], [file_path]
mcall 70, fileopen mcall 70, fileopen
mcall -1 mcall -1
@@: @@:
ret ret
endp endp
START: START:
stdcall run_if_exists, TMP_netsurf stdcall run_if_exists, TMP_netsurf
stdcall run_if_exists, ISO_netsurf stdcall run_if_exists, ISO_netsurf
mcall 68, 11 ; init heap mcall 68, 11 ; init heap
call NOTIFY_RUN call NOTIFY_RUN
; load libraries ; load libraries
stdcall dll.Load, @IMPORT stdcall dll.Load, @IMPORT
test eax, eax test eax, eax
jnz .all_files_done_error jnz .all_files_done_error
DEBUGF 2, "-------------------------\n" DEBUGF 2, "-------------------------\n"
DEBUGF 2, "NETSURF INSTALLER.\n" DEBUGF 2, "NETSURF INSTALLER.\n"
stdcall make_new_folder, dirname_res stdcall make_new_folder, dirname_res
; stdcall make_new_folder, dirname_res_pointers ; stdcall make_new_folder, dirname_res_pointers
; stdcall make_new_folder, dirname_res_throbber ; stdcall make_new_folder, dirname_res_throbber
; stdcall make_new_folder, dirname_res_icons ; stdcall make_new_folder, dirname_res_icons
.get_next_file: .get_next_file:
mov edi, current_url mov edi, current_url
mov esi, url mov esi, url
@@: @@:
movsb movsb
cmp byte[esi], 0 cmp byte[esi], 0
jne @b jne @b
;; Loaded the base URL into current URL ;; Loaded the base URL into current URL
;; Move onto the subsequent file. ;; Move onto the subsequent file.
mov esi, [filelistoffset] mov esi, [filelistoffset]
cmp byte[esi], 0 cmp byte[esi], 0
je .all_files_done je .all_files_done
@@: @@:
movsb movsb
cmp byte[esi], 0 cmp byte[esi], 0
jne @b jne @b
movsb movsb
;; DEBUGF 1, "-- Current URL with filename is : %s\n", current_url ;; DEBUGF 1, "-- Current URL with filename is : %s\n", current_url
; Create name of file we will download to ; Create name of file we will download to
mov esi, download_file_path mov esi, download_file_path
mov edi, current_filename mov edi, current_filename
@@: @@:
movsb movsb
cmp byte[esi], 0 cmp byte[esi], 0
jne @b jne @b
mov esi, [filelistoffset] mov esi, [filelistoffset]
@@: @@:
movsb movsb
cmp byte[esi], 0 cmp byte[esi], 0
jne @b jne @b
movsb movsb
mov [filelistoffset], esi mov [filelistoffset], esi
;; current_filename is now set to the name of the file ;; current_filename is now set to the name of the file
;; current_url is now set to the name of the file we will get after download ;; current_url is now set to the name of the file we will get after download
DEBUGF 2, "Fetching : %s", current_filename DEBUGF 2, "Fetching : %s", current_filename
pusha pusha
call NOTIFY_CHANGE call NOTIFY_CHANGE
popa popa
stdcall get_file_over_http, current_url, current_filename stdcall get_file_over_http, current_url, current_filename
DEBUGF 2, "...DONE!\n" DEBUGF 2, "...DONE!\n"
jmp .get_next_file jmp .get_next_file
.all_files_done: .all_files_done:
DEBUGF 2, "-------------------------\n" DEBUGF 2, "-------------------------\n"
DEBUGF 2, "NETSURF INSTALLED. Enjoy!\n" DEBUGF 2, "NETSURF INSTALLED. Enjoy!\n"
DEBUGF 2, "-------------------------\n" DEBUGF 2, "-------------------------\n"
call EXIT call EXIT
;; Inform user that all files are done ;; Inform user that all files are done
.all_files_done_error: .all_files_done_error:
DEBUGF 1, "FATAL ERROR: FAILED.\n", eax DEBUGF 1, "FATAL ERROR: FAILED.\n", eax
call EXIT call EXIT
;--------------------------------------------------------------------- ;---------------------------------------------------------------------
; Data area ; Data area
;----------------------------------------------------------------------------- ;-----------------------------------------------------------------------------
align 4 align 4
@IMPORT: @IMPORT:
library lib_http, 'http.obj' library lib_http, 'http.obj'
import lib_http, \ import lib_http, \
HTTP_get, 'get', \ HTTP_get, 'get', \
HTTP_receive, 'receive', \ HTTP_receive, 'receive', \
HTTP_free, 'free' HTTP_free, 'free'
include_debug_strings include_debug_strings
download_file_path db '/tmp0/1/', 0 download_file_path db '/tmp0/1/', 0
dirname_res db '/tmp0/1/res', 0 dirname_res db '/tmp0/1/res', 0
dirname_res_pointers db '/tmp0/1/res/pointers', 0 dirname_res_pointers db '/tmp0/1/res/pointers', 0
dirname_res_throbber db '/tmp0/1/res/throbber', 0 dirname_res_throbber db '/tmp0/1/res/throbber', 0
dirname_res_icons db '/tmp0/1/res/icons', 0 dirname_res_icons db '/tmp0/1/res/icons', 0
url db 'www.kolibri-n.org/files/netsurf/',0 url db 'www.kolibri-n.org/files/netsurf/',0
; I don't know why NOTIFY_CHANGE doesn't work for the first file ; TODO: I don't know why NOTIFY_CHANGE doesn't work for the first file
; so I use this small shit to fix it at NOTIFY_RUN phase ; so I use this small hack to fix it at NOTIFY_RUN phase
filelist_first db '/tmp0/1/netsurf', 0 filelist_first db '/tmp0/1/netsurf', 0
MAX_FILES = 6 MAX_FILES = 6
filelist db 'netsurf', 0 filelist db 'netsurf', 0
;db 'netsurf-kolibrios.map', 0 ;what this??? ;db 'netsurf-kolibrios.map', 0 ; what's this???
db 'res/adblock.css', 0 db 'res/adblock.css', 0
db 'res/quirks.css', 0 db 'res/quirks.css', 0
db 'res/Messages', 0 db 'res/Messages', 0
db 'res/default.css', 0 db 'res/default.css', 0
db 'res/sans.ttf', 0 db 'res/sans.ttf', 0
db 'res/internal.css', 0 db 'res/internal.css', 0
; db 'res/welcome.html', 0 ; db 'res/welcome.html', 0
; db 'res/licence.html', 0 ; db 'res/licence.html', 0
; db 'res/maps.html', 0 ; db 'res/maps.html', 0
; db 'res/credits.html', 0 ; db 'res/credits.html', 0
; db 'res/favicon.png', 0 ; db 'res/favicon.png', 0
; db 'res/netsurf.png', 0 ; db 'res/netsurf.png', 0
; db 'res/throbber/throbber8.png', 0 ; db 'res/throbber/throbber8.png', 0
; db 'res/throbber/throbber3.png', 0 ; db 'res/throbber/throbber3.png', 0
; db 'res/throbber/throbber4.png', 0 ; db 'res/throbber/throbber4.png', 0
; db 'res/throbber/throbber0.png', 0 ; db 'res/throbber/throbber0.png', 0
; db 'res/throbber/throbber6.png', 0 ; db 'res/throbber/throbber6.png', 0
; db 'res/throbber/throbber2.png', 0 ; db 'res/throbber/throbber2.png', 0
; db 'res/throbber/throbber1.png', 0 ; db 'res/throbber/throbber1.png', 0
; db 'res/throbber/throbber7.png', 0 ; db 'res/throbber/throbber7.png', 0
; db 'res/throbber/throbber5.png', 0 ; db 'res/throbber/throbber5.png', 0
; db 'res/pointers/point.png', 0 ; db 'res/pointers/point.png', 0
; db 'res/pointers/no_drop.png', 0 ; db 'res/pointers/no_drop.png', 0
; db 'res/pointers/wait.png', 0 ; db 'res/pointers/wait.png', 0
; db 'res/pointers/up-down.png', 0 ; db 'res/pointers/up-down.png', 0
; db 'res/pointers/help.png', 0 ; db 'res/pointers/help.png', 0
; db 'res/pointers/ru-ld.png', 0 ; db 'res/pointers/ru-ld.png', 0
; db 'res/pointers/menu.png', 0 ; db 'res/pointers/menu.png', 0
; db 'res/pointers/not_allowed.png', 0 ; db 'res/pointers/not_allowed.png', 0
; db 'res/pointers/cross.png', 0 ; db 'res/pointers/cross.png', 0
; db 'res/pointers/default.png', 0 ; db 'res/pointers/default.png', 0
; db 'res/pointers/caret.png', 0 ; db 'res/pointers/caret.png', 0
; db 'res/pointers/left-right.png', 0 ; db 'res/pointers/left-right.png', 0
; db 'res/pointers/lu-rd.png', 0 ; db 'res/pointers/lu-rd.png', 0
; db 'res/pointers/progress.png', 0 ; db 'res/pointers/progress.png', 0
; db 'res/pointers/move.png', 0 ; db 'res/pointers/move.png', 0
; db 'res/icons/back.png', 0 ; db 'res/icons/back.png', 0
; db 'res/icons/back_g.png', 0 ; db 'res/icons/back_g.png', 0
; db 'res/icons/scrollr.png', 0 ; db 'res/icons/scrollr.png', 0
; db 'res/icons/osk.png', 0 ; db 'res/icons/osk.png', 0
; db 'res/icons/forward_g.png', 0 ; db 'res/icons/forward_g.png', 0
; db 'res/icons/scrolll.png', 0 ; db 'res/icons/scrolll.png', 0
; db 'res/icons/history.png', 0 ; db 'res/icons/history.png', 0
; db 'res/icons/forward.png', 0 ; db 'res/icons/forward.png', 0
; db 'res/icons/home_g.png', 0 ; db 'res/icons/home_g.png', 0
; db 'res/icons/history_g.png', 0 ; db 'res/icons/history_g.png', 0
; db 'res/icons/reload_g.png', 0 ; db 'res/icons/reload_g.png', 0
; db 'res/icons/scrollu.png', 0 ; db 'res/icons/scrollu.png', 0
; db 'res/icons/stop.png', 0 ; db 'res/icons/stop.png', 0
; db 'res/icons/scrolld.png', 0 ; db 'res/icons/scrolld.png', 0
; db 'res/icons/stop_g.png', 0 ; db 'res/icons/stop_g.png', 0
; db 'res/icons/home.png', 0 ; db 'res/icons/home.png', 0
; db 'res/icons/reload.png', 0 ; db 'res/icons/reload.png', 0
db 0 db 0
filelistoffset dd filelist filelistoffset dd filelist
httpstruct dd 0 httpstruct dd 0
create_new_file dd 2, 0, 0, 0, 0 create_new_file dd 2, 0, 0, 0, 0
db 0 db 0
dd current_filename dd current_filename
create_new_folder dd 9, 0, 0, 0, 0 create_new_folder dd 9, 0, 0, 0, 0
db 0 db 0
.foldername dd 0 .foldername dd 0
write_to_file dd 3 write_to_file dd 3
.current_offset dd 0, 0 .current_offset dd 0, 0
.bufsize dd 0 .bufsize dd 0
.bufptr dd 0 .bufptr dd 0
db 0 db 0
dd current_filename dd current_filename
socketdata rb 4096 socketdata rb 4096
current_url rb URLMAXLEN current_url rb URLMAXLEN
current_filename rb FILENAMEMAXLEN current_filename rb FILENAMEMAXLEN
ISO_netsurf db "/kolibrios/netsurf/netsurf", 0 ISO_netsurf db "/kolibrios/netsurf/netsurf", 0
TMP_netsurf db "/tmp0/1/netsurf", 0 TMP_netsurf db "/tmp0/1/netsurf", 0
bdvk_buf rb 560 bdvk_buf rb 560
fileinfo dd 5 fileinfo dd 5
dd 0,0,0 dd 0,0,0
dd bdvk_buf dd bdvk_buf
db 0 db 0
.path dd ? ; path .path dd ? ; path
;===================================================================== ;=====================================================================
; NOTIFY DATA ; NOTIFY DATA
timer dd 0 timer dd 0
params rb 256 params rb 256
ctrl: ctrl:
.name rb 32 .name rb 32
.addr rd 1 .addr rd 1
rb 2048 rb 2048
sz_text: sz_text:
db "Downloading Netsurf ",10, 0 db "Downloading Netsurf ",10, 0
sz_quote: sz_quote:
db "'", 0 db "'", 0
sz_flags: sz_flags:
db "Ddcpt", 0 db "Ddcpt", 0
sz_final_text: sz_final_text:
db "Netsurf download complete.",10,"Enjoy!",0 db "Netsurf download complete.",10,"Enjoy!",0
fi_launch: fi_launch:
dd 7, 0, params, 0, 0 dd 7, 0, params, 0, 0
db "/sys/@notify", 0 db "/sys/@notify", 0
fileopen dd 7 fileopen dd 7
dd 0,0,0,0 dd 0,0,0,0
db 0 db 0
.path dd ? ; path .path dd ? ; path
;===================================================================== ;=====================================================================
I_END: I_END: