Author: khornicek
Date: Fri Feb 17 12:31:32 2012
New Revision: 55670

URL: http://svn.reactos.org/svn/reactos?rev=55670&view=rev
Log:
[ROSAUTOTEST]
If the last chunk of the string sent to StringOut isn't a whole line and 
forcePrint is set to false, send back what's left after processing. The caller 
is then responsible for prepending that string next time it calls StringOut. 
Should fix the rest of debug log corruptions.

Modified:
    trunk/rostests/rosautotest/CJournaledTestList.cpp
    trunk/rostests/rosautotest/CWebService.cpp
    trunk/rostests/rosautotest/CWineTest.cpp
    trunk/rostests/rosautotest/main.cpp
    trunk/rostests/rosautotest/precomp.h
    trunk/rostests/rosautotest/shutdown.cpp
    trunk/rostests/rosautotest/tools.cpp

Modified: trunk/rostests/rosautotest/CJournaledTestList.cpp
URL: 
http://svn.reactos.org/svn/reactos/trunk/rostests/rosautotest/CJournaledTestList.cpp?rev=55670&r1=55669&r2=55670&view=diff
==============================================================================
--- trunk/rostests/rosautotest/CJournaledTestList.cpp [iso-8859-1] (original)
+++ trunk/rostests/rosautotest/CJournaledTestList.cpp [iso-8859-1] Fri Feb 17 
12:31:32 2012
@@ -144,7 +144,7 @@
     CTestInfo* TestInfo;
     DWORD BytesWritten;
 
-    StringOut("Writing initial journal file...\n\n");
+    StringOut("Writing initial journal file...\n\n", TRUE);
 
     m_ListIterator = 0;
 
@@ -189,7 +189,7 @@
     DWORD BytesRead;
     DWORD RemainingSize;
 
-    StringOut("Loading journal file...\n\n");
+    StringOut("Loading journal file...\n\n", TRUE);
 
     OpenJournal(GENERIC_READ);
     RemainingSize = GetFileSize(m_hJournal, NULL);

Modified: trunk/rostests/rosautotest/CWebService.cpp
URL: 
http://svn.reactos.org/svn/reactos/trunk/rostests/rosautotest/CWebService.cpp?rev=55670&r1=55669&r2=55670&view=diff
==============================================================================
--- trunk/rostests/rosautotest/CWebService.cpp [iso-8859-1] (original)
+++ trunk/rostests/rosautotest/CWebService.cpp [iso-8859-1] Fri Feb 17 12:31:32 
2012
@@ -207,7 +207,7 @@
     Response.reset(DoRequest(Data));
 
     ss << "The server responded:" << endl << Response << endl;
-    StringOut(ss.str());
+    StringOut(ss.str(), TRUE);
 
     if(strcmp(Response, "OK"))
         EXCEPTION("Aborted!\n");

Modified: trunk/rostests/rosautotest/CWineTest.cpp
URL: 
http://svn.reactos.org/svn/reactos/trunk/rostests/rosautotest/CWineTest.cpp?rev=55670&r1=55669&r2=55670&view=diff
==============================================================================
--- trunk/rostests/rosautotest/CWineTest.cpp [iso-8859-1] (original)
+++ trunk/rostests/rosautotest/CWineTest.cpp [iso-8859-1] Fri Feb 17 12:31:32 
2012
@@ -266,9 +266,10 @@
     stringstream ss, ssFinish;
     DWORD StartTime = GetTickCount();
     float TotalTime;
+    string tailString;
 
     ss << "Running Wine Test, Module: " << TestInfo->Module << ", Test: " << 
TestInfo->Test << endl;
-    StringOut(ss.str());
+    StringOut(ss.str(), TRUE);
 
     StartTime = GetTickCount();
 
@@ -299,9 +300,9 @@
                 if(!ReadFile(m_hReadPipe, Buffer, BytesAvailable, &Temp, NULL))
                     FATAL("ReadFile failed for the test run\n");
 
-                /* Output all test output through StringOut, even while the 
test is still running */
+                /* Output text through StringOut, even while the test is still 
running */
                 Buffer[BytesAvailable] = 0;
-                StringOut(string(Buffer));
+                tailString = StringOut(tailString.append(string(Buffer)), 
FALSE);
 
                 if(Configuration.DoSubmit())
                     TestInfo->Log += Buffer;
@@ -310,10 +311,14 @@
         while(!BreakLoop);
     }
 
+    /* Print what's left */
+    if(!tailString.empty())
+        StringOut(tailString, TRUE);
+
     TotalTime = ((float)GetTickCount() - StartTime)/1000;
     ssFinish << "Test " << TestInfo->Test << " completed in ";
     ssFinish << setprecision(2) << fixed << TotalTime << " seconds." << endl;
-    StringOut(ssFinish.str());
+    StringOut(ssFinish.str(), TRUE);
 }
 
 /**
@@ -370,6 +375,6 @@
         if(Configuration.DoSubmit() && !TestInfo->Log.empty())
             WebService->Submit("wine", TestInfo);
 
-        StringOut("\n\n");
-    }
-}
+        StringOut("\n\n", TRUE);
+    }
+}

Modified: trunk/rostests/rosautotest/main.cpp
URL: 
http://svn.reactos.org/svn/reactos/trunk/rostests/rosautotest/main.cpp?rev=55670&r1=55669&r2=55670&view=diff
==============================================================================
--- trunk/rostests/rosautotest/main.cpp [iso-8859-1] (original)
+++ trunk/rostests/rosautotest/main.cpp [iso-8859-1] Fri Feb 17 12:31:32 2012
@@ -60,7 +60,7 @@
 
         ss << "\n\nSystem uptime " << setprecision(2) << fixed ;
         ss << ((float)GetTickCount()/1000) << " seconds\n";
-        StringOut(ss.str());
+        StringOut(ss.str(), TRUE);
 
         /* Run the tests */
         WineTest.Run();
@@ -76,7 +76,7 @@
     }
     catch(CSimpleException& e)
     {
-        StringOut(e.GetMessage());
+        StringOut(e.GetMessage(), TRUE);
     }
     catch(CFatalException& e)
     {
@@ -87,7 +87,7 @@
            << "File: " << e.GetFile() << endl
            << "Line: " << e.GetLine() << endl
            << "Last Win32 Error: " << GetLastError() << endl;
-        StringOut(ss.str());
+        StringOut(ss.str(), TRUE);
     }
 
     /* For sysreg2 to notice if rosautotest itself failed */

Modified: trunk/rostests/rosautotest/precomp.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/rostests/rosautotest/precomp.h?rev=55670&r1=55669&r2=55670&view=diff
==============================================================================
--- trunk/rostests/rosautotest/precomp.h [iso-8859-1] (original)
+++ trunk/rostests/rosautotest/precomp.h [iso-8859-1] Fri Feb 17 12:31:32 2012
@@ -51,7 +51,7 @@
 string EscapeString(const string& Input);
 string GetINIValue(PCWCH AppName, PCWCH KeyName, PCWCH FileName);
 bool IsNumber(const char* Input);
-void StringOut(const string& String);
+string StringOut(const string& String, const BOOL forcePrint);
 string UnicodeToAscii(PCWSTR UnicodeString);
 string UnicodeToAscii(const wstring& UnicodeString);
 

Modified: trunk/rostests/rosautotest/shutdown.cpp
URL: 
http://svn.reactos.org/svn/reactos/trunk/rostests/rosautotest/shutdown.cpp?rev=55670&r1=55669&r2=55670&view=diff
==============================================================================
--- trunk/rostests/rosautotest/shutdown.cpp [iso-8859-1] (original)
+++ trunk/rostests/rosautotest/shutdown.cpp [iso-8859-1] Fri Feb 17 12:31:32 
2012
@@ -20,14 +20,14 @@
 
     if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, 
&hToken))
     {
-        StringOut("OpenProcessToken failed\n");
+        StringOut("OpenProcessToken failed\n", TRUE);
         return false;
     }
 
     /* Get the LUID for the Shutdown privilege */
     if (!LookupPrivilegeValueW(NULL, SE_SHUTDOWN_NAME, 
&Privileges.Privileges[0].Luid))
     {
-        StringOut("LookupPrivilegeValue failed\n");
+        StringOut("LookupPrivilegeValue failed\n", TRUE);
         return false;
     }
 
@@ -37,14 +37,14 @@
 
     if (!AdjustTokenPrivileges(hToken, FALSE, &Privileges, 0, NULL, NULL))
     {
-        StringOut("AdjustTokenPrivileges failed\n");
+        StringOut("AdjustTokenPrivileges failed\n", TRUE);
         return false;
     }
 
     /* Finally shut down the system */
     if(!ExitWindowsEx(EWX_POWEROFF, SHTDN_REASON_MAJOR_OTHER | 
SHTDN_REASON_MINOR_OTHER | SHTDN_REASON_FLAG_PLANNED))
     {
-        StringOut("ExitWindowsEx failed\n");
+        StringOut("ExitWindowsEx failed\n", TRUE);
         return false;
     }
 

Modified: trunk/rostests/rosautotest/tools.cpp
URL: 
http://svn.reactos.org/svn/reactos/trunk/rostests/rosautotest/tools.cpp?rev=55670&r1=55669&r2=55670&view=diff
==============================================================================
--- trunk/rostests/rosautotest/tools.cpp [iso-8859-1] (original)
+++ trunk/rostests/rosautotest/tools.cpp [iso-8859-1] Fri Feb 17 12:31:32 2012
@@ -92,8 +92,8 @@
  * @param String
  * The std::string to output
  */
-void
-StringOut(const string& String)
+string
+StringOut(const string& String, const BOOL forcePrint)
 {
     char DbgString[DBGPRINT_BUFSIZE + 1];
     size_t i, start = 0, last_newline = 0, size = 0, curr_pos = 0;
@@ -122,7 +122,7 @@
             if((curr_pos - start) >= DBGPRINT_BUFSIZE)
             {
                 /* No newlines so far, or the string just fits */
-                if(last_newline <= start || (curr_pos - start) == 
DBGPRINT_BUFSIZE)
+                if(last_newline <= start || ((curr_pos - start == 
DBGPRINT_BUFSIZE) && NewString[curr_pos - 1] == '\n'))
                 {
                     size = curr_pos - start;
                     memcpy(DbgString, NewString.c_str() + start, size);
@@ -143,14 +143,24 @@
         }
     }
 
-    /* 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;
+
+    size = curr_pos - start;
+
+    /* Only print if forced to or if the rest is a whole line */
+    if(forcePrint == true || NewString[curr_pos - 1] == '\n')
+    {
+        memcpy(DbgString, NewString.c_str() + start, size);
+        DbgString[size] = 0;
+        DbgPrint(DbgString);
+
+        NewString.clear();
+        return NewString;
+    }
+
+    /* Return the remaining chunk */
+    return NewString.substr(start, size);
 }
 
 /**


Reply via email to