strfuncs.h revision be1749e2421dea6465f9096fd35b28b2500d06e4
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainen#define MAX_INT_STRLEN ((sizeof(uintmax_t) * CHAR_BIT + 2) / 3 + 1)
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainenextern const unsigned char uchar_nul; /* (const unsigned char *)"" */
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainen/* Returns -1 if dest wasn't large enough, 0 if not. */
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainenint i_snprintf(char *dest, size_t max_chars, const char *format, ...)
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainenchar *p_strdup(pool_t pool, const char *str) ATTR_MALLOC;
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainen/* return NULL if str = "" */
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainenchar *p_strdup_empty(pool_t pool, const char *str) ATTR_MALLOC;
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainen/* *end isn't included */
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainenchar *p_strdup_until(pool_t pool, const void *start, const void *end)
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainenchar *p_strndup(pool_t pool, const void *str, size_t max_chars) ATTR_MALLOC;
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainenchar *p_strdup_printf(pool_t pool, const char *format, ...)
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainen ATTR_FORMAT(2, 3) ATTR_MALLOC ATTR_RETURNS_NONNULL;
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainenchar *p_strdup_vprintf(pool_t pool, const char *format, va_list args)
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainen ATTR_FORMAT(2, 0) ATTR_MALLOC ATTR_RETURNS_NONNULL;
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainenchar *p_strconcat(pool_t pool, const char *str1, ...)
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainen/* same with temporary memory allocations: */
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainenconst char *t_strdup(const char *str) ATTR_MALLOC;
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainenchar *t_strdup_noconst(const char *str) ATTR_MALLOC;
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainen/* return NULL if str = "" */
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainenconst char *t_strdup_empty(const char *str) ATTR_MALLOC;
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainen/* *end isn't included */
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainenconst char *t_strdup_until(const void *start, const void *end)
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainenconst char *t_strndup(const void *str, size_t max_chars) ATTR_MALLOC;
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainenconst char *t_strdup_printf(const char *format, ...)
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainen ATTR_FORMAT(1, 2) ATTR_MALLOC ATTR_RETURNS_NONNULL;
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainenconst char *t_strdup_vprintf(const char *format, va_list args)
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainen ATTR_FORMAT(1, 0) ATTR_MALLOC ATTR_RETURNS_NONNULL;
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainen/* Like t_strdup(), but stop at cutchar. */
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainenconst char *t_strcut(const char *str, char cutchar);
ba90e657bc68a72ab3b3021e2f4a874fac9965baTimo Sirainen/* Replace all from->to chars in the string. */
(int (*)(const void *, const void *))cmp)
(int (*)(const void *, const void *))cmp)
unsigned int *size_r)