Subversion Repositories Kolibri OS

Rev

Rev 4922 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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