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