Rev 3247 | Rev 4050 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1665 | Nasarus | 1 | |
2 | |||
3 | |||
4 | { |
||
5 | |||
6 | |||
7 | (0 != strcmp( CMD_HISTORY[1], CMD)) && |
||
8 | (0 != strcmp( CMD_HISTORY[2], CMD)) && |
||
9 | (0 != strcmp( CMD_HISTORY[3], CMD)) && |
||
10 | (0 != strcmp( CMD_HISTORY[4], CMD)) && |
||
3245 | Albom | 11 | (0 != strcmp( CMD_HISTORY[5], CMD)) && |
12 | (0 != strcmp( CMD_HISTORY[6], CMD)) && |
||
13 | (0 != strcmp( CMD_HISTORY[7], CMD)) && |
||
14 | (0 != strcmp( CMD_HISTORY[8], CMD)) && |
||
15 | (0 != strcmp( CMD_HISTORY[9], CMD)) ) |
||
16 | |||
1665 | Nasarus | 17 | |
18 | strcpy(CMD_HISTORY[9], CMD_HISTORY[8]); |
||
3245 | Albom | 19 | strcpy(CMD_HISTORY[8], CMD_HISTORY[7]); |
20 | strcpy(CMD_HISTORY[7], CMD_HISTORY[6]); |
||
21 | strcpy(CMD_HISTORY[6], CMD_HISTORY[5]); |
||
22 | strcpy(CMD_HISTORY[5], CMD_HISTORY[4]); |
||
23 | strcpy(CMD_HISTORY[4], CMD_HISTORY[3]); |
||
1665 | Nasarus | 24 | strcpy(CMD_HISTORY[3], CMD_HISTORY[2]); |
25 | strcpy(CMD_HISTORY[2], CMD_HISTORY[1]); |
||
26 | strcpy(CMD_HISTORY[1], CMD_HISTORY[0]); |
||
27 | |||
28 | |||
29 | |||
2735 | Albom | 30 | |
31 | CMD_HISTORY_NUM_REAL++; |
||
32 | |||
33 | |||
1665 | Nasarus | 34 | |
35 | |||
36 | |||
37 | |||
38 | |||
39 | |||
40 | { |
||
41 | unsigned key; |
||
42 | |||
43 | |||
4015 | Albom | 44 | unsigned cmdLen = 0; |
45 | unsigned cmdPos = 0; |
||
46 | CMD[0] = '\0'; |
||
47 | |||
1665 | Nasarus | 48 | |
49 | { |
||
50 | key = getch(); |
||
51 | if ( 0 != (key & 0xff) ) |
||
52 | { |
||
53 | key &= 0xff; |
||
54 | switch (key) |
||
55 | { |
||
56 | case 27: // ESC |
||
57 | for (i = cmdPos; i < cmdLen; i++) |
||
4015 | Albom | 58 | printf(" "); |
59 | for (i = cmdLen; i > 0; i--) |
||
60 | printf("%c %c", 8, 8); |
||
61 | cmdLen = 0; |
||
62 | cmdPos = 0; |
||
63 | CMD[0] = '\0'; |
||
64 | break; |
||
1665 | Nasarus | 65 | |
66 | |||
4015 | Albom | 67 | |
1665 | Nasarus | 68 | printf("\n\r"); |
69 | command_history_add(CMD); |
||
70 | return; |
||
71 | |||
72 | |||
4015 | Albom | 73 | |
1665 | Nasarus | 74 | if (cmdPos > 0) |
4015 | Albom | 75 | { |
1665 | Nasarus | 76 | for (i = cmdPos-1; i < cmdLen; i++) |
4015 | Albom | 77 | CMD[i] = CMD[i+1]; |
78 | |||
79 | |||
80 | printf (" "); |
||
81 | |||
82 | |||
83 | printf ("%c %c", 8, 8); |
||
84 | |||
85 | |||
86 | |||
87 | |||
88 | printf("%c", 8); |
||
89 | |||
90 | |||
91 | cmdLen--; |
||
92 | } |
||
1665 | Nasarus | 93 | break; |
94 | |||
95 | |||
4015 | Albom | 96 | |
1665 | Nasarus | 97 | break; |
98 | |||
99 | |||
4015 | Albom | 100 | |
1665 | Nasarus | 101 | if (cmdLen < 255) |
4015 | Albom | 102 | { |
1665 | Nasarus | 103 | if ( kol_key_control() & 0x40 ) // ¥á«¨ ¢ª«îçñ CapsLock |
3247 | Albom | 104 | if ( (kol_key_control() & 1) || (kol_key_control() & 2)) // ¥á«¨ ¦ âë è¨äâë |
4015 | Albom | 105 | key = tolower(key); |
2174 | Albom | 106 | else |
107 | key = toupper(key); |
||
108 | |||
109 | |||
4015 | Albom | 110 | CMD[i] = CMD[i-1]; |
111 | |||
112 | |||
113 | |||
114 | |||
115 | printf("%c %c", 8, 8); |
||
116 | |||
117 | |||
118 | |||
119 | |||
120 | printf("%c", 8); |
||
121 | |||
122 | |||
123 | cmdLen++; |
||
124 | } |
||
1665 | Nasarus | 125 | break; |
126 | |||
127 | |||
4015 | Albom | 128 | } |
129 | else |
||
130 | { |
||
131 | key = (key>>8)&0xff; |
||
132 | switch (key) |
||
1665 | Nasarus | 133 | { |
134 | case 83: // Del |
||
4015 | Albom | 135 | if (cmdPos < cmdLen) |
136 | { |
||
137 | for (i = cmdPos; i < cmdLen; i++) |
||
138 | CMD[i] = CMD[i+1]; |
||
139 | |||
1665 | Nasarus | 140 | |
4015 | Albom | 141 | printf(" "); |
142 | |||
143 | |||
144 | printf("%c", 8); |
||
145 | |||
146 | |||
147 | printf("%c", CMD[i]); |
||
148 | |||
149 | |||
150 | printf("%c", 8); |
||
151 | |||
152 | |||
153 | } |
||
154 | |||
155 | |||
156 | |||
157 | |||
158 | if (cmdPos > 0) |
||
159 | { |
||
160 | printf("%c", 8); |
||
161 | cmdPos--; |
||
162 | } |
||
163 | break; |
||
164 | |||
165 | |||
166 | |||
167 | if (cmdPos < cmdLen) |
||
168 | { |
||
169 | printf("%c", CMD[cmdPos]); |
||
170 | cmdPos++; |
||
171 | } |
||
172 | break; |
||
173 | |||
174 | |||
175 | |||
3245 | Albom | 176 | for (i = 0; i < CMD_HISTORY_NUM; i++) |
4015 | Albom | 177 | { |
1665 | Nasarus | 178 | |
179 | |||
4015 | Albom | 180 | printf(" "); |
181 | |||
182 | |||
183 | printf("%c %c", 8, 8); |
||
184 | |||
185 | |||
1665 | Nasarus | 186 | CMD_NUM++; |
187 | else |
||
188 | CMD_NUM = 0; |
||
189 | |||
4015 | Albom | 190 | |
1665 | Nasarus | 191 | strcpy(CMD, CMD_HISTORY[CMD_NUM]); |
192 | cmdLen = strlen(CMD); |
||
4015 | Albom | 193 | if ((cmdPos = strlen(CMD)) != 0) |
194 | break; |
||
1665 | Nasarus | 195 | |
4015 | Albom | 196 | |
1665 | Nasarus | 197 | |
198 | |||
199 | |||
200 | |||
4015 | Albom | 201 | |
3245 | Albom | 202 | for (i = 0; i < CMD_HISTORY_NUM; i++) |
4015 | Albom | 203 | { |
1665 | Nasarus | 204 | |
205 | |||
4015 | Albom | 206 | printf(" "); |
207 | |||
208 | |||
209 | printf("%c %c", 8, 8); |
||
210 | |||
211 | |||
1665 | Nasarus | 212 | CMD_NUM--; |
213 | else |
||
214 | CMD_NUM = CMD_HISTORY_NUM-1; |
||
215 | |||
216 | |||
217 | strcpy(CMD, CMD_HISTORY[CMD_NUM]); |
||
218 | cmdLen = strlen(CMD); |
||
4015 | Albom | 219 | if ((cmdPos = strlen(CMD)) != 0) |
220 | break; |
||
1665 | Nasarus | 221 | } |
222 | break; |
||
223 | |||
224 | |||
4015 | Albom | 225 | |
1665 | Nasarus | 226 | cmd_exit(NULL); |
227 | |||
228 | |||
4015 | Albom | 229 | |
1665 | Nasarus | 230 | |
4015 | Albom | 231 | } |
232 | |||
1665 | Nasarus | 233 | |
4015 | Albom | 234 | |
1665 | Nasarus | 235 | |
236 | |||
237 | |||
238 | { |
||
239 | unsigned i, len; |
||
3245 | Albom | 240 | int quote = 0; |
241 | |||
242 | |||
243 | quote = 1; |
||
244 | |||
245 | |||
246 | { |
||
247 | for (i=0;;i++) |
||
248 | { |
||
249 | cmd[i] = CMD[i]; |
||
1665 | Nasarus | 250 | if (0 == cmd[i]) |
251 | { |
||
252 | i = -2; |
||
253 | break; |
||
254 | } |
||
255 | if ( iswhite(cmd[i]) ) |
||
256 | { |
||
257 | cmd[i] = '\0'; |
||
3245 | Albom | 258 | break; |
259 | } |
||
260 | } |
||
261 | return i+1; |
||
262 | } |
||
263 | else |
||
264 | { |
||
265 | len = 0; |
||
266 | for (i=1;;i++) |
||
267 | { |
||
268 | cmd[len] = CMD[i]; |
||
269 | if (0 == cmd[len]) |
||
270 | { |
||
271 | len = -2; |
||
272 | break; |
||
1665 | Nasarus | 273 | } |
274 | if ( cmd[len] == '"' ) |
||
3245 | Albom | 275 | { |
276 | cmd[len] = '\0'; |
||
277 | break; |
||
278 | } |
||
279 | len++; |
||
280 | } |
||
1665 | Nasarus | 281 | trim(cmd); |
3245 | Albom | 282 | return len+2; |
283 | } |
||
284 | } |
||
1665 | Nasarus | 285 | |
286 | |||
287 | |||
288 | |||
3247 | Albom | 289 | |
1665 | Nasarus | 290 | |
291 | |||
292 | |||
293 | { |
||
294 | char cmd[256]; |
||
295 | char args[256]; |
||
296 | unsigned arg; |
||
297 | int i; |
||
298 | int result; |
||
3247 | Albom | 299 | |
1665 | Nasarus | 300 | |
301 | arg = command_get_cmd(cmd); |
||
302 | |||
303 | |||
304 | return; |
||
305 | |||
306 | |||
307 | trim(args); |
||
308 | |||
309 | |||
310 | { |
||
311 | if (!strcmp(cmd, COMMANDS[i].name)) |
||
312 | { |
||
313 | result = ((handler1_t)COMMANDS[i].handler)(args); |
||
3247 | Albom | 314 | if (result != TRUE) |
315 | { |
||
316 | #if LANG_ENG |
||
317 | printf(" Error!\n\r"); |
||
318 | #elif LANG_RUS |
||
319 | printf(" Žè¨¡ª !\n\r"); |
||
320 | #endif |
||
321 | } |
||
322 | return; |
||
1665 | Nasarus | 323 | } |
324 | } |
||
325 | |||
326 | |||
327 | |||
328 | { |
||
329 | strcpy(CMD, ALIASES+64*1024+256*alias_search(CMD)); |
||
330 | command_execute(); |
||
331 | return; |
||
332 | } |
||
333 | |||
334 | |||
335 | |||
336 | |||
337 | |||
338 | |||
339 |