Subversion Repositories Kolibri OS

Rev

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