Subversion Repositories Kolibri OS

Rev

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