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