Rev 8442 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8442 | Rev 9164 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
2 | ;; ;; |
2 | ;; ;; |
3 | ;; Copyright (C) KolibriOS team 2013-2018. All rights reserved. ;; |
3 | ;; Copyright (C) KolibriOS team 2013-2021. All rights reserved. ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; ;; |
5 | ;; ;; |
6 | ;; ftpc.asm - FTP client for KolibriOS ;; |
6 | ;; ftpc.asm - FTP client for KolibriOS ;; |
7 | ;; ;; |
7 | ;; ;; |
8 | ;; Written by hidnplayr@kolibrios.org ;; |
8 | ;; Written by hidnplayr@kolibrios.org ;; |
Line 351... | Line 351... | ||
351 | mov edi, buf_cmd |
351 | mov edi, buf_cmd |
352 | mov ecx, [size] |
352 | mov ecx, [size] |
353 | add ecx, esi |
353 | add ecx, esi |
354 | jmp .byteloop |
354 | jmp .byteloop |
Line 355... | Line 355... | ||
355 | 355 | ||
356 | ; receive socket data |
356 | ; receive socket data with timeout |
357 | .receive: |
357 | .receive: |
358 | mcall 26, 9 |
358 | mcall 26, 9 |
359 | add eax, TIMEOUT*100 |
359 | add eax, TIMEOUT*100 |
360 | mov [timeout], eax |
360 | mov [timeout], eax |
361 | .receive_loop: |
361 | .again: |
362 | mcall 23, 50 ; Wait for event with timeout |
- | |
363 | mcall 26, 9 |
- | |
364 | cmp eax, [timeout] |
- | |
365 | jl @f |
- | |
366 | mov eax, str_err_timeout |
362 | mcall recv, [controlsocket], buf_buffer1, BUFFERSIZE, MSG_DONTWAIT |
367 | jmp error |
- | |
368 | @@: mcall recv, [controlsocket], buf_buffer1, BUFFERSIZE, MSG_DONTWAIT |
363 | cmp eax, 0 |
369 | test eax, eax |
364 | jg .got_data |
370 | jnz .got_data |
365 | je .closed |
- | 366 | cmp ebx, EWOULDBLOCK |
|
- | 367 | jne .sock_err |
|
- | 368 | mcall 26, 9 |
|
- | 369 | mov ebx, [timeout] |
|
- | 370 | sub ebx, eax |
|
- | 371 | jle .timeout |
|
371 | cmp ebx, EWOULDBLOCK |
372 | mcall 23 ; Wait for event with timeout |
- | 373 | jmp .again |
|
- | 374 | ||
372 | je @f |
375 | .sock_err: |
373 | mov eax, str_err_recv |
376 | mov eax, str_err_recv |
- | 377 | jmp error |
|
- | 378 | ||
- | 379 | .closed: |
|
374 | jmp error |
380 | mov eax, str_err_closed |
- | 381 | jmp error |
|
- | 382 | ||
- | 383 | .timeout: |
|
- | 384 | mov eax, str_err_timeout |
|
Line 375... | Line 385... | ||
375 | @@: jmp .receive_loop |
385 | jmp error |
376 | 386 | ||
Line 377... | Line 387... | ||
377 | .got_data: |
387 | .got_data: |
Line 748... | Line 758... | ||
748 | 758 | ||
749 | 759 | ||
750 | 760 | ||
751 | ; data |
761 | ; data |
752 | str_title db 'FTP client for KolibriOS',0 |
762 | str_title db 'FTP client for KolibriOS',0 |
Line 753... | Line 763... | ||
753 | str_welcome db 'FTP client for KolibriOS v0.15b',10 |
763 | str_welcome db 'FTP client for KolibriOS v0.16',10 |
754 | db 10,0 |
764 | db 10,0 |
755 | str_srv_addr db 'Please enter ftp server address.',10,0 |
765 | str_srv_addr db 'Please enter ftp server address.',10,0 |
756 | 766 | ||
- | 767 | str_prompt db '> ',0 |
|
757 | str_prompt db '> ',0 |
768 | str_resolve db 'Resolving ',0 |
758 | str_resolve db 'Resolving ',0 |
769 | str_newline db 10,0 |
759 | str_newline db 10,0 |
770 | str_err_resolve db 10,'Name resolution failed.',10,0 |
760 | str_err_resolve db 10,'Name resolution failed.',10,0 |
771 | str_err_closed db 10,'The connection was closed by the remote end',10,0 |
761 | str_err_socket db 10,'[75,0 socket]: Error creating a socket',10,0 |
772 | str_err_socket db 10,'[75,0 socket]: Error creating a socket',10,0 |