Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5249 → Rev 5248

/programs/network/icmp/ping.asm
58,7 → 58,7
call [con_init]
; main loop
cmp byte[s], 0
jne parse_param
jne resolve
 
push str_welcome
call [con_write_asciiz]
90,44 → 90,7
mov [stats.rx], 0
mov [stats.time], 0
 
parse_param:
mov [count], 4 ; default number of pings to send
 
; Check if any additional parameters were given
mov esi, s
mov ecx, 1024
.addrloop:
lodsb
test al, al
jz .resolve
cmp al, ' '
jne .addrloop
mov byte[esi-1], 0
jmp .param
 
.param_loop:
lodsb
test al, al
jz .resolve
cmp al, ' '
jne .invalid
.param:
lodsb
cmp al, '-'
jne .invalid
lodsb
cmp al, 't'
jne @f
mov [count], -1 ; infinite
jmp .param_loop
@@:
; implement more parameters here
.invalid:
push str13
call [con_write_asciiz]
jmp main
 
.resolve:
resolve:
; resolve name
push esp ; reserve stack place
push esp ; fourth parameter
168,6 → 131,8
mcall 40, 1 shl 7 ; + 7
; call [con_cls]
 
mov [count], 4
 
push str3
call [con_write_asciiz]
 
179,10 → 144,6
call [con_printf]
 
mainloop:
call [con_get_flags]
test eax, 0x200 ; con window closed?
jnz exit_now
 
inc [stats.tx]
mcall 26, 9
mov [time_reference], eax
256,11 → 217,9
.continue:
inc [icmp_packet.seq]
 
cmp [count], -1
je .forever
dec [count]
jz done
.forever:
 
mcall 5, 100 ; wait a second
 
jmp mainloop
299,7 → 258,7
exit:
push 1
call [con_exit]
exit_now:
 
mcall -1
 
 
314,7 → 273,6
str4 db 10,0
str5 db 'Name resolution failed.',10,0
str6 db 'Could not open socket',10,0
str13 db 'Invalid parameter(s)',10,0
 
str11 db 'Answer: ',0
str7 db 'bytes=%u seq=%u time=%u ms',10,0
359,8 → 317,7
con_gets, 'con_gets',\
con_cls, 'con_cls',\
con_getch2, 'con_getch2',\
con_set_cursor_pos, 'con_set_cursor_pos',\
con_get_flags, 'con_get_flags'
con_set_cursor_pos, 'con_set_cursor_pos'
 
socketnum dd ?