Subversion Repositories Kolibri OS

Rev

Rev 4922 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. cmd_help:
  2.  
  3.         push    str_help
  4.         call    [con_write_asciiz]
  5.  
  6.         jmp     wait_for_usercommand
  7.  
  8.  
  9. cmd_bye:
  10.  
  11. ; Send BYE message to the server
  12.         mov     dword[buf_cmd], "BYE" + 13 shl 24
  13.         mov     byte[buf_cmd+4], 10
  14.         mcall   send, [controlsocket], buf_cmd, 5, 0
  15.  
  16. ; Close the control connection
  17.         mcall   close, [controlsocket]
  18.         jmp     main
  19.  
  20.  
  21. cmd_pwd:
  22.  
  23.         mov     dword[buf_cmd], "PWD" + 13 shl 24
  24.         mov     byte[buf_cmd+4], 10
  25.         mcall   send, [controlsocket], buf_cmd, 5, 0
  26.  
  27.         jmp     wait_for_servercommand
  28.  
  29.  
  30. cmd_cwd:
  31.  
  32.         mov     dword[buf_cmd], "CWD "
  33.  
  34.         mov     ecx, 256
  35.         xor     al, al
  36.         mov     edi, buf_cmd
  37.         repne scasb
  38.         lea     esi, [edi - buf_cmd]
  39.         mov     word [edi - 2], 0x0a0d
  40.  
  41.         mcall   send, [controlsocket], buf_cmd, , 0
  42.  
  43.         jmp     wait_for_servercommand
  44.  
  45.  
  46. cmd_dele:
  47.  
  48.         mov     dword[buf_cmd], "DELE"
  49.         mov     byte[buf_cmd], " "
  50.  
  51.         mov     ecx, 256
  52.         xor     al, al
  53.         mov     edi, buf_cmd
  54.         repne scasb
  55.         lea     esi, [edi - buf_cmd]
  56.         mov     word [edi - 2], 0x0a0d
  57.  
  58.         mcall   send, [controlsocket], buf_cmd, , 0
  59.  
  60.         jmp     wait_for_servercommand
  61.  
  62.  
  63. cmd_list:
  64.         call    open_dataconnection
  65.  
  66.         mov     [operation], OPERATION_LIST
  67.  
  68.         mov     dword[buf_cmd], "LIST"
  69.         mov     word[buf_cmd+4], 0x0a0d
  70.         mcall   send, [controlsocket], buf_cmd, 6, 0
  71.  
  72.         jmp     wait_for_servercommand
  73.  
  74.  
  75. cmd_retr:
  76.         call    open_dataconnection
  77.        
  78. ; Create/open the file
  79.  
  80. ; Create/open the file
  81.  
  82.         mov     esi, buf_cmd+5
  83.         mov     ecx, 256-5
  84.         call    set_filename
  85.  
  86.         mov     [filestruct.subfn], 2   ; create/rewrite file
  87.         mov     [filestruct.offset], 0
  88.         mov     [filestruct.offset+4], 0
  89.         mov     [filestruct.size], 0
  90.         mov     [filestruct.ptr], 0
  91.  
  92.         mcall   70, filestruct
  93.         cmp     eax, -1
  94. ;        je      fileerror
  95.  
  96. ; Prepare to write to the file
  97.  
  98.         mov     [filestruct.subfn], 3   ; write to file
  99.         mov     [operation], OPERATION_RETR
  100.  
  101. ; Request the file from server
  102.    
  103.         mov     dword[buf_cmd], "RETR"
  104.         mov     byte[buf_cmd+4], " "
  105.  
  106.         mov     ecx, 256
  107.         xor     al, al
  108.         mov     edi, buf_cmd
  109.         repne scasb
  110.         lea     esi, [edi - buf_cmd]
  111.         mov     dword[edi - 2], 0x0a0d
  112.         mcall   send, [controlsocket], buf_cmd, , 0
  113.  
  114.         invoke  con_write_asciiz, buf_cmd     ; print command
  115.         jmp     wait_for_servercommand
  116.  
  117. cmd_rdir:        
  118.  
  119.         mov     [operation], OPERATION_RDIR
  120.  
  121. ; Request filename list from the server
  122.  
  123.         call    open_dataconnection
  124.  
  125.         mov     [ptr_fname], 0
  126.         mov     [size_fname], 0
  127.         mov     dword[buf_cmd], "NLST"
  128.         mov     word[buf_cmd+4], 0x0a0d
  129.         mcall   send, [controlsocket], buf_cmd, 6, 0
  130.  
  131.         jmp     wait_for_servercommand  
  132.        
  133. cmd_stor:
  134.  
  135.         call    open_dataconnection
  136.  
  137.         mov     [operation], OPERATION_STOR
  138.  
  139.         mov     [filestruct.subfn], 0   ; read file
  140.         mov     [filestruct.offset], 0
  141.         mov     [filestruct.offset+4], 0
  142.         mov     [filestruct.size], BUFFERSIZE
  143.         mov     [filestruct.ptr], buf_buffer2
  144.  
  145.         mov     esi, buf_cmd+5
  146.         mov     ecx, 256-5
  147.         call    set_filename
  148.  
  149.         mov     dword[buf_cmd], "STOR"
  150.         mov     byte[buf_cmd+4], " "
  151.  
  152.         mov     ecx, 256
  153.         xor     al, al
  154.         mov     edi, buf_cmd
  155.         repne scasb
  156.         lea     esi, [edi - buf_cmd]
  157.         mov     word [edi - 2], 0x0a0d
  158.         mcall   send, [controlsocket], buf_cmd, , 0
  159.  
  160.         jmp     wait_for_servercommand
  161.  
  162.  
  163. cmd_lcwd:
  164.  
  165.         mov     esi, buf_cmd+5
  166.         cmp     byte[esi], 10
  167.         je      .print
  168.         mov     ecx, 256-5
  169.   .loop:
  170.         lodsb
  171.         cmp     al, 10
  172.         je      .done
  173.         test    al, al
  174.         je      .done
  175.         loop    .loop
  176.   .done:
  177.         mov     byte[esi-1], 0
  178.         mcall   30, 1, buf_cmd+5              ; set working directory
  179.   .print:
  180.         mcall   30, 2, buf_cmd, 256           ; and read it again
  181.  
  182.         invoke  con_write_asciiz, str_lcwd
  183.         invoke  con_write_asciiz, buf_cmd
  184.         invoke  con_write_asciiz, str_newline
  185.  
  186.         jmp     wait_for_usercommand
  187.  
  188.  
  189. cmd_cdup:
  190.  
  191.         mov     dword[buf_cmd], "CDUP"
  192.         mov     word[buf_cmd+4], 0x0d0a
  193.         mcall   send, [controlsocket], buf_cmd, 6, 0
  194.  
  195.         jmp     wait_for_servercommand
  196.  
  197.  
  198. cmd_rmd:
  199.  
  200.         mov     dword[buf_cmd], "RMD "
  201.  
  202.         mov     ecx, 256
  203.         xor     al, al
  204.         mov     edi, buf_cmd
  205.         repne scasb
  206.         lea     esi, [edi - buf_cmd]
  207.         mov     word [edi - 2], 0x0a0d
  208.  
  209.         mcall   send, [controlsocket], buf_cmd, , 0
  210.  
  211.         jmp     wait_for_servercommand
  212.  
  213.  
  214. cmd_mkd:
  215.  
  216.         mov     dword[buf_cmd], "MKD "
  217.  
  218.         mov     ecx, 256
  219.         xor     al, al
  220.         mov     edi, buf_cmd
  221.         repne scasb
  222.         lea     esi, [edi - buf_cmd]
  223.         mov     word [edi - 2], 0x0a0d
  224.  
  225.         mcall   send, [controlsocket], buf_cmd, , 0
  226.  
  227.         jmp     wait_for_servercommand
  228.  
  229.  
  230. ; esi   = source ptr
  231. ; ecx   = max length of source buffer
  232. set_filename:
  233.  
  234.         mov     edi, filestruct.name
  235.   .loop:
  236.         lodsb
  237.         test    al, al
  238.         jz      .done
  239.         cmp     al, 10
  240.         je      .done
  241.         stosb
  242.         loop    .loop
  243.   .done:
  244.         xor     al, al          ; append a 0 byte
  245.         stosb
  246.  
  247.         ret