remove some hardcode buffer value. The dymatic buffer does not work yet, until all CMDLINE_LENGTH are remove. 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 _____
Modified: trunk/reactos/subsys/system/cmd/bugs.txt --- 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! **** _____
Modified: trunk/reactos/subsys/system/cmd/cmd.c --- 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; } _____
Modified: trunk/reactos/subsys/system/cmd/cmd.h --- 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 */ _____
Modified: trunk/reactos/subsys/system/cmd/cmdinput.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; }