Modified: trunk/reactos/subsys/system/cmd/bugs.txt
Modified: trunk/reactos/subsys/system/cmd/cmd.c
Modified: trunk/reactos/subsys/system/cmd/cmd.h
Modified: trunk/reactos/subsys/system/cmd/cmdinput.c
--- trunk/reactos/subsys/system/cmd/bugs.txt 2005-09-04 11:17:37 UTC (rev 17630)
+++ trunk/reactos/subsys/system/cmd/bugs.txt 2005-09-04 11:18:39 UTC (rev 17631)
@@ -11,5 +11,12 @@
o "alias v = dir" doesn't work because of the spaces.
+o Dymatic commandline buffer need to be implement, current set to 8192bytes
+o Batchfile read row size need to be implement as dymatic not set to 2000bytes
+
+
+
+
+
**** Please report bugs to ekohl@rz-online.de! ****
--- trunk/reactos/subsys/system/cmd/cmd.c 2005-09-04 11:17:37 UTC (rev 17630)
+++ trunk/reactos/subsys/system/cmd/cmd.c 2005-09-04 11:18:39 UTC (rev 17631)
@@ -1037,13 +1037,14 @@
ProcessInput (BOOL bFlag)
{
TCHAR commandline[CMDLINE_LENGTH];
- TCHAR readline[CMDLINE_LENGTH];
+ TCHAR *readline = NULL;
LPTSTR tp = NULL;
LPTSTR ip;
LPTSTR cp;
BOOL bEchoThisLine;
+
+ readline = malloc(CMDLINE_LENGTH * sizeof(TCHAR));
-
do
{
/* if no batch input then... */
@@ -1052,7 +1053,7 @@
if (bFlag)
return 0;
- ReadCommand (readline, CMDLINE_LENGTH);
+ readline = ReadCommand (readline, CMDLINE_LENGTH);
ip = readline;
bEchoThisLine = FALSE;
}
--- trunk/reactos/subsys/system/cmd/cmd.h 2005-09-04 11:17:37 UTC (rev 17630)
+++ trunk/reactos/subsys/system/cmd/cmd.h 2005-09-04 11:18:39 UTC (rev 17631)
@@ -106,7 +106,7 @@
/* Prototypes for CMDINPUT.C */
-VOID ReadCommand (LPTSTR, INT);
+TCHAR * ReadCommand (LPTSTR, INT);
/* Prototypes for CMDTABLE.C */
--- trunk/reactos/subsys/system/cmd/cmdinput.c 2005-09-04 11:17:37 UTC (rev 17630)
+++ trunk/reactos/subsys/system/cmd/cmdinput.c 2005-09-04 11:18:39 UTC (rev 17631)
@@ -124,7 +124,7 @@
/* read in a command line */
-VOID ReadCommand (LPTSTR str, INT maxlen)
+TCHAR * ReadCommand (LPTSTR str, INT maxlen)
{
SHORT orgx; /* origin x/y */
SHORT orgy;
@@ -508,10 +508,15 @@
default:
#ifdef _UNICODE
ch = ir.Event.KeyEvent.uChar.UnicodeChar;
- if ((ch >= 32 && ch <= 255) && (charcount != (maxlen - 2)))
+ charcount ++;
+ str = realloc(str, charcount);
+
+ if ((ch >= 32 && ch <= 255))
#else
- ch = ir.Event.KeyEvent.uChar.AsciiChar;
- if ((UCHAR)ch >= 32 && (charcount != (maxlen - 2)))
+ ch = ir.Event.KeyEvent.uChar.AsciiChar;
+ str = realloc(str, 2 + current * sizeof(TCHAR));
+
+ if ((UCHAR)ch >= 32 )
#endif /* _UNICODE */
{
/* insert character into string... */
@@ -520,6 +525,8 @@
/* If this character insertion will cause screen scrolling,
* adjust the saved origin of the command prompt. */
tempscreen = _tcslen(str + current) + curx;
+ str = realloc(str, tempscreen * sizeof(TCHAR));
+
if ((tempscreen % maxx) == (maxx - 1) &&
(tempscreen / maxx) + cury == (maxy - 1))
{
@@ -527,6 +534,8 @@
cury--;
}
+
+
for (count = charcount; count > current; count--)
str[count] = str[count - 1];
str[current++] = ch;
@@ -570,4 +579,6 @@
while (ir.Event.KeyEvent.wVirtualKeyCode != VK_RETURN);
SetCursorType (bInsert, TRUE);
+
+ return str;
}