Subversion Repositories Kolibri OS

Rev

Rev 4920 | Rev 5011 | 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, [socketnum], buf_cmd, 5, 0
  15.  
  16. ; Close the control connection
  17.         mcall   close, [socketnum]
  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, [socketnum], 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, [socketnum], 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, [socketnum], 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, [socketnum], 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, [socketnum], 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     [size_fname], 0
  126.         mov     dword[buf_cmd], "NLST"
  127.         mov     word[buf_cmd+4], 0x0a0d
  128.         mcall   send, [socketnum], buf_cmd, 6, 0
  129.  
  130.         jmp     wait_for_servercommand 
  131.        
  132. cmd_stor:
  133.  
  134.         call    open_dataconnection
  135.  
  136.         mov     [operation], OPERATION_STOR
  137.  
  138.         mov     [filestruct.subfn], 0   ; read file
  139.         mov     [filestruct.offset], 0
  140.         mov     [filestruct.offset+4], 0
  141.         mov     [filestruct.size], BUFFERSIZE
  142.         mov     [filestruct.ptr], buf_buffer2
  143.  
  144.         mov     esi, buf_cmd+5
  145.         mov     ecx, 256-5
  146.         call    set_filename
  147.  
  148.         mov     dword[buf_cmd], "STOR"
  149.         mov     byte[buf_cmd+4], " "
  150.  
  151.         mov     ecx, 256
  152.         xor     al, al
  153.         mov     edi, buf_cmd
  154.         repne scasb
  155.         lea     esi, [edi - buf_cmd]
  156.         mov     word [edi - 2], 0x0a0d
  157.         mcall   send, [socketnum], buf_cmd, , 0
  158.  
  159.         jmp     wait_for_servercommand
  160.  
  161.  
  162. cmd_lcwd:
  163.  
  164.         mov     esi, buf_cmd+5
  165.         mov     ecx, 256-5
  166.   .loop:
  167.         lodsb
  168.         cmp     al, 10
  169.         je      .done
  170.         test    al, al
  171.         je      .done
  172.         loop    .loop
  173.   .done:
  174.         mov     byte[esi-1], 0
  175.         mcall   30, 1, buf_cmd+5              ; set working directory
  176.         mcall   30, 2, buf_cmd, 256           ; and read it again
  177.  
  178.         invoke  con_write_asciiz, str_lcwd
  179.         invoke  con_write_asciiz, buf_cmd
  180.         invoke  con_write_asciiz, str_newline
  181.  
  182.         jmp     wait_for_usercommand
  183.  
  184.  
  185. cmd_cdup:
  186.  
  187.         mov     dword[buf_cmd], "CDUP"
  188.         mov     word[buf_cmd+4], 0x0d0a
  189.         mcall   send, [socketnum], buf_cmd, 6, 0
  190.  
  191.         jmp     wait_for_servercommand
  192.  
  193.  
  194. cmd_rmd:
  195.  
  196.         mov     dword[buf_cmd], "RMD "
  197.  
  198.         mov     ecx, 256
  199.         xor     al, al
  200.         mov     edi, buf_cmd
  201.         repne scasb
  202.         lea     esi, [edi - buf_cmd]
  203.         mov     word [edi - 2], 0x0a0d
  204.  
  205.         mcall   send, [socketnum], buf_cmd, , 0
  206.  
  207.         jmp     wait_for_servercommand
  208.  
  209.  
  210. cmd_mkd:
  211.  
  212.         mov     dword[buf_cmd], "MKD "
  213.  
  214.         mov     ecx, 256
  215.         xor     al, al
  216.         mov     edi, buf_cmd
  217.         repne scasb
  218.         lea     esi, [edi - buf_cmd]
  219.         mov     word [edi - 2], 0x0a0d
  220.  
  221.         mcall   send, [socketnum], buf_cmd, , 0
  222.  
  223.         jmp     wait_for_servercommand
  224.  
  225.  
  226. ; esi   = source ptr
  227. ; ecx   = max length of source buffer
  228. set_filename:
  229.  
  230.         mov     edi, filestruct.name
  231.   .loop:
  232.         lodsb
  233.         test    al, al
  234.         jz      .done
  235.         cmp     al, 10
  236.         je      .done
  237.         stosb
  238.         loop    .loop
  239.   .done:
  240.         xor     al, al          ; append a 0 byte
  241.         stosb
  242.  
  243.         ret