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