summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler <raster@rasterman.com>2012-04-26 03:32:18 +0000
committerCarsten Haitzler <raster@rasterman.com>2012-04-26 03:32:18 +0000
commit13c898bc7665453b080fe2a727804015f8c0c57c (patch)
tree98df1b9fd52bbc08d0dad0b4c56b35409773f241
parent31967880ca1f71d1b9d077e05095600859b0fcd3 (diff)
downloadelementary-13c898bc7665453b080fe2a727804015f8c0c57c.tar.gz
use profate atof that fixes up locale issues for string -> float
conversion. SVN revision: 70485
-rw-r--r--src/lib/elm_config.c34
-rw-r--r--src/lib/elm_map.c6
-rw-r--r--src/lib/elm_priv.h4
-rw-r--r--src/lib/elm_util.c17
-rw-r--r--src/lib/elm_win.c2
-rw-r--r--src/lib/els_tooltip.c2
6 files changed, 43 insertions, 22 deletions
diff --git a/src/lib/elm_config.c b/src/lib/elm_config.c
index f4744a5fa..f8665ff7e 100644
--- a/src/lib/elm_config.c
+++ b/src/lib/elm_config.c
@@ -1354,23 +1354,23 @@ _env_get(void)
if (s) _elm_config->thumbscroll_threshold = atoi(s);
// FIXME: floatformat locale issues here 1.0 vs 1,0 - should just be 1.0
s = getenv("ELM_THUMBSCROLL_MOMENTUM_THRESHOLD");
- if (s) _elm_config->thumbscroll_momentum_threshold = atof(s);
+ if (s) _elm_config->thumbscroll_momentum_threshold = _elm_atof(s);
s = getenv("ELM_THUMBSCROLL_FRICTION");
- if (s) _elm_config->thumbscroll_friction = atof(s);
+ if (s) _elm_config->thumbscroll_friction = _elm_atof(s);
s = getenv("ELM_THUMBSCROLL_BOUNCE_ENABLE");
if (s) _elm_config->thumbscroll_bounce_enable = !!atoi(s);
s = getenv("ELM_THUMBSCROLL_BOUNCE_FRICTION");
- if (s) _elm_config->thumbscroll_bounce_friction = atof(s);
+ if (s) _elm_config->thumbscroll_bounce_friction = _elm_atof(s);
s = getenv("ELM_PAGE_SCROLL_FRICTION");
- if (s) _elm_config->page_scroll_friction = atof(s);
+ if (s) _elm_config->page_scroll_friction = _elm_atof(s);
s = getenv("ELM_BRING_IN_SCROLL_FRICTION");
- if (s) _elm_config->bring_in_scroll_friction = atof(s);
+ if (s) _elm_config->bring_in_scroll_friction = _elm_atof(s);
s = getenv("ELM_ZOOM_FRICTION");
- if (s) _elm_config->zoom_friction = atof(s);
+ if (s) _elm_config->zoom_friction = _elm_atof(s);
s = getenv("ELM_THUMBSCROLL_BORDER_FRICTION");
if (s)
{
- friction = atof(s);
+ friction = _elm_atof(s);
if (friction < 0.0)
friction = 0.0;
@@ -1382,7 +1382,7 @@ _env_get(void)
s = getenv("ELM_THUMBSCROLL_SENSITIVITY_FRICTION");
if (s)
{
- friction = atof(s);
+ friction = _elm_atof(s);
if (friction < 0.1)
friction = 0.1;
@@ -1392,13 +1392,13 @@ _env_get(void)
_elm_config->thumbscroll_sensitivity_friction = friction;
}
s = getenv("ELM_SCROLL_SMOOTH_AMOUNT");
- if (s) _elm_config->scroll_smooth_amount = atof(s);
+ if (s) _elm_config->scroll_smooth_amount = _elm_atof(s);
s = getenv("ELM_SCROLL_SMOOTH_HISTORY_WEIGHT");
- if (s) _elm_config->scroll_smooth_history_weight = atof(s);
+ if (s) _elm_config->scroll_smooth_history_weight = _elm_atof(s);
s = getenv("ELM_SCROLL_SMOOTH_FUTURE_TIME");
- if (s) _elm_config->scroll_smooth_future_time = atof(s);
+ if (s) _elm_config->scroll_smooth_future_time = _elm_atof(s);
s = getenv("ELM_SCROLL_SMOOTH_TIME_WINDOW");
- if (s) _elm_config->scroll_smooth_time_window = atof(s);
+ if (s) _elm_config->scroll_smooth_time_window = _elm_atof(s);
s = getenv("ELM_THEME");
if (s) eina_stringshare_replace(&_elm_config->theme, s);
@@ -1457,7 +1457,7 @@ _env_get(void)
if (s) _elm_config->font_cache = atoi(s);
s = getenv("ELM_SCALE");
- if (s) _elm_config->scale = atof(s);
+ if (s) _elm_config->scale = _elm_atof(s);
s = getenv("ELM_FINGER_SIZE");
if (s) _elm_config->finger_size = atoi(s);
@@ -1468,13 +1468,13 @@ _env_get(void)
s = getenv("ELM_PASSWORD_SHOW_LAST_TIMEOUT");
if (s)
{
- double pw_show_last_timeout = atof(s);
+ double pw_show_last_timeout = _elm_atof(s);
if (pw_show_last_timeout >= 0.0)
_elm_config->password_show_last_timeout = pw_show_last_timeout;
}
s = getenv("ELM_FPS");
- if (s) _elm_config->fps = atof(s);
+ if (s) _elm_config->fps = _elm_atof(s);
if (_elm_config->fps < 1.0) _elm_config->fps = 1.0;
s = getenv("ELM_MODULES");
@@ -1488,7 +1488,7 @@ _env_get(void)
s = getenv("ELM_TOOLTIP_DELAY");
if (s)
{
- double delay = atof(s);
+ double delay = _elm_atof(s);
if (delay >= 0.0)
_elm_config->tooltip_delay = delay;
}
@@ -1515,7 +1515,7 @@ _env_get(void)
if (s) _elm_config->icon_size = atoi(s);
s = getenv("ELM_LONGPRESS_TIMEOUT");
- if (s) _elm_config->longpress_timeout = atof(s);
+ if (s) _elm_config->longpress_timeout = _elm_atof(s);
if (_elm_config->longpress_timeout < 0.0)
_elm_config->longpress_timeout = 0.0;
diff --git a/src/lib/elm_map.c b/src/lib/elm_map.c
index bffd93000..46ad77118 100644
--- a/src/lib/elm_map.c
+++ b/src/lib/elm_map.c
@@ -2675,8 +2675,8 @@ cb_dump_name_attrs(void *data, const char *key, const char *value)
Name_Dump *dump = (Name_Dump*)data;
if (!dump) return EINA_FALSE;
- if (!strncmp(key, NOMINATIM_ATTR_LON, sizeof(NOMINATIM_ATTR_LON))) dump->lon = atof(value);
- else if (!strncmp(key, NOMINATIM_ATTR_LAT, sizeof(NOMINATIM_ATTR_LAT))) dump->lat = atof(value);
+ if (!strncmp(key, NOMINATIM_ATTR_LON, sizeof(NOMINATIM_ATTR_LON))) dump->lon = _elm_atof(value);
+ else if (!strncmp(key, NOMINATIM_ATTR_LAT, sizeof(NOMINATIM_ATTR_LAT))) dump->lat = _elm_atof(value);
return EINA_TRUE;
}
@@ -2709,7 +2709,7 @@ cb_route_dump(void *data, Eina_Simple_XML_Type type, const char *value, unsigned
char *buf = malloc(length);
if (!buf) return EINA_FALSE;
snprintf(buf, length, "%s", value);
- if (dump->id == ROUTE_XML_DISTANCE) dump->distance = atof(buf);
+ if (dump->id == ROUTE_XML_DISTANCE) dump->distance = _elm_atof(buf);
else if (!(dump->description) && (dump->id == ROUTE_XML_DESCRIPTION)) dump->description = strdup(buf);
else if (dump->id == ROUTE_XML_COORDINATES) dump->coordinates = strdup(buf);
free(buf);
diff --git a/src/lib/elm_priv.h b/src/lib/elm_priv.h
index f931bc074..c03430673 100644
--- a/src/lib/elm_priv.h
+++ b/src/lib/elm_priv.h
@@ -15,6 +15,8 @@
#include "elm_widget.h"
+#include <langinfo.h>
+
#define CRITICAL(...) EINA_LOG_DOM_CRIT(_elm_log_dom, __VA_ARGS__)
#define ERR(...) EINA_LOG_DOM_ERR (_elm_log_dom, __VA_ARGS__)
#define WRN(...) EINA_LOG_DOM_WARN(_elm_log_dom, __VA_ARGS__)
@@ -312,4 +314,6 @@ _elm_dgettext(const char *string)
/* Used by the paste handler */
void _elm_entry_entry_paste(Evas_Object *obj, const char *entry);
+double _elm_atof(const char *s);
+
#endif
diff --git a/src/lib/elm_util.c b/src/lib/elm_util.c
index 935acd3d4..7e3686051 100644
--- a/src/lib/elm_util.c
+++ b/src/lib/elm_util.c
@@ -44,3 +44,20 @@ _elm_util_text_to_mkup(const char *text)
{
return evas_textblock_text_utf8_to_markup(NULL, text);
}
+
+double
+_elm_atof(const char *s)
+{
+ char *cradix, *buf, *p;
+
+ if ((!s) || (!s[0])) return 0.0;
+ cradix = nl_langinfo(RADIXCHAR);
+ if (!cradix) return atof(s);
+ buf = alloca(strlen(s) + 1);
+ strcpy(buf, s);
+ for (p = buf; *p; p++)
+ {
+ if (*p == '.') *p = *cradix;
+ }
+ return atof(buf);
+}
diff --git a/src/lib/elm_win.c b/src/lib/elm_win.c
index 1a52ce04f..400d6691e 100644
--- a/src/lib/elm_win.c
+++ b/src/lib/elm_win.c
@@ -172,7 +172,7 @@ _shot_delay_get(Elm_Win *win)
*pd = *p;
}
*pd = 0;
- v = atof(d);
+ v = _elm_atof(d);
free(d);
return v;
}
diff --git a/src/lib/els_tooltip.c b/src/lib/els_tooltip.c
index f1a451f8f..a7da1f69c 100644
--- a/src/lib/els_tooltip.c
+++ b/src/lib/els_tooltip.c
@@ -324,7 +324,7 @@ _elm_tooltip_reconfigure(Elm_Tooltip *tt)
str = edje_object_data_get(tt->tooltip, "hide_timeout");
if (str)
{
- tt->hide_timeout = atof(str);
+ tt->hide_timeout = _elm_atof(str);
if (tt->hide_timeout < 0.0) tt->hide_timeout = 0.0;
}