Subversion Repositories Kolibri OS

Rev

Rev 4920 | Rev 5011 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3701 hidnplayr 1
cmd_help:
2
 
3
        push    str_help
4
        call    [con_write_asciiz]
5
 
3790 hidnplayr 6
        jmp     wait_for_usercommand
7
 
4920 hidnplayr 8
 
3800 hidnplayr 9
cmd_bye:
10
 
4920 hidnplayr 11
; Send BYE message to the server
4922 ashmew2 12
        mov     dword[buf_cmd], "BYE" + 13 shl 24
13
        mov     byte[buf_cmd+4], 10
14
        mcall   send, [socketnum], buf_cmd, 5, 0
4920 hidnplayr 15
 
16
; Close the control connection
3800 hidnplayr 17
        mcall   close, [socketnum]
18
        jmp     main
19
 
4920 hidnplayr 20
 
3794 hidnplayr 21
cmd_pwd:
22
 
4922 ashmew2 23
        mov     dword[buf_cmd], "PWD" + 13 shl 24
24
        mov     byte[buf_cmd+4], 10
25
        mcall   send, [socketnum], buf_cmd, 5, 0
3794 hidnplayr 26
 
27
        jmp     wait_for_servercommand
28
 
4920 hidnplayr 29
 
3790 hidnplayr 30
cmd_cwd:
31
 
4922 ashmew2 32
        mov     dword[buf_cmd], "CWD "
3790 hidnplayr 33
 
34
        mov     ecx, 256
35
        xor     al, al
4922 ashmew2 36
        mov     edi, buf_cmd
3790 hidnplayr 37
        repne scasb
4922 ashmew2 38
        lea     esi, [edi - buf_cmd]
3814 hidnplayr 39
        mov     word [edi - 2], 0x0a0d
3790 hidnplayr 40
 
4922 ashmew2 41
        mcall   send, [socketnum], buf_cmd, , 0
3790 hidnplayr 42
 
3793 hidnplayr 43
        jmp     wait_for_servercommand
44
 
4920 hidnplayr 45
 
3800 hidnplayr 46
cmd_dele:
3793 hidnplayr 47
 
4922 ashmew2 48
        mov     dword[buf_cmd], "DELE"
49
        mov     byte[buf_cmd], " "
3800 hidnplayr 50
 
51
        mov     ecx, 256
52
        xor     al, al
4922 ashmew2 53
        mov     edi, buf_cmd
3800 hidnplayr 54
        repne scasb
4922 ashmew2 55
        lea     esi, [edi - buf_cmd]
3814 hidnplayr 56
        mov     word [edi - 2], 0x0a0d
3800 hidnplayr 57
 
4922 ashmew2 58
        mcall   send, [socketnum], buf_cmd, , 0
3800 hidnplayr 59
 
60
        jmp     wait_for_servercommand
61
 
4920 hidnplayr 62
 
3800 hidnplayr 63
cmd_list:
64
        call    open_dataconnection
65
 
66
        mov     [operation], OPERATION_LIST
67
 
4922 ashmew2 68
        mov     dword[buf_cmd], "LIST"
69
        mov     word[buf_cmd+4], 0x0a0d
70
        mcall   send, [socketnum], buf_cmd, 6, 0
3800 hidnplayr 71
 
72
        jmp     wait_for_servercommand
73
 
74
 
3793 hidnplayr 75
cmd_retr:
76
        call    open_dataconnection
4920 hidnplayr 77
 
78
; Create/open the file
3793 hidnplayr 79
 
4922 ashmew2 80
; Create/open the file
81
 
82
        mov     esi, buf_cmd+5
4920 hidnplayr 83
        mov     ecx, 256-5
84
        call    set_filename
3800 hidnplayr 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
 
4920 hidnplayr 96
; Prepare to write to the file
97
 
3800 hidnplayr 98
        mov     [filestruct.subfn], 3   ; write to file
4920 hidnplayr 99
        mov     [operation], OPERATION_RETR
3800 hidnplayr 100
 
4920 hidnplayr 101
; Request the file from server
4922 ashmew2 102
 
103
        mov     dword[buf_cmd], "RETR"
104
        mov     byte[buf_cmd+4], " "
4920 hidnplayr 105
 
3793 hidnplayr 106
        mov     ecx, 256
107
        xor     al, al
4922 ashmew2 108
        mov     edi, buf_cmd
3793 hidnplayr 109
        repne scasb
4922 ashmew2 110
        lea     esi, [edi - buf_cmd]
4920 hidnplayr 111
        mov     dword[edi - 2], 0x0a0d
4922 ashmew2 112
        mcall   send, [socketnum], buf_cmd, , 0
3793 hidnplayr 113
 
4922 ashmew2 114
        invoke  con_write_asciiz, buf_cmd     ; print command
3793 hidnplayr 115
        jmp     wait_for_servercommand
116
 
4922 ashmew2 117
cmd_rdir:
3793 hidnplayr 118
 
4922 ashmew2 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
 
3793 hidnplayr 132
cmd_stor:
133
 
134
        call    open_dataconnection
135
 
3800 hidnplayr 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
4922 ashmew2 142
        mov     [filestruct.ptr], buf_buffer2
3800 hidnplayr 143
 
4922 ashmew2 144
        mov     esi, buf_cmd+5
3800 hidnplayr 145
        mov     ecx, 256-5
146
        call    set_filename
147
 
4922 ashmew2 148
        mov     dword[buf_cmd], "STOR"
149
        mov     byte[buf_cmd+4], " "
3793 hidnplayr 150
 
151
        mov     ecx, 256
152
        xor     al, al
4922 ashmew2 153
        mov     edi, buf_cmd
3793 hidnplayr 154
        repne scasb
4922 ashmew2 155
        lea     esi, [edi - buf_cmd]
3814 hidnplayr 156
        mov     word [edi - 2], 0x0a0d
4922 ashmew2 157
        mcall   send, [socketnum], buf_cmd, , 0
3793 hidnplayr 158
 
3800 hidnplayr 159
        jmp     wait_for_servercommand
160
 
161
 
3802 hidnplayr 162
cmd_lcwd:
3800 hidnplayr 163
 
4922 ashmew2 164
        mov     esi, buf_cmd+5
3802 hidnplayr 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
4922 ashmew2 175
        mcall   30, 1, buf_cmd+5              ; set working directory
176
        mcall   30, 2, buf_cmd, 256           ; and read it again
3802 hidnplayr 177
 
178
        invoke  con_write_asciiz, str_lcwd
4922 ashmew2 179
        invoke  con_write_asciiz, buf_cmd
3813 hidnplayr 180
        invoke  con_write_asciiz, str_newline
3802 hidnplayr 181
 
182
        jmp     wait_for_usercommand
183
 
4920 hidnplayr 184
 
3804 hidnplayr 185
cmd_cdup:
3802 hidnplayr 186
 
4922 ashmew2 187
        mov     dword[buf_cmd], "CDUP"
188
        mov     word[buf_cmd+4], 0x0d0a
189
        mcall   send, [socketnum], buf_cmd, 6, 0
3802 hidnplayr 190
 
3804 hidnplayr 191
        jmp     wait_for_servercommand
192
 
4920 hidnplayr 193
 
3804 hidnplayr 194
cmd_rmd:
195
 
4922 ashmew2 196
        mov     dword[buf_cmd], "RMD "
3804 hidnplayr 197
 
198
        mov     ecx, 256
199
        xor     al, al
4922 ashmew2 200
        mov     edi, buf_cmd
3804 hidnplayr 201
        repne scasb
4922 ashmew2 202
        lea     esi, [edi - buf_cmd]
3814 hidnplayr 203
        mov     word [edi - 2], 0x0a0d
3804 hidnplayr 204
 
4922 ashmew2 205
        mcall   send, [socketnum], buf_cmd, , 0
3804 hidnplayr 206
 
207
        jmp     wait_for_servercommand
208
 
4920 hidnplayr 209
 
3804 hidnplayr 210
cmd_mkd:
211
 
4922 ashmew2 212
        mov     dword[buf_cmd], "MKD "
3804 hidnplayr 213
 
214
        mov     ecx, 256
215
        xor     al, al
4922 ashmew2 216
        mov     edi, buf_cmd
3804 hidnplayr 217
        repne scasb
4922 ashmew2 218
        lea     esi, [edi - buf_cmd]
3814 hidnplayr 219
        mov     word [edi - 2], 0x0a0d
3804 hidnplayr 220
 
4922 ashmew2 221
        mcall   send, [socketnum], buf_cmd, , 0
3804 hidnplayr 222
 
223
        jmp     wait_for_servercommand
224
 
225
 
3800 hidnplayr 226
; esi   = source ptr
227
; ecx   = max length of source buffer
228
set_filename:
229
 
4920 hidnplayr 230
        mov     edi, filestruct.name
3800 hidnplayr 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
 
4920 hidnplayr 243
        ret