Skip to content

Commit cdfa8be

Browse files
committedOct 24, 2016
Fixed bug where indentation got messed up if not writing a \n at end of every message
1 parent d03242e commit cdfa8be

File tree

4 files changed

+31
-1
lines changed

4 files changed

+31
-1
lines changed
 

‎FILELogSink.cpp

+12
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,12 @@ void FILELogSink::Log(Severity severity, const std::string &msg)
5757
//Wrap/print it
5858
string wrapped = WrapString(msg);
5959
fputs(wrapped.c_str(), m_file);
60+
61+
//See if we printed a \n
62+
if(wrapped.length() && (wrapped[wrapped.length() - 1] == '\n'))
63+
m_lastMessageWasNewline = true;
64+
else if(wrapped != "")
65+
m_lastMessageWasNewline = false;
6066
}
6167

6268
void FILELogSink::Log(Severity severity, const char *format, va_list va)
@@ -67,4 +73,10 @@ void FILELogSink::Log(Severity severity, const char *format, va_list va)
6773
//Wrap/print it
6874
string wrapped = WrapString(vstrprintf(format, va));
6975
fputs(wrapped.c_str(), m_file);
76+
77+
//See if we printed a \n
78+
if(wrapped.length() && (wrapped[wrapped.length() - 1] == '\n'))
79+
m_lastMessageWasNewline = true;
80+
else if(wrapped != "")
81+
m_lastMessageWasNewline = false;
7082
}

‎STDLogSink.cpp

+12
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,12 @@ void STDLogSink::Log(Severity severity, const string &msg)
7979
//Ensure that this message is displayed immediately even if we print lower severity stuff later
8080
if(severity <= Severity::WARNING)
8181
Flush();
82+
83+
//See if we printed a \n
84+
if(wrapped.length() && (wrapped[wrapped.length() - 1] == '\n'))
85+
m_lastMessageWasNewline = true;
86+
else if(wrapped != "")
87+
m_lastMessageWasNewline = false;
8288
}
8389

8490
void STDLogSink::Log(Severity severity, const char *format, va_list va)
@@ -101,4 +107,10 @@ void STDLogSink::Log(Severity severity, const char *format, va_list va)
101107
//Ensure that this message is displayed immediately even if we print lower severity stuff later
102108
if(severity <= Severity::WARNING)
103109
Flush();
110+
111+
//See if we printed a \n
112+
if(wrapped.length() && (wrapped[wrapped.length() - 1] == '\n'))
113+
m_lastMessageWasNewline = true;
114+
else if(wrapped != "")
115+
m_lastMessageWasNewline = false;
104116
}

‎log.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,9 @@ string LogSink::WrapString(string str)
7272
string indent = GetIndentString();
7373

7474
//Split the string into lines
75-
string tmp = indent;
75+
string tmp;
76+
if(m_lastMessageWasNewline)
77+
tmp = indent;
7678
for(size_t i=0; i<str.length(); i++)
7779
{
7880
//Append it

‎log.h

+4
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ class LogSink
5353
: m_indentSize(4)
5454
, m_indentLevel(0)
5555
, m_termWidth(120) //default if not using ioctls to check
56+
, m_lastMessageWasNewline(true)
5657
{}
5758

5859
virtual ~LogSink() {}
@@ -100,6 +101,9 @@ class LogSink
100101

101102
/// @brief Width of the console we're printing to
102103
unsigned int m_termWidth;
104+
105+
/// @brief True if the last message ended in a \n character
106+
bool m_lastMessageWasNewline;
103107
};
104108

105109
/**

0 commit comments

Comments
 (0)
Please sign in to comment.