Rev 6857 | 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 | |||
4050 | Albom | 4 | { |
1665 | Nasarus | 5 | |
6 | |||
4050 | Albom | 7 | |
1665 | Nasarus | 8 | |
6822 | siemargl | 9 | |
10 | |||
6825 | siemargl | 11 | |
12 | |||
4050 | Albom | 13 | if ( 0 == strcmp( CMD_HISTORY[i], CMD ) ) |
6822 | siemargl | 14 | return; |
15 | |||
1665 | Nasarus | 16 | |
4050 | Albom | 17 | strcpy(CMD_HISTORY[i], CMD_HISTORY[i-1]); |
18 | |||
1665 | Nasarus | 19 | |
4050 | Albom | 20 | |
21 | |||
22 | CMD_HISTORY_NUM_REAL++; |
||
23 | |||
24 | |||
1665 | Nasarus | 25 | // ============================================================ |
7787 | rgimad | 26 | |
1665 | Nasarus | 27 | |
7787 | rgimad | 28 | { |
29 | unsigned int n1 = strlen( s1 ); |
||
30 | unsigned int n2 = strlen( s2 ); |
||
31 | |||
4050 | Albom | 32 | |
7787 | rgimad | 33 | |
4050 | Albom | 34 | |
7787 | rgimad | 35 | for ( i = 0; i < n1 - pos; i++ ) |
36 | { |
||
37 | s1[n1 + n2 - i - 1] = s1[n1 - i - 1]; |
||
38 | } |
||
39 | |||
40 | |||
41 | { |
||
42 | s1[pos+i] = s2[i]; |
||
43 | } |
||
44 | |||
45 | |||
46 | |||
47 | |||
48 | } |
||
49 | |||
50 | |||
1665 | Nasarus | 51 | |
52 | |||
53 | { |
||
54 | unsigned key; |
||
55 | |||
56 | |||
4015 | Albom | 57 | unsigned cmdLen = 0; |
58 | unsigned cmdPos = 0; |
||
59 | CMD[0] = '\0'; |
||
60 | |||
1665 | Nasarus | 61 | |
4516 | Albom | 62 | char* clipBuf; // clipboard buffer |
63 | char clipCopy[255+12]; |
||
64 | |||
65 | |||
1665 | Nasarus | 66 | { |
67 | key = getch(); |
||
68 | if ( 0 != (key & 0xff) ) |
||
69 | { |
||
70 | key &= 0xff; |
||
71 | switch (key) |
||
72 | { |
||
73 | case 27: // ESC |
||
74 | for (i = cmdPos; i < cmdLen; i++) |
||
6822 | siemargl | 75 | printf(" "); |
76 | for (i = cmdLen; i > 0; i--) |
||
77 | printf("%c %c", 8, 8); |
||
78 | cmdLen = 0; |
||
79 | cmdPos = 0; |
||
80 | CMD[0] = '\0'; |
||
81 | break; |
||
1665 | Nasarus | 82 | |
83 | |||
84 | printf("\n\r"); |
||
85 | command_history_add(); |
||
4050 | Albom | 86 | return; |
1665 | Nasarus | 87 | |
88 | |||
89 | if (cmdPos > 0) |
||
4015 | Albom | 90 | { |
1665 | Nasarus | 91 | for (i = cmdPos-1; i < cmdLen; i++) |
6822 | siemargl | 92 | CMD[i] = CMD[i+1]; |
93 | for (i = 0; i < cmdLen-cmdPos; i++) |
||
94 | printf (" "); |
||
95 | |||
4015 | Albom | 96 | |
6822 | siemargl | 97 | printf ("%c %c", 8, 8); |
98 | |||
4015 | Albom | 99 | |
100 | |||
101 | |||
6822 | siemargl | 102 | printf("%c", 8); |
103 | |||
4015 | Albom | 104 | |
6822 | siemargl | 105 | cmdLen--; |
106 | } |
||
1665 | Nasarus | 107 | break; |
108 | |||
109 | |||
4015 | Albom | 110 | |
1665 | Nasarus | 111 | break; |
112 | |||
4516 | Albom | 113 | |
114 | |||
115 | clipNum = kol_clip_num(); |
||
116 | if (clipNum > 0) |
||
117 | { |
||
118 | clipBuf = kol_clip_get(clipNum-1); |
||
119 | // printf("Length: %d, Type: %d, Encoding: %d\n", (int) *clipBuf, (int)*(clipBuf+4), (int)*(clipBuf+8)); |
||
120 | if ( (int) *clipBuf > 0 ) // is clipboard empty? |
||
121 | { |
||
122 | if ((int)*(clipBuf+4)==0) // text? |
||
123 | { |
||
124 | if ((int)*(clipBuf+8)==1) // 866 encoding? |
||
125 | { |
||
6822 | siemargl | 126 | // clear previous text |
7787 | rgimad | 127 | for (i = cmdPos; i < cmdLen; i++) |
128 | printf(" "); |
||
129 | for (i = cmdLen; i > 0; i--) |
||
130 | printf("%c %c", 8, 8); |
||
131 | |||
1665 | Nasarus | 132 | |
7787 | rgimad | 133 | int pasteLen = strlen(pasteText); |
134 | insert_string(CMD, cmdPos, pasteText); |
||
135 | cmdLen = strlen(CMD); |
||
136 | cmdPos += pasteLen; |
||
137 | printf("%s", CMD); |
||
138 | for (i = 0; i < cmdLen-cmdPos; i++) printf("%c", 8); // rewind the internal console cursor |
||
139 | } |
||
4516 | Albom | 140 | } |
6822 | siemargl | 141 | } |
4516 | Albom | 142 | } |
143 | break; |
||
144 | |||
145 | |||
146 | |||
147 | if ( cmdLen > 0 ) |
||
148 | { |
||
149 | |||
150 | |||
151 | *(clipCopy+4)=0; |
||
152 | *(clipCopy+8)=1; |
||
153 | |||
154 | |||
155 | *(clipCopy+12+i) = CMD[i]; |
||
156 | |||
157 | |||
158 | |||
159 | |||
160 | break; |
||
6822 | siemargl | 161 | |
4516 | Albom | 162 | |
163 | |||
1665 | Nasarus | 164 | if (cmdLen < 255) |
4015 | Albom | 165 | { |
1665 | Nasarus | 166 | if ( kol_key_control() & 0x40 ) // ¥á«¨ ¢ª«îçñ CapsLock |
3247 | Albom | 167 | if ( (kol_key_control() & 1) || (kol_key_control() & 2)) // ¥á«¨ ¦ âë è¨äâë |
4015 | Albom | 168 | key = tolower(key); |
2174 | Albom | 169 | else |
170 | key = toupper(key); |
||
171 | |||
172 | |||
4516 | Albom | 173 | CMD[i] = CMD[i-1]; |
174 | |||
4015 | Albom | 175 | |
176 | |||
177 | |||
4516 | Albom | 178 | printf("%c %c", 8, 8); |
179 | |||
4015 | Albom | 180 | |
181 | |||
182 | |||
4516 | Albom | 183 | printf("%c", 8); |
184 | |||
4015 | Albom | 185 | |
186 | cmdLen++; |
||
4516 | Albom | 187 | } |
1665 | Nasarus | 188 | break; |
6822 | siemargl | 189 | |
1665 | Nasarus | 190 | |
4516 | Albom | 191 | } |
192 | else |
||
6822 | siemargl | 193 | { |
194 | key = (key>>8)&0xff; |
||
195 | switch (key) |
||
196 | { |
||
4516 | Albom | 197 | case 83: // Del |
6822 | siemargl | 198 | if (cmdPos < cmdLen) |
199 | { |
||
200 | for (i = cmdPos; i < cmdLen; i++) |
||
201 | CMD[i] = CMD[i+1]; |
||
202 | |||
1665 | Nasarus | 203 | |
6822 | siemargl | 204 | printf(" "); |
205 | |||
4015 | Albom | 206 | |
6822 | siemargl | 207 | printf("%c", 8); |
208 | |||
4015 | Albom | 209 | |
6822 | siemargl | 210 | printf("%c", CMD[i]); |
211 | |||
4015 | Albom | 212 | |
6822 | siemargl | 213 | printf("%c", 8); |
214 | |||
4015 | Albom | 215 | |
6822 | siemargl | 216 | } |
217 | break; |
||
218 | |||
4015 | Albom | 219 | |
7787 | rgimad | 220 | |
221 | // move internal cursor and cmdPos to the beginning of the line |
||
222 | for (;cmdPos > 0; cmdPos--) {printf("%c", 8);} |
||
223 | break; |
||
224 | |||
225 | |||
226 | // move internal cursor and cmdPos to the end of the line |
||
227 | for (;cmdPos < cmdLen; cmdPos++) {printf("%c", CMD[cmdPos]);} |
||
228 | break; |
||
229 | |||
230 | |||
6822 | siemargl | 231 | if (cmdPos > 0) |
232 | { |
||
233 | printf("%c", 8); |
||
234 | cmdPos--; |
||
235 | } |
||
236 | break; |
||
237 | |||
4015 | Albom | 238 | |
239 | |||
6822 | siemargl | 240 | if (cmdPos < cmdLen) |
241 | { |
||
242 | printf("%c", CMD[cmdPos]); |
||
243 | cmdPos++; |
||
244 | } |
||
245 | break; |
||
246 | |||
4015 | Albom | 247 | |
248 | |||
6822 | siemargl | 249 | if (CMD_HISTORY_NUM_REAL > 0 && CMD_NUM >= -1) |
250 | { |
||
1665 | Nasarus | 251 | |
252 | |||
4050 | Albom | 253 | printf(" "); |
254 | |||
4015 | Albom | 255 | |
4050 | Albom | 256 | printf("%c %c", 8, 8); |
257 | |||
4015 | Albom | 258 | |
6822 | siemargl | 259 | CMD_NUM++; |
260 | /* else |
||
261 | CMD_NUM = 0; |
||
1665 | Nasarus | 262 | */ |
6822 | siemargl | 263 | printf("%s", CMD_HISTORY[CMD_NUM]); |
264 | strcpy(CMD, CMD_HISTORY[CMD_NUM]); |
||
1665 | Nasarus | 265 | cmdLen = strlen(CMD); |
4050 | Albom | 266 | cmdPos = strlen(CMD); |
267 | |||
4015 | Albom | 268 | |
1665 | Nasarus | 269 | |
4050 | Albom | 270 | |
1665 | Nasarus | 271 | |
272 | |||
4015 | Albom | 273 | |
6822 | siemargl | 274 | if (CMD_HISTORY_NUM_REAL > 0 && CMD_NUM >= 0) |
275 | { |
||
1665 | Nasarus | 276 | |
277 | |||
4050 | Albom | 278 | printf(" "); |
279 | |||
4015 | Albom | 280 | |
4050 | Albom | 281 | printf("%c %c", 8, 8); |
282 | |||
4015 | Albom | 283 | |
6822 | siemargl | 284 | CMD_NUM--; |
285 | /* else |
||
286 | CMD_NUM = CMD_HISTORY_NUM_REAL-1; |
||
4050 | Albom | 287 | */ |
6822 | siemargl | 288 | printf("%s", CMD_HISTORY[CMD_NUM]); |
289 | strcpy(CMD, CMD_HISTORY[CMD_NUM]); |
||
1665 | Nasarus | 290 | cmdLen = strlen(CMD); |
4050 | Albom | 291 | cmdPos = strlen(CMD); |
292 | |||
293 | |||
1665 | Nasarus | 294 | break; |
295 | |||
296 | |||
4015 | Albom | 297 | |
1665 | Nasarus | 298 | cmd_exit(NULL); |
299 | |||
300 | |||
6822 | siemargl | 301 | |
1665 | Nasarus | 302 | |
6822 | siemargl | 303 | } |
304 | |||
1665 | Nasarus | 305 | |
4015 | Albom | 306 | |
1665 | Nasarus | 307 | |
308 | |||
309 | |||
310 | { |
||
311 | unsigned i, len; |
||
3245 | Albom | 312 | int quote = 0; |
313 | |||
314 | |||
315 | quote = 1; |
||
316 | |||
317 | |||
318 | { |
||
6822 | siemargl | 319 | for (i=0;;i++) |
320 | { |
||
1665 | Nasarus | 321 | cmd[i] = CMD[i]; |
6822 | siemargl | 322 | if (0 == cmd[i]) |
323 | return i; |
||
324 | if ( iswhite(cmd[i]) ) |
||
325 | { |
||
326 | cmd[i] = '\0'; |
||
327 | break; |
||
328 | } |
||
329 | } |
||
3245 | Albom | 330 | return i+1; |
6822 | siemargl | 331 | } |
3245 | Albom | 332 | else |
6822 | siemargl | 333 | { |
334 | len = 0; |
||
335 | for (i=1;;i++) |
||
336 | { |
||
3245 | Albom | 337 | cmd[len] = CMD[i]; |
6822 | siemargl | 338 | if (0 == cmd[len]) |
339 | { |
||
340 | i--; |
||
341 | break; |
||
342 | } |
||
343 | if ( cmd[len] == '"' ) |
||
344 | { |
||
345 | cmd[len] = '\0'; |
||
346 | break; |
||
347 | } |
||
348 | len++; |
||
349 | } |
||
1665 | Nasarus | 350 | trim(cmd); |
6822 | siemargl | 351 | return i+1; |
352 | } |
||
1665 | Nasarus | 353 | } |
354 | |||
355 | |||
356 | |||
357 | |||
3247 | Albom | 358 | |
1665 | Nasarus | 359 | |
360 | |||
361 | |||
362 | { |
||
363 | char cmd[256]; |
||
364 | char args[256]; |
||
365 | unsigned arg; |
||
366 | int i; |
||
367 | int result; |
||
3247 | Albom | 368 | |
1665 | Nasarus | 369 | |
370 | arg = command_get_cmd(cmd); |
||
371 | |||
372 | |||
373 | return; |
||
374 | |||
375 | |||
376 | trim(args); |
||
377 | |||
378 | |||
379 | { |
||
380 | if (!strcmp(cmd, COMMANDS[i].name)) |
||
381 | { |
||
382 | result = ((handler1_t)COMMANDS[i].handler)(args); |
||
3247 | Albom | 383 | if (result == FALSE) |
6857 | siemargl | 384 | { |
6822 | siemargl | 385 | #if LANG_ENG |
386 | printf(" Error!\n\r"); |
||
387 | #elif LANG_RUS |
||
388 | printf(" Žè¨¡ª !\n\r"); |
||
389 | #endif |
||
390 | } |
||
391 | return; |
||
1665 | Nasarus | 392 | } |
393 | } |
||
394 | |||
395 | |||
396 | |||
397 | { |
||
398 | strcpy(CMD, ALIASES+64*1024+256*alias_search(CMD)); |
||
399 | command_execute(); |
||
400 | return; |
||
401 | } |
||
402 | |||
403 | |||
404 | |||
405 | |||
406 | |||
407 | |||
408 |