Subversion Repositories Kolibri OS

Rev

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