Rev 4920 | Rev 5011 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4920 | Rev 4922 | ||
---|---|---|---|
Line 7... | Line 7... | ||
7 | 7 | ||
Line 8... | Line 8... | ||
8 | 8 | ||
9 | cmd_bye: |
9 | cmd_bye: |
10 | 10 | ||
11 | ; Send BYE message to the server |
11 | ; Send BYE message to the server |
Line 12... | Line 12... | ||
12 | mov dword[s], "BYE" + 13 shl 24 |
12 | mov dword[buf_cmd], "BYE" + 13 shl 24 |
13 | mov byte[s+4], 10 |
13 | mov byte[buf_cmd+4], 10 |
14 | mcall send, [socketnum], s, 5, 0 |
14 | mcall send, [socketnum], buf_cmd, 5, 0 |
Line 15... | Line 15... | ||
15 | 15 | ||
Line 16... | Line 16... | ||
16 | ; Close the control connection |
16 | ; Close the control connection |
17 | mcall close, [socketnum] |
17 | mcall close, [socketnum] |
18 | jmp main |
18 | jmp main |
Line 19... | Line 19... | ||
19 | 19 | ||
Line 20... | Line 20... | ||
20 | 20 | ||
Line 21... | Line 21... | ||
21 | cmd_pwd: |
21 | cmd_pwd: |
Line 22... | Line 22... | ||
22 | 22 | ||
23 | mov dword[s], "PWD" + 13 shl 24 |
23 | mov dword[buf_cmd], "PWD" + 13 shl 24 |
24 | mov byte[s+4], 10 |
24 | mov byte[buf_cmd+4], 10 |
25 | mcall send, [socketnum], s, 5, 0 |
25 | mcall send, [socketnum], buf_cmd, 5, 0 |
26 | 26 | ||
27 | jmp wait_for_servercommand |
27 | jmp wait_for_servercommand |
Line 28... | Line 28... | ||
28 | 28 | ||
Line 29... | Line 29... | ||
29 | 29 | ||
Line 30... | Line 30... | ||
30 | cmd_cwd: |
30 | cmd_cwd: |
Line 31... | Line 31... | ||
31 | 31 | ||
32 | mov dword[s], "CWD " |
32 | mov dword[buf_cmd], "CWD " |
Line 33... | Line 33... | ||
33 | 33 | ||
34 | mov ecx, 256 |
34 | mov ecx, 256 |
35 | xor al, al |
35 | xor al, al |
36 | mov edi, s |
36 | mov edi, buf_cmd |
37 | repne scasb |
37 | repne scasb |
38 | lea esi, [edi - s] |
38 | lea esi, [edi - buf_cmd] |
Line 39... | Line 39... | ||
39 | mov word [edi - 2], 0x0a0d |
39 | mov word [edi - 2], 0x0a0d |
Line 40... | Line 40... | ||
40 | 40 | ||
Line 41... | Line 41... | ||
41 | mcall send, [socketnum], s, , 0 |
41 | mcall send, [socketnum], buf_cmd, , 0 |
42 | 42 | ||
Line 43... | Line 43... | ||
43 | jmp wait_for_servercommand |
43 | jmp wait_for_servercommand |
Line 44... | Line 44... | ||
44 | 44 | ||
45 | 45 | ||
46 | cmd_dele: |
46 | cmd_dele: |
Line 47... | Line 47... | ||
47 | 47 | ||
Line 48... | Line 48... | ||
48 | mov dword[s], "DELE" |
48 | mov dword[buf_cmd], "DELE" |
49 | mov byte[s], " " |
49 | mov byte[buf_cmd], " " |
Line 50... | Line 50... | ||
50 | 50 | ||
Line -... | Line 51... | ||
- | 51 | mov ecx, 256 |
|
- | 52 | xor al, al |
|
51 | mov ecx, 256 |
53 | mov edi, buf_cmd |
52 | xor al, al |
54 | repne scasb |
53 | mov edi, s |
55 | lea esi, [edi - buf_cmd] |
Line 54... | Line 56... | ||
54 | repne scasb |
56 | mov word [edi - 2], 0x0a0d |
55 | lea esi, [edi - s] |
57 | |
Line 96... | Line 98... | ||
96 | mov [filestruct.subfn], 3 ; write to file |
98 | mov [filestruct.subfn], 3 ; write to file |
97 | mov [operation], OPERATION_RETR |
99 | mov [operation], OPERATION_RETR |
Line 98... | Line 100... | ||
98 | 100 | ||
Line 99... | Line 101... | ||
99 | ; Request the file from server |
101 | ; Request the file from server |
100 | 102 | ||
Line 101... | Line 103... | ||
101 | mov dword[s], "RETR" |
103 | mov dword[buf_cmd], "RETR" |
102 | mov byte[s+4], " " |
104 | mov byte[buf_cmd+4], " " |
103 | 105 | ||
104 | mov ecx, 256 |
106 | mov ecx, 256 |
105 | xor al, al |
107 | xor al, al |
106 | mov edi, s |
108 | mov edi, buf_cmd |
107 | repne scasb |
109 | repne scasb |
Line 108... | Line 110... | ||
108 | lea esi, [edi - s] |
110 | lea esi, [edi - buf_cmd] |
109 | mov dword[edi - 2], 0x0a0d |
111 | mov dword[edi - 2], 0x0a0d |
Line -... | Line 112... | ||
- | 112 | mcall send, [socketnum], buf_cmd, , 0 |
|
- | 113 | ||
- | 114 | invoke con_write_asciiz, buf_cmd ; print command |
|
- | 115 | jmp wait_for_servercommand |
|
- | 116 | ||
- | 117 | cmd_rdir: |
|
- | 118 | ||
- | 119 | mov [operation], OPERATION_RDIR |
|
- | 120 | ||
- | 121 | ; Request filename list from the server |
|
- | 122 | ||
- | 123 | call open_dataconnection |
|
- | 124 | ||
- | 125 | mov [size_fname], 0 |
|
Line 110... | Line 126... | ||
110 | mcall send, [socketnum], s, , 0 |
126 | mov dword[buf_cmd], "NLST" |
Line 111... | Line 127... | ||
111 | 127 | mov word[buf_cmd+4], 0x0a0d |
|
Line 121... | Line 137... | ||
121 | 137 | ||
122 | mov [filestruct.subfn], 0 ; read file |
138 | mov [filestruct.subfn], 0 ; read file |
123 | mov [filestruct.offset], 0 |
139 | mov [filestruct.offset], 0 |
124 | mov [filestruct.offset+4], 0 |
140 | mov [filestruct.offset+4], 0 |
125 | mov [filestruct.size], BUFFERSIZE |
141 | mov [filestruct.size], BUFFERSIZE |
Line 126... | Line 142... | ||
126 | mov [filestruct.ptr], buffer_ptr2 |
142 | mov [filestruct.ptr], buf_buffer2 |
127 | 143 | ||
128 | mov esi, s+5 |
144 | mov esi, buf_cmd+5 |
Line 129... | Line 145... | ||
129 | mov ecx, 256-5 |
145 | mov ecx, 256-5 |
130 | call set_filename |
146 | call set_filename |
Line 131... | Line 147... | ||
131 | 147 | ||
132 | mov dword[s], "STOR" |
148 | mov dword[buf_cmd], "STOR" |
133 | mov byte[s+4], " " |
149 | mov byte[buf_cmd+4], " " |
134 | 150 | ||
135 | mov ecx, 256 |
151 | mov ecx, 256 |
136 | xor al, al |
152 | xor al, al |
137 | mov edi, s |
153 | mov edi, buf_cmd |
Line 138... | Line 154... | ||
138 | repne scasb |
154 | repne scasb |
Line 139... | Line 155... | ||
139 | lea esi, [edi - s] |
155 | lea esi, [edi - buf_cmd] |
Line 140... | Line 156... | ||
140 | mov word [edi - 2], 0x0a0d |
156 | mov word [edi - 2], 0x0a0d |
141 | mcall send, [socketnum], s, , 0 |
157 | mcall send, [socketnum], buf_cmd, , 0 |
142 | 158 | ||
143 | jmp wait_for_servercommand |
159 | jmp wait_for_servercommand |
144 | 160 | ||
145 | 161 | ||
146 | cmd_lcwd: |
162 | cmd_lcwd: |
147 | 163 | ||
148 | mov esi, s+5 |
164 | mov esi, buf_cmd+5 |
149 | mov ecx, 256-5 |
165 | mov ecx, 256-5 |
150 | .loop: |
166 | .loop: |
151 | lodsb |
167 | lodsb |
152 | cmp al, 10 |
168 | cmp al, 10 |
Line 153... | Line 169... | ||
153 | je .done |
169 | je .done |
154 | test al, al |
170 | test al, al |
155 | je .done |
171 | je .done |
Line 156... | Line 172... | ||
156 | loop .loop |
172 | loop .loop |
Line 157... | Line 173... | ||
157 | .done: |
173 | .done: |
Line 158... | Line 174... | ||
158 | mov byte[esi-1], 0 |
174 | mov byte[esi-1], 0 |
159 | mcall 30, 1, s+5 ; set working directory |
175 | mcall 30, 1, buf_cmd+5 ; set working directory |
160 | mcall 30, 2, s, 256 ; and read it again |
176 | mcall 30, 2, buf_cmd, 256 ; and read it again |
Line 161... | Line 177... | ||
161 | 177 | ||
Line 162... | Line 178... | ||
162 | invoke con_write_asciiz, str_lcwd |
178 | invoke con_write_asciiz, str_lcwd |
Line 163... | Line 179... | ||
163 | invoke con_write_asciiz, s |
179 | invoke con_write_asciiz, buf_cmd |
Line 164... | Line 180... | ||
164 | invoke con_write_asciiz, str_newline |
180 | invoke con_write_asciiz, str_newline |
165 | 181 | ||
166 | jmp wait_for_usercommand |
182 | jmp wait_for_usercommand |
167 | 183 | ||
168 | 184 | ||
169 | cmd_cdup: |
185 | cmd_cdup: |
Line 170... | Line 186... | ||
170 | 186 | ||
Line 171... | Line 187... | ||
171 | mov dword[s], "CDUP" |
187 | mov dword[buf_cmd], "CDUP" |
Line 172... | Line 188... | ||
172 | mov word[s+4], 0x0d0a |
188 | mov word[buf_cmd+4], 0x0d0a |
Line 173... | Line 189... | ||
173 | mcall send, [socketnum], s, 6, 0 |
189 | mcall send, [socketnum], buf_cmd, 6, 0 |
Line 174... | Line 190... | ||
174 | 190 | ||
175 | jmp wait_for_servercommand |
191 | jmp wait_for_servercommand |
176 | 192 | ||
177 | 193 | ||
178 | cmd_rmd: |
194 | cmd_rmd: |
179 | 195 | ||
Line 180... | Line 196... | ||
180 | mov dword[s], "RMD " |
196 | mov dword[buf_cmd], "RMD " |
Line 181... | Line 197... | ||
181 | 197 | ||
Line 182... | Line 198... | ||
182 | mov ecx, 256 |
198 | mov ecx, 256 |