evas: simplify logic for textblock style parameter parsing.

This commit is contained in:
Cedric Bail 2013-10-16 18:14:33 +09:00
parent 91e76f791d
commit 6be9cc74de
1 changed files with 13 additions and 27 deletions

View File

@ -2332,6 +2332,8 @@ static void
_format_param_parse(const char *item, const char **key, Eina_Tmpstr **val)
{
const char *start, *end;
char *tmp, *s, *d;
size_t len;
start = strchr(item, '=');
*key = eina_stringshare_add_length(item, start - item);
@ -2356,38 +2358,22 @@ _format_param_parse(const char *item, const char **key, Eina_Tmpstr **val)
}
/* Null terminate before the spaces */
if (end)
{
char *tmp = alloca(end - start + 1);
char *s, *d;
if (end) len = end - start;
else len = strlen(start);
for (d = tmp, s = (char *)start; s < end; s++)
{
if (*s != '\\')
{
*d = *s;
d++;
}
}
*d = 0;
*val = eina_tmpstr_add(tmp);
}
else
{
char *tmp = alloca(strlen(start) + 1);
char *s, *d;
tmp = (char*) eina_tmpstr_add_length(start, len);
for (d = tmp, s = (char *)start; *s; s++)
for (d = tmp, s = tmp; *s; s++)
{
if (*s != '\\')
{
if (*s != '\\')
{
*d = *s;
d++;
}
*d = *s;
d++;
}
*d = 0;
*val = eina_tmpstr_add(tmp);
}
*d = '\0';
*val = tmp;
}
/**