forked from enlightenment/efl
+eina_stringshare_printf
+eina_stringshare_nprintf the long awaited printf functions for stringshare! SVN revision: 50490
This commit is contained in:
parent
5967027157
commit
7ff1096672
|
@ -67,6 +67,8 @@
|
|||
|
||||
EAPI const char *eina_stringshare_add_length(const char *str, unsigned int slen) EINA_WARN_UNUSED_RESULT;
|
||||
EAPI const char *eina_stringshare_add(const char *str) EINA_WARN_UNUSED_RESULT;
|
||||
EAPI const char *eina_stringshare_printf(const char *fmt, ...) EINA_WARN_UNUSED_RESULT;
|
||||
EAPI const char *eina_stringshare_nprintf(unsigned int len, const char *fmt, ...) EINA_WARN_UNUSED_RESULT;
|
||||
EAPI const char *eina_stringshare_ref(const char *str);
|
||||
EAPI void eina_stringshare_del(const char *str);
|
||||
EAPI int eina_stringshare_strlen(const char *str) EINA_CONST EINA_WARN_UNUSED_RESULT;
|
||||
|
|
|
@ -1211,6 +1211,51 @@ eina_stringshare_add(const char *str)
|
|||
return eina_stringshare_add_length(str, slen);
|
||||
}
|
||||
|
||||
EAPI const char *
|
||||
eina_stringshare_printf(const char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
char *tmp;
|
||||
const char *ret;
|
||||
int len;
|
||||
|
||||
if (!fmt) return NULL;
|
||||
|
||||
va_start(args, fmt);
|
||||
len = vasprintf(&tmp, fmt, args);
|
||||
va_end(args);
|
||||
|
||||
if (len < 1)
|
||||
return NULL;
|
||||
|
||||
ret = eina_stringshare_add_length(tmp, len);
|
||||
free(tmp);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
EAPI const char *
|
||||
eina_stringshare_nprintf(unsigned int len, const char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
char *tmp;
|
||||
int size;
|
||||
|
||||
if (!fmt) return NULL;
|
||||
if (len < 1) return NULL;
|
||||
|
||||
tmp = alloca(sizeof(char) * len + 1);
|
||||
|
||||
va_start(args, fmt);
|
||||
size = vsnprintf(tmp, len, fmt, args);
|
||||
va_end(args);
|
||||
|
||||
if (size < 1)
|
||||
return NULL;
|
||||
|
||||
return eina_stringshare_add_length(tmp, len);
|
||||
}
|
||||
|
||||
/**
|
||||
* Increment references of the given shared string.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue