better up/dwn arrows, docu

git-svn-id: svn://kolibrios.org@6822 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
siemargl
2017-01-01 22:28:50 +00:00
parent 624f3666a5
commit 0a3c951b56
15 changed files with 181 additions and 148 deletions

View File

@@ -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;
}
}