Subversion Repositories Kolibri OS

Rev

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