Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1.  
  2.  
  3.  
  4. align 4
  5. parse_cmd:                              ; esi must point to command
  6.  
  7.         mov     eax, [esi]
  8.         and     eax, not 0x20202020     ; convert to upper case
  9.                                         ; (also convert spaces to null)
  10.         mov     edi, commands           ; list of commands to scan
  11.   .scanloop:
  12.         cmp     eax, [edi]
  13.         jb      .error
  14.         jl      .try_next
  15.  
  16.         jmp     dword [edi+4]
  17.  
  18.   .try_next:
  19.         add     edi, 8
  20.         cmp     byte [edi], 0
  21.         jne     .scanloop
  22.  
  23.   .error:
  24.         ret
  25.  
  26.  
  27. align 4
  28. commands:                               ; all commands must be in uppercase, and in alphabetical order.
  29.  
  30.         db 'ABOR'
  31.         dd cmdABOR
  32.  
  33.         db 'CWD', 0
  34.         dd cmdCWD
  35.  
  36.         db 'DELE'
  37.         dd cmdDELE
  38.  
  39.         db 'LIST'
  40.         dd cmdLIST
  41.  
  42.         db 'NLST'
  43.         dd cmdNLST
  44.  
  45.         db 'NOOP'
  46.         dd cmdNOOP
  47.  
  48.         db 'PWD', 0
  49.         dd cmdPWD
  50.  
  51.         db 'PORT'
  52.         dd cmdPORT
  53.  
  54.         db 'QUIT'
  55.         dd cmdQUIT
  56.  
  57.         db 'RETR'
  58.         dd cmdRETR
  59.  
  60.         db 'STOR'
  61.         dd cmdSTOR
  62.  
  63.         db 'SYST'
  64.         dd cmdSYST
  65.  
  66.         db 'TYPE'
  67.         dd cmdTYPE
  68.  
  69.         db 'USER'
  70.         dd cmdUSER
  71.  
  72.         db 'XPWD'
  73.         dd cmdPWD
  74.  
  75.         db 0                    ; end marker
  76.  
  77.  
  78. align 4
  79. cmdABOR:
  80.  
  81.         ret
  82.  
  83. align 4
  84. cmdCWD:
  85.  
  86.         ret
  87.  
  88. align 4
  89. cmdDELE:
  90.  
  91.         ret
  92.  
  93. align 4
  94. cmdLIST:
  95.  
  96.         ret
  97.  
  98. align 4
  99. cmdNLST:
  100.  
  101.         ret
  102.  
  103. align 4
  104. cmdNOOP:
  105.  
  106.         ret
  107.  
  108. align 4
  109. cmdPWD:
  110.  
  111.         ret
  112.  
  113. align 4
  114. cmdPORT:
  115.  
  116.         ret
  117.  
  118. align 4
  119. cmdQUIT:
  120.  
  121.         ret
  122.  
  123. align 4
  124. cmdRETR:
  125.  
  126.         ret
  127.  
  128. align 4
  129. cmdSTOR:
  130.  
  131.         ret
  132.  
  133. align 4
  134. cmdSYST:
  135.  
  136.         ret
  137.  
  138. align 4
  139. cmdTYPE:
  140.  
  141.         ret
  142.  
  143. align 4
  144. cmdUSER:
  145.  
  146.         ret
  147.  
  148.  
  149.  
  150. str150  db '150 Here it comes...', 13, 10
  151. str200  db '200 Command OK.', 13, 10
  152. str215  db '215 UNIX type: L8', 13, 10
  153. str220  db '220 KolibriOS FTP Daemon 1.0', 13, 10
  154. .length = $ - str220
  155. str221  db '221 Bye!', 13, 10
  156. str225  db '225 Abort successful', 13, 10
  157. str226  db '226 Transfer OK, Closing connection', 13, 10
  158. str230  db '230 You are now logged in.', 13, 10
  159. str250  db '250 command successful', 13, 10
  160. str257  db '257 ""', 13, 10
  161. str331  db '331 Please specify the password.', 13, 10
  162. str500  db '500 Unsupported command', 13, 10
  163. str550  db '550 No such file', 13, 10
  164.