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); - } }
/**