Rev 3794 | Rev 3802 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3794 | Rev 3800 | ||
---|---|---|---|
1 | cmd_list: |
- | |
2 | - | ||
3 | call open_dataconnection |
- | |
4 | - | ||
5 | mov dword[s], "LIST" |
- | |
6 | mov byte[s+4], 0x0a |
- | |
7 | mcall send, [socketnum], s, 5, 0 |
- | |
8 | - | ||
9 | jmp wait_for_servercommand |
- | |
10 | - | ||
11 | - | ||
12 | cmd_help: |
1 | cmd_help: |
13 | 2 | ||
14 | push str_help |
3 | push str_help |
15 | call [con_write_asciiz] |
4 | call [con_write_asciiz] |
16 | 5 | ||
17 | jmp wait_for_usercommand |
6 | jmp wait_for_usercommand |
- | 7 | ||
- | 8 | cmd_bye: |
|
- | 9 | ||
- | 10 | mcall close, [socketnum] |
|
- | 11 | mcall close, [datasocket] |
|
- | 12 | ||
- | 13 | jmp main |
|
18 | 14 | ||
19 | cmd_pwd: |
15 | cmd_pwd: |
20 | 16 | ||
21 | mov dword[s], "PWD" + 10 shl 24 |
17 | mov dword[s], "PWD" + 10 shl 24 |
22 | mcall send, [socketnum], s, 4, 0 |
18 | mcall send, [socketnum], s, 4, 0 |
23 | 19 | ||
24 | jmp wait_for_servercommand |
20 | jmp wait_for_servercommand |
25 | 21 | ||
26 | cmd_cwd: |
22 | cmd_cwd: |
27 | 23 | ||
28 | mov dword[s], "CWD " |
24 | mov dword[s], "CWD " |
29 | 25 | ||
30 | mov ecx, 256 |
26 | mov ecx, 256 |
31 | xor al, al |
27 | xor al, al |
32 | mov edi, s |
28 | mov edi, s |
33 | repne scasb |
29 | repne scasb |
34 | lea esi, [edi - s - 1] |
30 | lea esi, [edi - s - 1] |
35 | 31 | ||
36 | mcall send, [socketnum], s, , 0 |
32 | mcall send, [socketnum], s, , 0 |
37 | 33 | ||
38 | jmp wait_for_servercommand |
34 | jmp wait_for_servercommand |
- | 35 | ||
- | 36 | cmd_dele: |
|
- | 37 | ||
- | 38 | mov dword[s], "DELE" |
|
- | 39 | mov byte[s], " " |
|
- | 40 | ||
- | 41 | mov ecx, 256 |
|
- | 42 | xor al, al |
|
- | 43 | mov edi, s |
|
- | 44 | repne scasb |
|
- | 45 | lea esi, [edi - s - 1] |
|
- | 46 | ||
- | 47 | mcall send, [socketnum], s, , 0 |
|
- | 48 | ||
- | 49 | jmp wait_for_servercommand |
|
- | 50 | ||
- | 51 | cmd_list: |
|
- | 52 | ||
- | 53 | call open_dataconnection |
|
- | 54 | ||
- | 55 | mov [operation], OPERATION_LIST |
|
- | 56 | ||
- | 57 | mov dword[s], "LIST" |
|
- | 58 | mov byte[s+4], 0x0a |
|
- | 59 | mcall send, [socketnum], s, 5, 0 |
|
- | 60 | ||
- | 61 | jmp wait_for_servercommand |
|
39 | 62 | ||
40 | 63 | ||
41 | cmd_retr: |
64 | cmd_retr: |
42 | 65 | ||
43 | call open_dataconnection |
66 | call open_dataconnection |
- | 67 | ||
- | 68 | mov [operation], OPERATION_RETR |
|
- | 69 | ||
- | 70 | mov [filestruct.subfn], 2 ; create/rewrite file |
|
- | 71 | mov [filestruct.offset], 0 |
|
- | 72 | mov [filestruct.offset+4], 0 |
|
- | 73 | mov [filestruct.size], 0 |
|
- | 74 | mov [filestruct.ptr], 0 |
|
- | 75 | ||
- | 76 | lea esi, [s+5] |
|
- | 77 | mov edi, filestruct.name |
|
- | 78 | mov ecx, 256-5 |
|
- | 79 | call set_filename |
|
- | 80 | ||
- | 81 | mcall 70, filestruct |
|
- | 82 | cmp eax, -1 |
|
- | 83 | ; je fileerror |
|
- | 84 | ||
- | 85 | mov [filestruct.subfn], 3 ; write to file |
|
44 | 86 | ||
45 | mov dword[s], "RETR" |
87 | mov dword[s], "RETR" |
46 | mov byte[s+4], " " |
88 | mov byte[s+4], " " |
47 | 89 | ||
48 | mov ecx, 256 |
90 | mov ecx, 256 |
49 | xor al, al |
91 | xor al, al |
50 | mov edi, s |
92 | mov edi, s |
51 | repne scasb |
93 | repne scasb |
52 | lea esi, [edi - s - 1] |
94 | lea esi, [edi - s - 1] |
53 | - | ||
54 | mcall send, [socketnum], s, , 0 |
95 | mcall send, [socketnum], s, , 0 |
55 | 96 | ||
56 | jmp wait_for_servercommand |
97 | jmp wait_for_servercommand |
57 | 98 | ||
58 | 99 | ||
59 | cmd_stor: |
100 | cmd_stor: |
60 | 101 | ||
61 | call open_dataconnection |
102 | call open_dataconnection |
- | 103 | ||
- | 104 | mov [operation], OPERATION_STOR |
|
- | 105 | ||
- | 106 | mov [filestruct.subfn], 0 ; read file |
|
- | 107 | mov [filestruct.offset], 0 |
|
- | 108 | mov [filestruct.offset+4], 0 |
|
- | 109 | mov [filestruct.size], BUFFERSIZE |
|
- | 110 | mov [filestruct.ptr], buffer_ptr2 |
|
- | 111 | ||
- | 112 | lea esi, [s+5] |
|
- | 113 | mov edi, filestruct.name |
|
- | 114 | mov ecx, 256-5 |
|
- | 115 | call set_filename |
|
62 | 116 | ||
63 | mov dword[s], "STOR" |
117 | mov dword[s], "STOR" |
64 | mov byte[s+4], " " |
118 | mov byte[s+4], " " |
65 | 119 | ||
66 | mov ecx, 256 |
120 | mov ecx, 256 |
67 | xor al, al |
121 | xor al, al |
68 | mov edi, s |
122 | mov edi, s |
69 | repne scasb |
123 | repne scasb |
70 | lea esi, [edi - s - 1] |
124 | lea esi, [edi - s - 1] |
71 | - | ||
72 | mcall send, [socketnum], s, , 0 |
125 | mcall send, [socketnum], s, , 0 |
73 | 126 | ||
74 | jmp wait_for_servercommand |
127 | jmp wait_for_servercommand |
75 | 128 | ||
- | 129 | ||
- | 130 | ||
- | 131 | ; esi = source ptr |
|
- | 132 | ; edi = dest ptr |
|
- | 133 | ; ecx = max length of source buffer |
|
- | 134 | set_filename: |
|
- | 135 | ||
- | 136 | .loop: |
|
- | 137 | lodsb |
|
- | 138 | test al, al |
|
- | 139 | jz .done |
|
- | 140 | cmp al, ' ' |
|
- | 141 | je .done |
|
- | 142 | cmp al, 10 |
|
- | 143 | je .done |
|
- | 144 | stosb |
|
- | 145 | loop .loop |
|
- | 146 | .done: |
|
- | 147 | xor al, al ; append a 0 byte |
|
- | 148 | stosb |
|
- | 149 | ||
- | 150 | ret |
|
- | 151 | ||
- | 152 |