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