Compare commits

...

6 Commits

Author SHA1 Message Date
Lucas De Marchi 069eb30fd2 eina: add test cases for eina_str_printf 2013-09-25 01:08:58 -03:00
Lucas De Marchi 549f64b1e2 Add test-suite files to gitignore 2013-09-25 01:08:58 -03:00
Lucas De Marchi a4830b4505 eina: use asprintf if available 2013-09-24 12:14:34 -03:00
Lucas De Marchi 1795864b82 eina: fix formatting of new functions 2013-09-24 12:14:34 -03:00
Lucas De Marchi 49a2d3184e ecore: remove unused variable 2013-09-24 12:14:34 -03:00
Lucas De Marchi ff57a673fe eina: fix length calc when 0 2013-09-24 12:14:34 -03:00
6 changed files with 78 additions and 23 deletions

View File

@ -530,6 +530,7 @@ mtrace \
realpath \
strlcpy \
geteuid \
vasprintf \
])
AC_FUNC_ALLOCA

1
src/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/test-suite.log

View File

@ -656,40 +656,46 @@ eina_str_toupper(char **str)
EAPI size_t
eina_str_vprintf_length(const char *format, va_list args)
{
char c;
size_t len;
ssize_t len = vsnprintf(NULL, 0, format, args);
if (len < 0)
return 0;
len = vsnprintf(&c, 1, format, args) + 1;
return len;
return len;
}
EAPI char *
eina_str_vprintf_dup(const char *format, va_list args)
{
size_t length;
char *ret;
va_list copy;
char *ret;
#if HAVE_VASPRINTF
if (vasprintf(&ret, format, args) < 0)
return NULL;
return ret;
#else
size_t length;
va_list copy;
/* be sure to use a copy or the printf implementation will
* step into the args
*/
va_copy(copy, args);
length = eina_str_vprintf_length(format, copy);
va_end(copy);
/* be sure to use a copy or the printf implementation will
* step into the args
*/
va_copy(copy, args);
length = eina_str_vprintf_length(format, copy);
va_end(copy);
ret = calloc(length, sizeof(char));
vsprintf(ret, format, args);
return ret;
ret = calloc(length, sizeof(char));
vsprintf(ret, format, args);
return ret;
#endif
}
EAPI char *
eina_str_printf_dup(const char *format, ...)
{
char *ret;
va_list args;
char *ret;
va_list args;
va_start(args, format);
ret = eina_str_vprintf_dup(format, args);
va_end(args);
return ret;
va_start(args, format);
ret = eina_str_vprintf_dup(format, args);
va_end(args);
return ret;
}

View File

@ -125,7 +125,6 @@ static void _locale_get(void *data EINA_UNUSED, const Eldbus_Message *msg,
{
Eldbus_Message_Iter *variant, *array;
const char *errname, *errmsg, *val;
unsigned int i;
if (eldbus_message_error_get(msg, &errname, &errmsg))
{

View File

@ -1,4 +1,6 @@
check-results.xml
*_suite
test_*.log
test_*.trs
*_suite.log
*_suite.trs

View File

@ -339,6 +339,50 @@ START_TEST(str_convert)
END_TEST
#endif
static size_t _eina_str_printf_length(const char *fmt, ...)
{
va_list ap;
size_t ret;
va_start(ap, fmt);
ret = eina_str_vprintf_length(fmt, ap);
va_end(ap);
return ret;
}
START_TEST(str_printf_length)
{
size_t len;
eina_init();
len = _eina_str_printf_length("test%d", 5);
fail_if(len != 5);
len = _eina_str_printf_length("");
fail_if(len != 0);
eina_shutdown();
}
END_TEST
START_TEST(str_printf_dup)
{
char *s;
eina_init();
s = eina_str_printf_dup("test%d", 5);
fail_if(s == NULL);
free(s);
s = eina_str_printf_dup("");
fail_if(s == NULL);
free(s);
eina_shutdown();
}
END_TEST
void
eina_test_str(TCase *tc)
{
@ -349,4 +393,6 @@ eina_test_str(TCase *tc)
#ifdef HAVE_ICONV
tcase_add_test(tc, str_convert);
#endif
tcase_add_test(tc, str_printf_length);
tcase_add_test(tc, str_printf_dup);
}