diff options
author | Alan Fitton <ajf@eth0.org.uk> | 2012-01-15 15:27:04 +0000 |
---|---|---|
committer | Alan Fitton <ajf@eth0.org.uk> | 2012-01-15 15:27:04 +0000 |
commit | d50ff75ea10e3a928ec769efae4c697f300b2e55 (patch) | |
tree | e4f2968c361046acf2ff5355a0ac3aa95560c51a /src | |
parent | 48b4d1af4186442fa282d0fba8440bc0f61dc7a9 (diff) |
parse the version out of the version string using locale agnostic g_ascii_strtod instead of sscanf, which would only pick up the integer component with a locale which used a different radix character.
Diffstat (limited to 'src')
-rw-r--r-- | src/session-get.c | 6 | ||||
-rw-r--r-- | src/session-get.h | 2 | ||||
-rw-r--r-- | src/trg-client.c | 6 | ||||
-rw-r--r-- | src/trg-client.h | 2 | ||||
-rw-r--r-- | src/trg-main-window.c | 7 | ||||
-rw-r--r-- | src/trg-status-bar.c | 7 |
6 files changed, 15 insertions, 15 deletions
diff --git a/src/session-get.c b/src/session-get.c index 7cd84d8..7f4dd9c 100644 --- a/src/session-get.c +++ b/src/session-get.c @@ -31,9 +31,11 @@ const gchar *session_get_version_string(JsonObject * s) return json_object_get_string_member(s, SGET_VERSION); } -int session_get_version(JsonObject * s, float *version) +gdouble session_get_version(JsonObject * s) { - return sscanf(session_get_version_string(s), "%g", version); + const gchar *versionString = session_get_version_string(s); + gchar *spaceChar = g_strrstr(" ", versionString); + return g_ascii_strtod(versionString, &spaceChar); } gint64 session_get_download_dir_free_space(JsonObject * s) diff --git a/src/session-get.h b/src/session-get.h index 47edb07..c18163a 100644 --- a/src/session-get.h +++ b/src/session-get.h @@ -76,7 +76,7 @@ const gchar *session_get_torrent_done_filename(JsonObject * s); gboolean session_get_torrent_done_enabled(JsonObject * s); gint64 session_get_cache_size_mb(JsonObject * s); const gchar *session_get_version_string(JsonObject * s); -int session_get_version(JsonObject * s, float *version); +gdouble session_get_version(JsonObject * s); gboolean session_get_pex_enabled(JsonObject * s); gboolean session_get_lpd_enabled(JsonObject * s); const gchar *session_get_download_dir(JsonObject * s); diff --git a/src/trg-client.c b/src/trg-client.c index a2c09b8..f5e86e5 100644 --- a/src/trg-client.c +++ b/src/trg-client.c @@ -75,7 +75,7 @@ struct _TrgClientPrivate { gint64 updateSerial; JsonObject *session; gboolean ssl; - float version; + gdouble version; char *url; char *username; char *password; @@ -175,7 +175,7 @@ const gchar *trg_client_get_version_string(TrgClient * tc) return session_get_version_string(priv->session); } -float trg_client_get_version(TrgClient * tc) +gdouble trg_client_get_version(TrgClient * tc) { TrgClientPrivate *priv = TRG_CLIENT_GET_PRIVATE(tc); return priv->version; @@ -200,7 +200,7 @@ void trg_client_set_session(TrgClient * tc, JsonObject * session) if (priv->session) { json_object_unref(priv->session); } else { - session_get_version(session, &priv->version); + priv->version = session_get_version(session); } priv->session = session; diff --git a/src/trg-client.h b/src/trg-client.h index 3609f34..d73a5a7 100644 --- a/src/trg-client.h +++ b/src/trg-client.h @@ -129,7 +129,7 @@ TrgClient *trg_client_new(void); TrgPrefs *trg_client_get_prefs(TrgClient * tc); int trg_client_populate_with_settings(TrgClient * tc); void trg_client_set_session(TrgClient * tc, JsonObject * session); -float trg_client_get_version(TrgClient * tc); +gdouble trg_client_get_version(TrgClient * tc); const gchar *trg_client_get_version_string(TrgClient * tc); gint64 trg_client_get_rpc_version(TrgClient * tc); gchar *trg_client_get_password(TrgClient * tc); diff --git a/src/trg-main-window.c b/src/trg-main-window.c index dd686f2..95b2367 100644 --- a/src/trg-main-window.c +++ b/src/trg-main-window.c @@ -1013,7 +1013,7 @@ static gboolean on_session_get(gpointer data) newSession = get_arguments(response->obj); if (!isConnected) { - float version; + gdouble version; if (trg_dialog_error_handler(win, response) == TRUE) { trg_response_free(response); @@ -1021,11 +1021,10 @@ static gboolean on_session_get(gpointer data) return FALSE; } - if (session_get_version(newSession, &version) == 0 - || version < TRANSMISSION_MIN_SUPPORTED) { + if ((version = session_get_version(newSession)) < TRANSMISSION_MIN_SUPPORTED) { gchar *msg = g_strdup_printf(_ - ("This application supports Transmission %.2f and later, you have %.2f."), + ("This application supports Transmission %g and later, you have %g."), TRANSMISSION_MIN_SUPPORTED, version); GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(win), GTK_DIALOG_MODAL, diff --git a/src/trg-status-bar.c b/src/trg-status-bar.c index 464233c..0f0b293 100644 --- a/src/trg-status-bar.c +++ b/src/trg-status-bar.c @@ -132,16 +132,15 @@ void trg_status_bar_connect(TrgStatusBar * sb, JsonObject * session, TrgClient * { TrgStatusBarPrivate *priv = TRG_STATUS_BAR_GET_PRIVATE(sb); TrgPrefs *prefs = trg_client_get_prefs(client); - gchar *statusMsg; - float version; + gdouble version = session_get_version(session); - session_get_version(session, &version); - statusMsg = + gchar *statusMsg = g_strdup_printf(_ ("Connected: %s (Transmission %g)"), trg_prefs_get_string(prefs, TRG_PREFS_KEY_PROFILE_NAME, TRG_PREFS_CONNECTION), version); g_message("%s", statusMsg); + trg_status_bar_push_connection_msg(sb, statusMsg); g_free(statusMsg); |