Subversion Repositories Kolibri OS

Rev

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