Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 1323 → Rev 1325

/programs/network/ftps/trunk/FTPS.ASM
17,7 → 17,7
dd START ; program start
dd I_END ; program image size
dd 0x170000 ; required amount of memory
dd 0x7FFF0 ; esp = 0x7FFF0
dd 0x16FFF0 ; esp = 0x16FFF0
dd 0, 0 ; no params, no path
 
include 'macros.inc'
1043,18 → 1043,23
je sfp001
 
; esi points to start of filename.
cld
push esi
 
 
; Copy across the directory path '/'
; into the fileinfoblock
mov esi, dirpath
mov edi, filename
mov dword [edi], '/RD/'
mov word [edi+4], '1/'
add edi, 6
sfp003:
movsb
cmp [esi], byte 0
jne sfp003
mov al, '/'
stosb
pop esi
 
; Copy across the filename
sfp002:
cld
movsb
cmp [esi], byte 0x0d
jne sfp002
1161,7 → 1166,7
je gf_sleep
 
mov eax, 53
mov ebx, 11 ; Get a bytes from socket
mov ebx, 11 ; Get bytes from socket
mov ecx, [DataSocket]
mov edx, text + 0x1300
add edx, dword [fsize]
1209,27 → 1214,98
;***************************************************************************
 
cmdPWD:
cld
mov edi, text+0x1300
 
mov esi, curdir_1
mov ecx, curdir_2-curdir_1
rep movsb
 
mov esi, [curdirptr]
cmp [esi], byte 0
jne cpwd_000
mov al, '/'
stosb
jmp cpwd_001
 
cpwd_000:
movsb
cmp [esi], byte 0
jne cpwd_000
 
cpwd_001:
mov esi, curdir_2
mov ecx, curdir_end-curdir_2
rep movsb
 
; OK, show the directory name text
mov esi, ramdir
mov edx, ramdir_end - ramdir
mov esi, text+0x1300
mov edx, edi
sub edx, esi
call outputStr
 
; TODO give real directory
 
ret
 
 
cmdCWD:
; Only / is valid for the ramdisk
cmp [buff+5], byte 0x0d
lea esi, [buff+4]
mov edi, [curdirptr]
mov ecx, -1
xor eax, eax
repne scasb
dec edi
cmp [esi], word '..'
je ccwd_002
test [esi], byte 0xE0
je ccwd_000
push edi
mov al, '/'
stosb
@@:
movsb
cmp [esi], byte 0xD
jne @b
xor al, al
stosb
 
mov eax, 70
mov ebx, dirinfoblock
and dword [ebx+4], 0
mcall
pop edi
test eax, eax
je @f
cmp eax, 6
jne ccwd_000
@@:
test ebx, ebx
je ccwd_000
mov esi, text + 0x1300 + 0x20
 
mov al, byte [esi]
and al, 0x18
cmp al, 0x10
jne ccwd_000
 
ccwd_ok:
; OK, show the directory name text
mov esi, chdir
mov edx, chdir_end - chdir
jmp ccwd_001
 
ccwd_002:
dec edi
cmp byte [edi], '/'
je ccwd_003
cmp edi, [curdirptr]
ja ccwd_002
jmp ccwd_ok
ccwd_003:
mov byte [edi], 0
jmp ccwd_ok
 
ccwd_000:
mov byte [edi], 0
; Tell user there is no such directory
mov esi, noFileStr
mov edx, noFileStr_end - noFileStr
1576,10 → 1652,11
systStr: db '215 UNIX system type',0x0d,0x0a
systStr_end:
 
ramdir: db '257 "/"',0x0d,0x0a
ramdir_end:
curdir_1: db '257 "'
curdir_2: db '"',0x0d,0x0a
curdir_end:
 
chdir: db '200 directory changed to /',0x0d,0x0a
chdir: db '250 CWD command successful',0x0d,0x0a
chdir_end:
 
unsupStr: db '500 Unsupported command',0x0d,0x0a
1630,7 → 1707,9
dd DirBlocksPerCall
dd text + 0x1300 ; data area
; The 'filename' for a directory listing
dirpath db '/sys',0
dirpath: db '/sys'
times 252 db 0
curdirptr: dd dirpath+4
 
fsize: dd 0