small bugfixes

git-svn-id: svn://kolibrios.org@4920 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
hidnplayr 2014-05-10 20:36:33 +00:00
parent fc7ba40638
commit 914e67bd24
2 changed files with 37 additions and 25 deletions

View File

@ -6,7 +6,7 @@ server_parser:
; thus they are simply ignored in this simple command parser.
cmp dword[s], "150 "
je data_ok
je data_loop
cmp dword[s], "220 "
je welcome
@ -100,7 +100,7 @@ pasv_ok:
jmp wait_for_servercommand
data_ok:
data_loop:
invoke con_write_asciiz, str2b
@ -118,7 +118,7 @@ data_ok:
; not retreiving, just print to console
invoke con_write_asciiz, buffer_ptr2
jmp data_ok
jmp data_loop
; retreiving, save to file
.retr:
@ -128,7 +128,7 @@ data_ok:
mcall 70, filestruct
pop eax
add [filestruct.offset], eax
jmp data_ok
jmp data_loop
; storing, send all data
.stor:
@ -149,11 +149,13 @@ data_ok:
.done:
invoke con_write_asciiz, str_close
mcall close, [datasocket]
mov [operation], OPERATION_NONE
jmp wait_for_servercommand
close_datacon:
cmp [operation], OPERATION_NONE
je wait_for_usercommand
invoke con_write_asciiz, str_close
mcall close, [datasocket]
jmp wait_for_usercommand

View File

@ -5,13 +5,19 @@ cmd_help:
jmp wait_for_usercommand
cmd_bye:
mcall close, [socketnum]
mcall close, [datasocket]
; Send BYE message to the server
mov dword[s], "BYE" + 13 shl 24
mov byte[s+4], 10
mcall send, [socketnum], s, 5, 0
; Close the control connection
mcall close, [socketnum]
jmp main
cmd_pwd:
mov dword[s], "PWD" + 13 shl 24
@ -20,6 +26,7 @@ cmd_pwd:
jmp wait_for_servercommand
cmd_cwd:
mov dword[s], "CWD "
@ -35,6 +42,7 @@ cmd_cwd:
jmp wait_for_servercommand
cmd_dele:
mov dword[s], "DELE"
@ -51,24 +59,27 @@ cmd_dele:
jmp wait_for_servercommand
cmd_list:
cmd_list:
call open_dataconnection
mov [operation], OPERATION_LIST
mov dword[s], "LIST"
mov word[s+4], 0x0a0d
mcall send, [socketnum], s, 6, 0
mcall send, [socketnum], s, 6, 0
jmp wait_for_servercommand
cmd_retr:
call open_dataconnection
; Create/open the file
mov [operation], OPERATION_RETR
mov esi, s+5
mov ecx, 256-5
call set_filename
mov [filestruct.subfn], 2 ; create/rewrite file
mov [filestruct.offset], 0
@ -76,16 +87,16 @@ cmd_retr:
mov [filestruct.size], 0
mov [filestruct.ptr], 0
lea esi, [s+5]
mov edi, filestruct.name
mov ecx, 256-5
call set_filename
mcall 70, filestruct
cmp eax, -1
; je fileerror
; Prepare to write to the file
mov [filestruct.subfn], 3 ; write to file
mov [operation], OPERATION_RETR
; Request the file from server
mov dword[s], "RETR"
mov byte[s+4], " "
@ -95,9 +106,10 @@ cmd_retr:
mov edi, s
repne scasb
lea esi, [edi - s]
mov word [edi - 2], 0x0a0d
mov dword[edi - 2], 0x0a0d
mcall send, [socketnum], s, , 0
invoke con_write_asciiz, s ; print command
jmp wait_for_servercommand
@ -113,8 +125,7 @@ cmd_stor:
mov [filestruct.size], BUFFERSIZE
mov [filestruct.ptr], buffer_ptr2
lea esi, [s+5]
mov edi, filestruct.name
mov esi, s+5
mov ecx, 256-5
call set_filename
@ -154,6 +165,7 @@ cmd_lcwd:
jmp wait_for_usercommand
cmd_cdup:
mov dword[s], "CDUP"
@ -162,6 +174,7 @@ cmd_cdup:
jmp wait_for_servercommand
cmd_rmd:
mov dword[s], "RMD "
@ -177,6 +190,7 @@ cmd_rmd:
jmp wait_for_servercommand
cmd_mkd:
mov dword[s], "MKD "
@ -193,18 +207,15 @@ cmd_mkd:
jmp wait_for_servercommand
; esi = source ptr
; edi = dest ptr
; ecx = max length of source buffer
set_filename:
mov edi, filestruct.name
.loop:
lodsb
test al, al
jz .done
cmp al, ' '
je .done
cmp al, 10
je .done
stosb
@ -213,5 +224,4 @@ set_filename:
xor al, al ; append a 0 byte
stosb
ret
ret