Author: khornicek
Date: Wed Feb 15 21:18:13 2012
New Revision: 55618
URL:
http://svn.reactos.org/svn/reactos?rev=55618&view=rev
Log:
[ROSAUTOTEST]
Try to print whole lines so the output from tests doesn't get mixed with debug output
from other reactos components.
Modified:
trunk/rostests/rosautotest/tools.cpp
Modified: trunk/rostests/rosautotest/tools.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/rosautotest/tools.cpp?rev…
==============================================================================
--- trunk/rostests/rosautotest/tools.cpp [iso-8859-1] (original)
+++ trunk/rostests/rosautotest/tools.cpp [iso-8859-1] Wed Feb 15 21:18:13 2012
@@ -96,7 +96,7 @@
StringOut(const string& String)
{
char DbgString[DBGPRINT_BUFSIZE + 1];
- size_t i;
+ size_t i, start = 0, last_newline = 0, size = 0, curr_pos = 0;
string NewString;
/* Unify the line endings (the piped output of the tests may use CRLF) */
@@ -113,26 +113,44 @@
/* Otherwise copy the string */
NewString += String[i];
}
- }
-
- /* Output the string.
- For DbgPrint, this must be done in chunks of 512 bytes. */
+
+ curr_pos = NewString.size();
+
+ /* Try to print whole lines but obey the 512 bytes chunk size limit*/
+ if(NewString[curr_pos - 1] == '\n' || (curr_pos - start) ==
DBGPRINT_BUFSIZE)
+ {
+ if((curr_pos - start) > DBGPRINT_BUFSIZE || NewString[curr_pos - 1] !=
'\n')
+ {
+ /* No newlines, print what we have and start over*/
+ if(NewString[curr_pos - 1] != '\n')
+ {
+ size = curr_pos - start;
+ memcpy(DbgString, NewString.c_str() + start, size);
+ start = curr_pos;
+ }
+ else
+ {
+ size = last_newline - start;
+ memcpy(DbgString, NewString.c_str() + start, size);
+ start = last_newline;
+ }
+
+ DbgString[size] = 0;
+ DbgPrint(DbgString);
+ }
+
+ last_newline = curr_pos;
+ }
+ }
+
+ /* The rest of the string is <= DBGPRINT_BUFSIZE so just print it*/
+ size = curr_pos - start;
+ memcpy(DbgString, NewString.c_str() + start, size);
+ DbgString[size] = 0;
+ DbgPrint(DbgString);
+
+ /* Output the string */
cout << NewString;
-
- for(i = 0; i < NewString.size(); i += DBGPRINT_BUFSIZE)
- {
- size_t BytesToCopy;
-
- if(NewString.size() - i > DBGPRINT_BUFSIZE)
- BytesToCopy = DBGPRINT_BUFSIZE;
- else
- BytesToCopy = NewString.size() - i;
-
- memcpy(DbgString, NewString.c_str() + i, BytesToCopy);
- DbgString[BytesToCopy] = 0;
-
- DbgPrint(DbgString);
- }
}
/**