From 9edde5ff28780ed60a7ccfc47d4bf305c5c83fe1 Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Sun, 3 Feb 2013 15:43:30 +1100 Subject: [PATCH] Correctly parse translated cardinal directions We now compare to both the standard English characters ('N', 'E', etc) as well as to the translated strings (_("N"), _("E")) when parsing GPS strings. Reported-by: Sergey Starosek Signed-off-by: Dirk Hohndel --- info.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/info.c b/info.c index 5e47a2590..3736d296c 100644 --- a/info.c +++ b/info.c @@ -401,9 +401,11 @@ static gboolean parse_gps_text(const char *gps_text, double *latitude, double *l return TRUE; } /* ok, let's parse by hand - first degrees of latitude */ - if (g_unichar_toupper(g_utf8_get_char(text)) == 'N') + if (g_unichar_toupper(g_utf8_get_char(text)) == 'N' || + !strncmp(text, _("N"), strlen(_("N")))) text++; - if (g_unichar_toupper(g_utf8_get_char(text)) == 'S') { + if (g_unichar_toupper(g_utf8_get_char(text)) == 'S' || + !strncmp(text, _("S"), strlen(_("S")))) { text++; south = TRUE; } @@ -433,9 +435,11 @@ static gboolean parse_gps_text(const char *gps_text, double *latitude, double *l text = g_utf8_next_char(text); /* next degrees of longitude */ - if (g_unichar_toupper(g_utf8_get_char(text)) == 'E') + if (g_unichar_toupper(g_utf8_get_char(text)) == 'E' || + !strncmp(text, _("E"), strlen(_("E")))) text++; - if (g_unichar_toupper(g_utf8_get_char(text)) == 'W') { + if (g_unichar_toupper(g_utf8_get_char(text)) == 'W' || + !strncmp(text, _("W"), strlen(_("W")))) { text++; west = TRUE; }