Subversion Repositories Kolibri OS

Rev

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