diff options
| -rwxr-xr-x | indra/newview/lllogchat.cpp | 37 | 
1 files changed, 9 insertions, 28 deletions
| diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp index 0dfcbfde7b..639641d1c2 100755 --- a/indra/newview/lllogchat.cpp +++ b/indra/newview/lllogchat.cpp @@ -67,7 +67,7 @@ const std::string LL_IM_FROM("from");  const std::string LL_IM_FROM_ID("from_id");  const std::string LL_TRANSCRIPT_FILE_EXTENSION("txt"); -const static std::string IM_SEPARATOR("| "); +const static std::string IM_SEPARATOR(": ");  const static std::string NEW_LINE("\n");  const static std::string NEW_LINE_SPACE_PREFIX("\n ");  const static std::string TWO_SPACES("  "); @@ -94,8 +94,7 @@ const static boost::regex TIMESTAMP("^(\\[\\d{4}/\\d{1,2}/\\d{1,2}\\s+\\d{1,2}:\   *  Regular expression suitable to match names like   *  "You", "Second Life", "Igor ProductEngine", "Object", "Mega House"   */ -const static boost::regex OLD_NAME_AND_TEXT("([^:]+[:]{1})?(\\s*)(.*)"); -const static boost::regex NAME_AND_TEXT("([^\\|]+[\\|]{1})?(\\s*)(.*)"); +const static boost::regex NAME_AND_TEXT("([^:]+[:]{1})?(\\s*)(.*)");  /**   * These are recognizers for matching the names of ad-hoc conferences when generating the log file name @@ -108,8 +107,7 @@ const static boost::regex INBOUND_CONFERENCE("^[a-zA-Z]{1,31} [a-zA-Z]{1,31} Con  const static boost::regex OUTBOUND_CONFERENCE("^Ad-hoc Conference hash[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}");  //is used to parse complex object names like "Xstreet SL Terminal v2.2.5 st" -const static std::string OLD_NAME_TEXT_DIVIDER(": "); -const static std::string NAME_TEXT_DIVIDER("| "); +const static std::string NAME_TEXT_DIVIDER(": ");  // is used for timestamps adjusting  const static char* DATE_FORMAT("%Y/%m/%d %H:%M"); @@ -905,24 +903,13 @@ bool LLChatLogParser::parse(std::string& raw, LLSD& im, const LLSD& parse_params  	//matching a name and a text  	std::string stuff = matches[IDX_STUFF];  	boost::match_results<std::string::const_iterator> name_and_text; -	bool old_name = false; -	bool has_name = false; -	if (boost::regex_match(stuff, name_and_text, NAME_AND_TEXT)) -	{ -		has_name = name_and_text[IDX_NAME].matched; -	} +	if (!boost::regex_match(stuff, name_and_text, NAME_AND_TEXT)) return false; -	if(!has_name) -	{ -		if (!boost::regex_match(stuff, name_and_text, OLD_NAME_AND_TEXT)) return false; -		old_name = true; -		has_name = name_and_text[IDX_NAME].matched; -	} +	bool has_name = name_and_text[IDX_NAME].matched;  	std::string name = name_and_text[IDX_NAME];  	//we don't need a name/text separator -	char delim = old_name? ':' : '|'; -	if (has_name && name.length() && name[name.length()-1] == delim) +	if (has_name && name.length() && name[name.length()-1] == ':')  	{  		name.erase(name.length()-1, 1);  	} @@ -937,17 +924,11 @@ bool LLChatLogParser::parse(std::string& raw, LLSD& im, const LLSD& parse_params  	//possibly a case of complex object names consisting of 3+ words  	if (!has_name)  	{ -		std::string divider = NAME_TEXT_DIVIDER; -		U32 divider_pos = stuff.find(divider); -		if(divider_pos == std::string::npos) -		{ -			divider = OLD_NAME_TEXT_DIVIDER; -			divider_pos = stuff.find(divider); -		} -		if (divider_pos != std::string::npos && divider_pos < (stuff.length() - divider.length())) +		U32 divider_pos = stuff.find(NAME_TEXT_DIVIDER); +		if (divider_pos != std::string::npos && divider_pos < (stuff.length() - NAME_TEXT_DIVIDER.length()))  		{  			im[LL_IM_FROM] = stuff.substr(0, divider_pos); -			im[LL_IM_TEXT] = stuff.substr(divider_pos + divider.length()); +			im[LL_IM_TEXT] = stuff.substr(divider_pos + NAME_TEXT_DIVIDER.length());  			return true;  		}  	} | 
