From fc436f15ee166fc4e2f967b8ff725cf6f0e3a782 Mon Sep 17 00:00:00 2001
From: Patrick McDermott <patrick.mcdermott@libiquity.com>
Date: Wed, 17 Mar 2021 06:28:44 -0400
Subject: db_games_find(): Use db_locale_match()

---
diff --git a/src/game.c b/src/game.c
index 791abe7..75238f3 100644
--- a/src/game.c
+++ b/src/game.c
@@ -29,6 +29,8 @@
 
 struct db_game {
 	char *id;
+	int   best_name_match;
+	int   best_desc_match;
 	char *name;
 	char *desc;
 	enum {
@@ -215,7 +217,6 @@ _db_game_xml_game_el_start(void *pv, const char *name, const char **attr)
 	XML_Parser      p;
 	struct db_game *game;
 	char           *lang;
-	char           *lc_messages;
 
 	db_dbg("    <%s> (game child)", name);
 
@@ -228,10 +229,8 @@ _db_game_xml_game_el_start(void *pv, const char *name, const char **attr)
 		if (lang == NULL) {
 			return;
 		}
-		lc_messages = strdup(db_lc_messages_get());
-		db_dbg("        lang=\"%s\" (looking for \"%s\")",
-				lang, lc_messages);
-		if (strcasecmp(lang, lc_messages) == 0) {
+		db_dbg("        lang=\"%s\"", lang);
+		if (db_locale_match(lang) > game->best_name_match) {
 			goto name_ok;
 		}
 		db_xml_node_push(p, game, _db_game_xml_invalid_start,
@@ -245,17 +244,14 @@ _db_game_xml_game_el_start(void *pv, const char *name, const char **attr)
 				_db_game_xml_cdata);
  name_err:
 		free(lang);
-		free(lc_messages);
 	} else if (db_xml_check_tag(name, "description")) {
 		lang = NULL;
 		db_xml_get_string_attr(p, attr, "lang", &lang, 1);
 		if (lang == NULL) {
 			return;
 		}
-		lc_messages = strdup(db_lc_messages_get());
-		db_dbg("        lang=\"%s\" (looking for \"%s\")",
-				lang, lc_messages);
-		if (strcasecmp(lang, lc_messages) == 0) {
+		db_dbg("        lang=\"%s\"", lang);
+		if (db_locale_match(lang) > game->best_desc_match) {
 			goto desc_ok;
 		}
 		db_xml_node_push(p, game, _db_game_xml_invalid_start,
@@ -269,7 +265,6 @@ _db_game_xml_game_el_start(void *pv, const char *name, const char **attr)
 				_db_game_xml_cdata);
  desc_err:
 		free(lang);
-		free(lc_messages);
 	} else if (db_xml_check_tag(name, "levels")) {
 		db_xml_node_push(p, game, _db_game_xml_levels_el_start,
 				_db_game_xml_levels_end, NULL);
--
cgit v0.9.1