Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5248 → Rev 5249

/programs/network/icmp/ping.asm
58,7 → 58,7
call [con_init]
; main loop
cmp byte[s], 0
jne resolve
jne parse_param
 
push str_welcome
call [con_write_asciiz]
90,7 → 90,44
mov [stats.rx], 0
mov [stats.time], 0
 
resolve:
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 name
push esp ; reserve stack place
push esp ; fourth parameter
131,8 → 168,6
mcall 40, 1 shl 7 ; + 7
; call [con_cls]
 
mov [count], 4
 
push str3
call [con_write_asciiz]
 
144,6 → 179,10
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
217,9 → 256,11
.continue:
inc [icmp_packet.seq]
 
cmp [count], -1
je .forever
dec [count]
jz done
 
.forever:
mcall 5, 100 ; wait a second
 
jmp mainloop
258,7 → 299,7
exit:
push 1
call [con_exit]
 
exit_now:
mcall -1
 
 
273,6 → 314,7
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
317,7 → 359,8
con_gets, 'con_gets',\
con_cls, 'con_cls',\
con_getch2, 'con_getch2',\
con_set_cursor_pos, 'con_set_cursor_pos'
con_set_cursor_pos, 'con_set_cursor_pos',\
con_get_flags, 'con_get_flags'
 
socketnum dd ?