forked from KolibriOS/kolibrios
better up/dwn arrows, docu
git-svn-id: svn://kolibrios.org@6822 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -6,9 +6,11 @@ void command_history_add()
|
||||
|
||||
int i;
|
||||
|
||||
if ('\0' == CMD[0]) return;
|
||||
|
||||
for (i = 0; i < CMD_HISTORY_NUM_REAL; i++)
|
||||
if ( 0 == strcmp( CMD_HISTORY[i], CMD ) )
|
||||
return;
|
||||
if ( 0 == strcmp( CMD_HISTORY[i], CMD ) )
|
||||
return;
|
||||
|
||||
for (i = CMD_HISTORY_NUM_REAL; i > 0 ; i--)
|
||||
strcpy(CMD_HISTORY[i], CMD_HISTORY[i-1]);
|
||||
@@ -18,7 +20,7 @@ strcpy(CMD_HISTORY[0], CMD);
|
||||
if (CMD_HISTORY_NUM_REAL < CMD_HISTORY_NUM-1)
|
||||
CMD_HISTORY_NUM_REAL++;
|
||||
|
||||
CMD_NUM = 0;
|
||||
CMD_NUM = -1;
|
||||
|
||||
}
|
||||
|
||||
@@ -48,41 +50,38 @@ for (;;)
|
||||
switch (key)
|
||||
{
|
||||
case 27: // ESC
|
||||
for (i = cmdPos; i < cmdLen; i++)
|
||||
printf(" ");
|
||||
for (i = cmdLen; i > 0; i--)
|
||||
printf("%c %c", 8, 8);
|
||||
cmdLen = 0;
|
||||
cmdPos = 0;
|
||||
CMD[0] = '\0';
|
||||
for (i = cmdPos; i < cmdLen; i++)
|
||||
printf(" ");
|
||||
for (i = cmdLen; i > 0; i--)
|
||||
printf("%c %c", 8, 8);
|
||||
cmdLen = 0;
|
||||
cmdPos = 0;
|
||||
CMD[0] = '\0';
|
||||
break;
|
||||
|
||||
|
||||
case 13: // ENTER
|
||||
printf("\n\r");
|
||||
command_history_add();
|
||||
return;
|
||||
|
||||
|
||||
case 8: // BACKSPACE
|
||||
if (cmdPos > 0)
|
||||
{
|
||||
for (i = cmdPos-1; i < cmdLen; i++)
|
||||
CMD[i] = CMD[i+1];
|
||||
for (i = cmdPos-1; i < cmdLen; i++)
|
||||
CMD[i] = CMD[i+1];
|
||||
for (i = 0; i < cmdLen-cmdPos; i++)
|
||||
printf (" ");
|
||||
|
||||
for (i = 0; i < cmdLen-cmdPos; i++)
|
||||
printf (" ");
|
||||
|
||||
for (i = 0; i < cmdLen; i++)
|
||||
printf ("%c %c", 8, 8);
|
||||
for (i = 0; i < cmdLen; i++)
|
||||
printf ("%c %c", 8, 8);
|
||||
|
||||
printf("%s", CMD);
|
||||
|
||||
for (i = 0; i < cmdLen-cmdPos; i++)
|
||||
printf("%c", 8);
|
||||
for (i = 0; i < cmdLen-cmdPos; i++)
|
||||
printf("%c", 8);
|
||||
|
||||
cmdPos--;
|
||||
cmdLen--;
|
||||
cmdPos--;
|
||||
cmdLen--;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -102,14 +101,14 @@ for (;;)
|
||||
if ((int)*(clipBuf+4)==0) // text?
|
||||
{
|
||||
if ((int)*(clipBuf+8)==1) // 866 encoding?
|
||||
|
||||
for (i = cmdPos; i < cmdLen; i++)
|
||||
printf(" ");
|
||||
for (i = cmdLen; i > 0; i--)
|
||||
printf("%c %c", 8, 8);
|
||||
cmdLen = 0;
|
||||
cmdPos = 0;
|
||||
CMD[0] = '\0';
|
||||
{
|
||||
for (i = cmdPos; i < cmdLen; i++)
|
||||
printf(" ");
|
||||
for (i = cmdLen; i > 0; i--)
|
||||
printf("%c %c", 8, 8);
|
||||
cmdLen = 0;
|
||||
cmdPos = 0;
|
||||
CMD[0] = '\0';
|
||||
|
||||
// strcpy_n
|
||||
for (i = 0; i < 255; i++)
|
||||
@@ -128,6 +127,7 @@ for (;;)
|
||||
printf("%s", CMD);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -147,7 +147,7 @@ for (;;)
|
||||
kol_clip_set(12+cmdLen, clipCopy);
|
||||
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
@@ -175,59 +175,57 @@ for (;;)
|
||||
cmdPos++;
|
||||
cmdLen++;
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
key = (key>>8)&0xff;
|
||||
switch (key)
|
||||
{
|
||||
key = (key>>8)&0xff;
|
||||
switch (key)
|
||||
{
|
||||
case 83: // Del
|
||||
if (cmdPos < cmdLen)
|
||||
{
|
||||
for (i = cmdPos; i < cmdLen; i++)
|
||||
CMD[i] = CMD[i+1];
|
||||
case 83: // Del
|
||||
if (cmdPos < cmdLen)
|
||||
{
|
||||
for (i = cmdPos; i < cmdLen; i++)
|
||||
CMD[i] = CMD[i+1];
|
||||
|
||||
for (i = 0; i < cmdLen-cmdPos; i++)
|
||||
printf(" ");
|
||||
for (i = 0; i < cmdLen-cmdPos; i++)
|
||||
printf(" ");
|
||||
|
||||
for (i = 0; i < cmdLen-cmdPos; i++)
|
||||
printf("%c", 8);
|
||||
for (i = 0; i < cmdLen-cmdPos; i++)
|
||||
printf("%c", 8);
|
||||
|
||||
for (i = cmdPos; i < cmdLen; i++)
|
||||
printf("%c", CMD[i]);
|
||||
for (i = cmdPos; i < cmdLen; i++)
|
||||
printf("%c", CMD[i]);
|
||||
|
||||
for (i = 0; i < cmdLen-cmdPos; i++)
|
||||
printf("%c", 8);
|
||||
for (i = 0; i < cmdLen-cmdPos; i++)
|
||||
printf("%c", 8);
|
||||
|
||||
cmdLen--;
|
||||
}
|
||||
cmdLen--;
|
||||
}
|
||||
break;
|
||||
|
||||
break;
|
||||
|
||||
case 75: // Left
|
||||
if (cmdPos > 0)
|
||||
{
|
||||
printf("%c", 8);
|
||||
cmdPos--;
|
||||
}
|
||||
break;
|
||||
case 75: // Left
|
||||
if (cmdPos > 0)
|
||||
{
|
||||
printf("%c", 8);
|
||||
cmdPos--;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 77: // Right
|
||||
if (cmdPos < cmdLen)
|
||||
{
|
||||
printf("%c", CMD[cmdPos]);
|
||||
cmdPos++;
|
||||
}
|
||||
break;
|
||||
case 77: // Right
|
||||
if (cmdPos < cmdLen)
|
||||
{
|
||||
printf("%c", CMD[cmdPos]);
|
||||
cmdPos++;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 80: // Down
|
||||
|
||||
if (CMD_HISTORY_NUM_REAL > 0)
|
||||
case 72: // Up
|
||||
if (CMD_HISTORY_NUM_REAL > 0 && CMD_NUM >= -1)
|
||||
{
|
||||
|
||||
for (i = cmdPos; i < cmdLen; i++)
|
||||
@@ -236,12 +234,12 @@ for (;;)
|
||||
for (i = cmdLen; i > 0; i--)
|
||||
printf("%c %c", 8, 8);
|
||||
|
||||
if (CMD_NUM < CMD_HISTORY_NUM_REAL-1)
|
||||
CMD_NUM++;
|
||||
else
|
||||
if (CMD_NUM < CMD_HISTORY_NUM_REAL-1)
|
||||
CMD_NUM++;
|
||||
/* else
|
||||
CMD_NUM = 0;
|
||||
|
||||
printf( "%s", CMD_HISTORY[CMD_NUM] );
|
||||
*/
|
||||
printf("%s", CMD_HISTORY[CMD_NUM]);
|
||||
strcpy(CMD, CMD_HISTORY[CMD_NUM]);
|
||||
cmdLen = strlen(CMD);
|
||||
cmdPos = strlen(CMD);
|
||||
@@ -251,8 +249,8 @@ for (;;)
|
||||
break;
|
||||
|
||||
|
||||
case 72: // Up
|
||||
if (CMD_HISTORY_NUM_REAL > 0)
|
||||
case 80: // Down
|
||||
if (CMD_HISTORY_NUM_REAL > 0 && CMD_NUM >= 0)
|
||||
{
|
||||
|
||||
for (i = cmdPos; i < cmdLen; i++)
|
||||
@@ -261,12 +259,12 @@ for (;;)
|
||||
for (i = cmdLen; i > 0; i--)
|
||||
printf("%c %c", 8, 8);
|
||||
|
||||
if (CMD_NUM > 0)
|
||||
CMD_NUM--;
|
||||
else
|
||||
if (CMD_NUM > 0)
|
||||
CMD_NUM--;
|
||||
/* else
|
||||
CMD_NUM = CMD_HISTORY_NUM_REAL-1;
|
||||
|
||||
printf( "%s", CMD_HISTORY[CMD_NUM] );
|
||||
*/
|
||||
printf("%s", CMD_HISTORY[CMD_NUM]);
|
||||
strcpy(CMD, CMD_HISTORY[CMD_NUM]);
|
||||
cmdLen = strlen(CMD);
|
||||
cmdPos = strlen(CMD);
|
||||
@@ -278,10 +276,10 @@ for (;;)
|
||||
case 0: // console window closed
|
||||
cmd_exit(NULL);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -296,41 +294,41 @@ if (CMD[0]=='"')
|
||||
quote = 1;
|
||||
|
||||
if (quote == 0)
|
||||
{
|
||||
for (i=0;;i++)
|
||||
{
|
||||
cmd[i] = CMD[i];
|
||||
if (0 == cmd[i])
|
||||
return i;
|
||||
if ( iswhite(cmd[i]) )
|
||||
{
|
||||
for (i=0;;i++)
|
||||
{
|
||||
cmd[i] = '\0';
|
||||
break;
|
||||
cmd[i] = CMD[i];
|
||||
if (0 == cmd[i])
|
||||
return i;
|
||||
if ( iswhite(cmd[i]) )
|
||||
{
|
||||
cmd[i] = '\0';
|
||||
break;
|
||||
}
|
||||
}
|
||||
return i+1;
|
||||
}
|
||||
return i+1;
|
||||
}
|
||||
else
|
||||
{
|
||||
len = 0;
|
||||
for (i=1;;i++)
|
||||
{
|
||||
cmd[len] = CMD[i];
|
||||
if (0 == cmd[len])
|
||||
else
|
||||
{
|
||||
len = 0;
|
||||
for (i=1;;i++)
|
||||
{
|
||||
i--;
|
||||
break;
|
||||
cmd[len] = CMD[i];
|
||||
if (0 == cmd[len])
|
||||
{
|
||||
i--;
|
||||
break;
|
||||
}
|
||||
if ( cmd[len] == '"' )
|
||||
{
|
||||
cmd[len] = '\0';
|
||||
break;
|
||||
}
|
||||
len++;
|
||||
}
|
||||
if ( cmd[len] == '"' )
|
||||
{
|
||||
cmd[len] = '\0';
|
||||
break;
|
||||
}
|
||||
len++;
|
||||
trim(cmd);
|
||||
return i+1;
|
||||
}
|
||||
trim(cmd);
|
||||
return i+1;
|
||||
}
|
||||
}
|
||||
|
||||
/// ===========================================================
|
||||
@@ -361,14 +359,14 @@ for (i = 0; i < NUM_OF_CMD; i++)
|
||||
if (!strcmp(cmd, COMMANDS[i].name))
|
||||
{
|
||||
result = ((handler1_t)COMMANDS[i].handler)(args);
|
||||
if (result != TRUE)
|
||||
{
|
||||
#if LANG_ENG
|
||||
printf(" Error!\n\r");
|
||||
#elif LANG_RUS
|
||||
printf(" <20>訡<EFBFBD><E8A8A1>!\n\r");
|
||||
#endif
|
||||
}
|
||||
if (result != TRUE)
|
||||
{
|
||||
#if LANG_ENG
|
||||
printf(" Error!\n\r");
|
||||
#elif LANG_RUS
|
||||
printf(" <20>訡<EFBFBD><E8A8A1>!\n\r");
|
||||
#endif
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user