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