Esempio n. 1
0
//Short Algorithm to query the DB for the best name. returns true if best name is populated.
bool CPokerTrackerThread::FindName(const char *oh_scraped_name, char *best_name)
{
	char		likename[k_max_length_of_playername];
	memset(likename, 0, k_max_length_of_playername);
	
	bool result = QueryName(oh_scraped_name, oh_scraped_name, best_name);

	if (!result)
	{
		likename[0]='%';
		int character_position = 0;
		for (int character_position=0; character_position<(int) strlen(oh_scraped_name); character_position++)
		int len = (int)strlen(oh_scraped_name);

		{
			likename[character_position*2+1]=oh_scraped_name[character_position];
			likename[character_position*2+2]='%';
		}

		likename[(character_position)*2 + 1]='\0';
		result = QueryName(likename, oh_scraped_name, best_name);
	}

	if (!result)
	{
		/*  Escalation #2: "%n%a%m%e%" not found in DB*/
		/*  Try query with "%" to get all names */
		result = QueryName("%", oh_scraped_name, best_name);
	}
	return result;
}
//Short Algorithm to query the DB for the best name. returns true if best name is populated.
bool CPokerTrackerThread::FindName(const char *oh_scraped_name, char *best_name)
{

	bool result = QueryName(oh_scraped_name, oh_scraped_name, best_name);

	if (!result) {
		/*  Escalation #1: Exact name not found in DB*/
		/*  Try query with "%" in substitution of ".". So "n.me" becomes "n%me". */
		char pointlessname[kMaxLengthOfPlayername + 1];
		memset(pointlessname, 0, kMaxLengthOfPlayername+1);
		int len = (int)strlen(oh_scraped_name);
		for (int character_position=0; character_position<len; character_position++)
		{
			if (oh_scraped_name[character_position]=='.') {
				pointlessname[character_position]='%';
				} 
			else {
				pointlessname[character_position]=oh_scraped_name[character_position];
				}
		}
		pointlessname[len]='\0';
		result = QueryName(pointlessname, oh_scraped_name, best_name);
	}

	if (!result) {
		/*  Escalation #2:
		/*  Try query with "%n%a%m%e%" . */
		char likename[2 * kMaxLengthOfPlayername + 2];
		// Attention: likename is 2 times as large as a player-name,
		// plus 2 for % at the beginning and \0 at the end.
		// !! There was a buffer-overflow in the past; better get rid of fixed-sized buffers
		memset(likename, 0, 2 * kMaxLengthOfPlayername + 2);
		int len = (int)strlen(oh_scraped_name);
		likename[0]='%';
		for (int character_position=0; character_position<len; character_position++)
		{
			likename[character_position*2+1]=oh_scraped_name[character_position];
			likename[character_position*2+2]='%';
		}

		likename[len*2 + 1]='\0';
		result = QueryName(likename, oh_scraped_name, best_name);
	}

	if (!result)
	{
		/*  Escalation #3: "%n%a%m%e%" not found in DB*/
		/*  Try query "%" to get all names. */
		result = QueryName("%", oh_scraped_name, best_name);
	}
	return result;
}