Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 4917 → Rev 4918

/programs/network/ftpc/ftpc.asm
14,6 → 14,8
 
format binary as ""
 
TIMEOUT = 3 ; seconds
 
BUFFERSIZE = 4096
 
STATUS_CONNECTING = 0
47,8 → 49,8
include 'servercommands.inc'
 
start:
; disable all events
mcall 40, 0
; disable all events except network event
mcall 40, EV_STACK
; load libraries
stdcall dll.Load, @IMPORT
test eax, eax
114,6 → 116,8
; connect to the server
invoke con_write_asciiz, str_connect
mcall connect, [socketnum], sockaddr1, 18
cmp eax, -1
je error_connect
mov [status], STATUS_CONNECTING
; Tell the user we're waiting for the server now.
invoke con_write_asciiz, str_waiting
133,12 → 137,22
 
; receive socket data
.receive:
mcall recv, [socketnum], buffer_ptr, BUFFERSIZE, 0
inc eax
jz error_socket
dec eax
jz wait_for_servercommand
mcall 26, 9
add eax, TIMEOUT*100
mov [timeout], eax
.receive_loop:
mcall 23, 50 ; Wait for event with timeout
mcall 26, 9
cmp eax, [timeout]
jge error_timeout
mcall recv, [socketnum], buffer_ptr, BUFFERSIZE, MSG_DONTWAIT
test eax, eax
jnz .got_data
cmp ebx, EWOULDBLOCK
jne error_socket
jmp .receive_loop
 
.got_data:
mov [offset], 0
 
; extract commands, copy them to "s" buffer
299,7 → 313,15
invoke con_set_flags ; reset color
ret
 
error_connect:
invoke con_set_flags, 0x0c ; print errors in red
invoke con_write_asciiz, str_err_connect
jmp wait_for_keypress
 
error_timeout:
invoke con_set_flags, 0x0c ; print errors in red
invoke con_write_asciiz, str_err_timeout
jmp wait_for_keypress
 
error_socket:
invoke con_set_flags, 0x0c ; print errors in red
328,7 → 350,7
 
; data
str_title db 'FTP client',0
str_welcome db 'FTP client for KolibriOS v0.11',10
str_welcome db 'FTP client for KolibriOS v0.12',10
db 10
db 'Please enter ftp server address.',10,0
 
337,6 → 359,8
str_newline db 10,0
str_err_resolve db 10,'Name resolution failed.',10,0
str_err_socket db 10,'Socket error.',10,0
str_err_timeout db 10,'Timeout - no response from server.',10,0
str_err_connect db 10,'Cannot connect to the server.',10,0
str8 db ' (',0
str9 db ')',10,0
str_push db 'Push any key to continue.',0
422,6 → 446,8
size dd ?
operation dd ?
 
timeout dd ?
 
filestruct:
.subfn dd ?
.offset dd ?