+eina_stringshare_vprintf for using a va_list

SVN revision: 50501
This commit is contained in:
Mike Blumenkrantz 2010-07-26 05:09:02 +00:00
parent 8b858d5f7b
commit f3ad2982b8
1 changed files with 41 additions and 0 deletions

View File

@ -1257,6 +1257,47 @@ eina_stringshare_printf(const char *fmt, ...)
return ret;
}
/**
* @brief Retrieve an instance of a string for use in a program
* from a format string.
*
* @param fmt The NULL terminated format string to retrieve an instance of.
* @param args The va_args for @p fmt
* @return A pointer to an instance of the string on success.
* @c NULL on failure.
*
* This function retrieves an instance of @p fmt with @p args. If @p fmt is
* @c NULL, then @c NULL is returned. If @p fmt with @p args is already stored, it
* is just returned and its reference counter is increased. Otherwise
* it is added to the strings to be searched and a duplicated string
* is returned.
*
* The format string @p fmt must be NULL terminated ('@\0') and its full
* length will be used. To use part of the format string or non-null
* terminated, use eina_stringshare_nprintf() instead.
*
* @see eina_stringshare_nprintf()
*/
EAPI const char *
eina_stringshare_vprintf(const char *fmt, va_list args)
{
char *tmp;
const char *ret;
int len;
if (!fmt) return NULL;
len = vasprintf(&tmp, fmt, args);
if (len < 1)
return NULL;
ret = eina_stringshare_add_length(tmp, len);
free(tmp);
return ret;
}
/**
* @brief Retrieve an instance of a string for use in a program
* from a format string with size limitation.