Eldbus_Message_Iter *array_of_ec;
E_Client *ec;
Evas_Object *o;
- uint32_t value_number = 0;
+ uint64_t value_number = 0;
Eina_Bool res = EINA_FALSE;
eldbus_message_iter_arguments_append(iter, "a(ss)", &array_of_ec);
else
{
if (strlen(value) >= 2 && value[0] == '0' && value[1] == 'x')
- res = e_util_string_to_uint(value, &value_number, 16);
+ res = e_util_string_to_ulong(value, (unsigned long *)&value_number, 16);
else
- res = e_util_string_to_uint(value, &value_number, 10);
+ res = e_util_string_to_ulong(value, (unsigned long *)&value_number, 10);
EINA_SAFETY_ON_FALSE_GOTO(res, finish);
}
uint32_t x, y, sx, sy, degree;
uint32_t background;
const char *value = NULL;
- uint32_t value_number;
+ uint64_t value_number;
Evas_Object *o;
E_Client *ec;
Eina_Bool res = EINA_FALSE;
}
if (strlen(value) >= 2 && value[0] == '0' && value[1] == 'x')
- res = e_util_string_to_uint(value, &value_number, 16);
+ res = e_util_string_to_ulong(value, (unsigned long *)&value_number, 16);
else
- res = e_util_string_to_uint(value, &value_number, 10);
+ res = e_util_string_to_ulong(value, (unsigned long *)&value_number, 10);
EINA_SAFETY_ON_FALSE_RETURN_VAL(res, reply);
Eldbus_Message_Iter *opt_iter;
const char *win_str, *key, *val, *opt;
Eina_List *options = NULL;
- uint32_t win_id = 0;
+ uint64_t win_id = 0;
E_Client *ec;
Evas_Object *o;
Eina_Bool res = EINA_FALSE;
options = eina_list_append(options, str);
}
- res = e_util_string_to_uint(win_str, &win_id, 16);
+ res = e_util_string_to_ulong(win_str, (unsigned long *)&win_id, 16);
EINA_SAFETY_ON_FALSE_RETURN_VAL(res, reply);
for (o = evas_object_top_get(e_comp->evas); o; o = evas_object_below_get(o))
return EINA_TRUE;
}
+E_API Eina_Bool
+e_util_string_to_ulong(const char *str, unsigned long *num, int base)
+{
+ char *end;
+ int errsv;
+
+ EINA_SAFETY_ON_NULL_RETURN_VAL(str, EINA_FALSE);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(num, EINA_FALSE);
+
+ const long sul = strtoul(str, &end, base);
+ errsv = errno;
+
+ EINA_SAFETY_ON_TRUE_RETURN_VAL((end == str), EINA_FALSE); /* given string is not a decimal number */
+ EINA_SAFETY_ON_TRUE_RETURN_VAL(('\0' != *end), EINA_FALSE); /* given string has extra characters */
+ EINA_SAFETY_ON_TRUE_RETURN_VAL(((ULONG_MAX == sul) && (ERANGE == errsv)), EINA_FALSE); /* out of range of type unsigned long */
+
+ *num = (int)sul;
+
+ return EINA_TRUE;
+}
+
E_API void
e_util_evas_objects_above_print(Evas_Object *o)
{
E_API Eina_Bool e_util_string_to_int(const char *str, int *num, int base);
E_API Eina_Bool e_util_string_to_int_token(const char *str, char **next, int *num, int base);
E_API Eina_Bool e_util_string_to_double(const char *str, double *num);
+E_API Eina_Bool e_util_string_to_ulong(const char *str, unsigned long *num, int base);
E_API void e_util_evas_objects_above_print(Evas_Object *o);
E_API void e_util_evas_objects_above_print_smart(Evas_Object *o);