Rev 6394 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
6394 | nisargshah | 1 | resolve: |
2 | |||
3 | ; parse command line parameters of type |
||
4 | ; ftp://user:password@server.com:port/folder/subfolder type urls |
||
5 | |||
6 | ; check ftp:// |
||
7 | xor edx, edx |
||
8 | mov esi, buf_cmd |
||
9 | mov edi, str_ftp |
||
10 | xor ecx, ecx |
||
11 | @@: |
||
12 | mov al, byte [esi+edx] |
||
13 | mov bl, byte [edi+edx] |
||
14 | inc edx |
||
15 | cmp al, bl |
||
16 | jne main |
||
17 | cmp byte [edi+edx], '/' |
||
18 | jne @b |
||
19 | inc ecx |
||
20 | cmp ecx, 2 |
||
21 | jne @b |
||
22 | |||
23 | ; parse user |
||
24 | mov dword[param_user], "USER" |
||
25 | mov byte[param_user+4], " " |
||
26 | inc edx |
||
27 | add esi, edx |
||
28 | lea edi, [param_user+5] |
||
29 | .user: |
||
30 | lodsb |
||
31 | cmp al, 0 |
||
6437 | nisargshah | 32 | jne @f |
33 | mov eax, str_err_params |
||
34 | jmp error |
||
35 | @@: stosb |
||
6394 | nisargshah | 36 | cmp byte [esi], ':' |
37 | jne .user |
||
38 | mov word [edi], 0x0a0d |
||
39 | mov byte [edi+2], 0 |
||
40 | |||
41 | ; parse password |
||
42 | inc esi |
||
43 | mov dword[param_password], "PASS" |
||
44 | mov byte[param_password+4], " " |
||
45 | lea edi, [param_password+5] |
||
46 | .pass: |
||
47 | lodsb |
||
48 | cmp al, 0 |
||
6437 | nisargshah | 49 | jne @f |
50 | mov eax, str_err_params |
||
51 | jmp error |
||
52 | @@: stosb |
||
6394 | nisargshah | 53 | cmp byte [esi], '@' |
54 | jne .pass |
||
55 | mov word [edi], 0x0a0d |
||
56 | mov byte [edi+2], 0 |
||
57 | |||
58 | ; parse server address |
||
59 | inc esi |
||
60 | mov edi, param_server_addr |
||
61 | .addr: |
||
62 | lodsb |
||
63 | cmp al, 0 |
||
6437 | nisargshah | 64 | jne @f |
65 | mov eax, str_err_params |
||
66 | jmp error |
||
67 | @@: stosb |
||
6394 | nisargshah | 68 | cmp byte [esi], ':' |
69 | jne .addr |
||
70 | mov byte [edi], 0 |
||
71 | |||
72 | ; parse port |
||
73 | inc esi |
||
74 | xor eax, eax |
||
75 | xor ebx, ebx |
||
76 | mov [sockaddr1.port], 21 shl 8 |
||
77 | .port: |
||
78 | lodsb |
||
79 | cmp al, 0 |
||
6437 | nisargshah | 80 | jne @f |
81 | mov eax, str_err_params |
||
82 | jmp error |
||
83 | @@: cmp al, '/' |
||
84 | jbe .port_done |
||
6394 | nisargshah | 85 | sub al, '0' |
6437 | nisargshah | 86 | jnb @f |
87 | mov eax, str_err_host |
||
88 | jmp error |
||
89 | @@: cmp al, 9 |
||
90 | jna @f |
||
91 | mov eax, str_err_host |
||
92 | jmp error |
||
93 | @@: lea ebx, [ebx*4 + ebx] |
||
6394 | nisargshah | 94 | shl ebx, 1 |
95 | add ebx, eax |
||
96 | jmp .port |
||
6437 | nisargshah | 97 | .port_done: |
6394 | nisargshah | 98 | xchg bl, bh |
99 | mov [sockaddr1.port], bx |
||
100 | |||
101 | ; parse path |
||
102 | mov dword[param_path], "CWD " |
||
103 | lea edi, [param_path+4] |
||
104 | .path: |
||
105 | lodsb |
||
106 | stosb |
||
107 | cmp byte [esi], 0 |
||
108 | jne .path |
||
109 | mov word [edi], 0x0a0d |
||
110 | mov byte [edi+2], 0 |
||
111 | |||
112 | ; parameters resolved successfully |
||
113 | mov [use_params], 1 |
||
114 | |||
115 | ; copy server address to buf_cmd |
||
116 | mov esi, param_server_addr |
||
117 | mov edi, buf_cmd |
||
118 | .copy: |
||
119 | lodsb |
||
120 | stosb |
||
121 | cmp byte [edi], 0 |
||
122 | jne .copy |
||
123 | mov byte [esi], 0 |
||
124 | |||
125 | jmp no_resolve.done |
||
126 |